XL Fortran for AIX V8.1.1

ランゲージ・リファレンス


ポインターの割り当て

ポインターの割り当てステートメントによって、ポインターがターゲットと関連させられます。また、ポインター割り当てステートメントによって、ポインターの関連付け状況は、関連のなくなった状態または未定義の状態にもなります。



>>-pointer_object-- => --target--------------------------------><
 
 

target
変数または式です。 target は pointer_object と同じタイプ、型付きパラメーター、およびランクを持たなければなりません。

pointer_object は、POINTER 属性を持たなければなりません。

式であるターゲットによって、POINTER 属性を持つ値が得られなければなりません。変数であるターゲットは、TARGET 属性 (またはそのようなオブジェクトの対象となるもの) あるいは、変数であるターゲットは、POINTER 属性を持たなければなりません。ターゲットは、ベクトル添え字を持つ配列セクションであってはなりません。また、整数の想定サイズ配列であってはなりません。

関連解除された配列ポインターのターゲットのサイズ、境界、および形状は未定義です。こうした配列の一部を定義したり、参照したりはできません。ただし、配列を、関連付け状況、引き数の有無、タイプまたは型付きパラメーターの特性を参照する組み込み照会関数の引き数にすることはできます。

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

バイト・タイプのポインターは、バイト・タイプ、INTEGER(1) タイプ、 LOGICAL(1) タイプのターゲットにのみ関連させることができます。

+--------------------------------IBM 拡張の終り-------------------------------+

pointer_object とターゲット間での以前の関連付けはすべて無効にされます。 target がポインターでない場合、pointer_object は、target と関連付けられます。 target 自体がポインターに関連させられる場合、pointer_objecttarget のターゲットに関連させられます。 target が関連解除または未定義の状態の関連付け状況を持つポインターの場合、pointer_object は同様の状態となります。ポインター割り当ての target が割り振り可能なオブジェクトである場合は、割り振り済みでなければなりません。

ポインター構造体コンポーネントのポインター割り当ては、派生型の組み込み割り当てステートメントまたは定義済み割り当てステートメントの実行によって発生します。

配列ポインターの割り当て時、各次元の下限は、ターゲットの対応する次元に適用される LBOUND 組み込み関数の結果となります。全体配列でも構造体コンポーネントでもない配列セクションや配列式の場合、下限は 1 になります。各次元の上限は、ターゲットの対応する次元に適用される UBOUND 組み込み関数の結果となります。

関連情報:

ポインターをターゲットに関連させる代替形式については、ALLOCATEを参照してください。
プロシージャー参照の中でのポインターの使用法の詳細については、仮引き数としてのポインターを参照してください。

ポインター割り当ての例

TYPE T
  INTEGER, POINTER :: COMP_PTR
ENDTYPE T
TYPE(T) T_VAR
INTEGER, POINTER :: P,Q,R
INTEGER, POINTER :: ARR(:)
BYTE, POINTER :: BYTE_PTR
LOGICAL(1), POINTER :: LOG_PTR
INTEGER, TARGET :: MYVAR
INTEGER, TARGET :: DARG(1:5)
P => MYVAR               ! P points to MYVAR
Q => P                   ! Q points to MYVAR
NULLIFY (R)              ! R is disassociated
Q => R                   ! Q is disassociated
T_VAR = T(P)             ! T_VAR%COMP_PTR points to MYVAR
ARR => DARG(1:3)
BYTE_PTR => LOG_PTR
END

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

整数ポインターの割り当て

整数ポインター変数は、次のことができます。

XL Fortran コンパイラーは、割り当てステートメント内の整数ポインターに対して、 1 バイトの算術を使用することに注意してください。

整数ポインターの割り当ての例

INTEGER INT_TEMPLATE
POINTER (P,INT_TEMPLATE)
INTEGER MY_ARRAY(10)
DATA MY_ARRAY/1,2,3,4,5,6,7,8,9,10/
INTEGER, PARAMETER :: WORDSIZE=4
 
P = LOC(MY_ARRAY)
PRINT *, INT_TEMPLATE          ! Prints '1'
P = P + 4;                     ! Add 4 to reach next element
                               !    because arithmetic is byte-based
PRINT *, INT_TEMPLATE          ! Prints '2'
 
P = LOC(MY_ARRAY)
DO I = 1,10
  PRINT *,INT_TEMPLATE
  P = P + WORDSIZE             ! Parameterized arithmetic is suggested
END DO
END

+--------------------------------IBM 拡張の終り-------------------------------+


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]