2014-11-13 3 views
1

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

ответ

2

Вы на самом деле не проблема JCL.

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

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

MAXCC не существует в JCL или на любом выходе, который вы получите от своей РАБОТЫ.

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

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

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

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

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

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

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

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

MOVE 04      TO RETURN-CODE 

При выполнении бы, если предположить, RETURN-КОД получает другое значение позже, получить вам куб.см 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-checker, хотя они, как правило, получают множество ложных срабатываний, поскольку они обновленные годы, когда они пытаются понять влияние контрольных карт на стандартные утилиты (TYPRUN = SCAN игнорирует контрольные карты).

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

+0

Теперь, когда я гораздо более опытен с мэйнфреймами и программированием, я думаю, что ваш ответ был самым полезным, связанным с вопросом. Но то, что на самом деле помогло мне (и было едва описано в другом ответе, но я узнал, что в лекции, это то, что я могу видеть журналы работы, когда я перехожу к SDSF. Выходные данные могут почти в любое время помочь решить проблему только путем googling : D бит по-прежнему благодарю вас за ваш ответ! –

1

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

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

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

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

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

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

+0

За исключением сообщений, генерируемых пользователю из NOTIFY =, единственный MAXCC, который существует, находится в IDCAMS. RC/CC нуля не означает, что шаг «работал», это означает он дал нуль. Ничего больше, если вы не знаете конкретную программу. То же самое с четырьмя и восемью, хотя обычное использование в служебных программах соответствует этой схеме. Из утилиты только дурак игнорирует четыре. «Набор данных не найден «не даст RC/CC из четырех, это даст ошибку JCL. Остальная часть вашего ответа несколько запутана/запутана.« TYPRUN = SCAN »- хороший совет. JCL - это не язык программирования, простой или иной. –

+0

Спасибо за ваш совет! – Jet

0

How can I "debug" JCL?

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

Is there any way to show error or caution messages?

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

When I submit my JOB the output is MAXCC=8.

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

But how can I get why or must I search for where the "error" is?

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

Удачи.