Hitachi

COBOL2002 操作ガイド


12.4.2 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にアドレス名で参照されたデータ名を指定した場合,アドレス名が指すアドレスが設定されます。