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= 削除
[解説]
このように品種名「ビデオデッキ」が表示されます。