我正在尝试让一个RPG程序能够在其中的程序调用出错时告诉更具体的细节。我想监视的异常与坏程序逻辑无关,比如除以零。我想检查的是程序调用是否由于权限问题或程序未找到而失败。 73-74的指标只能说明有例外,但不能说是背后的原因。有没有办法在RPG中检测到这一点,就像CL程序中的MONMSG语句一样?
答案 0 :(得分:3)
有两类错误:程序和文件。程序错误是除以零,CALL失败等等。完整列表位于Program Status Codes。这些错误代码非常粗糙 - 如果您调用PGMX并且存在权限问题,则会得到00211.如果程序不在库列表中,则会得到00211.如果程序异常结束(例如由于转义消息)你得到一个00211.如果你需要知道为什么 CALL失败,你将需要询问作业日志/程序消息队列。
对于文件错误,file information data structure将记录错误代码。文件错误类似于引用约束违规或永久I / O错误。同样,这些file status codes不是非常精细,如果你需要知道你有权限失败,你需要从工作日志中找到。
关于文件错误的一个注释。当您编写自己的错误处理程序(file exception error subroutine)时,您需要知道此处理程序在循环打开文件之后才会变为活动状态。这意味着如果让循环打开文件,则无法捕获“文件不在库列表中”或“未授权存档”等错误。为了捕获在开放时发生的错误,您需要通过OPEN操作码自行打开文件。别忘了关闭它们。
答案 1 :(得分:2)