テーブル内の従属データ項目に関する ODO オブジェクトの値を変更した後に、 複合 ODO 指標名 (可変長エレメントのテーブルの指標名) を参照する場合には、注意が必要です。 ODO オブジェクトの値を変更した場合、関連する複合 ODO 指標内のバイト・オフセットは、 テーブルの長さが変更されているので、もはや有効ではありません。 この後に、以下の方法で指標名を参照するようにコーディングする場合、注意しないと予期しない結果が生じる可能性があります。
このタイプのエラーを回避するには、以下のステップを行います。
以下のコードは、ODO オブジェクト COUNTER-2 を変更する場合に 付録 H, 複合 OCCURS DEPENDING ONに示した指標名を保管および復元する方法を示しています。
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 corresponding 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 * corresponding to INTEGER-DATA-ITEM-1, and * can be used with the expected results.