ロケーターで修飾された参照

基底付き変数への参照は、ポインター変数またはオフセット変数への参照で修飾できます。次に例を示します。

DECLARE A(10) FLOAT BASED; 
DECLARE P POINTER;

この例では、P –>A および P –>A(K) は基底付き変数 A へのポインターで修飾された参照です。

ポインター変数自体も基底付き変数にできるため、複数の修飾が可能です。次に例を示します。

DECLARE     1 NODE BASED,
            2 NEXT POINTER, 
            2 VALUE FLOAT;
DECLARE HEAD POINTER;

この例では、HEAD –>NODE.NEXT–>NODE.VALUE は NODE.VALUE へのポインターで修飾された参照です。NODE.VALUE が NODE.NEXT で修飾され、さらに NODE.NEXT が HEAD で修飾されています。

ポインター値を使用する関数および組み込み関数をポインター修飾子として使用することもできます。

DECLARE NEXT_NODE ENTRY RETURNS(POINTER);

この例では、NEXT_NODE() –>NODE.VALUE は NODE.VALUE へのポインターで修飾された参照です。修飾子は関数参照です。

ある領域に割り当てられたデータをアドレス指定する際には、オフセット変数を上記のポインターの例と同じようにロケーター修飾子として使用できます。オフセット値は、その宣言の OFFSET 属性で指定された領域のアドレスを追加することによって暗黙的にポインター値に変換されます。