R-P-1-2(2)

2019-09-01 16:12

当天的日期将以日,月,年的格式打印,并以“/”为分隔符。

1.1.5.3文件描述规范表

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+...

FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++++

FTRANSACT IP E K DISK FEMPLOYEE IF E K DISK FQSYSPRT O F 80 PRINTER

在文件描述规范表中定义了三个文件。

TRANSACT定义为输入文件,由ILE RPG/400程序周期控制从这个文件中读记录。 EMPLOYEE定义为输入的全过程文件,由计算规范表控制从这个文件中读记录。 QSYSPRT定义为输出的打印文件。

1.1.5.4 定义规范表

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... D+Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++

D Pay S 8P 2

D Heading1 C 'NUMBER NAME RATE H-

D OURS BONUS PAY ' D Heading2 C '______ ________________ ______ _-

D ____ _______ __________'

使用定义规范表,说明变量“Pay”储存雇员每周的工资,两个常量“Heading1”和“HEADING2”来做打印表头。

1.1.5.5 计算规范表

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+...

CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..

C TRN_NUMBER CHAIN EMP_REC 99 C IF NOT *IN99

C EVAL (H) Pay = EMP_RATE * TRN_HOURS + TRN_BONUS C ENDIF

计算表的代码项包括:

CHAIN操作,用交易文件中的字段TRN_NUMBER在雇员文件中查找有相同雇员号的记录。 如果CHAIN操作成功。(指示器99为OFF),则雇员的工资值确定,结果被四舍五入并保存于变量“pay”中。

1.1.5.6 输出规范表

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+...

OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+...........................

O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat

OQSYSPRT H 1P 2 3

O 35 'PAYROLL REGISTER' O *DATE Y 60 O H 1P 2

O 60 Heading1 O H 1P 2

O 60 Heading2 O D N1PN99 2 O TRN_NUMBER 5 O EMP_NAME 24 O EMP_RATE L 33 O TRN_HOURS L 40 O TRN_BONUS L 49

O Pay 60 '$ 0. ' O D N1P 99 2 O TRN_NUMBER 5

O 35 '** NOT ON EMPLOYEE FILE **' O T LR

O 33 'END OF LISTING'

输出规范表描述了哪些字段要输出到QSYSPRT中。

如果1P指示器为ON,那么包含字符串常量‘PAYROLL REGISTER’的标题行及明细信息的标题就会被打印出来。1P指示器是由ILE RPG/400程序在第一程序周期置为ON的。 明细行的打印由1P指示器和99指示器决定,1P指示器为ON时,明细行不打印。当找到对应的雇员记录时,99指示器为OFF,则打印明细行。如果99指示器为ON,那么打印雇员号和字符串常量‘** NOT ON EMPLOYEE FILE**’。

总计行包含字符串常量‘END OF LISTING’。它在程序的最后一次周期时打印。

1.1.5.7 完整的源程序

下图包含了这个程序中使用的所有规范表,也就是应当输入的源程序。

*------------------------------------------------------------------------* * 这个程序生成雇员每周工资的打印输出。

*------------------------------------------------------------------------*

H DATEDIT(*DMY/)

*------------------------------------------------------------------------* * 文件定义 *

*------------------------------------------------------------------------* FTRANSACT IP E K DISK FEMPLOYEE IF E K DISK FQSYSPRT O F 80 PRINTER

*------------------------------------------------------------------------* * 变量说明 *

*------------------------------------------------------------------------* D Pay S 8P 2

*------------------------------------------------------------------------* * 常量说明 *

*------------------------------------------------------------------------* D Heading1 C 'NUMBER NAME RATE H-

D OURS BONUS PAY ' D Heading2 C '______ ________________ ______ _-

D ____ _______ __________'

*

*------------------------------------------------------------------------* * 对文件(TRANSACT)的每个记录。如果找到雇员,计算他的工资且打印详细 * * 信息。

*------------------------------------------------------------------------* C TRN_NUMBER CHAIN EMP_REC 99 C IF NOT *IN99

C EVAL (H) Pay = EMP_RATE * TRN_HOURS + TRN_BONUS C ENDIF

*------------------------------------------------------------------------* * 报表格式:

*

*

*

* -- 如果1P为ON,打印标题行。 * -- 如果找到记录,打印工资详细内容,否则打印例外记录。

*------------------------------------------------------------------------* OQSYSPRT H 1P 2 3

O 35 'PAYROLL REGISTER' O *DATE Y 60 O H 1P 2

O 60 Heading1 O H 1P 2

O 60 Heading2 O D N1PN99 2 O TRN_NUMBER 5 O EMP_NAME 24 O EMP_RATE L 33 O TRN_HOURS L 40 O TRN_BONUS L 49

O Pay 60 '$ 0. ' O D N1P 99 2 O TRN_NUMBER 5

O 35 '** NOT ON EMPLOYEE FILE **'

*

* -- 当LR为ON时,打印'END OF LISTING'。 *


R-P-1-2(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Music Radio经典老歌(1)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: