AS400培训-RPG

合集下载

AS400_RPG入门

AS400_RPG入门

一:RPG介绍RPG程序的特点:1.程序的编写对于每一个位置都有明确的定义,所以程序的编写必须在指定的位置开始。

通过使用ILE工具可以进行一些方便的输入。

2. RPG程序的设计针对每一部分都有严格的要求,有相应的规格说明,他们包括a) 配置规格说明(Control Specifications):主要规定了程序的命名,日期格式等信息。

b) 文件描述说明(File Description Specifications):对程序使用到的文件的说明c) 定义说明(Definition Specifications):主要对程序使用的数据进行说明。

d) 输入说明(Input Specifications):主要对文件输入数据进行说明。

e) 计算说明(Calculation Specifications):主要对数据计算和计算顺序的说明。

f) 输出说明(Output Specifications):主要针对数据的输出记录和字段的说明。

g) 子程序说明:包括有三种,对子程序的各种进行进行了定义说明。

3.指示器(Indicators)通常是一个字节,被设置为‘0’或者‘1’,他主要作为程序操作的结果或者进行操作的条件。

好像程序的逻辑开关,决定着程序的流程。

指示器必须在定义规范中进行定义。

RPG VI也有一些系统的指示器,他们一般是两个字符的变量,如LR等。

指示器可以在程序的任何地方使用,也可以在程序中修改他的值。

4.操作代码相当与汇编语言的命令一样,有RPG程序提供一套完整的操作代码,比如读一条数据使用READ ,RPG程序对操作代码进行了分类,比如字符串操作符,数组操作符等。

5.定义描述文件a) 文件服务是程序和IO设备的连接。

系统里的每一个文件都有相应的描述文件,对文件的特性和数据的组织形式进行描述。

如果在程序中要使用IO操作,必须要指定一个描述文件,对IO的设备进行描述。

对于文件的类型,系统支持以下几种:1. 数据库文件(database files):对数据进行持久存储。

AS400_初级培训

AS400_初级培训

一.AS/400简介 (3)二.开发环境和开发工具介绍 (4)1.AS/400环境简介 (4)1.1三级存储结构 (4)1.2 如何建立库、文件和成员 (7)2、ILE简介 (8)3、AS/400开发工具介绍 (9)三.DDS介绍和实例说明 (10)1、AS/400的DDS常用类型介绍 (11)2、AS/400物理文件和逻辑文件介绍 (11)3、AS/400如何使用DDS来创建物理文件和逻辑文件 (11)4、AS/400如何使用DDS来创建显示文件 (16)四.RPG介绍和实例说明 (20)1、RPG的基本结构介绍 (20)2、F段介绍 (21)3、D段介绍 (23)3.1 单独变量的定义 (23)3.2 结构变量的定义 (24)3.3 常量的定义 (24)3.3 数组的定义 (24)4、C段介绍 (25)4.1 概念 (25)4.2 程序入口的定义 (27)4.3 程序的结束 (27)4.4 变量的赋值 (27)4.5 子过程的定义 (28)a)概述 (28)b)子过程的建立 (28)c)子过程的调用 (29)4.6 程序过程控制(判断、循环) (30)a) 判断 (30)b) 多重判断 (30)c) 循环 (30)4.7 数据文件的操作 (31)a) 文件相关操作 (31)b) 记录定位相关操作(游标) (31)c) 记录更新相关操作 (33)5、一个程序的实例及分析 (34)6、在RPG中嵌入SQL (48)五.CL程序的开发介绍 (48)1、CL 命令的介绍 (48)2、CL 程序 (49)3、CL 程序实例 (50)六.程序间的互相调用 (53)1、RPGIV之间的调用 (53)2、CLP与RPG之间的调用 (55)AS/400 初级培训讲义目的:希望通过短期培训,让有编程基础的技术人员,了解AS/400的一些基本概念和操作方式。

了解AS/400的代码编辑方式和基本概念一. AS/400简介AS/400是IBM于1988年推出的一种商用小型机,它是在 IBM System/32,System/34,System/36,System/38这个系列的基础上发展而来的。

AS400开发的简单教程

AS400开发的简单教程

AS400开发的简单教程AS400的开发技术:RPG,DDS,CL。

RPG:1.RPG;2.RPGLE;3.RPG (Free)DDS:1.PF;2.LF;3.DSPF;4.PRTF开发技术介绍RPG:H表:控制规范,提供生成和运行程序的信息。

例如:H DATFMT(*MDY/)F表:文件描述规范。

以F开头,包括程序描述文件和外部描述文件。

文件的打开方式:I,O,U,C。

I:只读方式打开,O:是以输出方式打开,U:是以更新的方式打开,C:是以组合的方式打开(包括输入输出)。

程序描述文件:需要在22列位置:加‘F’。

外部描述文件:需要在22列位置:加‘E’。

并要写明外部文件所在设备(如磁盘文件:DISK),注意:RPG和RPGLE的定义位置不一样例如:F FILENAME IF E K DISK后面可以加上KeyWord例如:F FILENAME IF E K DISK RENAME(R1:R2)K表示此文件用KEY键值检索记录DSPF文件(画面文件)的定义:F DSPFILE CF E WORKSTNPRTF文件(打印文件)的定义:F PRTFILE O E PRINTERD表:定义规范。

以D开头。

可以定义变量,常量,数组,数据结构等常量的定义:定义类型为C变量的定义:定义类型为S数组的定义:关键字可以指定DIM(9);9:表示数组的元素个数数据结构的定义:定义类型为DS例如:常量定义:D CFIELD C CONST('A')变量定义:D FIELD S 8 DIM(2)数据结构:D DS1 DSD Num 1 2D Char 3 3后面可以指定关键字:例如:FIELD S 8 DIM(2):关键字为DIM C表:计算规范。

以C开头。

程序过程部分。

包括Factor1和Factor2和结果,还有操作码。

RPG和RPGLE的写入规范在书写时是固定的,Free格式是自由的。

例如:C A IFEQ 'A'C MOVE 'B' AC ENDIFFree格式:C/FreeIF A='A';A= 'B';EndIF;C/End-FreeEQ:等于LE:小于等于GT:大于GE:大于等于LT:小于NE:不等于操作码:ADD:加,例如:ADD 1 S :S=S+1BEGSR:表示子例程开始ENDSR:表示子例程结束CALLB:调用函数CALLP:调用过程或者程序,例如:CALLP PGMCALL:调用程序,例如:CALL PGM这里CALL,只能CALL *PGM CALLP可以调用*PGM 也可以是*MODULE。

RPG AS400程序员培训手册9

RPG AS400程序员培训手册9

8 其它8.1 报表打印在这里,简单说一下报表。

其实据说RPG 设计之初,主要就是为了解决报表问题。

不过发展到现在,在我接触过的系统中,觉得报表在RPG 编程之中反而退居其次,大部分程序都是对数据库中磁盘文件(即PF 文件)的操作。

报表文件其实在某种意义上与普通的磁盘文件很类似,都是有记录格式(Record Format),都可以进行写操作(WRITE),RPGLE 的程序对它们的操作方式也比较雷同。

所不同的是普通的磁盘文件的数据是存储在数据库中,而报表文件WRITE 了之后,是以脱机文件(Spool File)的形式存在。

所以在一个库中,磁盘文件具有唯一性,即不能有同名的磁盘文件;而在同一个输出队列中,同名的报表文件(即生成的脱机文件),允许有多个。

要做一个全新的报表打印,大致上可以分为画报表文件(PRTF),与编写打印程序这两部分。

一、画报表文件(PRTF)1、新建立一个属性为PRTF的文件,然后使用19 进入报表编辑状态。

(即STRRLU)2、定义一个新的记录格式(Record Format):DR + F18 + F10,注意看下方的功能键说明3、在一个记录格式之下,追加内容时,要在新的编辑行前加“CLC”,表示此行的内容,是属于上面记录格式的。

4、编辑行前加:DC:定义常量CF:使当前行的内容居中5、常用功能键:F13:标记/ 取消标记(光标所指的字段)。

多试一下就知道使用方法,可以将同一行的多个相连的字段标记成为一个块(对首尾两个字段操作F13 即可)。

高亮部分表示已被标记的块。

F14:将已标记的块COPY 到光标指定处。

(其实这个我用得不多)F15:将已标记的块MOVE 到光标指定处。

(这个用得不少)F16:删除已标记的块。

(这个用的频率也不少)F11:定义新变量F23:进入当前字段的功能菜单画面6、对新变量的定义,按F11 之后,见到画面如下:Edited length . . . . . . . . . . . . : 1Record format . . . . . . . . . . . . : RCD001Number of keywords . . . . . . . . . : 0Number of indicators . . . . . . . . : 0Type choices, press Enter.Field . . . . . . . . . . . . . . . . FLD001 NameOption indicators . . . . . . . . . . 01-99, N01-N99More indicators . . . . . . . . . . N Y=Yes, N=NoStarting line . . . . . . . . . . . . 1-255Starting position . . . . . . . . . . 6 1-255, +nnLength of data . . . . . . . . . . . 1 1-378, +nn, -nn翻页,还有:Data type . . . . . . . . . . . . . . 1 1=Character2=Zoned3=Floating point4=Open5=Graphic6=Date7=Time8=Time stampDecimal positions . . . . . . . . . . 0-31, +n, -nReference a field . . . . . . . . . . N Y=Yes, N=NoUse referenced values . . . . . . . Y Y=Yes, N=No可以采用直接定义长度、类型的方法,即在第1 页的最末尾,Length of data 处,填上字段长度;如果是字符型,就不需要再填其它内容;如果是数字型,在第2 页Decimal positions 处填上小数位数。

RPG AS400程序员培训手册6

RPG AS400程序员培训手册6

5 CL、CMD其实有关这一章,以及屏幕文件的,在网上已经有很多人写过了,想了想,还是说一下吧。

5.1 CL 程序5.1.1 基本认识简单的理解,CL 程序就是和RPG 相对应的,是控制语言(Control Language)。

类型为CLP、CLLE 的源代码编译出来的程序,都属于CL 程序。

可能还是不够直观,这么说吧,我们在交互式命令行上输入的命令,用程序的方式来执行,这个执行的程序,就是CL 程序。

学过UNIX 的会比较好懂,CL 程序有点类似于SHELL,不过SHELL 是可以直接执行的,而且不用编译;CL 程序需要编译,而且要用CALL 的方式来执行。

不过原理是接近的,都是在程序中直接调用命令行的语句。

所以说,CL 程序其实很好写,只要会输入命令,就可以写CL 程序了。

在编辑CL 程序时,也可以用“命令+ F4”的方式来写,不需要老老实实的整行输入。

CL 程序不像RPGLE 程序,在编写时,可以使用自由格式书写;一行的内容如果太长要,在最末尾处用“+”表示换行举个最简单的例子,比如说新建个名为FHS01CL 的CLP 源程序,代码如下:PGMWRKACTJOBENDPGM编译此程序,然后CALL 之,系统就会执行命令WRKACTJOB,查看当前的活动作业,效果与在交互式命令行下输入WRKACTJOB 是一样的。

当我们输入F12,退出WRKACTJOB 时,系统就会继续向下执行,发现是ENDPGM,表示程序结束了,于是判定执行完毕,退出至交互式画面。

5.1.2 CL 程序的常用语法及命令:一、程序的开始与结束:PGM PARM(&A &B) /* 开始CL 程序*/ENDPGM /* 结束CL 程序*/CL 程序,和RPGLE 程序一样,也可以有程序的入口参数,而且程序的入口参数都是可传递的(也就是输入的参数如果在程序中被修改过,那么原调用的程序中的相应参数也会进行变化。

不过CL 的入口参数只能为字符型,或数字型的单个字段,不能象RPGLE 程序中那么多样化(字段、结构、数组、指针)。

AS400程序员培训手册(中级)

AS400程序员培训手册(中级)

1 简单说明 (3)2 程序代码行的编写 (3)2.1 最简单的RPGLE程序 (3)2.2 举例准备 (3)2.3 简单的程序流程 (4)2.4 常见的程序流程 (5)2.5 F行说明 (5)2.5.1 内容说明 (5)2.5.2 常用例子 (9)2.5.3 补充说明 (10)2.6 D行说明 (10)2.6.1 内容说明 (10)2.6.2 常用例子 (13)2.6.3 补充说明 (14)2.7 入口参数 (14)2.8 C行说明 (16)2.8.1 写在前面 (16)2.8.2 内容说明 (17)2.8.3 ILE操作码分类: (18)2.8.4 ILE操作码 (19)2.8.4.1 A--C (19)2.8.4.2 D--E (27)2.8.4.3 F--N (32)2.8.4.4 O--R (39)2.8.4.5 S--Z (43)3 和程序相关的数据库知识 (49)3.1 LF(逻辑文件) (49)3.1.1 逻辑文件概念 (49)3.1.2 逻辑文件对效率的影响 (51)3.2 MEMBER (51)3.3 游标 (52)3.3.1 游标的概念 (52)3.3.2 不同操作码对应的游标的处理 (52)3.3.3 “有且仅有”的游标 (53)3.3.4 LOV AL、HIV AL对应的游标操作 (53)3.4 事务处理 -- COMMIT (54)3.4.1 概念描述 (54)3.4.2 使用方法 (54)3.4.3 注意事项 (55)3.5 关于锁表的问题 LCKW (56)4 DEBUG调试以及常见出错信息 (56)4.1 写在前面 (56)4.2 常规用法 (57)4.2.1 程序编译 (57)4.2.2 执行DEBUG命令 (57)4.2.3 运行程序 (57)4.2.4 在DEBUG模式中进行调试 (58)4.2.5 跟踪被当前程序调用的程序 (58)4.2.6 一定要退出DEBUG模式 (59)4.2.7 补充 (59)4.3 跟踪批处理程序( From qingzhou) (60)4.4 常见的出错信息 (60)4.4.1 编译程序时的出错信息 (60)4.4.2 运行时的出错信息 (62)5 CL、CMD (62)5.1 CL程序 (62)5.1.1 基本认识 (62)5.1.2 CL程序的常用语法及命令: (63)5.1.3 不常用的语法 (65)5.2 CMD (66)6 屏幕文件及使用(整理中) (67)7 其它 (72)7.1 报表打印 (72)7.2 SA VF,备份与恢复 (77)7.3 菜单--MENU (78)7.4 几个命令 (78)7.5 关于代码风格的几点想法 (81)1简单说明内部交流、或可作培训使用。

AS400技术培训(12)-附录1-AS400系统命令

AS400技术培训(12)-附录1-AS400系统命令

2021/8/6
18
AS/400基本操作命令
– 显示文件描述DSPFD
TYPE:选择不同的信息类型,输出结果不同。
– *BASATR:基本属性 – *ACCPTH:键字定义,如果是逻辑文件,还指明对应的
物理文件。 – *MBRLIST:文件的成员基本信息。 – *MBR:文件的成员信息。
OUTPUT:输入方式
建议输出到QTEMP中。
2021/8/6
20
AS/400基本操作命令
– 显示数据库关系DSPDBR
显示与指定物理文件有关的逻辑文件。 OUTPUT:输入方式
– *:显示 – *PRINT:生成SPLF。 – *OUTFILE:生成物理文件,需要指定输出的文件名称。
建议输出到QTEMP中。
2021/8/6
2021/8/6
8
AS/400基本操作命令
– 删除用户DLTUSRPRF
删除用户时系统检查是不是有该用户为*OWNER的 目标,如果有,则一般情况不删除用户。 可以选择*OWNDLTOPT的值确定是删除这些目标, 还是将目标的*OWNER改为其他用户。然后删除该 用户。
– 显示用户DSPUSRPRF
2021/8/6
22
AS/400基本操作命令
– 数据库文件覆盖OVRDBF
以一个文件名称指向自身的一个成员(实现对一个 文件中不同成员的访问)。 以一个文件名称指向另一个文件(实现对不同文件 的访问)。也可以是另一个文件的成员。 也可以对逻辑文件进行覆盖。
2021/8/6
பைடு நூலகம்
23
AS/400基本操作命令
– 一般情况常用的目标有:用户简要表*USRPRF, 库*LIB,文件*FILE(包括物理文件、逻辑文件、 显示文件、打印文件等),数据区*DTAARA, 数据队列*DTAOBJ,程序*PGM等。

AS400培训资料(下)

AS400培训资料(下)

AS400培训资料(下)AS400应用开发培训高级应用与交易实现前言本阶段的培训,在上一级培训的基础上,讲解业务系统的处理以及交易的实现。

目的是使大家掌握如何在AS400上实现具体的交易,完成本次开发任务。

在讲解业务系统的例子程序和会计记帐核心的过程中我们将穿插讲解AS400中一些编程方式和一些简单工具的使用。

由于篇幅和时间的关系在本教材中对一些简单工具不作具体的介绍,请大家作好记录。

同时为了配合本次培训,我们将下发两本教材,一本是操作码手册,另外一本是本公司原来出的IBM AS400 培训教材第二分册,对这两本教材的内容我们可能不作具体的讲解,主要是给大家在学有余力的情况下进行自学,以及今后进行实际编码时的参考手册。

对于一些非常少见的应用,我们不作讲解,请大家参考下发的教材或使用联机的帮助。

使用F6或其他方式建立的成员在Opt选14编译物理文件参与编译其他类型的目标(Object) SLRRPG(可执行程序 *PGM) 物理文件,逻辑文件,打印文件等参与编译,若RPG程序的F表进行了相应的定义其他需要参与编译的目标第一章 RPG程序使用RLU的方法在上一期的培训中我们简要的介绍了RLU的一些用法,现在我们来学习RLU的一些应用,以及如何在RPG程序中使用RLU生成的打印文件在今后的设计过程中,应业务人员的要求,在报表中对于一些域的属性可能要进行修改。

以下是将光标移到域后出现的域属性内容Work with Field KeywordsField . . . . . . . . : ' 客户 ... Record format . . . . : HEADType options, press Enter.2=Specify 4=RemoveOpt Keyword Opt Keyword Opt KeywordALIAS EDTCDE MSGCONBARCODE EDTWRD PAGNBRBLKFOLD FLTFIXDEC PRTQLTYCDEFNT FLTPCN REFFLDCHRID FNTCHRSET SKIPACHRSIZ FONT SKIPBCOLOR HIGHLIGHT SPACEACPI IGCALTTYP > SPACEBCVTDTA IGCANKCNV TEXTDATE IGCCDEFNT TIME> DFT IGCCHRRTT TRNSPYDLTEDT INDTXT UNDERLINEBottomF3=Exit F5=Refresh F9=Input keyword parameters F10=Specify informationF12=Cancel F16=Remove all keywords选择(opt)2 进行该项的内容说明 4 是取消该项说明在这些选项中经常用到的是:DFT 若前面有”>”则说明该项是常量域,否则是变量域。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AS/400培训资料于勇IPACS北京在RPGLE中的文件定义_________________________________________________ 3 在RPGLE中有关文件操作的操作码_______________________________________ 5 只输出子文件定义_______________________________________________________ 8 实现输出类型子文件_____________________________________________________ 9 输出类型子文件有定位处理______________________________________________ 12 实现有定位处理输出类型子文件__________________________________________ 13 处理类型子文件有定位处理______________________________________________ 17 实现处理类型子文件有定位处理__________________________________________ 20 处理类型子文件有定位处理和光标处理____________________________________ 26 实现有定位处理、光标处理子文件________________________________________ 29 处理类型子文件有定位、光标、信息子文件处理____________________________ 35 实现有定位、光标、信息子文件的处理类型子文件__________________________ 38 处理类型单页子文件定义________________________________________________ 45 实现处理类型单页子文件________________________________________________ 49 打印文件定义__________________________________________________________ 59 实现打印文件__________________________________________________________ 61在RPGLE中的文件定义**************************************************************** * Copyright 北京宇博电子科技有限公司 1998 * **************************************************************** * * * Program Id - FileDfn * * Program Type - RPGLE * * Purpose - 用于讲解在RPGLE中的文件定义 * * 不可编译 * * Date Generated - 1998-07-22 * * Author - 于勇 * * * *****************************************************************ilename++IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++ *..1....+....2....+....3....+....4....+....5....+....6....+. (7)* -------------------------------------------------------------- * 顺序和直接存取只用于输入操作 ( Read , Chain )* -------------------------------------------------------------- FCustomer IF E K DISK* -------------------------------------------------------------- * 仅使用Write来增加记录* -------------------------------------------------------------- FCustomer O E K DISK* -------------------------------------------------------------- * 顺序和直接存取用于输入( Read , Chain ) , Update , Delete* 不包含Write操作* -------------------------------------------------------------- FCustomer UF E K DISK* -------------------------------------------------------------- * 顺序和直接存取用于输入( Read , Chain ) , Update , Delete* 包含Write操作* -------------------------------------------------------------- FCustomer UF A E K DISK* -------------------------------------------------------------- * 显示文件定义说明* -------------------------------------------------------------- FCustomerD CF E Workstn* -------------------------------------------------------------- * 打印文件定义说明* -------------------------------------------------------------- FCustomerP O E Printer在RPGLE中有关文件操作的操作码***************************************************************** Copyright 北京宇博电子科技有限公司 1998 ****************************************************************** ** Program Id - FileOpr ** Program Type - RPGLE ** Purpose - 用于讲解在RPGLE中的文件操作码 ** 不可编译 ** Date Generated - 1998-07-22 ** Author - 于勇 ** ******************************************************************物理文件定义FCustomer UF A E K Disk*显示文件定义FCustomerd CF E Workstn*参照外部文件的数据结构定义D Customer_DsE Ds Extname( Customer )D Dspf_DsE Ds Extname( Customer )D Prefix(XS:2)*关键字列表定义C Csklist KlistC Kfld Csid*读下一条记录*IN90 = *OFF表示读到记录C Read Customerr 99*读上一条记录*IN90 = *OFF表示读到记录C ReadP Customerr 99*最小值定位C *Loval SetLl Customerr*最大值定位C *Hival SetGT Customerr*定位指示符含义C Csklist Setll Customerr 979899* *In97 No Record Found* *In98 Error Occurred* *in99 Exact Match for Search Argument Found*读下一条等于关键字的记录C Csklist Reade Customerr 99*读上一条等于关键字的记录C Readpe Customerr 99*用指定关键字读一条记录并且不锁定读到记录*IN88 = *OFF读到C Csklist Chain(N) Customerr 97*修改记录C Update Customerr*删除记录C Delete Customerr*增加记录C Write CUSTOMERR*记录解锁C UNLOCK CUSTOMERR*条件语句C If Not *In97*赋值语句C EVAL FLD2=FLD1C MOVE FLD1 FLD2C ELSEC MOVE FLD2 FLD1C EndIf*条件选择语句C SELECTC WHEN FLD1=FLD2C OTHERC ENDSL*循环语句C Dow Not *In97C EndDoC Dow Not *In03*显示屏幕并从屏幕中读取内容C ExFmt Dsp01C EndDo*程序结束C Move *ON *InLr只输出子文件定义A*%%TS SD 19980811 141319 YUYONG REL-V3R7M0 5716-PW1 A*%%EC A DSPSIZ(24 80 *DS3) A R SFL01 SFL A*%%TS SD 19980807 103111 YUYONG REL-V3R7M0 5716-PW1 A CSID R O 9 10REFFLD(CUSTOMERR/CSID *LIBL/CUSTOM- A ER) A CSNAME R O 9 23REFFLD(CUSTOMERR/CSNAME *LIBL/CUST- A OMER) A R CTL01 SFLCTL(SFL01) A*%%TS SD 19980811 141319 YUYONG REL-V3R7M0 5716-PW1 A SFLSIZ(0100) A SFLPAG(0010) A CA03(03) A OVERLAY A 30 SFLDSP A 31 SFLDSPCTL A 33 SFLCLR A 34 SFLEND(*MORE) A 1 3'CS0101D' A 1 31'查询用子文件' A DSPATR(HI) A 1 72DATE A EDTCDE(Y) A 2 72TIME A 8 9'客户号' A DSPATR(HI) A 8 31'客户名称' A DSPATR(HI) A R FUN01 A*%%TS SD 19980811 141319 YUYONG REL-V3R7M0 5716-PW1 A 22 3'F3 =退出' A COLOR(BLU)实现输出类型子文件**************************************************************** * Copyright 北京宇博电子科技有限公司 1998 * **************************************************************** * * * Program ID - CS0101R * * Program Type - RPGLE * * Purpose - 建立一个输出类型的子文件 * * Date Generated - 1998-08-06 * * Author - 于勇 * * * **************************************************************** *数据文件定义FCustomer IF E K Disk *显示文件定义FCs0101D CF E WorkStn Sfile( Sfl01 : RecNbr )*子文件用相对记录号定义D RecNbr S 4 0 Inz( *Zero ) *子文件最大记录数D RecLmt S 4 0 Inz( 9999 )*============================* * 主程序 * *============================* *子文件清除C ExSr SflClrSr *子文件记录装入C ExSr SflLodSrC Dow Not *In03 F3*子文件显示C Exsr SflDspSr C EndDo C Move *On *InLr*----------------------------* * 子文件初始化 * *----------------------------*C SflClrSr BegSrC Eval *In30 = *Off SflDspC Eval *In31 = *Off SflCtlDspC Eval *In33 = *On SflClr*写字文件控制记录C Write Ctl01 C Eval *In33 = *Off C Eval *In34 = *Off SflEnd*恢复子文件初值C Reset RecNbr C EndSr*----------------------------* * 子文件数据装入 * *----------------------------* C SflLodSr BegSrC *Loval SetLL CustomerR C Read CustomerR 99 C Dow Not *In99 And C RecNbr <= RecLmt *生成子文件相对记录号C Eval RecNbr = RecNbr + 1 *写子文件记录C Write Sfl01 C Read CustomerR 99 C EndDo *子文件不为空C If RecNbr > *Zero C Move *On *In30 SflDspC Endif *读文件结束C If *In99 C Move *On *In34 SflEndC Endif C EndSr*----------------------------* * 子文件显示 * *----------------------------* C SfldspSr BegSrC Eval *In31 = *On SflCtlDspC Write Fun01 C Exfmt Ctl01 C Eval *In31 = *Off SflCtlDspC EndSr输出类型子文件有定位处理A*%%TS SD 19980811 135301 YUYONG REL-V3R7M0 5716-PW1 A*%%EC A DSPSIZ(24 80 *DS3) A R SFL01 SFL A*%%TS SD 19980807 103529 YUYONG REL-V3R7M0 5716-PW1 A CSID R O 9 10REFFLD(CUSTOMERR/CSID *LIBL/CUSTOM- A ER) A CSNAME R O 9 23REFFLD(CUSTOMERR/CSNAME *LIBL/CUST- A OMER) A R CTL01 SFLCTL(SFL01) A*%%TS SD 19980811 135301 YUYONG REL-V3R7M0 5716-PW1 A SFLSIZ(0100) A SFLPAG(0010) A CA03(03) A OVERLAY A 30 SFLDSP A 31 SFLDSPCTL A 33 SFLCLR A 34 SFLEND(*MORE) A RECRRN 4S 0H SFLRCDNBR A 1 3'CS0102D' A 1 31'有定位子文件' A 1 72DATE A EDTCDE(Y) A 2 72TIME A 4 60'客户号定位:' A POSCSID 5A I 4 75 A 8 9'客户号' A 8 32'客户名称' A R FUN01 A*%%TS SD 19980805 161157 YUYONG REL-V3R7M0 5716-PW1 A 22 3'F3 =退出'实现有定位处理输出类型子文件**************************************************************** * Copyright 北京宇博电子科技有限公司 1998 * **************************************************************** * * * Program ID - CS0102R * * Program Type - RPGLE * * Purpose - 建立一个输出类型的子文件 * * 有定位 * * Date Generated - 1998-08-06 * * Author - 于勇 * * * **************************************************************** *数据文件定义FCustomer UF E K Disk *显示文件定义FCs0102D CF E WorkStn Sfile( Sfl01 : RecNbr )D CsKeyAry S 5 Dim( 9999 ) D Ascend *数组下标定义D X S 4 0 Inz( 1 )D CsKeyDs DS D Csid 5D PosDs DS D PosCsid 5 Inz( *Blank )*子文件用相对记录号定义D RecNbr S 4 0 Inz( *Zero ) D LstRecNbr S 4 0 Inz( *Zero )*子文件最大记录数D RecLmt S 4 0 Inz( 9999 )*============================* * 主程序 * *============================**子文件清除*子文件记录装入C ExSr SflLodSrC Dow Not *In03 *子文件定位C Exsr SflPosSr*子文件显示C Exsr SflDspSr C EndDoC Move *On *InLr *----------------------------* * 子文件初始化 * *----------------------------* C SflClrSr BegSrC Eval *In30 = *Off SflDspC Eval *In31 = *Off SflCtlDspC Eval *In33 = *On SflClr*写字文件控制记录C Write Ctl01 C Eval *In33 = *Off SflClr*恢复子文件初值C Reset RecNbrC EndSr *----------------------------- * 子文件数据装入 * *----------------------------- C SflLodSr BegSrC *Loval SetLL CustomerR C Read CustomerR 99 C Dow Not *In99 And C RecNbr <= RecLmt *生成子文件相对记录号C Eval RecNbr = RecNbr + 1 *将关键字赋值给数组C Eval CsKeyAry( RecNbr ) = CsKeyDs *写子文件记录C Write Sfl01C EndDo*子文件不为空C If RecNbr > *Zero C Eval LstRecNbr = RecNbr C Move *On *In30 C Endif*读文件结束C If *In99 C Move *On *In34 C EndifC EndSr *----------------------------* * 子文件定位 * *----------------------------* C SflPosSr BegSrC If PosDs <> *BlankC ReSet X C PosDS LookUP CsKeyAry( X ) 97 99 C If *In97 Or *in99 C Eval RecRrn = X C Else C Eval RecRrn = LstRecNbr C EndIfC Else C Eval RecRrn = 1 C EndIfC EndSr *----------------------------* * 子文件显示 * *----------------------------* C SfldspSr BegSrC Eval *In31 = *On C Write Fun01 C Exfmt Ctl01 C Eval *In31 = *OffC EndSr处理类型子文件有定位处理A*%%TS SD 19980811 141059 YUYONG REL-V3R7M0 5716-PW1 A*%%EC A DSPSIZ(24 80 *DS3) A R SFL01 SFL A*%%TS SD 19980811 135222 YUYONG REL-V3R7M0 5716-PW1 A SCADDRESS 30A H A OPT 1Y 0B 9 5EDTCDE(2) A SCCSID R O 9 10REFFLD(CUSTOMERR/CSID *LIBL/CUSTOM- A ER) A SCCSNAME R O 9 23REFFLD(CUSTOMERR/CSNAME *LIBL/CUST- A OMER) A R CTL01 SFLCTL(SFL01) A*%%TS SD 19980811 141059 YUYONG REL-V3R7M0 5716-PW1 A SFLSIZ(0100) A SFLPAG(0010) A CA03(03) A CA06(06) A OVERLAY A 30 SFLDSP A 31 SFLDSPCTL A 33 SFLCLR A 34 SFLEND(*MORE) A RECRRN 4S 0H SFLRCDNBR(CURSOR) A 1 3'CS0103D' A 1 29'有选项处理定位子文件' A DSPATR(HI) A 1 72DATE A EDTCDE(Y) A 2 72TIME A 4 2'请键入选项,按执行键继续。

相关文档
最新文档