%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で書き換えることができることを覚えていて欲しい。
