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 にして再更新すると色は 除去することができる。
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)
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)
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)