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