AS400 自学笔记集锦 - 图文

更新时间:2024-01-18 12:41:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

AS400学习笔记 2006/04,Daniel,Easycon

AS400学习笔记(V1.2)

2006/04,Daniel,Easycon

1

自学使用的400操作命令集锦 ............................................................................................... 4 1.1 命令记录及示例解析 ....................................................................................................... 4 1.1.1 将PF文件中的数据库数据导出到流文件中......................................................... 4 1.1.2 从流文件中导入数据到数据库的PF文件中......................................................... 4 1.1.3 查看多Member的PF下的member信息 .............................................................. 4 1.1.4 修改用户的ccsid值................................................................................................. 4 1.1.5 使用DBG调试作业信息 ........................................................................................ 4 1.1.6 查看系统的ccsid缺省设置 ..................................................................................... 4 1.1.7 PF下的Member正常显示中文 .............................................................................. 4 1.1.8 查看或修改PF的字符集设置 ................................................................................ 5 1.1.9 为一个没有日志的PF设置日志文件 .................................................................... 5 1.1.10 查看多Member的PF内容 ..................................................................................... 5 1.1.11 查看一个多Member的PF下所有Member名称的命令...................................... 5 1.1.12 删除一个PF下的多Member的命令 ..................................................................... 5 1.1.13 FTP到400的命令详解 ........................................................................................... 5 1.1.14 OBJ打包备份命令例子 ........................................................................................... 5 1.1.15 直接显示/查找一个库或者一个目标文件在当前用户库位置的例子 .................. 6 1.1.16 查看目标文件被锁的信息 ....................................................................................... 6 1.1.17 关于400上的授权处理的几个例子 ....................................................................... 6 1.1.18 6000链接400的DB2 CONNECT的配置............................................................. 6 1.1.19 删除本用户下所有的spool file的命令 .................................................................. 6 1.1.20 命令帮助Help .......................................................................................................... 6 1.1.21 查看SP文件 ............................................................................................................ 6 1.1.22 400上如何存放中文文件并能正常显示,如何支持很长一行记录的情况 ........ 7 1.1.23 对一个数据文件的日志操作 ................................................................................... 7 1.1.24 查看系统环境信息-DSPSYSVAL WRKSYSVAL ............................................... 7 1.1.25 查看系统设备信息-WRKHDWRSC .................................................................... 7 1.1.26 显示数据之间关系 ................................................................................................... 7 1.1.27 在AS400上直接运行批量的400SQL脚本 .......................................................... 8 1.1.28 在400上进行授权处理 ........................................................................................... 8 1.1.29 提交后台执行作业 ................................................................................................... 8 1.1.30 如何查看数据保护方式,如RAID/MIRROR ....................................................... 8 1.1.31 如何硬盘临时空间,使用率等信息 ....................................................................... 8 1.1.32 如何查看Spool File ................................................................................................. 8 1.1.33 如何查看内存、系统控制台等状态 ....................................................................... 8 1.1.34 如何查看PTF状态、PTF CUM的版本 ................................................................ 9 1.1.35 查看操作系统版本 ................................................................................................... 9 1.1.36 400上MSG信息的操作命令 ................................................................................. 9 1.1.37 400上的日志操作命令 ............................................................................................ 9 1.1.38....................................................................................................................................... 10

- 1 -

AS400学习笔记 2006/04,Daniel,Easycon

2 经验记录................................................................................................................................. 11 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14

DB2 IMPORT命令 ....................................................................................................... 11 创建DB2 CONNECT的链接方法(RS6000-AS400) .......................................... 11 AS400上调用PGM命令做大量数据处理操作 ......................................................... 12 AS400日常运行维护..................................................................................................... 12 一个关于备份报错的处理操作 ..................................................................................... 12 400上C/C++程序调用PGM ....................................................................................... 13 AS400上C开发编译简介 ............................................................................................ 16 如何查看已备份磁带的内容 ......................................................................................... 16 恢复/查看备份的内容 ................................................................................................... 17 查看LIBRARY占用的磁盘空间 ................................................................................ 17 一个不错的400软件下载地址 ..................................................................................... 18 日志激活状态下删除400库的方法 ............................................................................. 18 通用日志管理 ................................................................................................................. 19 19

3 相关资料收集......................................................................................................................... 20 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27

一些概念 ......................................................................................................................... 20 关于LOCK的一些概念 ................................................................................................. 23 AS400口令问题............................................................................................................. 24 实用命令 ......................................................................................................................... 24 常用CL命令 ................................................................................................................. 24 通过控制面板开关机 ..................................................................................................... 26 如何解决控制台死锁问题 ............................................................................................. 26 如何更改系统的名字 ..................................................................................................... 27 得到OS400版本的命令 ............................................................................................... 27 手工启动400的介绍 ..................................................................................................... 27 如何提高AS/400 TCP/IP的性能 ................................................................................. 28 启动与停止FTP服务器 ............................................................................................... 28 发送TCP/IP假脱机文件(SNDTCPSPLF) ............................................................ 29 如何查看QTEMP中的内容 ........................................................................................ 29 如何更改 CRTPF 或 CRTRPGPGM 的預設值? ............................................................ 30 如何将AS/400英文界面改为中文界面? .................................................................. 30 如何将屏幕内容写到文件中 ......................................................................................... 30 了解AS400文件系统.................................................................................................... 30 如何快速查看IFS文件系统中FOLDER和文件的大小 .......................................... 38 如何显示查询的调试信息 ............................................................................................. 38 如何修改QSYS/QADBXREF的CCSID ................................................................... 39 如何在AS400上发送带有颜色的MESSAGE ........................................................... 39 恢复系统密码 ................................................................................................................. 41 创建自己的命令 ............................................................................................................. 43 关于命令RGZPFM ...................................................................................................... 44 WRKSYSSTS命令结果屏中,作业的三种状态的具体含义是什么? ................... 44 WRKACTJOB命令其他一些有用功能的妙用。 ...................................................... 45

- 2 -

AS400学习笔记 2006/04,Daniel,Easycon

3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36 3.37 3.38 3.39 3.40 3.41 3.42 3.43 3.44 3.45 4

启动预起作业QZDASOINIT/QZDAINIT ................................................................. 45 如何查看与物理文件相关的索引,视图,约束? ....................................................... 46 如何查询OS/400上装的主语言、第二语言是什么? .............................................. 46 如何查找物理文件 (PF) 与 逻辑文件 (LF) 之间的关系? ....................................... 46 如何使DB2/400中的索引运行效率更高? ................................................................ 47 如何提高AS/400 TCP/IP的性能? ............................................................................... 48 如何限制QZDASOINIT作业的临时空间? ............................................................... 48 如何修改QSYS/QADBXREF的CCSID? ........................................................................ 49 如何在SQL/400中利用RRN(相对记录号)处理与记录号相关的信息? ................. 49 物理文件与SQL表的区别? ....................................................................................... 49 DOMINO FOR AS/400备份与恢复 ................................................................................. 50 用SAV命令备份的DOMINOSERVER为何不能恢复? ............................................... 52 24小时交易的AS/400如何备份 ................................................................................. 52 备份保存SPLF的方法 ................................................................................................. 54 MIMIX简介 ..................................................................................................................... 55 数据队列(DATQ)相关 ............................................................................................. 55 网卡状态是RCYPND的解决方法 .............................................................................. 57 AS/400上的解决方案-双机高可用与灾备MIMIX .................................................... 58

附录:命令列表..................................................................................................................... 62

- 3 -

AS400学习笔记 2006/04,Daniel,Easycon

1 自学使用的400操作命令集锦

1.1 命令记录及示例解析

1.1.1 将PF文件中的数据库数据导出到流文件中

CPYTOIMPF FROMFILE(EASYSJGD/SKMZD) TOSTMF('smtf7') MBROPT(*REPLACE) RCDDLM(*LF) DTAFMT(*FIXED)

CPYTOIMPF FROMFILE(EASYCORE/SLLB) TOSTMF('sllb') RCDDLM(*LF) FLDDLM('|')

1.1.2 从流文件中导入数据到数据库的PF文件中

CPYFRMIMPF FROMSTMF('/scdzb') TOFILE(EASYSJGD/SCDZB) RCDDLM(*LF) FLDDLM('|')

CPYFRMIMPF FROMSTMF('/ascdzb') TOFILE(EASYSJGD/SCDZB) RCDDLM(*LF)

FLDDLM('|') FROMRCD(1)

1.1.3 查看多Member的PF下的member信息

DSPFD FILE(EASYMAP/LOG) TYPE(*MBRLIST)

1.1.4 修改用户的ccsid值

CHGUSRPRF USRPRF(EASYMAP) CCSID(037)

1.1.5 使用DBG调试作业信息

调试查看一个作业的工作执行信息,可以通过一下四个命令加载debug模式进行: STRDBGSRV QSYS Start Debug Service Job STRDBG QSYS Start Debug

ENDDBG QSYS End Debug Mode ENDDBGSRV QSYS End Debug Service Job

处理完成后,作业的日志信息将存放相关操作信息,可以通过以上信息查看处理信息

1.1.6 查看系统的ccsid缺省设置

wrksysval -> F4 -> QCCSID

1.1.7 PF下的Member正常显示中文

创建PF的时候,参数DBCS要指定为*YES,则可以使用中文在文件里面 注:DBCS -- Double Byte Code Set 双字节

- 4 -

AS400学习笔记 2006/04,Daniel,Easycon

SBCS -- Single Byte Code Set 单字节

1.1.8 查看或修改PF的字符集设置

用CHGPF命令,按F4,填入表名,按F9查看Coded character set ID :的值,此处可以直接查看或者进行修改等处理

1.1.9 为一个没有日志的PF设置日志文件

STRJRNPF FILE(EASYMAP/XTKZB) JRN(BANKDTA/OBTSJRN)

1.1.10 查看多Member的PF内容

RUNQRY QRYFILE((EASYMAP/LOG)) 查看文件 RUNQRY QRYFILE((EASYMAP/LOG RC030217)) RUNQRY QRYFILE((EASYMAP/LOG *LAST))

1.1.11 查看一个多Member的PF下所有Member名称的命令

DSPFD FILE(EASYMAP/LOG) TYPE(*MBRLIST)

1.1.12 删除一个PF下的多Member的命令

RMVM FILE(EASYMAP/LOG) MBR(*ALL)

1.1.13 FTP到400的命令详解

制定FTP到服务器 用户 密码

使用ASC方式传输文件,或者bin等 指定转码使用1386编码 进入目的库

传输本地file文件到easymap库的src文件下 结束ftp

ftp 192.168.110.118 user easymap password easymap asc quote type c 1386 cd easymap put file src.file bye

1.1.14 OBJ打包备份命令例子

DSPSAVF FILE(EASYMAP/SAVF1) 显示SAVF1的SAVEFILE中的内容 CLRSAVF FILE(EASYMAP/SAVF1) 清除SAVF1文件中的内容

SAVOBJ OBJ(SJGD) LIB(EASYSJGD) DEV(*SAVF) SAVF(EASYMAP/SAVF1) WRKOBJ OBJ(EASYMAP/SJGD) 备份文件进入SAVF1

RSTOBJ OBJ(*ALL) SAVLIB(EASYSJGD) DEV(*SAVF) SAVF(EASYMAP/SAVF1) RSTLIB(EASYMAP) 恢复文件从SAVF1 注:LIB的备份命令:SAVLIB…

- 5 -

AS400学习笔记 2006/04,Daniel,Easycon

1.1.15 直接显示/查找一个库或者一个目标文件在当前用

户库位置的例子

WRKOBJ WRKLIB

查找或直接显示目标文件 库文件

1.1.16 查看目标文件被锁的信息

WRKOBJLCK 查看锁表的信息 注意:若是需要查看lib被锁的情况,可以按F4后,在Object栏中输入对应的,在Library栏中输入:QSYS即可

1.1.17 关于400上的授权处理的几个例子

授权命令:GRTOBJAUT 下面的命令可以将easycore下的所以对象的所以权限授权给easycore用户

GRTOBJAUT OBJ(EASYCORE/*ALL) OBJTYPE(*ALL) USER(EASYCORE) AUT(*ALL)

下面的命令可以将easypub下的所以对象的所以权限授权给easycore用户

GRTOBJAUT OBJ(EASYPUB/*ALL) OBJTYPE(*ALL) USER(EASYCORE) AUT(*ALL)

1.1.18 6000链接400的DB2 CONNECT的配置

1) Run WRKRDBDIRE command at OS/400 command line.Define a DataBase name, for

example: S653924B, remote location is *LOCAL.

2) db2 catalog tcpip node mynode remote 9.181.54.193 server 446 (PORT 446 is used

only in DB2/400 CONNECTION)

3) db2 catalog db s653924b as db at node mynode 4) db2 connect to db user easycore using easycore

1.1.19 删除本用户下所有的spool file的命令

DLTSPLF FILE(*SELECT) 删除本用户下的spool file

1.1.20 命令帮助Help

显示所有???相关的命令列表及简要说明 GO CMDRMV GO CMDSQL

GO CMD???

EX:GO CMDDLT

1.1.21

WRKSPLF

查看SP文件

查看SP FILE内容

- 6 -

AS400学习笔记 2006/04,Daniel,Easycon

1.1.22 400上如何存放中文文件并能正常显示,如何支持

很长一行记录的情况

确保用户的CCSID是支持中文的,比如935

创建PF的时候,注意DBCS的选项,选择为YES,其下的Member才可以正常的显示中文

注意上面红线的标识:

在使用CRTSRCPF命令的时候,选择F4,User specified DBCS data选择为*YES后,即可支持中文的正常显示处理等。

另外,可以在此处调整PF下member记录的最大长度,系统缺省为92,可以调整的范围:16~32766,调整后,可以支持一行内容较长的文件存放

1.1.23 对一个数据文件的日志操作

ENDJRNPF End Journaling PF Changes STRJRNPF Start Journal Physical File

1.1.24

查看系统环境信息-DSPSYSVAL WRKSYSVAL

查看系统缺省的CCSID设置 查看系统缺省的LANGID设置

DSPSYSVAL SYSVAL(QCCSID) DSPSYSVAL SYSVAL(QLANGID)

1.1.25

查看系统设备信息-WRKHDWRSC

QSYS/WRKHDWRSC TYPE(*PRC)

WRKHDWPRD QSYS Work with Hardware Products WRKHDWRSC QSYS Work with Hardware Resources

1.1.26

显示数据之间关系

DSPDBR Display Data Base Relations DSPDBR FILE(EASYMAP/BBDY)

- 7 -

AS400学习笔记 2006/04,Daniel,Easycon

1.1.27

RUNSQLSTM

在AS400上直接运行批量的400SQL脚本

Run SQL Statements

1.1.28 在400上进行授权处理

授权命令:GRTOBJAUT

下面的命令可以将easycore下的所以对象的所以权限授权给easycore用户

GRTOBJAUT OBJ(EASYCORE/*ALL) OBJTYPE(*ALL) USER(EASYCORE) AUT(*ALL)

下面的命令可以将easypub下的所以对象的所以权限授权给easycore用户

GRTOBJAUT OBJ(EASYPUB/*ALL) OBJTYPE(*ALL) USER(EASYCORE) AUT(*ALL)

1.1.29 提交后台执行作业

SBMJOB CMD(CALL PGM(EASYBAK/CPYFH1)) 提交后,若需查看相关信息,可以使用WRKSBMJOB进行查看,选择对应的作业信息,按8选项进入,使用5-Display查看

也可以通过WKSPLF查看作业执行后产生的SPOOL FILE

1.1.30 如何查看数据保护方式,如RAID/MIRROR

使用WRKDSKSTS命令,按F11键查看

Command Library Text WRKDSKSTS QSYS Work with Disk Status

1.1.31 如何硬盘临时空间,使用率等信息

使用WRKSYSSTS命令查看

Command Library Text WRKSYSSTS QSYS Work with System Status

1.1.32 如何查看Spool File

使用WRKSPLF命令查看,或者使用WRKQUTQ查看

Command Library Text WRKSPLF QSYS Work with Spooled Files WRKSPLFA QSYS Work with Spooled File Attr WRKOUTQ QSYS Work with Output Queue WRKOUTQD QSYS Work with OUTQ Description

1.1.33 如何查看内存、系统控制台等状态

使用WRKCFGSTS (内存状态到DST里面的逻辑设备里看)命令查看,或者使用

- 8 -

AS400学习笔记 2006/04,Daniel,Easycon

QSYS/WRKHDWRSC TYPE(*PRC)查看

Command Library Text WRKHDWPRD QSYS Work with Hardware Products WRKHDWRSC QSYS Work with Hardware Resources WRKCFGL QSYS Work with Configuration Lists WRKCFGSTS QSYS Work with Configuration Status

1.1.34 如何查看PTF状态、PTF CUM的版本

使用DSPPTF命令查看

Command Library Text DSPPTF QSYS Display Program Temporary Fix

1.1.35 查看操作系统版本

F11

go licpgm -> 10.Display Installed Licensed Programs -> go licpgm Work with Licensed Programs

―― Display Installed Licensed Programs ―― F11

1.1.36 400上MSG信息的操作命令

Command Library Text

WRKMSG QSYS Work with Messages WRKMSGD QSYS Work with Message Descriptions WRKMSGF QSYS Work with Message Files WRKMSGQ QSYS Work with Message Queues

1.1.37 400上的日志操作命令

GO CMDJRN:

Add Remote Journal ADDRMTJRN Apply Journaled Changes APYJRNCHG Change Journal CHGJRN Change Remote Journal CHGRMTJRN Compare Journal Images CMPJRNIMG Create Journal CRTJRN Delete Journal DLTJRN Display Audit Journal Entries DSPAUDJRNE Display Journal DSPJRN End Journal ENDJRN End Journal Access Path ENDJRNAP End Journal Object ENDJRNOBJ End Journaling PF Changes ENDJRNPF Receive Journal Entry RCVJRNE

- 9 -

AS400学习笔记 2006/04,Daniel,Easycon

Remove Journaled Changes RMVJRNCHG Remove Remote Journal RMVRMTJRN Retrieve Journal Entry RTVJRNE Send Journal Entry SNDJRNE Start Journal STRJRN Start Journal Access Path STRJRNAP Start Journal Object STRJRNOBJ Start Journal Physical File STRJRNPF

Work with Journal WRKJRN Work with Journal Attributes WRKJRNA

Accounting Commands CMDACG Commit Commands CMDCMT File Commands CMDFILE Journal Receiver Commands CMDJRNRCV Receive Commands CMDRCV

1.1.38

- 10 -

AS400学习笔记 2006/04,Daniel,Easycon

2 经验记录

2.1 DB2 IMPORT命令

在6000上,通过db2 connect链接到400上取,在做db2 import的操作时,系统要求对应的表必须要有日志,否则系统将不允许Import的操作处理

2.2 创建DB2 CONNECT的链接方法(RS6000-

AS400)

(1) 在AS400上,从OS/400 main 菜单中输入: WRKRDBDIRE

按 enter键后,将打开 Work with relational database directory entries面板

(2) 从 Work with relational database directory entries面板:

? 选择选项 1 来 添加数据库 ? 输入数据库名: SAMPLE

注释:SAMPLE是 machine 2 上的数据库,您要从 iSeries 客户机机连接到该数据库上。如果您不记得数据库的名字,可以从 CLP 发出下面的命令:

list db directory

然后按照 Directory 条目类型为‘indirect'来查找条目。这些条目将与您的服务器上的本地数据库相对应

Remote location设置为*LOCAL,Type: *IP 默认端口号是 *DRDA,指 446 端口。

- 11 -

AS400学习笔记 2006/04,Daniel,Easycon

默认的认证方法是 *ENCRYPTED,它只能在 iSeries 机器间使用 (3) 在客户端设置DB2 CLI的属性参数信息

? db2 catalog tcpip node mynode remote 192.168.51.2 server 446 (NOTE:PORT 446 is

used only in DB2/400 CONNECTION)

? db2 catalog db backup as testdb at node mynode ? db2 terminate

(4) 在DB2 客户端绑定CLI的应用程序和DB2实用程序

绑定DB2 PACKAGE(注意绑定顺序,以下命令的执行目录在~boc/sqllib/bnd下): bind @db2ubind.lst blocking all sqlerror continue grant public bind @db2cli.lst blocking all sqlerror continue grant public bind @ddcs400.lst blocking all sqlerror continue grant public (5) 创建完成后,若需要链接进入的用户能够在6000上远程db2 …做create等类似

的操作,需给定权限

Special authority . . . . . . . SPCAUT *ALLOBJ

2.3 AS400上调用PGM命令做大量数据处理操作

建议使用sbmjob将命令提交成BCH(批处理作业),这样系统处理的效率将大大提高

2.4 AS400日常运行维护

1) 日常观测机器的运行情况:

a) dsplog 每日上班,看机器日志,主要看机器的运行情况

b) wrkactjob 看看系统中的活动作业,可以看有哪些用户登入,那些作业使用

系统资源情况。

c) wrkdsksts 看硬盘的使用情况

d) DSPHDWRSC TYPE(*PRC) 看硬件情况,在TYPE中,不同参数将显示不同

硬件的情况

e) WRKSYSSTS 看系统的状态(硬盘空间,登入机器的用户数,作业数) 2) AS400现在的用户有安全管理官员级别:QSECOFR

3) AS/400 正常关机:PWRDWNSYS OPTION(*IMMED)

a) 如果不能正常关机,在面板调到(02 BM )状态,按电源健,隔三秒再按

一次电源健就可以手动关机。

4) AS/400 正常开机,在面板调到(01 BN)按电源健(白色键)系统自动开机,不

需要人去选择IPL程序。

5) AS/400 如果不能正常自动调用IPL程序,把面板调到(01 BM),此时是手动开

机,需要人工干预调用IPL程序。在选择中,选择调用IPL程序,输入用户和密码(QSECOFR,QSECOFR)其他的都是按CTRL键确认或F12键。

2.5 一个关于备份报错的处理操作

Q1:用AS400的SAVELIB命令备份数据库时(数据库有6G左右),刚开始还在备份,

- 12 -

AS400学习笔记 2006/04,Daniel,Easycon

后来显示一条消息

Waiting for reply to message on message QSYSOPR.

意思是让我回应消息,但我按任何按键都不起作用,请问如何处理? A11:用DSPMSG QSYSOPR看有何信息,一般是需要回答的信息。 A12:System request =>; Enter =>; option 4

Q2:但是我按任何按键都不起作用呀,我怎么输入命令呀?

A21:你有可能在online操作,可以另外开一个5250终端或按系统请求键,然后在命令行上输入楼上的命令

A22:你首先应该做的就是先查看具体的消息内容: shift+esc ==>; 选择display sysopr message 然后根据具体的消息才能决定下一步做什么

Q3:Device TAP01 cannot process loaded volume.(C R INZ)

好像是磁带的格式不对,但我是用INZTAP格式化的磁带呀,怎么会不对呢? A31:回复INZ就可以了。

原因是400认为磁带的格式不对(很可能是所做的格式化跟磁带机的类型不符)。初始化就可以了。

A32:对,先回复INZ,然后一路F3退到原来的界面

2.6 400上C/C++程序调用PGM

调用处理的方法解释一:

1、先用预处理命令将rpg程序映射成C/C++API。 2、直接调用映射后的api即可

大家提到的system或者*exec()的函数,不但性能低,而且根本没办法让c程序处理rpg程序返回参数。

映射成c api方式,才是万能的方法。在c程序预处理段如下声明即可: #pragma linkage(pgmrpg, os, nowiden) ..... main() { .... pgmrpg(parm1, parm2,rtncod); .... } 建议所有的传入参数最好采用字符指针,约定长度。另外,c程序取rpg程序参数时,用memcpy函数拷贝。 调用处理的方法解释二:

在OS/400中,ILE C如何调用ILE RPG程序?

http://www-1.ibm.com/support/docview.wss?uid=csc10a51294c5b22e6f648256f3900080d9fDocument - : 2822324J26000 Body:

[标题] 在OS/400中,ILE C如何调用ILE RPG程序?

- 13 -

AS400学习笔记 2006/04,Daniel,Easycon

内容提要:

在AS/400的开发中通常会遇到两种不同的语言之间的调用问题,例如,ILE C的程序如何调用ILE RPG程序,本文将通过一个简单的例子来说明调用过程。 说明:

本文主要用两个程序来说明ILE C如何调用ILE RPG程序, 一个程序是ILE C程序,程序名式PMGC;一个程序是ILE RPG程序,程序名式ILE RPG。 这两个程序的内容如下:

ILE C 程序:PGMC

*************** Beginning of data ********** 0001.00 #include 0001.01 #pragma linkage(PGMRPG, OS, nowiden) 0001.02 int main( int argc, char *argv 2 ) { 0001.03 char *parm1; 0001.04 char *parm2; 0001.05 printf( \ 0001.06 parm1 = argv 1 ; 0001.07 parm2 = argv 2 ; 0001.08 printf( \ 0001.09 printf( \ 0001.10 PGMRPG(parm1,parm2); 0001.11 return; 0001.12 } ****************** End of data ************* ILE RPG 程序:PGMRPG

*************** Beginning of data *************** 0001.00 D parm1 S 10a 0001.01 D parm2 S 10a 0001.02 C *entry plist 0001.03 C parm parm1 0001.04 C parm parm2 0001.05 C 'RPG program' dsply 0001.06 C 'parm1 =' dsply 0001.07 C parm1 dsply 0001.08 C 'parm2 =' dsply 0001.09 C parm2 dsply 0001.10 eval *inlr=*on ****************** End of data ****************** 这两个程序都是相互独立的可以单独运行的程序, PRGC程序可以用语句 PGMRPG(parm1,parm2); 直接调用ILE RPG程序PGMRPG要特别注意ILE C中的语句#pragma linkage(PGMRPG, OS, nowiden), 它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。

#pragma linkage(PGMRPG, OS, nowiden),这里的PGMRPG是FUNCTION NAME,就是被调用的ILE RPG程序的程序名; OS的含义是按照OS/400的特性传递变量;nowiden的含

- 14 -

AS400学习笔记 2006/04,Daniel,Easycon

义是变量是按照值进行进行传递的。

CALL PGMC PARM('I LOVE ' 'IBM ') 注:关于如何调用的详细描述可以参考IBM REDBOOK:《ILE C_C++ Programmer?s Guide.pdf》中Chapter 16. Calling Conventions章节内容

自编的一个简单示例: TAPINI.CLP

PGM PARM(&TAPDEV &RTNMSG)

DCL VAR(&TAPDEV) TYPE(*CHAR) LEN(5) DCL VAR(&RTNMSG) TYPE(*CHAR) LEN(60) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(60) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)

INZTAP DEV(&TAPDEV) NEWVOL(TAP001) CHECK(*NO) MONMSG MSGID(CPF0000) EXEC( GOTO CMDLBL(ERROR) ) RMVMSG MSGQ(*PGMQ) CLEAR(*ALL)

CHGVAR VAR(&RTNMSG) VALUE('SUCCESS') GOTO END

ERROR: RCVMSG MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + MSGFLIB(&MSGFLIB)

RTVMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) MSG(&RTNMSG) + MSGDTA(&MSGDTA)

END: ENDPGM

注意:通过在ERROR处的处理,可以将系统的错误信息根据错误代码自动转换成错误提示信息

TAPINIT.C

#include #include #include

#pragma map( TapInit, \#pragma linkage(TapInit, OS, nowiden)

int TapInit( char *devname, char *retmsg );

int main() {

long lrl_ret; char lrs_msg[60]; char lrs_devname[20];

- 15 -

AS400学习笔记 2006/04,Daniel,Easycon

d.DSPJOBLOG 中特殊符号的意义:

>> ---- 正在运行的命令或下一个要运行的命令 > ------ 作业已被处理

。。----- 命令没有被处理 ? ------ 需要回复消息

e.为了防止系统定期清理joblog,可以发送joblog文件到独立的输出队列 CHGPRTF FILE(QPJOBLOG) OUTQ(QEZJOBLOG) Job Table

a.如果job table太大,系统性能将受到影响(在IPL过程中) b.使用CHGIPLA命令改变选项,以压缩JOB table。

c.使用命令DSPJOBTBL显示job table。其中会包含的信息: * job talbe的数量

* job talbe的尺寸,字节数 * 在job talbe中包含的条目数 * 对于新使用的job的条目数

* 在job队列(活动job或者已经完成但还没有脱机到输出队列中的job)中,

当前被使用的条目数。

* 在job队列(活动job或者已经完成但还没有脱机到输出队列中的job)中,

当前未被使用的条目数。 批处理作业:

a.提交批处理作业的方法 * 立即提交 * 计划提交

b.立即提交: SBMJOB

输入批处理需要的命令,如果提交的是程序,则前面加CALL。例如:CALL

TESTJOB。如果提交的是RExx程序包,使用STRAR RExx (STRRExPRC)

c.计划提交:WRKJOBSCDE或者在SBMJOB中输入计划运行的时间

d.如果job队列没有隶属于某个子系统,则运行在这个job队列中的job将不会被运

行。可以使用CHGJOB命令来移动job到别的job队列中

e.改变job的优先级

* 最高级为0,最低级为9。用户提交的job最高优先级为1,0为保留给系统,

用以改变优先级为1的job,使它处于队列的最顶处。

f.如果使用CHGJOB改变job的优先级,打印优先级或者时间片,它只能影响一次,

下次运行时将恢复成原始值。要想持续有效,需要改CLASS. 消息(message):

a. message ID的格式: CPF0083 CPA~CPZ :系统消息 CBE~CBX:cobol 消息 LBE~LSC:colbol消息 MCH: LIC消息

QRG~RXT:RPG语言消息 SBX~SSC: colbol消息 SQL: SQL消息 常用的目标类型列表:

* LIB 库 * FILE 文件

- 21 -

AS400学习笔记 2006/04,Daniel,Easycon

* MSGF 信息文件 * PGM 程序 * CMD 命令

* JOBQ 作业队列 * DTAQ 数据队列 * MSGQ 信息队列 * OUTQ 输出队列 * DTAARA 数据域 * JRN 日志

* JRNRCV 日志接受器 * USRPRF 用户简要表 * SBSD 子系统描述 * JOBD 作业描述 * LIND 线路描述 * CTLD 控制器描述 * DEVD 设备描述 常用的目标操作列表:

* WRK 工作 * CRT 建立 * ADD 增加 * CHG 改变 * DLT 删除 * DSP 显示 * EDT 编辑 * CPY 拷贝 * MOV 移动 * RNM 变名 * SAV 备份 * RST 恢复 * RTV 获取 * GRT 授权 * DMP 转储 关于文件类型的补充:

*DTAQ *DTAARA *MSGF *QRYDFN

这些类型的object 一般是在CL中用到, 相应的由命令语句生成,相应的由如下命令生成

CRTDTAQ 创建一个数据对列。可能这个数据队列功能要多于一般队列,可以在不同400服务器通信。 CRTDTAARA 创建一个数据区域,可以是一个临时的存放数据的区域,可理解成一个全局变量,它有一个好处就是

更改变量值不需要重新编译调用它的程序。比如有用户不确定的统计某个车间的库存数,可动态的改变这个data area区域

里的变量值(增加,减少变量)就可以统计不同车间的库存数这样不需编译这个调用它的程序。 CRTMSGF 创建自己的message file , 一般系统message file 是在这个命令可检索到 WRKMSGF MSGF(*ALL)

- 22 -

AS400学习笔记 2006/04,Daniel,Easycon WRKQRY 400提供了一个专门做query 文件的功能,可以方便的过滤,累加一些字段。做完这种query后就生成

了*QRYDFN对象。

在TYPE处按下 F1 键可看看。

*DTAQ A data queue (*DTAQ) object is used to communicate and store data used by several programs in a job or between jobs. Multiple jobs can send and receive data from a single data queue.

*DTAARA A data area (*DTAARA) object contains a data value that can be used and changed by different jobs. *MSGF A message file (*MSGF) object contains message descriptions, which are used t describe status and error conditions. *QRYDFN

A query definition (*QRYDFN) object contains information about a query or report defined by a user of the Query/400 licensed program.

3.2 关于lock的一些概念

锁的五种类型

(1) Exclusive(*EXCL): 只有该锁的路径选择过程(routing step)才可能使用该对象;在其他任务中的路径选择过程不能存取该对象。

(2) Exclusive-allow-read(*EXCLRD): 占用该锁的路径选择过程可能读或更新该对象,而其他任务中的路径选择过程只能读它。

(3) Shared-for-update(*SHRUPD): 占用该锁的路径选择过程以及在其他任务中的路径选择过程是可以读或更新该对象。

(4) Shared-no-update(*SHRNUP): 占用该锁的路径选择过程只可以读该对象;而在其他任务中的路径选择过程也是只读该对象。

(5) Shared-for-read(*SHRRD): 占用该锁的路径选择过程只可以读该对象;而在其他任务中的路径选择过程是可以读或更新该对象。

缺省情况下,CL和HLL(高级语言程序)程序只在输入(I)物理文件成员的数据上放置SHRRD锁,并在只输出(O)和输入-输出(U)物理文件成员的数据上放置*SHRUPD锁。

后面这一句不是很理解,为什么O/U类型的文件不放*EXCLRD锁呢?个人理解应是只允许当前程序更新, 别的程序只能读。需要高手指教!

显示对象(object)和记录(record)的锁有三个命令:

(1) wrkobjlck: 查看由所有任务在一个对象上使用的lock。

(2) dsprcdlck(display record locks): 查看一个物理文件中已锁定的记录. (3) dspjob: 查看一个任务的所有外部锁,包括已使用的那些锁和该任务正等待使用的那些

- 23 -

AS400学习笔记 2006/04,Daniel,Easycon

锁。

3.3 AS400口令问题

A:我们公司一台as400,好久没有关机了,今天居然发现秘密不对,里面有重要的应用,而且用户也给锁掉了,不知道该怎么办,希望大侠指点。

Q:如果是DST 密码不对,可以用 22222222 登陆,密码22222222,或者用户11111111,密码11111111

如果是IPL用户密码不对,则需要在控制面板调到 01 D M V=F,放入系统光盘第一张,起来后,把系统的密码恢复。

A:5.1的DST密码被改了,现在把密码忘了,怎么把密码取出 Q:CHGDSTPWD *DEFAULT

需要用QSECOFR用户,而且新的密码不能与以前所用的相同

3.4 实用命令

?

?

查看当前所有用户情况

wrkusrjob user(*all) status(*active) jobtype(*interact) astlvl(*basic) 查看系统SPOOL FILE WRKSPLF 查看用户属性 wrkusrprf

把某个文件发送到打印机上

CHGPRTF FILE(FILENM) OUTQ(PRINTER NAME)

?

?

?

对PGM的操作命令

CRTPGMMOD 创建PGM MODULE CRTPGM 创建PGM UPDPGM 更新PGM DLTPGM 删除PGM

修改用户口令

修改口令使用命令 CHGPWD ? 系统授权相关命令

系统权限分为两个主要类型:特殊权限和指定权限。特殊权限是由用户特征文件来定义的;指定权限则允许用户对系统目标指定操作。

指定权限使用命令: GRTOBJAUT 来授权,使用 RVKOBJAUT 来收回权限,或者使用命令 EDTOBJAUT 编辑权限。 ? 查看周期作业的定义信息:

WRKJOBSCDE QSYS Work with Job Schedule Entries

?

3.5 常用CL命令

系统功能 命令 命令功能 - 24 -

AS400学习笔记 2006/04,Daniel,Easycon

修改过程控制 CL过程界限 CL过程逻辑 CALL (Call) CALLPRC (Call Procedure) RETURN (Return) PGM (program) (1) ENDPGM (End Program) (1) IF (If) (1) ELSE (Else) (1) DO (Do) (1) ENDDO (End Do) (1) GOTO (Go To) (1) 调用一个程序 调用一个过程 返回到引起程序或过程运行的下一条命令 指出CL过程源码的开始 指出CL过程源码的结束 根据逻辑表达式的值执行命令 对IF命令为假条件定义采取的行动 指出DO组的开始 指出DO组的结束 转移到另外的命令 修改CL变量的值 说明一个变量 修改CL变量的值 修改日期格式 修改数据区 生成一个数据区 删除一个数据区 显示一个数据区 把数据区的内容复制到一个CL变量中 取消由前面的RCVF,SNDF或SNDRCVF 命令对一个显示文件发出的输入请求. 说明一个显示文件或数据库文件 从显示文件和数据库文件中读记录 CL过程变量 替换 数据区 CHGVAR (Change Variable) (1) DCL (Declare) (1) CHGVAR (Change Variable) (1) CVTDAT (Convert Date) (1) CHGDTAARA (Change Data Area) CRTDTAARA (Create Data Area) DLTDTAARA (Delete Data Area) DSPDTAARA (Display Data Area) RTVDTAARA (Retrieve Data Area) 文件 ENDRCV (End Receive) (1) DCLF (Declare File) (1) RCVF (Receive File) (1) RTVMBRD (Retrieve Member Description) (1) 取得数据库文件成员的描述 SNDF (Send File) (1) SNDRCVF (Send/Reveive File)(1) WAIT (Wait) (1) 信息 MONMSG (Monitor Message)(1) RCVMSG (Receive Message)(1) RMVMSG (Remove Message)(1) RTVMSG (Retrieve Message)(1) SNDPGMMSG(Send Program Message)(1) SNDRPY (Send Reply)(1) SNDUSRMSG(Send User Message)(1) 往显示文件中写记录 往显示文件中写记录,在用户回答后读记录 等待从显示文件发出的SNDF,RCVF或SNDRVF命令接收文件 监控送往程序队列的逃逸,状态和通知信息 把信息从信息队列复制到一个CL变量中 从信息队列取消信息 把预先定义的信息从信息文件复制到CL变量中 往信息队列发送程序信息 给查询信息的发送者发送回答信息 给显示工作站或系统操作员发送消息或查询信息 - 25 -

AS400学习笔记 2006/04,Daniel,Easycon

混杂命令 CHKOBJ (Check Object) PRTCMDUSG (Print Command Usage) 检查目标是否存在及使用目标必须有的权限 产生一个用在某组CL过程中的一组命令中的交叉引用表 RTVCFGSRC (Retrieve Configuration Source) 对生成的已存在的配置目标建立一个CL命令 源码且把它放在源文件成员中 RTVCFGSTS(RetrieveConfiguration Status)(1) 从三个配置目标(线路,控制器和设备)中取得 配置状态 RTVJOBA (Retrieve Job Attributes) (1) RTVSYSVAL (Retrieve System Value)(1) RTVUSRPRF (Retrieve User Profile)(1) 程序生成命令 CRTCLMOD (Create CL Module) DLTMOD (Delete Module) DLTPGM (Delete Program) 取得一个或多个作业属性的值且把它们放到CL变量中 取得系统值并且把它放到一个CL变量中 取得用户文件属性并把它放到CL变量中 生成一个CL模块 删除一个模块 删除一个程序 CRTBNDCL (Create Bound Control Language 生成一个联编的CL程序 Program) CRTPGM (Create Program) CRTSRVPGM(Create Service Program) 注:(1) 表示这些命令仅能用在CL过程中 生成一个程序 生成一个服务程序 3.6 通过控制面板开关机

A开机:控制面板按电源键,系统就执行开机

B.关机:控制面板按↑或↑键,选面板指示为02 按<换行键>

再按控制面板↑或↑键,选至面板为02 BM按<换行键>

再按控制面板↑或↑键,选至面板为01 BM按<电源键> 当画面出现?▊符号时,按<电源键>,系统执行关机 Note:务必使用上述方法,将面板调回01 BN模式

C. 关机再开机:控制面板按↑或↑键,选面板指示为02 按<换行键>

再按控制面板↑或↑键,选至面板为02 BM按<换行键> 再按控制面板↑或↑键,选至面板为03按 <电源键> 再按<电源键>,系统执行IPL动作

3.7 如何解决控制台死锁问题

到任何一台能够连接400的主机上,登陆AS/400。在登陆界面上输入一个AS400用户的用户名和密码(注意:此用户不能是已经被锁死的用户),确认后进入AS400系统。

- 26 -

AS400学习笔记 2006/04,Daniel,Easycon

3.8 如何更改系统的名字

Use the Change Network Attributes CHGNETA command to change the system name. The name can contain up to 8 alphanumeric characters. The name entered becomes the current system name at the next IPL. It is important to remember that the Local Control Point Name (LCLCPNAME) and Default Local Location Name (LCLLOCNAME) are used rather than the SYSNAME when setting up SNA communications with APPN. Take this into consideration when changing the SYSNAME, as the LCLCPNAME and LCLLOCNAME may also need to be changed.

Note: This command requires *ALLOBJ authority.

3.9 得到OS400版本的命令

解答 这里有一个简单的程序及命令,使用户可以方便的得到OS/400的版本,而不需要使用命令GO LICPGM,再用10选择项得到系统的版本号,经编译生成可执行的程序及命令后可以用?call dspsyslvl' 或dspsyslvl得到结果,源码如下: 程序名: DSPSYSLVLC Pgm Dcl &SYSLVL *Char 9 RtvObjD QSYS/QCMD *PGM SYSLVL(&SYSLVL) SndPgmMsg MSG('System Level ... ' *CAT &SYSLVL) MsgType(*COMP) EndPgm ======================================== 命令名: DSPSYSLVL (Type-CMD) CMD Prompt('Display System Level') 3.10 手工启动400的介绍

1 选择启动模式

400有两种启动模式(IPL) 手动(Mamual)正常(Normal) a、有电子钥匙的可以用钥匙转换模式 b、没有的使用面班的01功能 操作如下:(如下的操作在面板执行) ·正常 01 B N ·按向上显示 02

·按执行后显示 02 B N

·再按方向键 显示 02 B M 为止 ·按执行键 显示 02

·按向下显示01,再按执行 会显示 01 B M. 完成从自动向手动的转换。反向设置 只需在第四步 换成 02 B N 即可 2 这时再启动即会转到手动状态。400的启动被称作初始程序装载,IPL(Initial Program Load) 接下来就会显示IPL

- 27 -

AS400学习笔记 2006/04,Daniel,Easycon

1.Perform an IPL

2.Install the operating system 3.Use Dedicated Services Tools

4.Perform automatice installation of the operating system 5. Sav.....

在不确定的下部操作时,推荐你使用选项1。 3 如何通过面板关机

首先将机器的启动模式转到手动,然后按下电源键 面板会出现 0?,再按下电源键确认关机。不久之后,面班上会出现DXXXXXXXX、、、这时不要管他400正在关机。

3.11 如何提高AS/400 TCP/IP的性能

AS/400用TCP/IP协议于其他主机进行通讯时,性能不是很好,除了提高网络带宽以外,还应检查AS/400上TCP/IP的配置:

A .修改MTU值(Maximum Transmission Unit) B .修改发送/接收缓冲区的值

A .修改MTU值(Maximum Transmission Unit)

1.)在AS/400命令行上输入命令: CFGTCP 2.)选择Option 2.(Work with TCP/IP routes). 3.)在要修改的路由前输入2(change).

4.)在“Maximum transmission unit”参数输入*IFC. (V5R1以后默认值*IFC)

*IFC的含义:MTU的值与TCP/IP Interface的(Option 1)中的MTU值相同,Interface在缺省情况下与LinD中的Maximum frame size相同。 这样可以提高TCP/IP在这个接口上的吞吐量。 B .修改发送/接收缓冲区的值

缺省情况下TCP的发送/接收缓冲区的大小是8192,可以考虑适当调整它值(范围是0.5MB-8MB),

1.) 在AS/400命令行上输入命令:CFGTCP 2.)选择Option 3.(Change TCP/IP attributes).

3.)在“TCP receive buffer size”和“TCP send buffer size”参数位置输入要修改的值。或用CHGTCPA命令直接修改。

TCP receive buffer size:接受远程系统数据的缓冲区的大小,若这个值过大,超过了网卡所规定的值,应考虑较低这个值,可以有效地提高TCP的性能。

TCP send buffer size:TCP发送数据的缓冲区的大小,可以根据网卡所规定的值适当调整它的大小。

3.12 启动与停止FTP服务器

手工启动FTP服务器,在AS/400命令行输入:

STRTCPSVR *FTP

手工停止所有FTP服务器,在AS/400命令行输入:

ENDTCPSVR *FTP 注意:

- 28 -

AS400学习笔记 2006/04,Daniel,Easycon

因为直接用ENDTCPSVR *FTP命令停止FTP服务器,用户可能会丢失数据,为了保证用户不丢失数据,应该按照以下步骤进行处理: A、在AS/400的命令行输入:

WRKACTJOB SBSD(QSYSWRK)

查找是否有QTFTPxxxxx(xxxxx代表5位数字)存在,若没有,则可以执行ENDTCPSVR *FTP命令;若有,则黑心做下一步。

B、确保没有用户登录FTP服务器。在AS/400的命令行输入:

NETSTAT *CNN

查找是否有LOCAL PORT为 FTP-CON状态为ESTABLISHED的连接存在,若没有则可以执行下一步;若有,应该等等用户的FTP结束后再执行下一步。 C、在AS/400的命令行键入:

ENDTCPSVR *FTP

3.13 发送TCP/IP假脱机文件(SNDTCPSPLF)

发送 TCP/IP 假脱机文件” (SNDTCPSPLF) 命令发送了一个要在远程系统上打印的假脱机文件。该远程系统必须正在运行 TCP/IP 。 SNDTCPSPLF 命令是TCP/IP LPR (行式打印机请求程序)命令的 AS/400 版本。

SNDTCPSPLF可以传递给远程系统的用户

一般现在用户使用TCP/IP协议在2台400机器之间传输SPLF是比较实用和常见。

如果是早期的400机器,它们之间走的是IBM自己开发的SNA协议,这样实现2台400之间数据传输是采用SNDNETSPLF命令实现。

1。SNDNETSPLF是基于SNA协议上的2台400机器互相传输SPLF;

2。SNDTCPSPLF是基于目前流行的TCP/IP协议上的2台400机器互相传输SPLF。

如何搭建2台400之间是借助SNA协议呢? 步骤跟你发的帖子类似,只不过创建CTLD、DEVD时是创建SNA性质线路,而不是TCP/IP线路。

3.14 如何查看QTEMP中的内容

1. 显示自己作业的QTEMP的内容:

(1) 用DSPLIB显示所有外部对象(操作系统之上的可操作的对象):

DSPLIB LIB(QTEMP) (2) 用DMPLIB显示所有内部对象:

DMPOBJ OBJ(QTEMP) OBJTYPE(*LIB) 结果位于假脱机文件QPSRVDMP中:(如图所示) 2. 显示别人作业的QTEMP的内容:

(1). 用WRKACTJOB找出所要查看的作业的名称,例如:123315/USERxxx/QPADEV0003 (2). STRSRVJOB JOB(123315/USERxxx/QPADEV0003) DMPOBJ OBJ(QTEMP) OBJTYPE(*LIB) ENDSRVJOB - 29 -

AS400学习笔记 2006/04,Daniel,Easycon

结果位于假脱机文件QPSRVDMP中.

3.15 如何更改 crtpf 或 crtrpgpgm 的預設值?

答:建议的方法是:

1.chgcmddft + F4 你(妳) 就可以更改. 但建议如下.

2.将更改后的系统指令存放到一特殊 library 里(如 LIBIPL). 这个 library 也可存放贵公司自行开发的 commands 或 procedures, 而这一 library 将会是 IPL 时执行的 library.

3.写一支 CL program 放置在 IPL 时执行, 其内容是 change library list, 将 LIBIPL 移到 QSYS 之前, 原因是 QSYS 存放 OS/400 原始commands, 而 LIBIPL 放的是因应贵公司需要的commands 定义, 既使下次 OS upgrade, 也不需要在 change 一次.PS. 如真必要 change defaults, 请务必谨慎小心.

3.16 如何将AS/400英文界面改为中文界面?

解答 前提:系统必须安装第二语言(2989)。 具体步骤如下:

1.用CHGSYSLIBL命令修改系统的库列表。

CHGSYSLIBL LIB(QSYS2989) OPTION(*ADD) 2.GO MAIN 就可看到中文界面。 将中文界面改回英文界面:

1.用CHGSYSLIBL命令修改系统的库列表。

CHGSYSLIBL LIB(QSYS2989) OPTION(*REMOVE) 2.GO MAIN 就可看到英文界面

3.17 如何将屏幕内容写到文件中

解答 用户可以将自己的操作屏幕写到一个物理文件中,用来记录用户自己的操作过程(在做培训时会很有用),

方法是使用命令:

STRCPYSCN SRCDEV(*REQUESTER) OUTDEV(*NONE) UTFILE(mylib/myfile) 并在相继出现的系统信息回答屏中回答?G?,以后用户的操作屏幕会全部输出到文件:mylib/myfile中,

使用ENDCPYSCN可以结束此功能,恢复正常操作。

3.18 了解AS400文件系统

说明:本文主要针对一些初学者,让他们对AS/400文件系统有一个大致的了解会有所帮助。 目录:

AS/400系统文件大类:

- 30 -

AS400学习笔记 2006/04,Daniel,Easycon

-- 库

-- 共享文件夹

集成文件系统(IFS)的体系结构 -- 虚拟文件系统(VFS)接口 集成文件系统支持的文件系统 -- 根(Root)文件系统

-- 开放系统(QOpenSys)文件系统 -- 库(QSYS.LIB)文件系统 -- 文档库服务(QDLS)文件系统

-- OS/400文件服务器(QFileSvr.400)文件系统 -- 用户自定义文件系统 -- 网络(NFS)文件系统

-- Windows NT服务器(QNTC)文件系统 -- NetWare(QNetWare)文件系统 集成文件系统支持的服务器 -- NFS服务器

-- OS/400 NetServer -- OS/400远程文件系统 集成文件系统增强功能 -- UNIX类APIs -- 图形化访问界面 -- 线程安全性 -- 支持DataLink 引言

任何操作系统最显而易见的部分就是文件系统。大多数操作系统把可由用户命名的对象叫做文件。文件可以包含程序,数据或者其它任何用户希望包含的东西。操作系统提供创建,删除,读写和其他管理文件的应用程序接口(APIs)。

大多数操作系统都有自己独特的文件类型。例如:UNIX系统有通常的文件和目录,也有特殊的块文件和字符流文件。目录用于追踪文件的用途,同时也用于装载文件符号名所需要的信息。块文件和字符流文件则用于模拟硬盘和终端设备。

我们最初纳入OS/400的应用之一就是使OS/400能够存储其它操作系统上的文件,例如: UNIX系统。在操作系统OS/400 V3R1上,我们引入了集成文件系统(IFS)的概念,它不仅创建了与传统AS/400操作系统相兼容的体系结构,同时还创建了其它操作系统所需要的新结构。截止到iSeries服务器发布,集成文件系统已经可以支持十种文件系统和三种服务器类型。

集成文件系统是操作系统OS/400的一部分,它提供给用户和应用程序一个访问传统数据库文件,库,文件夹,文档和传统的AS/400上的其它对象的兼容的体系结构。此外,集成文件系统还提供对PC和UNIX系统上使用的流输入/输出文件的支持。包含连续长字符数据的流文件对于 存储图象,声音信号,视频信号变得日益重要。集成文件系统还提供对存储在本地iSeries服务器上或远程别的类型服务器上的流文件的浏览功能。

为了管理这些文件,我们创建了一种层级的目录结构。这种层级的目录结构是通过类似PC和UNIX上的指定目标的存储路径来访问该对象的。这种文件目录结构允许根据应用程序的要求通过不同的文件系统或一般程序接口来处理面向记录的数据库文件,UNIX流文件。

支持不同的文件系统通过相同的程序接口来访问是集成文件系统的独特功能。要了解如

- 31 -

AS400学习笔记 2006/04,Daniel,Easycon

何能做到这一点,我们首先来看一看最初是怎样在系统中使用这样的结构去查询对象,以及它是怎样发展成现在的集成文件系统的?

在S/38系统上,在数据库中查找一个对象是相当简单的:由于每个对象都有一个名字,你只需要在库里搜寻这个名字就可以了。库提供了一种将对象组织成组并且允许对象可由名字索引的方法。这种库结构一直为OS/400操作系统所沿用。 1. 库(Library)

库是OS/400操作系统上的一种对象,是一种可以经由它找到其它OS/400对象的对象。库不象PC或UNIX等操作系统上的多层目录结构,它是单级结构。让我们通过OS/400上对象的命名规则来阐述这种单级结构。

要在OS/400上搜索一个对象,我们必须知道该对象的名称及所在的库(例如:库/对象),同时我们还需要知道对象的类型,以次来唯一确定这个对象。两个或多个对象可以有相同的名称,但是它们必须是不同类型的对象。换而言之,在同一个库里,可以有一个名称为SAM的程序和一个名称为SAM的数据区域,但是不能在这个库里有两个名称为SAM的程序。同样的道理,一个对象能且只能存在于一个库里。

除了一个库例外,任何库不能参照其他库,如果这样做的话就会违背库/对象这种单级结构。因此,除了一个名为QSYS的库可以参照其他库之外,其他任何库都没有这个功能。少数几个特殊的OS/400对象只能存放于QSYS库中,例如:存放用户权限信息的用户简要表(user profile),用于输入/输出操作的输入/输出配置对象(I/O configuration object)。在系统中,库列表是与作业相关联的,库列表告诉系统当查询一个对象时按照什么样的顺序去执行查询任务。由此可见,库结构是相当简单的。 2. 共享文件夹(Shared Folders)

共享文件夹的概念最早引进OS/400是为了支持Office/400的功能。S/36是一个相当好的办公系统,许多与文件夹相关的概念就是由S/36发展来的,OS/400上的文件夹对象类型的引入就是为了支持S/36上的办公功能。简而言之,集成的办公环境支持为办公对象提供了一个可以为办公产品包含数据的文件系统。传统应用所用到的邮件,文档,程序和文件都可以包含在这个文件系统中。

文档库服务让用户视文件系统为包含文档库对象的电子文件柜。文件夹管理服务使用户可以在文件夹中组织对象,并且一个文件夹可以包含其它文件夹,同时可以被交互地查询。 为了使PC有效地合并到办公环境中来的目标使得原来使用在S/36系统上的共享文件夹被广泛应用,并后来被引入OS/400操作系统。因此,除了以上提及的传统的办公对象之外,共享文件夹也能够存放象电子表格,曲线图,图象,PC程序和PC文件。

IBM多次增强了PC Support产品的功能,但是这个产品已经过时并且越来越不能满足客户机/服务器应用,并且PC Support也不能支持当前客户所希望使用的所有PC操作系统,尽管它提供了运行DOS,DOS增强版,OS/2等PC客户端的能力,但是显然地,它不能支持运行微软视窗操作系统的客户端,因此,PC Support需要做大的变革。

IBM用新的叫做Cient Access的产品代替了PC Support,Cient Access提供了分布式客户机/服务器应用的平台。为了支持一些新的客户端操作系统,OS/400的文件系统也作了相应的调整,例如:为数据库应用所用到的库,PC文件所用到的文件夹等,但是客户端需要更多的文件系统种类,这样,新文件系统就应运而生了。 3. 集成文件系统(IFS)的体系结构

最初,如何构建能够支持所有的文件类型的单一的文件系统是一个很大的挑战,后来设计了相互独立,且并不兼容的多种文件系统,并将它们结合成一个体系结构之内。这样,最初设计文件系统所遭遇的问题就迎刃而解了。

我们讨论的OS/400操作系统上的单层库结构实际上是PC操作系统使用的文件系统的一

- 32 -

AS400学习笔记 2006/04,Daniel,Easycon

个子集,虽然名称不同于PC的命名方式,但是结构却是相似的:在PC操作系统上的文件在OS/400操作系统上称之为对象,在PC操作系统上的目录在OS/400操作系统上称之为库。与OS/400操作系统不同的是,PC操作系统上的目录可以包含其他目录,称之为子目录。这样就使得PC操作系统上的多层命名规则不同与OS/400操作系统的单层命名规则,例如,一个PC文件的全路径可以是: DIR1\\DIR2\\...\\DIRn\\FILENAME, 可见,它是OS/400操作系统上的库/对象的单层命名规则的父集。

同样地,UNIX文件系统也是OS/400上库/对象结构的父集。特别注意:一个OS/400的对象只能存在于一个库中,也就是说,OS/400上到一个对象只有唯一的一条路径,但是UNIX系统允许多条到达同一对象的路径。

因此,使用类似UNIX文件系统的单一根目录结构就可以实现我们要把多种文件系统统一在一个体系结构下的构想,同时所有其他的文件系统都位于这个根目录之下。命名规则就类似: DIR1\\DIR2\\...\\DIRn\\FILENAME。

为了配合象Posix, XPG等基于UNIX系统的开放平台标准,我们增加了文件名和目录名的长度。存放在集成文件系统中的对象名的存储方式我们称之为统一字符编码(Unicode),这是一种国际标准,它支持多种语言,包括许多国家都会用到的双字节字符集。所有RISC系统都能够支持在数据库中存储以Unicode编码的文件。

RISC系统上,统一字符编码(Unicode)对数据库的支持技术的引入使得应用程序开发者能够使用业界跨平台的通用数据格式,这就意味着,任何应用程序可以用通用的代码书写,并被全世界使用,也就是说,不需要为某个双字节语言国家编写特殊的双字节程序的特殊版本。

请注意,集成文件系统提供了访问数据的途径,但是数据格式必须与应用所要求的相兼容,或者数据格式可以转换成与程序相兼容。OS/400可以处理iSeries内部编码EBCDIC与PC上的ASCII编码之间的转换。

所有文件系统和集成文件系统中的文件都被视为OS/400上的对象。除此之外,任何文件系统都支持相同类型的操作,这些操作都被定义在相应的文件系统的标准操作表中。每一个文件系统都拥有自己独特的一套信息存储与信息交互的逻辑结构和规则,与别的文件系统可能不尽相同。通过使用表的方法,无须改变现有的文件系统或文件系统上特定的操作就可以将新的文件系统加到集成文件系统中去。

集成文件系统视传统的库和文件夹为单独的文件系统。任何具备不同功能的其他系统也被视为单独的文件系统,正是有了这样的结构,我们就有可能随着需求的增加,将新的文件系统不断纳入集成文件系统中。

下图(图1)显示了集成文件系统所支持的十种不同的文件系统和三种文件服务器。在我们逐个浏览每个文件系统之前,我们必须理解集成文件系统提供了所有文件系统的通用接口。

- 33 -

AS400学习笔记 2006/04,Daniel,Easycon

(图1. 集成文件系统体系结构) 4. 虚拟文件系统(VFS)接口

虚拟文件系统是集成文件系统中用来为所有文件系统提供通用接口的结构。虚拟文件系统是一种面向对象的接口,它提供的对象叫做虚拟节点(vnode)。虚拟节点是一个抽象的对象,但是它代表了存放在文件系统中的真实的对象,这样做的目的是让文件系统中定义的抽象的操作能够运行在实在的对象上。

上图(图1)显示的逻辑的文件系统要处理文件系统中的对象,首先要取得代表该对象的虚拟节点,接着,执行该虚拟节点上的相应的操作。由于逻辑的文件系统并不真正去访问实际的文件系统对象,所以,不必知道真正的对象的物理影像以及位置。

因此,在任何时候,虚拟文件系统都代表着物理的文件系统。关心对象的物理影像和位置的物理的文件系统并不知道从应用程序所看到的文件系统的逻辑组成。为了使之能工作,物理的文件系统必须要提供虚拟节点和虚拟文件系统的操作接口。

由于这样的层级结构,应用程序使得物理的文件系统赋予逻辑文件系统以控制权,然后逻辑文件系统找到应用程序需要的物理对象所代表的虚拟节点,并调用相应的虚拟节点操作来实现应用程序所要求的动作。无论什么时候,逻辑文件系统要求一个基于虚拟节点的操作,它都不会知道物理文件系统所要执行的操作。

我们之所以要使用虚拟文件系统接口,就是要将高层的逻辑文件系统和底层存储数据的物理空间分开。这样分开之后,就可以在一台机器上安装多个物理文件系统,并使他们能够为应用程序透明地访问。同时,它也提供了一个相对简单的实现增加新的物理文件系统的机制。

5. 集成文件系统支持的文件系统

现在让我们来逐个讨论一下图1中描述的文件系统。值得注意的是,有一个早期的文件系统QLANSvr已经从这张图表中消失了。这个文件系统中包含与OS/2 Warp服务器共享的文件。由于iSeries上已经不再支持OS/2 Warp服务器了,所以这个文件系统就从iSeries

- 34 -

AS400学习笔记 2006/04,Daniel,Easycon

上移走了。从上文的讨论中,我们知道,将来应用环境所需要的文件系统可以被添加进来,同样的,不需要的可以被移走。 -- 根(Root)文件系统

根文件系统包含DOS和Windows文件系统的文件和目录,通过类似UNIX系统的层级结构来访问,并且优化了流文件的输入和输出。 -- 开放系统(QOpenSys)文件系统

QOpenSys文件系统中存放的是基于UNIX的文件和目录,它完全与其它基于UNIX的开放系统标准相兼容,例如:Posix, XPG. -- 库(QSYS.LIB)文件系统

QSYS.LIB文件系统是原始的AS/400库结构,它包含OS/400的库和其它类型的OS/400对象。QSYS.LIB文件系统提供给集成文件系统的用户一个利用层级结构访问这些对象的接口。利用QSYS.LIB文件系统创建的对象完全可以从传统的非集成文件系统的OS/400界面去访问。QSYS.LIB文件系统支持源物理文件/成员和用户空间(User Space)等数据对象的输入/输出操作,同时,还支持库,源物理文件/成员,数据,用户空间的创建,以及库中大部分对象的删除,重命名,移动,拷贝,查询属性等操作。 -- 文档库服务(QDLS)文件系统

QDLS文件系统支持从S/36系统上继承到OS/400系统上来的文件夹结构,它提供了访问文件夹和文档的接口。 此外,它还支持以流文件存储的OS/400上的文件夹,文档库对象的数据。

-- OS/400文件服务器(QFileSvr.400)文件系统

QFileSvr.400文件系统提供访问远程iSeries服务器或AS/400服务器上的文件系统的接口。当用户向对方文件系统提出文件服务请求时,QFileSvr.400文件系统可以作为客户端,与目标系统上的OS/400文件服务器共同工作来完成实际的文件操作。 -- 用户自定义文件系统

用户自定义文件系统(UDFS)包含用户自己定义和自己管理的文件系统。UDFS存放于辅助存储池(ASP)中。 -- 网络(NFS)文件系统

NFS文件系统提供用户访问远程网络文件系统数据和对象的接口。一个NFS服务器可以开放一个网络文件系统,这样,NFS客户端就可以加载到该文件系统上。任何一个加载到iSeries服务器上的文件系统都属于网络文件系统的范畴。

NFS首先由SUN MicroSystem公司为了在UNIX环境中访问分布式文件系统而创建的,从此,NFS协议就成为了互联网的业界标准,现在许多平台都支持这种协议。OS/400 V3R7支持NFS V2版本;OS/400 V4R4支持文件超过2GB的NFS V3版本。 现在,最新的NFS版本是V4。 -- Windows NT服务器(QNTC)文件系统

QNTC文件系统包含本地或者远程运行Windows NT/2000的xSeries服务器访问的文件。它能够让iSeries上的应用与Windows客户端使用相同的数据。 -- NetWare(QNetWare)文件系统

QNetWare文件系统包含本地或者远程运行Novell的xSeries服务器访问的文件。NetWare文件系统可以被现存的文件系统动态地映射,同时,它还提供访问NetWare目录服务的对象和存放在流文件中的数据的接口。 6. 集成文件系统支持的服务器

图1中列出了集成文件系统所支持的服务器类型。我们简要地讨论一下在文件共享的网络中使得iSeries既作为服务器端又作为客户端的UNIX服务器,Windows服务器和OS/400服务器。这些服务器连同它们的文件系统使得iSeries服务器能够从本地或者远程支持应用

- 35 -

AS400学习笔记 2006/04,Daniel,Easycon

程序的运行。

除了我们以上提到的三种服务器,集成文件系统还支持xSeries服务器(集成在iSeries内部或者远程连接的)和iSeries分区上运行的Linux服务器。图1中只显示了运行Windows NT/2000的集成xSeries服务器和运行Novell NetWare的xSeries服务器,QNTC文件系统和QNetWare文件系统还包含了本地或者远程xSeries服务器上的文件。请注意,PC客户端直接与xSeries上的操作系统做交互,而不使用集成文件系统的应用程序接口。 -- NFS服务器

NFS服务器和NFS文件系统使得在远程文件系统或目录加载到本地UNIX工作站,PC机或iSeries时,iSeries服务器既可以作为服务器端又可以作为客户端。就象先前我们提到的,NFS文件系统提供用户访问远程网络文件系统数据和对象的接口,作为NFS服务器端,iSeries可以导出一个网络文件系统供NFS客户端来加载。NFS服务器可以从以下任何一个文件系统中将数据(如:文件,目录,库,文件夹等)导出:root(/), QOpenSys, QSYS.LIB, QDLS, QOPT, UDFS。

因此,NFS服务器和NFS文件系统共同作用通过为远程终端导出本地文件系统和从远程服务器加载导出文件来实现数据的分布式处理。客户端和服务器之间的通讯是通过远程过程调用(RPC)来实现的。 -- OS/400 NetServer

OS/400 NetServer能够让运行Windows的PC可以访问集成文件系统的目录和OS/400的输出队列,前提是iSeries服务器和PC机上都配置了TCP/IP协议。PC用户通过Windows的网上邻居来访问共享信息。对于连接到iSeries服务器的PC用户来说,集成文件系统就象一块包含目录和对象信息的硬盘。PC用户可以通过Windows/NetWare中自代的文件共享功能或者Client Access Express程序来访问集成文件系统的文件。

我们对iSeries Client Access的支持作了一些重大的改变。过去,Client Access系列产品对网络驱动器和打印机的支持都是内含在产品中的,现在,这些产品被两个产品替代了:iSeries Client Access Express for Windows(称为超级终端) 和 iSeries Access for Web。原先,要使用Client Access for AS/400,首先要在AS/400和PC之间先建立一个连接,然后,使用系统程序接口(SPI),通过在PC上映射网络驱动器或通用命名规则(UNC)来访问集成文件系统上的目录或打开文件。

iSeries超级终端使用Windows操作系统自代的文件共享功能来实现与OS/400 NetServer的网络文件和打印访问。通过使用iSeries超级终端,用户还可以使用Client Access系统程序借接口,通过操作导航器(它是iSeries最主要的图形用户界面)来访问共享文件。在操作导航器中,可以对集成文件系统之下的目录进行创建,重命名和删除。Client Access系统程序界面还支持超级终端在集成文件系统上的拖拽功能,这对利用SSL的优点非常重要,系统程序界面支持SSL,但是OS/400 NetServer不支持SSL。 -- OS/400远程文件系统

OS/400远程文件系统(RFS)使用户能够透明地访问远程iSeries或AS/400服务器上的文件系统。简单解释一下为什么没有将它纳入图1中:远程文件系统被作为目录加在QFileSvr.400文件系统之下,当一个客户请求从QFileSvr.400文件系统下的子目录提交时,远程的RFS就会在远程处理这个请求。由于QFileSvr.400在远程服务器上来处理客户请求,所以没有在图1中将RFS单独列出来。

QFileSvr.400文件系统是通过层级结构来访问的,它的第一层目录是远程iSeries或AS/400服务器的名字。QFileSvr.400文件系统与RFS文件服务器共同作用来完成真正的文件操作。RFS提供了一种在两台iSeries或AS/400服务器之间共享文件的简单而有效的方法。

- 36 -

AS400学习笔记 2006/04,Daniel,Easycon

7. 集成文件系统增强功能 -- UNIX类APIs

操作系统的一个重要任务就是提供应用程序接口在文件系统上来创建,删除,读写等方法来管理文件。与UNIX层级结构一样,集成文件系统中也增加了许多UNIX类的应用程序接口。

其中的一个例子就是通过UNIX类的应用程序接口来做数据转换。应用可以使用不同于文件存储时的代码页来读取该文件,一个读取的API可以从文件存储空间将其读出并转换成应用程序所希望看到的代码页,类似的,一个写入的API可以将应用程序提供的数据在存入系统之前将其改变成希望存储的代码页。这种数据转换的功能是iSeries服务器独特的。除了这些APIs,OS/400 NetServer也可以根据文件的扩展名来实现数据转换。

支持统一字符编码(Unicode)路径名的功能也是新增的。一个内部使用统一字符编码(Unicode)的应用程序可以调用使用统一字符编码(Unicode)路径名的UNIX类API。 此外,还新增了代码转换功能,原来,集成文件系统只能实现单字节到单字节,双字节到双字节的代码转换,现在,集成文件系统已经可以支持统一字符编码(Unicode)混合编码的应用程序之间的代码转换,这是一种为复杂的转换机制。 -- 图形化访问界面

现在,既可以通过OS/400上的控制语言(CL)命令(这种命令行语言是从S/38系统上延续到OS/400上的)来访问集成文件系统中的对象,也可以通过Client Access中的操作导航器来访问集成文件系统中的对象。 -- 线程安全性

集成文件系统中使用的API在访问文件系统中的对象时,都具备线程安全性。root,QOpenSys,QSYS.LIB,QOPT,QNTC和UDFS等文件系统都具备线程安全性。 -- 支持DataLink

DataLink使得存储在数据库文件中的数据类型大大地扩展了。数据库中DataLink字段是用来保存本地集成文件系统,远程集成文件系统,或者安装了IBM DataLink Manager的Windows/UNIX服务器文件系统上非数据库文件的参照关系的。DataLink在字段中并不真正存放数据对象本身,而是存放了对象文件的位置。DataLink指向的对象可以是任意的数据类型 -- 例如,文本文件,声音记录或是图象文件。

对DataLink的支持使得用户可以在ROOT文件系统中指定一个存放DataLink对象的目录。一旦一个目录被指定为DataLink目录,那么,对该目录下所有对象的访问都要通过DataLink文件管理器(DLFM)。一旦一个DataLink目录下的对象被标定为DataLink对象,那么,DLFM就会创建一个包含到该对象的路径的前缀表。所有企图对DataLink对象的访问,删除,重命名等动作都会被DLFM截取,并通过检查对象存储路径和前缀列表来防止对DataLink对象的删除和重命名。DataLink指定的路径保证了存储在集成文件系统中的关联文件的参照完整性。 总结

集成文件系统是iSeries服务器其他应用程序的基础,它增强了OS/400现有的数据管理能力,也增强了对新兴的应用环境的支持能力。在很多应用环境 -- 例如,Lotus Domino, Linux, Unix, 和 Windows,都将使用到集成文件系统提供的功能。

- 37 -

AS400学习笔记 2006/04,Daniel,Easycon

3.19 如何快速查看IFS文件系统中FOLDER和文件的

大小

除了用NetServer在网络邻居中可以查看IFS文件系统中FOLDER和文件的大小外,OS/400提供了另一种方法。

解答 IBM 提供了一种免费的方法来获得IFS文件系统中FOLDER和文件的大小,但必须安装下列单个PTF,

V5R1M0 V5R2

Single PTF SI05856

(包含在CUM PTF TL03007中) SI05155 (包含在CUM PTF TL02211中)

可以通过调用程序qsrsrv来查看FOLDER和文件的大小。举例说明: 1.查看所有IFS文件:

call qsrsrv parm(\2.查看某个特定的目录

call qsrsrv parm(\

1和2中,命令执行之后生成一个SPOOL FILE,文件名是:QSRSRV,可以用命令WRKSPLF查看。

如下图所示:其中“SIZE IN K BYTES”列是FOLDER和文件的大小。

-------Display Spooled File

File . . . . . : QSRSRV -------Page/Line 1/7 Control . . . . . -------------Columns 1 - 78 Find . . . . . .

*...+....1....+...2....+...3....+...4...+...5...+...6...+...7....+... QSRSRV 'METRICS' ' /QIBM LINK --DFRD --SIZE IN DIRECTORY COUNT -LINKS -K BYTES NAME

17 ----0 -------136 /QIBM/ProdData/LicenseDoc/GC52-0885-01 17 ----0 -------928 /QIBM/ProdData/LicenseDoc/Z125-3301-11 17 ----0 -------136 /QIBM/ProdData/LicenseDoc/GC52-0914-00 2 ---- 0 -------16 /QIBM/ProdData/OS400/Shell/MRI/com/ibm/util --------------------------------------------------------------More... F3=Exit --F12=Cancel --F19=Left --F20=Right --F24=More keys

3.20 如何显示查询的调试信息

当您定义了一个查询并运行时,如果该查询出现错误,如何得到详细的调试信息,本篇文章介绍具体的操作过程。

解答 1. 将系统查询属性文件复制到自己的库中:

- 38 -

AS400学习笔记 2006/04,Daniel,Easycon

CRTDUPOBJ OBJ(QAQQINI) FROMLIB(QSYS) OBJTYPE(*FILE) TOLIB(userlibrary) DATA(*YES)

注意:不能用命令CPYF来操作,否则会引起数据丢失。 2. 进入交互式SQL环境: STRSQL

3. 更改系统查询属性文件的副本,将调试信息置为*YES:

UPDATE userlibrary/QAQQINI SET QQPARM = 'MESSAGES_DEBUG', QQVAL = '*YES', QQTEXT = NULL WHERE QQPARM = 'MESSAGES_DEBUG' and QQVAL = '*DEFAULT'

4. 将查询属性文件改为用户库中修改过的文件: CHGQRYA QRYOPTLIB(USERLIBRARY)

5. 然后,在交互史下,运行您有问题的查询; WRKQRY, 回车。

Option . . . . . . 9 --------1=Create, 2=Change, 3=Copy, 4=Delete -----------------------------5=Display, 6=Print definition -----------------------------8=Run in batch, 9=Run Query . . . . . . . TESTQRY -Name, F4 for list Library . . . . . USERLIB ---Name, *LIBL, F4 for list

6. 将详细的作业记录输出到假脱机文件中: DSPJOBLOG OUTPUT(*PRINT)

7. 详细的查询调试信息就记录在假脱机文件中,这些信息对您修改该查询有很大帮助。

3.21 如何修改QSYS/QADBXREF的CCSID

有些用户想修改物理文件QSYS/QADBXREF的CCSID,使用CHGPF命令修改时系统提示目标被锁定,使用WRKOBJLCK OBJ(QADBXREF) OBJTYPE(*FILE)得知目标是被作业QDBSRVXR锁定的,而此作业是系统底层作业,用户不能使用命令结束此作业,故在系统正常运行的情况下是不能对此文件进行修改,用户如必须在不影响系统的前提下修改此文件需要手动IPL,在IPL过程中的IPL OPTION屏中修改DEFINE OR CHANGE SYSTEM AT IPL项为Y,按执行键后下一屏中选择5(GENERAL OBJECT COMMANDS),在相继屏中选4(CHANGE PHSICAL FILE),其它操作请按屏幕提示执行。类似的方法可以修改其它系统目标的属性。

3.22 如何在AS400上发送带有颜色的MESSAGE

用户经常发送MESSAGE,MESSAGE的颜色往往是绿色的,其实是可以发送彩色的MESSAGE的。

1.创建SNDCOLMSG CLP程序。

SNDCOLMSG: PGM PARM(&MSG &COLOR &MSGTYPE) DCL VAR(&MSG) TYPE(*CHAR) LEN(80) DCL VAR(&COLOR) TYPE(*CHAR) LEN(1) DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10)

DCL VAR(&LASTBYTE) TYPE(*CHAR) LEN(1) VALUE(X'20') DCL VAR(&TEXT) TYPE(*CHAR) LEN(82)

CHGVAR VAR(&TEXT) VALUE(&COLOR *CAT &MSG *TCAT

- 39 -

AS400学习笔记 2006/04,Daniel,Easycon &LASTBYTE)

SNDPGMMSG MSG(&TEXT) TOPGMQ(*EXT) MSGTYPE(&MSGTYPE) SNDPGMMSG MSG(&TEXT) MSGTYPE(&MSG)

END: ENDPGM

2.创建命令SNCCOLMSG

CRTCMD CMD(SNDCOLMSG) PGM(SNDCOLMSGC)

SNDCOLMSG: CMD PROMPT('Send colored message')

PARM KWD(MSG) TYPE(*CHAR) LEN(80) PROMPT('Message')

PARM KWD(COLOR) TYPE(*CHAR) LEN(1) RSTD(*YES) DFT(*GREEN) SPCVAL( (*GREEN X'20')

(*GREEN_REVERSE X'21') (*WHITE X'22')

(*WHITE_REVERSE X'23') (*GREEN_UNDERSCORE X'24') (*GREEN_UNDERSCORE_REVERSE X'25') (*WHITE_UNDERSCORE X'26') (*RED X'28')

(*RED_REVERSE X'29') (*RED_BLINK X'2A')

(*RED_REVERSE_BLINK X'2B') (*RED_UNDERSCORE X'2C') (*RED_UNDERSCORE_REVERSE X'2D') (*RED_UNDERSCORE_BLINK X'2E') (*TURQUOISE X'30')

(*TURQUOISE_REVERSE X'31') (*YELLOW X'32')

(*YELLOW_REVERSE X'33') (*TURQUOISE_UNDERSCORE X'34')

(*TURQUOISE_UNDERSCORE_REVERSE X'35') (*YELLOW_UNDERSCORE X'36') (*PINK X'38')

(*PINK_REVERSE X'39') (*BLUE X'3A')

(*BLUE_REVERSE X'3B') (*PINK_UNDERSCORE X'3C') (*PINK_UNDERSCORE_REVERSE X'3D') (*BLUE_UNDERSCORE X'3E') ) PROMPT('Color')

- 40 -

AS400学习笔记 2006/04,Daniel,Easycon

PARM KWD(MSGTYPE) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*INFO) VALUES(*INFO *COMP) + PROMPT('Message type')

3.执行

sndcolmsg msg('sgdsad') color(*blue)

SNDCOLMSG MSG('sgdsad') COLOR(*YELLOW_REVERSE) sndcolmsg msg('sgdsad') color(*blue) sndcolmsg msg('sgdsad') color(*pink) xqlib/sndcolmsg msg('sgdsad') color(*pink)

3.23 恢复系统密码

A. 面板调成 01 B M V=F 启动 , 用CLIENT ACCESS连接AS400, 出现下面的界面 ,

选择3 , NEXT

IPL or Install the System System: 12345678 Select one of the following: 1. Perform an IPL 2. Install the operating system 3. Use Dedicated Service Tools (DST) 4. Perform automatic installation of the operating system 5. Save Licensed Internal Code

Selection 3 Licensed Internal Code - Property of IBM 5722-999 Licensed Internal Code (c) Copyright IBM Corp. 1980, 2001. All rights reserved. US Government Users Restricted Rights - Use duplication or disclosure restricted by GSA ADP schedule Contract with IBM Corp.

B. 出现以下界面 , 输入QSECOFR用户及其密码 , NEXT

Dedicated Service Tools (DST) Sign On System: 12345678 Type choices, press Enter. Service tools user . . . . . . . . . . . QSECOFR

Service tools password . . . . . . . . . ******* F3=Exit F5=Change password F12=Cancel

C. 选择5 , NEXT

Use Dedicated Service Tools (DST)

- 41 -

AS400学习笔记 2006/04,Daniel,Easycon

System: 12345678 Select one of the following: 1. Perform an IPL 2. Install the operating system 3. Work with Licensed Internal Code 4. Work with disk units 5. Work with DST environment 6. Select DST console mode 7. Start a service tool 8. Perform automatic installation of the operating system 9. Work with save storage and restore storage 10. Work with remote service support Selection

5 F3=Exit F12=Cancel

D. 选择6 , NEXT

Work with DST Environment System: 12345678 Select one of the following: 1. Active service tools 2. System devices 3. Service tools user profiles 4. System values 5. Service tools device profiles 6. Service tools security data Selection 6 F3=Exit F12=Cancel

E. 选择1 , NEXT

Work with Service Tools Security Data System: 12345678 Select one of the following: 1. Reset operating system default password 2. Change operating system install security 3. Work with service tools security log 4. Restore service tools security data 5. Save service tools security data 6. Password level Selection 1

- 42 -

AS400学习笔记 2006/04,Daniel,Easycon

F3=Exit F12=Cancel

F. NEXT

Confirm Reset of System Default Password System: 12345678 Press Enter to confirm your choice to reset the operating system security officer sign-on password. The password will be reset to the default assigned when the system was shipped. Press F12 to return to change your choice. F12=Cancel Operating system password override not in effect

G. IPL

3.24 创建自己的命令

用户在日常管理中,经常会重复使用同一命令,但命令又很长,用户可以创建用CRTDUPOBJ; CHGCMDDFT创建自己的命令简化操作。

例如:

命令WRKUSRJOB USER(*ALL) STATUS(*ACTIVE) JOBTYPE(*INTERACT) ASTLVL(*BASIC)

可以按以下步骤进行操作:

A. 输入命令CRTDUPOBJ(Create Duplicate Object)并按F4键

Create Duplicate Object (CRTDUPOBJ) Type choices, press Enter. From object . . . . . . . . . . > WRKUSRJOB Name, generic*, *ALL From library . . . . . . . . . . > *LIBL Name, *LIBL, *CURLIB Object type . . . . . . . . . . > *CMD *ALL, *ALRTBL, *AUTL... + for more values To library . . . . . . . . . . . > YOURLIB Name, *FROMLIB, *SAME... New object . . . . . . . . . . . > USERJOB Name, *OBJ, *SAME From ASP device . . . . . . . . * Name, *, *CURASPGRP, *SYSBAS To ASP device . . . . . . . . . *ASPDEV Name, *ASPDEV, *... Bottom F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display F24=More keys

在用户所在的库(yourlib)中创建WRKUSRJOB命令的副本userjob B. 在AS/400命令行输入CHGCMDDFT(Change Command Default)命令

Change Command Default (CHGCMDDFT) Type choices, press Enter. Command . . . . . . . . . . . . > USERJOB Name Library . . . . . . . . . . . > yourlib Name, *LIBL, *CURLIB New default parameter string . . > 'status(*active) jobtype(*interact)' Bottom F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display F24=More keys

这样一条新的命令被定义成功。

- 43 -

AS400学习笔记 2006/04,Daniel,Easycon

可以在AS/400命令行输入yourlib/userjob 来执行你需要的功能。

3.25 关于命令RGZPFM

命令RGZPFM做什么? 什么情况下运行? 影响命令RGZPFM执行时间的因素有哪些? 解答 命令RGZPFM应该在文件中被删除的记录超过20%时执行. 该命令执行后,系统的性能会改善。 因为系统在检索时不必再去读那些已经被删除的记录索引, 并且被删除记录所占有的硬盘空间会被释放而变 为可用。

影响命令RGZPFM执行时间的因素有很多, 最基本的有以下一些:o 在执行RGZPFM命令时, 系统会使用内部命令CPYF把数据部分拷贝到一个新的数据区, 如果文件 不是排序的(KEYFILE参数), 那么拷贝的频率是8K。 由此可以估算出大致需要花费的时间。

o 在执行RGZPFM命令时用KEYFILE参数, 那么运行时间取决于记录在硬盘上的分布状况。 系统会 用现存的访问路径(ACCESS PATH)去读取数据。

o 访问路径(ACCESS PATH)的维护也是因素之一。 重建访问路径(ACCESS PATH), 在最坏的情况下 是每分钟10,000条记录。

注:内部命令CPYF是不被指定库的, 这是内部对象, 通过WEKOBJ命令看不到的。它所用到的中间文 件的大小和被拷贝的文件的大小是相同的。

如果你准备用RGZPFM命令来增加硬盘的可用空间, 不妨使用下列步骤: o 确认物理文件有可用的副本

o 将与之相关的逻辑文件保存到磁带上

o 用CPYTOTAP命令把物理文件(没有被删除的记录)保存到磁带上 o 删除相关的逻辑文件 o 清除物理文件

o 用CPYFRMTAP命令把保存在磁带上的物理文件备份会系统

o 恢复逻辑文件 (用EDTRBDAP命令去浏览和维护访问路径的重建) 注:

o 如果硬盘上还有可用空间, RGZPFM命令会在同一ASP中创建物理文件的副本, 并随后重建逻辑 文件。 整个访问路径必须重建。 因此在执行该命令之前, 硬盘上必须要有足够的空间容纳 逻辑文件的索引。

o 如果打算一次对多个物理文件进行重整, 应该对逻辑文件有一个全盘的考虑。因为有些逻辑 文件是基于多个物理文件,如果是这样话, 就可以一次性在所有物理文件重整后重建逻辑访 问路径。

3.26 WRKSYSSTS命令结果屏中,作业的三种状态的

具体含义是什么?

1. Active: 作业的页面在内存池中,作业正在占有CPU或等待系统分配CPU

2. Wait: 由于作业的逻辑上的控制,作业等待系统或用户的操作,此时作业不占用CPU。 3. Ineligible: 作业需要CPU,但是由于相应的内存池允许的最大作业数的限制,而无法进入内存池,此种作业数目较多时应调整此限制。

- 44 -

AS400学习笔记 2006/04,Daniel,Easycon

3.27 WRKACTJOB命令其他一些有用功能的妙用。

作者:jacksu

( http://it.sinru.com/knowbase/html/2004-11/redir.php?code=MTEwMTU3MzI5OA==# )

对于AS/400系统管理员而言,WRKACTJOB是其中最常用的系统命令,用于查看系统运行的作业及性能等. 除了最常用的WRKACTJOB直接回车以外,还提供哪些有用的功能:

在WRKACTJOB命令输出界面: 1、自动排序:

缺省情况,输出结果按子系统来排序,用户可以将光标移到其它列上,然后按PF16,则输出就根

据该列来排序。

例,将光标移到CPU%下,按PF16,则输出作业的信息将按CPU的使用情况来排序。 同时,在WRKACTJOB命令行参数SEQ(Sequence),可以指定输出的排序标准:

例如:

*SBS -- 按子系统

*AUXIO -- 硬盘I/O量 *CPU -- CPU使用时间

*CPUPCT -- CPU使用率百分比 *USER -- 用户名 2、强大的PF功能键

使用PF24,用户可以发现,WRKACTJOB提供一些有用的PF功能: PF7 用于发现含某些字符的作业

PF20 用于只列出符合条件的作业等功能。

3.28 启动预起作业QZDASOINIT/QZDAINIT

作者:jacksu

( http://it.sinru.com/knowbase/html/2005-01/redir.php?code=MTEwNTI3NTkwMA==# ) 说明:

其中可能的一个原因是 QIWS/QZDAPKG 对象已经损坏,该对象可以被删除,在启动DATABASE服务时,会自动重新创建。 其中:

QZDASOINIT 是负责基于TCP/IP的ODBC连接的作业 QZDAINIT 是负责基于SNA的ODBC连接的作业 QZDASSINIT 是负责基于SSL的ODBC连接的作业

先停止所有的ODBC及数据传输连接,接着: ENDHOSTSVR *DATABASE

ENDPJ SBS(QSERVER) PGM(QIWS/QZDASOINIT) OPTION(*IMMED) ENDPJ SBS(QSERVER) PGM(QIWS/QZDAINIT) OPTION(*IMMED) ENDPJ SBS(QSERVER) PGM(QIWS/QZDASSINIT) OPTION(*IMMED)

- 45 -

AS400学习笔记 2006/04,Daniel,Easycon

DLTSQLPKG QIWS/QZDAPKG

STRPJ SBS(QSERVER) PGM(QIWS/QZDASOINIT) STRPJ SBS(QSERVER) PGM(QIWS/QZDASSINIT) STRPJ SBS(QSERVER) PGM(QIWS/QZDAINIT) STRHOSTSVR *DATABASE

3.29 如何查看与物理文件相关的索引,视图,约束?

作者:JACKSU

( http://it.sinru.com/knowbase/html/2004-12/redir.php?code=MTEwMzExNzE3Mg==# )

说明:当删除一个物理文件时,如果有逻辑文件与之相关,则删除会失败,所以要找出与物理文件相关的索引,视图,约束,先将这些逻辑文件删除,然后才能删除物理文件。这里介绍几个有用的命令:

1. DSPDBR FILE(Lib/File) OUTPUT(*PRINT)

该命令列出与物理文件相关的索引,视图,约束。

2. DSPFD FILE(Lib/File) TYPE(*CST) OUTPUT(*PRINT) 该命令显示建立在该物理文件上的约束的详细信息。

3. DSPFD FILE(Lib/File) TYPE(*ACCPTH) OUTPUT(*PRINT) 该命令显示建立在该物理文件上的访问路径的情况。

3.30 如何查询OS/400上装的主语言、第二语言是什

么?

作者:JACKSU

(http://it.sinru.com/knowbase/html/2004-11/redir.php?code=MTA5OTQwMTc1MA==#)

在OS/400的命令行输入:

GO LICPGM 选择 20 Display Installed Secondary Languages 之后,弹出画面“Display Installed Secondary Languages ”,上面显示这台AS/400上所装的主语言、第二语言。

3.31 如何查找物理文件 (PF) 与 逻辑文件 (LF) 之间

的关系?

作者:fh2001

(http://it.sinru.com/knowbase/html/2004-11/redir.php?code=MTA5OTUwNDk5Ng==#)

简要介绍:

通常我们用DSPDBR查找一个物理文件(Physical File)上挂了哪个逻辑文件(Logical File). 而反过来查就不太清楚了,其实DSPFD命令可以做到这一点

- 46 -

AS400学习笔记 2006/04,Daniel,Easycon

一.查看物理文件上挂有的所有的逻辑文件 命令: DSPDBR

二.查看逻辑文件挂到了哪个物理文件上了 命令: DSPFD

3.32 如何使DB2/400中的索引运行效率更高?

作者:jacksu

( http://it.sinru.com/knowbase/html/2005-10/redir.php?code=MTEyOTQ2NDQzNg==# ) 问题:如何使用DB2/400中索引的几个使用技巧,索引运行效率更高?

解答:大家知道索引是表的一个或多个列的键值的有序列表。创建索引的原因有两个: 1.确保一个或多个列中值的唯一性。

2.提高对表进行查询的性能。当执行查询时想以更快的速度找到所需的列,或要以索引 的顺序显示查询结果时,DB2 优化器选择使用索引。

DB2/400 版提供两种存取表的基本方法:表扫描(顺序)和基于索引的(直接)检索,基于索引的检索通常比表扫描效率高,那么,如何使DB2/400中的索引运行效率更高? 请注意以下四点:

1.避免数字转换

当列值与主变量(或常量值)进行比较时,尽量指定相同的数据类型和属性。如果主变量或常量值的精度大于命名列的精度,则 DB2 UDB AS/400 版不将该列用于索引。如果比较的两项有不同的数据类型,DB2 UDB AS/400 版必须转换其中的一个值或另一个值,这将产生不准确性(因为机器精度有限)。为避免比较列和常量时发生问题,使用下列: 相同的数据类型

相同的小数位,如果适当的话 相同的精度,如果适当的话

例如,EDUCLVL 是个 SMALLINT 值。当使用 SQL 时,指定: ... WHERE EDUCLVL < 11 AND EDUCLVL >= 2 而不是

... WHERE EDUCLVL < 1.1E1 AND EDUCLVL > 1.3 2.避免算术表达式

不要使用算术表达式作为一个操作数与行选择谓词中的列进行比较。优化器不使用与算术表达

式比较的列来构建索引。例如,当使用 SQL 时,指定: ... WHERE SALARY > 16500 而不是

... WHERE SALARY > 15000*1.1 3.避免字符串补空

当将定长字符串列值与主变量或常量值比较时,尽量使用相同的数据长度。如果常量值或主变量大于列长度,则 DB2 UDB AS/400 版不使用索引。假设 EMPNO 为 CHAR(6) 且 DEPTNO 为CHAR(3)。例如,在使用 SQL 时,指定:

... WHERE EMPNO > '000300' AND DEPTNO < 'E20' 而不是

... WHERE EMPNO > '000300 ' AND DEPTNO < 'E20 ' 4.避免使用以 % 或 _ 开头的 like 模式

- 47 -

AS400学习笔记 2006/04,Daniel,Easycon

当在 LIKE (OPNQRYF %WLDCRD) 谓词中使用百分比符号 (%) 和下划线 (_) 时,它们指定与您想选择的行的列值相似的字符串。当在字符串中间或尾部使用它们表示字符 时,可以利用索引,如下所示。例如,当使用 SQL 时,指定: ... WHERE LASTNAME LIKE 'J%SON%'

以上四点可以有效地提高DB2/400中索引的使用效率,建议大家要特别注意。 参考资料: http://publib.boulder.ibm.com/html/as400/infocenter.html

3.33 如何提高AS/400 TCP/IP的性能?

作者:jacksu

( http://it.sinru.com/knowbase/html/2005-02/redir.php?code=MTEwODY1MTMwNg==# ) AS/400用TCP/IP协议于其他主机进行通讯时,性能不是很好,除了提高网络带宽以外,还应检查AS/400上TCP/IP的配置:

1.修改MTU值(Maximum Transmission Unit)。 1.) 在AS/400命令行上输入命令: CFGTCP

2.)选择Option 2.(Work with TCP/IP routes). 3.)在要修改的路由前输入2(change).

4.)在“Maximum transmission unit”参数输入*IFC.

*IFC的含义:MTU的值与TCP/IP Interface的(Option 1)中的MTU值相同,Interface在缺省情况下与LinD中的Maximum frame size相同。

这样可以提高TCP/IP在这个接口上的吞吐量。

2.修改发送/接收缓冲区的值。

缺省情况下TCP的发送/接收缓冲区的大小是8192,可以考虑适当调整它值(范围是0.5MB-8MB)

1.) 在AS/400命令行上输入命令: ---=CFGTCP

2.)选择Option 3.(Change TCP/IP attributes).

3.)在“TCP receive buffer size”和“TCP send buffer size”参数位置输入要修改的值。 或用CHGTCPA命令直接修改。

TCP receive buffer size:接受远程系统数据的缓冲区的大小,若这个值过大,超过了网卡所规定的值,应考虑较低这个值,可以有效地提高TCP的性能。

TCP send buffer size:TCP发送数据的缓冲区的大小,可以根据网卡所规定的值适当调整它的大小。

3.34 如何限制QZDASOINIT作业的临时空间?

作者:jacksu

( http://it.sinru.com/knowbase/html/2004-12/1102256003.htm# ) 说明:

用户利用Client Access 的ODBC 进行Client/Server 结构的应用开发时,发现QZDASOINIT 作业经常占有大量临时空间,特别在超大规模的数据库查询时,临时空间占

- 48 -

AS400学习笔记 2006/04,Daniel,Easycon

用大量硬盘容量,此时即使停止客户端程序,服务器端的作业也不会马上释放占用的空间,并可能导致系统崩溃,如经常出现,可使用方法如下:

修改QZDASOINIT作业所使用的CLASS,可以根据各自公司ODBC的使用情况将CLASS 中MAXTMPSTG 值改为允许的最大临时空间,当其在运行中,临时空间超过该值时,系统自动结束此QZDASOINIT作业,避免系统崩溃。

系统缺省的CLASS MAXTMPSTG值是*NOMAX。

3.35 如何修改qsys/qadbxref的CCSID?

作者:jacksu

( http://it.sinru.com/knowbase/html/2005-02/redir.php?code=MTEwNzc2NDc2OQ==# ) 有些用户想修改模版物理文件QSYS/QADBXREF的CCSID或其它属性,使用CHGPF命令修改时系统提示此目标被锁定,使用WRKOBJLCK OBJ(QADBXREF) OBJTYPE(*FILE)得知目标是被作业QDBSRVXR锁定的,而此作业是系统作业,用户不能使用ENDJOB命令结束此作业,故在系统正常运行的情况下是不能对此文件进行修改.

用户如必须在不影响系统的前提下修改此文件,则需要手动IPL,在IPL过程中的IPL OPTION屏中修改DEFINE OR CHANGE SYSTEM AT IPL项为Y(缺省为N),按执行键后下一屏中选择5(GENERAL OBJECT COMMANDS),在相继屏中选4(CHANGE PHSICAL FILE),其它操作请按屏幕提示执行。类似的方法可以修改其它系统目标的属性。

3.36 如何在SQL/400中利用RRN(相对记录号)处理与

记录号相关的信息?

作者:jacksu

( http://it.sinru.com/knowbase/html/2004-12/redir.php?code=MTEwMjg1ODM3NA==# ) 下面以实例说明:

1. 显示记录顺序:

SELECT RRN(file_name), field1,field2,...FROM file_name 2. 选出相对记录号大于10000的记录:

SELECT RRN(file_name), field1,field2,...FROM file_name

WHERE RRN(file-name) > 10000

3. 更新相对记录号大于10000的记录中某字段的值: UPDATE file-name SET field1 = value

WHERE RRN(file-name) > 10000

3.37 物理文件与SQL表的区别?

作者:jacksu

( http://it.sinru.com/knowbase/html/2004-12/redir.php?code=MTEwNDA3MTMxMA==# ) 说明:

无论是 OS/400 的命令 CRTPF 或者是 SQL 语句 CREATE TABLE 都可以在

- 49 -

AS400学习笔记 2006/04,Daniel,Easycon

AS/400 上创建 *FILE 类型的对象。但是用CRTPF 命令创建的物理文件中的某些参数是用 SQL 语句 CREATE TABLE 无法对应的。这些参数是 *FILE 类型的对象属性的一部分,并且会影响到访问该物理文件时的操作环境。所以如果您使用 SQL 语句 CREATE TABLE 创建物理文件, OS/400 将使用 CRTPF 命令的默认值与之对应。下面逐一介绍这些参数:

-- 最大成员数(MAXMBR): 物理文件可以是多成员的,但是所有用 SQL 语句 CREATE TABLE 创建的表只能有一个成员。( CRTPF 命令中 MAXMBR 参数的默认值为1。)

-- 成员大小(SIZE):

OS/400 用记录数量来指示初始化给该物理文件分配的空间大小,以及超出初始空间后如何分配额外的空间。

CRTPF 命令初始10000条记录的空间,最大扩展至13000条记录空间,每次增长1000条记录空间。

CREATE TABLE 语句的默认值为 *NOMAX。

-- 重复使用已删除记录/删除记录百分比(REUSEDLT/DLTPCT):

当一条记录被删除后,先前被它所占用的空间将保留在文件空间中,不会被删除。 参数 REUSEDLT(*YES/*NO) 决定新插入的记录是否重复使用原来被删除的记录的物理空间。

参数 DLTPCT 是被删除记录数与所有活动记录的百分比数值。当关闭物理文件时,删除的记录数量超过这个百分比时,历史记录中会显示信息: CPF4653 -- 成员xxx超出了DLTPCT的数值。

CRTPF 命令默认值为: REUSEDLT(*NO), DLTPCT(*NONE)

CREATE TABLE 语句默认值为: REUSEDLT(*YES), DLTPCT(*NONE)

3.38 Domino for AS/400备份与恢复

一.Domino for AS/400备份

Domino for AS/400备份对于保障其正常运行十分重要,Domino for AS/400备份包括以下四个方面:

1.Domino for AS/400应用软件和产品文件的备份。 2.Domino for AS/400的备份。 3.Mail Database的备份。 4.特定数据库的备份。

下面将详细说明:

1.Domino for AS/400应用软件和产品文件的备份。 按照用户的不同要求,有以下几种方法:

GO SAVE, Option 21 ->; 备份整个AS/400系统,包括Domino应用软件、产品文件、数据库)。 GO SAVE, Option 22 ->; 仅备份系统数据(包括Domino for AS/400),保存产品库(library)和包含特许程序的目录(driectroy)。

GO SAVE, Option 23 ->; 仅备份用户数据,保存所有的用户文件和数据库。

- 50 -

本文来源:https://www.bwwdw.com/article/ql5o.html

Top