R-P-1-2

2019-09-01 16:12

1.0 ILE RPG/400简介

在使用ILE RPG/400建立程序之前,你必须对ILE RPG/400运行环境的某些特征有所了解。本部分就应该了解的以下方面提供信息:

1.1 第一章 RPGⅣ程序设计语言概述

本章在一个高层次上对RPGⅣ编程语言与其他RPG编程语言的区别作了介绍。在用RPGⅣ语言编程之前,必须熟悉并适应所有的这些特性。这里所讨论的特性是围绕以下几个方面的:

关于RPGⅣ的更多信息,参见ILE RPG/400参考手册。

1.1.1 RPGⅣ规范表

RPG编码是在一些规范表的格式中写的,每种规范表都有一系列特定的功能。规范表是由许多项组成的,这些项与位置有关。根据项的类型及规范表的类型,每个项必须从一定的位置开始。

有六种类型的RPG规范表。每种规范表都是可选的。这些规范表必须按照以下的顺序输入到源程序中:

1.1.2 编程周期

1、控制规范表,为编译程序提供生成和运行所需信息,例如程序名,日期格式,使用 交替对照序列或文件翻译。

2、文件描述规范表,描述了程序中使用的所有文件。 3、定义规范表,描述了程序使用的数据。

4、输入规范表,描述了程序使用的输入记录和字段。

5、计算规范表,描述了对数据所做的计算及计算顺序。计算规范表也可以控制某些输 入和输出操作。

6、输出规范表,定义了程序使用的输出记录及字段。

编写规范表 程序周期 指示器 操作码

RPGⅣ语言概述

在RPG编程中ILE各组成部分 ILE程序建立策略

当系统处理数据时,它必须按一定的顺序来进行,这个逻辑顺序是由以下几方面提供的:

由编译程序提供的逻辑叫做程序周期。当让编译程序为你的程序提供逻辑时,就叫做编程周期。

程序周期是程序在文件结束前所重复的一系列步骤。根据编写的规范表,程序可能会执行或跳过周期中的某一步。

如果你想用程序周期来控制文件,就不用在源程序里指定从文件中读取记录的相关信息。编译程序会为这些操作及某些输出操作提供逻辑顺序。

如果不想让该周期来控制文件,那么你必须建立文件结束条件,通常是设置最后记录指示器(LR)为ON。

图1显示了在一般的RPG程序周期流程中的一些步骤

1 2 3 开始

7 6 不是 5 4

图1 RPG程序逻辑周期

1、RPG处理所有的标题行和明细行(在输出规范表中17例为H或D)。 2、RPG读下一个记录并置记录标识指示器和控制级指示器为ON。

3、RPG处理总计计算(由控制级指示器L1到L9,或LR指示器或LO项决定)。 4、RPG处理所有的总计输出行(由输出规范表第17例是T标识)。 5、RPG判断LR指示器是否为ON。如果为ON,则程序结束。

6、被选择的输入记录字段由记录转移到处理区,RPG置字段指示器为ON。

7、RPG处理所有的明细计算(该计算规范表7-8列上没有控制级指示条件限制的), 它使用周期开始时记录中的数据。

程序结束 做详细计算 传送字段 LR为ON 写总计输出 写标题和明细行 取输入记录 做总计计算

RPG/400编译程序 程序代码

1.1.2.1 第一周期

通过程序周期的第一次和最后一次与其它周期有所不同,在第一次通过程序周期,读取第一条记录之前,程序要做三件事:

处理输入参数、打开文件、初始化程序数据。

写出由1P指示器(第一页指示器)条件限制的那些记录; 处理所有的标题和明细输出操作。

例如,在读第一条记录前,打印的标题行可能包括常量或页标题信息,或象PAGE和*DATE这样的特殊字段,在第一周期,程序还跳过总计计算和总计输出步骤。

1.1.2.2 最后周期

程序通过周期的最后一次,这时,已没有可用记录,程序置LR(最后记录)指示器和L1到L9(控制级)指示器为ON,程序处理所有的总计计算和总计输出,之后关闭所有文件,程序结束。

1.1.3 指示器

指示器是取值‘1’或‘0’的一个字节长的字符型字段。‘1’为ON,‘0’为OFF。每个指标器都有一个由两个字符构成的名字(例如:LR,01,H3),并且在某些规范表的某些项中仅以这个名字来引用,在另外的一些规范的某些项中用特殊的名字*INxx来引用,其中xx为两个字符的名字。

指示器可以是操作的结果或用来决定(或控制)操作是否执行,指示器就好比程序逻辑流程的开关,根据它们的状态,决定程序运行期间应走的路径。

你可以使用几种不同类型的指示器,每一种表示不同事件。在RPG程序中,指示器可以在规范表中用设置项的方法定义,或由程序周期本身定义。在规范表中定义指示器的位置就决定了指示器的用途。一旦在程序中定义了指示器,它就可以限制或控制计算或输出操作。

RPG程序在程序周期的特定时间设置或重设某些指示器。另外,可以在计算操作中明确地修改指示器的状态。

1.1.4 操作码

RPGⅣ编程语言允许对数据实施不同类型的操作。计算规范表中的操作码指出了要进行何种操作。例如,要读一个新记录,可以使用READ操作码。以下是可用的操作类型的列表。

算术操作 数组操作

指示器设置操作 信息操作

位操作 分枝操作 调用操作 比较操作

初始化操作 消息操作 传递操作 串操作 结构化编程操作 子程序操作 检测操作

数据区操作 说明操作 文件操作

日期/时间/时间标识操作

1.1.5 ILE RPG/400程序的例子

这部分用图讲解了一个使用ILE RPG/400程序处理工资单计算的例子。

1.1.5.1问题提出

一个公司的工资部门要打印出某周公司雇员的工资清单,假设在系统中有两个磁盘文件,EMPLOYEE和TRANSACT。

第一个文件,EMPLOYEE,存储雇员记录,下图显示了雇员记录的格式。

*EMP_NUMBER* EMP_NAME * EMP_RATE * * * * *

1 6 22 27

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..* A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++++* A R EMP_REC

A EMP_NUMBER 5 TEXT('EMPLOYEE NUMBER') A EMP_NAME 16 TEXT('EXPLOYEE NAME') A EMP_RATE 5 2 TEXT('EXPLOYEE RATE') A K EMP_NUMBER

图2雇员物理文件的DDS源语句

EMP_REC

第二个文件,TRANSACT,记录雇员们工作的时间和得到的奖金,下图显示了交易记录的格式。

TRN_REC

* TRN_NUMBER * TRN_HOURS * TRN_BONUS * * * * *

1 6 10 16

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..* A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++++* A R TRN_REC

A TRN_NUMBER 5 TEXT('EMPLOYEE NUMBER') A TRN_HOURS 4 1 TEXT('HOURS WORKED') A TRN_BONUS 6 2 TEXT('BONUS')

图3物理文件TRANSACT的DDS源语句

每个雇员的工资算法是小时数“hours”(取自TRASACT文件)和比率“rate”(取自EMPLOYEE)的乘积并加上取自TRANSACT文件的奖金“bonus”。

1.1.5.2 控制规范表

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

HKeywords++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ H DATEDIT(*DMY/)


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

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

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

马上注册会员

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