Вопрос

Я немного не понимаю, как создать символьную переменную в JCL для задания, которое я выполняю в своем классе COBOL.

Например, я должен «Указать символический параметр для опции PARM и указать TEST и APOST по умолчанию».

Как назначить опцию «PARM» символическим параметром?

РЕДАКТИРОВАТЬ:Простите оплошность;Кажется, я забыл указать, на какой ОС я работаю.Я пишу этот файл JCL в z/OS.

Заранее спасибо!

РЕДАКТИРОВАТЬ:

@avisser:

Итак, вы говорите, что я могу просто назвать это «&PARM='TEST,APOST'» и, если я захочу изменить этот параметр при запуске этого процесса с другим оператором JCL, перечисленные параметры можно изменить из звонишь в JCL?

РЕДАКТИРОВАТЬ:

@avisser:

Да, извините, мне действительно нужно поработать над тем, чтобы быть более конкретным...В моем COBOL JCL я вызываю компилятор COBOL (IGYCRCTL), редактор связей (HEWL) и выборку программы (EXEC PGM=).

РЕДАКТИРОВАТЬ:

Возможно, это поможет увидеть, каковы мои результаты.Я действительно ценю всех тех, кто до сих пор пытался помочь.

Выход:

------ СТАТИСТИКА ЗАДАНИЙ JES2 ------

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!!КОНЕЦ ФАЙЛА JES SPOOL!!1 // kc03cefa job, 'matt r', msgclass = h, typrun = сканировать job07731 //*
2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
// &PARM='ТЕСТ,АПОСТ'
3 //STEPLIB DD DSN=IGY340.SIGYCOMP,DISP=SHR
/*
4 //SYSLIN DD &DSN=&&OBJSET,UNIT=DISK,SPACE=(TRK,(3,3)),
// &DISP=(НОВЫЙ,ПАРОЛЬ,УДАЛЕНИЕ)
5 //SYSPRINT DD SYSOUT=*
6 //SYSUT1 DD UNIT=DISK,SPACE=(CYL,(1,1))
7 //SYSUT2 DD UNIT=DISK,SPACE=(CYL,(1,1))
8 //SYSUT3 DD UNIT=DISK,SPACE=(CYL,(1,1))
9 //SYSUT4 DD UNIT=DISK,SPACE=(CYL,(1,1))
10 //SYSUT5 DD UNIT=DISK,SPACE=(CYL,(1,1))
11 //SYSUT6 DD UNIT=DISK,SPACE=(CYL,(1,1))
12 //SYSUT7 DD UNIT=DISK,SPACE=(CYL,(1,1))
//*
//*
13 //STEP02 EXEC PGM=HEWL,&COND=,&REAGION=2048K,
// &ПАРМ=
14 //SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
15 //SYSLIN DD &DSN=&&OBJSET,&DISP=(OLD,DELETE)
16 //SYSLMOD DD DSN=&&TEMPLIB(PGM6),
// ПРОБЕЛ=(1024,(50,20,1)),UNIT=ДИСК,
// DISP=(НОВЫЙ,CATLG,УДАЛЕНИЕ)
17 //SYSPRINT DD SYSOUT=*
18 //ПРИНТЕР ДД SYSOUT=*
19 //SYSUT1 DD UNIT=DISK,SPACE=(TRK,(10,10))
//*
//*
20 //STEP01 EXEC PGM=PGM6,&PARM=TERMTHDACT(DUMP)
21 //STEPLIB DD DSN=&&TEMPLIB,DISP=SHR
22 //CEEDUMP
23 //СИСУМП
24 //ПРИНТЕР ДД SYSOUT=*
25 //ПРОДУКТЫ DD DSN=KC02322.CSCI465.SP09(DATA1),DISP=SHR
26 //СИСИН ДД *
!!КОНЕЦ ФАЙЛА JES SPOOL!!СТМТ НЕТ.MESSAGE 2 IEFC630I UNIDENTIFIED KEYWORD ®ION 2 IEFC630I UNIDENTIFIED KEYWORD &PARM 4 IEFC630I UNIDENTIFIED KEYWORD &DSN 4 IEFC630I UNIDENTIFIED KEYWORD &DISP 13 IEFC630I UNIDENTIFIED KEYWORD &COND 13 IEFC630I UNIDENTIFIED KEYWORD &REAGION 13 IEFC630I UNIDENTIFIED KEYWORD &PARM 15 IEFC630I UNIDENTIFIED KEYWORD &DSN 15 IEFC630I UNIDENTIFIED KEYWORD &DISP 20 IEFC630I UNIDENTIFIED Ключевое слово и Parm 22 IEFC605I Неизнанное поле для работы 23 IEFC605I Неидентифицированное поле работы !!КОНЕЦ ФАЙЛА JES SPOOL!!

Это было полезно?

Решение

символические параметры — это имена, которым предшествует амперсанд.При использовании в инструкции JCL во время выполнения они преобразуются в предоставленное значение.Один из способов их создания (в z/OS) — использование

// SET name = value

декларация.Если вы используете PARM, вам следует спроектировать свою программу так, чтобы она могла работать с ним.Возможно, задание состоит в том, как сделать что (намекать:раздел «Связь»).Или JCL является частью вашего класса COBOL?

TEST и APOST кажутся мне директивами компилятора.Не знаю, сможете ли вы их указать в своей программе, у меня на рабочем месте мы их подаем только при вызове компилятора.

РЕДАКТИРОВАТЬ:

Хорошо, для меня это немного необычно, поскольку мы склонны компилировать и запускать наши программы в отдельных потоках JCL.Но в любом случае.

Принимая во внимание ваше второе утверждение:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

REGION и PARM — это так называемые позиционные параметры и ключевые слова, которые на самом деле не предназначены для представления в виде символических имен, хотя вы можете это сделать (это объяснит сообщения «UNIDENTIFIED KEYWORD»).
Обычное использование – когда это применимо – заключается в предоставлении символических имен для операнды таких параметров.И, очевидно, вам сначала нужно определить для них значение, например:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS

Другие советы

Хорошо, я немного покопался и, благодаря указаниям, которые дал мне ависсер, смог понять, что мне нужно делать.Итак, на будущее для всех, у кого может возникнуть этот вопрос (или аналогичный), вот что я выяснил:

Шаг 1:Создайте «PROC» с переменными, которые вы будете использовать.

бывший.Я хотел использовать переменные для «PARM» в моем компиляторе COBOL, которые имели значения по умолчанию «TEST» и «APOST», поэтому я написал что-то вроде:

//PROC1  PROC  CPARM='TEST,APOST',

Шаг 2:Используйте эти недавно определенные символические параметры на фактическом этапе JCL.Символ «&» показывает, что все, что следует за ним, является символическим параметром.

бывший.Я использовал вышеупомянутый «CPARM» для своего этапа компиляции COBOL:

//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

Шаг 3:Завершите свой «PROC» оператором «PEND» после фактического шага.

бывший.После того, как я перечислил все свои переменные и перечислил все шаги компиляции (имя компилятора, где можно найти компилятор и, как видно непосредственно перед оператором PEND, операторы SYSUT1-SYSUT7), поместите ключевое слово PEND:

//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

Шаг 4:Добавьте любые дополнительные шаги и/или код JCL в исходный файл, и все готово!

Примечания:

-В одном файле JCL может быть более одного оператора PROC.У меня было три:один для компиляции COBOL, один для редактора связей и один для выборки программы.У меня также есть код COBOL в том же файле, что и мои инструкции PROC.

- Это произошло на мейнфрейме IBM под управлением z/OS.

-Выше видно, что для моей переменной «CPARM» установлено значение по умолчанию «TEST,APOST».По умолчанию переменная может быть нулевой, просто оставив поле пустым (например.CPARM=,).

- Возможно, вы заметили, что после определения CPARM стоит запятая;это потому, что после него у меня больше переменных.Помните, что за последним символическим параметром, который вы создаете для любого данного PROC, не должно быть ничего (т.без запятой).Вы, конечно, можете разместить после этого строку комментария (//*), другой PROC или фактический код, но за последним символическим параметром в той же строке не должно быть ничего, следующего за ним.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top