摘要: 八.通用日志管理工具1. 引言AS/400系统上有日志(JRN)和日志接收器(JRNRCV)目标对象,用来存放对数据库文件进行增删改等操作的日志记录。日志接收器是存放日志记录的具体地方,它可以是由一个无限增大的文件组成,也可以是由多个固定大小的文件组成。多个日志接收器文件形成日志接收器链,当当前ATTACHED的有限大小的日志接收器满了以后,系统会自动产生或由用户产生一个新的同样属性的接收器文件。用CHGJRN命令可以改变产生新的日志方式,当Manage receivers( MNGRCV)选项选择*SYSTEM时,系统会自动产生新的日志接收器,当Manage receivers( MNGRC 阅读全文
posted @ 2012-01-09 14:14 静海平心 阅读(846) 评论(0) 推荐(0)
摘要: 五.如何使用分布式关系数据库我们可以在AS/400系统中使用STRSQL命令来交互执行SQL语句。如果AS/400系统中没有安装交互式SQL工具,那么我们便不能使用SQL语句进行交互式查询等操作。假设有一群连网的AS/400,其中只有一台安装了交互式SQL工具,那么我们能不能只通过这台AS/400的交互SQL工具去对其他没有安装SQL交互工具机器的数据库进行操作呢?答案是肯定的,这就需要使用分布式关系数据库。分布式数据库管理是AS/400系统提供的一个重要功能之一,其功能比较强大,在本文里只能根据作者经验对分布式关系数据库的使用作简单介绍,根据这个简单介绍,你就可以很容易体验分布式关系数据库的 阅读全文
posted @ 2012-01-09 14:13 静海平心 阅读(630) 评论(0) 推荐(0)
摘要: 七.如何在程序中获取系统ASP使用率等系统状态信息AS/400系统管理员都对系统ASP空间增长情况很关心,当系统ASP空间涨满了以后将会引起系统DOWN机等安全问题。系统ASP空间与硬盘空间并不完全等同,如果系统只配置了一个ASP分区,那么系统ASP空间与硬盘空间是等同的,如果系统配置了多个ASP分区,则系统ASP只是ASP 1的分区。用WRKSYSSTS命令查看到的% system ASP used就是表示系统ASP空间的使用率。与系统ASP空间使用率有关的系统值有两个:QSTGLOWLMT和QSTGLOWACN。QSTGLOWLMT系统值设定了最小硬盘空间警告线百分比,比如设定为5,即表示 阅读全文
posted @ 2012-01-09 14:13 静海平心 阅读(496) 评论(0) 推荐(0)
摘要: 四.一个批量修改文件属性的工具AS/400上的每个文件都带有大量的属性,文件的属性是在创建文件的时候指定的。在实际应用过程中,可能会需要改变这些文件属性。以PF文件为例,我们可能需要修改文件的Member Size,Maximum Members,Maximum record wait time等等。修改物理文件(PF)属性命令是CHGPF,修改逻辑文件(LF)命令是 CHGLF,遗憾的是这些命令一次只能修改一个文件。如果假设有一个库,库下面有几千个物理文件需要一次性统一修改文件属性,那该怎么办?AS/400并没有提供这样的命令。我做了一个工具命令,可以实现对一个库下的所有文件属性进行批量修改 阅读全文
posted @ 2012-01-09 14:11 静海平心 阅读(475) 评论(0) 推荐(0)
摘要: AS/400系统开发工具及开发语言很多,有许多技术性的东西并不是我们能经常碰到的,但这些东西在一些实际应用中很有用处。本人在几年AS/400系统上的开发中,也有一些经验。有些东西如果不把其形成文字,过一段时间后,本人都会很快忘掉,比如我现在要写两年前的经验就很费劲。现把其中一些经验总结出来,与大家共享也行,自娱自乐也行。本文不是学术论文,仅仅是一些开发经验总结,有不严谨的地方必定在所难免。一 如何在CL程序自动回复询问类消息(Inquiry Message)在AS/400系统开发中,经常要与各种各样的消息打交道。有一类叫“Escape Message”的消息,是当程序出现错误后,会强迫程序异常 阅读全文
posted @ 2012-01-09 14:10 静海平心 阅读(869) 评论(0) 推荐(0)
摘要: QUOTE RCMD CL 阅读全文
posted @ 2012-01-09 14:01 静海平心 阅读(303) 评论(0) 推荐(0)
摘要: 1、 两台400在同一LAN内,并可正常使用TCPIP。2、 两台400必须有一个同名的帐户,例如2台机器都有TEST这个用户。配置过程:1、 配置 host table,以使2台400可以通过主机名互相访问方法:ADDTCPHTE INTNETADR('3.210.132.222') HOSTNAME((PRDAPDT)) 2、创建APPC控制器方法:CRTCTLAPPC CTLD(PRDAPDT) -----控制器名 LINKTYPE(*LAN) SWTLINLST(ETH01) ----网卡的线描述 RMTCPNAME(PRDAPDT) ----远... 阅读全文
posted @ 2012-01-09 14:00 静海平心 阅读(248) 评论(0) 推荐(0)
摘要: 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)E 阅读全文
posted @ 2012-01-09 13:59 静海平心 阅读(431) 评论(0) 推荐(0)
摘要: 1.root(根)文件系统:支持目录结构和访问流文件的命令。与QDLS相近,但支持长文件名并取消了对QDLS的限制。2.QSYS.LIB文件系统:400的数据库文件。FTP用户端可以存取物理文件(PF),逻辑文件(LF),原物理文件(STCPF)和存文件(SF).3.QDLS文件系统:通过它,可以访问“虚拟硬盘”,可以存放PC文件。4.QOPT文件系统:通过它的支持,可以访问400上的CD-ROM等。5.QOPENSYS文件系统:允许在400上存取UNIX类文件。6.QLANSRV文件系统:允许文件服务器输入/输出处理器(FSIOP)快速访问400的磁盘。 阅读全文
posted @ 2012-01-09 13:58 静海平心 阅读(338) 评论(0) 推荐(0)
摘要: 命令RGZPFM做什么? 什么情况下运行? 影响命令RGZPFM执行时间的因素有哪些?解答 命令RGZPFM应该在文件中被删除的记录超过20%时执行. 该命令执行后,系统的性能会改善。 因为系统在检索时不必再去读那些已经被删除的记录索引, 并且被删除记录所占有的硬盘空间会被释放而变 为可用。影响命令RGZPFM执行时间的因素有很多, 最基本的有以下一些:o 在执行RGZPFM命令时, 系统会使用内部命令CPYF把数据部分拷贝到一个新的数据区, 如果文件 不是排序的(KEYFILE参数), 那么拷贝的频率是8K。由此可以估算出大致需要花费的时间。o 在执行RGZPFM命令时用KEYFILE参数, 阅读全文
posted @ 2012-01-09 13:57 静海平心 阅读(443) 评论(0) 推荐(0)
摘要: 1)用authorization list控制数据库库内所有PF LF的权限。2)将你的用户归类为只读类(a member of the read-only group)3)将你的应用程序主菜单程序编译为 usrprf(*owner),在讲主菜单程序的owner改为更新类(a member of the update group).这样用户运行程序时就可以"adopt"到足够的权限来更新数据库了。 阅读全文
posted @ 2012-01-09 13:57 静海平心 阅读(201) 评论(0) 推荐(0)
摘要: 解答 我们知道,在分布式数据处理的环境下,对远程系统上文件内容的操作可以有很多方式,但是如果想简单地在本地对远程系统进行文件管理方面的操作,则可以由一条命令实现:SBMRMTCMD。现在介绍该命令的用法:1. 首先确保双方系统上的分布式处理服务已启动:STRTCPSVR SERVER(*DDM)2. 为目标系统创建DDM文件:CRTDDMF FILE(Lib/TESTAAA) RMTFILE(Lib/AAA) RMTLOCNAME(s102rncm *IP)其中:TESTAAA是DDM文件名; AAA是远程系统s102rncm上要操作的文件的名称。3. 在本地系统上运行文件管理方面的命令,例如 阅读全文
posted @ 2012-01-09 13:56 静海平心 阅读(245) 评论(0) 推荐(0)
摘要: 为了增强系统、应用的安全性,管理员经常需要了解有无用户删除特定的文件。下文将介绍通过系统审计的方法来实现管理员的目标。 通过系统安全审计功能,可以最小的系统开销来管理系统安全性,它仅仅记录object的改变事件,不会记录object中的详细数据。 下面是系统设置的方法: 1.运行命令GO SECTOOLS, 显示出* Display the Security Tools Menu* 菜单。 2.选择选项 10: Change Security Auditing 3.将系统值QAUDCTL 改为 *OBJAUD ,QAUDLVL改为*DELETE。 回车。 4.如果此时安全审计日志不存在与系统中 阅读全文
posted @ 2012-01-09 13:51 静海平心 阅读(558) 评论(0) 推荐(0)
摘要: 1)OPMDSPOBJD DETAIL(*SERVICE)2)ILEDSPPGM DETAIL(*MODULE)3)RVTSRC代码 PGM PARM(&LIB &PGM &SRCLIB &SRCFILE &SRCMBR) /* PARM DECLARE */ DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&PGM) TYPE(*CHAR) LEN(10) DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) DCL VAR(&SRCFILE) TYPE(*CHAR 阅读全文
posted @ 2012-01-09 13:38 静海平心 阅读(595) 评论(0) 推荐(0)
摘要: SAVOBJ OBJ(*ALL)LIB(USRLIB)DEV(*SAVF) SAVF(USRLIB/SAVF) OUTPUT(*OUTFILE)OUTFILE(USRLIB/RESULT)若SROSTA='0',表示未备份成功 阅读全文
posted @ 2012-01-09 13:31 静海平心 阅读(243) 评论(0) 推荐(0)
摘要: RPG/400中有两种数值型数据相对应,一种是ZONED DECIMAL, 另一种是PACKED DECIMAL。 它们虽然都可以存放数值型数据,但是它们所占用的存储空间是不一样大的。ZONED DECIMAL用一个BYTE存放一个数字,而PACKED DECIMAL用一个BYTE存放两个数字,这样可以看出用PACKED DECIMAL存放数据比ZONED DECIMAL节约一倍的空间. 另外还有一个原因,RPG/400的编译器会将所有的ZONED DECIMAL数据自动转换为PACKED DECIMAL类型,所以选用PACKED DECIMAL类型可以提高应用程序的运行效率。因此,最好选用P 阅读全文
posted @ 2012-01-09 13:21 静海平心 阅读(1280) 评论(0) 推荐(0)
摘要: 若ILE RPG的源程序中包含有结构化操作码(如DO...END,IF...ELSE...END),编译后不采用缩进格式显示,看起来非常不方便,本文主要描述如何在ILE RPG编译清单中加入结构化缩进格式。 如何在ILE RPG编译清单中实现结构化缩进格式呢?1.在ILE RPG的H表中加入INDENT缩进关键字,INDENT的主要作用是在编译清单中加入缩进格式,缺省情况下INDENT为*NONE,不进行缩进显示。要进行缩进显示可以用INDENT('字符值“),例如:INDENT('| '),它的含义是用一个竖线和一个空格进行结构化缩进,如下图所示:0001.00 H 阅读全文
posted @ 2012-01-09 13:13 静海平心 阅读(370) 评论(0) 推荐(0)
摘要: 在SQL/400中,不能直接列出某一列的合计,但可以用UNION语句实现这一功能。UNION操作可将两个或更多不同的SQL语句的结果合并成一个结果集,唯一的限制是每个表或SQL语句必需有相同的列类型、数目和顺序。UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。1、在AS/400命令行执行命令:STRSQL2、在“Enter SQL Statements”画面输入下列SQL 阅读全文
posted @ 2012-01-09 13:09 静海平心 阅读(592) 评论(0) 推荐(0)
摘要: 当您定义了一个查询并运行时,如果该查询出现错误,如何得到详细的调试信息,本篇文章介绍具体的操作过程。 1. 将系统查询属性文件复制到自己的库中:CRTDUPOBJ OBJ(QAQQINI) FROMLIB(QSYS) OBJTYPE(*FILE) TOLIB(userlibrary) DATA(*YES) 注意:不能用命令CPYF来操作,否则会引起数据丢失。2. 进入交互式SQL环境:STRSQL3. 更改系统查询属性文件的副本,将调试信息置为*YES:UPDATE userlibrary/QAQQINI SET QQPARM = 'MESSAGES_DEBUG', QQVAL 阅读全文
posted @ 2012-01-09 12:59 静海平心 阅读(353) 评论(0) 推荐(0)
摘要: 在AS/400的SELECT语句中可以使用CASE表达式,它可根据表达式的内容返回不同的值,它可以简化原来需多条SQL语句实现的查询,以前用多个游标完成的统计可在一条语句中完成,以下举例加以说明。 1.语法规则:Case语句--当对不同条件产生不同的结果值时,可使用Case语句。--Case语句计算所有定义的条件,并按条件是否为真而返回结果。语法如下:CASE [<input_expression>]WHEN <when_expression> THEN <result_expression>[ELSE <else_expression>]END 阅读全文
posted @ 2012-01-09 12:42 静海平心 阅读(526) 评论(0) 推荐(0)
摘要: 在OS/400 V5R2版本中DB2/UDB新增加了IDENTITY列属性,下面做简单介绍 IDENTITY的主要用途是实现用户的定义的某个字段自动按某个步长自动增加。 语法如下:IDENTITY_VAL_LOCAL-(-)----------------------------------IDENTITY_VAL_LOCAL是一个非确定函数,它按照定义为新插入的行生成标示。它支持的数据类型有:INTEGER,SMALLINT,BIGINT,DECIMAL和NUMERIC。举例说明:===> CREATE TABLE LIBRARYNAME/EMPLOYEE (EMPNO INTEGER 阅读全文
posted @ 2012-01-09 12:38 静海平心 阅读(664) 评论(0) 推荐(0)
摘要: 1.ShareODP: 在PF或者LF编译的时候,有个SHARE(Share Open Data Path)的参数,控制该文件是否共享其打开路径。 如果指定SHARE为*NO的话,程序在每次打开一个文件的时候,都会为该文件建立一次访问路径;如果指定SHARE为*YES的话,程序在第一次打开该文件的时候,系统建立该文件的访问路径,在同一个ActiveGroup中再打开该文件时,就不再重新建立该文件的访问路径,而是共享使用之前建立的路径,从而提高了程序运行的速度。 一般在编译的时候该参数设置为*NO,即不是共享打开。在需要共享打开的时候,使用OVRDBF对该参数进行更改。使用ShareODP需要注 阅读全文
posted @ 2012-01-09 11:21 静海平心 阅读(270) 评论(0) 推荐(0)
摘要: 所谓动态SQL,是相对静态SQL而言的,静态SQL在编译的时候就已经知道它的全部内容了。而动态SQL脚本是在编译的时候还不完整,直到执行过程中才能确定的SQL语句。在DB2/400中实现动态SQL的方式很多,但一般都采用PREPARE的方式来实现,下面是在SQLC中实现动态SQL的实例:EXEC SQL BEGIN DECLARE SECTION;DCL EMP CHAR(6);DCL PRJ CHAR(6);DCL SEARCH_PRJ CHAR(6); //真正的查询条件DCL ACT BINARY FIXED(15);DCL TIM DEC FIXED(5,2);DCL SELECT_S 阅读全文
posted @ 2012-01-09 11:17 静海平心 阅读(329) 评论(0) 推荐(0)
摘要: AS/400中的ILE RPG提供DEBUGER工具来调试RPG程序,本文主要描述DEBUGER工具的使用。ILE RPG的DEBUGER工具可以用来发现程序运行时的错误,它主要能实现:1.通过光标位置设置断点。2.单步执行。3.显示/修改程序中的变量。4.显示或修改字段、数据结构和数组的值给出字段、表达式。与DEBUGER相关的调试命令如下:命令描述ATTR显示一个变量的属性。这些属性是记录在调试符号表中的变量的大小和类型。BREAK在被测试程序的某个位置上输入一个条件断点或非条件断点。使用“BREAK 行号WHEN 表达式 ”来输入一个条件断点。CLEAR清除条件断点和非条件断点。DISP 阅读全文
posted @ 2012-01-09 10:45 静海平心 阅读(803) 评论(0) 推荐(0)
摘要: 1. %XLATE的语法%XLATE根据from、to和startpos参数将string转换为所需要的显示格式。参数简介:from : 转换字符串;to : 置换字符;将字符串按照from转换为to的格式。string : 将被转换的字符串;startpos: 数值性数据或一个常量,表示从第几个字符开始转换;2.举例说明:SEU==> FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++*************** Beginning of data ***************************0001. 阅读全文
posted @ 2012-01-09 10:40 静海平心 阅读(732) 评论(0) 推荐(0)
摘要: 1)从表t1中取符合条件的第一条记录:SELECT * FROM t1 ORDER BY age FETCH FISRT ROW ONLY2)在SQL语句中输入包含单引号的字符串INSERT INTO Lib/File VALUES('It''s').3)在交互SQL(STRSQL)中执行CL命令CALL QCMDCALL QUSCMDLN 阅读全文
posted @ 2012-01-09 10:39 静海平心 阅读(299) 评论(0) 推荐(0)
摘要: 从OS/400 V4R1开始,即使您的i系列400服务器上没有安装邮件服务器软件(如Domino),也可以通过设置 SMTP Gateway, 指向一个外部邮件服务器(Lotus Domino, Miscrosoft Exchange 等), 帮助转发Internet邮件, 即i系列400将邮件自动发到您指定的MailServer,再由这个MailServer把邮件发向Internet. 实现步骤如下:(1)设定TCP/IP环境,用命令CFGTCP:选择10(Work with TCP/IP host table entries),把外部MailServer名称和对应IP地址登记注册进Host 阅读全文
posted @ 2012-01-09 10:32 静海平心 阅读(650) 评论(0) 推荐(0)
摘要: PGMA: FFILEA UF K E DISK COMMIT(Switch)*LOVAL SETLL RECFILEA KEY READE RECFILEA 50 eval Switch='2'CALL PGMB eval Switch='1'EVAL FIELD1='S' UPDATE RECFILEA 20 阅读全文
posted @ 2012-01-09 10:29 静海平心 阅读(323) 评论(1) 推荐(0)
摘要: 1)对于S类型的参数只要按照字符串的形式,在没有数字的位置补0,不用输入小数点,就可以得到正确的结果,如果是负数,在第一位输入负号 - 即可,但是会占用一个数字位,7位的负数就只能输入6位数字了。 2)对于P类型的参数数字部分按照S类型的一样输入,还需要在字符串前加 X,并且如果长度为奇数,需要给字符串加 F 后缀,如果长度为偶数,需要在字符串的前后都加 F。如果是负数的,需要把字符串后面的F变为B。(X表示按16进制取值,由于P类型的数据存储方式是半个字节存储一个数字,所以需要在前后加其它的字母补齐空位。)PARM(X'20060F') 5 桁 奇数位 20060 PARM( 阅读全文
posted @ 2012-01-09 10:26 静海平心 阅读(491) 评论(0) 推荐(0)
摘要: 1)RUNRMTCMDRUNRMTCMD + CMD('C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\EXCEL.EXE') + RMTLOCNAME('192.168.1.168' *IP) + RMTUSER(user) RMTPWD(userpassword)2)STRPCCMDSTRPCO PCTA(*NO) STRPCCMD PCCMD(CALC) 阅读全文
posted @ 2012-01-09 10:18 静海平心 阅读(406) 评论(0) 推荐(0)
摘要: 代码中加入颜色,SQL查询加入颜色,发送带颜色的Message。(前面控制位记入下面16进制数)(*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'2 阅读全文
posted @ 2012-01-09 09:56 静海平心 阅读(402) 评论(0) 推荐(0)