Hitachi

COBOL2002 言語 拡張仕様編


25.4.3 ポインタ項目の参照

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

〈この項の構成〉

(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文