データ・ストラクチャー(DS) でフィールドをまとめて BACKUP用のエリアとして定義しておいて、
MOVE 命令などで変数値を保存しておいて、後からまた MOVE で復元する手法は効果的な使い方である。
例えば、
D SAVDTA S 1 DIM(1024)
D* 読み取り ファイル の FORMAT を外部 DS として READ
D DATADS E DS EXTNAME(SHOHIN)
D DSPDTA 1 1024
D DIM(1024)
:
C MOVE DSPDTA SAVDTA
C SHCODE CHAIN SHOHIN 99
C MOVE SAVDTA DSPDTA
などのようにして使用する。
さらにこの手法を発展させて任意のフィールド群をまとめて DS として定義しておいて
1回の MOVE 命令だけで SAVE/RESTORE を行いたいとする。
上記の例では外部ファイルを EXTNAME でインクルードしているが
任意のフィールドを次のように定義しても良いはずである。
D DATADS DS D SHCODE 10A D SHNAME 32O D SHTANKA 7P 0 D DSPDTA 1 1024 D DIM(1024)
ところが、このような定義では SHCODE, SHNAME,... などは既に定義済みであるとして
コンパイル・エラーとなってしまう。
この不自由さを避けることのできるパラメーターとして V5R2M0 からは「QUALIFIED」という
キーワードが追加された。
使い方は簡単で、DS に次のように QUALIFIED を追加するだけでよい。
D DATADS DS QUALIFIED D SHCODE 10A D SHNAME 32O D SHTANKA 7P 0 D DSPDTA 1 1024 D DIM(1024)
これだけでコンパイル・エラーを避けて、DATADS を定義することができる。
各要素は DATADS.SHCODE のように要素を付加して扱うことができる。
ただし QUALIFIED というのは既に定義済みという意味であるので
QUALIFIED として定義されている DS で新しいフィールドは定義することはできない。
これはあたかも ANSI-C の typedef と同じである。