如何故意异常工作

Sai*_*sha 5 cobol mainframe jcl

是否有可能通过COBOL程序故意撤销您的工作.假设我有一个包含Header,Detail和Trailer记录的输入文件.我会写一个COBOL pgm来读取这个文件.如果没有在这个文件中找到详细记录,那么我想通过给出一些Abend消息和一些Abend Code来实现我的工作.这可能吗?

Nea*_*alB 8

您想要修改程序还是只设置RETURN-CODE

我怀疑设置一个RETURN-CODE,写一条消息,然后通过一个STOP RUN或者GOBACK你真正想做的终止程序.导致实际的ABEND可能没有必要.

在IBM批处理环境中,程序设置的RETURN-CODE将成为运行程序的JCL作业步骤的RC.这通常是您要设置和测试的内容.

RETURN-CODE被设定MOVE荷兰国际集团的数值吧.例如:

         DISPLAY 'No Detail Records found in file.'
         MOVE 16 TO RETURN-CODE
         GOBACK.
Run Code Online (Sandbox Code Playgroud)

您还可以使用CEE3DMP - 生成转储 实用程序从语言环境(IBM Mainframe选项)下运行的程序发出程序转储.

在较旧的IBM Mainframe COBOL程序中,您可能会看到对ILBOABN0例程的调用.此调用终止了您的程序并发出了转储.此例程现在已折旧,以支持上述技术.

最后,真正的旧程序可能会在其中包含代码以生成异常终止.这可以通过多种方式完成,但除以零通常是最喜欢的:

        DIVIDE SOME-NUMBER BY ZERO GIVING SOME-NUMBER.
Run Code Online (Sandbox Code Playgroud)

每次都有效!

就个人而言,我建议设置RETURN-CODE过度调用ILBOABN0或数据异常tehcniques.

注意: RETURN-CODE特殊寄存器不是COBOL-85标准的一部分.它可作为IBM对该语言的扩展.如果您在非IBM兼容环境中工作,则可能需要使用不同的机制.