Как отлаживать JCL

Как я могу «отлаживать» JCL? Есть ли способ показать сообщения об ошибках или предупреждения? Когда я отправляю свою РАБОТУ, вывод равен MAXCC=8. Но как я могу понять, почему или я должен искать, где находится «ошибка»?


person Lukas Werner    schedule 13.11.2014    source источник


Ответы (4)


На самом деле у вас нет проблемы с JCL.

Во-первых, иметь дело с MAXCC, так как это вызывает много путаницы.

Для опытных людей MAXCC существует только в IDCAMS (утилита для работы с файлами и каталогами, определения файлов VSAM и прочего, связанного с такими вещами).

MAXCC не существует в JCL или в любых выходных данных, которые вы получите от своего JOB.

Откуда берется MAXCC, так это оператор NOTIFY на вашей карточке JOB. Мы столько раз видели уведомление, что никогда его не читали, но оно действительно показывает MAXCC. Просто MAXCC встречается только в IDCAMS и в NOTIFY, так что рассказ о том, что это было, многих запутает.

Бит CC является кодом состояния. На каждом шаге задания будет создан код состояния. Обычно CC будет 00, нечего сообщать, 04, какая-то ситуация, не обязательно серьезная, 08, какая-то ситуация, вероятно, серьезная, 12, какая-то серьезная ситуация и 16, что-то очень плохое.

Это только обычные способы использования, но большинство утилит от IBM и независимых поставщиков программного обеспечения (ISV) придерживаются этого соглашения. Вы будете иногда видеть 20, возможно. Вероятно, во время землетрясения.

Например, если вы компилируете программу на языке COBOL, 00 будет означать, что компилятор не обнаружил проблем. Это не означает, что ваша программа работает. Это просто означает, что синтаксис в порядке. 04 означает наличие «предупреждений». Вы должны всегда проверять их, так как некоторые предупреждения на самом деле проблематичны. 08 являются серьезными ошибками, и хотя объектный код генерируется (если только он не запрошен через опцию компилятора), глупо пытаться его выполнить (кроме развлечения). 12 и 16 компилятор просто сдался и не будет генерировать код.

Существует аналогичная иерархия с linkeditor/binder. 00 полностью готов к запуску (но нет гарантии, что он будет делать что-то близкое к тому, что вы хотите), 04 — небольшая проблема, но вам нужно знать, что именно, 08 — проблема, которая, вероятно, означает, что вы не сможете выполнить программа.

Короче говоря, если у вас есть MAXCC = 08 в результате вашего NOTIFY, то у вас есть по крайней мере один шаг в вашем JOB, который имеет CC 08. У вас может быть более одного шага с 08, и вы также можете иметь шаги с 00 или 04.

Это не имеет ничего общего с JCL. CC был определен программой, которую вы запускаете, и то, что означает CC в каждом случае, может различаться в специфике (например, от компилятора до linkeditor/binder), хотя оценка обычно будет примерно эквивалентной.

Вы также можете установить CC из прикладной программы. В COBOL вы должны использовать «специальный регистр» RETURN-CODE.

MOVE 04                       TO RETURN-CODE

При выполнении, предполагая, что RETURN-CODE не получит никакого другого значения позже, вы получите CC 04 от выполнения этой программы.

Стандарты вашего местного сайта будут диктовать, как приложения будут указывать на ошибки: вполне возможно, что вы никогда не будете использовать RETURN-CODE.

Далее коротко: у вас ошибка в программе, и вам нужно сделать то, что предложил piet.t.

Скорее всего, у вас будут сообщения об ошибках, связанные с шагом, на котором создается CC. Быстрый и простой способ узнать больше о сообщении (кроме сообщений компилятора COBOL, которые не требуют пояснений(!)) — использовать веб-службу IBM LookAt: http://www-03.ibm.com/systems/z/os/zos/bkserv/lookat/

Вставьте свое сообщение, нажмите кнопку GO. Иногда вам потребуется указать версию z/OS. Вы всегда можете сделать это как новичок.

Для отладки самого JCL, насколько это возможно, вы можете использовать TYPRUN=SCAN на своей карточке JOB, или, возможно, на вашем сайте есть продукт для проверки JCL, хотя они, как правило, дают много ложных срабатываний, поскольку они обновляются несколько лет назад для где они пытаются понять влияние карт управления на стандартные утилиты (TYPRUN=SCAN игнорирует карты управления).

Настоящая проверка того, действительно ли работает ваш JCL, заключается в том, чтобы бросить его и запустить, создав условия, которые действительно проверяют то, что вы написали. Ни один продукт не может проверить правильность отношений, которые вы создаете в JCL (через условную проверку... CC, она возвращается снова).

person Bill Woodger    schedule 13.11.2014
comment
Теперь, когда у меня гораздо больше опыта работы с мейнфреймами и программированием, я думаю, что ваш ответ был наиболее полезным, связанным с вопросом. Но что на самом деле помогло мне (и было едва описано в другом ответе, но я узнал об этом на лекции), так это то, что я могу видеть журналы заданий, когда я перехожу на SDSF. Вывод может почти в любое время помочь решить проблему, просто погуглив :D бит еще спасибо за ваш ответ! - person Lukas Werner; 07.07.2016

Вы не можете "отладить" JCL, так как в JCL практически нет ничего, что действительно выполняется - это в основном для запуска последовательности программ и определения их соответствующих сред. Коды условий являются результатом выполненных программ, поэтому, чтобы добраться до источника вашей ошибки:

  1. проверьте свой журнал заданий, какой шаг создает код состояния 8 - это может зависеть от вашей версии JES, в нашей среде каждый шаг создает сообщение IEF142I, которое показывает соответствующий CC.
  2. определить программу, которая выполняется на этом шаге
  3. проверьте вывод программы на наличие сообщений об ошибках
person piet.t    schedule 13.11.2014

Прежде всего, вы должны знать, что означает код возврата.

знает это, после того, как вы узнаете, как исправить ошибку JCL (не отлаживать), если вы обнаружите ошибку по коду возврата, сначала вы должны проверить свой синтаксис. место имени задания, добавьте typrun=scan, вы можете проверить свой синтаксис. если TYPRUN=SCAN не возвращает сообщение об ошибке, вы можете просмотреть журнал заданий в SDSF.

нажмите S, чтобы увидеть подробную информацию. поскольку JCL включает несколько шагов, вы должны проверить, на каком этапе произошла ошибка. Убедитесь, какой шаг, вы можете увидеть подробную информацию.

в командной строке введите M, чтобы достичь дна. он имеет много ошибок в области, он показывает подробную информацию об ошибке.

person Jet    schedule 05.09.2015
comment
За исключением сообщения, сгенерированного для пользователя из NOTIFY=, единственный существующий MAXCC находится в IDCAMS. RC/CC нуля не означает, что шаг сработал, это означает, что он дал ноль. Ничего лишнего, если только вы не знаете конкретную программу. То же самое с четырьмя и восемью, хотя в служебных программах обычно используется эта схема. Из утилиты четверку игнорирует только дурак. Ненайденный набор данных не даст RC/CC равного четырем, он выдаст ошибку JCL. Остальная часть вашего ответа несколько запутана / запутана. TYPRUN=SCAN хороший совет. JCL не является языком программирования, простым или нет. - person Bill Woodger; 05.09.2015
comment
Спасибо за совет! - person Jet; 06.09.2015

Как я могу «отлаживать» JCL?

JCL не так просто. Есть много-много руководств по сообщениям и кодам, на которые стоит обратить внимание на этот всеобъемлющий вопрос. По сути, вы должны сделать все возможное, чтобы быть хорошо знакомым с основами. Всегда хорошо разбирайтесь в основах операционной системы — z/OS — для управления которой вы пишете свой JCL.

Есть ли способ показать сообщения об ошибках или предупреждения?

Да, в самом деле. Они ВСЕ в вашем выводе - от вашей операционной системы до вашей программы и даже сообщений, которые вы сами можете создавать для целей отладки.

Когда я отправляю свою РАБОТУ, вывод равен MAXCC=8.

Это конкретное сообщение, очевидно, от утилиты под названием IDCAMS. На самом деле хорошо, что вы поняли, что это то место, с которого нужно начинать устранение неполадок. Со временем вы поправитесь. Не нужно паниковать.

Но как я могу понять, почему или я должен искать, где находится «ошибка»?

Основы. Всегда основы. Поскольку это IDCAMS, осознайте, что вместе с IEFBR14 они НИКОГДА, НИКОГДА НЕ ПРОВАЛИВАЮТСЯ, как только начинают. Теперь, когда вы это знаете, поймите, что, никогда не давая сбоев, они абсолютно НИКОГДА не будут отображать сообщение об ОШИБКЕ. Сообщение об ОШИБКЕ только в случае сбоя. Поэтому вы получите только коды возврата. Эти коды возврата от IDCAMS обычно достаточно ясны. Просто постарайтесь привыкнуть к ним.

Удачи.

person wolfen244    schedule 21.07.2017