Db2 异常终止引起线

Db2 异常终止引起线,db2,cobol,mainframe,cics,rexx,Db2,Cobol,Mainframe,Cics,Rexx,我们有没有办法从假脱机中给出的带有错误消息的偏移量(如地址1515CD0A处的偏移量+00007D0A)中找到导致异常终止(如SO4C)的准确行号 如果您的程序是使用选项OFFSET,NOLIST编译的,那么输出列表中将有一个动词/行号列表,其中包含从程序开始的“偏移量”。列表中具有最近偏移量但小于或等于异常结束中报告的“偏移量”的行号是您要查看的位置 如果您使用NOOFFSET,LIST,您将在编译列表中获得“生成的汇编程序”,并且您的异常终止“偏移量”应该与生成的指令之一的“偏移量”完全匹配

我们有没有办法从假脱机中给出的带有错误消息的偏移量(如地址1515CD0A处的偏移量+00007D0A)中找到导致异常终止(如SO4C)的准确行号

如果您的程序是使用选项OFFSET,NOLIST编译的,那么输出列表中将有一个动词/行号列表,其中包含从程序开始的“偏移量”。列表中具有最近偏移量但小于或等于异常结束中报告的“偏移量”的行号是您要查看的位置

如果您使用NOOFFSET,LIST,您将在编译列表中获得“生成的汇编程序”,并且您的异常终止“偏移量”应该与生成的指令之一的“偏移量”完全匹配,并且您应该能够轻松地从中识别COBOL源代码行,它是列出实际机器指令之前的第一个带行号的动词

请记住,在极少数情况下,您成功地覆盖了程序代码,并最终导致异常终止,您将不得不更加努力地工作,但对于“普通”异常终止,这是非常简单的

如果您使用编译器选项NOLIST,NOOFFSET,那么您将没有任何线索。使用其中一个选项集重新运行编译。除非程序大小相同,否则请再次运行异常终止作业


如果使用LIST、OFFSET,编译器将生成一条诊断消息,您必须选择一个有效选项。列表和偏移是互斥的

需要注意的一点是,某些异常终止(如S04C)是由DSNHLI调用的DB2例程(在本例中)生成的,因此偏移量可能没有意义,例如远远超出了程序对象的大小。但是,CEEDUMP将向您显示堆栈中最后一个调用的点(同样,对于S04C、DSNHLI或类似的调用),您可以使用它来确定生成错误的调用的位置。@zarchasmpgmr,我看不出您的点与问题有什么关系。尽管提供的标记令人困惑(DB2、CICS、REXX),但没有任何迹象表明它只是COBOL程序中的一个普通异常终止,当时只是在做一些COBOL工作。对于COBOL程序之外的任何地址/偏移量,在计算程序控制如何“到达那里”时,显然涉及到一个不同的过程。也许我错过了,但我没有看到问题中需要提及数百种远程可能性的任何内容。Bill,他提到的S04C指向DB2,根据定义,这将超出COBOL源代码中编译器生成的代码。您的经典S0Cx异常终止可能会出现在编译代码中,而偏移量计算也会出现在程序中。答案在我发布后的几分钟内就被接受了,因此我假设异常终止不会出现在另一个模块中,该模块尚未识别,并且位于“之后”COBOL程序,因此被abend reporter错误地认为是COBOL程序的一部分,它没有说S04C,而是说SO4C。标记了db2,但也标记了cics、rexx。如果不接受,则更有可能是S04C。有了接受,我想是S0C4。让我们问问巴兹尔。。。事实上,他问这个问题一个小时后就没上网了,所以我想我们永远都不会知道。。。