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