IMPLICIT

目的

IMPLICIT ステートメントは、デフォルトの暗黙の型または ローカル・エンティティーのデフォルト・ストレージ・クラスを変更または 確認します。また IMPLICIT NONE の形式を指定すると、 暗黙の型の設定規則をすべて無効にします。

構文



>>-IMPLICIT--+-NONE-------------------------------------+------><
             | .-,------------------------------------. |
             | V                                      | |
             '---+-type_spec------+--(--range_list--)-+-'
                 |        (1)     |
                 +-STATIC---------+
                 |           (2)  |
                 +-AUTOMATIC------+
                 |           (3)  |
                 '-UNDEFINED------'
 
 

注:


  1. IBM 拡張.

  2. IBM 拡張.

  3. IBM 拡張.


type_spec
データ型を指定します。 型宣言を参照してください。

range
1 つの英字か、または英字の範囲です。 英字の範囲は letter1-letter2 という 形式で指定します。 letter1 は範囲の最初の英字、letter2 は (letter1 にアルファベット順で続く) 範囲の最後の英字です。 ドル記号 ($) と下線 (_) も範囲内で使用することができます。 下線 (_) はドル記号 ($) の後に続き、ドル記号は Z の後に続きます。 したがって、範囲 Y - _ は、YZ$_ と同じになります。

規則

文字の範囲をオーバーラップさせることはできません。つまり、 特定の文字に対して複数の型を指定することはできません。

特定の有効範囲単位内で、IMPLICIT ステートメントの中で文字が指定されていない 場合、プログラム単位またはインターフェース本体のエンティティーの 暗黙型は、I-N で始まる文字の場合はデフォルトの整数、 それ以外の文字の場合はデフォルトの実数です。 内部プロシージャーまたはモジュール・プロシージャーのデフォルトは、 ホスト有効範囲単位が使用する暗黙の型と同じです。

range_list によって指定した文字で始まるすべての データ・エンティティー名で、 明示的に型を指定していないものに対しては、 直前の type_spec で指定した型が与えられます。 派生型がホストの有効範囲にアクセス可能な場合に、 ローカルな有効範囲内で アクセス不能な派生型に対して暗黙の型が 存在できることに注意してください。

+----------------------------------IBM 拡張----------------------------------+

STATIC または AUTOMATIC として指定する 1 つの文字または 文字の範囲は、どのデータ型の IMPLICIT ステートメントにも指定することができます。 range_list 内の英字に対して、 有効範囲単位内で type_specUNDEFINED の 両方を指定することはできません。 同じ文字に対して STATICAUTOMATIC の 両方を指定することもできません。

+------------------------------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

関連情報

IBM Copyright 2003