Как проверить наличие файлов системных служб Unix

Я запускаю пакетную Java на мейнфрейме IBM под JZOS. Задание создает от 0 до 6 выходных файлов ".txt" в зависимости от того, что оно находит в базе данных. Затем мне нужно преобразовать эти файлы из Unix в MVS (ebcdic), и я использую команду OCOPY, работающую под управлением IKJEFT01. Однако, когда определенный вывод не был создан, я получаю сообщение об ошибке JCL, и задание завершается. Я хотел бы проверить наличие или отсутствие имени каждого файла и установить код условия для управления выполнением шагов IKJEFT01, но не знаю, что использовать для доступа к путям к файлам Unix.
У меня есть решил эту проблему, написав программу COBOL для проверки преобразованных файлов MVS и установки кодов возврата для управления выполнением последующих шагов JCL. Завершенная работа сейчас проходит приемочное тестирование пользователями. Возможно, это звучит как кладж, но это работает, и я рад поделиться этим решением.


person Mike GH    schedule 18.01.2011    source источник
comment
Я просто наткнулся на это. Я сделал это в JCL через PGM=BPXBATCH в потоках заданий компиляции/сборки, где исходные файлы были извлечены из исходного репозитория, и в зависимости от версии могут существовать или не существовать - определенно не там, где вы хотите ошибку JCL. Позвольте мне откопать мой JCL в ближайшие день или два, и я опубликую его здесь.   -  person zarchasmpgmr    schedule 22.01.2012


Ответы (1)


Самый простой способ сделать это в JCL — использовать BPXBATCH следующим образом:

//EXIST    EXEC PGM=BPXBATCH,
// PARM='pgm /bin/cat /full/path/to/USS/file.txt'
//*
//         IF  EXIST.RC = 0
//* do whatever you need to
//         ENDIF

Если файл существует, шаг заканчивается CC 0 и IF завершается успешно. Если файл не существует, вы получите ненулевую CC (256, я полагаю), и IF завершится ошибкой.

Поскольку оператора //STDOUT DD нет, вывод в JES не записывается.

Единственным недостатком является то, что это еще один шаг задания, и если у вас много процессов (например, задание компиляции/сборки), вы можете столкнуться с ограничением в 255 шагов.

person Community    schedule 22.01.2012
comment
Спасибо. Программа COBOL также добавляет шаг, но она может писать в JES, и я могу выбрать коды возврата, которые будут использоваться для обработки последующих шагов. Кроме того, я могу проверить несколько файлов за один шаг. - person Mike GH; 22.02.2012