Cobol 如何故意放弃工作

Cobol 如何故意放弃工作,cobol,mainframe,jcl,Cobol,Mainframe,Jcl,是否可以通过COBOL程序故意中止您的工作。 假设我有一个输入文件,其中包含头、细节和尾记录。我将编写一个读取此文件的COBOL pgm。如果在此文件中未找到详细记录,则我希望通过提供一些异常终止消息和异常终止代码来异常终止作业。是否可能?请参阅以下链接,了解如何设置传递回JCL作业步骤的返回代码以及强制执行异常终止代码。 您想中止您的程序还是只设置一个 我怀疑设置了返回码,写了一条消息 然后通过停止运行或GOBACK终止程序就是这些 你真的很想做。可能没有必要导致实际异常终止 在IBM批处理环

是否可以通过COBOL程序故意中止您的工作。
假设我有一个输入文件,其中包含头、细节和尾记录。我将编写一个读取此文件的COBOL pgm。如果在此文件中未找到详细记录,则我希望通过提供一些异常终止消息和异常终止代码来异常终止作业。是否可能?

请参阅以下链接,了解如何设置传递回JCL作业步骤的返回代码以及强制执行异常终止代码。

您想中止您的程序还是只设置一个

我怀疑设置了返回码,写了一条消息 然后通过
停止运行
GOBACK
终止程序就是这些 你真的很想做。可能没有必要导致实际异常终止

在IBM批处理环境中,程序设置的返回代码成为 运行程序的JCL作业步骤的RC。这通常是你想要的 要设置和测试

RETURN-code
通过
MOVE
向其输入数值来设置。例如:

         DISPLAY 'No Detail Records found in file.'
         MOVE 16 TO RETURN-CODE
         GOBACK.
            
您还可以从在语言环境(IBM)下运行的程序发出程序转储 大型机选项)使用 这个 效用

在旧的IBM大型机COBOL程序中,您可能会看到对
ILBOABN0
例程的调用。这个电话 中止您的程序并发出转储。这一惯例现在有利于 上述技术

最后,非常旧的程序中可能包含生成异常终止的代码。这可以通过多种方式实现,但被零除是非常困难的 通常是最受欢迎的:

        DIVIDE SOME-NUMBER BY ZERO GIVING SOME-NUMBER.
        
每次都有效

就个人而言,我建议在调用
ILBOABN0
或数据异常技术时设置
RETURN-code


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

执行异常结束运行的一种方法是向用户终端或大型机计算机中心的操作员输出消息,必要时还可能向打印机输出消息,所有这些都取决于运行程序的计算机类型。在cobol中,可以在..时使用显示。。并使用终端、操作员控制台或打印机的标识符,如环境部门“专用名称”部分中的条目所定义。示例可能与此类似,为您的案例使用正确的设备名称 操作员控制台是OUT-OP2的特殊名称,在OUT-OP2和 在OUT-OP2和停止运行时显示“向运营经理报告”。在程序司。
任何工作或宏观和操作说明中都需要包含对情况的参考。

首先,您应该检查您自己的车间/现场工作标准是否接受。大多数团队已经有了一种公认的方式,可以出于“逻辑”原因故意中止程序。我工作过的一家公司有一个非常简单的程序,名为SYSABND2,我相信它是用汇编语言编写的,调用它只是为了终止程序

也就是说,要进行异常终止(而不仅仅是设置返回代码),您应该调用moduleCEE3ABD(或者以前的版本ILBOABN0,现在已经弃用)

有关详细信息,请参阅:


是的,通过COBOL程序,只需调用一个不存在的模块,就可以有意中止作业。它将给出S806异常终止代码。

ILBOABN0(链接页面中提到)现在已被弃用。外部链接不是答案,你应该在这里总结一下。除了更令人愉快之外,链接到网站的人往往不会经常出现,尤其是像这样的网站。谷歌搜索“tek tips.com”,你会发现至少有两次人们抱怨的停机时间。如果该程序不使用动态呼叫怎么办?这将如何生产S806?