COBOL2002 使用の手引 操作編


5.4.18 ASSIGN ADDRESS(アドレスの取得)

データ名のアドレスを取得します。

形式

[図データ]

  • ADDRESS(データ名指定1)

    アドレス名,アドレスデータ項目,またはポインタ項目を指定します。

    指定したデータ名に,DATAオペランドで指定したデータ名のアドレスが設定されます。

  • DATA(データ名指定2)

    アドレスを取得したいデータ名を指定します。

注意事項
  • データ名指定2には,次のデータ項目は指定できません。

    ・指標名

    ・アドレス名

    ・動的長基本項目

  • データ名指定2にブール項目を指定した場合,バイト境界になっていればアドレスを取得できます。バイト境界になっていない場合は,エラーになります。

  • アドレスを取得したあとは,取得したアドレスが指すデータが参照できるかどうかは確認しません。参照できなくなっていた場合,そのアドレスを使ってデータ操作したときの動作は保証しません。

  • データ名指定1にアドレス名を指定したとき,指定したアドレス名で参照されるデータとデータ名指定2に指定したデータの構造のチェックはしません。二つの構造が違うことによる領域破壊などの動作は保証しません。

    例えば,次の条件で,データ名指定1にADDRS,データ名指定2にSRC_DATA1を指定した場合,DATA1(アドレス名ADDRSで参照されるデータ)とSRC_DATA1は,構造およびサイズとも異なりますが,ASSIGN ADDRESSコマンドは成功します。

    ただし,DATA3 OF DATA1の部分はSRC_DATA1の範囲外になるため,その値を更新すると,領域破壊になります。

    ・COBOLソースでのデータ定義

     01 DATA1 ADDRESSED BY ADDRS.

      02 DATA2 PIC X(10).

      02 DATA3 PIC X(10).

     01 SRC_DATA1 PIC X(10).

    ・デバッガで実行するTDコマンド

     ASSIGN ADDRESS( ADDRS ) DATA( SRC_DATA1 )

     ASSIGN DATA( DATA3 OF DATA1) VALUE( "SAMPLE" ) *> 領域破壊になる。

  • データ名指定2にアドレス名で参照されたデータ名を指定した場合,アドレス名が指すアドレスが設定されます。