作者:UB 时间:2004-03-18 19:55:24 [修改] [回复]
AS400 简介
王德春(2004.3)
1. AS400简介
IBM AS/400是中型机市场上最重要的非UNIX,非NT平台。AS400由硬件和软件两部分组成,软件部分操作系统叫OS400。
对于硬件部分进行介绍:
硬件部分对于AS400分为两各主要的分支,一个E-SERVER和E-SYSTEM两个系列
1、e-SERVERS 的主要产品和特点:主要针对c/s结构的应用。相应的设备包括Model 150,Model 170,Model S10,Model S20,Model S30,Model S40
2、e-SYSTEM的主要产品和特点:主要针对传统的在线事务处理方面,主要的设备包括Model 600,Model 620,Model 640,Model 650。
共性:都是基于对象的64位处理器的系统
2. 操作系统(OS400)
1、 主要的优势和性能
a) AS/400是由软件,而不是由硬件定义的,这又称为独立于技术的机器界面(TIMI,Technology Independent Machine Interface)。当程序向机器界面提交执行指令时,它以为AS/400硬件是接口。但事实并非如此。提交到接口的指令将通过一个微代码层,然后硬件才可以理解这个指令。这种设计将应用程序及其用户同不断变化的硬件特征相隔离,而这个微代码层就称为SLIC。应用新硬件技术时,IBM就重写微代码层,以体现硬件特征的变动,所以面向用户的接口仍然没有变化。
b) 用户选择AS/400运行其主要业务应用程序的原因之一是,AS/400的可靠性无与伦比。这种声誉应该归功于IBM Rochester, Minnesota的开发和制造工作组—30年来,他们一直提供着高质量的商用系统。为了不断提高AS/400的可用性,AS/400开发和制造工作组严密注意可用性的所有方面:从系统级(包括硬件、操作系统和数据库)到部件级。正因为如此,AS/400的系统可用性平均达到了99.9+%。根据IBM三年来对2000台AS/400跟踪后收集的数据,AS/400用户每年的意外停机时间平均为5.2小时,可用性为99.94%。单一AS/400系统提供了可靠、经济有效的高系统可用性。若用二台AS/400集群,则每年意外停机时间只有2.8分钟,与IBM的大型主机的可靠性相当
c) AS/400系列支持多种系统和服务器:从非常小的系统(支持NT用户),直到拥有数千用户的超大规模系统。高端AS/400支持12个处理器,20GB内存以及1.5TB的磁盘容量。除了12个主处理器之外,还可以配备数百个特殊的I/O处理器,使AS/400得以通过较少的主处理器提供更高的商用性能。还可以使用AS/400群集实现更高的可扩展性。 AS/400的可扩展性优势远不局限于处理器的数目。其它影响可扩展性的因素还有:服务器支持多个应用程序和动态调整能力,以及服务器的可靠性。AS/400可以在单一系统上运行多个应用程序,支持动态调整,还可以达到99.9+%的可靠性。所谓单一系统上运行多个应用程序,是指采用AS/400的逻辑分区技术,可以在一台AS/400上运行Web服务器,Domino服务器,DB2数据库服务器等,如在AS/400上加装一块IPCS卡,则可以运行任何基于Intel芯片的操作系统和应用程序,此外IBM最近宣布在OS/400 V4R4版本上运行特定的配置程序,可以在AS/400上运行UNIX操作系统(IBM AIX的一个子集)。各种不同类型的应用程序都可以共享AS/400的内存和硬盘。AS/400的集成文件系统(IFS)也使其可以支持业界几乎所有的文件系统,FAT,NTFS,UNIX/POSIX等等,在AS/400的客户端访问软件Client Access看来,这些文件系统只不过是Root根下的一些目录而已, 可以方便地在这些文件系统间进行各种操作。所有这些,使得AS/400成为一个全功能的作业系统,也使AS/400不是一个开放系统的说法站不住脚。所谓动态调整是指对许多功能参数调整后立即生效,无须重新启动。
d) 身处网络时代,无论服务器是位于局域网内还是Internet上,服务器是否可以免受病毒侵袭,是否可以避免帐户信息的泄密,是否可以抵御黑客的攻击等一系列安全问题都倍受关注。AS/400可以自豪地告诉用户,迄今为止,AS/400上未发现一例病毒,世界上没有一个黑客可以攻破AS/400系统,也没有系统管理员帐户被黑客程序窃取的报道。
AS/400完善的安全性源于它独特的安全性设计,所有的系统模块都位于技术独立接口(TIMI)层下,并以对象的方式被封装。因此,用户根本无法访问系统模块,任何攻击都无从谈起。面向对象体系本身,从设计上就已经是反病毒的了。通常的"黑客"技术,比如将程度伪装成文件的术,在AS/400系统中是行不通的。一个文件不能变为程序,反之也不行。黑客不能在AS/400内存中象在基于Windows的系统那样生成指针。客户需要认识到,具有迷惑性的、可能的安全性漏洞是如何出现的;AS/400内置的安全功能又如何。例如,AS/400配备了锁和钥匙,可以锁定系统,避免非法或偶然的事故(如关闭系统)。心怀恶意的雇员不能轻易地从互联网中删除应用工具、插入磁盘或重新启动系统,象在NT Server那样破坏安全性。AS/400D工作机制是不同的。
e) IBM致力于使AS/400成为紧密集成化的系统,包括了系统需要的一切。这种集成化的本质为AS/400带来了显著的优势。集成化数据库,集成化安全性,集成化通讯,集成化Internet支持,集成化POP3电子邮件支持,集成化日志,集成化备份,集成化系统管理等等--这些都有着巨大的价值。紧密的集成不仅意味着低成本,而且同样重要的是,它意味着您可以更快地安装系统,赢得更高的用户满意度。有了AS/400,您就无需花时间去寻找适当的数据库管理系统(DBMS),安全性软件包、备份软件等等。您还可以从OS/400中得到优秀的中间件。其它厂商从中赚取了数十亿的利润。而AS/400则免费提供这些功能。如果用其它系统实现类似功能,费用就会急剧增加。其它厂商要求您为其数据库购买单独用户许可,DB2/400是集成于OS/400上的数据库系统,它和其他数据库厂商的产品在结构和功能上相差无几。DB2在AS/400上的性能明显优于在NT和UNIX系统上的性能,这是由于OS/400与AS/400的硬件高度集成,而DB2/400与OS/400又高度集成所致。DB2/400在数据存取速度和吞吐量的测试中屡破世界记录,正是这个优秀的数据库产品现在是随OS/400免费提供的!在其他系统中,数据库费用本身或许就超过了您在AS/400上投入的资金。
2、 文件系统
a) 简介
TIMI由两部分组成:指令和对象。准确地说AS/400是一个基于对象(object-based)的系统,而不是一个面向对象(object-orientd)的系统。在AS/400中,对象不具备继承性(inheritance),也没有类(class)和子类(subclass)概念。AS/400中的对象就像一种容器(containerz),所有用户和系统的数据结构都被封装在这些容器中,此外,对象的封装性(encapsulation)还表现在对象对外界的透明性,即从外界不能看到对象的内部细节。围绕对象模型建立的系统支持应用程序独立于对象。对象内部数据结构等细节的改变不影响应用程序和操作系统对“对象”的操作。
b) 组织结构
一个目录(library)也是一个OS/400对象。在一个目录中,包含有对象的名称、类型和一个对用户透明的地址指针。通过目录可以在数据库中查找其他OS/400对象。不同于DOS和UNIX中的文件目录结构,AS/400中的目录结构是单层的。
c) 对象的查找
在AS/400中,目录名、对象名和对象类型这三个要素唯一确定一个对象。同一目录下同名的对象必定类型不同。也就是说,在同一目录下允许一个program叫做BEER,另一个data space也叫BEER,但不允许两个program都叫做BEER,此外,一个对象必须属于某一个目录,也只能属于一个目录。 因为AS/400的目录结构是单层的,每一个对象的名称都形如“LOBRARY/OBJECT”,所以一个目录不可能再指向别的目录。但是,有一个特殊的称为QSYS的系统目录例外,它可以指向其他的目录。此外,有些OS/400对象只能出现在QSYS中,如user profile以及与I/O配置相关的对象。
IBM在
d) 其他
i. 在AS/400中,有两个特殊的目录,QSYS和QGLP。在QSYS中包含了许多IBM 提供的程序和数据,而QGPL则是一个通用的目录。这两个目录都是IBM随机提供的,它们存在于任何一个目录表中,归属于SECURITY OFFICER,任何人不得删除和更名。
ii. 此外AS/400中对于库的管理通过一个库列表进行管理,库列表由四部分组成:
1. 系统部分(System Portion):主要存放AS400的系统对象
2. 产品部分(Product Portion):主要由IBM开发的一些库,由系统功能自动维护,用户不能修改
3. 当前库(Current Library):当前用户正在使用的库
4. 用户部分(User Portion):应用程序使用到的库里表。
当对一个对象查找的时候,根据以上的库列表进行查找。
iii. 系统在刚刚创建的时候,会自动产生两个库
1. QGPL:(General Perpose Library)
2. QTEMP:(Temporary Library)
3. 交互方式
用户主要通过控制语言与操作系统进行交互,输入控制语言主要由以下几种方式
b) 在命令行输入
c) 在菜单画面选择
d) 在 work with 菜单中,option 选项
e) 在 CL 程序中执行
f) 远程调用
说明:
1、 对于命令比较熟悉的人员可以在命令行直接输入命令执行。
2、 对于入门者常使用b)和C)的方式进行,AS400提供了命令操作的向导,可以按照步骤一步一步的完成。
3、 CL程序是AS400提供的一种编程语言,相当于windows中的批处理程序。她有自己的一套语法。主要是针对系统操作使用。在编写CL程序以后,需要进行编译,然后使用Call 进行调用。
4. 常用的CL命令
g) 命令格式
CL 使用了一种很科学,较为成功的命名方法。每条命令由
命令名和一系列参数组成。命令名通常由动词加上接受动词的名词
(定义为目标Ob ject)组成,单词通常缩写为三个字母。
例如:
CL 命令 命令名
Send Message SNDMSG
Copy File CPYF
Work with Device Desripyions WRKDEVD
h) 常用的命令介绍如下:
1. WRKACTJOB(整个系统)
WRKJOB(单一工作)
检示系统目前的使用状态 有那些 Jobs 正在运行 , CPU 使用情形及更改 Jobs 属性(运行等级先后次序), 回操作或程序错误讯息, 检示 单一Job 的运行状态,亦可终止 JOB运行(End Job).
2. WRKWTR
STRPRTWTR
ENDWTR
打印机管理 (Wrok with Writer)
打印机激活 (Start Printer Writer)
打印机终止 (End Writer)
3. WRKSYSSTS
(Work with System Status)
检示系统资源 RAM 目前的使用状态.可动态调整资源的分配以取得系统运行最佳化.
4. WRKSPLF
(Work with Spooled File)
报表指定打印印表机, 储存, 删除.
5. WRKJOBSCDE
(Work with Job Schedule Entery)
设定工作排程 时间
6. Go Power
设定开关机时间
7. SAVLIB (Save Library)
SAVOBJ(Save Object)
储存程序馆 --> RSTLIB : 回复程序
储存对象 --> RSTOBJ : 回复对象
8. WRKCFGSTS *LIN
(线路)
(Work with Configuration Status)
WRKCFGSTS *CTL
(控制器)
9. WRKCFGSTS *DEV
(工作站)
检示及管理激活或终止通信线路使用情形 , 且会自动带出远程控制器及工作站使用情形.
10. STRPDM
激活 AS/400 程序开发工具
11. WRKLIBPDM 针对整个链接库所有对象
WRKOBJPDM 针对链接库之单一对象
WRKMBRPDM 针对档案数据成员
以上功能均可对对象(档案)作建立, 复制, 搬移, 删除
12. CPYF(Copy File)
拷贝档案数据成员, 可新增或取代记录
13. WRKMSGQ (*QSYSOPR)
(Work with Message Queue)
检示及回复系统讯息
14. INZTAP(Initialize Tape)
DSPTAP(Display Tape)
格式化磁带
显示磁带内容
15. WRKSBMJOB
(Work with Submitted Job)
检示批次作业状态
16. WRKOUTQ
(Work With Out Queue)
检示报表暂存区 , 报表暂存区须要指定至印表机 , 并激活该印表机(STRPRTWTR)才可印表 . 每台打印机均有一对应之报表暂存区.
17. WRKJOBQ
(Work With Job Queue)
检示待执行之批次工作 暂存区 , 在暂存区排队之工作须要等待系统分配何时执行 , 采先进先出
18. WRKOBJLCK
(Work with Object Lock)
检示对象有无被其它作业使用或对象被何作业锁住, 将之排除
19. CALL
执行程序
20. SNDBRKMSG
(Send Break Message)
送出立即讯息(此命令会中断使用者操作画面盖住 , 并将讯息显示在画面)
21. CHGJOB
(Chang Job)
更改工作属性, 如运行等级(Running Priority)
22. DSPLOG (Display Log)
检示系统历史数据记录
23. CRTSRCPF
(Create Source Physical File)
建立存放 程序(QCLSRC,QRPGSRC,QCBLSRC), 画面及报表格式(QDDSSRC) , 数据库格式定义(QDDSSRC)之 Source 档案
24. CRTPF
(Create Physical File)
使用数据库格式定义(QDDSSRC)之 Source member 建立数据库
25. STRDFU
激活维护数据库工具, 可新增 ,修改 ,查询 ,删除单笔数据
26. STRSDA (Start Screen Design Aid)
激活编修画面格式工具并产生画面 Source
27. STRSQL
激活数据浏览查询工具 ,可一次新增 ,修改 ,查询 ,删除多笔数据
28. STRRLU
(Start Report Layout Utility)
激活报表格式产生工具
29. STRSEU
(Start Source Entry Utility)
激活 Source 编辑工具
30. CRTDSPF
(Create Display File)
使用画面格式(QDDSSRC) ,建立画面供程序使用
31. CRTPRTF
(Create Printer File)
使用报表格式(QDDSSRC) ,建立报表档供程序使用
32. CRTCLPGM
(Create CL Program)
使用程序源文件(QCLSRC)内成员,建立 CL(Control Language) 应用程序
33. CRTRPGPGM
(Create RPG Program)
使用程序源文件(QRPGSRC)内成员,建立 RPG 应用程序
34. CRTCBLPGM
(Create Cobol Program)
使用程序源文件(QCBLSRC)内成员,建立 COBOL 应用程序
35. GO LICPGM
安装或查询 系统及系统应用程序
36. DSPPTF
查询系统目前 已上那些 PTF , (PTF 如同 PC 之 Service Pak)
37. DSPMSG QSYSOPR
检视系统是否有不正常讯息或响应讯息
5. 补充说明
作者:UB 时间:2004-03-18 19:56:24 [修改] [回复] [删除]
RPG入门
王德春 2004.3
一: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):对数据进行持久存储。
2. 设备文件(Device files):容许访问的扩展设备,包括显示文件,打印文件,磁盘文件等。
3. 一般文件(save files):保存在硬盘上的文件
4. 远程文件(DDM files):保存在远程系统上的文件。
b) 每一个IO设备都对应有一个描述文件,在程序中如果要使用到IO设备,就要指定相应的文件。这主要根据操作代码来决定,有的操作代码是设备依赖的,必须指定特定的设备才可以使用,而有些操作代码是和设备独立的,如WRITE等。
产用的设备类型有:
RPG Device Type ――――> iSeries File Type
DISK ――――>database, save, DDM files
PRINTER ――――>printer files
WORKSTN ――――> display, ICF files
SEQ ――――>tape, diskette, save, printer, database
SPECIAL ――――>N/A
c) 描述文件的类型:
1、 一般程序描述文件(program-described file):在输入输出描述的文件中会做相应的处理。
2、 扩展描述文件(externally described file):主要是多个应用程序可以共享数据
a) 通过针对描述文件的不同配置,RPG程序实现了程序和数据的分离,这样可以针对不同的保存数据的设备和形式,来对描述文件进行配置,这样就很容易的实现的程序的灵活性。在设备进行升级以后,程序依然可以使用。
二、通过ILE建立RPG程序:
a) ILE(Intergrated Language Environment)的介绍
ILE是AS400中提供的一套增强编程的工具包,他针对不同的编程语言,都有相应的环境支持,ILE RPG,ILE C,ILE COBOL,ILE CL等。
b) ILE的优势
i. ILE 本身提供了许多程序模块,供程序员调用
ii. 提供编译的环境,可以对代码进行调试
iii. 提供优化的调用性能
iv. 可以集成多种语言
v. 对代码进行优化
vi. 而且提供老版本的代码转换到新版本的代码,主要是针对RPG程序和CL程序。
c) 使用ILE建立一个应用程序的例子
vii. 建立一个库,取名PRTLIB
CRTLIB LIB(PRTLIB) TEXT(‘SAMPLE ILE APPLICATION’)
viii. 将PRTLIB设置为当前库
CHGCURLIB CURLIB(PRTLIB)
ix. 建立一个源码文件在PRTLIB中
CRTSRCPF FILE(SOURCE) RCDLEN(112) TEXT(‘SAMPLE ILE Appliaction’)
x. 编辑文件,输入文件内容,分配源文件类型是CLP,描述信息是OPM,
WRKMBRPDM FILE(PRTLIB/SOURCE)
xi. 按F3键,退出后,建立命令,系统将会产生CRTCLPGM命令。
三、SEU工具的使用
SEU(Source entry utility)源码输入工具。如图:
这个界面的输入分为两部分:
上面的SEU:在之后,可以输入SEU编辑的命令,包括查找等命令,都是辅助编辑使用,可以在输入代码的时候,随时输入命令。
代码输入在Beginning of data 和 End of data之间输入代码,如果要插入一行,必须在行首位置输入I,系统会自动增加一行,同时提示出代码行号。
在此界面按F1,有具体的帮助信息。
四:源码示例
00.10 * PRTPGMR - Print program - OPM
00.20 *
00.30 * QADSPOBJ is the outfile from DSPOBJD - Override occurs in CL
00.40 FQADSPOBJIF E DISK
00.50 FQPRINT O F 132 OF PRINTER
00.60 ****************************************************************
00.70 * Parameter list
00.80 C *ENTRY PLIST Parm list
00.90 C PARM LIB 10 Library
01.00 C EXCPTHDG Prt heading
01.10 ****************************************************************
01.20 * Read a record
01.30 * QLIDOBJD is the format name of the QADSPOBJ file
01.40 C READ QLIDOBJD 20 Read
01.50 * Continue reading until EOF
01.60 C *IN20 DOWEQ'0' Not EOF
01.70 ****************************************************************
01.80 * Use a subroutine to convert the date from MMDDYY to YYMMDD
01.90 C MOVE ODUDAT MMDDYY 6 MMDDYY fmt
02.00 C EXSR CVTDAT Convert date
02.10 C MOVE YYMMDD LSTUSD 60 Last used dt
02.20 C EXCPTDETAIL Print detail
02.30 C OF EXCPTHDG Prt heading
02.40 C READ QLIDOBJD 20 Read
02.50 C ENDDO Loop Back
02.60 * End the program
02.70 C SETON LR Set LR
02.80 ****************************************************************
02.90 C CVTDAT BEGSR
03.00 * Convert date from MMDDYY to YYMMDD format
03.10 C MOVE MMDDYY WORK2 2 Move YY
03.20 C MOVELWORK2 YYMMDD 6 Move YY
03.30 C MOVELMMDDYY WORK4 4 Move MMDD
03.40 C MOVE WORK4 YYMMDD Move MMDD
03.50 C ENDSR
03.60 ****************************************************************
03.70 OQPRINT E 206 HDG
03.80 O 25 'Objects '
03.90 O 'in Library - '
04.00 O LIB
04.10 O E 2 HDG
04.20 O 6 'Object'
04.30 O 18 'Obj type'
04.40 O 30 'Attribute'
04.50 O 42 'Last used'
04.60 O E 1 DETAIL
04.70 O ODOBNM 10
04.80 O ODOBTP 19
04.90 O ODOBAT 33
05.00 O LSTUSDY 41
对于源码的解释如下:
由于还没有很清楚,所以暂不翻译
00.40 The externally described database file is named QADSPOBJ. This is the
name of the file provided by the system that is used when an outfile is
created by the DSPOBJD command. The system essentially copies the
format of the model file to the outfile named on DSPOBJD. The RPG
program describes the file in QSYS because it wants to use the format
that exists in the file. An OVRDBF command in the CL program causes
the DSPOBJDP file in QTEMP to be read instead of the file that is compiled
into the program. Because both files use the same format, the compiled
RPG program knows what the layout of the format is.
00.50 The QPRINT file is described as a fixed-format file. Since no OVRPRTF
command was specified prior to the open operation of QPRINT, the
system provides access to the first QPRINT file found on the library list.
This is probably the QPRINT file supplied by IBM in the QGPL library.
This file causes spooled printed output to occur.
00.80 The PLIST and PARM operation codes provide the means to pass in the
variable library name from the CL program. This library name is printed
on the heading line.
01.00 The EXCPT statement prints the heading line as output.
01.40 The program reads a record using the QLIDOBJD format. This is the
name of the format used in the QADSPOBJD outfile.
01.60 If end of file is detected, the program sets the LR indicator on and returns.
01.80 A subroutine is used to convert the date-last-used field (which exists in the
outfile in a MMDDYY format) to a YYMMDD format. There are many solutions
to the problem of reformatting a date field. In this example, the subroutine
method is used because in a later chapter we change from an
RPG subroutine to a subprogram.
01.90 The program moves the ODUDAT field (date last used) to a common field
(MMDDYY) and then calls the subroutine. This type of coding creates a
general-purpose subroutine that can convert any MMDDYY date format.
When the subroutine returns, the YYMMDD field is moved to the field
named LSTUSD, which is a decimal field, so that editing can occur.
02.20 A detail line is printed.
02.30 If printer overflow occurs, an EXCPT operation is used to print the heading
on the next page.
02.40 The program loops back to read another record.
03.10 The subroutine converts the date to the correct format by using MOVE and
MOVEL operations. There are many other ways to alter the date format,
but this method allows the same code to move to a subprogram with ease
in a later chapter.
03.70 The heading output includes the library name that was passed into the
program.
04.60 The detail line prints several fields.