Как проверить наличие файлов системных служб Unix - PullRequest
2 голосов
/ 18 января 2011

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

1 Ответ

2 голосов
/ 22 января 2012

Самый простой способ сделать это в 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.

...