テーブル内の従属データ項目の ODO オブジェクトの値を変更した後に、複合 ODO 指標名 (つまり、可変長エレメントを持つテーブルの指標名) を参照する場合には、注意してください。
ODO オブジェクトの値を変更すると、テーブルの長さが変わるため、関連する複合 ODO 指標のバイト・オフセットはもう有効ではありません。 ですから次のような指標名への参照をコーディングした場合、予防措置を講じなければ、 予期しない結果が生じることになります。
この種のエラーを回避するためには、以下のステップに従ってください。
次のコードは、ODO オブジェクト COUNTER-2 が変更される場合の指標名の保管方法と復元方法を示しています (例: 複合 ODOを参照)。
77 INTEGER-DATA-ITEM-1 PIC 99.
. . .
SET INDX TO 5.
* INDX is valid at this point.
SET INTEGER-DATA-ITEM-1 TO INDX.
* INTEGER-DATA-ITEM-1 now has the
* occurrence number that corresponds to INDX.
MOVE NEW-VALUE TO COUNTER-2.
* INDX is not valid at this point.
SET INDX TO INTEGER-DATA-ITEM-1.
* INDX is now valid, containing the offset
* that corresponds to INTEGER-DATA-ITEM-1, and
* can be used with the expected results.
関連参照
SET ステートメント
(「COBOL for Windows 言語解説書」)