as400常用操作.docx
《as400常用操作.docx》由会员分享,可在线阅读,更多相关《as400常用操作.docx(27页珍藏版)》请在冰豆网上搜索。
![as400常用操作.docx](https://file1.bdocx.com/fileroot1/2023-4/25/9faab856-3cab-4e89-b8e7-52378b1f4969/9faab856-3cab-4e89-b8e7-52378b1f49691.gif)
as400常用操作
AS400常用操作手册
1、关于表的操作
1.1、数据库表的拷贝
wrkobj:
输入要查找的目标、库,执行。
(wrkobjobj(gjjtemp/czyb)
在目标窗口输入3,执行,修改要拷贝到的目标库,同时Duplicatedata选YES,执行。
然后使用grtobjaut进行赋权。
Grtobjant执行,输入object、lib、objecttype(all)、users(要赋权者)、authority(*all)。
Grtobjautobj(gjgrdta/czfzb)objtype(*all)user(gjgr)aut(*all)
注意:
如目标在要拷贝到的库中存在,则不能覆盖,必须先删除。
1.2、如何在400上修改某条记录
UPDDTA:
输入逻辑文件名,则可以按照逻辑文件键字检索记录,然后修改。
如输入物理文件名,则检索出所有记录,不能定位到某条记录,只能一条一条翻阅到要修改记录,然后修改,此时如果记录很多,太不方便。
1.3、为表添加日志
STRJRNPFFILE(GJDWDTA/LBJQCB)
JRN(GJDWDTA/GJJJRN)IMAGES(*BOTH)
1.4、去掉表的日志(ENDJRNPF)
Journaledphysicalfile....>*ALLName,*ALL
Library...........Name,*LIBL,*CURLIB
+formorevalues
Journal............>GJJJRNName,*FILE
Library...........>GJGRDTAName,*LIBL,*CURLIB
1.5、清空表数据
CLRPFM
clrpfmGJDWDTA/ltqsjb
1.6、如何在两台服务器之间传递数据
例如将810机器上的gjgrdta库中sbgqcb中的数据传送到270机器上的gjdwdta库中的sbgqcb中:
在810机器上执行如下操作:
1)CHGDDMF->F4:
DDMFILE项填写:
TESTDDM
LIBRARY填写:
QGPL
Remotefile:
File处填写SBGQCB
Library填写GJDWDTA
执行
2)CPYF->F4:
Fromfile处填写SBGQCB
Library处填写GJGRDTA
Tofile处填写TESTDDM
Library处填写QGPL
Replaceoraddrecords处填写*ADD
执行。
(执行成功后,屏幕下方显示记录条数)
1.7、修改物理文件属性
CHGPF:
MEMBERSIZE项控制PF文件的记录条数:
输入*NOMAX,则没有条数限制。
REUSEDELETEDRECORDS选项控制表空间是否可以重复利用:
选YES则,在记录删除后其空间可以再利用,否则改空间不能重复利用,只有再RGZPFM后,才能重新利用该空间。
1.8、修改物理文件字符集为1388
CHGPF:
F10,再F9,CodedcharactersetID改为1388
1.9、优化表RGZPFM
释放delete语句删除的数据所占用的数据库空间。
1.10、DSPDBR
显示数据库文件(即表)的相关信息,如其物理文件,物理文件上挂有的所有的逻辑文件等。
DSPDBR,执行,输入如下信息:
File..............>DWXXB
Library...........>GJDWDTA
Output.............*
执行。
1.11、DSPFD
显示数据库文件(即表,包括PF和LF)的JOURNAL、KEYFIELD。
也可查看逻辑文件挂到了哪个物理文件上
File..............>DWXXB
Library...........>GJDWDTA
Typeofinformation......*ALL
+formorevalues
Output.............*
Fileattributes........*ALL
+formorevalues
1.12、DSPOBJD
显示文件是由哪个源文件编译过来的。
Object.............>LDWHJBL01
Library...........>GJCSDTA
Objecttype..........>*FILE
执行,8,执行
1.13、DSPFFD
显示数据库文件(即表)的字段信息,包括名称、类型,长度,及其源定义文件中所引用的字段类型定义文件等。
File..............>DWXXB
Library...........>GJDWDTA
Output.............*
2、object相关操作
2.1、查看锁
DSPRCDLCK查看数据库表记录锁的情况
WRKOBJLCK:
表名,库名,OBJECTTYPE项输入*file执行
F6查看member锁,输入5,再输入10,执行,查看锁的详细信息。
输入4,endjob。
2.2、WRKOBJ
TheWorkwithObjects(WRKOBJ)commandshowsalistofobjectsfrom
oneormorelibraries.
WRKOBJ,执行,输入要使用的obj名称等如下:
Object.............GJ0101R1
Library...........*ALL
Objecttype..........*ALL
执行,即可找到要查找的目标,便可进行copy、delete等操作。
3、Strpdm相关操作
3.1、在OBJECT中查找某一字符串
在WRKOBJPDM界面,在OBJECT前使用25,按执行键执行,找到第一个后在执行,直到找完为止。
3.2、在MEMBER中比较文件的不同
在WorkwithMembersUsingPDM界面,在member前使用54,F4,输入要比较的文件名按执行键执行。
3.3、在WorkwithMembersUsingPDM窗口
F14,显示程序修改时间。
F14=Displaydate
F15=Sortdate
F18:
compileinbatch改为Y,编译时编译信息可以用DM看。
3.4、如何使用帮助确定seu中规范表格式
编辑状态下在第6列上写上规范表名,使用f4,显示格式帮助(如果是用I表定义数据结构,还应该在第19和20列输入“DS”,再按F4键。
),再在需
要帮助的格式项上f1,则显示该项的具体帮助。
3.5、pdm窗口中F21打开命令窗口
3.6、pdm窗口中F15可以用分屏的方式再打开一个源文件
3.7、群体选择member
1、在第一个文件写要处理的操作类型如14,4,然后按住shift+F1。
3.8、如何在DDS源文件中的进行字符串替换
在命令行输入:
CAABBA,执行,即可以将所有AA用BB替换。
3.9、如何隐藏DDS源文件中的某些行
SEU中有一个功能(XX=BlockExclude)作用是隐藏掉源文件中的某些行,使要查看的上下文连接在一起显示。
可以按F5=Refresh功能键来恢复原来的外观。
4、Pgm相关操作
4.1、CRTPGM
CRTPGM后,F1查看CREATE是否成功,再F10,查看详细信息。
或者DSPJOBLOG查看,F10查看详细信息。
4.2、UPDPGM
PGM的module重新编译后,PGM需要更新。
4.3、WRKPGM
查找某一库下的某一rpg目标程序。
Wrkpgm执行,输入程序名,库名,执行。
可以对找到的目标进行操作。
其中,5,执行三次,5,可以查看该目标是由哪一个源程序编译来的。
4.4、DSPPGM
查看某一库下的某一rpg目标程序的属性。
Dsppgm执行,第一屏显示基本信息,第二屏显示文件大小信息,第三屏显示该pgm由哪些模块编译而成,在某一模块前输入5,可以查看该目标模块是由哪一个源程序编译来的。
4.5、调试
1、ILERPG程序的调试:
14+f4,输入编译项,f10,将DEBUGGINGVIEW改为*SOURCE,编译。
在命令行输入strdbg+f4,输入编译项,将Updateproductionfiles改为*yes,否则调试时无法打开文件,F6设置断点。
CALL程序,F10单步执行,F11查看变量值。
F12运行到下一断点。
调试完成,ENDDBG
2、含module程序的调试:
要调试的每个module分别15+f4,f10,将DEBUGGINGVIEW改为*SOURCE,编译。
在命令行输入strdbg+f4,输入主module编译项,将Updateproductionfiles改为*yes,否则调试时无法打开文件,F6设置断点。
CALL程序,F10单步执行,F11查看变量值。
当想调试被调用module时,使用shift+f10进入被调用module。
3、RPG程序调试时,如果有更新数据库的操作(不管是sql语句,还是rpg语句),将Updateproductionfiles改为*yes,否则系统认为数据库是只读的,不能更新数据库。
如delete,update等语句执行时,sqlcode会小于0,报-7008错误。
此时的现象是执行程序时结果正确,调试时就会出错,报-7008错误。
4、如果系统没有装DEBUG工具的,还有一个特别简单的方法进行调试,就是在需要看变量值的地方加上DSPLY语句,这个也是个很不错的方法,就是特别麻烦,每次加上之后都要重新编译程序。
5、使用WATCH变量名,可以一直在屏幕的上方显示变量名,非常方便。
要取消就用UNWATCH变量名。
或者DEBUG时在底线输入'W+空格+变量名'回车,是对该变量进行跟踪,程序运行时该变量的值的变化在窗口左上角显示。
可以同时对多个变量进行跟踪。
6、SHIFT+F11(F23)是改变变量的值
4.6、执行
c+F4
call+F4
sbmjob+f4+call+f4后台执行
执行后,F1查看信息,F10查看详细信息
4.7、存储过程调用PGM程序
1、当rpg程序和前台程序使用一个事务用存储过程调用时:
rpg程序15编译,然后crtpgm时将activationgroup参数改为*caller,CL程序中不要START:
STRCMTCTLLCKLVL(*CHG)CMTSCOPE(*JOB)+
DFTJRN(GJJJRN)
ENDCMTCTL
存储过程创建:
在导航器中创建外部过程,配置相应的入口出口参数,使用的rpg程序等(ip-数据库-库-右键-新建-过程-外部)。
2、当rpg程序和前台程序不使用一个事务用存储过程调用时:
rpg程序14或15编译,15时crtpgm将activationgroup参数改为*caller
存储过程创建:
在导航器中创建外部过程,配置相应的入口出口参数,使用的rpg程序等(ip-数据库-库-右键-新建-过程-外部)。
5、编译相关操作
5.1、编译选项
1、编译时,输入14,然后按f4,可以选择编译后文件存放的库。
2、编译时,14或15后,F10是可以选择附加参数,F9可以选择所有参数。
5.2、查看编译错误信息
1、WRKMSG,DSPMSG可以查看编译成功与否信息
2、编译出错时,系统提示错误级别,一般00级错误可以忽略,其他级别错误数字越大,错误程度越严重!
根据出错的级别进行处理时应该先处理高级别的错误,再处理底级别的错误!
3、由于系统在进行编译时,将出错的信息写成了SPOOLFILE,因此我们就要看SPOOLFILE的内容来确定出错的内容和相关语句。
因此,编译后,DM(DSPMSG)可以查看编译是否成功,SP查看编译详细信息。
SP,5查看与源文件同名的编译文件,B,执行,到文件尾,找到error字样,前翻页,找到错误号,然后查找该错误码的详细信息(shift+F4),根据该错误信息进行查错修改。
5.3、物理文件的编译
PF文件编译时,
●MEMBERSIZE项控制PF文件的记录条数:
输入*NOMAX,则没有条数限制。
其中
Membersize:
Initialnumberofrecords..100001-2147483646,*NOMAX,*SAME
初始表的记录数,*NOMAX,表示没有条数限制,具体数值则为记录条数。
Incrementnumberofrecords.10000-32767,*SAME
当该表记录数达到Initialnumberofrecords规定的条数时,一次可以增加的条数。
Maximumincrements......30-32767,*SAME
当该表记录数达到Initialnumberofrecords规定的条数时,可以增加的次数。
●REUSEDELETEDRECORDS选项控制表空间是否可以重复利用:
选YES则,在记录删除后其空间可以再利用,否则改空间不能重复利用,只有再RGZPFM后,才能重新利用该空间。
●LANGUAGEID项控制使用何种语言。
●CODEDCHARACTERSETID项控制选用何种字库:
一般是935,1388(该字库GB字库)
物理文件编译后,
●要添加日志
●物理文件或逻辑文件如修改后重新编译,相关的RPG程序都需要重新编译
5.4、RPG程序的编译
编译RPG程序时,将Commitmentcontrol项设置为NONE,不使用系统自动的事务控制,使用人为的事务控制,即commit或rollback。
5.5、群体编译
1、在第一个文件写14,然后按住shift+F1。
2、批量编译文件时,使用shift+f6,可以批量定制编译后文件存放的库。
6、备份恢复
6.1、创建SAVF类型文件,用于备份library、obj
CRTSAVF:
执行
在SAVEFILE输入要创建的文件名
LIBRARY输入库名,执行即可
6.2、清空SAVF
CLRSAVFFILE(BFGLB/&BCKF1)
6.3、删除文件(如SAVF等)
DLTFFILE(BFGLB/&BCKF1)
6.4、备份library
SAVLIB:
输入要备份的library,在device项输入*SAVF,执行。
在SAVEFILE项输入要备份到的文件(该文件必须先创建),library项输入备份到的library,执行即可。
如果该文件存在数据,输入G清除
6.5、清除library
CLRLIB:
执行
在library项输入要清除的library名,执行
6.6、恢复library
RSTLIB:
SAVEDLIBRARY输入被备份的库名
DEVICE输入*savf
SAVEFILE输入备份到的文件名
LIBRARY输入备份到的库名
F10:
在Restoretolibrary输入要恢复到的库名GJGRDTA
6.7、savobj
6.8、rstobj
例如:
将GJCSDTA下的SDWBGBL65打包到HOUZG下的AAA.SAVF,恢复到gjgrdta下。
Objects...>SDWBGBL65
Savedlibrary.........>GJCSDTA
Device.............>*SAVF
Savefile...........>AAA
Library...........>HOUZG
Restoretolibrary.......GJGRDTA
6.9、DSPSAVF
查看savf文件中包含那些文件
6.10、SavXXX时使用压缩方式(savobj/savlib/…)
在备份到磁带或将库、表单保存为SAVF时,可改动如下参数节约磁盘空间:
在SAVXXX命令中按F10后,会有参数DTACPR(Datacompression),其缺省值为*DEV,此时如存数据到*SAVF时不会被压缩,即不能节省磁盘空间,而将此参数改为*YES,可以达到节省空间的目的。
6.11、磁带操作
INZTAP(InitializeTape)格式化磁带
DSPTAP(DisplayTape)显示磁带内容
7、日志相关操作
7.1、日志概述
日志(Journal)即其他数据库的log,当数据需要commit/rollback或表上定义了触发器、参照完整性(referentialintegrity)时,表需要日志。
日志由journal和journalreceiver组成。
Journal相当于一张登记表,记录哪些表是有日志的,journalreceiver记录日志实际上需要记载的内容(表的创建、打开、增加、修改、删除、权限更改等)。
一个journal最多关联(attach)两个日志接收器(journalreceiver)。
Journal管理journalreceiver的方法有两种,*SYSTEM和*USER,在crtjrn或chgjrn时通过Managereceivers参数设置。
日志接收器和数据库表最好存放在不同的ASP(磁盘组)上。
日志备份时先备份表,再备份日志和日志接收器,恢复时要先恢复日志和日志接收器,再恢复表。
7.2、创建日志
创建一个日志文件可按如下方法:
1、建立日志接收器:
CRTJRNRCVJRNRCV(AAA/TESTJRNRCV)
其中:
AAA是库名,TESTJRNRCV是日志接收器名
在这个命令中是通过参数Journalreceiverthreshold来控制日志的大小。
2、建立日志:
CRTJRNJRN(DINI/TESTJRN)JRNRCV(DINI/TESTJRNRCV)
其中:
AAA是库名,TESTJRN是日志名,TESTJRNRCV是日志接收器名;其中如下参数需要指定:
Managereceivers......*SYSTEM*USER,*SYSTEM
Deletereceivers........*YES*NO,*YES
Deletereceivers参数指定系统是否可以删除journalreceivers。
3、启动物理文件的日志
STRJRNPFFILE(AAA/TABEL01)JRN(DINI/TESTJRN)
其中:
AAA是库名,TABEL01是表名,TESTJRN是日志名
4、查看日志(见7.3)
DSPJRNJRN(DINI/TESTJRN)FILE((DINI/TABEL01))
命令查看日志TESTJRN;
5、修改日志
CHGJRNJRN(GJGRDTA/GJJJRN)
6、使用命令APYJRNCHG根据JRN恢复物理文件向后恢复。
7、使用命令RMVJRMCHG根据JRN恢复物理文件向前恢复。
7.3、在AS/400上如何删除日志(JOURNAL)
在AS/400可能会对一些物理文件建立跟踪日志,到时候可能又不需要这些文件了,但日志文件会不断增多。
这时用户要删除这时物理文件上的日志(JOURNAL),但无法正常删除,其实只要按照以下步骤就可删除JOURNAL:
1、用命令ENDJRNPF或ENDJRNAP终止这个物理文件或访问路径上的所有JOURNAL。
2、用命令DLTJRN删除JOURNAL。
3、用命令DLTJRNRCV删除JOURNALRECEIVER。
7.4、通过日志查看数据变化
查看当前日志属性:
WRKJRNAJRN(GJGRDTA/GJJJRN)
找到JRNRCV存放库。
查看该库下有哪些日志:
WRKLIBLIB(@JRNRCVLIB)
找到TYPE为*JRNRCV的日志文件,
8,执行查看日志文件的时间,找到对应时间的日志文件。
查看对应日志文件中的日志:
DSPJRN
Journal............>GJJJRNName,*INTSYSJRN
Library...........>GJGRDTAName,*LIBL,*CURLIB
Journaledphysicalfile:
File.............>LTZQCBName,*ALLFILE,*ALL
Library..........>GJGRDTAName,*LIBL,*CURLIB
Member............*FIRSTName,*FIRST,*ALL
+formorevalues
Rangeofjournalreceivers:
Startingjournalreceiver..>GJJRCV1531Name,*CURRENT,*CURCHAIN
Library..........>@JRNRCVLIBName,*LIBL,*CURLIB
Endingjournalreceiver...>*CURRENTName,*CURRENT
Library..........Name,*LIBL,*CURLIB
Startingsequencenumber....*FIRST
Startingdateandtime:
Startingdate........>20050629Date
Startingtime........>000000Time
More..
执行,根据code和type,time查看日志(可以F1,在F2查看帮