查找导致作业日志SQL错误的CGI RPG程序

时间:2014-04-04 16:47:05

标签: ibm-midrange

我在IBM i上运行Apache,设置了对使用嵌入式SQL的RPG ILE程序的CGI调用。

我在这些程序中遇到各种SQL错误(例如“需要指示符变量”和“游标未打开”),但我找不到哪些程序特别导致了这些问题。此系统中有数百个程序,并且在错误消息上点击F1时未指定源程序(消息来自/到'QSQRUN2')。

我无法在调试模式下重新编译每个程序,这可能会提供更多信息(生产系统,一些源问题)。

有关如何获取此信息的任何想法?

3 个答案:

答案 0 :(得分:1)

哪里看到错误?

你说"击中F1 ......"你的意思是命中F10 =在作业日志中显示消息;来自WRKACTJOB屏幕上的7 =显示消息?

如果是,请尝试5 =使用和11 =显示调用堆栈..

如果作业没有进入MSGW,那么你的程序就会吞下这些错误。要么不正确而不做任何事情。或者在处理问题后(并且忽略清理作业日志)或在某处记录您需要的数据。你只需要知道在哪里。

答案 1 :(得分:0)

下面是作业日志中的消息示例,它在“原因”中有一个语句,用于调出主机变量名称。在示例中,它是“TCANDSBMDT”。这有助于缩小范围吗?

Message ID . . . . . . :   SQL0305                                             
Date sent  . . . . . . :   08/06/12      Time sent  . . . . . . :   10:41:52   

Message . . . . :   Indicator variable required.                               

Cause . . . . . :   A FETCH, embedded SELECT, CALL, GET DESCRIPTOR, or a SET   
  or VALUES INTO statement has resulted in a null value, but an indicator      
  variable was not specified for host variable TCANDSBMDT. ...

答案 2 :(得分:0)

@ user2338816在评论中给出了这个答案。

有一种简单的方法可以为特定作业添加SQL监控。

STRDBMON OUTFILE(QGPL/DBMON) JOB(*ALL/QTMHHTTP/WEBSERVER) FTRSQLCODE(*NONZERO)

启动监视器,监视用户QTMHHTTP,作业WEBSERVER的所有作业(当前或将来),记录所有发出警告或错误的语句。

有关生成的QGPL / DBMON数据库文件的详细信息,请参阅here

如果您需要某些上下文,则可以在作业日志中交叉引用作业编号/时间。