Tools

10. SEU のカラー化

RPGソースは通常は単色で表示されているので複雑なRPGソースの場合、命令などを識別しにくい場合がある。

ここではRPGソースを簡単にカラー化できる「COLORRPG」というコマンドをツールとして
ご紹介する。COLORRPG は RPG-III だけでなく ILE-RPG ソースもカラー化して表示
することができ、SEU にも影響を与えることはない。

カラー化されたSEU の実行の様子は次のとおりである。

さて RPGカラー化の原理は実にカンタンである。
RPGソースの13桁目、つまり先頭の桁にカラー属性をHEXコードによって埋め込むだけである。
原理がわかってしまえばユーザーでも COLORRPG をいかようにでも好みの形に修正できる。
実行は

COLORRPG + F4キー

を押して RPGソース個別に命令毎のカラーを次のように指定する。

                       RPG ソースのカラー化  (COLORRPG)                      
                                                                             
 選択項目を入力して,実行キーを押してください。                              
                                                                             
 原始メンバー  . . . . . . . . . > GAI001         名前                       
 原始ファイル  . . . . . . . . . > QRPGSRC        名前                       
   ライブラリー  . . . . . . . . >   TESTSRC      名前 , *LIBL, *CURLIB      
 コメント色  . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
 ファイル記述色  . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
IF 色  . . . . . . . . . . . . . > BLU           GRN, BLU, PNK, RED, TRQ...  
  END 色   . . . . . . . . . . . > BLU           GRN, BLU, PNK, RED, TRQ...  
DO 色  . . . . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
DOW 色   . . . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
DOU 色   . . . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
  ENDDO 色   . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
EXSR 色  . . . . . . . . . . . . > RED           GRN, BLU, PNK, RED, TRQ...  
  BEGSR 色   . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
  ENDSR 色   . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
SELECT 色  . . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
  WHEN 色  . . . . . . . . . . .   GRN           GRN, BLU, PNK, RED, TRQ...  
                                                                      続く ..
GRN・・・
BLU・・・
PNK・・・ビンク
RED・・・
TRQ・・・トルコ色
WHT・・・
YLW・・・

が指定できる。実行が終わったら SEU で RPGソースを開いてみると着色されているはずである。
すべてを GRN にして再更新すると色は 除去することができる。

【 コマンド COLORRPG 】
             CMD        PROMPT('RPG ソースのカラー化 ')                
             PARM       KWD(SRCMBR) TYPE(*NAME) LEN(10) MIN(1) +       
                          PROMPT(' 原始メンバー ')                     
             PARM       KWD(SRCFILE) TYPE(SRCFILE) +                   
                          PROMPT(' 原始ファイル ')                     
 SRCFILE:    QUAL       TYPE(*NAME) LEN(10) DFT(QRPGSRC)               
             QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +               
                          SPCVAL((*LIBL) (*CURLIB)) +                  
                          PROMPT(' ライブラリー ')                     
             PARM       KWD(COMMENT) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +    
                          YLW) PROMPT(' コメント色 ')                  
             PARM       KWD(FILE) TYPE(*CHAR) LEN(3) RSTD(*YES) +      
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +    
                          YLW) PROMPT(' ファイル記述色 ')              
             PARM       KWD(IF) TYPE(*CHAR) LEN(3) RSTD(*YES) +        
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +    
                          YLW) PROMPT('IF 色 ')                        
             PARM       KWD(END) TYPE(*CHAR) LEN(3) RSTD(*YES) +       
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +    
                          YLW) PROMPT('  END 色 ')                   
             PARM       KWD(DO) TYPE(*CHAR) LEN(3) RSTD(*YES) +      
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('DO 色 ')                      
             PARM       KWD(DOW) TYPE(*CHAR) LEN(3) RSTD(*YES) +     
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('DOW 色 ')                     
             PARM       KWD(DOU) TYPE(*CHAR) LEN(3) RSTD(*YES) +     
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('DOU 色 ')                     
             PARM       KWD(ENDDO) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('  ENDDO 色 ')                 
             PARM       KWD(EXSR) TYPE(*CHAR) LEN(3) RSTD(*YES) +    
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('EXSR 色 ')                    
             PARM       KWD(BEGSR) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('  BEGSR 色 ')                 
             PARM       KWD(ENDSR) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('  ENDSR 色 ')                 
             PARM       KWD(SELECT) TYPE(*CHAR) LEN(3) RSTD(*YES) +  
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('SELECT 色 ')                  
             PARM       KWD(WHEN) TYPE(*CHAR) LEN(3) RSTD(*YES) +    
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('  WHEN 色 ')                  
             PARM       KWD(ENDSL) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('  ENDSL 色 ')                 
             PARM       KWD(KLIST) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('KLIST 色 ')                   
             PARM       KWD(PLIST) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('PLIST 色 ')                   
             PARM       KWD(CALL) TYPE(*CHAR) LEN(3) RSTD(*YES) +    
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('CALL 色 ')                    
             PARM       KWD(WRITE) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('WRITE 色 ')                   
             PARM       KWD(UPDAT) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('UPDAT 色 ')                   
             PARM       KWD(DELET) TYPE(*CHAR) LEN(3) RSTD(*YES) +   
                          DFT(GRN) VALUES(GRN BLU PNK RED TRQ WHT +  
                          YLW) PROMPT('DELET 色 ')                   

コンパイルは

CRTCMD CMD(MYLIB/COLORRPG) PGM(MYLIB/COLORRPGCL)  SRCFILE(MYSRCLIB/QCMDSRC)
 AUT(*ALL)
【 CLP COLORRPGCL 】
0001.00              PGM        PARM(&SRCMBR &SRCFILLIB &COMENT &FILE &IF +  
0002.00                           &ENDIF &DO &DOW &DOU &ENDDO &EXSR &BEGSR + 
0003.00                           &ENDSR &SELECT &WHEN &ENDSL &KLIST &PLIST +
0004.00                           &CALL &WRITE &UPDAT &DELET)                
0005.00 /*---------------------------------------------------------*/        
0006.00 /*   COLORRPG :  RPG ソースのカラー化                      */        
0007.00 /*---------------------------------------------------------*/        
0008.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(80)                
0009.00              DCL        VAR(&SRCMBR) TYPE(*CHAR) LEN(10)             
0010.00              DCL        VAR(&SRCFILLIB) TYPE(*CHAR) LEN(20)          
0011.00              DCL        VAR(&SRCF) TYPE(*CHAR) LEN(10)               
0012.00              DCL        VAR(&SRCFLIB) TYPE(*CHAR) LEN(10)            
0013.00              DCL        VAR(&COMENT) TYPE(*CHAR) LEN(3)              
0014.00              DCL        VAR(&FILE) TYPE(*CHAR) LEN(3)                
0015.00              DCL        VAR(&IF) TYPE(*CHAR) LEN(3)                  
0016.00              DCL        VAR(&ENDIF) TYPE(*CHAR) LEN(3)               
0017.00              DCL        VAR(&DO) TYPE(*CHAR) LEN(3)                  
0018.00              DCL        VAR(&DOW) TYPE(*CHAR) LEN(3)                 
0019.00              DCL        VAR(&DOU) TYPE(*CHAR) LEN(3)                 
0020.00              DCL        VAR(&ENDDO) TYPE(*CHAR) LEN(3)               
0021.00              DCL        VAR(&EXSR) TYPE(*CHAR) LEN(3)                  
0022.00              DCL        VAR(&BEGSR) TYPE(*CHAR) LEN(3)                 
0023.00              DCL        VAR(&ENDSR) TYPE(*CHAR) LEN(3)                 
0024.00              DCL        VAR(&SELECT) TYPE(*CHAR) LEN(3)                
0025.00              DCL        VAR(&WHEN) TYPE(*CHAR) LEN(3)                  
0026.00              DCL        VAR(&ENDSL) TYPE(*CHAR) LEN(3)                 
0027.00              DCL        VAR(&KLIST) TYPE(*CHAR) LEN(3)                 
0028.00              DCL        VAR(&PLIST) TYPE(*CHAR) LEN(3)                 
0029.00              DCL        VAR(&CALL) TYPE(*CHAR) LEN(3)                  
0030.00              DCL        VAR(&WRITE) TYPE(*CHAR) LEN(3)                 
0031.00              DCL        VAR(&UPDAT) TYPE(*CHAR) LEN(3)                 
0032.00              DCL        VAR(&DELET) TYPE(*CHAR) LEN(3)                 
0033.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))        
0034.00              MONMSG     MSGID(RPG9000 RPG1000) EXEC(GOTO +             
0035.00                           CMDLBL(RPGERR))                              
0036.00                                                                        
0037.00              CHGVAR     VAR(&SRCF) VALUE(%SST(&SRCFILLIB 01 10))       
0038.00              CHGVAR     VAR(&SRCFLIB) VALUE(%SST(&SRCFILLIB 11 10))    
0039.00              OVRDBF     FILE(QRPGSRC) TOFILE(&SRCFLIB/&SRCF) +         
0040.00                           MBR(&SRCMBR) SECURE(*YES) OVRSCOPE(*JOB)     
0041.00              CALL       PGM(QUATTRO/COLORRPG) PARM(&COMENT &FILE &IF + 
0042.00                           &ENDIF &DO &DOW &DOU &ENDDO &EXSR &BEGSR +    
0043.00                           &ENDSR &SELECT &WHEN &ENDSL &KLIST &PLIST +   
0044.00                           &CALL &WRITE &UPDAT &DELET)                   
0045.00              DLTOVR     FILE(QRPGSRC) LVL(*JOB)                         
0046.00              RETURN                                                     
0047.00                                                                         
0048.00 RPGERR:                                                                 
0049.00              SNDPGMMSG  +                                               
0050.00                           MSG(' 処理中に例外エラーがあった。処理は完 +  
0051.00                            結していない。 ') MSGTYPE(*COMP)             
0052.00              RETURN                                                     
0053.00  ERROR:      RCVMSG     RMV(*NO) MSG(&MSG)                              
0054.00  SNDMSG:     SNDPGMMSG  MSG(&MSG) MSGTYPE(*DIAG)                        
0055.00              ENDPGM                                                     

CLP 中で「QUATTRO」はオブジェクト・ライブラリーであるのでコンパイルの前には自分で保管
するライブラリー名に変更しておくこと。

コンパイルは

CRTCLPGM PGM(MYLIB/COLORRPGCL) SRCFILE(MYSRCLIB/QCLSRC)   AUT(*ALL)
【 RPG COLORRPG 】
0001.00      H            Y/                                                   
0002.00      F**********  カラー RPG  *****************************************
0003.00      FQRPGSRC UP  F    9999            DISK                            
0004.00      F*****************************************************************
0005.00      E                    DTR      9999  1                             
0006.00      IQRPGSRC AA  10                                                   
0007.00      I                                        19999 DTR                
0008.00      I                                       13 198 SRCDTA             
0009.00      I              X'3A'                 C         BLU                
0010.00      I              X'40'                 C         GRN                
0011.00      I              X'38'                 C         PNK                
0012.00      I              X'28'                 C         RED                
0013.00      I              X'30'                 C         TRQ                
0014.00      I              X'32'                 C         YLW                
0015.00      I              X'22'                 C         WHT                
0016.00      C*----------------------------------------------------+           
0017.00      C           *ENTRY    PLIST                           |           
0018.00      C                     PARM           COMENT  3        |           
0019.00      C                     PARM           FILE    3        |           
0020.00      C                     PARM           IF      3        |           
0021.00      C                     PARM           ENDIF   3        |        
0022.00      C                     PARM           DO      3        |        
0023.00      C                     PARM           DOW     3        |        
0024.00      C                     PARM           DOU     3        |        
0025.00      C                     PARM           ENDDO   3        |        
0026.00      C                     PARM           EXSR    3        |        
0027.00      C                     PARM           BEGSR   3        |        
0028.00      C                     PARM           ENDSR   3        |        
0029.00      C                     PARM           SELECT  3        |        
0030.00      C                     PARM           WHEN    3        |        
0031.00      C                     PARM           ENDSL   3        |        
0032.00      C                     PARM           KLIST   3        |        
0033.00      C                     PARM           PLIST   3        |        
0034.00      C                     PARM           CALL    3        |        
0035.00      C                     PARM           WRITE   3        |        
0036.00      C                     PARM           UPDAT   3        |        
0037.00      C                     PARM           DELET   3        |        
0038.00      C*----------------------------------------------------+        
0039.00      C                     SETOF                     42             
0040.00      C*( コメント )                                                 
0041.00      C           DTR,16    IFEQ '*'                                 
042.00      C                     MOVE COMENT    COLOR   3             
043.00      C                     EXSR CHANGE                          
044.00      C                     END                                  
045.00      C*( ファイル記述 )                                         
046.00      C           DTR,15    IFEQ 'F'                             
047.00      C                     MOVE FILE      COLOR   3             
048.00      C                     EXSR CHANGE                          
049.00      C                     END                                  
050.00      C*( ENDIF )                                                
051.00      C           'ENDIF '  SCAN SRCDTA:28                50     
052.00      C  N50      'END '    SCAN SRCDTA:28                50     
053.00      C           *IN50     IFEQ *ON                             
054.00      C                     MOVE IF        COLOR   3             
055.00      C                     EXSR CHANGE                          
056.00      C                     END                                  
057.00      C*( ENDDO )                                                
058.00      C           'ENDDO '  SCAN SRCDTA:28                50     
059.00      C           *IN50     IFEQ *ON                             
060.00      C                     MOVE ENDDO     COLOR   3             
061.00      C                     EXSR CHANGE                          
062.00      C                     END                                  
0063.00      C*( ENDSR )                                                   
0064.00      C           'ENDSR '  SCAN SRCDTA:28                50        
0065.00      C           *IN50     IFEQ *ON                                
0066.00      C                     MOVE ENDSR     COLOR   3                
0067.00      C                     EXSR CHANGE                             
0068.00      C                     END                                     
0069.00      C*( IF )                                                      
0070.00      C           'IF'      SCAN SRCDTA:28                50        
0071.00      C           *IN50     IFEQ *ON                                
0072.00      C                     MOVE IF        COLOR   3                
0073.00      C                     EXSR CHANGE                             
0074.00      C                     END                                     
0075.00      C*( DO )                                                      
0076.00      C           ' DO '    SCAN SRCDTA:27                50        
0077.00      C           *IN50     IFEQ *ON                                
0078.00      C                     MOVE DO        COLOR   3                
0079.00      C                     EXSR CHANGE                             
0080.00      C                     END                                     
0081.00      C*( DOW )                                                     
0082.00      C           ' DOW '   SCAN SRCDTA:27                50        
0083.00      C           *IN50     IFEQ *ON                                
0084.00      C                     MOVE DOW       COLOR   3               
0085.00      C                     EXSR CHANGE                            
0086.00      C                     END                                    
0087.00      C*( DOU )                                                    
0088.00      C           ' DOU '   SCAN SRCDTA:27                50       
0089.00      C           *IN50     IFEQ *ON                               
0090.00      C                     MOVE DOU       COLOR   3               
0091.00      C                     EXSR CHANGE                            
0092.00      C                     END                                    
0093.00      C*( EXSR )                                                   
0094.00      C           ' EXSR '  SCAN SRCDTA:27                50       
0095.00      C           *IN50     IFEQ *ON                               
0096.00      C                     MOVE EXSR      COLOR   3               
0097.00      C                     EXSR CHANGE                            
0098.00      C                     END                                    
0099.00      C*( BEGSR )                                                  
0100.00      C           ' BEGSR ' SCAN SRCDTA:27                50       
0101.00      C           *IN50     IFEQ *ON                               
0102.00      C                     MOVE BEGSR     COLOR   3               
0103.00      C                     EXSR CHANGE                            
0104.00      C                     END                                    
0105.00      C*( ENDSR )                                                  
0106.00      C           ' ENDSR ' SCAN SRCDTA:27                50       
0107.00      C           *IN50     IFEQ *ON                               
0108.00      C                     MOVE ENDSR     COLOR   3               
0109.00      C                     EXSR CHANGE                            
0110.00      C                     END                                    
0111.00      C*( ENDSL )                                                  
0112.00      C           ' ENDSL ' SCAN SRCDTA:27                50       
0113.00      C           *IN50     IFEQ *ON                               
0114.00      C                     MOVE ENDSL     COLOR   3               
0115.00      C                     EXSR CHANGE                            
0116.00      C                     END                                    
0117.00      C*( SELECT )                                                 
0118.00      C           ' SELECT 'SCAN SRCDTA:27                50       
0119.00      C           *IN50     IFEQ *ON                               
0120.00      C                     MOVE SELECT    COLOR   3               
0121.00      C                     EXSR CHANGE                            
0122.00      C                     END                                    
0123.00      C*( WHEN )                                                   
0124.00      C           ' WHEN '  SCAN SRCDTA:27                50       
0125.00      C           *IN50     IFEQ *ON                               
0126.00      C                     MOVE WHEN      COLOR   3        
0127.00      C                     EXSR CHANGE                     
0128.00      C                     END                             
0129.00      C*( KLIST )                                           
0130.00      C           ' KLIST ' SCAN SRCDTA:27                50
0131.00      C           *IN50     IFEQ *ON                        
0132.00      C                     MOVE KLIST     COLOR   3        
0133.00      C                     EXSR CHANGE                     
0134.00      C                     END                             
0135.00      C*( PLIST )                                           
0136.00      C           ' PLIST ' SCAN SRCDTA:27                50
0137.00      C           *IN50     IFEQ *ON                        
0138.00      C                     MOVE PLIST     COLOR   3        
0139.00      C                     EXSR CHANGE                     
0140.00      C                     END                             
0141.00      C*( CALL  )                                           
0142.00      C           ' CALL '  SCAN SRCDTA:27                50
0143.00      C           *IN50     IFEQ *ON                        
0144.00      C                     MOVE CALL      COLOR   3        
0145.00      C                     EXSR CHANGE                     
0146.00      C                     END                             
0147.00      C*( WRITE )                                                 
0148.00      C           ' WRITE'  SCAN SRCDTA:27                50      
0149.00      C           *IN50     IFEQ *ON                              
0150.00      C                     MOVE WRITE     COLOR   3              
0151.00      C                     EXSR CHANGE                           
0152.00      C                     END                                   
0153.00      C*( UPDAT )                                                 
0154.00      C           ' UPDAT'  SCAN SRCDTA:27                50      
0155.00      C           *IN50     IFEQ *ON                              
0156.00      C                     MOVE UPDAT     COLOR   3              
0157.00      C                     EXSR CHANGE                           
0158.00      C                     END                                   
0159.00      C*( DELET )                                                 
0160.00      C           ' DELET'  SCAN SRCDTA:27                50      
0161.00      C           *IN50     IFEQ *ON                              
0162.00      C                     MOVE DELET     COLOR   3              
0163.00      C                     EXSR CHANGE                           
0164.00      C                     END                                   
0165.00      C*----------------------------------------------------+     
0166.00      C   42                EXCPT                           |     
0167.00      C                     SETOF                     42    |     
0168.00      C*----------------------------------------------------+      
0169.00      C           END       TAG                                    
0170.00      C******************************************************      
0171.00      C           CHANGE    BEGSR                                  
0172.00      C******************************************************      
0173.00      CSR         *IN42     IFEQ *OFF                              
0174.00      CSR                   SETON                     42           
0175.00      CSR         COLOR     IFEQ 'BLU'                             
0176.00      CSR                   MOVEABLU       DTR,13                  
0177.00      CSR                   END                                    
0178.00      CSR         COLOR     IFEQ 'GRN'                             
0179.00      CSR                   MOVEAGRN       DTR,13                  
0180.00      CSR                   END                                    
0181.00      CSR         COLOR     IFEQ 'PNK'                             
0182.00      CSR                   MOVEAPNK       DTR,13                  
0183.00      CSR                   END                                    
0184.00      CSR         COLOR     IFEQ 'TRQ'                             
0185.00      CSR                   MOVEATRQ       DTR,13                  
0186.00      CSR                   END                                    
0187.00      CSR         COLOR     IFEQ 'YLW'                             
0188.00      CSR                   MOVEAYLW       DTR,13                  
0189.00      CSR                   END                        
0190.00      CSR         COLOR     IFEQ 'RED'                 
0191.00      CSR                   MOVEARED       DTR,13      
0192.00      CSR                   END                        
0193.00      CSR         COLOR     IFEQ 'WHT'                 
0194.00      CSR                   MOVEAWHT       DTR,13      
0195.00      CSR                   END                        
0196.00      CSR                   END                        
0197.00      CSR                   ENDSR                      
0198.00      OQRPGSRC E        42                             
0199.00      O                         DTR     9999           

コンパイルは

CRTRPGPGM PGM(MYILB/COLORRPG) SRCFILE(MYSRCLIB/QRPGSRC)   AUT(*ALL)