COBOL2002 言語 拡張仕様編

[目次][索引][前へ][次へ]

26.4.3 ポインタ項目の参照

ポインタ項目の参照は次の場所に許される。

<この項の構成>
(1) ポインタ比較の条件式
(2) SET文

(1) ポインタ比較の条件式

形式
[図データ]

機能
二つの項目のUSAGE(用途)が,明示的または暗黙的にPOINTERであれば比較できる。
この場合の演算子は,EQUALとNOT EQUALだけ使用できる。

構文規則
  1. 一意名1と一意名3は,連絡節,局所場所節または作業場所節で定義した01〜49,66または77レベルのデータ項目である。次に示すものは指定できない。
    ・関数一意名とオブジェクトプロパティ
    ・ファクトリ定義やインスタンス定義で定義されたデータ項目
    ・オブジェクト参照や,強く型付けされた集団項目に従属する基本項目
  2. 一意名2と一意名4は,ポインタ項目でなければならない。
  3. 比較条件対象が両方とも表意定数NULLの場合,比較はしない。
  4. 一意名1と一意名3がブール項目のときは,バイト境界に調整しておかなければならない。

一般規則
二つのアドレスが同じ場合だけ等しい結果となる。それ以外の場合は等しくない。

(2) SET文

形式
[図データ]

機能
データ項目のアドレスをポインタ変数に割り当てるのに使用する。

構文規則
  1. 一意名1は,連絡節で定義した01レベルまたは77レベルの項目である。一意名1には,強く型付けされた集団項目を指定できない。
  2. 一意名1は,可変長項目であってはならない。
  3. 一意名1は,部分参照してはならない。
  4. 一意名3は,連絡節,局所場所節または作業場所節で定義した01〜49,66または77レベルの項目である。次に示すものは指定できない。
    ・関数一意名やオブジェクトプロパティ
    ・ファクトリ定義やインスタンス定義で定義されたデータ項目
    ・オブジェクト参照データ項目や,強く型付けされた集団項目に従属する基本項目
    ・強く型付けされた集団項目
  5. 一意名2と一意名4は,ポインタ項目である。
  6. 一意名3がブール項目のときは,バイト境界に調整しておかなければならない。

一般規則
  1. TO指定中のポインタ項目のアドレスが,一意名2で表されたポインタ項目へ移される。一意名1がある場合,これに従属する任意の参照はTO指定が識別するアドレスを持つ項目を対象として実行される。TO指定が識別するアドレスは,一意名4に含まれるアドレスまたは一意名3のアドレスである。TO指定にNULLを書くとプログラムのどんなデータも指さないポインタとみなされる。

【標準仕様との関連】
COBOL2002 言語 標準仕様編 10.8.43 SET文