%SUBST は文字列の中から一部だけを取り出す組込み関数であるが
使い方によって様々な用途に応用することができる。
_
(1) 文字列の一部を取り出す
これは基本的な%SUBSTの使い方である。
EVAL FLD = %SUBST(DSPSRC:18:10)
… DSPSRCというフィールドの18桁目から10バイトを取り出して
FLD というフィールドに代入する。
(2) 文字列の一部を書き換える
/FREE %SUBST(DSPSRC:43:10 = FLD; /END-FREE
…(1)とは逆にフィールド: DSPSRC の43桁目に10バイトのFLDの値を
代入する。
(3) 文字列の一部だけを比較する
/FREE IF %SUBST(FLD:1:1) = '*'; : ENDIF; /END-FREE
フィールドの先頭に1桁目に文字 ‘*’ であるかどうかを検査する。
%SUBSTを使えば先頭の文字だけをMOVELで取り出す必要はない。
(4) 指定した桁位置から後ろすべてを選択する
/FREE ARAFLD = 'SET ' + %SUBST(FLD:28) /END-FREE
フィールド : FLD の 28桁から後ろすべてを選択する。
このように %SUBST は選択する桁数を省略することもできる。
残りの桁数を計算する必要はないので非常に楽である。
この使い方を覚えておくとストレスのない快適なコーディングができる。
%SUBST で最も知ってもらいたい機能である。
_
※ /FREE-/END-FREE は Ver7.1 からは省略することができるが
まだ知らない方のためにあえて記述している。