문제

COBOL 수업에서 수행하는 과제를 위해 JCL에서 상징적 변수를 만드는 방법에 대해 약간 혼란스러워합니다.

예를 들어, "PARM 옵션에 대한 상징적 매개 변수를 지정하고 테스트 및 모자를 기본값으로 지정해야합니다."

상징적 매개 변수로 "PARM"옵션을 어떻게 지정합니까?

편집 : 감독을 용서하십시오. 내가 실행중인 OS를 언급하는 것을 잊어 버린 것 같습니다. Z/OS 에서이 JCL 파일을 작성하고 있습니다.

미리 감사드립니다!

편집하다:

@Avisser :

그래서, 당신이 말하는 것은 내가 "& parm = 'test, apost'"라고 부를 수 있다는 것입니다. 그리고 다른 JCL 문 으로이 Proc를 실행할 때 해당 매개 변수를 변경하려면 나열된 PARMS를 JCL에 전화?

편집하다:

@Avisser :

예, 죄송합니다. 더 구체적으로 노력해야합니다 ... COBOL JCL에서는 COBOL 컴파일러 (IGYCRCTL), Linkage Editor (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, ®ion = 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 init = 디스크, space = (cyl, (1,1))
7 // sysut2 dd init = 디스크, space = (cyl, (1,1))
8 // sysut3 dd init = 디스크, space = (cyl, (1,1))
9 // sysut4 dd init = 디스크, space = (cyl, (1,1))
10 // sysut5 dd init = 디스크, space = (cyl, (1,1))
11 // sysut6 dd init = 디스크, space = (cyl, (1,1))
12 // sysut7 dd init = 디스크, space = (cyl, (1,1))
//*
//*
13 // step02 exec pgm = hewl, & cond =, & reagion = 2048k,
// & parm =
14 // syslib dd dsn = cee.sceelked, disp = shr
15 // syslin dd & dsn = && objset, & disp = (old, delete)
16 // syslmod dd dsn = && templib (pgm6),
// space = (1024, (50,20,1)), 단위 = 디스크,
// disp = (신규, catlg, 삭제)
17 // sysprint dd sysout =*
18 // 프린터 dd sysout =*
19 // sysut1 dd init = 디스크, space = (trk, (10,10))
//*
//*
20 // STEP01 EXEC PGM = PGM6, & PARM = termthdact (덤프)
21 // steplib dd dsn = && templib, disp = shr
22 // ceedump
23 // sysudump
24 // 프린터 dd sysout =*
25 // 제품 DD DSN = KC02322.CSCI465.sp09 (Data1), Disp = SHR
26 // Sysin DD *
!! Jes Spool 파일의 끝 !! stmt no. 메시지 2 IEFC630I 미확인 키워드 ® 이온 2 IEFC630i 미확인 키워드 및 PARM 4 IEFC630i 미확인 키워드 & DSN 4 IEFC630I 미확인 키워드 및 DIST 13 IEFC630I 미확인 키워드 및 Condicificifor -unificiWornified 15 iefc630i Unistified Keyword & PARM 15 INIDICOWN 13 IEFC630I 키워드 & PARM 22 IEFC605I 미확인 작동 필드 23 IEFC605I 미확인 작동 필드 !! Jes Spool 파일의 끝 !!

도움이 되었습니까?

해결책

상징적 매개 변수는 앰퍼 랜드가 앞에 있습니다. JCL 문에 사용되면 런타임에 제공된 값으로 변환됩니다. (Z/O에서)를 작성하는 한 가지 방법은

// SET name = value

선언. PARM을 사용하는 경우 프로그램과 함께 작동 할 수 있도록 프로그램을 설계해야합니다. 아마도 과제는 어떻게 해야하는지에 관한 것입니다 저것 (힌트 : 연결 섹션). 아니면 JCL이 COBOL 클래스의 일부입니까?

테스트 및 사도는 컴파일러 지시문을 좋아합니다. 귀하가 귀하의 프로그램에서 구체적으로 지정할 수 있는지 모르겠습니다. 내 직장에서 컴파일러를 호출 할 때만 공급합니다.

편집하다:

좋아, 우리는 별도의 JCL 스트림으로 프로그램을 컴파일하고 실행하는 경향이 있기 때문에 이것은 나에게 약간 드문 일입니다. 그러나 어쨌든.

두 번째 진술 :

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

지역 및 PARM은 소위 위치 매개 변수이며 키워드이며 실제로는 상징적 인 이름으로 제시되어야 할 것이지만 자유롭게 그렇게 할 수는 있지만 (이것은 "미확인 키워드"메시지를 설명 할 것입니다).
해당되는 경우 일반적인 용도는 피연산자 그러한 매개 변수의. 그리고 분명히 당신은 그들에게 먼저 값을 정의해야합니다.

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

다른 팁

좋아, 나는 약간의 파기를했고, Avisser가 나에게 준 지침으로 내가해야 할 일을 알아낼 수있었습니다. 따라서이 질문을 할 수있는 사람 (또는 유사한 하나)에 대한 향후 언급을 위해 다음은 다음과 같습니다.

1 단계 : 사용할 변수로 "Proc"를 만듭니다.

전. "테스트"와 "사도"라는 기본값이있는 COBOL 컴파일러에서 "PARM"에 변수를 사용하고 싶었으므로 다음과 같은 것을 썼습니다.

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

2 단계 : 실제 JCL 단계에서 새로 정의 된 상징적 매개 변수를 사용하십시오. "&"문자는 다음과 같은 것이 무엇이든 상징적 인 매개 변수임을 보여줍니다.

전. COBOL 컴파일 단계에 앞서 언급 한 "CPARM"을 사용했습니다.

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

3 단계 : 실제 단계 후에 "펜"문으로 "Proc"를 종료하십시오.

전. 모든 변수를 나열하고 컴파일을위한 모든 단계 (컴파일러 이름, 컴파일러를 찾을 수있는 곳, PEND 문, SYSUT1-SYSUT7 문장 직전에 볼 수 있듯이)를 나열한 후 PEND 키워드를 배치했습니다.

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

4 단계 : 추가 JCL 단계 및/또는 코드를 소스 파일에 추가하면 꺼져 있습니다!

메모:

-단일 JCL 파일에 하나 이상의 Proc 문을 가질 수 있습니다. 나는 COBOL 컴파일을위한 세 가지, 하나는 Linkage 편집기, 하나는 프로그램 페치를위한 것입니다. 또한 내 Proc 문과 동일한 파일에 Cobol 코드가 있습니다.

-이것은 Z/OS를 실행하는 IBM 메인 프레임에서 진행되었습니다.

-Above, "CPARM"변수가 'Test, Apost'의 기본값으로 설정되어 있음을 알 수 있습니다. 단순히 필드를 비워 두어 기본적으로 변수를 널 늘릴 수 있습니다 (예 : cparm =,).

-CPARM 정의 후에는 쉼표가 있음을 알았을 것입니다. 이후에는 더 많은 변수가 있기 때문입니다. 주어진 Proc에 대해 생성 한 마지막 상징적 매개 변수는이를 따르는 것이 없어야한다는 것을 기억하십시오 (예 : 쉼표 없음). 물론, 주석 선 (//*), 다른 Proc 또는 실제 코드를 배치 할 수는 있지만 마지막 상징적 매개 변수에는 같은 줄에 아무것도 따르는 것이 없어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top