RPGプログラムを開発するときにまっさらの1からソースを
開発している人は稀れだろう。
何がしら社内で統一したテンプレートのようなものを
持っていてそれをコピーして生成しているのではないだろうか?
弊社も実は同じでひとつのシンプルなRPGテンプレートを
持っている。
テンプレートと言ってもほとんど特別な機能は備えていない。
しかしそれだからこそ共通の基盤として使用することができる。
[AA_SAMPE:標準テンプレート]
ソースはこちらから
0001.00 H DFTNAME(AA_SAMPLE) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** AA_SAMPLE ************************************************* 0003.00 FSQLFUNCOL UF A E K DISK 0004.00 F EXTFILE(SQLFUN_LIB) 0005.00 F********************************************************************** 0006.00 0007.00 * CRTRPGMOD OBJ(QTEMP/AA_SAMPE) SRCFILE(R610SRC/QRPGLESRC) 0008.00 * DBGVIEW(*SOURCE) AUT(*ALL) 0009.00 * CRTPGM PGM(ASNET.COM/AA_SAMPLE) MODULE(QTEMP/AA_SAMPLE ACTGRP(*NEW) 0010.00 * AUT(*ALL) 0011.00 0012.00 *-------------------------------------------------------------------* 0013.00 * 2017/05/01 : 作成 0014.00 *-------------------------------------------------------------------* 0015.00 *( 作業変数 ) 0016.00 D SQLFUN_LIB S 21 INZ('QUSRTEMP/SQLFUNCOL') 0017.00 D AR S 1A DIM(256) 0018.00 D N S 4S 0 0019.00 D TRUE S 1A DIM(256) 0020.00 D TRUE# S 4B 0 INZ(0) 0021.00 D FALSE# S 4B 0 INZ(-1) 0022.00 D QUOT C CONST(X'7D') 0023.00 D OE C CONST(X'0E') 0024.00 D OF C CONST(X'0F') 0025.00 D NULL C CONST(X'00') 0026.00 0027.00 D*( プログラム状況データ構造 ) 0028.00 D INFDS_THIS SDS 0029.00 D PROC_NAM *PROC 0030.00 D ROUTINE *ROUTINE 0031.00 D 512A 0032.00 D PGMINFO 1 512 0033.00 D LINE_NUM 21 28 0034.00 D CPFID 40 46 0035.00 D CPFDTA 91 170 0036.00 D ERRMSGID 46 51 0037.00 D CURUSR 358 367 0038.00 0039.00 D*( WORK 日付 YYMMDD データ 構造 ) 0040.00 D DATEDS DS 0041.00 D CENTURY 1 2 0 INZ(20) 0042.00 D YYMMDD 3 8 0 0043.00 D YY 3 4 0044.00 D MM 5 6 0045.00 D DD 7 8 0046.00 D CYY 1 4 0047.00 0048.00 C*-------------------------------------------------------------------------- 0049.00 C USRKEY KLIST | 0050.00 C KFLD USER | 0051.00 C*-------------------------------------------------------------------------- 0052.00 C SETON LR 0053.00 C RETURN 0054.00 C****************************************************** 0055.00 C *INZSR BEGSR 0056.00 C****************************************************** 0057.00 C* 初期 CYCLE のみの実行 0058.00 C ENDSR
[解説]
C関数をバインドできるように BNDDIR(‘QC2LE’) を定義している。
CGI でファイルをライブラリーも明示的に指定できるように
EXTFILE
を定義している。
利用頻度の高い作業変数はいつも指定している。
キー・リストや利用頻度の高いサブ・ルーチン: *INZSR も定義している。
最近の事情を考慮すればプロージャーも定義しておいたほうがよいだろう。