如何调试JCL

时间:2014-11-13 11:34:07

标签: mainframe zos jcl

我怎样才能"调试" JCL?有没有办法显示错误或警告信息?当我提交我的JOB时,输出为MAXCC = 8。但是我怎样才能找到为什么或者必须搜索"错误"是

4 个答案:

答案 0 :(得分:4)

您实际上没有JCL问题。

首先,要处理MAXCC,因为这会引起很多混乱。

对于有经验的人,MAXCC仅存在于IDCAMS(用于文件和目录操作的实用程序,定义VSAM文件以及与这些类型的事物相关的内容)。

MAXCL在JCL中不存在,或者在您从JOB收到的任何输出中都不存在。

MAXCC的来源是你的JOB卡上的NOTIFY声明。我们已经看到通知到达很多次了,我们从未读过它,但确实显示了MAXCC。只是MAXCC只出现在IDCAMS和NOTIFY中,所以告诉我们它是什么会让很多人感到困惑。

CC位是条件代码。每个jobtep都会生成一个条件代码。通常CC会是00,没什么可报告的,04,有些情况,不一定严重,08,有些情况可能很严重,12,有些情况严重和16,有些事情真的很糟糕。

这些只是传统用途,但IBM和独立软件供应商(ISV)的大多数实用程序都坚持这一惯例。你偶尔会看到20岁。可能是在地震期间。

例如,如果编译COBOL程序,00将意味着编译器没有发现任何问题。 这并不意味着您的计划有效。它只是意味着语法正常。 04表示有“警告”。您应该始终检查这些,因为某些警告确实存在问题。 08是严重的错误,虽然生成了对象代码(除非没有通过编译器选项请求),但尝试执行它是愚蠢的(除了有趣)。 12和16,编译器刚刚放弃,不会生成代码。

链接器/活页夹有一个类似的层次结构。 00已准备好运行(但不保证它会做任何接近你想要的事情),04是一个小问题,但你想知道什么,08是一个问题,这可能意味着你将无法执行该计划。

所有这一切的缺点是,如果您的NOTIFY结果为MAXCC = 08,那么您的JOB中至少有一步的CC为08.您可能在08中有多个步骤,并且您可能还有00或04的步骤。

与JCL无关。 CC已由您正在运行的程序确定,并且CC在每种情况下的含义可能在细节上有所不同(例如编译器到链接器/活页夹),尽管评级通常大致相当。

您还可以从应用程序中设置CC。在COBOL中,您将使用RETURN-CODE“特殊寄存器”。

MOVE 04                       TO RETURN-CODE

执行时,假设RETURN-CODE稍后没有收到其他值,那么从该程序的执行中得到一个04的CC。

您的本地站点标准将决定应用程序如何指示错误:您很可能永远不会使用RETURN-CODE。

进一步的缺点是你有一个程序错误,你需要做piet.t所建议的。

您可能会收到与产生CC的步骤相关的错误消息。一种快速简便的方法来查找有关消息的更多信息(除了COBOL编译器消息,这是不言自明的(!))是使用IBM LookAt Web服务:http://www-03.ibm.com/systems/z/os/zos/bkserv/lookat/

粘贴您的信息,点击“开始”按钮。有时您需要指定z / OS版本。你可以作为初学者来做。

为了调试JCL本身,在可能的范围内,您可以在JOB卡上使用TYPRUN = SCAN,或者您的站点可能有JCL-checker产品,尽管这些产品在更新时往往会产生很多误报他们试图了解控制卡对标准实用程序的影响(TYPRUN = SCAN忽略控制卡)。

JCL是否真正有效的真正考验是将其投入并运行,创造实际测试你编码的条件。没有产品可以检查您在JCL中创建的关系(通过条件检查... CC,它又回来了)是正确的。

答案 1 :(得分:2)

你不能“调试”JCL,因为JCL中几乎没有任何实际执行的东西 - 它主要用于启动一系列程序并定义它们各自的环境。条件代码来自执行的程序,因此要找到错误的来源:

  1. 检查你的joblog哪个步骤产生条件代码8 - 这可能取决于你的JES版本,在我们的环境中每一步产生一个IEF142I - 消息,显示相应的CC。
  2. 识别在此步骤中执行的程序
  3. 检查程序输出是否有任何错误消息

答案 2 :(得分:1)

首先,您应该知道返回代码的含义。

知道这些,你可以学习如何修复JCL的错误(不是调试) 如果你通过返回代码发现错误,首先,你应该检查你的语法。 作业名称的位置,添加typrun = scan,您可以检查您的语法。 如果TYPRUN = SCAN没有返回错误消息,您可以在SDSF中看到joblog。

按S查看详细信息。 因为JCL包括一个或多个步骤,你必须检查哪个步骤发生error.ensure哪一步,你可以看到详细的信息。

在命令行输入M到达底部。 它在面积上有很多错误,它显示错误的详细信息。

答案 3 :(得分:0)

  

如何“调试”JCL?

JCL并不容易。有许多消息和代码手册可以查看这个包罗万象的问题。基本上你应该尽力熟悉基础知识。始终牢牢掌握操作系统的基础知识 - z / OS - 您编写JCL以便控制。

  

有没有办法显示错误或警告信息?

确实是的。它们完全适合您的输出 - 从操作系统到程序,甚至是您自己可以为调试目的创建的消息。

  

当我提交我的JOB时,输出为MAXCC = 8。

此特定消息显然来自名为IDCAMS的实用程序。这实际上是一件好事,您了解这是开始排除故障的地方。随着时间的推移,你会变得更好无需恐慌。

  

但是我怎样才能找到为什么或者必须搜索“错误”的位置?

基础。总是基本面。由于这是IDCAMS意识到与IEFBR14一起,它们永远不会,一旦它们开始就会失败。现在您已经知道,通过永不失败,他们绝对不会显示错误消息。只有失败时才会显示ERROR消息。因此,您只能获得返回码。来自IDCAMS的返回码通常很清楚。尽量好好习惯他们。

祝你好运。