定数名の NEXT 指定

VALUE 句の定数名形式の NEXT 指定は常に、記憶領域の次のバイトが前のデータ宣言の後に登場するオフセットを指す。以下に例を示す。

 01  x1             pic x(10).
 01  x2 redefines x1    pic x.
     78  next-offset    value next.
 01  x3             pic xx.

ここで、next-offset の値は x3 の開始地点ではなく、x1 の 2 番目のバイトの位置である。

これも OCCURS 句に関して混乱を招く原因となり得る。以下に例を示す。

 01  group-item.
     05  tabl occurs 10 times.
             78  offset-a   value next.
         10 elem            pic x.
             78  offset-b   value next.
     05  after-tabl     pic x(02).  

offset-aelem の最初の登場箇所の開始点でのオフセットをポイントする。それに対し offset-b は、after-tabl の開始地点ではなく、表要素 elem の 2 番目の登場箇所の開始地点をポイントする。after-tabl の開始地点を取得する場合は、ソース コードを次のように変更する。

 01  group-item.
     05  dummy-item     pic x(10).
          78 offset-c            value next.
     05  tabl redefines dummy-item
               occurs 10 times.
          78 offset-a     value next.
         10 elem            pic x.
             78 offset-b     value next.
     05  after-tabl     pic x (02).

この例では、offset-cafter-tabl の開始オフセットをポイントする。