文档库 最新最全的文档下载
当前位置:文档库 › op-code

op-code

RPGLE语言中包括H表、 F表、 E表、 I表、 C表、 L表、 O表。
但是现在经常用到的主要是H表、 F、 E表、 I表、 C表。
H表(控制说明表):
提供你的程序和系统的信息,其中可说明程序的名字、程序所用日期的格式和是否应用交替核对排序和文件翻译。
F表(文件说明表):
描述程序应用的所有文件信息,包括文件名、如何应用文件、文件记录的大小、文件应用的输入输出设备、文件是否被外部指示器控制等。
E表(扩展说明表):
要显示一条数据,但数据库中没有,想让其在固定的时间显示而设置的。
例如6.1.1.1画面下“C00031正在切换下一画面”就是通过E表生成的。
I表(输入说明表):
可以定义数据结构,说明输入文件的记录和字段的一些信息。即数据的一种特定指定,定义一个新字段,对数据进行连接及分开时使用。
C表(计算说明表):
描述在数据上作的计算和计算次序,也可以用于控制某些输入输出操作;其信息包括对操作说明控制级和条件指示器,程序中应用的字段和常数,被处理的操作以及处理之后是否设置结果指示器等,这也是我们编码主要处理的部分,这里实现了程序的处理功能。
O表
在文件中O代表只能write;
在打印文件用O且给标注指示器+PRINTER,代表打印。
C表常用语句有:
1. OPEN(打开文件)Open File for Processing
操作码 因子1 因子2 结果字段 指示器
OPEN 文件名 - ER -
明确的OPEN操作打开因子2上说明的文件。因子2中不能说明一个主文件、次文件或表文件。如果没说明指示器,但说明了INFSR,当出现异常/错误时,INFSR自动接收控制。如果没说明指示器,也没说明INFSR,出现错误时,缺省的错误/异常处理接收控制。
如果文件是打开的而后在程序中用CLOSE操作关闭。程序员可以用OPEN操作重新打开文件,文件在程序初始化时被打开,对一个已打开的文件说明OPEN操作,将出现错误。
2. SETGT(设置大于)Set Greater Than
SETGT:文件指针定位操作,所停的位置在等于大于指定键值的后面;
SETGT指的是当前数与当前数下一个数之间的位置。
操作码 因子1 因子2 结果字段 指示器
SETGT 检索自变量 文件名 NR ER -
SETGT操作把文件定位在键字或相对记录号大于因子1中说明的键字或相对记录号的记录上。文件必须是全过程文件。
3. SETLL(设置低界Set Lower Limit) SETLL指当前数的上一个位置
操作码 因子1 因子2 结果字段 指示器
STELL 检索自变量 文件名 NR ER EQ
SETLL操作把文件定位到键字或相对记录号大于或等于因子1中说明的检索自变量的下一个记录。文

件必须是全过程文件。
SETLL:文件指针定位操作,所停的位置在小于等于指定键值的前面。
4. CHAIN(从文件中随机检索Random Retrieval from a File)
操作码 因子1 因子2 结果字段 指示器
CHAIN 检索自变量 文件名或 数据 NR ER -
(N) 格式名 结构
CHAIN操作是从一个全过程文件取一个记录。置一个记录标识指示器为ON(如果在输入规范表上说明),并将该记录的数据放入输入字段中。
5.READ(读一个记录)Read a Record
操作码 因子1 因子2 结果字段 指示器
READ(N) 文件名、记录名 数据结构 - ER EOF
READ操作从全过程文件读当前指向的记录。
6. READC(读下一个修改过的记录)Read Next Changed Record
操作码 因子1 因子2 结果字段 指示器
READC 记录名 - ER EOF
READC操作仅用于一个外部描述的WORKSTN的文件,去取子文件中下一个修改了的记录。因子2是必需的,是一个记录格式名,该记录格式在文件描述规范表上用SFILE键字定义为一个子文件。
对一个多设备文件,从与程序设备相对的子文件记录中读数据。程序设备是在文件规范表上用DEVID键字说明的字段。如果没有这样的说明,从最后成功输入操作中使用的程序设备中读数据。
8. READE(读等于键字的记录)Read Equal Key
操作码 因子1 因子2 结果字段 指示器
READE 检索自变量 文件名、记录名 数据结构 -ER EOF(N)
READE操作从一个全过程文件中读取下一个有序记录,该记录的键字与检索自变量相匹配。如果键字与检索自变量不匹配,75-76列指示器要置为ON,该记录不返回给程序。
9. READP(读前面的记录)Read Prior Record
操作码 因子1 因子2 结果字段 指示器
READP 文件名、记录名 数据结构 -ER BOF
READP操作从一个全过程文件中读前面的记录。
10. READPE(读前面相等的记录)Read Prior Equal
操作码 因子1 因子2 结果字段 指示器
READPE 检索自变量 文件名、记录名 数据结构 -ER BOF (N)
READPE操作从一个全过程文件读取下一个前面的顺序记录。该记录的键字要与检索自变量相匹配。如果记录的键字与检索自变量不匹配,记录不返给程序。
11. WRITE(生成新记录)Create New Records
操作码 因子1 因子2 结果字段 指示器
WRITE 文件名 数据结构 - ER-
WRITE后接程序时会产生一个新记录,但后接的不是程序是,代表的是往文件中写入内容,如DDS中的显示内容等。
12.UPDATE(修改已存在记录)(Modify Existing Record)
操作码 因子1 因子2 结果字段 指示器
UPDATE 文件名 数据结构 - ER -
UPDATE操作用来修

改磁盘更新文件或子文件最后一个锁定的记录。在取得记录的输入操作和UPDATE操作之间不能对文件进行其他操作。
13. PLIST(参数列表 Identify a Parameter List)
操作码 因子1 因子2 结果字段 指示器
PLIST PLIST名
PLIST操作定义了在CALL操作中说明的参数列表的唯一符号名。
可以在计算中任意位置说明PLIST操作,包括总计计算、子程序之间操作。控制级项可以是空格,或L1-L9指示器,LR指示器或L0项来组成程序中相应段内的语句组、PLIST操作后直接跟着至少一个PARM操作,不允许条件指示器。
14. PARM(参数)Identify Parameters
操作码 因子1 因子2 结果字段 指示器
PARM 目的字段 源字段 参数
PARM操作定义了组成参数列表(PLIST)的参数。PARM操作可以出现在计算中的任何地方,只要接在引用它的PLIST、CALL或CALLB操作的后面。PARM语句的顺序必须与被调用的程序或过程要求的顺序一致。可以说明一个PARM语句,对于CALL最多允许255个PARM语句,对于CALLB或PLIST最多允许399个PARM语句。
15.KLIST(定义组合键字 Define a Composite Key)
操作码 因子1 因子2 结果字段 指示器
KLIST KLIST名
KILST操作是一个定义操作,给出KFLD的名字列表,这个列表可以做为一个检索自变量,从有组合键字的文件中检索记录。
16.KFLD(定义键字部分 Define Parts of a Key)
操作码 因子1 因子2 结果字段 指示器
KFLD 键字字段
KFLD操作是一个定义操作,指出一个字段是KLIST名字标志的检索自变量的一部分。
17.IFxx(如果)
操作码 因子1 因子2 结果字段 指示器
IFxx 比较字 比较字
当因子1与因子2之间存在由xx说明的某种关系时,IFxx 操作允许执行一组计算。当“ANDxx”和“ORxx”与IFxx 联用,如果组合操作条件成立,才执行这组计算。
18. ANDxx(与)
操作码 因子1 因子2 结果字段 指示器
ANDxx 比较数 比较数
此操作必须直接跟在一个ANDxx,DOUxx,DOWxx,IFxx,OFxx或WHENxx操作之后。用ANDxx操作可组成DOUxx,DOWxx,IFxx和WHENxx完整的条件。ANDxx操作的优先级高于ORxx操作。
19.ORxx(或)Or
操作码 因子1 因子2 结果字段 指示器
ORxx 比较数 比较数
在DOUxx、DOWxx、IFxx、WHENxx、ANDxx操作中ORxx操作是可选的。ORxx直接跟在一个DOUxx、DOWxx、IFxx、WHENxx、ANDxx或ORxx语句的后面,使用ORxx操作为DOUxx、DOWxx、IFxx和WHENxx说明一个复杂的条件。
20. DOW(Do While)
操作码 因子1 因子2
DOW 空格 表达式
DOW操作执行一组满足给定条件的操作。它的功能与DOWxx操作类似。相应的ENDDO语句标出该组操作的结束。不同的是用扩展因子2上指示器值表

达式来表示一个逻辑条件。当扩展因子2字段中的表达式为真时执行DOW控制的操作。
21. DOWxx(Do While)
操作码 因子1 因子2 结果字段 指示器
DOWxx 比较数 比较数
DOWxx操作执行一组满足给定条件的操作。用DOWxx语句后面的ANDxx或ORxx语句说明更复杂的条件。相应的ENDDO语句标出该组操作的结束。
若DOWXX中XX条件成立,则程序直接执行ENDDO后面的操作。
22.ENDyy(结束一个结构组) End a Structured Group
ENDyy操作结束一个CASxx,DO,DOU,DOW,DOUxx,DOWxx,IF,IFxx或SELECT组的操作。
ENDyy操作如下:
END 结束一个CASxx,DO,DOU,DOUxx,DOW,DOWxx, IF,IFxx或SELECT组。
ENDCS 结束一个CASxx组。
ENDDO 结束一个DO,DOU,DOUxx,DOW,DOWxx组。
ENDIF 结束一个IF或IFxx组。
ENDSL 结束一个SELECT组。
23.CABxx(比较并转移 Compare and Branch)
操作码 因子1 因子2 结果字段 指示器
CABxx 比较数 比较数 标号 HI LO EQ
CABxx操作比较因子1和因子2。如果xx条件为真,程序转移到由结果字段规定的标号相关联的TAG或ENDSR操作。否则,程序继续顺序执行下一个操作。如果没有规定结果字段,则设置相应的结果指示器,程序继续顺序执行下一个操作。
24.CASxx(有条件的激活子程序Conditionally Invoke Subroutine)
操作码 因子1 因子2 结果字段 指示器
CASxx 比较数 比较数 子例程名 H1 LO EQ
CASxx操作允许有条件的选择一个子程序来执行。该选择是基于因子1与因子2之间的关系,用CASxx操作的xx来指定。如果因子1和因子2之间的xx 关系存在,就执行结果字段说明的子程序。
25.SELECT(开始一个选择组)
操作码 因子1 因子2 结果字段 指示器
SELECT
选择组有条件的处理几个交替顺序的操作,它包括:
一个SELECT语句
没有或多个WHENxx、WHEN组
一个可选的OTHER组
ENDSL或END语句
SELECT操作之后,控制转移到满足条件的第一个WHENxx后面的语句,然后执行所有的语句,直到遇上下一个WHENxx操作。控制转移到ENDSL语句(只执行一个WHENxx)。如果没有WHENxx条件满足,并说明了OTHER操作,控制转移到OTHER操作后的语句。如果即没有WHENxx条件满足,也没说明OTHER操作。控制转移到选择组ENDSL后面的语句。
25.TESTB(测试位)Test Bit
操作码 因子1 因子2 结果字段 指示器
TESTB 位数 字符字段 OF ON EQ
TESTB操作把因子2规定的位与结果字段中相应的位比较。结果字段必须是一个一位的字符字段,结果指示器,反映结果字段位的状态。因子2总是结果字段的源位。
26.TESTN(测试数字)Test Numeric
操作码 因子1 因子2 结果字段 指示器
TESTN 字

符字段 NU BN BL
TESTN操作测试一个字符结果字段中是否存在区位十进制数字与空格。结果字段必须是一个字符型字段,要考虑为数字情况,字段中每个字符(除了低位字符外),必须由十六进制F区与数字(0-9)构成,如果它是由一个十六进制的C、D或F区与数字(0-9)构成,低位字符就是一个数字。注意,字符J-R可以出现在字段的低位字符,TESTN 按负数处理,作为测试的结果,结果指示器在下列情况下设置为ON:
多个条件可以用相同的指示器,其中一个条件存在,这个指示器设成ON。
TESTN操作可以在字段使用前确定它的合法性,如果不测试可能会产生不可预料的结果或异常(例如:算术操作)。
27.TESTZ(测试区位)Test Zone
操作码 因子1 因子2 结果字段 指示器
TESTZ 字符字段
TESTZ操作测试结果字段中最左字符的区位部分,结果字段必须是一个字符字段。根据结果设置结果指示器,7必须说明至少一个指示器。字符&、A-I以及其它与字符A有相同区位的字符,指示器设为ON。字符-(负),J-R以及其它与字符J存相同区位的字符使指示器设为ON。有其它区位的字符使指示器为ON。
28.GOTO(goto)
操作码 因子1 因子2 结果字段 指示器
GOTO 标号
GOTO操作允许按程序指示从某个计算操作跳到(或分支到)程序中的其它的计算操作。一个TAG操作给GOTO操作的目的地。TAG可以在GOTO之前或在GOTO之后。
29.ITER(重复)Iterate
ITER操作把控制从DO组内转移到DO组的ENDDO语句。它可以用在DO、DOU、DOUxx、DOW和DOWxx循环中,把控制立即转给循环的ENDDO语句。它使循环的下一次立即执行。ITER影响最内层循环。
如果有条件指示器表示控制可转移到ENDDO语句,而条件指示器不满足,继续执行跟在ENDDO语句后面的语句。
“LEAVE(跳出DO组)”与ITER操作相似,不同的是LEAVE把控制转给ENDDO操作后的语句。
30.LEAVE(跳出一个DO组) Leave a Do Group
LEAVE操作把控制从DO组转给ENDDO操作后的语句。
LEAVE可以用在DO、DOU、DOUxx或者DOWxx循环中,使控制从最内层循环立即转给跟在这层循环的ENDDO后的语句。用LEAVE跳出DO组不增加索引。
在嵌套循环内,使控制只向外转移出一层,LEAVE不能在DO组外部使用。
“ITER”操作与LEAVE操作相似,但ITER把控制转向ENDDO语句。
31.ADD(加 Add)
操作码 因子1 因子2 结果字段 指示器
ADD(H) 加数 加数 和 + - Z
如果说明了因子1,将因子1和因子2相加,结果放在结果字段中。如果没有说明因子1,则因子2的内容与结果字段的内容相加,结果放在结果字段中。因子1和因子2必须是数字型

,它可以是:数组、数组元素、常量、字段、文字、子字段或表。关于ADD操作的规则。
32.SUB(减)Subtract
操作码 因子1 因子2 结果字段 指示器
SUB 被减数 减数 差 + - Z
如果说明了因子1,从因子1中减去因子2,差放在结果字段中,如未说明因子1,从结果字段中减去因子2有内容。
因子1、因子2,必须是数字类型,可以是:一个数组、数组元素、字段、象征常量、文字、命名常量、子字段或表名。
结果字段必须是数字类型,可以是:一个数组、数组元素、子字段、表名。
33.MVR(传送余数)Move Remainder
操作码 因子1 因子2 结果字段 指示器
MVR 余数 +-2
MVR操作把前面DIV操作的余数传送到结果字段中给出的字段里。因子1、因子2必须是空格。MVR操作必须紧接在DIV操作之后做。如果使用条件指示器,一定要保证MVR操作在DIV操作后立即执行,如果MUR操作在DIV之前执行,将出现不可预料的结果,结果字段必须是数字类型,可以是:一个数组、一个数组元素、子字段或表名。
34.Z-ADD(零加)Zero and Add 只能用于数字型字段
Z-ADD :数值型的赋值语句,主要进行初始化(Z-ADD A B相当于 B=A)
操作码 因子1 因子2 结果字段 指示器
Z-ADD 被加数 和 + - Z
因子2与零字段相加,和放在结果字段中,因子1不用,因子2必须是数字型,可以是:数组、数组元素、字段、象征常量、文字、命名常量、子字段或表名。可以说明舍入。
结果字段必须是数字型,可以是一个数组、数组元素、子字段或表名。
35.Z-SUB(零减)Zero and Subtract
操作码 因子1 因子2 结果字段 指示器
Z-SUB 被减数 差 + - Z
从零字段减去因子2,差,也就是因子2的负值,放在结果字段中,可以用这个操作改变一个字段的符号。因子1不用,因子2必须是数字型,可以是一个数组、数组元素、字段、象征常量、文字、命名常量、子字段或表名。
结果字段必须是数字型,可以是一个数组、数组元素、子字段或表名。
36.MULT(乘法)Multiply
操作码 因子1 因子2 结果字段 指示器
MULT(H) 被乘数 乘数 积 + - Z
如果说明了因子1,因子1被因子2乘,积放在结果字段中,确保结果字段足够长能放下结果。用下面规则确定结果字段的最大长度:结果字段的长度等于因子1的长度加上因子2的长度。如果没说明因子1,因子2被结果字段乘,积放在结果字段中。因子1和因子2必须是数字类型,每个可以是:一个数组、数组元素、字段、象征常量、文字、命名常量、子字段或表名,结果字段必须是数字型,而

不能是命名常量或文字,可以对结果说明四舍五入。
37.MOVEL(左传送)Move Left
操作码 因子1 因子2 结果字段 指示器
MOVEL 日期/时间 源字段 目的字段 + - ZB
(P) 格式
MOVEL :移动数据语句, MOVEL A B 是把A的值从左边开始送到B中。
38. MOVEA(传送数组)Move Array
操作码 因子1 因子2 结果字段 指示器
MOVEA 源 目的 + - ZB
MOVEA操作把字符、图形或数字值从因子2传送到结果字段(当传送数字值时,有一些限定),因子2或结果字段必须是数组。如果用下标的数组,因子2与结果字段不能规定为同一个数组。
39.MOVE(传送)既可以用于文字和数字
操作码 因子1 因子2 结果字段 指示器
MOVE 日期/时间 源字段 目的字段 + - ZB
格式
MOVE: 功能与MOVEL类似,区别在于它是从右边开始传送。
40.BITOFF(置位为OFF Set Bits Off)
操作码 因子1 因子2 结果字段 指示器
BITOFF 位数 字符字段
BITOFF操作把在结果字段中由用因子2上确定的位设为OFF(置成0)。如因子2上没有登记则保持不变。
当用BITOFF去格式化一个字符时,应使用BITON和BITOFF两个操作:BITON是使位设成ON(=1),而BITOFF是使位设成OFF(=0)。除了明确地将字符中所有的位都置成ON或OFF,不能得到你想要的字符。
如果想把一种特殊的位模式分配给一个字符字段,可以使用因子2为十六进制文字的“MOVE(传送)”操作。
41.BITON(置位为ON Set Bits On)
操作码 因子1 因子2 结果字段 指示器
BITON 位数 字符字段
BITON操作把结果字段中由因子2确定的位设为ON(置成1)。因子2上未规定的位保持不变。因此,当用BITON去格式化一个字符时,可使用两种操作:BITON和BITOFF。BITON是使位设为ON(=1),而BITOFF是使位设为OFF(=0)。除了明确地将字符中所有的位都置成ON或OFF,不能得到想要的字符。
42.SETON(设指示器ON)Set Indicator On
操作码 因子1 因子2 结果字段 指示器
STEON ON ON ON
SETON操作把说明的任何指示器设置为ON。至少要在说明一个指示器,不允许1P、MR、KA-KN、KP-KY,设置L1-L9指示器不会自动设置低控制级的指示器为ON。
43.BEGSR(子程序开始 Beginning of Subroutine)
操作码 因子1 因子2 结果字段 指示器
BEGSR 子程序名
BEGSR操作指出一个RPGⅣ子程序的开始。因子1是子程序的名。它可用在引用子程序的EXSR操作的因子2上说明,也可在引用子程序的CASxx操作的结果字段上说明,或在一个文件错误子例程的INFSR文件说明键字的项中说明。
控制级项可以是SR或者是空格。不

允许条件指示器。
每个子程序必须具有唯一的符号名字。在因子1上用*PSSR说明这是一个异常/错误子例程,用来处理程序发现的异常/错误。用这个键字仅能定义一个子程序。因子1中的*INZSR说明在初始化时将运行这个子程序,用*INZSR仅能定义一个子程序。
44.EXSR(激活子例程)Invoke Subroutine
操作码 因子1 因子2 结果字段 指示器
EXSR 子程序名
EXSR操作是执行在因子2规定的RPGⅣ子程序。该子程序名必须是一个唯一的符号名,而且必须在BEGSR操作的因子1上出现。EXSR操作可以在计算说明的任何地方编写。它一出现就执行命名的子程序。
子程序中的操作执行以后,执行EXSR后面的语句,除非子程序内的一个GOTO语句给出子程序外的一个标号或该子程序是一个在ENDSR操作的因子2上规定的异常/错误子程序。
因子2中的*PSSR说明执行程序异常/错误子程序。因子2中的*INZSR用于说明执行程序初始化子程序。
45. CALL(调用一个程序 Call a PrograM)
操作码 因子1 因子2 结果字段 指示器
CALL 程序名 参数列表名 - ER LR
CALL操作把控制传给因子2上说明的程序。
因子2必须是一个字符项,规定要被调用的程序名。如果说明了库名,库名后面必须用一个斜线,然后是程序名(例如,‘LIB/PROG’)。因子2必须是一个字段名、文字、命名常量或数组元素,数组元素包含被调用的程序名,也可以是程序所在的库名。如果未说明库名,即用库列表查找程序。
46.FORCE(强制某个文件在下一个周期中读)Force a Certain File to Be Read
操作码 因子1 因子2 结果字段 指示器
FORCE 文件名
FORCE操作允许选择文件,从文件中读下一个记录。FORCE操作仅对主文件或次文件使用。
因子2必须是一个文件名,从其中选择下一个记录。
如果执行FORCE操作,则在下一个程序周期开始时读记录。如果在同一个程序周期内执行多个FORCE操作,最后一个将被忽略。FORCE必须在明细时发出,而不能在总计时发出。
FORCE操作多文件处理方式无效,多文件处理方式是程序正常的选择记录。但是,第一个记录总是用正常方式处理的。其余的记录可以用FORCE操作选择。
47.CAT(连结两个串Concatenate Two Strings)
操作码 因子1 因子2 结果字段 指示器
CAT(P) 源串1 源串2:空格数 目标串
CAT操作把因子2上说明的串连到因子1上说明串的末尾,然后将结果放到结果字段中,源和目标串必须同为一种类型,都是字符或都是图形字符。如果没有说明因子1,因子2连到结果字段串的末尾。
因子1可以是一个串,它可以是:一个字段名、数组元素、命名常量、

数据结构名、表名或文字。如果未说明因子1,则使用结果字段。在下列的讨论中,如果没有说明因子1,则使用因子1变为使用结果字段。
48.SCAN(扫描串) Scan String
操作码 因子1 因子2 结果字段 指示器
SCAN 比较的串:长度基本串:起始 最左边位置 - ER FD
SCAN操作扫描在因子2中指定的串(基本)中有没有因子1中子串(比较串),扫描从因子2中说明的位置开始,直到因子1中说明的比较串的长度为止。比较串,基本串必须是同一类型:字符或图形类型。
49.SUBST(子串)Substring
操作码 因子1 因子2 结果字段 指示器
SUBST 要取的长度 基本串:起始位 目的串 - ER -
SUBST操作从因子2返回一个子串,起始于因子2中说明的位置,用在因子1中说明的长度,取到的串放在结果字段中。如未说明因子1,将用从起始位置开始的长度。对于图形字串,起始位置按双字节计算,基本串和目标串必须是相同类型,同是字符型或图形。
50.CHECK(校验字符Check Characters)
操作码 因子1 因子2 结果字段 指示器
CHECK 比较串 基串:起点 左边的位 -ER-
CHECK操作校验基串(因子2)中的每个字符是否为比较串(因子1)中说明的字符。基串与比较串的类型必须相同,同是字符型或图形。校验从因子2最左边的字符开始并从左到右一个字符一个字符地执行。基串的每个字符都与因子1的字符相比较。如果因子2中有与因子1中相匹配的字符存在,则校验下一基串字符,如果没有找到相匹配的字符,则在结果字段中放置一个整型值来表明不正确字符的位置。
51.IN(检索一个数据区)Retrieve a Data Area
操作码 因子1 因子2 结果字段 指示器
IN *LOCK 数据区名 - ER -
IN操作检索一个数据区,可以指定是否对数据区上锁以防止其它程序的修改、要用IN操作检索的数据区,必须在*DTAARA DEFINE语句的结果字段说明或在定义规范中用DTAARA键字说明。
因子1可以是保留字*LOCK或空格,*LOCK表明数据区不能被其它程序修改或加锁,直到:(1)执行了“unlock”操作(解锁数据区或释放记录);(2)执行无因子1的OUT
52.OUT(写数据区)Write a Data Area
操作码 因子1 因子2 结果字段 指示器
OUT *LOCK 数据区名 - ER -
OUT操作更新在因子2上规定数据区。要规定一个OUT操作的因子2中的数据区,必须保证二件事:
?这个数据区必须在*DTAARA DEFIEN语句的结果字段说明,或在定义规范中用DTAARA键字定义。
?这个数据区必须先用*LOCK IN语句加锁或在定义规范的23列用U说明为数据区数据结构(RPGⅣ语言在程序初始化时隐含地得到数据区

数据结构并加锁)。
53.DSPLY(显示功能)Display Function
操作码 因子1 因子2 结果字段 指示器
DSPLY 要显示的值或信息 输出队列 响应 ER -
DSPLY操作允许程序和程序要求的显示工作站之间进行通讯。因子1和结果字段都必须说明。该操作可以显示一个信息并接收一个响应。
因子1中的值和结果字段常用于生成要显示的信息。如果说明了因子1,它可以是一个字段名、一个文字、一个命名常量、一个表名或一个数组元素,用来生成要显示信息。因子1也可以是*M,后面跟一个信息标识符,指出该信息是从信息文件QUSERMSG中接收的。可以用OVRMSGF命令来使用不同的信息文件。QUSERMSG必须在接收信息的作业所用库列表中的某个库里。
54.EXFMT(写/然后读格式)Write/Then Read Format
操作码 因子1 因子2 结果字段 指示器
EXFMT 记录格式名 - ER -
EXFMT操作是对同一个记录格式先写后读的组合操作。EXFMT仅对外部描述的WORKSTN文件有效,该文件可以定义为一个外部描述的全过程文件或组合文件。
对多设备文件使用EXFMT,请参阅READ和WRITE操作的描述。
55.SORTA(排序数组)Sort an Array
操作码 因子1 因子2 结果字段 指示器
SORTA 数组名
因子2是要排序的数组名,这个数组按升序或降序排列,取决于数组在定义规范表中说明的顺序。如未说明顺序,数组按升序排列,SORTA操作的因子2上不能说明数组*IN。如数组定义为编译时数组或运行前数组,并且数据有交替格式,交替数组不排序,只排序因子2上规定的数组。
56.POST(记入、登记)
操作码 因子1 因子2 结果字段 指示器
POST 程序设备 文件名 INFDS名 - ER -
POST操作把信息放在INFDS(文件信息数据结构)中,这些信息包括:
?RPG I/O规定的文件反馈信息
?文件的打开反馈信息
?文件的输入输出反馈信息和设备相对反馈信息或属性信息
因子1可以说明一个可取得信息的程序设备名。如果因子1说明了一个程序设备,该文件必须定义为一个WORKSTN文件,如果因子1不是程序设备,那么在INFDS中有跟在打开反馈信息后的取得属性信息。可使用长度为10或小于10的字符字段、字符文字或字符命名常量,如果因子1是空格,INFDS将存有在打开反馈信息后的输入/输出反馈信息和设备相对反馈信息。
用因子2说明一个文件名,这个文件的信息记入与文件相对的INFDS中。
57.REL(释放)Release
操作码 因子1 因子2 结果字段 指示器
REAL 程序设备 文件名 - ER -
REL操作释放从因子2说明的WORKSTN文件中释放因子1说明的程序设备。
因子1规定程序设备名

,可以用长度等于或小于10个字符的字段、字符文字或一个命名常量,因子2说明文件名。
可以说明一个指示器,当发生错误时,置为ON。如果没说明指示器,在发生错误时,控制转移到INFSR子程序(如果说明了)或缺省的错误/异常处理程序。
58.RESET(重新设置)Reset
操作码 因子1 因子2 结果字段 指示器
RESET *NOKEY *ALL 结果或变量 - ER -
RESET操作把结构中元素(记录格式、数据结构、数组、表)或变量(字段、子字段或指示器)设为初始值。变量的初始值是程序的*INIT分句结束时所具有的值。这个值可用“INZ{(constant)}”键字在定义说明时设置,也可用初始化子程序对结构或变量赋初值。如果在程序中对一个结构或变量说明RESET,RPG在*INZSR(初始子程序)执行后,在*INIT分句的末尾对结构或变量取瞬时值做为初值。这个值用来做结构或变量重新设置的值。
59.SQRT(求平方根)Square Root
操作码 因子1 因子2 结果字段 指示器
SQRT 值 平方根
SQRT操作求因子2的平方根,平方根放在结果字段。
因子2必须是数字,可以是:一个数组、数组元素、字段、象征常量、文字、命名常量、子字段或表名。
60.TIME(时间)
操作码 因子1 因子2 结果字段 指示器
TIME 数字字段
TIME操作可以在程序运行的任何时间访问系统时间及日期,系统时间用24小时制。
61.XFOOT(计算数组元素总和)Summing the Elements of an Array
操作码 因子1 因子2 结果字段 指示器
XFOOT 数组名 总和 + - Z
(H)
XFOOT把一个数组的元素加到一起,并把结果放在结果字段说明的字段中,因子2中是数组的名字。
如说明舍入,在累加完所有元素之后,把结果写入结果字段之前进行四舍五入。如果结果字段是因子2中说明的数组中的某个元素,用这个元素在XFOOT操作前的值做计算数组总和。
62.MHHZO(高区位到高区位传送)Move High to High Zone
操作码 因子1 因子2 结果字段 指示器
MHHZO 源字段 目的字段
MHHZO操作把因子2中字符最左边字符的区位部分传送到结果字段中最左边的区位部分。因子2与结果字段必须都定义为字符字段。
63.MHLZO(高区位到低区位传送)Move High to Low Zone
操作码 因子1 因子2 结果字段 指示器
MHLZO 源字段 目的字段
MHLZO操作把因子2中最左边字符的区位部分传送到结果字段的最右边的区位部分。因子2必须是字符字段,结果字段可以是字符或数字。
64.MLHZO(低区位到高区位传送)Move Low to High Zone
操作码 因子1 因子2 结果字段 指示器
MLHZO 源字段 目的字段
MLHZO操作把

因子2中最右边字符的区位部分传送到结果字段的最左边的区位部分。因子2可以为数字或字符字段,但结果字段必须是字符字段。
65.MLLZO(低区位到低区位的传送)Move Low to Low Zone
操作码 因子1 因子2 结果字段 指示器
MLLZO 源字段 目的字段
MLLZO操作把因子2中最左边字符的区位部分传送到结果字段的最右边的区位部分。因子2和结果字段可以是数字或字符类型。
66.NEXT(下次输入)
操作码 因子1 因子2 结果字段 指示器
NEXT 程序设备 文件名 - ER -
NEXT操作码对多设备文件从因子1指定的程序设备强制进行下次输入,提供的输入操作是一个周期读或用文件名读,任何一个读操作,包括CHAIN、EXFMT、READ和READL,都受前面NEXT操作的影响来结束。如果在输入操作之间多次说明NEXT,只执行最后一次操作,NEXT操作码仅用于一个多设备文件。
在因子1中,规定含10个字符的程序设备名,也可是表示程序设备名的字符文字或命名常量。因子2规定操作需要的多设备Workstn文件名。
67.ACQ(获取 Acquire)
操作码 因子1 因子2 结果字段 指示器
ACQ 设备名 WORKSTN文件 - ER -
ACQ操作使因子2规定的WORKSTN文件取得因子1上指定的程序设备。设备可用ACQ将它和文件相连。如果该设备无效或已经与文件相连则会产生错误。如果在73和74列上说明了一个指示器,则该指示器置ON。如果没有说明指示器,但有INFSR子例程,则当出现一个错误/异常时,INFSR自动接收控制。如果没有说明指示器,也没有说明INFSR子例程,控制转给缺省的错误/异常处理。
68.DUMP(程序转储输出)Program Dump
操作码 因子1 因子2 结果字段 指示器
DUMP 标识符
DUMP操作提供程序的转储(所有的字段、文件、指示器、数据结构、数组和定义的表)。此操作可独立使用,也可与OS/400检测和调试功能组合使用。为了执行DUMP,不能规定DBGVIEW(*NONE)编译选项,因为在这种情况下,DUMP所需要的信息不包括在目标中。如果选择OPTIMIZE(*FULL)编译选项,转储输出中不能反映优化过程的实际内容。
69.ROLBK(取消)Roll Back
操作码 因子1 因子2 结果字段 指示器
ROLBK - ER -
ROLBK操作:
消除从上一个COMMIT或ROLBK操作以来,所有输出操作对文件的修改,(如果没有前面的COMMIT或BOLBK操作,就从委托控制下开始的操作以来)。释放委托控制下文件的所有记录锁。
70. FEOD (强制结束数据) Force End of Data
操作码 因子1 因子2 结果字段 指示器
FEOD 文件名 - ER -
FEOD 操作对一个主文件、次文件或全过程文件发出数据逻辑结束的信号。FEOD根据

文件和设备类型不同而不同。(关于每个文件类型和设备不同的FEOD说明,见DB2/400数据库程序设计,SC41-----3701)。
FEOD不同于CLOSE操作,它不把设备或文件与程序断开;如果再使用此文件,不用明确的OPEN操作。
可以说明条件指示器。因子2命名了FEOD操作的文件。
为了在FEOD后对该文件作进一步的操作。(例如,READ或READP),必须对此文件重新定位。
https://www.wendangku.net/doc/ac12387828.html,P(比较 Compare)
操作码 因子1 因子2 结果字段 指示器
COMP 比较数 比较数 - ER -
COMP操作比较因子1和因子2.因子1和因子2可以是一个文字、命名常量、字段名、表名、数组元素,数据结构或一个象征常数。因子1和因子2的数据类型必须相同。作为比较的结果,下列指示器置为ON:
High:(71-72)因子1大于因子2
Low:(74-74)因子1小于因子2
Equal:(75-76)因子1等于因子2
必须在71-76列至少规定一个结果指示器。对上面的三个条件不能规定为相同的指示器。为反映比较的结果,结果指示器设置为ON和OFF(对每一轮比较)。
72.DO(do)
操作码 因子1 因子2 结果字段 指示器
DO 开始值 界限值 索引值
DO开始一组操作,并且指出做这组操作的次数。要规定次数,通过说明一个索引字段,一个开始值和一个界限值。ENDDO语句放在该组的末尾。
73.SETOF(设指示器OFF)(Set Indicator Off)
操作码 因子1 因子2 结果字段 指示器
SETOFF OF OF OF
SETOFF操作对71-76列的任何指示器设置为OFF。至少要在71-76列说明一个指示器。不允许1P和MR。把L1-L9设为OFF不会自动地把低控制级的指示器置为OFF。
SUB:数值类型的减操作
ADD:加操作
MULT:乘操作
DIV:除操作
MVR:除之后的取余操作
BEGSR:子过程开始
ENDSR:子过程结束End of Subroutine
EXSR: 调用子过程
EXFMT:画面记录的显示操作命令
WRITE:写(加入)文件记录的操作
UPDAT:更新文件当前记录
DELET:删除文件当前记录
READ:读文件操作(顺序读)
READE:按键值相等顺序读文件的下一条
READP:向前读文件的一条记录
REDPE:按键值相等向前读文件的一条记录
CHAIN:随机检索与键值相同的记录
DOWXX (XX=GT, LT, EQ, LE, GE):当循环(XX=大于,小于,等于,小于等于,大于等于)
DOUXX (XX=GT, LT, EQ, LE, GE):直到循环(XX=大于,小于,等于,小于等于,大于等于)
ITER:跳出本次循环(DO循环),进行下一次循环
LEAVE:结束整个循环,进行循环下面的语句
IFXX (XX=GT, LT, EQ, LE, GE):条件判断(XX=大于,小于,等于,小于等于,大于等于)
SELEC:分支条件开始语句Begin a Select Group
WHXX、WHEN (XX=GT, LT, EQ, LE, GE):各个分支的条件判断语句(XX

=大于,小于,等于,小于等于,大于等于)When True Then Select
OTHER:SELECT部分中所有WHEN条件均不成立时执行的部分(可以省略)Otherwise Select
ENDXX (IF, DO, SL):循环和分支结构的结束标志语句。
SETON/OFF:将指示器的值设置为 1或 0
PLIST:参数列表名称的定义
PARM:各个参数的定义
KLIST:键值列表名称的定义
KFLD:键值中的各个键域的定义。
CLEAR:清除某个字段或数据域的值。Clear
TIME:取得系统当前的日期或时间Time of Day
Call:调用程序
Return:返回
CLOSE:Close Files
COMIT:COMMIT
DEBUG: Debug Function
DEFN: Field Definition
DELET: (Delete Record
DIV: Divide
EXCPT: Calculation Time Output
FREE: Deactivate a Program
LOKUP: Look Up a Table or Array Element
OCCUR: Set/Get Occurrence of a Data Structure
Shut Down :SHTDN
UNLCK: Unlock a Data Area or Release a Record

相关文档