目的
IMPLICIT ステートメントは、デフォルトの暗黙の型または ローカル・エンティティーのデフォルト・ストレージ・クラスを変更または 確認します。また IMPLICIT NONE の形式を指定すると、 暗黙の型の設定規則をすべて無効にします。
構文
>>-IMPLICIT--+-NONE-------------------------------------+------>< | .-,------------------------------------. | | V | | '---+-type_spec------+--(--range_list--)-+-' | (1) | +-STATIC---------+ | (2) | +-AUTOMATIC------+ | (3) | '-UNDEFINED------' 注:
|
規則
文字の範囲をオーバーラップさせることはできません。つまり、 特定の文字に対して複数の型を指定することはできません。
特定の有効範囲単位内で、IMPLICIT ステートメントの中で文字が指定されていない 場合、プログラム単位またはインターフェース本体のエンティティーの 暗黙型は、I-N で始まる文字の場合はデフォルトの整数、 それ以外の文字の場合はデフォルトの実数です。 内部プロシージャーまたはモジュール・プロシージャーのデフォルトは、 ホスト有効範囲単位が使用する暗黙の型と同じです。
range_list によって指定した文字で始まるすべての データ・エンティティー名で、 明示的に型を指定していないものに対しては、 直前の type_spec で指定した型が与えられます。 派生型がホストの有効範囲にアクセス可能な場合に、 ローカルな有効範囲内で アクセス不能な派生型に対して暗黙の型が 存在できることに注意してください。
+----------------------------------IBM 拡張----------------------------------+
STATIC または AUTOMATIC として指定する 1 つの文字または 文字の範囲は、どのデータ型の IMPLICIT ステートメントにも指定することができます。 range_list 内の英字に対して、 有効範囲単位内で type_spec と UNDEFINED の 両方を指定することはできません。 同じ文字に対して STATIC と AUTOMATIC の 両方を指定することもできません。
+------------------------------End of IBM 拡張-------------------------------+
ある有効範囲単位内で形式 IMPLICIT NONE を指定した場合、型宣言ステートメントを使用して、その 有効範囲単位に対してローカルにある名前のデータ型を指定しなければなりません。 明示的に定義されたデータ型を持たないシンボル名を参照することはできません。 これにより、誤って参照されたすべてのシンボル名を制御することができます。 IMPLICIT NONE を指定する場合、 他の IMPLICIT ステートメントを 同一の有効範囲単位内で指定することはできません。 ただし、STATIC または AUTOMATIC を 含んでいるステートメントは指定することができます。 コンパイラー・オプション -qundef を指定してプログラムを コンパイルし、IMPLICIT ステートメントを使用できる 有効範囲単位に指定した IMPLICIT NONE ステートメントと 同じ効果を得ることができます。
+----------------------------------IBM 拡張----------------------------------+
IMPLICIT UNDEFINED は、指定された文字または文字範囲の暗黙の データ型のデフォルトをオフにします。 IMPLICIT UNDEFINED を指定するときは、指定した文字で始まるすべてのシンボル名のデータ型を 有効範囲単位内で宣言する必要があります。 コンパイラーは、データ型が明示的に定義されていない有効範囲単位に対してローカルにある 各シンボル名の診断メッセージを発行します。
+------------------------------End of IBM 拡張-------------------------------+
IMPLICIT ステートメントは、組み込み関数のデータ型を変更しません。
+----------------------------------IBM 拡張----------------------------------+
-qsave/ -qnosave コンパイラー・オプションを 使用すると、ストレージ・クラスの事前定義規則を変更することができます。
-qsave コンパイラー・オプション | 事前定義規則を作成します。 | IMPLICIT STATIC( a - _ ) |
-qnosave コンパイラー・オプション | 事前定義規則を作成します。 | IMPLICIT AUTOMATIC( a - _ ) |
コンパイラー・オプション -qmixed を指定した場合でも、 範囲のリスト項目の大文字・小文字は区別されません。 たとえば、-qmixed を指定した場合、 IMPLICIT INTEGER(A) は A で 始まるデータ・オブジェクトの暗黙の型設定の他に、a で 始まる暗黙の型設定にも影響を与えます。
+------------------------------End of IBM 拡張-------------------------------+
IMPLICIT INTEGER (B), COMPLEX (D, K-M), REAL (R-Z,A) ! This IMPLICIT statement establishes the following ! implicit typing: ! ! A: real ! B: integer ! C: real ! D: complex ! E to H: real ! I, J: integer ! K, L, M: complex ! N: integer ! O to Z: real ! $: real ! _: real
関連情報