1

我试图让一个 RPG 程序在其中的程序调用出错时能够说出更具体的细节。我要监视的异常与错误的程序逻辑无关,例如除以零。我要检查的是程序调用是否由于权限问题或未找到程序而失败。73-74 的指标只能说明存在异常,但不能说明其背后的原因。是否有任何可能的方法可以在 RPG 中检测到这一点,就像 CL 程序中的 MONMSG 语句一样?

4

2 回答 2

3

有两类错误:程序和文件。程序错误是诸如被零除、CALL 失败等。完整列表位于Program Status Codes。这些错误代码非常粗略——如果你调用 PGMX 并且存在权限问题,你会得到一个 00211。如果程序不在库列表中,你会得到一个 00211。如果程序异常结束(比如由于转义消息) ) 你得到一个 00211。如果你需要知道CALL失败的原因,你需要询问作业日志/程序消息队列。

对于文件错误,文件信息数据结构会记录错误代码。文件错误是指违反引用约束或永久 I/O 错误。同样,这些文件状态代码不是很精细,如果您需要知道您的权限失败,您需要从作业日志中找出。

关于文件错误的一个注释。当您编写自己的错误处理程序(文件异常错误子例程)时,您需要注意此处理程序在循环打开文件之前不会变为活动状态。这意味着如果您让循环打开文件,您将无法捕获诸如“文件不在库列表中”或“未授权文件”之类的错误。为了捕获在打开时发生的错误,您需要自己打开文件,通过 OPEN 操作码。不要忘记关闭它们。

于 2012-10-31T17:26:14.413 回答
2

使用错误处理操作和/或程序异常子例程和程序状态数据结构来捕获和解释特定的错误条件。

于 2012-10-31T15:07:52.150 回答