有什么方法可以确定作业是使用选项“4”手动结束的

Is there any way to identify that the job was ended manually with option '4'

部分作业已结束并显示以下消息。 "Profilexxxx has issued a controlled shutdown request for work"。如何通过选择选项“4”来检查这些作业是否已手动结束。 工作每天结束并重新开始。当我查看前一天的作业日志时,我可以看到消息 CPC1125,当作业异常结束时,它是 cpc1126 和 CPC1235。

作业可以通过多种方式结束。正常的方式是:

  1. 正常结束 - 程序正常结束,没有任何消息。
  2. 作业的受控结束 - 通过在 WRKACTJOB 中对作业取 4 分或调用 ENDJOB 来结束作业。
  3. 作业立即结束 - 通过在 WRKACTJOB 中执行作业 4 或使用 OPTION(*IMMED) 调用 ENDJOB 来结束作业。
  4. 子系统的受控端 - 作业所在的子系统 运行 通过调用 ENDSBS 结束。
  5. 子系统立即结束 - 作业 运行 所在的子系统通过使用 OPTION(*IMMED) 调用 ENDSBS 结束。
  6. 程序失败。用户对该消息打 C 或 D。

还有其他的,但可能性较小。事实上,ENDSBS OPTION(*IMMED) 也不太可能,但很容易测试。

需要立即注意的一件事是,可以将作业配置为仅在作业异常结束时才假脱机处理作业日志。在这种情况下,您应该只获得上述原因 6 的作业日志。否则,将在结束作业的作业日志中找到以下内容:

  1. 正常结束 - 只有结束代码为 0 的 CPF1164。作业日志中不存在转义消息。

CPF1164 Completion 00 03/26/19 09:06:14.261295 QWTMCEOJ QSYS 0162 *EXT *N

Message . . . . : Job 274217/MMURPHY/MMURPHY ended on 03/26/19 at 09:06:14; .005 seconds used; end code 0 .

  1. 作业的受控结束 - 同样没有转义消息,但会出现 CPC1126。 CPF1164 上的结束代码为 10。这显示了结束作业的用户配置文件。

CPC1126 Completion 50 03/26/19 08:42:37.604265 QWTCCCNJ QSYS 0C74 *EXT *N

Message . . . . : Job 274196/MMURPHY/MMURPHY was ended by user MMURPHY.

Cause . . . . . : User MMURPHY issued a controlled end job request for job 274196/MMURPHY/MMURPHY.

CPF1164 Completion 00 03/26/19 08:42:37.607135 QWTMCEOJ QSYS 0162 *EXT *N

Message . . . . : Job 274196/MMURPHY/MMURPHY ended on 03/26/19 at 08:42:37; 6.291 seconds used; end code 10 .

  1. 作业立即结束 - 同样没有转义消息,但会出现 CPC1125。 CPF1164 上的结束代码为 50。这显示了结束作业的用户配置文件。

CPC1125 Completion 50 03/26/19 08:44:46.773821 QWTCCCNJ QSYS 0C74 *EXT *N

Message . . . . : Job 274200/MMURPHY/MMURPHY was ended by user MMURPHY.

Cause . . . . . : User MMURPHY issued an immediate end job request for job 274200/MMURPHY/MMURPHY.

CPF1164 Completion 00 03/26/19 08:44:46.774951 QWTMCEOJ QSYS 0162 *EXT *N

Message . . . . : Job 274200/MMURPHY/MMURPHY ended on 03/26/19 at 08:44:46; 5.661 seconds used; end code 50 .

  1. 子系统的受控端 - 没有转义消息,将出现 CPC1206。没有迹象表明是谁发布了 ENDSBS。 CPF1164 中的结束代码 10。

CPC1206 Completion 50 03/26/19 08:52:59.936053 QWTMMTRS QSYS 0370 *EXT *N

From user . . . . . . . . . : QSYS

Message . . . . : Subsystem is ending controlled.

CPF1164 Completion 00 03/26/19 08:52:59.939458 QWTMCEOJ QSYS 0162 *EXT *N

Message . . . . : Job 274207/MMURPHY/MMURPHY ended on 03/26/19 at 08:52:59; 16.004 seconds used; end code 10 .

  1. 子系统立即结束 - 没有转义消息,将出现 CPC1207。没有迹象表明是谁发布了 ENDSBS。 CPF1164 中的结束代码 10。

CPC1207 Completion 50 03/26/19 09:05:00.642584 QWTMMTRS QSYS 0370 *EXT *N

From user . . . . . . . . . : QSYS

Message . . . . : Subsystem ending immediately.

CPF1164 Completion 00 03/26/19 09:05:00.643785 QWTMCEOJ QSYS 0162 *EXT *N

Message . . . . : Job 274213/MMURPHY/MMURPHY ended on 03/26/19 at 09:05:00; 14.583 seconds used; end code 50 .

  1. 程序失败 - 在 CPF1164 之前会有转义消息,如果程序是 ILE RPG 程序,则可能是 CEE9901,可能还有其他消息,具体取决于异常结束的程序类型。你可能会看到一条查询消息,回复为 C、D 或 F。这些都是取消程序,如果它是堆栈中的顶部程序,它将取消作业。不过要小心,CL 程序允许 R 或 I 回复查询消息,这不会取消作业,但会重试或忽略失败的程序。所以并不是所有的转义消息都会导致作业失败,只有不受监控的才会失败。令人惊讶的是,CPF1164 的结束代码为 0,因为作业确实没有失败,但它在处理堆栈中顶部程序发送的转义消息后正常结束。

对于调用 ENDJOB 或 ENDSBS 的作业,这些也会被记录下来,但再次说明,作业可能被配置为在成功完成时抑制作业日志,因此您可能看不到它。 ENDJOB 消息是 CPC1231 并显示已结束的作业。当用户对作业打 4 分时会发生这种情况。

Message ID . . . . . . :   CPC1231       Severity . . . . . . . :   00      
Message type . . . . . :   Completion                                       
Date sent  . . . . . . :   03/26/19      Time sent  . . . . . . :   08:44:46

Message . . . . :   ENDJOB started for job 274200/MMURPHY/MMURPHY.          
Cause . . . . . :   The End Job (ENDJOB) command is running for job         
  274200/MMURPHY/MMURPHY.                                                   

如果用户通过在命令行中键入 ENDJOB 或 ENDSBS 来结束作业,您将看到如下请求消息:

From . . . . . . . . . :   MMURPHY       Severity . . . . . . . :   00      
Message type . . . . . :   Request                                          
Date sent  . . . . . . :   03/26/19      Time sent  . . . . . . :   08:52:57

Message . . . . :   ENDSBS SBS(MMURPHY)     

不幸的是,对于子系统,没有迹象表明哪些作业已结束。