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

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

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 шагов.

Другие вопросы по тегам