+----------------------------------IBM 拡張----------------------------------+
目的
整数 POINTER ステートメントによって、変数 int_pointer の 値を pointee の参照用アドレスとして使用することを指定できます。
Fortran 90 POINTER ステートメントと区別するために、 このステートメントの名前は POINTER から整数 POINTER に 変更されました。
構文
.-,-----------------------------. V | >>-POINTER----(--int_pointer--,--pointee--)-+------------------>< |
規則
コンパイラーはポインティング先にストレージを割り振りません。 ストレージは、実行時に、ポインターのストレージ・ブロック・アドレスを割り当てることに よって、ポインティング先に関連付けられます。 ポインティング先は静的または動的ストレージのいずれにも関連付けることができます。 ポインティング先を参照するには、関連付けられるポインターが定義済みでなければなりません。
整数ポインターは、32 ビット・モードでは INTEGER(4) 型、64 ビット・モードでは INTEGER(8) 型のスカラー変数であり、型を明示的に割り当てることはできません。 整数ポインターと同じ型の変数を使用できる式またはステートメントで、 整数ポインターを使用することができます。 ポインティング先には任意のデータ型を割り当てることができますが、 ストレージ・クラスや初期値を割り当てることはできません。
整数 POINTER ステートメントの中でポインティング先として指定された 実際の配列をポインティング先配列といいます。 ポインティング先配列の次元は、型宣言ステートメント、 DIMENSION ステートメント、 または整数 POINTER ステートメント自体の中で指定することができます。
-qddim コンパイラー・オプションを指定した場合は、メインプログラム 内に現れるポインティング先配列には、調整可能配列仕様も指定できます。 メインプログラムでもサブプログラムでも、次元のサイズはポインティング先が 参照されるときに評価されます (動的に次元指定)。
-qddim コンパイラー・オプションを指定しなかった場合は、サブプログラム内に現れる pointee 配列には調整可能な配列仕様を指定でき、次元サイズは、pointee の評価時ではなくサブプログラムに入った時点で計算されます。
ポインティング先と整数ポインターの定義および使用に関しては、 次の制約事項が適用されます。
INTEGER A,B POINTER (P,I) IF (A<>0) THEN P=LOC(A) ELSE P=LOC(B) ENDIF I=0 ! Assigns 0 to either A or B, depending on A's value END
関連情報
+------------------------------End of IBM 拡張-------------------------------+