CAT をフリーフォーマットで書くと ?
CAT や CAT(P) のようにな文字列の結合も RPGでは使用頻度の高い命令である。
これも結局は文字列の代入が目的であるので=
を使って記述することになるはずであるが
どのように記述すればよいのだろうか ?
1. 単純な文字列の結合
'SHCODE=' CAT(P) SHNAME:0 DSP40 40
これをフリー・フォーマットで書くと
/FREE DSP40 = 'SHCODE=' + SHNAME; /END-FREE
という + による算術演算で非常に直観的でわかりやすい記述となる。
2. 先行のブランクを除去する結合は ?
MOVEL(P) 'SHCODE=' DSP40 40 DSP40 CAT SHNAME:0 DSP40
を記述するには
/FREE DSP40 = 'SHCODE='; DSP40 = %TRIMR(DSP40) + SHNAME; /END-FREE
のように後続ブランクを除去するために組込み関数 %TRIMR が
必要となってくることに注意しなければならない。
CAT SHNAME:0 の数字 0 とは被結合フィールドの後続のブランクを
トリムする、という意味であることを意識する必要がある。
※見てきたようにフリー・フォーマットの=
(イコール)という算術記号は単純ではない。
代入する、という意味での=
はジックリと考える必要がある。