Чтобы выполнить программу COBOL в пакетном режиме с использованием JCL, необходимо скомпилировать программу и создать модуль загрузки со всеми подпрограммами. JCL использует модуль загрузки, а не фактическую программу во время выполнения. Загруженные библиотеки объединяются и передаются JCL во время выполнения с использованием JCLLIB или STEPLIB .
Существует множество утилит компилятора мэйнфреймов, доступных для компиляции программы COBOL. Некоторые корпоративные компании используют такие инструменты управления изменениями, как Endevor , который компилирует и сохраняет каждую версию программы. Это полезно для отслеживания изменений, внесенных в программу.
//COMPILE JOB ,CLASS=6,MSGCLASS=X,NOTIFY=&SYSUID //* //STEP1 EXEC IGYCRCTL,PARM=RMODE,DYNAM,SSRANGE //SYSIN DD DSN=MYDATA.URMI.SOURCES(MYCOBB),DISP=SHR //SYSLIB DD DSN=MYDATA.URMI.COPYBOOK(MYCOPY),DISP=SHR //SYSLMOD DD DSN=MYDATA.URMI.LOAD(MYCOBB),DISP=SHR //SYSPRINT DD SYSOUT=* //*
IGYCRCTL — это утилита компилятора IBM COBOL. Параметры компилятора передаются с использованием параметра PARM. В приведенном выше примере RMODE указывает компилятору использовать в программе режим относительной адресации. Программа COBOL передается с использованием параметра SYSIN, а тетрадь — это библиотека, используемая программой в SYSLIB.
Этот JCL создает модуль загрузки программы в качестве вывода, который используется в качестве входных данных для выполнения JCL.
Запуск программ COBOL
Ниже приведен пример JCL, где программа MYPROG выполняется с использованием входного файла MYDATA.URMI.INPUT и создает два выходных файла, записанных в спул.
//COBBSTEP JOB CLASS=6,NOTIFY=&SYSUID // //STEP10 EXEC PGM=MYPROG,PARM=ACCT5000 //STEPLIB DD DSN=MYDATA.URMI.LOADLIB,DISP=SHR //INPUT1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR //OUT1 DD SYSOUT=* //OUT2 DD SYSOUT=* //SYSIN DD * //CUST1 1000 //CUST2 1001 /*
Загрузочный модуль MYPROG находится в MYDATA.URMI.LOADLIB. Важно отметить, что вышеуказанный JCL можно использовать только для модуля COBOL, отличного от DB2.
Передача данных в программы COBOL
Ввод данных в пакетную программу COBOL может осуществляться через файлы, параметр PARAM и оператор SYSIN DD. В приведенном выше примере:
-
Записи данных передаются в MYPROG через файл MYDATA.URMI.INPUT. Этот файл будет ссылаться в программе с использованием имени DD INPUT1. Файл можно открывать, читать и закрывать в программе.
-
Данные параметра PARM ACCT5000 принимаются в разделе LINKAGE программы MYPROG в переменной, определенной в этом разделе.
-
Данные в операторе SYSIN принимаются через оператор ACCEPT в разделе PROCEDURE программы. Каждый оператор ACCEPT считывает одну целую запись (т.е. CUST1 1000) в рабочую переменную хранения, определенную в программе.
Записи данных передаются в MYPROG через файл MYDATA.URMI.INPUT. Этот файл будет ссылаться в программе с использованием имени DD INPUT1. Файл можно открывать, читать и закрывать в программе.
Данные параметра PARM ACCT5000 принимаются в разделе LINKAGE программы MYPROG в переменной, определенной в этом разделе.
Данные в операторе SYSIN принимаются через оператор ACCEPT в разделе PROCEDURE программы. Каждый оператор ACCEPT считывает одну целую запись (т.е. CUST1 1000) в рабочую переменную хранения, определенную в программе.
Выполнение программы COBOL-DB2
Для запуска программы DB2 на COBOL в JCL и программе используется специализированная утилита IBM; Регион DB2 и необходимые параметры передаются в качестве входных данных утилите.
Следующие шаги выполняются при запуске программы COBOL-DB2:
-
Когда программа на языке COBOL-DB2 компилируется, DBRM (модуль запроса базы данных) создается вместе с модулем загрузки. DBRM содержит операторы SQL программ на языке COBOL, синтаксис которых проверен на корректность.
-
DBRM привязан к региону DB2 (среде), в которой будет работать COBOL. Это можно сделать с помощью утилиты IKJEFT01 в JCL.
-
После шага связывания программа COBOL-DB2 запускается с использованием IKJEFT01 (снова) с библиотекой загрузки и библиотекой DBRM в качестве входных данных для JCL.
Когда программа на языке COBOL-DB2 компилируется, DBRM (модуль запроса базы данных) создается вместе с модулем загрузки. DBRM содержит операторы SQL программ на языке COBOL, синтаксис которых проверен на корректность.
DBRM привязан к региону DB2 (среде), в которой будет работать COBOL. Это можно сделать с помощью утилиты IKJEFT01 в JCL.
После шага связывания программа COBOL-DB2 запускается с использованием IKJEFT01 (снова) с библиотекой загрузки и библиотекой DBRM в качестве входных данных для JCL.
//STEP001 EXEC PGM=IKJEFT01 //* //STEPLIB DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR //* //input files //output files //SYSPRINT DD SYSOUT=* //SYSABOUT DD SYSOUT=* //SYSDBOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //DISPLAY DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(SSID) RUN PROGRAM(MYCOBB) PLAN(PLANNAME) PARM(parameters to cobol program) - LIB('MYDATA.URMI.LOADLIB') END /*
В приведенном выше примере MYCOBB — это программа COBOL-DB2, запущенная с использованием IKJEFT01. Обратите внимание, что имя программы, идентификатор подсистемы DB2 (SSID), имя плана DB2 передаются в инструкции SYSTSIN DD. Библиотека DBRM указана в STEPLIB.