若ILE RPG的源程序中包含有结构化操作码(如DO...END,IF...ELSE...END),编译后不采用缩进格式显示,看起来非常不方便,本文主要描述如何在ILE RPG编译清单中加入结构化缩进格式。
如何在ILE RPG编译清单中实现结构化缩进格式呢?
1.在ILE RPG的H表中加入INDENT缩进关键字,INDENT的主要作用是在编译清单中加入缩进格式,缺省情况下INDENT为*NONE,不进行缩进显示。要进行缩进显示可以用INDENT('字符值“),例如:INDENT('| '),它的含义是用一个竖线和一个空格进行结构化缩进,如下图所示:
0001.00 H INDENT('| ')
0002.00 FDSPFILE1 CF E WORKSTN
0003.00 FTESTPF IF E K DISK
0004.00 FPRTF O E PRINTER
0005.00 DTODAYSDATE S D
0006.00 C MOVE UDATE TODAYSDATE
0007.00 C EXFMT DSPLY_FMT
0008.00 C DOW NOT *IN03
0009.00 C EVAL *IN99=*OFF
0010.00 C VNDNBR CHAIN TESTPF
0011.00 C IF %FOUND(TESTPF)
0012.00 C EXFMT DSPLYFMT
0013.00 C IF *IN10
0014.00 C WRITE VNADDFMT
0015.00 C ENDIF
0016.00 C ELSE
0017.00 C EVAL *IN99=*ON
0018.00 C ENDIF
0019.00 C
0020.00 C EXFMT DSPLYFMT
0021.00 C ENDDO
0022.00 C
0023.00 C EVAL *INLR=*ON
2.编译ILE RPG源程序。
===> CRTBNDRPG PGM(LIBNAME/TEST) SRCFILE(LIBNAME/QRPGLESRC) SRCMBR(TEST) DFTACTGRP(*NO) INDENT('| ')
3.用命令dspsplf查看编译生成的SPOOL FILE,下图是SPOOL FILE的一个片段,这样用竖线和空格在ILE RPG编译清单中实现结构化缩进格式。
31 C MOVE UDATE TODAYSDATE
32 C EXFMT DSPLY_FMT
33 C DOW NOT *IN03
34 C | EVAL *IN99=*OFF
35 C VNDNBR | CHAIN TESTPF
36 C | IF %FOUND(VENDOR_PF)
37 C | | EXFMT DSPLYFMT
38 C | | IF *IN10
39 C | | | WRITE VNADDFMT
40 C | | ENDIF
41 C | ELSE
42 C | | EVAL *IN99=*ON
43 C | ENDIF
44 C |
45 C | EXFMT DSPLYFMT
46 C ENDDO