RPG

497. %SUBST の使い方応用編

%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 からは省略することができるが
まだ知らない方のためにあえて記述している。