AutoWebのApp.Wizard(=Application Wizard)を使えばRPGソースも
自動生成することができます。
社内でのテンプレート・ソースをコピーして開発するよりは
やはりソースを自動生成したほうが
・圧倒的に開発時間が早い
・高品質のソースを生成できる
・社内でのパターンを標準化できる
という利点があります。
いくら腕のいい開発者でもWizardにはかないません。
しかもWizardであれば品質に優れたソースを短時間のうちに
生成することができるのです。

先に紹介したDSPF: TEST01FM を使って新しいRPGソース: TEST01を
次のように生成します。
GO AUTOWEBの「43. RPG ソースの生成」( CRTRPGSRC )を選択してください。
RPG ソースの作成 (CRTRPGSRC)
選択項目を入力して,実行キーを押してください。
原始ファイル . . . . . . . . . QRPGLESRC 名前
ライブラリー . . . . . . . . QTRSRC 名前 , *LIBL, *CURLIB
原始メンバー . . . . . . . . . TEST01 名前 , *SRCMBR
テキスト . . . . . . . . . . . 商品マスターの登録
基礎ファイル . . . . . . . . . SHOHIN 名前 , *NONE
ライブラリー . . . . . . . . QTRFIL 名前 , *LIBL, *CURLIB
表示装置/印刷装置ファイル . . TEST01FM 名前
ライブラリー . . . . . . . . QTROBJ 名前 , *LIBL, *CURLIB
5250 ハンドラーの追加 . . . . . *NO *YES, *NO
レコードの置き換えまたは追加 *ADD *NONE, *ADD, *REPLACE
[解説]
ソース・ファイルは QTRSRC/QRPGLESRC でRPGソース・メンバー名として
TEST01 を指定します。
テキストは「商品マスターの登録」とします。
基礎ファイルというのは保守するターゲットになるファイル名のことで
QTRFO+/SHOHINとして商品マスターを指定します。
表示装置/印刷装置ファイルは策ほど生成した QTROBJ/TEST01FM です。
レコードの置き換えまたは追加は初めての作成なので *ADD と指定します。
これで実行キーを押して生成を開始します。
QTRSRC/QRPGLESRC(TEST01) を生成しました
と完了メッセージが報告されれば生成の成功です。
次は生成されたRPGソースです。
[ RPG: TEST01 ]
ソースはこちらから
0001.00 H DFTNAME(TEST01) DATEDIT(*YMD/)BNDDIR('QC2LE')
0002.00 F******** 商品マスターの登録 ************************************
0003.00 FTEST01FM CF E WORKSTN
0004.00 FSHOHIN UF A E K DISK
0005.00 F INFDS(INFDSF)
0006.00 F*****************************************************************
0007.00 * QTRSRC/QRPGLESRC(TEST01)
0008.00 * 使用目的 : 更新 (*UPDATE)
0009.00 * 作成日 : 2021/08/07 14:44:45
0010.00 * 作成者 : QTR
0011.00
0012.00 D INFDSF DS QUALIFIED
0013.00 * オープン・フィードバック域 160 BYTES 81-240
0014.00 D OPNFBK 81 240 ファイル名
0015.00 D ODP_TYPE 81 82 ODP タイプ
0016.00 D FILE_NAME 83 92 ODP タイプ
0017.00 D LIBRARY 93 102 ODP タイプ
0018.00 D MEMBER 129 138 メンバー名
0019.00
0020.00 D*( WORK 日付 YYMMDD データ 構造 )
0021.00 D DATEDS DS
0022.00 D SRY 1 2 0
0023.00 D SRYMD 1 8 0
0024.00 D YYMMDD 3 8 0
0025.00 D YYMM 3 6 0
0026.00 D MMDD 5 8 0
0027.00 D YY 3 4 0
0028.00 D MM 5 6 0
0029.00 D DD 7 8 0
0030.00
0031.00 D SAVEDS E DS EXTNAME(SHOHIN)
0032.00 D DSPDTA 1 1024
0033.00 D DIM(1024) 入力 データ
0034.00
0035.00 *[ 注意 ]
0036.00 * このプログラムはパラメータつきで呼び出すことができます。
0037.00 * パラメータなしで呼び出された場合は単独で動作します。
0038.00 C*----------------------------------------------------+
0039.00 C *ENTRY PLIST |
0040.00 C PARM SEL001
0041.00 C*----------------------------------------------------+
0042.00 C *LIKE DEFINE SHCODE SEL001
0043.00 C IF %PARMS > 0
0044.00 C MOVE SEL001 SHCODE
0045.00 C GOTO GET_RECORD
0046.00 C ENDIF
0047.00 C*----------------------------------------------------+
0048.00 C RECKEY KLIST
0049.00 C KFLD SHCODE
0050.00 C*----------------------------------------------------+
0051.00 C*( 初期画面 )
0052.00 C*----------------------------------------------------+
0053.00 C START TAG |
0054.00 C EXFMT DSPHEAD |
0055.00 C*----------------------------------------------------+
0056.00 C SETOFF 99
0057.00 C*( CF03 )- 終了
0058.00 C *IN03 IFEQ *ON CF03
0059.00 C SETON LR
0060.00 C LR EXSR LRRTN
0061.00 C LR RETURN
0062.00 C GOTO START
0063.00 C ENDIF
0064.00 C*( ROLLUP )
0065.00 C *IN07 IFEQ *ON CF03
0066.00 C EXSR ROLLUP
0067.00 C 99 GOTO START
0068.00 C ENDIF
0069.00 C*( ROLLDWN )
0070.00 C *IN08 IFEQ *ON CF03
0071.00 C EXSR ROLLDWN
0072.00 C 99 GOTO START
0073.00 C ENDIF
0074.00 C*( 実行キー )
0075.00 C GET_RECORD TAG
0076.00 C *NOKEY CLEAR SHOHINR
0077.00 C SETOFF 90
0078.00 C RECKEY CHAIN SHOHIN 90
0079.00 C N90 MOVEL ' 変更 ' DSPMSG
0080.00 C 90 MOVEL ' 入力 ' DSPMSG
0081.00 C EXSR CHECK
0082.00 C 99 GOTO START
0083.00 C*( 明細画面 )
0084.00 C*----------------------------------------------------+
0085.00 C DSPLY TAG |
0086.00 C EXFMT DSPDTA01 |
0087.00 C*----------------------------------------------------+
0088.00 C SETOFF 99
0089.00 C*( CF03 )- 終了
0090.00 C *IN03 IFEQ *ON CF03
0091.00 C SETON LR
0092.00 C LR EXSR LRRTN
0093.00 C LR RETURN
0094.00 C GOTO DSPLY
0095.00 C END CF03
0096.00 C*( CF12 )- 前画面
0097.00 C *IN12 IFEQ *ON CF12
0098.00 C SETOFF 12
0099.00 C GOTO START
0100.00 C END CF12
0101.00 C*( CF10 )- 更新
0102.00 C *IN10 IFEQ *ON CF10
0103.00 C SETOFF 10
0104.00 C EXSR CHECK
0105.00 C 99 GOTO DSPLY
0106.00 C*----------------------------------------------------+
0107.00 C 90 WRITE SHOHINR |
0108.00 C N90 UPDATE SHOHINR |
0109.00 C*----------------------------------------------------+
0110.00 C 90 ADD 1 ADDREC
0111.00 C N90 ADD 1 CHGREC
0112.00 C GOTO START
0113.00 C END CF10
0114.00 C*( CF23 )- 削除
0115.00 C *IN23 IFEQ *ON CF23
0116.00 C SETOFF 23
0117.00 C*----------------------------------------------------+
0118.00 C N90 DELETE SHOHINR |
0119.00 C*----------------------------------------------------+
0120.00 C N90 ADD 1 DLTREC
0121.00 C GOTO START
0122.00 C END CF23
0123.00 C*( ROLLUP )
0124.00 C *IN07 IFEQ *ON CF03
0125.00 C EXSR ROLLUP
0126.00 C 99 GOTO DSPLY
0127.00 C ENDIF CF12
0128.00 C*( ROLLDWN )
0129.00 C *IN08 IFEQ *ON CF03
0130.00 C EXSR ROLLDWN
0131.00 C 99 GOTO DSPLY
0132.00 C ENDIF
0133.00 C*( 実行キー )
0134.00 C GOTO DSPLY
0135.00 C*
0136.00 C END TAG
0137.00 C******************************************************
0138.00 C *INZSR BEGSR
0139.00 C******************************************************
0140.00 C* 初期サイクルのみの実行
0141.00 /FREE
0142.00 MSGDTA = INFDSF.MEMBER + INFDSF.FILE_NAME + INFDSF.LIBRARY;
0143.00 /END-FREE
0144.00 C INZEND ENDSR
0145.00 C******************************************************
0146.00 C CHECK BEGSR
0147.00 C******************************************************
0148.00 C*( 明細チエック )
0149.00 C*
0150.00 C CHKEND ENDSR
0151.00 C******************************************************
0152.00 C LRRTN BEGSR
0153.00 C******************************************************
0154.00 C MOVE 'Y' ANS
0155.00 C*----------------------------------------------------+
0156.00 C ENDDSP TAG |
0157.00 C EXFMT ENDOPT |
0158.00 C*----------------------------------------------------+
0159.00 C*( CF03 )- 終了
0160.00 C *IN03 IFEQ *ON CF03
0161.00 C SETON LR
0162.00 C RETURN
0163.00 C END CF03
0164.00 C*( CF12 )- 前画面
0165.00 C *IN12 IFEQ *ON CF03
0166.00 C SETOFF LR
0167.00 C LEAVESR
0168.00 C END
0169.00 C*( 実行キー )
0170.00 C SETON LR
0171.00 C RETURN
0172.00 C ENDSR
0173.00 C******************************************************
0174.00 C ROLLUP BEGSR
0175.00 C******************************************************
0176.00 C SETOFF 07
0177.00 C RECKEY SETGT SHOHIN
0178.00 C READ SHOHIN 61
0179.00 C 61 SETON 99
0180.00 C ENDSR
0181.00 C******************************************************
0182.00 C ROLLDWN BEGSR
0183.00 C******************************************************
0184.00 C SETOFF 07
0185.00 C RECKEY SETLL SHOHIN
0186.00 C READP SHOHIN 61
0187.00 C 61 SETON 99
0188.00 C ENDSR
[解説]
このRPGソースはいろいろな用途にも使えるように考慮されており
汎用的に作られています。
まず初めに
0038.00 C*----------------------------------------------------+ 0039.00 C *ENTRY PLIST | 0040.00 C PARM SEL001 0041.00 C*----------------------------------------------------+ 0042.00 C *LIKE DEFINE SHCODE SEL001 0043.00 C IF %PARMS > 0 0044.00 C MOVE SEL001 SHCODE 0045.00 C GOTO GET_RECORD 0046.00 C ENDIF
としてパラメータつきでもパラメータなしでも呼び出すことが
できます。
外部からパセメータつきで商品コードを指定して呼び出された場合は
初期画面を表示せずに指定された商品レコードを取り出して
明細画面を表示します。
パラメータの指定がない場合は商品コードを指定させるために
初期画面を表示して商品コードの似有力を求めます。
つまりサブ・プログラムとして用途も兼ね備えたプログラムとして
生成されています。
0141.00 /FREE 0142.00 MSGDTA = INFDSF.MEMBER + INFDSF.FILE_NAME + INFDSF.LIBRARY; 0143.00 /END-FREE
には FREEフォーマットの使い方も示しています。
すべてFREEフォーマットにする必要はありませんが
少しずつFREEフォーマットに慣れていくと便利な場面が多くなります。
[コンパイル]
CRTBNDRPG PGM(QTROBJ/TEST01) SRCFILE(QTRSRC/QRPGLESRC) DFTACTGRP(*NO) ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)
[実行]
CALL QTROBJ/TEST01 + [実行]
[初期画面]
TEST01 商品マスターの登録 日付 2021/08/07 商品コード NV-CF1 時刻 16:00:15 必要な項目を打鍵して実行キーを押して下さい。 F3= 終了 ROLL UP/DOWN
[解説]
商品コードに NV-CF1 と入力して実行キーを押すと次のように明細画面が表示される。
[明細画面]
TEST01 商品マスターの登録 変更 日付 2021/08/07 商品コード NV-CF1 時刻 16:12:16 商品名 Cカセット編集ビデオ 単価 58,000 品種コード 0002 品種名 ROLL UP/DOWN F3= 終了 F10= 更新 F12= 前画面 F23= 削除
[解説]
品種名が表示されていませんがこれは品種マスターとの結合記述は自動生成されていないからです。
0002.00 F******** 商品マスターの登録 ************************************ 0003.00 FTEST01FM CF E WORKSTN 0004.00 FSHOHIN UF A E K DISK 0005.00 F INFDS(INFDSF) 0006.00 FHINSHU IF E K DISK 0007.00 F*****************************************************************
と
0146.00 C****************************************************** 0147.00 C CHECK BEGSR 0148.00 C****************************************************** 0149.00 C*( 明細チエック ) 0150.00 C SHSCOD CHAIN HINSHU 99 0151.00 C* 0152.00 C CHKEND ENDSR
のように追加するだけで
TEST01 商品マスターの登録 変更 日付 2021/08/07 商品コード NV-CF1 時刻 16:21:18 商品名 Cカセット編集ビデオ 単価 58,000 品種コード 0002 品種名 ビデオデッキ ROLL UP/DOWN F3= 終了 F10= 更新 F12= 前画面 F23= 削除
[解説]
このように品種名「ビデオデッキ」が表示されます。
