AS400教材程序员培训手册(中级)
- 格式:pdf
- 大小:589.96 KB
- 文档页数:100
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'请键入选项,按执行键继续。
A S / 4 0 0 技术手册1.2.2修订版上海申铁王鹏程使用说明: ・文中使用资料来源于 www.redbooks.ibm.com及internet. ・文章中 …… (省略号)表示为该处没有编纂完成。
・用方框框上的文字,表示该处未经过验证,尚有疑问。
・未经作者同意,不得更改,转借他人。
注:该版本为正式版。
目录: AS/400简介: 1.AS/400产生的历史背景 …………………………………………………………………… 4 2.AS400的历史及其发展 …………………………………………………………………… 5 3.AS400名称的由来 …………………………………………………………………… 7 4.AS400的迅速发展及未来 …………………………………………………………………… 7 二.初识系统操作 1.认识IPL。
…………………………………………………………………… 7 a. IPL设置。
…………………………………………………………………… 7 b.AS/400启动方式 …………………………………………………………………… 8 2.控制面板操作 …………………………………………………………………… 8 3.安装Client Access Express …………………………………………………………………… 9 4.AS/400 命令介绍 …………………………………………………………………… 10 三.Domino安装,管理,性能调整、监控: 1.安装lotus domino服务器 ………………………………………………………………………16 2.启动 domino服务器 ……………………………………………………………………… 17 3.Domino常用命令 ……………………………………………………………………… 17 4.Domino 对AS/400的要求 ……………………………………………………………………… 18 5.Domino 的备份 ……………………………………………………………………… 18 10.Domino的性能调整 ……………………………………………………………………… 20 四.AS/400 工作管理: 1.AS/400系统参数值 ……………………………………………………………………… 21 五.常见问题: 附录: A: 控制面板参数值详解。
AS培训培训手册课件汇报人:2023-12-12•AS培训介绍•AS培训之基础篇•AS培训之进阶篇目录•AS培训之实战篇•AS培训之答疑篇•AS培训之总结篇01AS培训介绍当前,AS(Associate)认证已成为IT行业广泛认可的证书之一,越来越多的企业和个人开始重视AS认证的学习和培训。
AS认证是由美国计算机行业协会(CompTIA)和美国国家计算机行业协会(NCII)联合推出的认证体系,具有较高的国际认可度和广泛的应用领域。
AS认证涵盖了计算机硬件、软件、网络、安全等多个领域,是对IT从业人员技能水平的全面衡量和检验。
通过AS培训,学员可以全面掌握IT行业的基础知识和技能,具备基本的计算机硬件、软件、网络、安全等方面的技能水平。
获得AS认证将有助于学员在IT行业找到更好的工作机会,提升个人职业发展能力和竞争力。
AS培训还旨在培养学员的自主学习能力和创新意识,使其更好地适应不断变化的IT行业需求。
此外,AS培训还注重实践操作和案例分析,通过模拟项目和实验环节来加深学员对知识的理解和掌握程度。
AS培训的内容主要包括计算机硬件、软件、网络、安全等方面的知识和技能,涵盖了IT行业的各个方面。
具体内容包括计算机硬件的组成、性能参数、选购与维护;操作系统的安装与配置,常用办公软件的使用,网络设备的配置与维护,网络安全的基本知识等。
02AS培训之基础篇AS是Automotive System的缩写,指的是汽车制造过程中的自动化控制系统。
AS系统定义从最早的机械控制系统,到后来的电子控制系统,再到现在的智能化控制系统,AS系统的发展经历了多个阶段。
AS系统发展历程主要应用于汽车制造、机械制造、电子产品制造等工业领域。
AS系统应用范围AS系统概述操作界面文件管理数据采集自动化控制AS系统基础操作01020304包括菜单、工具栏、状态栏等,提供基础的操作环境和功能。
包括新建、打开、保存、关闭等文件操作,以及文件格式转换和打印等功能。
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 程序中那么多样化(字段、结构、数组、指针)。
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培训资料(下)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 若前面有”>”则说明该项是常量域,否则是变量域。
2.8.4.4 O--RON-ERROR (On-Error)没用过OPEN {(E)} (Open File for Processing) 打开文件Factory 1 Operation Factory 2 Result HI LO EQOPEN 文件名OPEN 后面的目标,必须是在当前程序中已声明的文件名(不是文件的记录格式名),而且在OPEN 操作之后,在程序结束之前之前,必须有对应的CLOSE 操作。
使用OPEN 操作,文件在声明时,必须使用USROPN 关键字(详见D 行说明)。
ORxx (Or) 逻辑判断—或Factory 1 Operation Factory 2 Result HI LO EQFLD01 IFGT FLD03FLD01 OREQ FLD02等价于IF FLD01>FLD03 OR FLD01=FLD02与IF、IFxx,AND、ANDxx 类似,RPGLE 的写法OR,比RPG 的写法ORxx 要灵活,而且可以用来表达一些复杂的逻辑关系。
有鉴于此,所以通常IF 语句中,我会以OR 为主,基本不用ORxx。
如果在编程序方面,公司/项目组无硬性要求,那我觉得还是少用ORxx 吧,总觉得这种写法的逻辑关系看起来不直接,尤其是有很复杂的AND,OR 时。
OTHER (Otherwise Select) 分支语句的判断与分支语句SELECT 一起使用,表示不符合上述所有条件时的操作,如下:Factory 1 Operation Factory 2 Result HI LO EQSELECTWHEN 条件判断1处理语句1WHEN 条件判断2处理语句2OTHER处理语句3ENDSL在这个例子中,当满足条件判断1 时,运行处理语句1,运行结束后跳至ENDSL 处;如果不满足条件判断1,则程序继续向下执行,判断是否满足条件判断2。
当满足条件判断2 时,运行处理语句2,跳至ENDSL;当不满足当不满足条件判断2 时,程序继续向下执下,当读到OTHER 操作码时,无条件运行处理语句3(即当程序当前不满足以上所以条件判断时,则执行OTHER 之后的语句。
AS/400教程完整版第一章AS/400系统概况1.1 AS/400发展历史1.1.1 AS/400发展历史Figure 1-1. AS/400的发展历史为了深入了解一个系统,必须熟悉它发展的历史和背景。
多数的计算机系统是从原有的系统基础上发展起来的。
AS/400的发展历史:◇ 1969年6月发布System/3(Batch machine)◇ 1975年1月发布System/32 (用于小型商务办公环境)◇ 1977年4月发布System/34◇ 1978年10月发布System/38(第一代AS/400,商业上失败,技术上成功)◇ 1983年5月发布System/36(商业上非常成功)◇ 1988年6月发布AS/400 B型号(Application System/400,第二代AS/400)◇ 1994年5月发布AS/400先进系列/服务器(Advanced System/400,第三代AS/400)◇ 1995年6月发布AS/400 Power PC 先进系列/服务器◇ 1997年8月发布AS/400e系列◇ 1999年2月发布AS/400 e 服务器170、7XX◇ 1999年7月发布AS/400e Domino 专用服务器(莲花宝箱)◇ 2000年10月发布iSeries 400,包括270、820、830、840及IBM莲花宝箱(DSD)1.2 iSeries 400的特点1.2.1 iSeries 400的特点Figure 1-2. iSeries400iSeries 400通过紧密集成硬件、软件、中间件和操作系统提供能够满足不同业务需求的高性能、可靠和易于使用特性。
从e系列开始,在电子商务大舞台上开始扮演更为重要的角色。
它可以提供扩展业务确保电子商务优势所需的技术和工具。
它的突出特点有:● 卓越的性能,不断获得各种荣誉和认可,全面实现64位处理,先进的体系结构,最领先的SOI芯片技术;● 卓越的可靠性和可用性,系统可提供99.97%的可用性,使iSeries成为商业关键事务处理的首选服务器平台;● 高度集成的系统环境,使用户不需要太多的系统管理员就能保证其应用平稳地运行;● 严密的安全防范系统,荣获美国联邦政府定义的商业计算机最高安全性级别C2级认证,堪称世界上"最安全"的计算机系统。
AS/400 程序员培训手册(中级)作者:万一飞(Chinaunix网友:胖有型)目 录1 简单说明 (5)2 程序代码行的编写 (5)2.1 最简单的RPGLE程序 (5)2.2 举例准备 (5)2.3 简单的程序流程 (6)2.4 常见的程序流程 (7)2.5 F行说明 (8)2.5.1 内容说明 (8)2.5.2 常用例子 (11)2.5.3 补充说明 (12)2.6 D行说明 (12)2.6.1 内容说明 (12)2.6.2 常用例子 (15)2.6.3 补充说明 (16)2.7 入口参数 (16)2.8 C行说明 (18)2.8.1 写在前面 (18)2.8.2 内容说明 (19)2.8.3 ILE操作码分类: (20)2.8.4 ILE操作码 (21)2.8.4.1 A--C (21)2.8.4.2 D--E (29)2.8.4.3 F--N (34)2.8.4.4 O--R (41)2.8.4.5 S--Z (45)3 和程序相关的数据库知识 (51)3.1 LF(逻辑文件) (51)3.1.1 逻辑文件概念 (51)3.1.2 逻辑文件对效率的影响 (53)3.2 MEMBER (53)3.3 游标 (54)3.3.1 游标的概念 (54)3.3.2 不同操作码对应的游标的处理 (54)3.3.3 “有且仅有”的游标 (55)3.3.4 LOV AL、HIV AL对应的游标操作 (55)3.4 事务处理 -- COMMIT (56)3.4.1 概念描述 (56)3.4.2 使用方法 (56)3.5 关于锁表的问题 LCKW (58)4 DEBUG调试以及常见出错信息 (58)4.1 写在前面 (58)4.2 常规用法 (59)4.2.1 程序编译 (59)4.2.2 执行DEBUG命令 (59)4.2.3 运行程序 (59)4.2.4 在DEBUG模式中进行调试 (60)4.2.5 跟踪被当前程序调用的程序 (60)4.2.6 一定要退出DEBUG模式 (61)4.2.7 补充 (61)4.3 跟踪批处理程序( From qingzhou) (62)4.4 常见的出错信息 (62)4.4.1 编译程序时的出错信息 (62)4.4.2 运行时的出错信息 (64)5 CL、CMD (64)5.1 CL程序 (64)5.1.1 基本认识 (64)5.1.2 CL程序的常用语法及命令: (65)5.1.3 不常用的语法 (67)5.2 CMD (68)6 屏幕文件及使用 (69)7 实用技巧 (74)7.1 数组 (74)7.1.1 简述 (74)7.1.2 定义 (74)7.1.3 初始化 (75)7.1.4 使用方法 (75)7.1.5 补充 (76)7.2 结构体 (76)7.2.1 简述 (76)7.2.2 结构体的定义 (77)7.2.3 初始化 (77)7.2.4 使用方法 (78)7.2.5 结构体中的数组 (79)7.2.6 定义时,独立变量与结构体变量的区别 (79)7.2.7 不带OCCURS关键字的结构体定义 (80)7.3 按内部序号来读文件 (80)7.3.1 简述 (80)7.3.2 定义 (81)7.3.3 使用方法 (81)7.4 常驻内存命令SETOBJACC (83)7.4.1 简述 (83)7.4.3 使用说明 (84)7.4.4 补充说明 (84)7.5 数据队列的使用 (84)7.5.1 数据队列的说明 (84)7.5.2 CRTDTAQ 建立数据队列 (85)7.5.3 DLTDTAQ 删除数据队列 (85)7.5.4 系统API (86)7.5.4.1 QSNDDTAQ 发送数据队列 (86)7.5.4.2 QRCVDTAQ 接收数据队列 (86)7.5.4.3 QCLRDTAQ 清除数据队列 (87)7.5.4.4 QMHQRDQD 检索数据队列 (87)7.6 使用系统API的入手方法 (87)7.6.1 调用说明 (87)7.6.2 关于USR SPACE (88)7.6.3 一些可能常用的API (88)8 其它 (89)8.1 报表打印 (89)8.2 SQLRPGLE (93)8.3 SA VF,备份与恢复 (95)8.4 菜单--MENU (96)8.5 实用命令 (96)8.6 关于代码风格的几点想法 (99)1简单说明RPG的全称:Report Program Generator内部交流、亦可作培训使用。
对用户作如下假定:1、能COPY、修改、编译源代码(RPGLE、CLP),并能运行编译后的程序2、能COPY、修改、编译文件(PF、LF、PRTF、DSPF);3、对数据文件(PF)有简单的认识(FIELD Æ RECORD Æ PF),并知道LF与PF的对应关系。
2程序代码行的编写2.1 最简单的RPGLE程序为便于理解,这里写一个最简单的RPGLE程序CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq*************** Beginning of data *************************************0001.00C 'HELLO WORLD' DSPLY 0002.00 C RETURN****************** End of data ****************************************这个程序编译成功,并调用(CALL 程序名),就是在屏幕上反白显示“HELLO WORLD”字样。
(其中,绿色字样,是系统自动显示的,下同)与自由风格的C语言不同,RPGLE中的编码,是有一定的格式,如果写错,将会在当前代码行上高亮反绿显示。
初学者如果不太清楚从何处开始下手,可以使用“F4”键查看(F4键只有用2进入的编辑状态才有效,用5进入的查看状态是无效的)Level N01 Factor 1 Operation Factor 2 Result'HELLO WORLD' DSPLY Decima lLength Positions HI LO EQ Comment关于每一项所对应的内容代表什么意思,该如何填写,即如何写程序,将会在下面的具体讲解。
2.2 举例准备列出表名,字段,以方便下面的举例。
假设有PF文件叫PFFHS,文件的记录格式叫FMTFHS每条记录,都是由FHS01、FHS02、FHS03三个字段组成,每个字段都是两位长的字符型变量。
逻辑文件PFFHSL1的键值为FHS01逻辑文件PFFHSL2的键值为FHS02逻辑文件PFFHSL3的键值为FHS01、FHS02注:文件的记录格式,可以理解为给这个文件整条记录起的一个名字;或者是说将每条记录视都视做一个类型相同大变量,然后给这个大变量起的名字。
所以文件的记录格式信息中,包含有一条记录由多少个字段组成,总计长度是多少这样的信息。
文件的记录格式,与各个字段同时定义。
(写文件的源码时)文件的记录格式在RPGLE的程序中,不能与文件名相同。
2.3 简单的程序流程为方便起见,系统自动显示的就不再贴出来了,只贴代码段。
FPFFHS UF E DISKC READ FMTFHSC EV AL FHS01=”01”FMTFHSC UPDATEC SETON LRC RETURN这个程序的意思,是说读PFFHS这个文件,然后将读到的第一条记录中的FHS01这个字段的值修改为“01”。
“SETON LR”,LR的位置可在HI、LO、EQ中任选一处。
意思是指将打开指示器*INLR,即赋值使指示器*INLR的值等于1。
等价于“ EV AL *INLR=’1’ ”,意思是强制将内存中的数据写到磁盘中。
(基于效率因素,系统在修改文件时,会先将修改的结果先放在内存中,在同一程序中,读取数据也是先从内存中查询。
)LR,取自是Last RecordRETURN,表示程序结束,在后面“操作码”一节中,会有讲述。
如果不太明白,就记住C SETON LRC RETURN或C EV AL *INLR=’1’C RETURN这两句话加在一起,表示程序结束就可以了。
从这个程序中,我们可以看到,RPGLE的程序,大致上可以分为两个部分:1、声明、定义部分:声明程序中使用到的文件(F行),定义程序中使用的变量(D行)2、程序运行部分:即C行,也就是程序段。
在RPGLE程序中,F行必须在D行前面,D行必须在C行前面。
程序执行的起始顺序,将从定义部分之后,第一个C行开始,顺序向下执行。
程序中的F行、D行都不是必须项,一个程序可以没有F行(如仅完成计算功能的公共函数,比如计算利息),也可以没有D行(没有需要特别定义的变量,或者所有变量都在C行进行定义),但不应该没有C行,因为F行与D行都属于非执行行,是起定义作用;C 行是执行行。
没有C行的程序,是无执行意义的。
2.4 常见的程序流程FPFFHS UF E DISK //声明文件PFFHSD LSFLD01 S 2 //定义临时变量LSFLD01C EV AL LSFLD01=’01’ //给变量LSFLD01赋值C EXSR SUB#UPD //执行子过程SUB#UPDC EV AL LSFLD02=’02’ //给变量LSFLD02赋值C EXSR SUB#UPD //执行子过程SUB#UPDC SETON LR //数据写入磁盘C RETURN //程序结束//子过程SUB#UPD开始C SUB#UPD BEGSRC READ FMTFHS //读PFFHS文件C EV AL FLD01=LSFLD01 //给字段FLD01赋值C UPDATE FMTFHS //修改文件C ENDSR //子过程结束“//”后面的,只是简单的解释,如果自已动手写,不需要输入这些内容。
系统在运行这个程序时,是按如下的顺序来执行:1.首句EV AL赋值语句,直接执行;2.当系统发现操作码“EXSR”时,根据后面的变量名“SUB#UPD”,去查找对应的“SUB#UPD BEGSR”语句;3.然后从“SUB#UPD BEGSR”之后,顺序向下执行,直至“ENDSR”语句4.执行到“ENDSR”之后,将会再回到当初的“EXSR SUB#UPD”处,继续向下执行,直到RETURN语句为止这里提出一点要注意,如果子过程中,又执行了自身,即在SUB#UPD程序中,又出现了“EXSR SUB#UPD”,是可以编译通过的,但在执行过程中,系统会因为无法定位,而出现死循环,直至报错异常中断退出。