RPG

253. フリー・フォーマットへの招待(4)

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 とは被結合フィールドの後続のブランクを
トリムする、という意味であることを意識する必要がある。

※見てきたようにフリー・フォーマットの=(イコール)という算術記号は単純ではない。
   代入する、という意味での=はジックリと考える必要がある。