データ・ストラクチャー(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 と同じである。