ЦИСК не найден spoolfile в spoolopen

Вопросы и ответы

Я попытался отправить jcl из программы cics. Задание было выполнено без проблем. Токен ID был возвращён, задание выполнено, и класс вывода доступен в спуле. Затем я попытался прочитать класс вывода задания из cics, но был возвращён код состояния 13 (не найдено). Токен ID не возвращается! Может кто-нибудь помочь? Можете ли вы прислать пример кода, который использует команды exec cics open input и exec cics read? Большое спасибо.

Ответ

Конечно! Давайте разберемся с вашей проблемой и предоставим код для работы с CICS, чтобы вы могли открыть и прочитать файл в спуле.

Проблема с CICS и спул-файлом

Ошибка 13 (not found), которую вы получаете, скорее всего, указывает на то, что CICS не может найти указанный спул-файл. Это может быть связано с тем, что вы не передаете правильный идентификатор токена, использованного при отправке JCL, или файл еще не доступен для чтения.

Для начала, убедитесь, что:

  1. Вы правильно получаете и сохраняете идентификатор токена после отправки работы.
  2. Результаты работы JCL доступны в момент, когда вы пытаетесь их прочитать из программы CICS.
  3. Ваши права на доступ к спулу настроены корректно.

Пример кода для работы с exec CICS

Вот пример, который показывает, как вы можете использовать команду EXEC CICS OPEN INPUT и EXEC CICS READ для чтения спул-файла:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ReadSpoolFile.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           CICS  IS CICS.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WS-TOKEN-ID            PIC X(8).
       01  WS-SPOOL-FILE-NAME     PIC X(20) VALUE 'YOUR_SPOOL_FILE_NAME'.
       01  WS-RECORD              PIC X(80).
       01  WS-STATUS              PIC X(4).

       PROCEDURE DIVISION.
       MAIN-PARAGRAH.
           EXEC CICS
               OPEN INPUT WS-SPOOL-FILE-NAME
               ID(WS-TOKEN-ID)
               RESP(WS-STATUS)
           END-EXEC

           IF WS-STATUS NOT = '0000'
               DISPLAY 'Ошибка открытия файла: ' WS-STATUS
               EXIT PROGRAM
           END-IF

           PERFORM UNTIL WS-STATUS = 'E37'    *> E37 - конец файла
               EXEC CICS
                   READ WS-SPOOL-FILE-NAME
                   INTO WS-RECORD
                   RESP(WS-STATUS)
               END-EXEC

               IF WS-STATUS = '0000'
                   DISPLAY 'Считанная запись: ' WS-RECORD
               END-IF
           END-PERFORM

           EXEC CICS
               CLOSE WS-SPOOL-FILE-NAME
               RESP(WS-STATUS)
           END-EXEC

           IF WS-STATUS NOT = '0000'
               DISPLAY 'Ошибка закрытия файла: ' WS-STATUS
           END-IF

           EXIT PROGRAM.
       END PROGRAM ReadSpoolFile.

Пояснение коду

  • TOКЕН ID: При открытии файла запоминаем токен в переменной WS-TOKEN-ID, чтобы использовать его в будущем, если это потребуется.
  • Чтение записей: Мы читаем записи в цикле до тех пор, пока не достигнем конца файла (код ошибки E37).
  • Закрытие файла: В конце программы обязательно закройте файл, чтобы освободить ресурсы.

Рекомендации

  1. Проверьте, верно ли указано имя вашего спул-файла.
  2. Убедитесь, что ваша работа в спуле действительно выполняется и завершена.
  3. Проверьте сообщения об ошибках, чтобы лучше понять, что не так.

Если у вас возникнут дополнительные вопросы или понадобится помощь, не стесняйтесь обращаться! Удачи в работе с CICS!

Оцените материал
Добавить комментарий

Капча загружается...