搜档网
当前位置:搜档网 › AS400基础培训

AS400基础培训

AS/400基础培训

目录

1AS/400体系结构介绍 (2)

1.1AS/400性能概述 (2)

1.2对象和对象管理 (2)

1.3工作管理 (3)

2AS/400的基本操作 (4)

2.1菜单、入口、列表和信息 (4)

2.2常用命令 (5)

3ILE RPG/400编程入门 (6)

3.1文件的创建和操作 (6)

3.1.1物理文件 (6)

3.1.2逻辑文件 (7)

3.2ILE RPG程序编写 (7)

3.2.1常用规范表 (7)

3.2.2内部函数 (9)

3.2.3表达式 (9)

3.2.4操作码 (10)

3.3模板学习 (11)

3.4编程练习 (12)

4SQL/400介绍 (12)

1AS/400体系结构介绍

1.1 AS/400性能概述

?集成性

AS/400把数据库、通讯、安全性等功能集中在操作系统中,最大限度地实现了各功能之间的兼容性。

?开放性

支持SNA、TCP/IP协议,DB2/400可与大多数数据库系统实现互联。

?可移植

对SPEC1170的支持可达到95%,相当于一般UNIX操作系统。

?兼容性

所有应用可上下兼容。

?可连接性

哑终端(5250)、仿真终端(PC Communication、Client Access、GUI)

?可支付性

?可扩充性

1.2 对象和对象管理

?基于对象

AS/400中,MI由指令和对象组成。也就是说,AS/400是基于对象(object-based)的系统,而不是一个面向对象(object-oriented)的系统。在AS/400中,对象不具备集成性,也没有类和子类的概念。

在AS/400的定义中,系统上所有可存储和检索的东西,都叫做对象。对象由描述这个对象的描述和它的值组成。对象的描述包括:名称、类型、大小、建立日期、建立对象者提供的简单描述、以及存储对象的库的名称。

?对象的要素

目录名、对象名和对象类型唯一确定一个对象。

?对象目录

AS/400中的目录结构是单层的,因此对象的表达形式为“Library/Object”。特殊系统目录QSYS可指向其他目录。目录的两种类型:Production和Test。

?目录表

*LIBL、*CURLIB、*SYSLIBL、*USRLIBL、*IBM、*ALLUSR、*ALL

EDTLIBL,ADDLIBLE,DSPLIBL、CHGCURLIB、QSYSLIBL、QUSRLIBL

?对象的类型

*PGM、*FILE、*LIB、*JOBD、*USRPRF、*JOBQ、*DTAARA、*CMD、*MSGQ等。

?对象的权限

用户描述:包含User Class、ObjectsOwened and Authorized、Authorization of objects、Privileged Instructions and Special Authorities等。

?用户类

Security Officer(*SECOFR)

Security Administrator(*SECADM)

System Programmer(*PGMR)

System Operator(*SYSOPR)

Workstation User(*USER)

?可操作对象

自己拥有的对象

他人授权访问的对象

有公共权限的对象

?对象的权限

*ALL(对象的操作、管理、生存、权限表管理、读、添加、删除和修改)

*CHANGE(对象的操作、读、添加、删除和修改)

*USE(对象的操作、读)

*EXCLUDE(无权访问对象)

?特权指令和特殊权限

*ALLOBJ

*SECADM

*SA VSYS

*SERVICE

*JOBCTL

*SPLCTL

*IOSYSCFG

*AUDIT

?程序引用权限

?组权限

Authorization List和Group Profile。

?权限查找

User Profile、Group Profile、Public

1.3 工作管理

?作业(job)

?打印作业(SPOOLING)

?交互作业(INTERACTIVE)

?后台作业(BA TCH)

?自启动作业(AUTOSTART)

?通讯作业(COMMUNICA TION)

组成作业的3部分:作业号、用户名和作业名,Number/User/Name。

?子系统(SubSystem)

是一个预定义的操作环境,对应每个子系统有一个子系统描述。可设置最大并发作业数、

内存池大小和个数、作业的来源、作业的运行属性等。

QBASE、QBA TCH、QINTER、QCTL、QCMN、QSPL

?内存池(Storage Pool)

共享池(Shared pool)和私有池(Private pool)

*MACHINE(QMCHPOOL)

*BASE(QBASPOOL)

*SPOOL

*INTERACT

*SHRPOOL1-10

?队列(Queue)

消息队列(Message Queue)

作业队列(Job Queue)

输出队列(Output Queue)

数据队列(Data Queue)

?作业描述(job Description)

设置作业的属性,如Job Queue、Job在Job Queue中的优先级、Output queue、printer device、libl等。

DSPJOBD命令

SbmJob缺省为*UsrPrf

2AS/400的基本操作

2.1 菜单、入口、列表和信息

?菜单

?菜单的组成

菜单标题、菜单标识符、菜单选项列表、命令提示行、功能键、消息行

?菜单分类

MAIN, SYSTEM, ASSIST, USER

?菜单操作

Go 菜单名

?入口(输入界面)

录入命令选项

F4 - 输入项提示

F1 - 输入项帮助说明

F5 - 刷新

F12 - 取消录入,并退出前一界面

F3 - 退到用户主菜单

Enter - 执行命令

F10 - 额外的命令

F9 - 所有的命令

F24 - 更多的功能键显示

+ < > - 列表操作

?列表

二维表格,显示一组实体

标题- 对实体的描述

操作选项- 对可选操作的描述

输入操作域- 输入可选操作

命令提示行

功能键提示行

消息提示行

?信息

显示帮助信息

PageUp/PageDown - 上下翻页

F12 - 退出至前一页

2.2 常用命令

?命令的组成

动词+宾语

?命令参数

关键字格式:CPYF FROMFILE(FILEA)TOFILE(FILEB)

位置格式:CPYF FILEA FILEB

参数提示格式(F4)

?动词

Change - CHG

Display - DSP

End - END

Hold - HLD

Release - RLS

Start - STR

Work with - WRK

?宾语

Command - CMD

Data area - DTAARA

Job Queue - JOBQ

Output Queue - OUTQ

Spooled File - SPLF

System value - SYSV AL

User Profile - USRPRF

?常用命令

?Object:

CRTDUPOBJ、MOVOBJ、SA VOBJ、RSTOBJ、WRKOBJ、WRKOBJLCK、WRKOBJPDM

?File:

CPYF、DLTF、DSPFD、DSPFFD、DSPDBR、CRTSA VF、CRTSRCPF、CLRSA VF、

UPDDTA

?SPLF

CPYSPLF、DLTSPLF、DSPSPLF、HLDSPLF、RLSSPLF、WRKSPLF、MEMBER、CLRPFM、RGZPFM、WRKMBRPDM

?LIB

CRTLIB、DLTLIB、DSPLIB、SA VLIB、RSTLIB、WRKLIB、WRKLIBPDM

?JOB

CHGJOB、DLYJOB、DSPJOB、DSPJOBLOG、ENDJOB、HLDJOB、RLSJOB、SBMJOB、SIGNOFF、WRKACTJOB、WRKSBMJOB、WRKSBSJOB、WRKUSRJOB

?SYSTEM:

DSPSYSSTS、DSPSYSV AL、DSPLOG、WRKSYSSTS、WRKSYSV AL

?Message

DSPMSG、SNDBRKMSG、SNDMSG、WRKMSG

?MSGF

CHGMSGF、CRTMSGF、DLTMSGF、WRKMSGF、ADDMSGD、CHGMSGD、DSPMSGD、RMVMSGD、WRKMSGD

3ILE RPG/400编程入门

?应用设计的实现工具

?PDM (Programing Development Manager)

?SEU (Source Entry Utility)

?DFU (Data File Utility)

?SDA (Screen Design Aid)

?RLU (Report Layout Utility)

3.1 文件的创建和操作

3.1.1物理文件

存取实际数据,对应于表,可多成员。

?文件名:

?A-Z, @, $, # 开头

?其他:A-Z,@,$,#, _, 0-9

?少于等于10个字符

?数据类型

?A - character

?O - DBCS Open

?T - Time

?Z - Timestamp

?S - zone decimal

?P - packed decimal

?DDS - 关键词

?文件级:REF,UNIQUE,FIFO,FCFO,LIFO

?记录级:FORMA T,TEXT

?字段级:COLHDG,ALIAS, CMP,RANGE,V ALUES,REFFLD

?关键字段级:DESCEND,ABSV AL,UN-SIGNED,SIGNED

3.1.2逻辑文件

用于排序,选择,连接,有非连接逻辑文件和连接逻辑文件。

?非连接逻辑文件

?关键词

记录级:增加PFILE

字段级:增加RENAME、CONCA T

关键字段级:同物理文件

SELECT/OMIT关键词:第17列,S为Select, O为OMIT,对应的关键词有:ALL,COMP,V ALUE,RANGE

3.2 ILE RPG程序编写

如果第7列为* 则不管该行为什么规范表,都表示该行为注释行。

F表和D表的第43列为保留列。

3.2.1常用规范表

?文件描述规范表(F表)

定义在程序中使用的每一个文件。

第6列为F;

第7-16列为文件名;

第17列为外部描述文件的类型

I 输入文件

O 输出文件

U 更新文件

C 组合文件

第18列为文件规定

空格输出文件

F 全过程文件

第20列为文件增加

A对输入文件或更新文件增加记录,但C表中必须有Write操作。

第22列为文件格式

E 外部描述文件。

第34列为文件格式

空格按相对记录数来处理文件

K 按键字值来处理文件(仅对外部描述文件有效)。

第36-42列为设备

PRINTER 打印文件

DISK 磁盘文件

WORKSTN 工作站文件(通过显示文件输入或输出)

第44-80列为键字

COMMIT 允许用户在落实控制下处理文件

INFDS(DS名)定义和命名一个数据结构来存放与文件有关的反馈信息

OFLIND(*INxx)定义一个溢出指示器(仅对PRINTER有效)

RENAME(外部格式:内部格式)外部文件的记录格式重命名

SFILE(记录格式:相对记录号)说明子文件的相对记录号(显示文件中用)

USROPN 程序初始化时不打开文件

?定义规范表(D表)

用来定义数据结构、数据结构子字段、独立字段和命名常量。

?RPG IV支持的数据类型

字符型、数据型、图表型、日期型、时间型、时间标记型、基本指针型、过程指针型。

第6列为D;

第7-21列为名字;

第22列为外部描述表示数据结构是外部描述的。

第24-25列为外部描述表示数据结构是外部描述的。

空格定义一个数据结构子字段

DS 定义一个数据结构

C 定义一个常量(25列必须为空)

S 定义一个独立字段、数组或表

第26-32列为FROM位置

第33-39列为TO位置或长度,常量或独立字段用Like键字时可为空

第40列为内部数据类型

第41-42列为十进制小数位

第44-80列为键字

CONST(常量)命名常量的值

CTDA TA 表示为编译时间数组

DA TFMT(格式{分隔符})为日期字段规定格式和分隔符

DIM(数字常量)定义数组或表中元素的个数

DTAARA{(数据区名)} 把变量和外部数据区联系

EXTFLD(字段名)给在外部描述数据结构的子字段重命名

EXTNAME(文件名{:格式})说明外部文件的名字

INZ{(常量)} 初始化

LIKE(变量名)引用参数变量的属性和长度。

OVERLAY(名字{:位置})在数据结构子字段中覆盖子字段

PREFIX(前缀串{:长度})以前缀串替代外部描述数据结构的子字段名的前缀

TIMFMT(格式{:分隔符})规定时间类型变量的格式或分隔符

?计算规范表(C表)

第6列为C;

续行时第6列为C,7-35为空,36之后续写。

C表语句分计算说明语句和计算扩展因子2规范语句

?计算说明语句

第9-11列(指示器)决定是否执行某个计算

第12-25列(因子1)用来执行操作的字段名或数据

第26-35列(操作和扩展)说明操作类型

操作扩展有:

空格不支持扩展操作

H 数据操作的四舍五入结果

N 读更新磁盘文件记录但不加锁

P 用空格来填充结果字段

D 操作的描述或日期字段

T 时间字段

Z 时间标记字段

第36-49列(因子2)字段名、记录格式或文件名或操作的实际数据等

第50-63列(结果字段)字段名或记录格式名

第71-76列(结果指示器)检测及过字段的值或支出文件末、错误或记录没找到的情

况。

?计算扩展因子2规范说明

第9-11列(指示器)同上

第12-25列(因子1)必须为空格

第26-35列(操作和扩展)说明在扩展因子2使用表达式所执行的种类

操作扩展有:

空格不支持扩展操作

H 数据操作的四舍五入结果

第36-80列(扩展因子2)自由格式语法,有操作数和操作符组成。

3.2.2内部函数

内部函数的语法:函数名(自变量{:自变量})

?%SIZE(变量)返回字段占用的字节数。

?%SUBST(串:起始位置{:长度}) 返回自变量串的一部分。

?%TRIM(字符串)返回去掉引导及结尾空格的指定字符串。

?%TRIML(字符串)返回去掉前置空格的指定字符串。

?%TRIMR(字符串)返回去掉结尾空格的指定字符串。

3.2.3表达式

表达式由操作数和运算符组成,可作为计算规范表中的扩展因子2。

表达式可以是一元关系的表达式运算符:{+、- 、NOT} ;也可以是二元关系的表达

式运算符:{+ (数据加或字符连接)- (减法)、* (乘法)、** (取幂)、/ (除法)、= (等于)、>= (大于等于)、> (大于)、<= (小于等于)、< (小于)、<> (不等于)、AND (逻辑与)、OR(逻辑或)};也可以是内部函数。

运算符的优先级从高到低为

1、()

2、内部函数

3、一元关系的+,-,NOT

4、**

5、*,/

6、二元关系的+,-

7、=, >= , > , <= , < ,<>

8、AND

9、OR

任何数据字段、命名常量或文字都可以作为操作数。

3.2.4操作码

?ADD(加)

?BEGSR(开始子过程)

?CALL(调用一个程序)

?CALLB(调用连接过程)

?CHAIN(从文件中检索)

?CHECK(效验字符)

?CLEAR(清除)

?CLOSE(关闭文件)

?COMMIT(落实)

?DELETE(删除记录)

?DIV(除法)

?DO(do)

?DOU(Do Until)

?DOW(Do While)

?ELSE(否则)

?ENDyy(结束一个结构组)

?ENDSR(结束子程序)

?EV AL(计算表达式)

?EXFMT(写/然后读格式)

?EXSR(激活子过程)

?IF(if)

?IN(检索一个数据区)

?ITER(重复)

?KFLD(定义键字部分)

?KLIST(定义组合键字)

?LEA VE(跳出一个DO组)

?LOOKUP(查找表或数组元素)

?MOVE(传送)

?MOVEA(传送数组)

?MOVEL(左传送)

?MULT(乘法)

?MVR(传送余数)

?OPEN(打开文件)

?OTHER(其他)

?OUT(写数据区)

?PRAM(参数)

?PLIST(参数列表)

?READ(读一个记录)

?READC(读下一个修改过的记录)

?READE(读等于键字的记录)

?READP(读前面的记录)

?READPE(读前面等于键字的记录)

?RESET(重新设置)

?RETURN(返回到调用者)

?ROLBK(取消)

?SCAN(扫描子串)

?SELECT(开始一个选择组)

?SETGT(设置大于)

?SETLL(设置低界)

?SETOFF(设指示器OFF)

?SETON(设指示器ON)

?SQRT(求平方根)

?SUB(减)

?TIME(时间)

?UNLOCK(解锁数据区或释放一个记录)?UPDA TE(修改存在的记录)

?WHEN(当为真时选择)

?WRITE(生成新记录)

?Z-ADD(零加)

?Z-SUB(零减)

3.3 模板学习

?显示文件模版

?打印文件模版

?RPGLE程序模版

?CLLE程序模版

3.4 编程练习

按模版编写一组简单的程序。

4SQL/400介绍

本节介绍基本SQL语句和检索、修改、删除以及把数据插入表和视图中的子句。SQL 语

句中常用的是SELECT、UPDATE、DELETE和INSERT四个语句。

?INSERT语句

INSERT INTO table-name

(column1, column2, ... )

VALUES (value-for-column1, value-for-column2, ... )

INTO子句规定列的名字,VALUES子句给在INTO子句里规定的列指定值。

在INSERT语句列表里命名的列,都必须在VALUES子句里提供一个值。如果表中各列都有在VALUES子句里提供的值,那么列名可以省略。如果某一列有一个缺省值,则键字DEFAULT 可用做VALUES子句中的值。

?UPDATE语句

UPDATE 表名

SET 列-1 = 值-1,

列-2 = 值-2, ...

WHERE 检索条件 ...

为了规定需要修改的行,使用WHERE子句:

要修改一行,使用仅选择一行的WHERE子句。

要修改多行,使用选择需要修改那些行的WHERE子句。

可以省略WHERE子句,如果这样,SQL将修改表或视图中提供值的每一行。

?DELETE语句

DELETE FROM 表名

WHERE 检索条件

WHERE子句告诉SQL要从表中删除哪些行。SQL删除所有符合基本表查询条件的行。可以省略WHERE子句,但最好还是包括它,因为没有WHERE子句的DELETE语句将从表或视图中删除所有行。

?SELECT语句

?SELECT子句

用SELECT子句(选择语句的第一部分),设定要检索的每列名称,例如:

SELECT field1,field2 FROM FILE1

可以指定检索一列,或者至多8000列。检索的列值按SELECT子句指定的顺序进行。

如果想检索所有的列(按出现在行中的相同顺序),那么用星号(*)不必写列名:

SELECT * FROM File1

?WHERE子句

WHERE子句设定一个检索条件,用来识别需要检索、修改、或删除的行,用SQL语

句处理的行数由满足WHERE子句查询条件的行数决定。检索条件由一个或多个谓词

组成,一个谓词指定一个检测,SQL对表的规定行进行操作。

?GROUP BY子句

GROUP BY子句允许找到多行的一组特性,而不是一行的特性。当规定GROUP BY

子句时,SQL把选择的行分组,使每组的行在一列或多列有相匹配的值。接下来,

SQL处理每组产生的单行结果。可以在GROUP BY子句中规定一列或多列给行分组。

在SELECT语句中规定的项是行的每组属性,而不是表或视图各行的属性。

?HAVING子句

对用GROUP BY子句选择的分组,可以使用HAVING子句规定检索条件。HAVING子

句表明只要满足子句条件的那些组。由HAVING子句规定的检索条件测试每组的属

性,而不是组里每行的属性。

HAVING子句在GROUP BY子句之后,可包括由WHERE子句规定的同种检索条件。

另外,可以用HAVING子句规定列函数。

?ORDER BY子句

用ORDER BY子句可以指定按某个顺序进行检索来选择行,按列值的升序或降序进

行分类排序。ORDER BY子句的使用与GROUP BY子句类似:当按分类顺序检索行

时,规定列名或SQL使用的一些列。

?从多个表中连接数据

?内部连接

用内部连接,一个表中一行的列值与另一表(或同一表)中另一行的列值组合形成

一个数据行。SQL检查连接规定的每个表,来检索满足查找条件的所有行。有两种

方法指定一个内部连接:用JOIN句法和用WHERE子句。

◆用JOIN句法进行内部连接

用内部连接句法,想要连接的两个表都列在FROM子句中,加上连接所需的条

件,连接条件在ON键字后指定,用来决定两个表怎样互相比较并产生连接结

果。条件可以是比较操作符,它不需要相等的操作,可以在用AND键字分开的

ON子句中指定多个连接条件,对实际连接没有影响的其它条件都在WHERE子

句中规定。

SELECT Fld1,Fld22,Fld2 FROM File1 JOIN File11 ON Fld1=Fld11 WHERE

Fld1 >’S’

◆用WHERE子句的内部连接

用WHERE子句实现同样的连接,是用连接条件和在WHERE子句中附加的选择条

件写出的,被连接的表在FROM子句中列出,之间用逗号分开。

SELECT Fld1,Fld22,Fld2 FROM File1 , File11 WHERE Fld1=Fld11 AND

Fld1 >’S’

尽管用JOIN句法和WHERE子句进行的内部连接返回的结果是相同的,但这两种方

法的性能是不同的,用JOIN语法将影响查询优化,当做连接时各个表以列出的顺

序排列。当用WHERE子句时,查询优化将评估要连接的表,如果用另一种顺序执行

得更好,则重新排列。

?子查询和检索条件

WHERE X IN (subquery1) AND (Y > SOME (subquery2) OR Z = 100)

?使用子查询

在WHERE或HAVING子句中包含一个子查询有四种方法,下面逐一介绍。

◆基本比较

可以在任何比较操作符后立刻用子查询,如果这样做,子查询可以返回至多一

个值,这个值可能是列函数或一个算术表达式的结果。

WHERE Fld1 > (SELECT Fld11 FROM ...

◆限定比较(ALL、ANY和SOME)

可用在比较操作符后跟着键字ALL、ANY和SOME的子查询。用这种方法时,子

查询可以返回零个、一个或多个值,包括空值。可以用下面的方法使用ALL、

ANY和SOME:

用ALL表示你所提供的值必须用指出的方式与子查询返回的所有的值比较。

…WHERE 表达式 > ALL(子查询)

为满足这个WHERE子句,表达式的值必须大于子查询返回的所有值(就是

说,要比最大值还要大)。如果子查询返回一个空集,(也就是,没有选择

值),认为条件是满足的。

用ANY或SOME表示所提供的值必须用指出的方式与子查询返回的至少一个值

进行比较。假设用带ANY的大于比较操作符:

…WHERE 表达式 > ANY(子查询)

为满足这个WHERE子句,表达式的值必须至少大于子查询返回的一个值。

就是说,大于最低的值)。如果子查询返回空值,则认为条件不满足。

◆使用IN键字

可用IN去说明表达式中的值必须在子查询返回的值中,用IN与用 =ANY或

=SOME是等价的。

…WHERE WORKDEPT NOT IN(SELECT……)

◆使用EXISTS键字

当用键字EXISTS时,SQL只简单地检查子查询返回的是一行或多行。也可以

用带NOT键字的EXISTS键字,这样在当指定的数据或条件不存在时用来选择

行。可以用:

…WHERE NOT EXISTS(SELECT…)

补充:

CHGUSRPRF Change User Profile 可以改变用户的属性,登陆作业的子系

统等。

CHGSBSD Change Subsystem Description 子系统就像可存作业队列的

文件,可以为子系统分配内存。

相关主题