01 WK-REC. 03 WK-CODE PIC X(20) VALUE "ABCDE12345FGHIJ67890". 03 WK-X REDEFINES WK-CODE. 05 WK-X1 PIC X(5). 05 WK-S1 PIC 9(5). 05 WK-X2 PIC X(5). 05 WK-S2 PIC 9(5).
こんな感じです。一旦定義した項目を、細分化して利用するテクニック。上の例は、20バイトの項目を英字と数字の領域にして利用します。
DISPLAY WK-X2. で、WK-X2を表示した場合には、「FGHIJ」が表示されます。
REDEFINES句
機能
REDEFINES(再定義)句は,計算機の同じ記憶領域に異なるデータ項目を収めるのに使う.
一般形式
【書き方】
(1) | REDEFINES句は,レベル番号,データ名-1又はFILLERの直後に書かなければならない. |
(2) | データ名-2及びREDEFINES句の左辺のレベル番号は,同じでなければならない.また,66や88であってはならない. |
(3) | ファイル節の01レベルの記述項にこの句を書いてはならない. |
(4) | データ名-2のデータ記述項は,OCCURS句を含んではならない.データ名-2は,OCCURS句を含むデータ記述項に従属していてもよい.この場合,REDEFINES句でデータ名-2を参照するときは,添字を付けてはならない.記憶領域の最初の定義及び再定義のどちらも,可変反復データ項目を含んでいてはならない. |
(5) | データ名-2のデータ項目を,外部データレコードとして宣言するか,又は01以外のレベル番号に指定するときは,それが含む文字位置の個数は,REDEFINES句の左辺によって参照されるデータ項目の文字位置の個数より大きいか等しくなければならない.データ名-2のデータ項目を01のレベル番号に指定し,外部データレコードとして宣言しなければ,そのような制限はない. |
(6) | データ名-2は,たとえ一意でなくても修飾してはならない.これは,原始プログラム中でREDEFINES句を書く位置の規則により,参照のあいまいさが存在しないことによる. |
(7) | 同じ文字位置を重複して再定義してもよい.同じ文字位置を重複して再定義するときは,データ名-2は,その文字位置を最初に定義した記述項のデータ名でなければならない. |
(8) | REDEFINES句を含む記述項に,VALUE句を書いてはならない.ただし,条件名の記述項には書いてもよい. |
(9) | データ名-2のデータ記述項とREDEFINES句を含む記述項の間には,データ名-2のレベル番号及びREDEFINES句の左辺のレベル番号より小さいレベル番号を持つ記述項があってはならない. |
(10) | REDEFINES句を含む記述項は,再定義される文字位置の記述項の後に書かなければならず,この間に新しい文字位置を定義する記述項があってはならない. |
(11) | データ名-2は,REDEFINES句を含む記述項に従属していてもよい. |
(12) | データ名-2がブール項目で,SYNCHRONIZED句の指定がなく,用途(USAGE)がBITの場合,データ名-1は用途(USAGE)がBITのブール項目でなければならない. |
(1) | 記憶領域の割当ては,データ名-2から始まり,データ名-1又はFILLER句のデータ項目中の文字位置の個数を含むに足りる記憶領域とする. |
(2) | 同じ文字位置を二つ以上のデータ記述項によって定義するとき,どのデータ記述項に関するデータ名も,その文字位置を参照するのに用いることができる. |
(3) | REDEFINES句が指定された基本項目,又はREDEFINES句が指定された集団項目に従属する最初の基本項目にSYNCHRONIZED句を指定するときは,再定義されるデータ項目をこの基本項目が要求する固有の境界に合わせておくことは利用者の責任である. |