是否有可能通过COBOL程序故意撤销您的工作。 假设我有一个包含Header,Detail和Trailer记录的输入文件。我会写一个COBOL pgm来读取这个文件。如果在这个文件中没有找到详细记录,那么我想通过给出一些Abend消息和一些Abend Code来实现我的工作。这可能吗?
答案 0 :(得分:8)
您想要修改您的计划,还是只设置RETURN-CODE?
我怀疑设置RETURN-CODE,写一条消息
然后通过STOP RUN
或GOBACK
终止程序就是这样
你真的想做。可能没有必要引起实际的ABEND。
在IBM批处理环境中,程序设置的RETURN-CODE成为 RC为JCL作业步骤运行程序。这通常就是你 想要设置和测试。
RETURN-CODE
由MOVE
数字值设置。例如:
DISPLAY 'No Detail Records found in file.'
MOVE 16 TO RETURN-CODE
GOBACK.
您也可以从语言环境下运行的程序发出程序转储(IBM 主机选项)使用 CEE3DMP--Generate dump 效用
在较旧的IBM Mainframe COBOL程序中,您可能会看到对ILBOABN0
例程的调用。这个电话
为你的计划辩护并发出了转储。这个例程现在depreciated支持
上面概述的技术。
最后,真正的旧程序可能会在其中包含代码以生成异常终止。这可以通过多种方式完成,但除以零是 通常是最喜欢的:
DIVIDE SOME-NUMBER BY ZERO GIVING SOME-NUMBER.
每次都有效!
就个人而言,我建议将RETURN-CODE
设置为调用ILBOABN0
或数据异常tehcniques。
注意: RETURN-CODE特殊寄存器不属于COBOL-85标准。它可作为IBM对该语言的扩展。如果您在非IBM兼容环境中工作,则可能需要采用不同的机制。
答案 1 :(得分:3)
请参阅以下链接,了解如何设置传递回JCL作业步骤的返回代码以及强制执行Abened代码。 http://www.tek-tips.com/viewthread.cfm?qid=1058302&page=22
答案 2 :(得分:2)
首先,您应该检查您自己的商店/网站的工作标准所接受的内容。大多数团队已经有一种可接受的方式来故意异议一个程序来实现一个逻辑'原因。我工作的一家公司有一个非常简单的程序叫做SYSABND2,我认为它是用汇编程序编写的,只是为了程序而异。
也就是说,对于ABEND(不只是设置返回代码),您应该调用模块 CEE3ABD (或以前的版本 ILBOABN0 ,现在已弃用)。
详情请见:
答案 3 :(得分:0)
执行异常运行结束的一种方法是在主机计算机中心向用户终端或操作员输出消息,如果需要,可以输出到打印机,所有这些都取决于程序的计算机类型。运行。在cobol中,可以使用DISPLAY UPON ..并使用环境部门的SPECIAL-NAMES部分中的条目中定义的终端,操作员控制台或打印机的标识符。一个示例可能与您使用正确的设备名称相似 操作员控制台是特殊名称的OUT-OP2,显示“运行错误 - 没有详细记录,中止”在OUT-OP2和 在OUT-OP2和STOP RUN上显示“操作管理器报告”。在程序部门。 任何工作或宏观和操作说明都需要包含对环境的参考。
答案 4 :(得分:0)
是的,只需调用一个不存在的模块,就可以通过COBOL程序故意异常终止你的工作。它将给出S806异常终止代码。