Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72053
  • 博文数量: 15
  • 博客积分: 575
  • 博客等级: 中士
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 14:49
文章分类

全部博文(15)

文章存档

2011年(1)

2006年(14)

我的朋友

分类:

2006-05-29 14:57:04

8.3.2  通知信息

       除了监控逃逸信息,可以监控送到过程或程序的调用信息队列中的通知信息。通知信息告诉你的过程或程序非典型错误的条件。通过监控它,可以规定不同于没有产生信息条件的动作。很少IBM支持的命令提供通知信息,它的监控与对逃逸信息的监控类似,不同的是如果没有监控发生的情况,通知信息也在活动组的边界中从过程或程序中过滤。如果已到达组边界区没有遇到MONMSG命令,则自动返回一个缺省回答且允许发送者继续处理。它不象逃逸信息,没监控的通知信息不考虑为过程或程序的错误。

 

8.3.3  状态信息

       可以监控过程或程序中的命令或调用的过程或程序送出的状态信息,它告诉过程完成工作的状态,由监控状态,可以防止发送的过程或程序做更多处理,对状态信息没有信息存在信息队列中,即状态信息是不能接收的。

       如果没有监控状态,它也象逃逸信息和通知信息一样会被过滤。如果到达了活动组边界还没有发现MONMSG命令,就认为它是完成信息,控制会返回给信息的发送者来继续处理。经常会发送状态信息做通讯正常的条件,操作继续进行。送往外部信息队列的状态在交互显示中出现,通知用户一个功能正常执行。例如CPYF命令会给用户发送信息告诉它复制工作正在进行中。

       仅预先定义的信息能发送状态信息,立即信息不能发送,如果没有自己的信息说明,可以使用系统支持的信息标识CPF9898来发送状态信息。

       在功能完成后,过程或程序会从交互显示中取消状态,它不能用命令取消,但可把空的信息送到*EXT中来取消此信息,这可用CPI9801来做这件事。当控制返回到AS/400程序时,*STATUS信息可从第24上行取消而不必发送CPI9801

       下面例子给出CPF9898CPI9801的典型使用方法:

 

     SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +

               MSGDTA('Function xxx being performed') +

               TOPGMQ(*EXT) MSGTYPE(*STATUS)

         _

         _   /*  Your processing function  */

         _

     SNDPGMMSG MSGID(CPI9801) MSGF(QCPFMSG) +

               TOPGMQ(*EXT) MSGTYPE(*STATUS)

 

8.3.4  防止显示状态

       你不能防止发送状态信息的命令,但可以不让状态在屏幕的底部显示,做这件事可有两种方法:

              CHGUSRPRF命令:可以修改你的用户配置文件,在用它注册时,可不显示状

态,做法是规定USROPT(*NOSTSMSG)

              CHGJOB命令:可修改正运行的作业,让它不显示状态,做法是规定STSMSG

*NONE),可在CHGJOB中规定STSMSG(*NORMAL)

看状态。

       第三个方法,但不建议用它,是用OVRMSGF把状态标识改为一个空白信息。

 

8.4  中断处理程序

       中断处理程序是一个有信息到达方式为*BREAK的信息队列时自动调用的一个程序。在同一个CHGMSGQ命令必须规定程序名和中断交付名。虽然在CHGMSGQ中规定了程序,但处理信息的程序中可以有多个过程,过程必须运行RCVMSG命令接收信息,要接收和处理这些信息,调用的用户定义的程序要传递参数,(程序中的第一个过程传递这些参数)。信息队列的参数标识和信息引用键引起中断。有关这些参数,可以看系统API参考一书。如果调用中断处理程序,它中断产生信息的作业,在中断处理程序结束时,原程序重新运行。

       下面的程序是中断处理程序,它仅由一个过程组成:

 

     PGM PARM(&MSGQ &MSGLIB &MRK)

     DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10)

     DCL VAR(&MSGLIB) TYPE(*CHAR) LEN(10)

     DCL VAR(&MRK) TYPE(*CHAR) LEN(4)

     DCL VAR(&MSG) TYPE(*CHAR) LEN(75)

     RCVMSG  MSGQ(&MSGLIB/&MSGQ) MSGKEY(&MRK) +

             MSG(&MSG)

     .

     .

     .

     ENDPGM

 

       在生成中断处理程序后,运行下面的命令让它与QSYSOR信息队列相连:

 

      CHGMSGQ    MSGQ(QSYS/QSYSMSG)  DLVAR(*BREAK)  PGM(PGMA)

 

       注:1、在处理完信息后,它会从信息队列中取消,如信息队列在中断方式,在队列中

           的任何信息都会调用中断处理程序。

              2、接收信息的过程或程序中不必写等待时间不为零的程序段来接收信息,可在

RCVMSG中对等待参数规定不为零。当作业在中断处理事件中运行时不能由  系统处理信息到达。

       中断处理程序的一个例子是让程序发送一个信息,它正常的是送往QSYSOPR队列或其它队列。

       下面是用户定义的处理中断信息的例子(也仅一个过程)。用户不用响应CPA5243(在设备&1上接Rendystartstart-stop)和CPA5316(校准设备&3)。

 

     BRKPGM:     PGM (&MSGQ &MSGQLIB &MSGMRK)

                 DCL &MSGQ TYPE(*CHAR) LEN(10)

                 DCL &MSGQLIB TYPE(*CHAR) LEN(10)

                 DCL &MSGMRK TYPE(*CHAR) LEN(4)

                 DCL &MSGID TYPE(*CHAR) LEN(7)

                 RCVMSG MSGQ(&MSGQLIB/&MSGQ) MSGKEY(&MSGMRK) +

                        MSGID(&MSGID) RMV(*NO)

                 /* 忽略信息 CPA5243 */

                 IF (&MSGID *EQ 'CPA5243') GOTO ENDBRKPGM

                 /* 回答校准格式信息 */

                 IF (&MSGID *EQ 'CPA5316') +

                        DO

                        SNDRPY MSGKEY(&MSGMRK) MSGQ(&MSGQLIB/&MSGQ) RPY(I)

                        ENDDO

                 /* 要用户干预的其他信息 */

                 ELSE CMD(DSPMSG MSGQ(&MSGQLIB/&MSGQ))

     ENDBRKPGM:  ENDPGM

 

       在上面的程序中,在运行DSPMSG命令时,如果CPA5316到达队列中,DSPMSG显示会给出产生中断的原始信息和CPA5316信息。DSPMSG将等待操作员回答CPA5316,然后再进行处理。

       注:如果中断程序要等待从显示中输入数据,此程序不能打开显示文件。

       可用系统回答列表来指出系统将给预先定义的信息给出回答。这样,显示工作站用户就不需要回答了,详细内容请看8.6

       用户写的中断处理程序可能需要一个暂停或重存过程,以保证在执行信息处理功能时暂停或重存显示,仅在下列条件下,暂停和重存过程是必须的:

              中断程序的过程显示其它的菜单或屏幕。

              中断程序调用显示其它菜单或屏幕的程序。

       下面的例子解释用户过程和需要暂停或重存显示的显示文件。

       注:在生成显示文件时要规定RSTDSP(*YES)

 

            A          R SAVFMT                    OVERLAY  KEEP

            A*

            A          R DUMMY                     OVERLAY

            A                                      KEEP

            A                                      ASSUME

            A            DUMMYR         1A     1  2DSPATR(ND)

   

   

        PGM PARM(&MSGQ &MSGLIB &MRK)

            DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10)

            DCL VAR(&MSGLIB) TYPE(*CHAR) LEN(10)

            DCL VAR(&MRK) TYPE(*DEC) LEN(4)

            DCLF FILE(UDDS/BRKPGMFM)

            SNDF RCDFMT(SAVFMT)

            CALL PGM(User's Break Program)

            SNDF RCDFMT(SAVFMT)

        ENDPGM

 

       如果不想让用户规定中断处理程序来中断交互作业,程序可提交给批处理运行。可以规定一个中断处理程序接收信息然后再用SBMJOBSBMJOB用需要的参数完成当前的中断处理程序,控制然后返给交 互作业,它继续正常执行。

       中断处理程序的另外一个例子是在QUSRTOOL中的STSMSG工具中给出,它允许你修改某些或全部在工作站接收的信息成为状态信息。

 

8.5  QSYSMSG信息队列

       QSYSMSG是一个可在QSYS库中生成的可选信息队列。如果它存在且没有损坏,某些信息会直接送给它,而不送往QSYSOPR队列。这就允许用户写的程序在发送某些信息时获得控制权。除非要让QSYSMSG接收特别的信息,你不要生成这个队列。

       用下面的命令生成QSYSMSG

 

     CRTMSGQ  QSYS/QSYSMSG +

              TEXT('Optional MSGQ to receive specific system messages')

 

       它一旦生成,所有规定的信息(请看8.5.1)都直接送到这里。你可写一个程序来接收这些信息,用它们来完成特别动作,也可往QSYSOPR发送其它信息。这个程序可以写成中断处理程序。

 

8.5.1  送往QSYSMSG信息队列的信息

       下面说明送到QSYSMSG信息队列中的信息:

       CPF0907        存在严重的存储方面问题,请按帮助键。

如果在系统ASP中可用的辅存总量达到限值,会发送此信息,可用系统服务工具(SST)功能来显示或修改限值。详细信息请看备份和恢复一书。

       CPF111C        系统调度主机下电

                            系统检查到OS/400特许程序的损坏,如果在两小时内不做重存相应的

产品特许信息,则系统自动下电。

用下列命令重存产品特许信息:

       WRKOBJ命令删除产品信息:

              WRKOBJ       QSYS/QSZ0050     *PRDDFN

       RSTOBJ命令重存产品信息:

              RSTOBJ  OBJ(QSZ0050)      DEV(设备名)

                            SAVLIB(QSYS)      OPTION(*NEW)

       CPF111D        系统正在下电

                            系统检查到OS/400特许信息损坏,系统正在下电,系统将完成下电。

用下面的命令来避免系统再次下电:

       WRKOBJ       QSYS/QSZ0050     *PRDDFN

       RSTOBJ         OBJ(QSZ0050)      DEV(设备名)

                     SAVLIB(QSYS)      OPTION(*NEW)         

       CPF1269        在通讯设备上接收的程序启动请求,由于某种原因被拒绝

                            在启动请求被拒绝且包括一个为什么发生拒绝的原因码时,发送此信

息。对每个原因码的详细解释,请看ICF程序设计一书中CPF1269的内

容。

如果在用APPC时口令不对或没有权限,它意味着作业在错误状态或某

人试图中断保护,可以选择避免进一步使用APPC设备描述,直到做下

面工作后认可这些条件:

    QSYSOPR队列送信息

    记录下这些内容给安全管理人员看

    执行ENDMOD命令把允许的作业设为零,它允许当前使用同等设

备描述的作业保持活动,而避免其它作业在认可条件前启动。

计算在一个给定时间周期的试图要做的数目,可以根据它在程序中建立一个限值,表示在采取某些行动之前这个试图数目是无效的,可用工作标识单元(它可以是空格);用APPC设备描述或整体的APPC环境来分配这个限值。

       CPF1393        由于多次不正确的注册请求,使用户配置文件不可用

                            在用户试图注册多次,引起用户配置文件不可用时发送此信息。

       CPF1397        子系统关闭工作站

                            如果达到分配给QMAXSIGN的限值且设备不可用,则发送CL信息,

它指出用户没有输入一个有效的口令。

它的信息数据包括发送信息的设备名,可用这个信息或设计一个程序来

采取适当动作,可以考虑做下列之一:

       QSYSOPR发送同样信息

       记录下来给安全管理人员看

       在延迟一段时间后,设备自动变为可用

       CPI0948         &1磁盘上的镜像保护暂停

                            系统不能分配存储设备,数据没丢失

       CPI0949         &1磁盘上的镜像保护暂停

                            磁盘镜象保护挂起

       CPI0950         存储单元现在可用

                            从配置中丢失的存储设备,现在可用,数据没丢失

       CPI0953         到达ASP存储阈限

                            在规定的ASP中可用存储达到限值会发送此信息,它的信息数据中包括

辅存特性、使用的辅存限值的百分比及可用辅存的百分比,可用这些信

息决定采取的动作。

       CPI0954         超出ASP存储限值

                            在规定的ASP中所有可用的存储都用完了发送此信息。

       CPI0955         超出系统ASP非保护存储限值

                            在系统ASP中所有可用的存储都用完了发送此信息。

       CPI0964         存在弱电池问题

                            如果外部UPS或内部电池指出一个弱电池条件,发送此信息。

       CPI0965         系统单元上的电池电源功能故障

                            如果电池有故障或系统部件的电池电源部件的充电有故障则发送此信

息。

       CPI0966         扩展单元上的电池电源功能故障

                            如果电池有故障或扩充部件的电池电源部件的充电有故障则发送此信

息。

       CPI0988         恢复磁盘&1上的镜像保护

                            磁盘设备的镜象同步已经开始且重设磁盘镜象保护则发送此信息。在重

设磁盘镜象保护之前,系统完成的步骤之一是把数据从一个磁盘复制到

另外一个磁盘上去,这样两个磁盘上的数据是相同的。在复制时系统性

能会很慢,在复制完数据后,会给此信息队列发送CPI0989信息,且重

开始磁盘镜象保护。

       CPI0989         恢复磁盘&1上的镜像保护

                            如果磁盘的镜象同步成功地完成了,会发送此信息,系统完成了数据复

制,重开始磁盘镜象保护。

       CPI0998         在磁盘单元&1上发生错误

                            在磁盘设备&1上发现错误会发送此信息,它不包括运行错误分析得到

的故障信息。

       CPI1117         在库&2中的损坏的目标&1已删除

                            库中的作业调度因为损坏了被删除掉会发送此信息。

       CPI1136         镜像保护仍暂停

                            如果在一个或多个磁盘上的镜象保护每小时都挂起会发送此信息。

       CPI1138         存储溢出恢复

                            ASP  &1中不再有任何由于原因&2溢出到系统ASP中的目标时发

送此信息。

       CPI1139         存储溢出恢复失败

                            在试图从存储溢出故障中恢复时会发送此信息。

       CPI1153         系统口令旁路周期结束

                            在系统用口令旁路周期有效来操作时发送此信息。旁路周期结束,除非

提供正确的系统口令,下一个IPL也不能成功地完成。

       CPI1154         系统口令旁路周期在&5天内结束

                            没输入系统口令或输入的不正确会发送此信息,此时会选择系统旁路周

期。

       CPI1159         系统ID因为多于&1次安装而超期

                            在旁路ID接近超期时会发送此信息,请与IBM服务人员联系。

       CPI1160         系统ID超期

                            在系统ID超期时会发送此信息,请与IBM服务人员联系。

       CPI1161         &1单元的设备奇偶保护可完全操作

                            &1单元是有设备奇偶保护的磁盘设备子系统的一部分。&1需要服务,

数据已备份。如果不改正此条件,可能会发生机器检测,性能会下降,

也可能丢失数据。

       CPI1162         &1单元的设备奇偶保护不可完全操作

&1单元是有设备奇偶保护的磁盘设备子系统的一部分。由于下列原因,

&1不可完全操作:服务人员更换此单元;单元不可操作,也没有足够

的信息运行问题分析。

       CPI1165         一个或多个设备奇偶保护仍然不可完全操作

                            在此错误期间仍有一个或多个设备奇偶保护的磁盘单元子系统中的单元

不可操作。

CPI1166         设备奇偶保护可完全操作

                     提供设备奇偶保护的所有IOP子系统单元全部可操作。

       CPI1167         发生临时I/O处理错误

                            磁盘设备的I/O处理器发生错误条件。

       CPI1168         磁盘单元&1发生错误

                            号码为&1的磁盘设备发现错误,有损坏的目标。如果问题严重,会发

生机器检测,接着会标识这些磁盘单元。

       CPI1169         磁盘单元&1不可操作

                            磁盘单元&1停止操作,无数据丢失。

       CPI1393         子系统&1使设备&3上的用户&2不可操作

                            用户注册的最大次数已达到QMAXSIGN规定的数会发送此信息。此时

采取的动作用QMAXSGNACN决定。

       CPI2209         用户配置文件&1损坏,被删除

                            用户配置文件由于损坏被删除时会发送此信息,属于此用户配置文件自

己的目标先已被删除,这些目标没有主人,可用RCLSTG命令把这些目

标的主人改为QDFTOWN

       CPI2283         QAUPCTL系统值改为*NONE

                            由于审查失败而关闭审查后每小时可发送此信息。要打开审查或确定审

查失败的原因,可把QAUDCTL改为除*NONE以外的其它值。

       CPI2284         QAUPCTL系统值改为*NONE

                            IPL期间由于审查失败而由系统关闭了审查时会发送此信息。要打开

审查或确定审查失败的原因,可把QAUDCTL改为除*NONE以外的其

它值。

       CPI8A13        QDOC库接近保存历史限值

                            在库QDOC中的目标数接近系统支持的一个库中的最多目标数时会发送

此信息。

CPI8A14        QDOC库已超出保存历史限值

                     在库QDOC中的目标数超出系统支持的一个库中的最多目标数时会发送

此信息。

CPI8898         在光盘总线上检查出光盘信号丢失

                     在检查到光盘总线故障时会发送此信息,总线在减少方式下运行,此信

息记录在服务活动日志中且可用PAR选项。

CPI9014         从设备上接收的口令无效

                     从不正确的文本交换对话中接收到口令时会发送此信息,可能会指出无

权限的访问系统。

CPI9490         在设备&25上有磁盘错误

                     在检查到磁盘错误时会发送此信息。

CPI90A0        在设备&25上有磁盘错误

                     在检查到磁盘错误时会发送此信息。

CPI94CE        在总线扩允适配器、系统处理器或电缆上检测到错误

                     系统在主存中检查到故障时会发送此信息,系统性能会降低,运行问题

分析来确定有故障的卡。

CPI94CF        检测到主存卡故障

                     系统在主存中检查到故障时会发送此信息,系统性能会降低,运行问题

分析来确定有故障的卡。

CPI94FC        在设备&25上发生磁盘错误

                     9336磁盘上检查到它的一个部件已超出错误限值,且开始有错误。

CPP0DD9      检测到系统处理器故障

                     在系统处理器或系统处理器缓冲器检查到故障时会发送此信息,系统性

能会降低。

CPP0DDA      在槽9上检测到系统处理器故障

                     在系统处理器或系统处理器缓冲器检查到故障时会发送此信息,系统性

能会降低。

CPP0DDB      在槽10上检测到系统处理器故障

在系统处理器或系统处理器缓冲器检查到故障时会发送此信息,系统性

能会降低。

CPP0DDC      检测到系统处理器故障

                     在系统处理器上检查到故障会发送此信息,系统性能降低。

CPP0DDD      检测到系统处理器诊断码错

                     IPL期间,由系统处理器诊断检查出故障,但系统仍可完成功能。

CPP0DDE      检测到系统处理器错误

                     在系统处理器上检查到故障,硬件ECC正处理故障,但如果做IPL,不

会初始控制,系统会做没有处理器的自身重配置。

CPP0DDF      丢失系统处理器

                     在多处理器系统中如果丢失一个处理器会发送此信息。

CPP29B0        在设备&25上的恢复阈限超出

                     9337磁盘单元中的一个部件开始故障时会发送此信息。

CPP29B8        在设备&25上的设备保护暂停

                     9337磁盘单元中的一个部件开始故障时会发送此信息,RAID  5的技

术设备保护在磁盘臂上挂起。

CPP29B9        在设备&25上的电源保护暂停

                     9337磁盘臂上的一个电源模块故障时会发送此信息。在此磁盘臂上

电源保护被挂起。

CPP29BA       在设备&25上的硬件故障

                     9337磁盘臂上一个部件故障时会发送此信息,需要采取服务性动作。

CPP951B        电池电源设备故障

                     在电池电源故障时会发送此信息。

CPP9522        电池电源设备故障

                     5042扩充单元或5040扩展单元的电池电源单元故障时会发送此信

息。

CPP955E        电池电源设备没安装

                     9406系统单元电源支持的电池电源单元没安装时会发送此信息。

CPP9575        9406上的电池电源设备要更换

                     9406系统单元的电池电源单元故障且要更换时发送此信息。它可能

仍可工作,但可发生比充电循环的建议数多的情况。

CPP9576        9406上的电池电源设备要更换

                     9406系统单元的电池电源单元故障且要更换时发送此信息。它可能

仍可工作,在比建议长的时间内必须安装。

CPP9589        电池电源设备检查完成

                     对电池电源单元的测试完成后发送此信息,结果要记录下来。

CPP9616        电池电源设备没安装

                     5042扩充单元或5040扩展单元上没安装电池电源单元时会发送此信

息。

CPP9617        电池电源设备需要更换

                     5042扩充单元或5040扩展单元上没更换电池电源单元时会发送此信

息,它仍可工作,但可发生比充电循环的建议数多的情况。

CPP9718        电池电源设备需要更换

                     5042扩充单元或5040扩展单元上没更换电池电源单元时会发送此信

息,它仍可工作,但在比建议长的时间内必须安装。

CPP961F        大容量DC-3故障

                     9406DC大容量模块3故障时会发送此信息。

CPP9620        大容量DC-2故障

                     9406DC大容量模块2故障时会发送此信息。

CPP9621        大容量DC-1故障

                     9406DC大容量模块1故障时会发送此信息。

CPP9622        大容量DC-1故障

                     5042扩充单元或5040扩展单元上的DC大容量模块1上有故障时会

发送此信息,其它的DC大容量模块也能引起这种故障。

CPP9623        大容量DC-2故障

                     5042扩充单元或5040扩展单元上的DC大容量模块2上有故障时会

发送此信息,其它的DC大容量模块也能引起这种故障。

CPP962B        大容量DC-3故障

                     5042扩充单元或5040扩展单元上的DC大容量模块3上有故障时会

发送此信息,其它的DC大容量模块也能引起这种故障。

 

8.5.2  QSYSMSG接收信息的例子

       下面是从QSYSMSG接收信息的例子,程序由一个过程组成,它接收和处理CPF1269。在CPF1269中的原因码是二进制格式,它必须要转换成十进制来与704705比较,过程发出ENDMOD命令来防止启动新作业,然后发送同样的信息给用户定义的信息队列,来给安全管理员查看,也发信息给系统操作员告诉它发生了什么情况。如果收到不同的信息,它是发送给系统操作员。

       可以启动几个作业来调用这个样板程序。作业可以保持活动,等待信息到达,也可用ENDJOB命令来结束。

 

      /********************************************************************/

      /*                                                                  */

      /*  从 QSYSMSG 接收信息的样板程序                                   */

      /*                                                                  */

      /********************************************************************/

      /*                                                                  */

      /*  程序用原因码704或705来查找信息 CPF1269 ,如找到通知QSECOFR有    */

      /*  安全故障。其他情况给QSYSOPR重发信息。                           */

      /*  下面是 CPF1269 的信息描述:                                     */

      /*      CPF1269:  启动程序需要接收由于原因码&6,&7拒绝的通讯设备&1,*/

      /*      信息数据来自 DSPMSGD CPF1269                                */

      /*                                                                  */

      /*        数据  类型    偏移    长度说明                           */

      /*                                                                  */

      /*         &1   *CHAR      1     10  设备                           */

      /*         &2   *CHAR     11      8  方式                           */

      /*         &3   *CHAR     19     10  作业 - 号                      */

      /*         &4   *CHAR     29     10  作业 - 用户                    */

      /*         &5   *CHAR     39      6  作业 - 名字                    */

      /*         &6   *BIN      45      2  原因码 较大的                */

      /*         &7   *BIN      47      2  原因码 较小的                */

      /*         &8   *CHAR     49      8  远程分配名                     */

      /*         &9   *CHAR     57  *VARY  工作单元标识                   */

      /*                                                                  */

      /********************************************************************/

   

                PGM

   

                DCL        &MSGID   *CHAR LEN(  7)

                DCL        &MSGDTA  *CHAR LEN(100)

                DCL        &MSG     *CHAR LEN(132)

   

                DCL        &DEVICE  *CHAR LEN( 10)

                DCL        &MODE    *CHAR LEN(  8)

                DCL        &RMTLOC  *CHAR LEN(  8)

   

                MONMSG     CPF0000  EXEC(GOTO PROBLEM)

                /**********************************************************/

                /* 从 QSYSMSG 信息队列给出的信息                          */

                /**********************************************************/

   

      LOOP:     RCVMSG     MSGQ(QSYS/QSYSMSG) WAIT(*MAX) MSGID(&MSGID) +

                               MSG(&MSG) MSGDTA(&MSGDTA)

   

                IF         ((&MSGID *EQ 'CPF1269') /* Start failed msg */ +

                  *AND      ((%BIN(&MSGDTA 45 2) *EQ 704)                 +

                    *OR      (%BIN(&MSGDTA 45 2) *EQ 705)) )              +

                THEN(DO)

                  /********************************************************/

                  /* 通知 QSECOFR 安全故障                                */

                  /********************************************************/

   

                  CHGVAR     &DEVICE %SST(&MSGDTA 1 10) /* Extract device */

                  CHGVAR     &MODE   %SST(&MSGDTA 11 8) /* Extract mode   */

                  CHGVAR     &RMTLOC %SST(&MSGDTA 49 8) /* Get loc name   */

   

                  ENDMOD     RMTLOCNAME(&RMTLOC) MODE(&MODE)

   

                  SNDPGMMSG  MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +

                               TOMSGQ(QSECOFR)

                  SNDPGMMSG  MSG('Device ' *CAT &DEVICE *TCAT ' Mode '  +

                               *CAT &MODE *TCAT ' had security failure, +

                               session max changed to zero')            +

                               TOMSGQ(QSYSOPR)

                ENDDO

                ELSE DO

                  /********************************************************/

                  /* 其他信息 送给 QSYSOPR                              */

                  /********************************************************/

   

                  SNDPGMMSG  MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +

                                TOMSGQ(QSYSOPR)

   

                  /* SNDPGMMSG would fail if the message does            */

                  /*   not have a MSGID or is not in QCPFMSG             */

   

                  MONMSG     MSGID(CPF0000)  +

                             EXEC(SNDPGMMSG MSG(&MSG) TOMSGQ(QSYSOPR))

                ENDDO

   

                GOTO       LOOP    /* Go fetch next message              */

   

   

                /**********************************************************/

                /* 通知 QSYSOPR 非正常结束                                */

                /**********************************************************/

   

      PROBLEM:  SNDPGMMSG  MSG('QSYSMSG job has abnormally ended') +

                                 TOMSGQ(QSYSOPR)

                MONMSG     CPF0000

   

                SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) +

                              MSGDTA('Unexpected error occurred')

                MONMSG     CPF0000

   

                ENDPGM

 

 

8.6  使用系统回答列表

       使用系统回答列表可以规定系统对预先定义的查询信息给出回答,这样就不须用户给出回答,它仅可对查询信息自动给出回答。系统回答列表包括信息标识,可选的比较数据,对每个信息回答的内容和一个转储属性。它仅对使用系统回答列表的作业发送的预先定义的查询信息给出回答。要在下列命令中规定INQMSGRPY(*SYSRPYL)参数,才能使作业可用系统回答列表:

              BCHJOB

              SBMJOB

              CHGJOB

              CRTJOBD

              CHGJOBD

       在使用系统回答列表的作业发送预先定义的查询信息时,系统用升序检索与信息标识相匹配的项,也可再比较回答信息的数据。如果有匹配项找到,给出指定的回答,用户就不用再回答,如果没有找到匹配项,信息送给交互作业的工作站用户或批作业的系统操作员。

       下面是随系统一起安装的初始项定义:

 

顺序号

信息标识

比较值

回答

转储

10

CPA0700

*NONE

D

*YES

20

RPG0000

*NONE

D

*YES

30

CBE0000

*NONE

D

*YES

40

PLI0000

*NONE

D

*YES

 

       此表指出,使用系统回答列表的作业发送的CPA0700CPA0799RPG0000RPG9999

CBE0000CPE9999PL10000PL19999的信息回答都为D,且都做作业转储,系统要使用这些项,必须规定这些作业要使用系统回答列表。

       要往系统回答列表增加查询信息,用ADDRPYLE命令,在此命令中要规定顺序号,信息标识,比较数据,比较数据的CCSID,回答内容及转储属性,也可用WRKRPYLE命令来访问ADDRPYLE功能。

       可在系统回答列表中给出下列回答(参数值放在括号中):

              对查询信息发送缺省回答(*DFT),这时,信息不显示,也不调用缺省处理程序。

              要工作站用户或系统操作员来响应(*RQD),如果发信息的信息队列是中断方式,

则显示信息,工作站用户必须回答,在没用系统回答列表时也这样做。

              发送在系统回答列表中规定的回答信息。(信息回答,最多32个字符),这时发送

规定的回答,不显示信息,不调用缺省处理程序。

       下列命令往系统回答列表中加对RPG1241RPG1200CPA4002CPA5316和其它查询信息的回答项。

 

       ADDRPYLE SEQNBR(15) MSGID(RPG1241) RPY(C)

       

       ADDRPYLE SEQNBR(18) MSGID(RPG1200) RPY(*DFT)  DUMP(*YES)

   

       ADDRPYLE SEQNBR(22) MSGID(CPA4002) RPY(*RQD) +  CMPDTA('QSYSPRT')

   

       ADDRPYLE SEQNBR(25) MSGID(CPA4002) RPY(G)

  _

       ADDRPYLE SEQNBR(27) MSGID(CPA5316) RPY(I) DUMP(*NO) + CMPDTA('QSYSPRT'

       21)

   

   _   ADDRPYLE SEQNBR(9999) MSGID(*ANY) RPY(*DFT)

 

       现在的系统回答列表如下:

 

顺序号

信息标识

比较数据(b代表空格)

比较的起始位置

回答

转储

10

CPA0700

 

1

D

*YES

15

RPG1241

 

1

C

*NO

18

RPG1200

 

1

*DFT

*YES

20

RPG0000

 

1

D

*YES

22

CPA4002

'QSYSPRT'

1

*RQD

*NO

25

CPA4002

 

1

G

*NO

27

CPA5316

'QSYSPRT'

21

I

*NO

30

CBE0000

 

1

D

*YES

40

PLI0000

 

1

D

*YES

9999

*ANY

 

1

*DFT

*NO

 

       对使用这个系统回答列表的作业,在由作业发送加到回答列表中的信息时发生下列情况:

       对顺序号15,在作业发送RPG1241时,回答为C,不做转储。

       对顺序号18,使用一般的信息标识。因此,在送出RPG1200时,给出缺省回答。缺

省回答可以是在信息描述中规定的,也可是系统缺省回答,在发送回答

前,转储作业,以前加的项替代了RPG1241的项。

       对顺序号22,如果发送比较数据QSYSPRTCPA4002,信息送往工作站用户,这时

用户必须给出回答。在比较数据没有规定起始位置时,从信息中替代数

据的第一个位置开始。顺序号22测试名为QSYSPRT的打印机。用不同

起始位测试一个替代变量的例子,请看顺序号27

       对顺序号25,如果发送比较数据不等于QSYSPRTCPA4002,则回答为G,不做作

业转储。如果打印机为QSYSPRT,则要求操作员做格式校正,顺序号25

定义了对任何其它设备,如果发生格式校正的请求信息,用缺省值G=GO

响应。

       对顺序号27,如果有比较数据为TESTEDFILETSTLIBRARYQSYSPRT的查询信息

CPA5316,则回答为I。如规定了比较数据的超始位置,则从信息数据的

起始位置比较。此时,位置21是第三个替代变量的起始位置,对CPA5316

头四个替代变量为:

 

&1

ODP文件名

*CHAR

10

&2

ODP库名

*CHAR

10

&3

ODP设备名

*CHAR

10

&4

第一行的行号

*BIN

2

 

这样,在送出回答前,顺序号27要测试名为QSYSPRTODP设备。

       对顺序号9999,对任何比它低顺序号的没有匹配项的预先定义查询信息,提供*ANY

的信息标识,并发送缺省回答。如果在系统回答列表中没有这项,那么就要求工作站用户回答。

       在比较值中有*CCHAR数据时,从发送功能来的信息数据在比较前要转换成存在系统回答列表中的信息数据CCSID。仅转换类型为*CCHAR的数据,有关*CCHAR的详细内容,请看CL参考手册。

       要取消系统回答列表中的项,用RMVRPYLE命令,可用CHGRPYLE命令修改项的属性,也可用WRK RPYLE命令来显示当前在列表中的各项。

       作业日志接收一个完成信息,表示成功的使用ADDRPYLECHGRPYLERMVRPYLE修改了系统回答列表,历史日志QHST也会接收一个完成信息来记录所做的修改。

 

8.7  信息日志

       有两类信息日志:作业日志和历史日志。

       作业日志包括与作业请求有关的信息,历史日志(QHST)包括系统数据,象作业起动和结束的历史信息。

 

8.7.1  作业日志

       每个作业都有与之相关的作业日志,它包括下列内容:

              作业中的命令      

              LOG*YES)选项或LOG*JOB)选项生成的CL程序中的命令或用LOGCLPGM

*YES)运行的CHGJOB命令。

              所有发送给请求者的或没从调用信息队列取消的信息和信息帮助。

       在作业结束后,作业日志可以写在输出文件QPJOBLOG中或一个数据库文件中,从QPJOBLOG中可以打印作业日志。从数据库文件中,可用数据库属性来查询作业日志的信息。你也可以规定对成功运行的作业不写到作业日志中。

       往数据库文件中写作业日志要用QMHCTLJL API。在作业日志直接写往数据库文件时,要生成一个或二个文件。主文件包括诸如信息标识,严重级,类型和数据这些特别的信息。次文件包括信息正文。次文件是可选的,它由QMHCTLJL API中的参数控制。这二个文件都能用外部描述说明,也都可用数据库文件和系统查询功能来处理。详细内容请看原文的附录C.0

       可以控制哪 些信息写到作业日志中,在CRTJOBD命令中规定LOG参数,也可以用CHGJOBCHGJOBD命令修改这些级别。LOG参数有三个值:信息级,严重级和文本级。这些命令的详细内容,请看CL参考手册。

       有下面这些信息级级别:

       级别              说明

       0            没有日志数据

       1            只有严重级别大于或等于规定级别的信息,送往作业外部信息队列的所有信

            息要日志,这类信息指出作业何时开始,何时结束及完成时的状态

       2            要在日志中记录下列信息:

                     日志级1的信息,任何从命令行输入的请求或从CL程序中发出的严重级别

大于或等于规定级别的CL命令都要写进日志。日志了的命令或请求所有与之相关的信息也都记录

       3            下列信息要记录:

                     日志级1的信息

                     所有从CL程序中记录的请求和命令

                     如果任何与请求或命令有关的高级信息,它的严重级别大于或等于规定级

别,所有与之相关的信息都要记录

       4            所有从CL程序中记录的请求或命令

                     仅记录严重码大于或等于规定级别的信息

       注:一个高级信息是指发往程序调用信息队列的,从CL程序中记录的接收的请求或

命令。

       第二个值(严重级别)规定记录到日志中的引起错误信息的最小严重级别,可用值为099。只有严重级别大于或等于这个值的信息才记录到日志中。

       第三个值(文本级别)规定写在作业日志中信息正文的级别,它们可以是:

       *MSG:在作业日志中仅写正文(不包括信息帮助)

              *SECLVL:在作业日志中写正文和帮助

*NOLIST:如果作业正常结束,不写作业日志。如果作业以20或更高结束,产

  生包括信息和帮助的作业日志。

       在由请求处理程序接收到每个新的请求之前,要做信息过滤。它根据信息日志级别,在作业日志中记录规定的信息,在程序中的每个CL命令之后不做过滤,这样,如果交互或批方式运行CL程序,那么在程序结束后才做过滤。

       注:*NOLIST规定在作业正常结束时不做日志,那么从规定日志级为零的批作业取消信息是对系统资源的浪费。

       下例给出日志级别对存在作业日志中信息的影响情况,也给出在交互运行命令时,在每个命令之后过滤的发生。

       注:在此例中,包括高级和详细的信息日志级,高级信息标识为信息,详细信息标

识为详细信息。

       1CHGJOB命令规定日志级为2,信息严重级为50,仅往作业日志中写信息(*MSG)。

      

                                                                                        

                                       Command Entry                         SYSTEM1    

                                                                  Request level:   1    

        Previous commands and messages:                                                 

             > CHGJOB LOG(2 50 *MSG)                                                    

                                                                                         

                                                                                        

 

 


       2PGMA往自己的调用信息队列和规定调用(*PRV)的被调用程序的调用信息队列

发送严重码为2050,和60的三个报告信息,PGMA给自己发送的是详细信息,详细信息是送往低级程序调用的调用信息队列的信息。

       PGMB往自己的调用信息队列发送严重码为4050的报告信息。它们也是详细信息,PGMB也往*PRV发送严重码为10的一个报告信息。

       注意在这个显示中不再有CHGJOB命令,根据日志级别2,仅严重码等于或大于规定的请求信息才写到作业日志中且此请求无信息发出。如果有这样的信息发出,那么发出的任何详细信息都写在作业日志中且在按F10键时会显示它们。

 

    

                                                                                        

                                      Command Entry                         SYSTEM1     

                                                                  Request level:   1    

        Previous commands and messages:                                                 

              > CALL PGMA                                                               

                Message sev 20 - PGMA                                                   

                Message sev 50 - PGMA                                                   

                Message sev 60 - PGMA                                                   

              > CALL PGMB                                                               

                Message sev 10 - PGMB                                                   

                                                                                        

                                                                                         

                                                                                        

                                                                                         

                                                                                        

                                                                                        

                                                                                Bottom  

        Type command, press Enter.                                                      

        ===> _________________________________________________________________________  

        ______________________________________________________________________________  

        ______________________________________________________________________________  

        _____________________________________________________________________________   

         F3=Exit   F4=Prompt   F9=Retrieve   F10=Include detailed messages              

         F11=Display full      F12=Cancel    F13=Information Assistant   F24=More keys  

                                                                                        

                                                                                         

      

 

        3、在命令入口显示中按F10键时,与此请求有关的所有信息都显示出来,再按F10

键不会显示详细信息

      

                                                                                        

                                      Command Entry                         SYSTEM1     

                                                                  Request level:   1    

        All previous commands and messages:                                             

           > CALL PGMA                                                                  

             Detailed message sev  20 - PGMA                                            

             Detailed message sev  50 - PGMA                                            

             Detailed message sev  60 - PGMA                                            

             Message sev 20 - PGMA                                                      

             Message sev 50 - PGMA                                                       

             Message sev 60 - PGMA                                                      

           > CALL PGMB                                                                  

             Detailed message sev  40 - PGMB                                             

             Detailed message sev  50 - PGMB                                            

             Message sev 10 - PGMB                                                      

                                                                                         

                                                                                Bottom  

        Type command, press Enter.                                                      

        ===> _________________________________________________________________________  

        ______________________________________________________________________________  

        ______________________________________________________________________________  

        _____________________________________________________________________________   

         F3=Exit   F4=Prompt   F9=Retrieve   F10=Exclude detailed messages              

         F11=Display full      F12=Cancel    F13=Information Assistant    F24=More Keys 

                                                                                         

                                                                                        

      

 

       4、在输入另一命令时(CHGJOB),CALL PGMB命令或其它信息都移出。这是因为与这个请求有关的高级信息严重码小于在CHGJOB命令中规定的严重码,而仍保留CALL PGMA命令和其有关的信息,这是由于这个请求发出的高级信息中至少有一个的严重码等于或大于规定的码。

       在下个显示中,CHGJOB命令规定了日志级为3,严重码为40。这样信息的第一和第二级正文都写在作业日志中。在进入另外的命令时,由于日志级3记录了所有请求,所以CHGJOB命令仍留在显示中。

       PGMC向规定了调用(*PRV)程序的调用信息队列发送严重码3040的信息。PGMD*PRV发送严重码为40的信息。

      

                                                                                         

                                       Command Entry                         SYSTEM1    

                                                                  Request level:   1    

        Previous commands and messages:                                                 

             > CALL PGMA                                                                

               Message sev 20 - PGMA                                                     

               Message sev 50 - PGMA                                                    

               Message sev 60 - PGMA                                                    

             > CHGJOB LOG(3 40 *SECLVL)                                                  

             > CALL PGMC                                                                

               Message sev 30 - PGMC                                                    

               Message sev 40 - PGMC                                                     

             > CALL PGMD                                                                

               Message sev 10 - PGMD                                                    

                                                                                         

                                                                                        

                                                                                Bottom  

        Type command, press Enter.                                                      

        ===> _________________________________________________________________________  

        ______________________________________________________________________________  

        ______________________________________________________________________________  

        _____________________________________________________________________________   

         F3=Exit   F4=Prompt   F9=Retrieve   F10=Include detailed messages              

         F11=Display full      F12=Cancel    F13=Information Assistant    F24=More Keys 

                                                                                        

 

       5、在CALL PGMD后输入另外命令时,CALL PGMD的保留在显示上,但与之有关的信息被删掉了,这是由于它的严重码小于在CHGJOB命令中LOG参数里规定的严重码。

       输入的SIGNOFF   *LIST命令打印到作业日志中

      

                                                                                        

                                        Command Entry                         SYSTEM1   

                                                                  Request level:   1    

        Previous commands and messages:                                                 

             > CHGJOB LOG(3 40 *SECLVL)                                                 

             > CALL PGMC                                                                

               Message sev 30 - PGMC                                                    

               Message sev 40 - PGMC                                                                   > CALL PGMD                                                                

             > CALL PGME                                                                

                                                                                         

                                                                                        

                                                                                        

                                                                                         

                                                                                        

                                                                                        

                                                                                Bottom  

        Type command, press Enter.                                                      

        ===> SIGNOFF *LIST____________________________________________________________  

        ______________________________________________________________________________  

        ______________________________________________________________________________  

        _____________________________________________________________________________   

         F3=Exit   F4=Prompt   F9=Retrieve   F10=Include detailed messages              

         F11=Display full      F12=Cancel    F13=Information assistant    F24=More Keys 

                                                                                        

                                                                                        

      

 

       作业日志中包括留在显示上的所有请求和信息,另外,也包括与之有关的帮助信息,它是根据CHGJOB命令中规定来执行的。但它包括的帮助信息是在作业期间发出的,而不是进入第二个CHGJOB命令后发出的信息。

 

 

      5763SS1 V2R3M0 930925                           Job Log                             SYSAS727 12/12/92 07:58:53          Page    1

       Job name . . . . . . . . . . :   QPADEV0007      User  . . . . . . :   JOHNDOE      Number . . . . :   004201

       Job description  . . . . . . :   QDFTJOBD        Library . . . . . :   QGPL

     MSGID      TYPE                    SEV   DATE       TIME       FROM PGM       LIBRARY     INST     TO PGM       LIBRARY      INST

     CPF1124    Information             00    12/12/93   07:57:16   QWTPIIPP       QSYS        04FC     *EXT                      0000

                                          Message . . . . :   Job 004201/JOHNDOE/QPADEV0007 started on 12/12/92 at

                                            07:57:16 in subsystem QINTER in QSYS. Job entered system on 12/12/92 at

                                            07:57:16.

     *NONE      Request                       12/12/93   07:57:50   QMHGSD         QSYS        0322     QCMD         QSYS         00B6

                                          Message . . . . :  -call pgma

     CPF1001    Information             20    12/12/93   07:57:50   PGMA           JOHNDOE     000C     PGMA         JOHNDOE      000C

                                          Message . . . . :   Detailed message sev 20 - PGMA

                                          CPF1001 second level text - PGMA

     CPF1002    Information             50    12/12/93   07:57:50   PGMA           JOHNDOE     0010     PGMA         JOHNDOE      0010

                                          Message . . . . :   Detailed message sev 50 - PGMA

                                          CPF1002 second level text - PGMA

     CPF1003    Information             60    12/12/93   07:57:50   PGMA           JOHNDOE     0014     PGMA         JOHNDOE      0014

                                          Message . . . . :   Detailed message sev 60 - PGMA

                                          CPF1003 second level text - PGMA

     CPF1004    Information             20    12/12/93   07:57:50   PGMA           JOHNDOE     0018     QCMD         QSYS         00DE

                                          Message . . . . :   Message sev 20 - PGMA

                                          CPF1004 second level text - PGMA

     CPF1005    Information             50    12/12/93   07:57:50   PGMA           JOHNDOE     001C     QCMD         QSYS         00DE

                                          Message . . . . :   Message sev 50 - PGMA

                                          CPF1005 second level text - PGMA

     CPF1006    Information             60    12/12/93   07:57:50   PGMA           JOHNDOE     0020     QCMD         QSYS         00DE

                                          Message . . . . :   Message sev 60 - PGMA

                                          CPF1006 second level text - PGMA

     *NONE      Request                       12/12/93   07:58:31   QMHGSD         QSYS        0322     QCMD         QSYS         00B6

                                          Message . . . . :  -chgjob log(3 40 *seclvl)

     *NONE      Request                       12/12/93   07:58:34   QMHGSD         QSYS        0322     QCMD         QSYS         00B6

                                          Message . . . . :  -call pgmc

     CPF100F    Information             30    12/12/93   07:58:34   PGMC           JOHNDOE     000C     QCMD         QSYS         00DE

                                          Message . . . . :   Message sev 30 - PGMC

                                          CPF100F second level text - PGMC

     CPF1010    Information             40    12/12/93   07:58:34   PGMC           JOHNDOE     0010     QCMD         QSYS         00DE

                                          Message . . . . :   Message sev 40 - PGMC

                                          CPF1010 second level text - PGMC

     *NONE      Request                       12/12/93   07:58:38   QMHGSD         QSYS        0322     QCMD         QSYS         00B6

                                          Message . . . . :  -call pgmd

     *NONE      Request                       12/12/93   07:58:45   QMHGSD         QSYS        0322     QCMD         QSYS         00B6

                                          Message . . . . :  -call pgme

     *NONE      Request                       12/12/93   07:58:52   QMHGSD         QSYS        0322     QCMD         QSYS         00B6

                                          Message . . . . :  -signoff *list

     CPF1164    Completion              00    12/12/93   07:58:52   QWTMCEOJ       QSYS        01EE     *EXT                      0000

                                          Message . . . . :   Job 004201/JOHNDOE/QPADEV0007 ended on 12/12/92 at

                                            07:58:52; 3 seconds used; end code 0 .

                                          Cause . . . . . :   Job 004201/JOHNDOE/QPADEV0007 completed on 12/12/92 at

                                            07:58:52 after it used 3 seconds processing unit time.  The job had ending

                                            code 0. The job ended after 1 routing steps with a secondary ending code of

                                            0.  The job ending codes and their meanings are as follows:  0 - The job

                                            completed normally. 10 - The job completed normally during controlled ending

                                            or controlled subsystem ending. 20 - The job exceeded end severity (ENDSEV

                                            job attribute). 30 - The job ended abnormally. 40 - The job ended before

                                            becoming active. 50 - The job ended while the job was active. 60 - The

                                            subsystem ended abnormally while the job was active. 70 - The system ended

                                            abnormally while the job was active. 80 - The job ended (ENDJOBABN command).

                                            90 - The job was forced to end after the time limit ended (ENDJOBABN

                                            command). Recovery  . . . :   For more information, see the Work Management,

                                            SC41-8078.

 

       在打印作业日志的每页顶部的标题给出是哪个作业的日志,以及每项的特性:

              作业的完整限定名(作业名,用户名和作业号)

       启动作业所用的作业描述名

              作业启动的日期和时间

              信息标识

              信息类型

              信息严重级别

       每个信息发送的日期和时间,不包括请求信息

              信息。如果规定要包括二级信息文本,它出现在信息的后读行中

发送信息或请求的过程或程序

       发送信息或请求的过程或程序的机器接口指令号或高级语句号

       信息发送给哪个过程或程序

       信息发送给它的过程或程序的机器接口指令号或高级语句号

 

8.7.1.1  发送或接收的过程或程序

       当发送或接收的是一个ILE过程时,信息项包括过程的全名(过程名,模块名和ILE程序名)。当发送或接收的是一个OPM程序,仅给出程序名,这时,相应的指令号表示一个指令号,且仅有这一个号码。如果是ILE程序,指令号表示的是一个高级语言语句号而不是MI指令号。如果ILE过程已优化,可能有三个号码,这也不总能用它来确定优化过程的语句号。假如给出多个号码,每个号码表示发送信息过程的一个可能点,也可能不能确定哪个号码,这时,信息中出现*N

       日志级别影响批作业的情况如前例所示。如果作业用APPC,标题行包括APPC标识的工作单元。

 

8.7.1.2附加的信息过滤

       如果作业日志是通过QMHCTLJL API直接写到一个数据库存文件中,可以规定附加的信息过滤,用这个API规定的信息过程是在作业结束,往文件中写记录时完成的,这时,出现过滤的信息,这样在作业运行时可以看到它们,在写作业日志时,被过滤的信息就不写到文件时,这样,虽然在作业运行时它们可以出现但不出现在最终产生的文件中。

 

8.7.1.3  显示作业日志

       显示作业日志的方法依赖于作业的状态。

              如果作业已经结束,作业日志还没有打印,用下面的命令:

 

         DSPSPLF FILE(QPJOBLOG) JOB(001293/FRED/WS3)

 

              如果作业仍活动或者是在作业队列中还没有启动,用下列令:

 

         DSPJOBLOG JOB(nnnnnn/JSMITH/WS1)

 

       它显示一个用户为JSMITH的交互作业的日志,它是在工作站WS1上做的。nnnnnn是作业号。

       要显示你自己交互作业的作业日志,做下列之一:

              DSPJOBLOG命令

              WRKJOB命令,然后选择选项10

              如果终端上的‘禁止输出’灯亮且保持不灭,则做下面操作:

              1、用系统请求键,然后用执行键

              2、在系统请求屏上,选3

              3、在显示作业屏上,选10

              4、在作业日志屏上,出现DSPJOB做为处理的请求,用F10

              5、在此显示中,用上、下翻页键看从按系统请求功能键后接收到的信息

       注销工作站,在SIGNOFF命令中规定LOG*LIST

       在使用DSPJOBLOG命令时,可以看到作业日志的显示,这个显示给出带有特殊符号的程序名,如下所示:

  运行的命令或下一个要运行的命令。例如,要调用一个程序,显示调用的这个程序

                命令已经完成了处理

  还没有处理的命令

  回答信息。它标识需要回答的信息和已经回答的信息

       在作业显示中,可做下列操作:

              F10键显示详细信息,这个显示给出在HLL程序中或在LOG活动的CL过程

或程序中运行的命令或操作。

              用光标移动键到达作业日志的末尾,可用F18键直接到末尾。在按F18键之后,

可用翻页键来看到正运行的命令。

              用光标移动键走到作业日志的顶部,也可用F17键直接到达。

       可用DSPJOBLOG命令把作业日志直接写到数据库文件中,而不是打印或显示。这里有两个可用选项,用第一个选项,可规定文件和成员名,这时,把作业日志信息写到规定的数据库文件中。用第二个选项可以使用与前面运行的QMHCTLJL API提供信息有关的命令。这时,作业日志写到在API调用所规定的文件中,同时产生主、辅二个文件,且在信息写往文件时也完成过滤操作。用这二个选项,在DSPJOBLOG完成时,不显示输出,也没有打印用的假脱机文件。

 

8.7.1.4  避免产生作业日志

       要在批作业结束时不产生作业日志,可在BCHJOBCHGJOBSBMJOBCRTJOBDCHGJOBD命令中的LOG参数里规定信息文本级的值为*NOLIST。这样,作业结束时不产生作业日志,除非结束码是20或更大,此时需产生作业日志。

       对交互作业,在SIGNOFF命令中LOG参数规定的值要优于作业中规定的LOG值。

 

8.7.1.5  作业日志的有关事宜

       在使用作业日志时,有以下建议:

       要修改系统中所有作业的输出队列,用CHGPRTF命令修改QSYS/QPJOBLOG文件中的OUTQDEV参数。下面是命令的例子:

 

         CHGPRTF FILE(QSYS/QPJOBLOG)

                 DEV (USRPRT)

   

        

   

         CHGPRTF FILE(QSYS/QPJOBLOG)

                 OUTQ(USROUTQ)

 

       要修改QPJOBLOG文件来使用输出队列QEZJOBLOG,用操作助手的清理功能。在使用作业日志的自动清理功能时,打印文件必须在这个输出队列中。有关操作助手功能,请看系统操作。

       要规定作业日志写到哪个输出队列,保证文件QPJOBLOGQUTQ(*JOB),也可用BCHJOBCRTJOBDCHGJOBDCHGJOB命令的QUTQ参数。下面是例子:

 

        CHGJOB  QUTQ(*JOB)

 

       如果在作业开头修改了缺省的QUT   ,对所有的假脱机文件都有影响。如果在作业完成这前修改,仅影响这个作业日志,不能用OVRPRTF命令来影响作业日志。

       如果找不到作业的输出队列,则不能产生作业日志。

       要保留所有的作业日志,用CHGPRTF命令规定QSYS/QPJOBLOG文件中的HOLD*YES)。在RLSSPLF命令运行时,释放作业日志给写出器。下面是命令的例子:

 

         CHGPRTF FILE(QSYS/QPJOBLOG)

                 HOLD(*YES)

 

       如果系统异常结束,启动的提示允许系统操作员规定是否打印在异常结束时正活动的作业日志。要删除作业日志,用DLTSPLF命令或输出队列显示中的删除选项。

       如果用CHGPRTF命令中的USRDTA参数修改QSYS/QPJOBLOG文件的用户数据值,规定的值不在‘处理输出队列’显示或‘处理所有假脱机文件’显示中出现,出现在用户数据列中的值是已打印作业日志的作业名。

       如果要用程序设计技术分析作业日志,用QMHCTLJL API把作业日志写到数据库文件中。数据库文件中的记录格式是有保证的而打印格式没有。如果要在作业日志记录中增加新字段,它们是加在记录的末尾,这样已有的程序会继续工作,由系统提供的查询功能可直接用在这些文件上。

 

8.7.1.6  交互作业日志的考虑

       IBM提供的作业描述QCTLQINTERQPGMR都有一个LOG4  0  *NOLST)的日志级别。这样,所有信息和信息的第一、第二级文本都写到作业日志中,但如果在SIGNOFF时没规定*LIST则不打印作业日志。要修改交互作业的日志级,可使用CHGJOBCHGJOBD命令。

       如果显示工作站用户使用IBM提供的菜单或命令入口显示,那么所有的错误信息都被显示,如果用户使用自己写的初始程序,任何非监控的信息会引起初始程序结束,产生作业日志。但如初始程序监控了信息,在接收信息同时也接收了控制权。这时,要保证产生作业日志,这样才能确定错误原因。例如,初始程序显示一个包括注销选项的菜单,它的缺省值为*NOLIST。初始程序监控所有信息,也包括在发生异常时修改注销选项为*LISTCHGVAR命令:

 

              PGM

              DCLF MENU

              DCL &SIGNOFFOPT TYPE(*CHAR) LEN(7) VALUE(*NOLIST)

              .

              .

              .

              MONMSG MSG(CPF0000) EXEC(GOTO ERROR)

     PROMPT:  SNDRCVF RCDFMT(PROMPT)

              CHGVAR &IN41 '0'

              .

              .

              .

              IF (&OPTION *EQ '90') SIGNOFF LOG(&SIGNOFFOPT)

              .

              .

              .

              GOTO PROMPT

     ERROR:   CHGVAR &SIGNOFFOPT '*LIST'

              CHGVAR &IN41 '1'

              GOTO PROMPT

              ENDPGM

 

       在上例中,如果发生异常,CHGVAR命令修改SIGNOFF命令使其为*LIST,并把指示器设为ON,这个指示器用来给出一个常量条件,它显示一个信息告诉用户产生异常的情况及要做什么。如果交 互作业是运行一个CL过程或程序,好么在下列条件之一为真且日志级别为34时才记录CL命令:

              CRTCLPGM中规定LOG(*YES)

              CRTCLPGM中规定LOG(*JOB),且(*YES)是当前LOGCLPGM作业属性。

              设置了LOGCLPGM属性且用SBMJOBCHGJOBDCRTJOBD命令令的

LOGCLPGM参数修改过。

 

8.7.1.7  批作业日志的考虑

       对批处理的应用程序,可能要修改要记录的信息总量。在IBM提供的子系统中给出的作业描述规定LOG(4  0 *NOLIST),即在作业异常结束时,有一个完整的日志。如果作业正常结束,则不产生日志,如果想在所有情况下都打印作业日志,用CHGJOBD来修改作业描述或在BCHJOBSBMJOB命令中规定不同的LOG值。

       如果用批作业运行CL过程或程序,在用下列命令生成模块或程序时规定LOG*YES),则总是日志CL命令:

        CRTCLPGM、CRTCLMOD、CRTBNDCL

 

       在用CHGJOBSBMJOB命令时规定LOGCLPGM(*YES)也记录CL命令。

 

8.7.2  QHST历史日志

       历史日志(QHST)由一个信息队列和叫做日志版本的物理文件组成,送往历史日志信息队列的信息是由系统写到当前日志版本物理文件中。

       QHST包括系统功能的高级跟踪,象系统、子系统以及作业信息,设备状态和系统操作员信息,它的信息队列是QHST。当日志版本满时,自动生成新的版本,每个版本是下列格式的物理文件:

              Qxxxyydddn

       其中:

       xxx         3 个字符的HST

yyddd     是日志中版本中第一个信息的儒略日期

n            是儒略日期中的顺序号(AZ09

注:每个版本中的记录数是由系统值QHSTLOGSIZ规定的。

日志版本文件的说明由其中第一个信息和最后一个信息的日期和时间组成。第一个信息的日期为说明中的113位,最后一个信息的日期为1426位,格式为

 

cyymmddhhmmss

 

其中:c为世纪数字

yymmdd  为发送信息的日期

hhmmss  为发送信息的时间

你可以生成一个同样忽略日期的最多36位长的日志版本。如果在同一天生成的长于36的版本,那么顺序用下一个可用的日期做下个版本名字。如果删除了一些老版本,则它的名字可重用。这时,如果用名字给日志版本排序,则打乱了顺序。也可写一个程序来处理历史日志记录。由于可用的日志版本有几个,所以必须选择要处理哪一个,要确定可用的版本,用DSPQBJD命令。

下面的命令显示可利用的历史日志版本:

 

    DSPOBJD OBJ(QSYS/QHST*)   OBJTYPE(*FILE)

 

可用WRKOBJ命令显示中的删除选项来删掉系统中的日志,要用自动删除方法,请看QUSRTOOL中的DLTLOG命令。

可用DSPLOG来显示或打印日志中的信息,可规定下列内容来显示或打印选择的信息:

       时间周期

              发送信息的作业名

              信息标识

       下列的DSPLOG命令显示当前日期作业ODEAILY的所有可用信息:

 

        DSPLOG      JOB(ODEAILY)

 

       显示结果为:

  

                                                                                    

                           Display History Log Contents                             

                                                                                    

     Job OEDAILY started                                                            

     Database file OEMSTR in library OELIB expired                                  

     Job OEDAILY abnormally ended                                                   

     Job OEDAILY started                                                            

     Job OEDAILY ended                                                              

                                                                                    

                                                                                    

                                                                                     

                                                                                    

                                                                                    

                                                                                     

                                                                                    

                                                                             Bottom 

     Press Enter to continue.                                                       

                                                                                    

     F3=Exit   F10=Display all   F12=Cancel                                         

                                                                                     

                                                                                    

  

 

       如果把系统日期和时间设为以前日期,或往前设48小时,那么会开始一个新的日志版本,这就保证在某一个日志版本中的所有信息是按年日顺序的。

       V3.6版本前生成的日志版本,如果在系统日期和时间重设为前面某个时刻时可能有不按年日顺序的项。这样,在显示日志时,可能会丢失某些项不显示。例如,日志中包括1988后面有1987的项,你要显示1987的项,那就要在DSPLOG中的PERIOD参数里给出1987,而有些想要的项就不能显示出来。这时要使用QTATEQTIME或象下面那样规定PERIOD参数:

 

       PERIOD((起始时间  起始日期) (*AVAIL *END))

 

       在信息队列已满或用DSPLOG命令时,系统会把信息写到当前版本的物理文件中。如果想确保当前版本是当前日期,要在DSPLOG中规定一个虚构的信息标识。比如###0000,虽然不显示信息,但使日志版本的物理文件是当前的。

       如果用DSPLOG  QUTPUT(*PRINT)来打印日志信息,则每个信息只打印一行,即打印每个信息的前105个字符。

       如果用DSPLOG  QUTPUT(*PRTWRAP)来打印日志信息,则多于105字符的信息会卷回来打其余的行,但限制在2000个字符之内。

       如果用DSPLOG显示日志信息,则只显示105个字符,在105个之后的字符从右边截断。

8.7.3  历史日志的格式

       用一个数据库文件来存储系统中发送给日志的信息,由于物理文件中的所有记录都有相同的长度而送往日志中的信息有不同的长度,所以信息要跨过几个记录,每个记录有三个字段:

              系统日期和时间(8位长字符字段)。是个内部字段,转换的日期和时间也放到信

                     息中

              记录号(2字节字段)。例如,第一个记录号为十六进制0001,第二个记录号为0002

   依次类推

              数据(132位长字符字段)

 

       第一个记录的第三个字段有下列格式:

内容

类型

长度

记录中的位置

作业名

字符

26

11-36

转换的日期和时间(1)

字符

13

37-49

信息ID

字符

7

50-56

信息文件名

字符

10

57-66 

库名

字符

10

67-76

信息类型(2)

字符

2

77-78

严重码

字符

2

79-80

发送程序名(3)

字符

12

81-92

发送程序指令号(4)

字符

4

93-96

接收程序名(3)

字符

10

97-106

接收程序指令号(4)

字符

4

107-110

信息正文长度

二进制

2

111-112

信息数据长度

二进制

2

113-114

数据或说明的CCSID(5)

二进制

4

115-118

保留

字符

20

119-142

 

       ⑴格式为cyymmddhhmmss

  其中:c为世纪数字(如果yy>40,则C=0,如yy<40,则C=1)

yymmdd:信息发送的年月日

hhmmss:信息发送的时分秒

⑵与RCVMSG中的RTNTYPE有相同的值。

⑶如果发送或接收者是ILE过程,在历史日志中只包括ILE程序名,不包括模块名和

  过程名。

⑷如果发送和接收者是过程,则发送和接收指令号为0。

⑸如果此信息是被存储的信息,则CCSID仅适应于定义做*CCHAR数据的信息数据。

  其余的信息数据可以考虑为65535否则,这是立即信息的CCSID

  其余记录的第三个字段有下列格式:

 

内容

类型

长度

信息

字符

可变(1)

信息数据

字符

可变(2)

 

⑴这个长度在第一个记录中规定(位置111-112),且不能超过132

⑵这个长度在第一个记录中规定(位置113-114

    在启动一个新的日志版本时,不能把一个信息分开,信息的第一个记录和最后一个记录要在同一个版本中。

    对信息数据的详细说明,请看7.2.4

 

8.7.4  处理QHST文件

       如果用HLL程序来处理QHST文件,要注意每个信息的长度都可以不相同。由于信息包括可替代的变量,信息长度是可变的,这样,信息数据的起始位置也是可变的。

 

8.7.5  QHST作业起动和完成信息

       系统对作业起动和完成信息给出特别的格式。对CPF1124(起动)和CPF1164(结束),信息数据总是从第三个记录的位置11开始。作业计帐提供比CPF1124CPF1164更多的信息。一个简单的计帐功能用CPF1164信息。

       如果处理QHST中的信息,使用QUSRTOOL中的CUTQHST命令,它生成一个处理QHST信息的定长的外部描述文件。

       CPF1164中并不显示性能方面的信息。由于是在QHST中的信息,用户可以写一个应用程序接收这些数据,性能信息的格式如下所述。

       性能信息做为一个变长替代文本值传送,即数据是从数据长度的第一位开始有效,长度字段的尺寸不包括在此长度内,结构中的第一个数据字段是作业进入系统和作业第一个例程启动的日期和时间。时间格式为hh:mm:ss。日期格式由系统值QDATFMTQDATSEP确定。在结构中,作业进入系统的日期和时间放在作业启动日期和时间的前面。

       作业进入系统的日期和时间是系统初始化作业的时候。对一个交互作业,作业进入的时间是系统认识它的口令的时候。对批作业是处理BCHJOBSBMJOB的时间,对于监控作业,是处理相应的启动命令的时间,对自动启动的作业是启动子系统的时间。

       在时间和日期之后是总的响应时间和交易数。响应时间以秒计,包括在工作站按执行键和显示下一个屏幕之间所有处理交互作业的总计时间,这些信息很类似于WRKACTJOB显示的内容,这个字段仅对交互作业有意义。

       在系统故障或作业异常结束时最后一个交易可能不包括在总计中。这时的作业结果码应该是40或更大。交易计数也仅仅对交互作业有意义。响应时间数是由系统作业期间间隔计数的。

       在交易数后边的是同步辅存I/O操作的数目。这与在WRKACTJOB显示中的AUXIO字段出现的值是相同的。(除是作业总值之外)。如果作业以70结束,这个值也不包括最终作业步的计数。另外,如果一个作业跨越IPL存在(用TFRBCHJOB命令),那么在IPL后、成为活动前结束,这个值为零。

       在性能状态的最后字段是作业类型。这个字段的值是:

              A     自动起动的作业

B     批作业

I      交互作业

M    子系统监控

R     假脱机阅读器

S     系统作业

W    假脱机写入器

X    起动作业

       对从一个可变位置开始信息数据的信息,可做下列操作来访问信息数据:

              确定信息中变量的长度。例如,一个信息使用下列五个变量:

                     作业名    *CHAR   10

                     用户名    *CHAR   10

                     作业号    *CHAR   6

                     时间              *CHAR   8

                     日期              *CHAR   8

       QUSRTOOL库中的DLTQHST工具给出清理老QHST文件的批方式。请看QUSRTOOL库中的QATTINFO里的成员DLTQHST

阅读(2888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~