%SUBST は文字列の一部を取り出す組込み関数であるが
取り出すだけでなく一部だけを書き換えるという使い方もできる。
%SUBST を効果的に使うことによって従来のMOVELやMOVEを繰り返し
使うという手間を削減することができる。
■ 効果的な組込み関数 %SUBST の使い方の TESTSBT
ソースはこちらから
0001.00 H DFTNAME(TESTSBT) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** 効果的な組込み関数 %SUBST の使い方 ************************ 0003.00 F* 0004.00 F********************************************************************** 0005.00 0006.00 * CRTBNDRPG PGM(OBJLIB/TESTSBT) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO) 0007.00 * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL) 0008.00 0009.00 D SHCODE S 10A 0010.00 D CDR S 10A DIM(256) 0011.00 D MKR S 1A DIM(256) 0012.00 D N S 4S 0 0013.00 D NAME S 6A 0014.00 D FAMILY S 6A 0015.00 D STRING S 48A 0016.00 0017.00 C EVAL STRING = 'JOHN LENNON' 0018.00 C EVAL NAME = %SUBST(STRING:1:6) 0019.00 C EVAL %SUBST(STRING: 1: 6) = 'JULIAN' 0020.00 /FREE 0021.00 STRING = 'JOHN LENNON'; 0022.00 NAME = %SUBST(STRING:1:6); 0023.00 %SUBST(STRING:1:6) = 'JULIAN'; 0024.00 /END-FREE 0025.00 C SETON LR 0026.00 C RETURN 0027.00
[解説]
取出し : NAME = %SUBST(STRING:1:6);
値のセット : %SUBST(STRING:1:6) = ‘JULIAN’;
特にこのように文字列の一部だけを%SUBSTで書き換えることができることを覚えていて欲しい。