RPG

359. RPGソースの標準プロト・タイプ

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 も定義している。

最近の事情を考慮すればプロージャーも定義しておいたほうがよいだろう。