SQLCBLLE无法正常运行且不会产生MSGW

时间:2014-10-18 11:17:41

标签: debugging batch-processing ibm-midrange

我最近一直面临这个问题:

正常情况下,在IBM i-series(AS / 400)上的批处理作业上运行pgm ILE COBOL并触发一个exeption,它会使批处理作业停止并从RUN转到MSGW,但是当它是SQLCBLLE并且那里是一个执行sql语句的问题,它简单地回滚并继续执行而不将作业传递给MSGW。

有没有办法知道批处理作业中的sqlcblle是否未正确执行,是否有可能触发批处理作业的MSGW并让默认错误处理程序获取它们?

2 个答案:

答案 0 :(得分:2)

每个SQL语句之后都应该有一个测试,它检查SQLSTATE(或可能是SQLCODE)以查看SQL是否成功。根据SQLSTATE(或可能是SQLCODE)值,程序需要决定要采取的操作。

操作可以是发送* INQ消息以将作业置于MSGW状态,直到返回回复。

如果没有看到导致问题的代码,就很难说出更多。无论exec sql select * from tableA是否存在,tableA等语句都没有指定列列表,因此已经存在潜在的重大问题。嵌入式SQL通常不会导致返回异常,但会使用SQLSTATE来描述问题。开发人员有责任检查这些返回的条件。

答案 1 :(得分:0)

有一个有趣的讨论可能会有所帮助here。它是关于RPG而不是CBL,但可能有助于解决您的问题。