AS400开发初阶.docx
- 文档编号:27778132
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:26
- 大小:25.20KB
AS400开发初阶.docx
《AS400开发初阶.docx》由会员分享,可在线阅读,更多相关《AS400开发初阶.docx(26页珍藏版)》请在冰豆网上搜索。
AS400开发初阶
AS/400开发初阶
1OS/400
1.1基本系统概念
●对象
AS/400的操作对象称为:
Object。
Object包括的信息:
1.包含该对象的库
2.对象名
3.对象类型(*PGM,*FILE,…)
4.对象的属性(对于*FILE,有LF,PF-DTA,PRTF,DSPF)
5.拥有该对象的用户权限
AS/400的对象由(库/对象名/对象类型)唯一确定。
查看某对象:
WRKOBJ
●库
库也是一种对象,相当于AS/400的目录。
DOS目录有多级,即目录下有目录。
但库只有一级,库下不能有库。
AS/400的文件系统只有3级:
库->文件->成员;
例如在APPLIB库下有APPPF的文件,表示为APPLIB/APPPF。
创建库:
CRTLIB
●库列表
相当于作业的工作目录,类似于DOS的PATH
当前作业库列表的常用命令:
dsplibl
edtlibl
addlible
●汉字支持
使用汉字支持:
CHGSYSLIBLQSYS2989
不使用汉字支持:
CHGSYSLIBLLIB(QSYS2989)OPTION(*REMOVE)
●命令菜单
OS/400中,进入一个菜单,用gomenuName
查看某一相关的命令
goCMDxxxxxx代表命令含义的缩写,例如想看与库有关的命令,gocmdlib
1.2作业
⏹概念
作业:
AS/400所有程序运行以JOB方式
命令:
wrkactjob
子系统(subsystem):
在OS/400中的一个作业运行环境,该运行环境定义一定的资源,如CPU,内存,IO等。
在OS/400中可以定义多个子系统
作业标识:
Jobname/Jobuser/JobNumber
F11可看到
5-workwith看
作业类型:
BCH,INT
作业功能:
PGM-QEZSCNEP,CMD-WRKACTJOB,MNU-MAIN
作业状态:
RUN,DSPW,DEQW,MSGW
⏹常用命令
管理活动作业:
wrkactjob
管理某一作业:
wrkjobjob(Number/User/Name);
管理当前作业:
wrkjob;
终止作业:
wrkactjob+4+option(*immed);
终止当前作业的当前运行程序(例如程序死锁):
查看作业日志:
dspjoblog;wrkjob;
查看作业打开的文件:
dspjoblog+14
查看作业的库列表:
dspjoblog+13
当查看JOB的LOG的信息
1.显示作业的LOG列表
2.将光标移到某行信息,按F1看详细信息
3.看该信息由那一程序产生。
再按F9
4.AS/400的信息文件(MSGF,由应用EC/系统定义)
WRKMSGF命令
后台业务系统的MSGF:
EC
常用系统MSGF:
QCPFMSG
1.2.1程序开发
1.2.2PDM介绍
PDM是AS/400的集成开发环境
AS/400的程序文件结构
库(libraries)/源码文件(objects)/源码成员(members)(程序源码)
使用PDM
1.进入PDM命令
STRPDM
2.显示PDM的菜单,选1,并键入指定源码库
3.显示该指定源码库
(1)按F6,创建新源码库
(2)在指定的库,键入12,进入该源码库
4.显示该指定源码库的所有源码文件
(1)按F6,创建新源码文件
(2)键入12,进入指定的源码文件
5.显示该源码文件下的所有源码成员
(1)按F6,创建新的源码成员
(2)键入2,编辑源码
(3)键入3,拷贝源码
(4)键入4,删除源码
(5)键入5,显示源码
6.退出PDM
(1)按F12,退回上一级
(2)按F3,退到PDM菜单
1.2.3AS/400的源码编辑器
*启动编辑器:
STRSEU命令/PDM
*编辑界面分三部分
行序号——系统产生
数据内容——用户编辑
最后修改日期——系统产生
*左移屏幕F19;右移屏幕F20;
*编辑命令(在行序号上敲入命令)
1.位置
A-在当前行后
B-在当前行前
2.插入行
I-在当前行后,插入一空行
3.删除行
D-删除当前行
4.删除行块
DD-在行块的首行位置,键入DD
DD-在行块的尾行位置,键入DD
回车
5.拷贝行
C-在要拷贝的行位置,键入C
A/B-拷贝到目标位置的后/前
回车
6.拷贝行块
CC-在行块的首行位置,键入CC
CC-在行块的尾行位置,键入CC
A/B-拷贝到目标行位置的后/前
回车
*存盘
在SEU命令行,键入SAVE
*退出SEU
F3
1.2.4AS/400的程序
*程序类型
C
CL
CLLE
RPGLE
*创建程序源码
2.创建一个源码库
CRTLIBLIB(MYLIB)
3.创建一个源码文件
CRTSRCPFFILE(MYLIB/MYSRCPF)RCDLEN(112)IGCDTA(*YES)
4.创建一个源码成员
STRSEUSRCFILE(MYLIB/MYSRCPF)SRCMBR(MYSRCMBR)TYPE(RPGLE)
备注:
(1)源码文件其实是一种类型的数据库文件,该数据库的记录结构由3个字段构成:
字段名类型 长度
SRCSEQ数字6,2源码行序号
SRCDAT数字6源码行最后修改日期
SRCDTA字符100源码行内容
编写源码行,就相当于往数据库添加记录
(2)程序源码是源码文件中的一个源码成员,源码文件可以包括多个源码成员
*程序编译
RPGLE程序,使用CRTBNDRPG命令
CRTBNDRPGPGM(PGMLIB/MYPGM)SRCFILE(MYSRCPF/MYSRCMBR)
SQLRPGLEC程序,使用CRTSQLRPGI命令
CL,CLLE程序,使用CRTBNDCL命令
PDM中,编译快捷命令
14编译
CPRPGLE的编译
CQSQLRPGLE的编译
*程序编译出错
查编译信息:
使用编译产生的SPOOLFILE,它是一个文本文件,报告编译过程中的相关信息。
用WRKSPLF命令,列出本交互作业的所有SPOOLFILE,找出名字与程序名字相同的最后一个SPOOLFILE,就是最后一次编译所产生的SPOOLFILE。
查看一般流程:
1.进入SPOOLFILE
2.在Control栏敲入”b”,(bottom),翻到SPOOLFILE的最后
3.在MessageTotals:
项中,如果没有(警告/错误/严重错误)的信息,则表示编译通过
Warning(10).......:
0
Error(20).......:
0
SevereError(30+)......:
0
4.如果编译不通过,往前翻一页,按PgUp键,查看错误报告
MsgidSvNumberMessagetext
*RNF703100108xxxxxxxx
*RNF7066001xxxxxxxx
*RNF7030301xxxxxxxx
5.注意”Sv”中,不为00的项目,即为编译不通过错误语句
6.查看源码中错误语句,在Find栏中,敲入”Sv”不为00的Msgid,例如RNF7030,然后按F16搜索源码,定位在出错的源码语句
7.退出SPOOL FILE,重新进入源码编辑,修改源码
8.重新编译
*程序执行
CALL PGM(MYLIB/MYPGM)PARM(“PARM1”“PARM2”“PARM3”)
*程序调试
使用源码调试的程序,使用编译命令编译时参数DBGVIEW不能为*STMT
(1)启动调试
STRDBGPGM(PGMLIB/PGMOBJ)UPDPROD(*YES)
(2)设置调试断点
将光标停在断点源码行,按F6。
如要取消断点,再按F6
可以设置多个断点
(3)完成设置断点后,退出
(4)调用程序,进入程序并停在断点
CALLPGM(BANKOBJ/MYRPGLE)
(5)调试命令
*单步执行F10
*多步执行F12
*可以重新设置/取消断点F6
*显示变量值VAR1
方法1.将光标移到该变量VAR1,按F11
方法2.在debug命令行,键入EVALVAR1
*改变变量值VAR1
EVALVAR1=xxxxxx
(6)退出程序
F3
(7)结束调试
ENDDBG
2DB2/400简介
2.1DDS简介
DDS(数据描述规范)是一种源码,是创建物理文件、逻辑文件、显示文件等源码。
使用PDM编写DDS
2.2创建一个物理文件PF
物理文件是存放实际数据的数据库文件。
源码类型:
PF
PFDDS的内容分4部分
(1)文件级关键字
作用范围:
整个PF
REF(PFNAME)字段定义参照自PFNAME的字段
UNIQUE控制索引键字唯一
…
(2)记录定义
*定义记录
名称类型为R
RRCDNAME
*记录级关键字
FORMAT(PFNAME)记录结构参照自PFNAME的记录结构
….
(3)字段定义
*字段名
*字段类型
P-压缩型数字
S-区位型数字
‘’或A-字符
L-日期
T-时间
O-支持汉字的字符
*字段级关键字
COLHDG(‘字段描述’)
(4)索引键字
如果有索引键字定义,则该数据库文件包含索引
名称类型为K
可以有多个键字
编译DDS,创建PF
CRTPF命令
或14
2.3创建一个逻辑文件LF
逻辑文件是索引文件
(1)文件级关键字
UNIQUE控制索引键字唯一
(2)记录级关键字
PFILE(PFNAME)逻辑文件对应的物理文件
(3)索引键字
名字类型K
可以有多个索引键字
2.4DB2的常工具
⏹RUNQRY
浏览数据库文件
RUNQRYQRYFILE((AM1))
RUNQRYQRYFILE((AM1))RCDSLT(*YES)
⏹UPDDTA
UPDDTAFILE(BANKDTA/MYPF)
增加/更新/删除记录
1.F9当前插入记录
2.F23删除当前记录
3.回车更新当前记录
4.F3退出
⏹STRSQL
执行SQL语句
3RPG语言
RPGLE的结构分为以下几部分
3.1H定义
3.2F数据库引用
每一行F源码结构:
FNameTypeDesigEOFA/USeqFmtLmtsRATDeviceKeywordsComment
定义格式:
●文件名字
●使用类型
I只读
O只写,不能更新
U更新
●文件指定
F全过程文件
●文件添加
A文件可以进行记录
●文件格式
E外部描述文件
●地址类型
空不使用索引语句,不能用CHAIN,SETxx语句
K使用索引语句
●设备
DISK数据库文件
●关键字
PREFIX(xxx)引用数据库字段前加前缀xxx
COMMIT使用数据更新的确认/回滚机制
程序中使用COMMIT,该作业必须事先启动COMMIT控制
启动COMMIT:
STRCMTCTLLCKLVL(*CHG)
关闭COMMIT:
ENDCMTCTL
USROPN用户程序自定义打开。
如果没有该关键字,程序打开时就打开文件。
3.3D数据定义
每一行D源码结构:
NameES/UTypeFromTo/LengthDataTypeDecPosKeywordsComment
3.3.1定义格式
●数据名称
●说明类型
C常量
S独立变量
DS数据结构
●长度
●数据类型
空/A字符
D日期
P/S压缩/区位数字
T时间
*指针
●小数位长度
●关键字
3.3.2例子
●定义常量
NameTypeTo/LengthDataTypeDecPosKeywords
C_VARC'HELLO'
●定义字符变量
NameTypeTo/LengthDataTypeDecPosKeywords
V_STRS10A
●定义数值变量
NameTypeTo/LengthDataTypeDecPosKeywords
V_NUMS14S2
小数点定义要右对齐、
●定义日期变量
NameTypeTo/LengthDataTypeDecPosKeywords
V_DATESD
系统默认使用*ISO日期格式,即2002-09-21格式
●定义时间变量
NameTypeTo/LengthDataTypeDecPosKeywords
V_TIMEST
●定义数组
定义有10个元素的字符数组
NameTypeTo/LengthDataTypeDecPosKeywords
V_DIMS10ADIM(10)
数组元素使用,建议使用RPGIV的格式。
V_DIM(N)
●定义数据结构
NameTypeTo/LengthDataTypeDecPosKeywords
ACCTDS
CUNO10A
ACSF5A
3.4C计算逻辑
3.4.1常用C源码结构
每一行C源码结构:
LvlN01Factor1OpCodeFactor2ResultLenDecHiLoEqComment
●指令因子1
●指令操作码
●指令因子2
●执行结果
●长度
如果执行结果字段不是在D数据定义部分定义的,这需要在该行源码定义
●小数位长度
如果执行结果字段不是在D数据定义部分定义的,这需要在该行源码定义
●Hi指示器
Hi指示器。
指示器的概念:
对于执行了某些RPG指令,系统将视情况改变指示器的值。
指示器只有两个值:
*ON/*OFF,或者’1’/’0’
例如按某索引键字定位数据库文件某一记录
Factor1OpCodeFactor2ResultHiLoEq
KEYCHAINRCD80
该语句定义了*IN80指示器。
数据库PF不存在有KEY这个索引键字的记录,则*IN80被系统置为*ON;否则置*OFF
●Lo指示器
●Eq指示器
3.4.2程序参数
Factor1OpCodeFactor2ResultHiLoEq
*ENTRYPLIST
PARMparm1
PARMparm2
3.4.3子例程
子例程
*概念:
相当于程序里的过程
*使用:
(1)定义子例程代码段
在程序最后定义:
形式
Factor1OpCodeFactor2ResultHiLoEq
SRNAMEBEGSR
….//子例程代码
ENDSR
(2)执行子例程
Factor1OpCodeFactor2ResultHiLoEq
EXSRSRNAME
自定义子例程
有(1)部分,也有(2)部分
系统子例程
有(1)部分,但由系统执行
*INZSR-程序的初始化,执行程序首先执行该子例程
3.4.4调用其他程序
Factor1OpCodeFactor2ResultHiLoEq
CALL‘PGMNAME’
PARMPARM1
PARMPARM2
3.4.5程序分支
●逻辑表达式
使用OR、AND、NOT
●IF选择语句
IF/ENDIF
例子:
Factor1OpCodeFactor2ResultHiLoEq
IFVAR1=’var1’OR
VAR2=’var2’
。
。
。
ENDIF
●SELECT多项选择语句
SELECT/WHE/OTHER/ENDSL
例子:
Factor1OpCodeFactor2ResultHiLoEq
SELECT
WHENVAR1=’var1’ANDVAR2=’var2
。
。
。
WHENVAR1=’rav2’
。
。
。
OTHER
。
。
。
ENDSL
●DOW循环语句
DOW/ENDDO
例子:
Factor1OpCodeFactor2ResultHiLoEq
DOWNUM1<=50ANDNUM1>10
。
。
。
IFNUM1<=30ANDNUM1>20
ITER//重新回到循环开始
ENDIF
。
。
。
IFNUM1<40ANDNUM1>35
LEAVE
ENDIF
。
。
。
ENDIF
●GOTO跳转
(1)定义跳转标签
Factor1OpCodeFactor2ResultHiLoEq
T_ENDTAG
(2)执行GOTO
Factor1OpCodeFactor2ResultHiLoEq
GOTOT_END
3.4.6程序退出
EVAL*INLR=*ON
RETURN
3.4.7数据库操作
3.4.7.1检索记录
●使用检索条件
*对于不使用索引的数据库,RPG程序中不能检索记录,只能顺序存取记录。
*对于使用索引的数据库,RPG可以检索记录
●精确定位检索方式
直接按键字定位记录,并读取记录数据
使用CHAIN指令
Factor1OpCodeFactor2ResultHiLoEq
K_AMCHAINRAM80
系统先将*IN80初始化为*OFF
如果找到记录,则*IN80=*OFF。
找不到记录,则*IN80=*ON
使用%FOUND,代替指示器操作
●模糊定位检索方式
分两步:
1.先按键字模糊定位记录,使用SETLL、SETGT指令
例如:
有一PF(记录格式名RCD)有三条记录:
KEY1RECORD1
KEY2RECORD2
KEY3RECORD3
◆使用SETLL情况:
执行:
Factor1OpCodeFactor2ResultHiLoEq
KEY2SETLLRCD
KEY1RECORD1
存取游标—>
KEY2RECORD2
KEY3RECORD3
◆使用SETGT情况:
执行:
Factor1OpCodeFactor2ResultHiLoEq
KEY2SETGTRCD
KEY1RECORD1
KEY2RECORD2
存取游标—>
KEY3RECORD3
2读取邻近记录,使用READ、READE、READP、READPE指令
例子:
假设游标已经停在KEY2和KEY3之间。
◆READ
往下读取一条记录
Factor1OpCodeFactor2ResultHiLoEq
READRCD80
将读取到KEY3的记录
◆READE
往下读取指定键字的记录
Factor1OpCodeFactor2ResultHiLoEq
KEY3READERCD80
将读到KEY3的记录
Factor1OpCodeFactor2ResultHiLoEq
KEY2READERCD80
将读不到记录,*IN80=*ON
◆READP
往上读取一条记录
Factor1OpCodeFactor2ResultHiLoEq
READPRCD80
将读取到KEY2的记录
◆READPE
往上读取指定键字的记录
Factor1OpCodeFactor2ResultHiLoEq
KEY2READPERCD80
将读取到KEY2的记录
Factor1OpCodeFactor2ResultHiLoEq
KEY3READPERCD80
将读不到记录,*IN80=*ON
3.4.7.2更新记录
使用UPDATE指令,分两步
1.必须用CHAIN精确定位要更新的记录
2.UPDATE
Factor1OpCodeFactor2ResultHiLoEq
UPDATERAM
3.4.7.3写记录
使用WRITE指令
Factor1OpCodeFactor2ResultHiLoEq
WRITERAM
3.4.8常用RPG操作码
●MOVE
用于字符/数值/日期等类型
⏹MOVE
Factor1OpCodeFactor2ResultLenHiLoEq
MOVE‘HELLO’STR110
STR1=’HELLO’
⏹MOVEL
Factor1OpCodeFactor2ResultLenHiLoEq
MOVEL‘HELLO’STR110
STR1=’HELLO’
⏹MOVE(P)
先清空变量,再MOVE
●EVAL
用于字符/数值/日期等类型
Factor1OpCodeFactor2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AS400 开发