EXTNAME によるデータのBACKUP方法を紹介する。
_
DSPF を使ってデータ・ベースを更新するプログラムを
作成するときに DSPFのフィールド名をデータ・ベースの
フィールド名とは異なる名前に命名する人が多いようであるが
DSPFのフィールド名とデータ・ベースのフィールド名を
異なる名前にするとプログラム中でフィールドの数の分だけ
MOVE演算を繰り返さなければならない。
BAKCUPにフィールドの個数分だけの演算と
そして戻すときにもフィールドの個数分だけの演算が
必要となる。
このような無駄な演算を避けるには
DSPFのフィールド名とデータ・ベースのフィールド名は
必ず同じ名前を使用しておけばよい。
そうなるとデータ・ベースのレコードにCHAINなどで
アクセスしたときにフィールド値が入れ替わってしまうことに
なる。
それを防ぐためにフィールドの値をBACKUPしておいて
また戻すという作業が必要になる。
どうしてもBACKUP と RECOVERYの演算はやはり必要である。
このとき効果を発揮するのが DS に EXTNAME を
組み合わせたBACKUP & RECOVERY の手法である。
D DSPDTA E DS EXTNAME(SHOHIN) C MOVE DSPDTA SAVDTA C *LIKE DEFINE DSPDTA SAVDTA C SETOFF 90 C SHOKEY CHAIN SHOHIN 90 C MOVE SAVDTA DSPDTA C 90 WRITE SHOHINR C N90 UPDATE SHOHINR
といった具合である。
商品マスター: SHOHIN のデータ全体は
D DSPDTA E DS EXTNAME(SHOHIN)
で EXTNAME で DSPDTA として定義しておいて
データのBACKUPは
MOVE DSPDTA SAVDTA *LIKE DEFINE DSPDTA SAVDTA
として 一気に SAVDTA に BACKUPすることができる。
わずか一行の演算だけでレコード情報全体のBACKUPができるのである。
これによってDSPFではデータ・ベースと同じ名前のフィールド名を使うことも
できて何よりプログラムは見た目にも非常にスッキリしたものとなる。
なおEXTFILEてば DSPFのレコードもBACKUPとして利用することができて
レコード名も指定することができる。
D DSPDTA E DS EXTNAME(STRDFUFM:SEQREC)
このように EXTNAME を使うだけでプログラムはスマートに記述することが
できて演算も少なくて済むようになる。
演算が少ないということは余計なバグの発生も抑えられるということでもある。
_