AS400开发入门

更新时间:2023-11-04 18:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

AS/400开发介绍

1.1

AS/400应用开发概述 ........................................................... 错误!未定义书签。

数据描述规范(DDS data description specification) ......... 错误!未定义书签。 DB2 QUERY MANAGER AND SQL DEVELOPMENT KIT支持的结构化查询语言SQL/400 .................................................................................. 错误!未定义书签。 1.1.3 APPLICATION DEVELOPMENT TOOLSET/400(ADTS/400)开发工具包中有PDM、SEU、SDA、RLU、DFU等 .............................................. 错误!未定义书签。

1.1.1 1.1.2

1.PDM(ROGRAMMING DEVELOPMENT MANAGER) ..... 错误!未定义书签。 2.SEU(SOURCE ENTRY UTILITY).................................... 错误!未定义书签。 3.SDA(SCREEN DESIGN AID) .......................................... 错误!未定义书签。 4.RLU(REPORT LAYOUT UTILITY) ................................. 错误!未定义书签。 5.DFU(DATA FILE UTILITY) ............................................ 错误!未定义书签。 1.1.4 QUERY/400 ................................................................... 错误!未定义书签。 1.1.5 CL(控制语言)编程 .................................................... 错误!未定义书签。 1.2 DDS及文件操作说明 ........................................................... 错误!未定义书签。 1.2.1 AS/400数据库结构 ........................................................ 错误!未定义书签。 1.字段及字段定义 ................................................................. 错误!未定义书签。 2.记录及记录格式 ................................................................. 错误!未定义书签。 3.数据库文件及文件说明 ....................................................... 错误!未定义书签。 4.成员 ................................................................................... 错误!未定义书签。 1.2.2 建立物理文件................................................................ 错误!未定义书签。 1.建立一个库TEST一个源文件TESTSRCF ........................... 错误!未定义书签。 2.通过SEU开发工具进行交互式定义源物理文件 .................. 错误!未定义书签。 3.建立物理文件 ..................................................................... 错误!未定义书签。 4.数据输入 ............................................................................ 错误!未定义书签。 5.字段参考文件 ..................................................................... 错误!未定义书签。 1.2.3

建立逻辑文件................................................................ 错误!未定义书签。

1.逻辑文件的结构可以很简单,也可很复杂。主要有四类: .. 错误!未定义书签。 2.简单逻辑文件定义 .............................................................. 错误!未定义书签。 3.建立逻辑文件,可通过CRTLF命令来建立逻辑文件(编译)错误!未定义书签。 1.3 RPG 语言 ........................................................................... 错误!未定义书签。 1.3.1 结构化程序语言 ............................................................ 错误!未定义书签。 1.3.2 操作码 .......................................................................... 错误!未定义书签。 1.算术运算 ............................................................................ 错误!未定义书签。

2.赋值操作 ............................................................................ 错误!未定义书签。 3. 比较操作: ......................................................................... 错误!未定义书签。 4.程序操作: ........................................................................ 错误!未定义书签。 5. 调用和转移操作: ............................................................ 错误!未定义书签。 6. 文件操作:....................................................................... 错误!未定义书签。 7.信息操作: ........................................................................ 错误!未定义书签。 8.说明操作: ........................................................................ 错误!未定义书签。 9.数据区操作 ........................................................................ 错误!未定义书签。 10.其它操作:....................................................................... 错误!未定义书签。 1.3.3

ILE RPG对RPG/400的扩充 .......................................... 错误!未定义书签。

1.ILE RPG基本概念 ........................................................... 错误!未定义书签。 过程(PROCEDURE) ......................................................... 错误!未定义书签。 模块对象(MODULE)........................................................ 错误!未定义书签。 ILE程序 .............................................................................. 错误!未定义书签。 服务程序.............................................................................. 错误!未定义书签。 联编目录.............................................................................. 错误!未定义书签。 对程序和过程的调用 ............................................................ 错误!未定义书签。 活动组(Activation Group).................................................. 错误!未定义书签。 2.表达式的使用及可使用表达式的操作码 .............................. 错误!未定义书签。 表达式中的有效操作符......................................................... 错误!未定义书签。 表达式中结果字段的数据类型 .............................................. 错误!未定义书签。 表达式中的数据精确度......................................................... 错误!未定义书签。 可用表达式的操作码 ............................................................ 错误!未定义书签。 3.内嵌式函数及新增、改变的操作 ......................................... 错误!未定义书签。 内嵌式函数 .......................................................................... 错误!未定义书签。 新增操作码 .......................................................................... 错误!未定义书签。 新增位操作 .......................................................................... 错误!未定义书签。 新增日期、时间操作 ............................................................ 错误!未定义书签。 改变了一些操作码的写法 ..................................................... 错误!未定义书签。 附:RPG III 与 RPG IV 的实体名称长度区别 ...................... 错误!未定义书签。 4.可视化调试(源级调试) ................................................... 错误!未定义书签。 开始调试程序: ................................................................... 错误!未定义书签。 结束调试: .......................................................................... 错误!未定义书签。 调试命令: .......................................................................... 错误!未定义书签。

1.4 举例..................................................................................... 错误!未定义书签。 1.4.1 学生成绩管理................................................................ 错误!未定义书签。

1.建库、源文件、物理文件成员、 逻辑文件成员并编译成员. 错误!未定义书签。 2.分别用DFU、SQL、和通过RPGLE程序对学生学籍进行增加、修改、查询、删除记录操作.............................................................................. 错误!未定义书签。 3.编写程序实现某年段学生成绩的基本管理 ........................... 错误!未定义书签。

1.1 AS/400应用开发概述

数据描述规范(DDS data description specification)

AS/400的操作系统OS/400提供一种描述数据属性的方法DDS,它可以在程序外部方便、有效地对数据属性进行描述。

AS/400有两种定义数据的方法:

(1)程序描述文件:文件在记录的描述仅包含一个记录名和记录长度,任何程序使用这种方式描述的文件必须为记录中的每个字段提供字段级属性(字段名、数据类型、字段长度等)定义,此中类型文件不常用

(2)外部描述文件:文件包含记录的详细字段描述和有关文件如何被访问的信息,在程序中只要指明该文件为外部描述文件即可,当程序目标建立时,编译器自动从文件中抽取信息到程序中,且转换为高级语言适合的语法,它的显著特点之一是克服了程序描述文件的缺点,通过文件的记录字段仅一次的说明,可定义多种访问路径,多个程序使用。

DB2 QUERY MANAGER AND SQL DEVELOPMENT KIT支持的结构化查询语言SQL/400

SQL/400是SQL的DB2/400实现,可以交互式地输入大部分SQL语句或把它们嵌入到高级语言(RPGLE、COBOL、CLE等)程序中,替代高级语言内置的读、写和修改等指令。SQL/400主要由以下部分组成:

(1)SQL运行支持程序,提供对SQL 语句的分析及对运行任何SQL语句的支持功能,是OS/400的一个部分,它允许含有SQL语句的应用程序在没有安装DB2 QUERY MANAGER AND SQL DEVELOPMENT KIT特许程序的系统上运行。

(2)SQL预编译程序,处理嵌入SQL语句的应用程序

(3)SQL交互式接口,支持用交互式建立和运行SQL语句 (4)DB2 QUERY MANAGER FOR AS/400,提供菜单、填空式提示的交互式接口,允许建立、增加、维护数据,和运行报表

APPLICATION DEVELOPMENT

TOOLSET/400(ADTS/400)开发工具包中有PDM、SEU、SDA、RLU、DFU等

1.PDM(PROGRAMMING DEVELOPMENT MANAGER)

可以用来处理源代码、对象和库。为程序员建立源文件成员、访问SEU和许多其他有用的工具提供方便。

STRPDM:直接到PDM菜单

WRKLIBPDM:可以指定操作哪一个库或对当前库列表进行操作 WRKOBJPDM:指定操作某一库下的所有对象(可按名称、类型选取) WRKMBRPDM:指定操作某一库下某一源文件下的所有或部分成员

2.SEU(SOURCE ENTRY UTILITY)

是一个全屏幕编辑工具,可以建立和编辑源文件成员,当启动时,能够输入新的源语句,修改、删除、复制、移动已存在的源语句,具有语言相关提示和语法检查功能,且具有分屏编辑/浏览功能。

STRSEU:可以对原有成员进行编辑或建立新成员,对原有成员进行编辑也可通过在WORK WITH MEMBERS USING PDM(WRKMBRPDM)屏幕上使用选项2(EDIT)功能来实现,当然,建立新成员也可以通过在WORK WITH MEMBERS USING PDM(WRKMBRPDM)屏幕上使用F6(CREATE)功能键来实现。

3.SDA(SCREEN DESIGN AID)

可用来交互式设计、创建和维护应用屏幕,包括显示文件和菜单,且可以将用户设计的屏幕规范地自动转换成DDS源代码,简化了菜单和显示文件的创建。

STRSDA:可以进入屏幕和菜单的编辑画面,对原有屏幕编辑也可通过在WORK WITH MEMBERS USING PDM(WRKMBRPDM)屏幕上使用选项17(CHANGE USING SDA)功能来实现,

4.RLU(REPORT LAYOUT UTILITY)

可用来交互式定义打印报表的格式分布,建立打印文件,且可以将用户设计的报表格式分布规范地自动转换成DDS源代码,简化了报表的设计和修改,使用它可以在屏幕上直观地设计打印报表。

STRRLU:可以进入报表编辑画面,对原有屏幕编辑也可通过在WORK WITH MEMBERS USING PDM(WRKMBRPDM)屏幕上使用选项19(CHANGE USING RLU)

功能来实现

5.DFU(DATA FILE UTILITY)

能够快速定义、创建面向数据录入、查询或文件维护的DFU程序,而不需要编程。对开发应用建立测试数据库尤其有用。

STRDFU:显示DFU菜单

DLTDFUPGM:删除DFU程序和文件

CHGDTA:运行DFU程序

DSPDTA:运行DFU程序,但不能修改文件中的数据记录

UPDDTA:使用临时的DFU程序更新文件,可通过在WORK WITH MEMBERS USING PDM(WRKMBRPDM)屏幕上使用选项18(CHANGE USING DFU)来实现,它可以进行查询、增加、修改、删除记录的操作。该功能最常用。

QUERY/400

QUERY/400特许程序是一个非常有用和容易使用的决策支持工具,可用来获取外部描述数据库文件信息。它允许使用单个文件或联结最多32个不同文件的数据,产生的报表可以打印、屏幕显示或存放在新的数据库文件中,功能强大。 STRQRY或GO QUERY命令,可以进入QUERY菜单,主要功能都有相应选项和帮助进行逐步引导完成。

CL(控制语言)编程

AS/400的所有系统功能都可以通过控制语言(CONTROL LANGUAGE,简称CL)调用,单个控制语言就是一条CL命令和它的参数。可以在命令行直接执行或输入到源文件成员中(CL程序或CLLE程序)经编译生成目标运行。注意,有些CL命令只能在程序中实现其功能(如,MONMSG等)。系统为所有CL命令提供提示和帮助,并且多数参数有缺省值。 其实,一个CL程序就是一组CL命令,其目标可以交互式或批处理环境下运行。

通过CL程序可以简化操作,控制工作流程,设置作业运行环境等。在应用中,CL程序一般作为

主控程序来控制应用程序的执行顺序和为应用程序完成一些首尾的任务(如文件覆盖、定位目标等),它可以管理程序执行中出现的以外(可根据需要是饶过还是进行修正)。此外,CL程序还能实现算术/逻辑操作,可以与用户或其他程序通讯,可以访问单个记录格式的数据库文件或显示文件。CL程序也有缺点,不能增加或修改数据库文件中的记录,不能使用打印文件或ICF文件等。

1.2 DDS及文件操作说明

利用DDS可以描述物理文件、逻辑文件、显示文件、打印文件和ICF文件,重点介绍

描述物理文件和逻辑文件

AS/400数据库结构

三级存储结构

库(LIBRARY) —— 数据库文件(FILE) —— 成员(MEMBER)

一级目录 —— 二级目录 —— 三级目录

1.字段及字段定义

字段是用来描述某一属性的一组值;字段定义是对字段属性的说明

2.记录及记录格式

记录是把一组字段放在一起命名,用来说明某一事物;记录格式是对记录中所有字段的简单说明以及对各字段排序的说明

3.数据库文件及文件说明

文件是已命名的一组记录,文件说明是对文件所有的记录格式和存取路径的说明,数据库文件分为数据文件和源文件,数据文件就是程序中使用的物理文件和逻辑文件。

A.物理文件(*FILE,PF-DTA):在SQL中称做表(TABLE),含有系统实际存储的数据,每个物理文件只有一个固定长度的记录格式。物理文件可以指定键值来规定其顺序存取路径,而不按记录写入时的物理顺序操作。 B.逻辑文件(*FILE,LF):在SQL中称做表(VIEW),它不含有实际数据,依附于物理文件,可以描述一个或多个物理文件的记录(JOIN逻辑文件)。

逻辑文件功能有: 改变物理文件中定义的字段属性(如字段名和字段排列顺序)

提供记录的逻辑顺序

可以只选择物理文件中部分字段进行显示或修改 对字段值进行选择记录进行操作 从物理文件的字段基础上演绎新字段 联合多个物理文件

C.源文件(*FILE,PF-SRC):是系统用来建立源程序(RPGLE、CLLE、C)或源物理文件(PF)等目标的源说明

4.成员

分为数据文件成员和源文件成员。

A.数据文件成员,数据文件中的记录可以按某一规则分为多组,每个成员可以存储其

中的一组记录,成员就是数据文件的子集,如一家省级银行将各地区分行的存款记录按多个成员存储。一个文件至少有一个成员,建立数据文件时,系统自动产生一个初始成员(名字和数据文件一样),高级版本OS对文件成员个数不加限制(*NOMAX)。 B.源文件成员,就是源程序、源物理文件、源逻辑文件等集合,可以将大型应用系统的一个模块的相关源文件成员存放在一个源文件里。

建立物理文件

1.建立一个库SGMSRC、两个源文件RPGMSCF和RDTASCF,主要用于存放应用系统的源,再建一个库SGMOBJ,用于存放目标

系统集成标准:

1.库:系统名+库属性,假如有学生成绩管理系统名为SGM,存放该应用系统的源程序库就命名为SGMSRC,存放该应用系统目标的库可命名为SGMOBJ。

2.源文件名:一般情况可按模块名(定义为2位)来区分,而我们要举的例子比较小,直接按存放成员的类型来区分,比如,存放程序的源文件叫R+PGM+SCF,存放物理文件和逻辑文件定义的源文件叫R+DTA+SCF

3.物理文件/逻辑文件名:物理文件一般是按该物理文件的用途来命名的,比如:学生成绩表命名为STGD+A,‘A’含义是主文件(或数据文件),逻辑文件是依附于物理文件,一般通过将A改为L,再加序号以区分哪个逻辑文件,逻辑文件不宜太多,否则,会影响数据操作效率,如针对学生成绩表,其中一个逻辑名为STGDL1

4.程序名:一般情况下,是模块名(两位)+交易码(4位)+程序类型标识(一位,‘R’:RPGLE,‘C’:C,C或CL,‘R’:报表等)组成,比如一个应用系统的一个模块的所有程序存放在源文件RCDSCF下,其中一个交易程序名字可命名为CD0400R,‘CD’为模块名,‘0400’为交易码,‘R’代表RPGLE程序

CRTLIB LIB(SGMSRC) TYPE(*PROD)

CRTSRCPF FILE(SGMSRC/RPGMSCF) IGCDTA(*YES) TEXT(‘PROGRAM SRCF

FOR STUDENT’) CRTSRCPF FILE(SGMSRC/RDTASCF) IGCDTA(*YES) TEXT(‘DATABASE SRCF FOR STUDENT’)

CRTLIB LIB(SGMOBJ) TYPE(*PROD)

2.通过SEU开发工具进行交互式定义源物理文件

DDS使用一种位置相关的格式。在一个DDS行中对物理文件有效的位置是:

6:FORM的类型(A=DDS)

17:NAME的类型(R=RECORD NAME ,K=KEY FIELD NAME,BLANK=FIELD NAME)

19-28:NAME(类型由17列决定的名称,如记录名、字段名、键字段名)

29:参照定义(R表示只有当17列为空,19-28非空时有效,表示当前字段是一个参照字段,BLANK=当前字段非参照字段) 30-34:字段长度 35:数据类型

36-37:小数点位置定义(0-31有效),当19-28列定义为非数字型字段时,本拦应为空 45-80:功能定义,用于定义各种关键字

关键字的使用大大丰富了DDS的文件定义。分为 文件级,位于记录名之前,主要包括

REF:指定被参考文件 UNIQUE:键值唯一

FIFO,FCFO,LIFO:相同键值记录的排列规则,有UNIQUE时,就不能用 记录级,位于记录名和第一个字段名之间,主要有

FORMAT:共享其他文件的记录格式

TEXT:记录格式说明

字段级,关键字位于一个字段名和其下一个字段名或第一个关键字段名之间,包括 COLHDG:为数据库文件中字段显示和打印用

REFFLD:参考一个已定义的字段,允许字段长度和参考的字段不同,可用+N或-N来改变字段长度

关键字段级,关键字位于第一关键字段名和其下一个关键字段名或成员尾之间,主要包括

DESCEND:按降序排列,可用于字符或数值型键字字段 ABSVAL:按绝对值顺序排序

3.建立物理文件

定义好源物理文件后,可以建立物理文件,来对数据进行承载。

CRTPF SGMOBJ/DBREF SGMSRC/RDTASCF DBREF

CRTPF SGMOBJ/STGDA SGMSRC/RDTASCF STGDA 如果建立物理文件时,要求有多成员,则要修改MAXMBRS参数值,可以指定为无限定(*NOMAX)

若要增加新成员,可以通过命令ADDPFM 命令完成,也可通过GO CMDMBR命令,再选4来完成。

4.数据输入

通过交互式SQL的INSERT 命令 用工具DFU的UPDDTA功能 通过程序输入

通过CPYF命令从其它数据文件中拷贝数据

5.字段参考文件

相当于数据字典,一般字段参考文件是没有成员和关键字定义的。

建立逻辑文件

1.逻辑文件的结构可以很简单,也可很复杂。主要有四类:

A.简单逻辑文件,把单个物理文件或表映射到逻辑记录定义

B.多重格式逻辑文件,允许对几个物理文件存取,每个物理文件都有自己的记录格式

定义。这种逻辑文件只能通过DDS创建,不能用SQL创建。 C.联接逻辑文件,从多个物理文件或表、逻辑文件或视图中组合字段,给出单个记录定义

D.SQL视图类似于联接逻辑文件,和联接逻辑文件的区别主要是实现方法不一样,联接文件对每次联接进行维护或共享存取路径,而SQL视图在运行时通过查询定义模板找到需要的存取路径

2.简单逻辑文件定义

简单逻辑文件定义和物理文件定义类似,只是逻辑文件在DDS的关键字中增加一些与关系操作有关的内容:

记录级

PFILE:定义包含逻辑文件处理数据的物理文件 字段级

RENAME:更改一个字段的名称(其他属性不变) CONCAT:可以将物理文件的多个字段合并成逻辑文件的一个字段,例通过CONCAT(STRYR STRMO STRDA)可以将三个字段合并成一个新的字段SEQDAT。 SELECT(选择)/OMIT(跳过)级关键字

当DDS表格中的第17列为S或O时,就说明该行第19-28位置是SELECT/OMIT

字段名,该行的关键字就是SELECT/OMIT级关键字,该关键字具备筛选记录功能 ALL:选择或排除不满足以上任何S/O条件的记录

COMP:字段与字段或某值比较

VALUE:字段是否存在于一值列表中 RANGE:字段是否在一个指定范围内

3.建立逻辑文件,可通过CRTLF命令来建立逻辑文件(编译)

CRTLF SGMOBJ/STGDL1 SGMSRC/RDTASCF STGDL1

1.3 RPG 语言

OPM (原始程序模型)RPG语言是一种定格式、面向过程、结构化开发语言,它的优点主要体现在可以很方便的对数据库文件进行操作,而且效率非常的高,它是AS/400上一种最主要的开发语言之一。

ILE(集成语言环境) RPG/400,集成化语言环境下的RPG具有更强功能、编程变得更简便,ILE一组新的工具和相关的系统支持,是为在AS/400系统上增强程序开发而设计的,只能由通过新ILE系列的编译器产生的程序开发这种新模型的能力,该系列包括ILE RPG/400、ILE COBOL/400、ILE C/400、ILE CL。把OPM RPG 转换成ILE RPG可以通过命令CVTRPGSRC来实现。

结构化程序语言

RPG程序可以用工具SEU来编辑,它的格式固定,大致可以分为

条件指示器 操作数1 操作码 操作数2 结果 结果指示器

RPG里的三种程序结构

1.顺序操作:流水作业,没有程序语句转移 2.条件转移操作

A.IF ELSE ENDIF结构 ILE RPG IF A X B AND AXC 。。。 ELSE 。。。 ENDIF OPM RPG A IFXX B A ANDXX C 。。。 ELSE 。。。 ENDIF XX:EQ、HT、NE等 B.SELECT WHEN OTHER ENDSL结构 OPM RPG SELEC A WHXX B( 。。。 OTHER 。。。 ENDSL XX:EQ、GT、LT、NE等 ‘X’:=、>、<、<>等 ILE RPG SELECT WHEN AXB 。。。 OTHER 。。。 ENDSL ‘X’:=、>、<、<>等

ENDIF

读取当前记录位置的上一条记录 READP FACNO IFEQ '1' MOVE GOTO ENDIF IFEQ

'FER0002' ENDPGM '1'

遇到文

N2N3 8899 纪录被

J. READP:

*IN88

WWMGID

*IN99

件头

(RPG IV)或 IF %BOF(到文件末)

MOVE GOTO

'FER0003' ENDPGM

WWMGID

ENDIF

K. SETLL: 从文件第一条记录开始逐条查询,直到找到第一条符合条件的记录,此记

录的键字大于或等于FACTOR1指定的键值。但只是将文件指针指向此记录的上方,并不读出(可以使用READ读下一记录)。

L. SETGL: 从文件第一条记录开始逐条查询,直到找到第一条符合条件的记录,此记录的键字大于FACTOR1指定的键值。但只是将文件指针指向此记录的下方,并不读出(可以使用READP将上一条记录读出)。

例如:

有一物理文件:学生成绩表,记录格式名为RSTT,字段属性是,成绩GRADE(3S0)、姓名NAME(10 O),成绩是键值,储存数据如下:

成绩(K) 姓名

80 85 88 88 92

张一 张二 张三 李一 李二

0

显示将成绩大等于90的学生姓名(结果只有显示李二) MOVE 90 CJ 3

CJ

SETLL READ DO IF LEAVE ENDIF DSPLY READ ENDDO

RSTT

RSTT(记录格式名) RSTT 1 %EOF

GRADE

显示将成绩小等于85的学生姓名(结果显示张二和张一) MOVE 85 CJ 3 0 CJ SETGT RSTT(记录格式名)

READ DO IF LEAVE ENDIF DSPLY READP ENDDO

P

RSTT

1 %BOF

GRADE

RSTT

注意:SETLL与SETGT只是对文件记录进行定位,并没有读记录,必须结合使用READ或M. UNLCK: 解除记录锁

READP等读记录语句一起使用,使用的文件必须带键值

UNLCK FIDNO(记录格式名) N. UPDATE: 更新数据库记录

ACKEY *IN99

EVAL ACKEY = 10 CHAIN FACNO EVAL UPDATE IFEQ

ACNM ='Leon Davis' FACNO(记录格式名) '1' 更新文件失败

%ERROR 'UDR0001' ENGPGM

WWMGID

99(N2)

(RPG IV)或 IF EVAL O. WRITE:

*IN99

GOTO ENDIF

写文件记录 EVAL WRITE IFEQ

FACNO(记录格式名) '1'

%ERROR 'WTR0001' ENGPGM

99(N2) 写文件失败

(RPG IV)或 IF

EVAL GOTO

WWMGID

ENDIF

注意:在RPG中使用文件操作一定要注意控制好文件定位操作和锁表问题,不要在一个

程序链中同时打开某一个表进行修改。

7.信息操作:

1. DEBUG: 用来在有问题的程序中显示所有状态为'1'的指示器 2. DUMP:

在调试程序的时候,可以将程序运行到当前位置时所有变量和指示器的值

打印在一个spool file 中。

3. TIME: 取系统时间

TIME TM_VAR(6或12位数字的数字型字段名)

4. DSPLY: 允许程序与系统控制台之间或和程序要求的显示工作站之间进行通讯。

VAR1

DSPLY

VAR1 DSPLY *QSYSOPR RESP_VAR

VAR1 DSPLY RESP_VAR 注释:如果是个批作业那么因子2的默认值是QSYSOPR(系统操作员),如果是个交互式作业,那么作业2的默认值是*EXT(信息发往请求者)

8.说明操作:

1. DEFN/DEFINE:数据区(data area):在因子2说明一个数据区的外部名或*LDA说明为一个局部数据区,如果在因子2为空,则结果字段上登记的是该数据区的外部名

*LIKE DEFN WWACNO XXACNO(字段名)

*NAMVAR

DEFN

TOTAL

TATNET(可以是字段名、数据结构名、 TOTAL(外部定义数据区)

数据结构子字段等) *NAMVAR DEFN

2. KLIST & KFLD:

ACKEY

定义复合键字,用于复合键字逻辑文件。

ACNO

KLIST KFLD

KFLD ACSN

3. PLIST :表示一个参数列表,如果参数列表是一个被调用的输入参数列表,因子1必须是*ENTRY

PARM : 定义组成一个参数列表的参数,可以随在一个PLIST和CALL之后 WWPARM PLIST

PARM PARM CALL PARM PARM

PGMA

ACNO ACSN

P1 P2

9.数据区操作

1.IN :检索一个数据区并可选择允许你指定是否允许其它的程序更新这个数据区,IN检索的数据区,必须在*NAMVAR DEFN 语句的结果字段上说明。

当因子1是保留字*LOCK时,该数据区已上锁,直到执行一个UNCLK操作或执行因子1上为空的OUT操作或程序结束情况之一方可解琐。

当因子2是保留字*NAMVAR时,检索程序中定义的所有数据区,当遇到错误时,如结果指示器未指定,可以说明异常情况/程序例外错监控子程序(*PSSR)来处理。 2.OUT :更新一个数据区更新之前,必须先做两件事,其一,该数据区必须在一个*NAMVAR DEFN语句的结果字段上说明,其二,该数据区必须用一个*LOCK IN语句预先上锁。它的因子1是*LOCK时,更新之后保留上锁状态,因子1是空时,更新之后不上锁。当因子2是局部数据区时,因子1必须是空。当因子2为保留字*NAMVAR时,程序中定义的所有数据区都被更新,更新发生错误时,处理方式同IN操作。

C *DTAARA DEFINE SSCDTAARA DTAARA 5 C *LOCK IN DTAARA

C DTAARA DSPLY C EVAL DTAARA = %SUBST(DTAARA:1:3) C DTAARA DSPLY C C OUT DTAARA

3.UNLCK/UNLOCK:解锁一个数据区,一个数据区可以和UNLCK操作联用之前,它必

须在一个*NAMVAR DEFN语句的结果字段上说明,因子2必须是一个数据区名或保留字*NAMVAR,当因子2是NAMVAR时,程序中所有上锁的数据区都被解锁。

UNLOCK UNLOCK

DTAARA1 *NAMVAR

10.其它操作:

1.LOKUP/LOOKUP:

SRCHNO LOOKUP ARR 11( = EQ)

在数组ARR中查找等于SRCHNO的元素,找到时结果指示器为ON 2.XFOOT: 求一个数组中所有元素的和 XFOOT ARR SUM 3.SORTA:

给一个数注重的元素排序

SORTA ARR

4.MOVEA: 数组传递

MOVEA *BLANKS ARR(X)(从第X元素开始,ARR的其余部分是空格) MOVEA *ALL'XY' ARR(X)(从第X元素开始,ARR的其余部分给‘XY’)

MOVEA ARRX 数组ARRY的自第3个元素起的元素) MOVEA MOVEA 的自第1个元素起的元素)

MOVEA FLDA

ARRY(3)(自数组ARRX第一元素起传递给

ARRX ARRY

ARRX(3) ARRY(自数组ARRX第3元素起传递给数组ARRYFLDA

ARR

ARR

1234567 传送前 |986|543|210|ABC|

1234567 传送后 |123|456|710|ABC|

ARR FLDA ARR

FLDA

MOVEA

|01|0A|02|0B|O3|0C| 传送前 01OA |01|0A|02|0B|O3|0C| 传送后 02OB

ILE RPG对RPG/400的扩充

1.ILE RPG基本概念 过程(PROCEDURE)

是一组字包含的高级语言语句的集合,它执行特定的任务然后返回调用者。MODULE中的PROCEDURE已经可以被其他任何ILE程序共享,当然,作为ILE语言之一,ILE RPG也可以调用任何ILE子程序(包括ILE RPG本身)。

模块对象(MODULE)

是不可运行的对象,在系统中使用符号为*MODULE来代表模块对象。它是建立可运行ILE对象的基本构件块。我们也可以使用CRTRPGMOD命令将一个程序编译成MODULE。

我们还可以将一个或者多个MODULE共同编译成一个服务程序,供其它应用系统调用。当然,我们可以使用其它第三方厂商提供的服务程序,或者将我们自己的程序编译成一个服务程序作为第三方产品提供给客户。这种服务程序实际上就是一个函数库。在AS/400中,系统API也都是通过这种方式提供的。

PROCEDURE和MODULE都是ILE和OPM之间的显著区别。

ILE程序

可运行的对象,在系统中使用符号为*PGM来代表ILE程序对象(和OPM RPG一样)。

编译RPGLE程序有两种方式:

1.对于单独一个RPGLE程序,我们可以使用命令CRTBNDRPG(与在PDM中使

用14同)将一个单独的程序变成一个可执行程序。这个命令实际上实现将RPGLE程序编译成一个临时的MODULE然后再将它编译成一个可执行程序。

2.我们也可以先使用CRTRPGMOD命令将一个程序编译成MODULE,然后再使用CRTPGM将这个MODULE和其他MODULE一起编译成一个可执行程序。使用这种方法的好处就是可以利用其它MODULE中的子程序。当然这个程序自己的子程序也可以被其他的ILE程序共享。

服务程序

是一个由可运行的过程和可用数据项组成的集合。其他的ILE程序和服务程序可以直接地存取这些过程和数据项。在许多方面,服务程序类似于子程序库或过程库。

本文来源:https://www.bwwdw.com/article/nrb2.html

Top