如何调试JCL

问题描述 投票:1回答:4

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

mainframe zos jcl
4个回答
4
投票

你实际上没有JCL问题。

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

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

MAXCC不存在于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稍后没有收到其他值,那么从执行该程序得到一个CC为04。

您的本地站点标准将决定应用程序如何指示错误:您很可能永远不会使用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,它又回来了)是正确的。


2
投票

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

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

1
投票

首先,你应该知道返回代码的意思。

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

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

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


0
投票

我怎样才能“调试”JCL?

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

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

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

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

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

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

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

祝好运。

© www.soinside.com 2019 - 2024. All rights reserved.