目的
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 の両方を指定することもできません。
+--------------------------------IBM 拡張の終り-------------------------------+
ある有効範囲単位内で IMPLICIT NONE 形式を指定した場合、タイプ宣言ステートメントを使用してその有効範囲単位に対してローカルである名前のデータ型を指定しなければなりません。明示的に定義したデータ型を持たないシンボル名を参照することはできません。これにより、不注意で参照されるすべてのシンボル名を制御することができます。 IMPLICIT NONE を指定する場合、他の IMPLICIT ステートメントを同一の有効範囲単位内で指定することはできません。ただし、STATIC または AUTOMATIC を含んでいるステートメントは指定することができます。コンパイラー・オプション -qundef を指定してプログラムをコンパイルし、IMPLICIT ステートメントを使用できる有効範囲単位に指定した IMPLICIT NONE ステートメントと同じ効果を得ることができます。
+----------------------------------IBM 拡張----------------------------------+
IMPLICIT UNDEFINED は指定した文字または文字範囲に関する暗黙のデータ型のデフォルトをオフにします。 IMPLICIT UNDEFINED を指定した場合、指定した文字で始まるすべてのシンボル名のデータ型を範囲指定単位内で宣言する必要があります。有効範囲単位に対してローカルである各シンボル名のうち、データ型が明示的に定義されていないものには、コンパイラー診断メッセージが出されます。
+--------------------------------IBM 拡張の終り-------------------------------+
IMPLICIT ステートメントによって、組み込み関数のデータ型が変わることはありません。
+----------------------------------IBM 拡張----------------------------------+
-qsave/ -qnosave コンパイラー・オプションを使用すると、ストレージ・クラスの事前定義規則を変更することができます。
-qsave コンパイラー・ オプション | 事前定義規則を作成します。 | IMPLICIT STATIC( a - _ ) |
-qnosave コンパイラ ー・オプション | 事前定義規則を作成します。 | IMPLICIT AUTOMATIC( a - _ ) |
コンパイラー・オプション -qmixed を指定した場合でも、範囲のリスト項目の大文字・小文字は区別されません。たとえば、-qmixed を指定した場合、 IMPLICIT INTEGER(A) は A で始まるデータ・オブジェクトの暗黙のタイプ設定の他に、a で始まる暗黙のタイプ設定にも影響を与えます。
+--------------------------------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
関連情報