JCL 제어문
본 장에서는 JCL 제어문과 각 오퍼랜드에 대해 설명한다.
1. 개요
다음은 JCL 제어문에 대한 목록이다.
JCL 제어문 | 설명 |
---|---|
프로그램 컨트롤문의 시작을 나타낸다. |
|
JOB 또는 JOB STEP에서 사용하는 데이터셋을 정의하고 그 속성을 설정한다. |
|
특별한 이름의 DD 이름을 사용하는 DD 문이다. |
|
CNTL 문 이후로 나오는 프로그램 컨트롤문의 마지막을 나타낸다. |
|
STEP의 시작을 나타내고, 그 STEP의 속성을 기술한다. |
|
분기해서 JCL문을 실행할수 있도록 조건을 지정하고 조건의 결과에 따라서 실행할 문장을 기술한다. |
|
지정한 멤버의 내용을 JCL 문장으로 포함시킬 것을 의미한다. |
|
JCL 커맨드를 기술한다. |
|
JCL에서 사용할 프러시저나 INCLUDE 문에서 지정한 JCL 문장들을 가져올 라이브러리를 지정한다. |
|
JOB의 시작을 의미하고, JOB의 속성을 기술한다. |
|
출력 처리를 하기위한 SYSOUT 데이터셋의 속성을 지정한다. |
|
프러시저의 마지막을 나타낸다. |
|
프러시저의 시작을 의미한다. |
|
JCL에서 사용하는 기호파라미터의 값을 지정한다. |
|
다른 노드로 데이터를 전송하는 문장이다. |
|
JOB의 마지막을 나타낸다. |
|
Instream 데이터의 마지막 줄 바로 뒤에 위치하여 Instream 데이터의 마지막을 의미한다. |
|
주석을 기술한다. |
2. CNTL 문
프로그램 컨트롤문의 시작을 나타낸다. CNTL 문이 나오면 ENDCNTL 문이 나올때까지 문장은 프로그램 컨트롤문으로 처리된다. OpenFrame에서는 CNTL 문과 프로그램 컨트롤문 그리고 ENDCNTL 문에 대해서 문법 오류만 검사하고 사용하지 않는다.
-
사용법
//[라벨]△¹CNTL△[* 주석]
-
예제
다음은 CNTL 문과 ENDCNTL 문을 사용하는 예제이다.
//STEP1 EXEC PGM=PRINT //ALPHA CNTL * PROGRAM CONTROL STATEMENT FOLLOWS //PRGCNTL PRINTDEV BUFNO=20,PIMSG=YES,DATACK=BLOCK //OMEGA ENDCNTL //AGAR DD UNIT=AFP1
3. DD 문
JOB 또는 JOB STEP에서 사용하는 데이터셋을 정의하고 그 속성을 설정한다.
-
사용법
//[DD 이름]△¹DD△¹[위치 오퍼랜드][,키워드 오퍼랜드]...△¹[주석] //[프러시저 STEP 이름.DD 이름]△¹DD△¹[위치 오퍼랜드][,키워드 오퍼랜드]...△¹[주석]
항목 설명 DD 이름
프러시저 STEP 이름.DD 이름
명칭 기술 위치로, "//"에 이어서 3번째 칸부터 기술한다.
DD 이름을 생략하면 이 DD는 CONCATENATED DD로 판단한다.
DD 이름은 8자리 이내의 영문자, 숫자이어야 하며 첫 번째 문자는 영문자이어야 한다.
만약 같은 STEP 내에 동일한 이름의 DD 이름이 중복된 경우, DD 할당 시 시스템은 중복된 첫번째 DD 이후의 중복 DD 이름을 임의의 DD 이름으로 설정한다. 임의의 DD 이름은 $DD0000$에서 1씩 증가시키며 생성된다.
프러시저 STEP 이름과 함께 DD 이름을 기술하면 해당 DD는 프러시저 STEP의 같은 이름의 DD 속성을 오버라이드한다. 만약 같은 이름의 DD가 없다면 해당 이름으로 DD가 추가된다. 프러시저 STEP 이름은 8자리 이내의 영문자, 숫자이어야 하며 첫 번째 문자는 영문자이어야 한다.
CONCATENATED DD 및 프러시저 STEP에 추가 또는 오버라이드에 대한 자세한 내용은 표 이후에 설명한다.
DD
오퍼레이션 기술 위치로 DD 이름 뒤에 1개 이상의 공백을 두고 'DD’라고 기술한다.
[위치 오퍼랜드][,키워드 오퍼랜드]
'DD' 이후에 1개 이상의 공백을 두고 오퍼랜드를 기술하며 모든 위치 오퍼랜드를 먼저 기술하고 이후에 키워드 오퍼랜드를 기술한다. 자세한 내용은 오퍼랜드와 각 오퍼랜드 절의 설명을 참고한다.
[주석]
오퍼랜드란 이후에 1개 이상의 공백을 두고 기술한다. 주석은 71번째 칸까지 기술할 수 있다. 모든 오퍼랜드를 생략한 경우에는 주석을 기술할 수 없다.
CONCATENATED DD 및 프러시저 STEP
다음은 CONCATENATED DD, 프러시저 STEP에 추가 또는 오버라이드에 대한 설명이다.
-
CONCATENATED DD
여러 개의 입력용 데이터셋을 논리적으로 1개의 데이터셋처럼 처리해서 사용하는 것을 데이터셋의 연결이라고 한다. 그리고 데이터셋의 연결을 위해서 CONCATENATED DD를 사용한다.
CONCATENATED DD는 DD 이름을 생략하는 방식으로 사용하는데, 이 DD는 앞서 선언된 DD와 논리적으로 연결이 된다. JOBCAT이나 STEPCAT와 같은 스페셜 DD도 연결하여 사용할 수 있다.
다음은 3개의 데이터셋을 CONCATENATED DD를 통해서 논리적으로 연결하는 예제이다.
//SYSIN DD DSN=TMAX.SYSIN1,DISP=SHR // DD DSN=TMAX.SYSIN2,DISP=SHR // DD DSN=TMAX.SYSIN3,DISP=SHR
-
프러시저 STEP에 추가 또는 오버라이드
프러시저를 호출하는 STEP에서 지정한 DD는 해당 STEP에서 사용되지 않고 호출된 프러시저 내의 STEP에서 사용된다. 프러시저를 호출하는 STEP에서 DD를 지정할 때는 해당 DD가 프러시저 내의 어떤 STEP에서 사용할지를 명백히 지정해 주어야 한다. 프러시저 내의 STEP은 "//" 이후에 "프러시저 STEP 이름.DD 이름"으로 지정한다.
프러시저 STEP 이름을 지정하지 않으면 해당 DD는 바로 전의 DD에서 지정한 프러시저 STEP 이름이 사용된다. 프러시저 STEP 이름이 생략된 DD가 해당 STEP에서 첫 번째 DD였다면 해당 DD는 프러시저 내의 첫 번째 STEP에서 사용되는 것으로 판단한다. 지정한 프러시저 STEP 이름이 프러시저 내에서 존재하지 않는다면 해당 DD는 사용되지 않는다.
다음은 PSTEP1에서 DD1이, PSTEP2에서 DD2가 사용되는 예제이다.
//JOB1 JOB //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT //PSTEP2 EXEC PGM=TMAXSOFT // PEND //STEP1 EXEC TMAXPROC //PSTEP1.DD1 DD DSN=TMAX.DSN,DISP=SHR //PSTEP2.DD2 DD DSN=TMAX.DSN2,DISP=SHR //
다음은 DD2의 프러시저 STEP 이름이 생략되었으나 DD1의 프러시저 STEP 이름이 PSTEP2이므로 PSTEP2에서 DD2가 사용되는 예제이다.
//JOB1 JOB //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT //PSTEP2 EXEC PGM=TMAXSOFT // PEND //STEP1 EXEC TMAXPROC //PSTEP2.DD1 DD DSN=TMAX.DSN,DISP=SHR //DD2 DD DSN=TMAX.DSN2,DISP=SHR //
다음은 DD1과 DD2의 프러시저 STEP 이름이 생략되어서 TMAXPROC의 첫 번째 STEP인 PSTEP1에서 사용되는 예제이다.
//JOB1 JOB //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT //PSTEP2 EXEC PGM=TMAXSOFT // PEND //STEP1 EXEC TMAXPROC //DD1 DD DSN=TMAX.DSN,DISP=SHR //DD2 DD DSN=TMAX.DSN2,DISP=SHR //
오퍼랜드
다음은 앞에서 언급한 오퍼랜드에 대한 설명이다. 각 오퍼랜드에 대한 자세한 내용은 해당 절의 내용을 참고한다.
-
위치 오퍼랜드
DD 문의 위치 오퍼랜드는 애스터리스크(*), DATA, DUMMY, DYNAM 중 하나만 기술한다.
항목 설명 Instream 데이터의 입력을 지정한다. DLM 오퍼랜드를 사용하면 JCL 문장도 Instream 데이터로 받을 수 있다.
DUMMY 데이터셋을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
키워드 오퍼랜드
항목 설명 OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
레코드 저장 공간의 초기값과 추가값의 단위를 지정한다.
최대블록의 길이를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
데이터셋을 출력할 때 출력 문자와 크기에 대한 설정 테이블을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋의 전체 및 페이지 단위의 복사 횟수를 지정한다.
SMS 데이터 클래스를 지정한다.
Non-VSAM 데이터셋의 DCB(Data Control Block) 정보를 지정한다.
DD 이름을 지정해서 지정된 DD가 나올 때까지 데이터셋의 정의를 미룬다.
SYSOUT 데이터셋의 출력처를 지정한다.
데이터셋의 상태 및 후처리에 대한 설정을 지정한다.
애스터리스크(*) 또는 DATA 오퍼랜드와 함께 사용되며 Instream 데이터의 끝을 나타낼 delimiter를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
데이터셋의 이름을 지정한다.
데이터셋의 형식을 지정한다.
데이터셋에 대한 만료일자를 정한다.
SYSOUT 데이터셋을 출력하는 프린터를 지정하며, 출력할 때 포맷팅이 가능하다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
용지에 일정한 서식, 범위를 미리 인쇄하는 경우에 사용하는 필름 OVERLAY의 식별명, 적용 매수를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋의 출력 보류 여부를 지정한다.
새로운 데이터셋의 키의 길이를 지정한다.
새로운 데이터셋의 키가 시작되는 offset을 지정한다.
데이터셋의 라벨을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
기존의 데이터셋의 속성을 새로이 생성한 데이터셋의 속성에 복사한다. 기존의 데이터셋은 카탈로깅되어 있어야 한다.
새로 생성되는 데이터셋의 레코드의 길이를 지정한다.
SMS 데이터 클래스를 지정한다.
SYSOUT 데이터셋의 COPY 수식 모듈명과 CHARS 오퍼랜드로 지정하는 테이블의 순서번호를 지정한다.
SYSOUT 데이터셋에 출력할 수 있는 최대 레코드 개수를 지정한다.
레퍼런스하기위한 OUTPUT 문을 지정한다.
UNIX 파일의 경로를 지정한다.
PATH 파라미터로 지정된 UNIX 파일의 상태 및 후처리에 대한 설정을 지정한다.
PATH 파라미터로 지정된 UNIX 파일을 생성할 때 사용자별 파일의 접근 권한을 지정한다. 파일의 생성은 PATHOPTS=OCREAT 지정에 의해 실행된다.
PATH 파라미터로 지정된 UNIX 파일의 접근 모드 및 상태를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
데이터셋의 레코드 형식과 특성을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
이전에 설정한 DD의 속성을 레퍼런스한다.
데이터셋의 보존할 기한을 일수로 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
직접 액세스 볼륨에 신규 데이터셋에 대해 공간의 할당을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SMS 스토리지 클래스를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
Instream 데이터에 기호 파라미터를 사용한다.
SYSOUT 데이터셋의 출력 속성을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
데이터셋을 할당할 I/O 디바이스 장치를 지정한다.
데이터셋의 볼륨을 지정한다.
3.1. 애스터리스크(*)와 DATA
Instream 데이터의 입력을 지정한다. DLM 오퍼랜드를 사용하면 JCL 문장도 Instream 데이터로 받을 수 있다. 해당하는 DD 문 이후로 Instream 데이터가 나타나는 것을 의미한다. 그리고 해당 DD는 Instream 데이터의 내용을 가지고 JOB SPOOL에 임시적으로 생성되어서 일반 데이터셋과 동일하게 사용된다.
Instream 데이터는 다음과 같은 경우에 마지막으로 판단한다.
-
단락문이 나타난 경우
-
입력 스트림의 마지막, UNIX 파일로 EOF가 나타난 경우
-
단락문 이외의 제어문이 나타난 경우
-
DLM 오퍼랜드가 지정되었다면 지정한 delimiter가 나타난 경우
다음은 애스터리스크(*)와 DATA의 사용법에 대한 설명이다.
-
사용법
* DATA
-
주의사항
애스터리스크(*)의 경우에는 DLM 오퍼랜드를 사용할 수 없다.
-
예제
다음은 애스터리스크(*)를 사용해 Instream 데이터를 SYSIN으로 사용하는 예제이다.
//SYSIN DD * this is sysin data /*
다음은 제어문이 나타나면 Instream 데이터가 끝났음을 의미하는 예제이다.
//SYSIN DD * this is sysin data //SYSOUT DD SYSOUT=*
3.4. AVGREC
레코드 저장 공간의 초기값과 추가값의 단위를 지정한다.
-
사용법
AVGREC = {U|K|M}
항목 설명 U
값의 단위가 1Byte임을 뜻한다.
K
값의 단위가 1024Bytes임을 뜻한다.
M
값의 단위가 1048576Bytes임을 뜻한다.
SPACE 오퍼랜드의 첫 번째 파라미터가 '레코드 길이’로 지정된 경우에 적용되며 SPACE 오퍼랜드의 초기값과 추가값의 단위로 사용된다.
AVGREC 오퍼랜드가 사용되는 경우 스페이스 할당량은 다음과 같이 계산된다.
초기 스페이스 할당량 = 초기값 * 레코드 길이 * AVGREC로 지정한 단위 추가 스페이스 할당량 = 추가값 * 레코드 길이 * AVGREC로 지정한 단위
-
주의사항
SPACE 오퍼랜드의 첫 번째 파라미터가 TRK나 CYL인 경우 이 오퍼랜드는 무시된다.
-
예제
AVGREC를 M으로 지정한다. 이런 경우 초기 스페이스 할당량은 5 * 100 * 1048576이 되고 추가 스페이스 할당량은 2 * 100 * 1048576이 된다.
//EX1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),SPACE=(100,(5,2)),AVGREC=M
3.5. BLKSIZE
최대 블록의 길이를 지정한다. BLKSIZE 오퍼랜드로 지정할 수 있는 최댓값은 레코드 형식에 관계없이 2097152Bytes이다.
-
사용법
BLKSIZE = {값 | 값K | 값M}
항목 설명 값
0~99999999의 부호 없는 정수를 지정한다.
값K
0~98303의 부호 없는 정수를 지정한다.
값에 1024를 곱한 값을 최대 블록 길이로 정한다.
값M
0~95의 부호 없는 정수를 지정한다.
값에 1024*1024를 곱한 값을 최대 블록 길이로 정한다.
-
주의사항
DCB 오퍼랜드의 파라미터로 BLKSIZE가 지정된 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
예제
BLKSIZE를 4000으로 지정한다.
//EX1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG), // RECFM=FB,LRECL=80,BLKSIZE=4000
3.6. BLKSZLIM
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
BLKSZLIM = {값 | 값K | 값M | 값G}
항목 설명 값
0~2147483648의 부호 없는 정수를 지정한다.
값K
0~2097151의 부호 없는 정수를 지정한다.
값M
0~2047의 부호 없는 정수를 지정한다.
값G
0~1의 부호 없는 정수를 지정한다.
3.9. CHARS
데이터셋을 출력할 때 출력 문자와 크기에 대한 설정 테이블을 지정한다.
-
사용법
CHARS = {테이블명} {(테이블명[,테이블명])} {DUMP} {(DUMP[,테이블명])}
항목 설명 테이블명
데이터셋을 출력할 때 출력 문자와 크기에 대한 설정 테이블을 1~4자리의 영문자와 숫자로 지정한다. 테이블명은 최대 4개까지 지정 가능하다.
DUMP
OpenFrame에서는 DUMP는 지원하지 않는다.
-
주의사항
-
SYSOUT 데이터셋에 대한 출력이 아니면, CHARS 오퍼랜드는 무시된다.
-
OpenFrame에서는 인쇄 출력을 위한 CHAR 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
-
예제
다음은 외부 프린터 모듈에 CHARS=(TBJ1,TBJ2)의 정보를 전달하는 예제이다.
//EX1 DD SYSOUT=A,CHARS=(TBJ1,TBJ2)
3.11. CNTL
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
CNTL = {*.label } {*.stepname.label } {*.stepname.procstepname.label}
항목 설명 label
1~8자의 영문자나 숫자로 지정한다.
3.12. COPIES
SYSOUT 데이터셋의 전체 및 페이지 단위의 복사 횟수를 지정한다.
-
사용법
COPIES = (복사 횟수[,(그룹 복사 횟수[,그룹 복사 횟수]...)])
항목 설명 복사 횟수
SYSOUT 데이터셋의 복사 횟수를 0~255의 부호 없는 정수로 지정한다.
(기본값: 1)
그룹 복사 횟수
SYSOUT 데이터셋의 페이지 단위의 복사 횟수를 0~255의 부호 없는 정수로 지정한다. (기본값: 1)
-
주의사항
-
SYSOUT 데이터셋에 대한 출력이 아니면, COPIES 오퍼랜드는 무시된다.
-
OpenFrame에서는 인쇄 출력을 위한 COPIES 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
-
예제
다음은 외부 프린터 모듈에 COPIES=(2,(2,1))의 정보를 전달하는 예제이다.
//OUTPUT DD SYSOUT=A,COPIES=(2,(2,1))
3.13. DATACLAS
SMS 데이터 클래스를 지정한다. 데이터 클래스를 지정하면 OpenFrame 환경설정 sms 서브젝트에 지정된 데이터 클래스에서 해당 클래스를 찾아서 기술되어 있는 데이터셋 설정을 사용한다.
sms 서브젝트에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다. |
-
사용법
DATACLAS = 클래스명
항목 설명 클래스
데이터 클래스명을 1~8자리의 기호명칭으로 지정한다. 지정하지 않을 경우 기본 값으로 생성된다.
-
주의사항
OpenFrame 환경설정 중 sms 서브젝트에 해당 데이터 클래스가 설정되어 있지 않으면 에러가 발생한다.
-
예제
다음은 데이터 클래스를 DATA01로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),DATACLAS=DATA01
3.14. DCB
Non-VSAM 데이터셋의 DCB(Data Control Block) 정보를 지정한다.
-
사용법
DCB = (dcb 파라미터[,dcb 파라미터]...) DCB = ({데이터셋 이름} [,dcb 파라미터]...) ({*.DD 이름} ) ({*.STEP 이름.DD 이름} ) ({*.STEP 이름.프러시저 STEP 이름.DD 이름} )
-
dcb 파라미터
dcb 파라미터 용도 BFALN={F|D}
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BFTEK={A|S|R|D}
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BLKSIZE={값|값K|값M}
DD 오퍼랜드 BLKSIZE의 설명과 동일하다.
BUFIN=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BUFL=값
0~32760의 부호없는 정수를 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BUFMAX=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BUFNO=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BUFOFF={nn|L}
0~99의 부호없는 정수 혹은 L을 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BUFOUT=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
BUFSIZE=값
31~65535의 부호없는 정수를 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
CPRI={R|E|S}
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
CYLOFL=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
DEN=값
1~4의 부호없는 정수를 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
DIAGNS=TRACE
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
DSORG={PS|PSU|PO|POU|DA|
DAU|IS|ISU}
데이터셋의 구조를 지정한다.
-
PS : 순서 데이터셋이다.
-
PSU : 이동할 수 없는 순서 데이터셋이다.
-
PO : 구분 데이터셋이다.
-
POU : 이동할 수 없는 구분 데이터셋이다.
-
DA : 직접 데이터셋이다.
-
DAU : 이동할 수 없는 직접 데이터셋이다.
-
IS : 색인 데이터셋이다.
-
ISU : 이동할 수 없는 색인 데이터셋이다.
EROPT={ABE|ACC|SKP}
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
FUNC={I|R|P|W|RP|PW|RW}
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
GNCP=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
INTVL=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
IPLTXID=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
KEYLEN=값
DD 오퍼랜드 KEYLEN의 설명과 동일하다.
LIMCT=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
LRECL=레코드길이
DD 오퍼랜드 LRECL의 설명과 동일하다.
MODE={C|E|CO|ER}
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
NCP=값
1~99의 부호없는 정수를 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
NTM=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OPTCD=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
PAGESIZE=값
OpenFrame 한정 사양으로 VSAM 데이터셋을 READ로 읽을 때 한번에 가져올 row 수를 지정한다.
PCI=값
첫 번째 인자에 N,R,A,X로 시작하는 문자열을 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
PRTSP=값
0~3의 부호없는 정수를 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
RECFM=F[B][A|M]
V[B|S|BS][A|M]
L[A|M]
U[A|M]
DD 오퍼랜드 RECFM의 설명과 동일하다.
RESERVE=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
RKP=값
DD 오퍼랜드 KEYOFF의 설명과 동일하다. KEYOFF와 동시에 지정된 경우에는 RKP에 지정된 값이 우선 적용된다.
STACK=값
1~2의 부호없는 정수를 지정한다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
THRESH=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
TRTCH=값
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
-
dcb 파라미터 이외의 항목
항목 설명 데이터셋 이름
지정한 데이터셋의 DCB 속성을 사용할 것을 지정한다.
데이터셋 이름은 세대 데이터 그룹 이름(GDG)과 동일해서는 안 되며 GDG 상대번호 멤버명칭 사용이 불가능하다.
지정된 데이터셋은 카탈로그되어 있어야 한다. OpenFrame에서는 카탈로그되지 않고 단순히 패스(PASS)된 DD 문의 데이터셋 이름으로 참조하는 것은 지원하지 않는다.
*.DD 이름
*.STEP 이름.DD 이름
*.STEP 이름.프러시저 STEP 이름.DD 이름
"*[.STEP 이름[.프러시저 STEP 이름].DD 이름"의 부분을 역방향 참조라고 한다. 동일한 JOB의 선행 DD 문으로 지정된 DCB 속성을 사용할 것을 의미한다.
선행 DD 문의 위치가 선행 JOB STEP인지, 선행 프러시저 STEP인지에 따라서 각각 STEP 이름 또는 STEP 이름과 프러시저 STEP 이름을 지정한다. 역방향 참조가 지정하는 DD가 존재하지 않으면 JOB은 FLUSH로 처리된다.
-
3.15. DDNAME
DD 이름을 지정해서 지정된 DD가 나올 때까지 데이터셋의 정의를 미룬다. 이후 지정된 DD의 데이터셋 설정으로 데이터셋을 정의한다.
DDNAME에 DD 이름이 지정되면 해당 DD는 지정된 DD가 나올 때까지 데이터셋의 정의를 미룬다. 지정된 DD가 나오면 그 시점에 DDNAME을 지정한 DD의 데이터셋 설정을 한다. 그리고 지정된 DD는 실제로는 사용되지 않는다.
주로 프러시저를 호출하는 STEP에서 사용된다. 프러시저 내에서 Instream 데이터를 사용하지 못하기 때문에 프러시저 내의 STEP에서는 DDNAME을 통해서 데이터셋의 정의를 미루고 프러시저를 호출하는 STEP에서 DDNAME에 지정한 DD를 설정해서 사용한다.
다음 JCL에서는 프러시저 내의 STEP인 PSTEP1에서 SYSIN DD 프러시저를 호출하는 STEP인 STEP1의 PSTEP1.OUTSTEP1 DD 속성과 동일하다. TMAXSOFT는 SYSIN으로 Instream 데이터를 받는다.
//JOB1 JOB //PROC1 PROC //PSTEP1 EXEC PGM=TMAXSOFT //SYSIN DD DDNAME=OUTSTEP1 // PEND //STEP1 EXEC PROC1 //PSTEP1.OUTSTEP1 DD * instream data /* //
다음은 DDNAME 오퍼랜드의 사용법이다.
-
사용법
DDNAME = DD 이름
항목 설명 DD 이름
데이터셋 설정을 가져올 DD 이름을 기호 명칭으로 지정한다.
-
주의사항
-
DDNAME 오퍼랜드를 사용한 DD와 DDNAME 오퍼랜드에서 지정한 DD는 같은 STEP 내에 있어야 한다. 프러시저 내의 STEP에서 DDNAME 오퍼랜드를 사용한 경우에는 그 프러시저를 호출하는 STEP에서 DDNAME 오퍼랜드에서 지정한 DD가 해당 STEP에서 사용되는 것으로 인식하므로 같은 STEP 내에 있는 것으로 판단한다.
-
DDNAME 오퍼랜드를 사용한 DD는 DDNAME 오퍼랜드에서 지정한 DD보다 먼저 나와야 한다. 다른 DD에서 역방향 참조를 하게될 때 DDNAME 오퍼랜드에서 지정한 DD는 참조할 수 없다.
-
DDNAME 오퍼랜드에서 지정한 DD는 스페셜 DD 이름을 사용해서는 안 된다. 이 DD는 DDNAME 오퍼랜드를 사용한 DD에서 사용되고는 더 이상 사용되지 않기 때문에 스페셜 DD로의 기능을 수행하지 못한다.
-
DDNAME 오퍼랜드에서 지정한 DD가 존재하지 않을 때에는 DDNAME 오퍼랜드를 사용한 DD는 DUMMY 데이터셋으로 간주한다.
-
-
예제
다음은 SYSOUT DD가 DD2의 내용을 참조하여 SYSOUT 데이터셋이 되는 예제이다. DD2는 참조만 될 뿐 사용되지 않는다.
//STEP1 EXEC PGM=TMAXSOFT //SYSOUT DD DDNAME=DD2 //DD2 DD SYSOUT=*
다음은 STEP2의 IN이 STEP1의 OUT을 역방향으로 참조하는 예제이다. 참조되는 부분은 STEP1의 DD2가 아닌 STEP1의 OUT이다.
//STEP1 EXEC PGM=TMAXSOFT //OUT DD DDNAME=DD2 //DD2 DD DSN=TEST.DATASET,DISP=(NEW,PASS) //STEP2 EXEC PGM=TMAXSOFT //IN DD DSN=*.STEP1.OUT,DISP=(OLD,DELETE) //
3.16. DEST
SYSOUT 데이터셋의 출력처를 지정한다.
-
사용법
DEST = 출력처
항목 설명 출력처
SYSOUT 데이터셋의 출력처를 지정한다.
-
주의사항
-
SYSOUT 데이터셋에 대한 출력이 아니면, DEST 오퍼랜드는 무시된다.
-
OpenFrame에서는 인쇄 출력을 위한 DEST 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
-
예제
다음은 외부 프린터 모듈에 DEST=LOCAL의 정보를 전달하는 예제이다.
//EX1 DD SYSOUT=A,DEST=LOCAL
3.17. DISP
데이터셋의 상태 및 후처리에 대한 설정을 지정한다.
-
사용법
DISP = ([NEW] [,DELETE] [,DELETE]) [OLD] [,KEEP] [,KEEP]) [SHR] [,PASS] [,CATLG]) [MOD] [,CATLG] [,UNCATLG]) [,] [,UNCATLG] [,]
-
파라미터 1
데이터셋 상태를 지정한다.
항목 설명 NEW
데이터셋이 해당 JOB STEP에서 새롭게 작성되는 것을 나타낸다.
OLD
데이터셋이 해당 JOB STEP 이전에 이미 존재하고 있는 것을 나타낸다.
SHR
데이터셋이 해당 JOB STEP 이전에 이미 존재하고 있는 것을 나타낸다. 또한 다른 JOB으로부터 동시에 사용되는 것을 허용한다.
MOD
데이터셋을 확장(추가 쓰기)하는 것을 나타낸다. 순서 데이터셋을 출력으로 Open하면 그대로 추가 쓰기를 할 수 있다.
MOD 파라미터를 지정했을 경우 VOLUME 오퍼랜드로 SER 파라미터 또는 REF 파라미터가 지정되면 이미 데이터셋이 작성되어 있는 것으로서 처리한다.
VOLUME 오퍼랜드로 상기 지정이 없는 경우 지정한 데이터셋이 패스(PASS)되어 있거나 카탈로그되어 있는 경우에 이미 데이터셋이 작성되어 있는 것으로 간주한다. 그 이외의 경우에는 NEW 파라미터 지정으로 간주된다.
-
파라미터 2
JOB STEP이 정상 종료했을 때(ABEND가 아닌 경우) 데이터셋의 후처리 방법을 지정한다.
항목 설명 DELETE
해당 JOB STEP이 종료된 후 데이터셋을 삭제한다.
볼륨 정보를 카탈로그로부터 얻었을 경우 DELETE 처리가 정상적으로 종료했을 때에 한해 카탈로그에서 삭제된다.
KEEP
데이터셋을 보존한다. VSAM 데이터셋이 새로 생성되는 경우에는 자동으로 카탈로깅까지 진행한다. 단, 데이터셋을 작성한 JOB STEP이 이상 종료(ABEND)했을 경우 파라미터 3의 DELETE 파라미터 지정이 있으면 삭제된다.
PASS
JOB STEP 사이의 데이터셋을 사용한 후 해당 데이터셋을 후속 JOB STEP으로 전달한다. 후속 JOB STEP에서 전달된 데이터셋을 받는 경우 전달된 데이터셋을 받는 DD 문에 VOLUME 오퍼랜드의 SER 파라미터 또는 REF 파라미터를 지정해서는 안 된다.
PASS 파라미터가 지정된 데이터셋을 받을 수 있는 것은 후속 JOB STEP에서 한 번만 가능하다. 따라서 데이터셋을 받은 후 한 번 더 후속 JOB STEP에 전달하려는 경우에는 매번 DISP 오퍼랜드로 PASS 파라미터를 지정해야 한다.
하나의 JOB 중에서 같은 데이터셋 이름을 가진 데이터셋이 여러 개 있는 경우 특정 시점에서 복수의 데이터셋을 전달해서는 안 된다. VSAM 데이터셋은 전달할 수 없다.
CATLG
데이터셋을 JOB STEP 종료할 때 카탈로그한다. 시스템이 카탈로그를 참조하여 데이터셋을 할당한 경우 CATLG 파라미터의 지정이 있으면 재카탈로그한다.
UNCATLG
JOB STEP이 종료할 때 데이터셋을 보존하지만 카탈로그로부터 카탈로그 정보를 삭제한다.
-
파라미터 3
JOB STEP이 이상 종료(ABEND)했을 경우의 데이터셋 처리를 지정한다. 지정할 수 있는 파라미터는 파라미터 2의 PASS 파라미터를 제외하고는 파라미터 2와 동일하다.
-
-
주의사항
-
파라미터 1만 지정하는 경우 괄호로 처리할 필요가 없다.
-
DISP 오퍼랜드를 생략하면 DISP=(NEW,DELETE,DELETE)로 처리된다.
-
파라미터 1의 지정을 생략하고 파라미터 2를 지정했을 경우 파라미터 1로서 NEW가 지정된다.
-
파라미터 1만 지정하고 나머지를 생략하면 파라미터 1이 NEW인 경우는 파라미터 2와 3은 DELETE로, 파라미터 1이 NEW가 아닌 경우는 파라미터 2와 3은 KEEP으로 지정한 것과 같다.
-
파라미터 3을 생략하면 파라미터 2에 지정한 항목을 파라미터 3에 지정한 것과 같다.
-
임시 데이터셋을 지정할 때에 DISP 오퍼랜드의 파라미터 3에 어떤 파라미터를 지정하더라도 내부적으로 PASS 파라미터로 간주하여 처리한다.
-
VSAM 데이터셋에 대해서는 파라미터 2와 3을 DELETE로 지정하지 않은 경우는 모두 KEEP으로 지정한 것과 같다.
-
-
예제
다음은 직접 액세스 볼륨에 임시 데이터셋을 작성해서 JOB STEP을 종료할 때 삭제하는 예제이다.
//TEMP DD UNIT=DISK,SPACE=(TRK,(5,1))
다음은 일련번호가 333333인 볼륨에 작성되어 있는 데이터셋 ORG.SOURCE.TEST의 배타적인 사용을 요청하는 예제이다. JOB STEP이 종료될 때 데이터셋을 카탈로그한다.
//DD1 DD DSN=ORG.SOURCE.TEST,UNIT=8598, // DISP=(OLD,CATLG), // VOL=SER=333333
다음은 이미 카탈로그되어 있는 데이터셋 ORG.LIB의 배타적인 사용을 요청하는 예제이다. JOB STEP이 종료될 때 데이터셋을 삭제한다. 데이터셋이 삭제될 뿐만 아니라, 카탈로그에서도 제거된다.
//DD2 DD DSN=ORG.LIB.DISP=(OLD,DELETE)
3.18. DLM
DATA 오퍼랜드와 함께 사용되며 Instream 데이터의 끝을 나타낼 delimiter를 지정한다.
보통 Instream 데이터의 끝을 의미하는 단락문은 "/*"로 지정한다. 하지만 이 경우 Instream 데이터로 "/*"나 "//"로 시작하는 데이터를 사용할 수가 없게 된다. 하지만 DLM 오퍼랜드를 통해 단락기호를 "/*"가 아닌 다른 것으로 지정하면 Instream 데이터로 "/*"나 "//"로 시작하는 데이터 즉, JES2 JCL 제어문이나 JCL 제어문도 사용할 수 있게 된다.
-
사용법
DLM = 단락기호
항목 설명 단락기호
Instream 데이터의 끝을 의미하는 문자를 2자리의 인용 캐릭터 라인으로 지정한다.
-
예제
다음은 단락기호를 AA로 지정하여 DD1의 Instream 데이터로 OS JCL이 사용 가능한 예제이다.
//DD1 DD DATA,DLM=AA //JOB1 JOB --| //STEP1 EXEC PGM=TMAXSOFT | ---> DD1의 Instream 데이터 // --| AA //DD2 ...
3.19. DSID
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
DSID = {id} {(id[,V])}
항목 설명 id
8자리 이내의 기호명칭을 지정한다.
3.20. DSNAME/DSN
데이터셋의 이름을 지정한다. DSNAME과 DSN이 동시에 지정된 경우 DSNAME에 지정된 내용이 사용된다. "&&"로 시작하면 임시 데이터셋을 의미하고, 애스터리스크(*)로 시작하면 이전에 선언된 DD의 데이터셋 이름을 그대로 사용한다는 것을 의미한다.
-
사용법
{DSNAME | DSN} = {데이터셋 이름 } {데이터셋 이름(멤버명) } {데이터셋 이름(세대번호) } {&&데이터셋 이름 } {*.DD 이름 } {*.STEP 이름.DD 이름 } {*.STEP 이름.프러시저 STEP 이름.DD 이름}
항목 설명 데이터셋 이름
DD에서 사용할 데이터셋의 이름을 기호명칭으로 지정한다.
데이터셋 이름은 "기호명칭[.<기호명칭>]…" 형식으로 최대 44자리까지 기술한다. 하나의 기호명칭은 최대 8자리이다. 세대그룹 데이터셋(GDG)은 최대 35자리까지이다. 데이터셋 이름에는 @,#,$ 를 제외한 특수문자 사용이 불가능하다.
멤버명
데이터셋의 멤버명을 데이터셋과 함께 지정한다. 1~8자리의 기호명칭으로 지정한다. 데이터셋 멤버명에는 @,#,$ 를 제외한 특수문자 사용이 불가능하다.
세대번호
세대그룹 데이터셋의 세대번호를 부호와 함께 지정한다.
부호가 생략되면 플러스(+)로 간주한다. 세대번호는 세대그룹 데이터셋의 최대 세대번호를 넘겨서는 안 된다. 세대그룹 데이터셋에 대한 내용은 OpenFrame Base "데이터셋 안내서"를 참고한다.
&&데이터셋 이름
해당 JOB에서만 임시적으로 사용할 데이터셋을 지정한다.
임시 데이터셋은 기본적으로 자리수를 차지하고 있기 때문에 데이터셋 이름을 너무 길게 작성하면 에러가 발생할 수가 있다. 그래서 임시 데이터셋으로 작성하는 데이터셋은 데이터셋을 점(.) 없이 <기호명칭> 정도로만 작성하는것을 권장한다. 임시 데이터셋 관련된 자세한 내용은 표 이후에 설명한다.
*.DD 이름
*.STEP 이름.DD 이름
*.STEP 이름.프러시저 STEP 이름.DD 이름
"*[.STEP 이름[.프러시저 STEP 이름].DD 이름"의 부분을 역방향 참조라고 한다. 동일한 JOB의 선행 DD 문으로 지정된 데이터셋 이름을 사용할 것을 의미한다. 선행 DD 문의 위치가 선행 JOB STEP인지, 선행 프러시저 STEP인지에 따라서 각각 STEP 이름 또는 STEP 이름과 프러시저 STEP 이름을 지정한다.
역방향 참조가 지정하는 DD가 존재하지 않으면 JOB은 FLUSH로 처리된다.
다음은 앞에서 설명한 "&&데이터셋 이름"과 관련된 임시 데이터셋 설명이다. 임시 데이터셋은 다음과 같은 형식으로 만들어진다.
-
"&&데이터셋 이름"인 경우
SYSyyddd.Thhmmss.RA000.jobname.데이터셋 이름.Hgg
항목 설명 yyddd
JOB 실행 일자이다.
hhmmss
JOB 실행 시간이다.
jobname
JOB 이름이다.
gg
01이다.
-
DSN 오퍼랜드가 생략된 경우
SYSyyddd.Thhmmss.RA000.jobname.Rggnnnn
항목 설명 yyddd
JOB 실행 일자이다.
hhmmss
JOB 실행 시간이다.
jobname
JOB 이름이다.
nnnn
DD 테이블 순번으로 JOB 내에서는 유일한 번호이다.
-
"&&데이터셋 이름"이면서 SYSOUT 데이터셋인 경우
jobid(userid.jobname.jobid.Dnnnnnn.데이터셋 이름)
항목 설명 userid
해당 JOB의 사용자명이다.
jobname
JOB 이름이다.
jobid
해당 JOB의 JOBID이다. (JOB00001 ~ JOB99999)
nnnnnn
DD 테이블 순번으로 JOB 내에서는 유일한 번호이다.
-
DSN 오퍼랜드가 생략되었고 SYSOUT 데이터셋인 경우
jobid(userid.jobname.jobid.Dnnnnnn)
항목 설명 userid
해당 JOB의 사용자명이다.
jobname
JOB 이름이다.
jobid
해당 JOB의 JOBID이다. (JOB00001 ~ JOB99999)
nnnnnn
DD 테이블 순번으로 JOB 내에서는 유일한 번호이다.
-
"&&데이터셋 이름"이면서 Instream 데이터셋인 경우
jobid(userid.jobname.jobid.Dnnnnnn.데이터셋 이름)
항목 설명 userid
해당 JOB의 사용자명이다.
jobname
JOB 이름이다.
jobid
해당 JOB의 JOBID이다. (JOB00001 ~ JOB99999)
nnnnnn
DD 테이블 순번으로 JOB 내에서는 유일한 번호이다.
-
DSN 오퍼랜드가 생략되었거나 "&&데이터셋 이름" 형식이 아니면서 Instream 데이터셋인 경우
jobid(userid.jobname.jobid.Dnnnnnn)
항목 설명 userid
해당 JOB의 사용자명이다.
jobname
JOB 이름이다.
jobid
해당 JOB의 JOBID이다. (JOB00001 ~ JOB99999)
nnnnnn
DD 테이블 순번으로 JOB 내에서는 유일한 번호이다.
-
-
주의사항
-
DSN 오퍼랜드를 생략하면 해당 DD는 임시 데이터셋을 사용하는 것으로 판단하지만 데이터셋의 상태를 NEW 또는 MOD로 지정하지 않으면 볼륨을 할당하려는 것으로 판단한다.
-
DSN 오퍼랜드가 있는데 "&&데이터셋 이름" 형식이 아니면서 SYSOUT 데이터셋이면 JOB은 FLUSH가 발생한다.
-
SYSOUT 데이터셋은 DD 문의 SYSOUT 오퍼랜드에서 클래스 또는 애스터리스크(*)가 지정되어 있는 경우를 의미한다.
-
-
예제
다음은 데이터셋을 TMAX.DATASET으로 지정하는 예제이다.
//DD1 DD DSN=TMAX.DATASET,DISP=SHR
다음은 데이터셋의 길이가 44자리를 넘으면 문법 에러가 발생하는 예제이다.
//DD1 DD DSN=TMAX.DATASET.OVERFLOW.LENGTH.COLUMN44.ISOCCUR.PARSE.ERROR
다음은 데이터셋과 멤버를 지정하는 예제이다.
//DD1 DD DSN=TMAX.PDSLIB(DATASET),DISP=(NEW,DELETE,DELETE)
다음은 세대 데이터셋을 지정하는 예제이다.
//DD1 DD DSN=TMAX.GDG(+1),DISP=(NEW,DELETE,DELETE)
다음은 임시 데이터셋을 지정하는 예제이다.
//DD1 DD DSN=&&TEMP,DISP=(NEW,PASS)
다음은 임시 데이터셋을 SYSOUT 데이터셋으로 지정하는 예제이다.
//DD1 DD DSN=&&TEMP,SYSOUT=*
다음은 DSN 오퍼랜드를 생략하는 예제이다.
//DD1 DD DISP=(NEW,PASS)
다음은 STEP의 데이터셋 이름을 레퍼런스로 하는 예제이다. 예제에서 DD2의 데이터셋 이름은 TMAX.DATASET이 된다.
//DD1 DD DSN=TMAX.DATASET,DISP=SHR //DD2 DD DSN=*.DD1,DISP=SHR
다음은 이전 STEP의 데이터셋 이름을 레퍼런스로 하는 예제이다. 예제에서 STEP2 DD1의 데이터셋 이름은 TMAX.DATASET이 된다.
//STEP1 EXEC PGM=TMAXSOFT //DD1 DD DSN=TMAX.DATASET,DISP=SHR //STEP2 EXEC PGM=TMAXSOFT //DD1 DD DSN=*.STEP1.DD1,DISP=SHR
다음은 이전 프러시저 STEP의 데이터셋 이름을 레퍼런스로 하는 예제이다. 예제에서 STEP2 DD1의 데이터셋 이름은 TMAX.DATASET이 된다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT //PDD1 DD DSN=TMAX.DATASET // PEND //STEP1 EXEC TMAXPROC //STEP2 EXEC PGM=TMAXSOFT //DD1 DD DSN=*.STEP1.PSTEP1.PDD1
3.21. DSNTYPE
데이터셋의 형식을 지정한다.
-
사용법
DSNTYPE = {LIBRARY|HFS|PDS|PIPE|EXTREQ|EXTPREF|LARGE|BASIC}
항목 설명 LIBRARY
데이터셋의 DSORG를 PO로 설정한다.
PDS
데이터셋의 DSORG를 PS로 설정한다.
OpenFrame에서는 LIBRARY와 PDS만을 지원한다.
-
주의사항
DD 오퍼랜드 DSORG가 지정이 되면 이 오퍼랜드는 무시된다.
-
예제
다음은 DSNTYPE을 PDS로 지정하는 예이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),DSNTYPE=PDS
3.22. DUMMY
해당하는 데이터셋이 DUMMY 데이터셋임을 의미한다. DUMMY 데이터셋으로 지정된 DD에는 어떤 데이터를 기록해도 실제 기록하지 않고 버리게 된다.
DSNAME=NULLFILE을 설정하면 DUMMY를 설정한 것과 같은 기능을 한다.
-
사용법
DUMMY
-
예제
다음은 SYSOUT을 DUMMY로 설정하는 예제이다.
//SYSOUT DD DUMMY
3.24. EXPDT
데이터셋에 대한 만료일자를 정한다. 데이터셋을 작성할 경우 지정만 유효하다.
-
사용법
EXPDT = {yyddd|yyyy/ddd}
항목 설명 {yyddd}
-
yy : 년도의 뒷자리 2자리를 기록한다. (범위: 0 ~ 99, 1900년대로 인식)
-
ddd : 날짜를 기록한다. (범위: 1~ 366)
{yyyy/ddd}
-
yyyy : 년도를 지정한다. (범위: 1900 ~ 2099)
-
ddd : 날짜를 기록한다. (범위: 1~ 366)
EXPDT =99365 또는 EXPDT =1999/365을 지정했을 경우 영구 보존으로 처리된다.
-
-
주의사항
-
LABEL 오퍼랜드에서 EXPDT를 지정한 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
OpenFrame에서는 데이터셋 보존의 만료일자 경과 이전에 추가 수정이나 삭제를 방지하는 기능은 지원하지 않는다. 만료일자가 경과한 경우 시스템이 해당 데이터셋을 자동 삭제하는 기능만 제공된다.
-
-
예제
다음은 데이터셋의 만료일자를 2010년 12월 31일로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),EXPDT=2010/365
3.25. FCB
SYSOUT 데이터셋을 출력하는 프린터를 지정하며, 출력할 때 포맷팅이 가능하다.
-
사용법
FCB = fcb-name
항목 설명 fcb-name
0~4자리의 기호명칭이다.
3.27. FLASH
용지에 일정한 서식, 범위를 미리 인쇄하는 경우에 사용하는 필름 OVERLAY의 식별명, 적용 매수를 지정한다.
-
사용법
FLASH = (필름 식별명〔,적용 매수〕)
항목 설명 필름 식별명
프린터가 출력을 개시하기 전에 오퍼레이터가 설정하는 필름 OVERLAY의 식별명을 1~4의 문자로 지정한다.
적용 매수
지정한 필름 OVERLAY를 적용해 복사하는 매수를 0~255의 부호 없는 정수로 지정한다. (기본값: 255)
-
주의사항
-
SYSOUT 데이터셋에 대한 출력이 아니면, FLASH 오퍼랜드는 무시된다.
-
OpenFrame에서는 인쇄 출력을 위한 FLASH 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
-
예제
다음은 외부 프린터 모듈에 FLASH=(FLM1,2)의 정보를 전달하는 예제이다.
//EXF1 DD SYSOUT=A,FLASH=(FLM1,2)
3.29. HOLD
SYSOUT 데이터셋의 출력 보류 여부를 지정한다.
-
사용법
HOLD = {YES | Y | NO | N}
항목 설명 YES(Y)|NO(N)
SYSOUT 데이터셋의 출력 보류 여부를 지정한다.
-
YES: SYSOUT 데이터셋의 출력 설정을 HOLD로 한다.
-
NO: SYSOUT 데이터셋의 출력 설정을 WRITE로 한다.
-
-
주의사항
SYSOUT 데이터셋에 대한 출력이 아니면, HOLD 오퍼랜드는 무시된다.
-
예제
다음은 SYSOUT 데이터셋의 출력 상태를 HOLD로 지정하는 예이다.
//SYSOUT DD SYSOUT=A,HOLD=YES
3.30. KEYLEN
새로운 데이터셋의 키의 길이를 지정한다. KEYLEN은 ISAM 데이터셋을 생성할 때만 유효하다.
-
사용법
KEYLEN = 값
항목 설명 값
데이터셋 키의 길이이다. 1~255의 값을 가지며, 레코드 길이 이하여야 한다.
-
주의사항
-
ISAM 데이터셋이 아닌 경우 해당 오퍼랜드는 무시된다.
-
DCB 오퍼랜드의 파라미터로 KEYLEN이 지정된 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
-
예제
다음은 ISAM 데이터셋의 KEYLEN을 10으로 지정하는 예제이다.
//DD1 DD DSN=ISAM.NEW.DATASET,DISP=(NEW,CATLG), // KEYLEN=10,DCB=(RECFM=FB,DSORG=IS,LRECL=72)
3.31. KEYOFF
새로운 데이터셋의 키가 시작되는 offset을 지정한다. KEYOFF는 ISAM 데이터셋을 생성할 때만 유효하다.
-
사용법
KEYOFF = 값
항목 설명 값
0~32760의 부호 없는 정수를 지정한다.
-
주의사항
-
ISAM 데이터셋이 아닌 경우 해당 오퍼랜드는 무시된다.
-
DCB 오퍼랜드의 파라미터로 KEYOFF가 지정된 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
-
예제
다음은 ISAM 데이터셋의 KEYOFF를 20으로 지정하는 예제이다.
//DD1 DD DSN=ISAM.NEW.DATASET,DISP=(NEW,CATLG), // KEYLEN=10,KEYOFF=20,DCB=(RECFM=FB,DSORG=IS,LRECL=72)
3.32. LABEL
데이터셋의 라벨을 지정한다.
-
사용법
LABEL = ([데이터셋 순서번호][,AL] [,PASSWORD][,IN] [,EXPDT={yyyy/ddd}]) [,AUL][,NOPWREAD][,OUT] {yyddd} [,BLP][,] [,] [,RETPD=nnnn] [,LTM] [,NL] [,NSL] [,SL] [,SUL] [,]
항목 설명 데이터셋 순서번호
0~9999의 부호 없는 정수를 지정한다. 지정한 데이터셋의 볼륨이 테이프 볼륨이고, OpenFrame 환경설정의 ds 서브젝트 DATASET_DEFAULT 섹션 USE_TAPE_FILESEQ 키의 값이 'YES’인 경우에 유효하다.
EXPDT={yyyy/ddd} | {yyddd}
데이터셋의 만료일자를 지정한다.
데이터셋을 작성할 경우 지정만 유효하다. 지정된 날이 지나지 않은 경우 데이터셋을 추가 수정하거나 삭제할 수 없다.
-
yyyy : 년도를 지정한다. (범위: 1900 ~ 2099)
-
yy : 년도의 뒷자리 2자리를 기록한다. (범위: 0 ~ 99, 1900년대로 인식)
-
ddd : 날짜를 기록한다. (범위: 1~ 366)
EXPDT=99365 또는 EXPDT=1999/365을 지정했을 경우 영구 보존으로 처리된다.
RETPD=nnnn
데이터셋의 보존할 기한을 일수로 지정한다. 데이터셋을 작성할 경우 지정만 유효하다.
-
nnnn : 0~9999의 부호 없는 정수로 지정한다. 0을 지정할 경우 NONE으로 설정되고 9999 지정할 경우 1999년 12/31일로 지정된다.
만료일자가 서기 1999년 365일이 되는 값을 지정한 경우도 영구 보존으로 처리된다.
OpenFrame에서는 데이터셋 순서번호, EXPDT와 RETPD 파라미터를 지원한다. 나머지 파라미터에 대해서는 문법오류만 검사하고 사용하지 않기 때문에 본 안내서에서는 언급하지 않는다.
-
-
주의사항
-
OpenFrame에서는 데이터셋 보존의 만료일자 경과 이전에 추가 수정이나 삭제를 방지하는 기능은 지원하지 않는다.
-
만료일자가 경과한 경우 시스템이 해당 데이터셋을 자동 삭제하는 기능만 제공된다.
-
-
예제
다음은 새로운 데이터셋 TMAX.PRESERVE를 자기테이프 볼륨에 작성하고 영구 보존할 것을 지정하는 예제이다.
//DD2 DD DSN=TMAX.PRESERVE,UNIT=848X-1, // DISP=(,KEEP),VOL=SER=111111, // LABEL=EXPDT=99365
3.33. LGSTREAM
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
LGSTREAM = 값
항목 설명 데이터셋 이름
점(.) 문자를 제외한 26자 이내의 기호명칭을 지정한다.
3.34. LIKE
기존의 데이터셋의 속성을 새로이 생성한 데이터셋의 속성에 복사한다. 기존의 데이터셋은 카탈로깅되어 있어야 한다. LIKE 파라미터로 인해 복사되는 속성은 DSORG, RECFM, KEYLEN, LRECL, BLKSIZE, 그리고 SPACE 파라미터에 관련된 속성값들이 복사된다.
-
사용법
LIKE = 데이터셋 이름
항목 설명 데이터셋 이름
1~8자리의 기호명칭으로 지정한다. 또는 최대 44자리의 "기호명칭[.기호명칭]" 형식으로 지정한다.
-
주의사항
지정한 데이터셋이 카탈로깅되어 있지 않으면 에러가 발생한다.
-
예제
다음은 신규 데이터셋의 속성을 LIKE.DATASET의 속성에서 가져오는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),LIKE=LIKE.DATASET
3.35. LRECL
새로 생성되는 데이터셋의 레코드의 길이를 지정한다.
레코드 형식이 고정길이 블록 레코드이거나 스팬(Span) 레코드인 경우 반드시 지정해야 한다. 스팬 레코드가 아닌 경우LRECL 오퍼랜드로 지정한 레코드 길이는 BLKSIZE 오퍼랜드로 지정한 블록 길이를 넘을 수 없다. 각 레코드 형식에서 지정할 수 있는 최댓값은 고정길이 혹은 길이 미지정 레코드에 대해서는 32760Bytes이다.
다음은 레코드 형식별 레코드 길이를 지정하는 방법이다.
-
레코드 길이를 지정한다.
RECFM={F|FB}
-
최대 레코드 길이를 지정한다. 4Bytes RDW를 포함한 길이이다.
RECFM={V|VB|VS|VBS}
-
최대 레코드 길이를 지정한다.
RECFM=U
다음은 LRECL 오퍼랜드의 사용법이다.
-
사용법
LRECL = 값
항목 설명 값
데이터셋의 레코드의 길이이며, 0~32760의 부호 없는 정수로 지정한다.
-
주의사항
-
DCB 오퍼랜드의 파라미터로 LRECL이 지정된 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
Non-VSAM 데이터셋에 대해서는 최댓값이 32760이다.
-
-
예제
다음은 레코드의 길이를 70으로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),LRECL=70,DCB=(RECFM=FB)
3.36. MGMTCLAS
SMS 매니지먼트 클래스를 지정한다. 매니지먼트 클래스를 지정하면 OpenFrame 환경설정 sms 서브젝트에 지정된 매니지먼트 클래스에서 해당 클래스를 찾아서 기술되어 있는 데이터셋의 매니지먼트 관련 설정을 사용하게 된다.
sms 서브젝트에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다. |
-
사용법
MGMTCLAS = 클래스명
항목 설명 클래스명
매니지먼트 클래스명을 1~8자리의 기호명칭으로 지정한다. 지정하지 않을 경우 기본값으로 지정된다.
-
주의사항
OpenFrame 환경설정 중 sms 서브젝트에 해당 매니지먼트 클래스가 설정이 되어있지 않으면 에러가 발생한다.
-
예제
다음은 매니지먼트 클래스명를 MGMT01로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),MGMTCLAS=MGMT01
3.37. MODIFY
SYSOUT 데이터셋의 COPY 수식 모듈명과 CHARS 오퍼랜드로 지정하는 테이블의 순서번호를 지정한다.
-
사용법
MODIFY = (모듈명[,테이블번호])
항목 설명 모듈명
COPY 수식 모듈명을 1~4자리의 점(.) 문자를 제외한 기호명칭으로 지정한다.
테이블번호
CHARS 오퍼랜드로 지정된 테이블 중의 순서번호를 0~3의 숫자로 지정한다.
-
주의사항
-
SYSOUT 데이터셋에 대한 출력이 아니면 MODIFY 오퍼랜드는 무시된다.
-
OpenFrame에서는 인쇄 출력을 위한 MODIFY 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
-
예제
다음은 외부 프린터 모듈에 CHARS=(TBJ0,TBJ1), MODIFY=(TLE2,2)의 정보를 전달하는 예제이다.
//OUT1 DD SYSOUT=A,CHARS=(TBJ0,TBJ1), // MODIFY=(TLE2,2)
3.38. OUTLIM
SYSOUT 데이터셋에 출력할 수 있는 최대 레코드 개수를 지정한다. JCL에 OUTLIM이 없으면 OpenFrame 환경설정에 tjclrun 서브젝트, DD 섹션의 OUTLIM 키의 VALUE 항목이 적용된다.
tjclrun 서브젝트에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다. |
-
사용법
OUTLIM = 값
항목 설명 값
0~16777215의 부호 없는 정수로 지정한다.
-
주의사항
OUTLIM을 0으로 설정하면 무제한을 의미한다.
3.39. OUTPUT
레퍼런스하기 위한 OUTPUT 문을 지정한다. OUTPUT 오퍼랜드를 사용하여 OUTPUT 문을 레퍼런스하면 해당 OUTPUT 문에서 지정한 설정으로 출력 처리를 한다. 또한 OUTPUT 문을 여러 개 레퍼런스하면 하나의 SYSOUT 데이터셋을 레퍼런스한 각각의 OUTPUT 문의 설정에 따라서 각각 출력 처리를 한다.
-
사용법
OUTPUT = (레퍼런스[,레퍼런스]...)
항목 설명 레퍼런스
레퍼런스는 아래와 같이 세가지 형태로 지정할 수 있다.
-
*.명칭 : 레퍼런스할 OUTPUT 문이 JOB 문과 첫 번째 STEP문 사이에 있는 경우 또는 같은 STEP 내에 있는 경우 해당 OUTPUT 문의 명칭을 지정한다.
-
*.STEP명.명칭 : 레퍼런스할 OUTPUT 문이 다른 STEP 내에 있는 경우 STEP명과 함께 해당 OUTPUT 문의 명칭을 지정한다.
-
*.STEP명.프러시저 STEP명.명칭 : 레퍼런스할 OUTPUT 문이 STEP 내의 프러시저 STEP 내에 있는 경우 STEP명과 함께 해당 OUTPUT 문의 명칭을 지정한다.
-
-
주의사항
레퍼런스할 OUTPUT 문이 존재하지 않는 경우 에러가 발생한다.
-
예제
다음은 OUTPUT 문을 레퍼런스하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //OUT1 OUTPUT COPIES=5,OUTDISP=WRITE //STEP1 EXEC PGM=TMAXTEST //OUT2 OUTPUT COPIES=3,OUTDISP=HOLD //OUTDD1 DD SYSOUT=*,OUTPUT=(*.OUT1,*.OUT2) //SYSOUT DD SYSOUT=* //STEP2 EXEC PGM=TMAXTEST //OUTDD2 DD SYSOUT=*,OUTPUT=*.STEP1.OUT2 //SYSOUT DD SYSOUT=* //
위의 예제의 경우 OUTDD1 SYSOUT 데이터셋은 OUT1과 OUT2를 레퍼런스를 해서 OUT1의 설정으로 1개, OUT2의 설정으로 1개 출력 처리를 한다. OUTDD2 SYSOUT 데이터셋은 STEP1의 OUT2를 레퍼런스해서 OUT2의 설정으로 출력 처리를 한다. 결과적으로 위의 JCL은 OUTDD1 2개, OUTDD2 1개, 각각 STEP의 SYSOUT에서 1개씩해서 5개의 출력 처리를 한다.
3.41. PATHDISP
PATH 파라미터로 지정된 UNIX 파일의 상태 및 후처리에 대한 설정을 지정한다. TSO 커맨드 OCOPY 문을 사용하는 경우에만 동작한다.
-
사용법
PATHDISP = ([KEEP][,KEEP] ) ([DELETE][,DELETE])
-
파라미터 1
JOB STEP이 정상 종료했을 때(ABEND가 아닌 경우) 파일의 후처리 방법을 지정한다. 지정하지 않은 경우 기본값은 양쪽 모두 KEEP이다.
항목 설명 DELETE
해당 JOB STEP이 종료된 후 파일을 삭제한다.
KEEP
파일을 보존한다.
-
파라미터 2
JOB STEP이 이상 종료(ABEND)했을 경우의 파일 처리를 지정한다.
항목 설명 DELETE
해당 JOB STEP이 종료된 후 파일을 삭제한다.
KEEP
파일을 보존한다.
-
3.42. PATHMODE
PATH 파라미터로 지정된 UNIX 파일을 생성할 때 사용자별 파일의 접근 모드를 지정한다. 파일의 생성은 PATHOPTS=OCREAT 지정에 의해 실행된다. TSO 커맨드 OCOPY 문을 사용하는 경우에만 동작한다.
-
사용법
PATHMODE = {file-access-attribute} | {(file-access-attribute[,file-access-attribute]...)}
항목 설명 file-access-attribute
file-access-attribute는 클래스 종류별로 아래와 같이 지정할 수 있다.
-
소유자 클래스
-
SIRUSR : 파일 소유자에게 파일에 대한 읽기 권한을 준다.
-
SIWUSR : 파일 소유자에게 파일에 대한 쓰기 권한을 준다.
-
SIXUSR : 파일이 디렉터리인 경우 파일 소유자에게 검색 권한을 준다. 디렉터리가 아닌 경우 파일 소유자에게 실행 권한을 준다.
-
SIRWXU : 파일이 디렉터리인 경우 파일 소유자에게 읽기, 쓰기, 검색 권한을 준다. 디렉터리가 아닌 경우 파일 소유자에게 읽기, 쓰기, 실행 권한을 준다.
-
-
그룹 클래스
-
SIRGRP : 파일 그룹 클래스의 사용자에게 파일에 대한 읽기 권한을 준다.
-
SIWGRP : 파일 그룹 클래스의 사용자에게 파일에 대한 쓰기 권한을 준다.
-
SIXGRP : 파일이 디렉터리인 경우 파일 그룹 클래스의 사용자에게 파일에 대한 검색 권한을 준다. 디렉터리가 아닌 경우 파일 그룹 클래스의 사용자에게 실행 권한을 준다.
-
SIRWXG : 파일이 디렉터리인 경우 파일 그룹 클래스의 사용자에게 읽기, 쓰기, 검색 권한을 준다. 디렉터리가 아닌 경우 파일 그룹 클래스의 사용자에게 읽기, 쓰기, 실행 권한을 준다.
-
-
그 외 클래스
-
SIROTH : 그 외 클래스의 사용자에게 파일에 대한 읽기 권한을 준다.
-
SIWOTH : 그 외 클래스의 사용자에게 파일에 대한 쓰기 권한을 준다.
-
SIXOTH : 파일이 디렉터리인 경우 그 외 클래스의 사용자에게 파일에 대한 검색 권한을 준다. 디렉터리가 아닌 경우 그 외 클래스의 사용자에게 실행 권한을 준다.
-
SIRWXO : 파일이 디렉터리인 경우, 그 외 클래스의 사용자에게 읽기, 쓰기, 검색 권한을 준다. 디렉터리가 아닌 경우 그 외 클래스의 사용자에게 읽기, 쓰기, 실행 권한을 준다.
-
-
3.43. PATHOPTS
PATH 파라미터로 지정된 UNIX 파일의 접근 및 상태 옵션을 지정한다. 해당 파라미터는 TSO 커맨드 OCOPY 문을 사용하는 경우에만 동작한다.
-
사용법
PATHOPTS = {file-option} | {(file-option[,file-option]...)}
항목 설명 file-option
file-option은 접근 및 상태 옵션에 대해 아래와 같이 지정할 수 있다.
-
접근 옵션
-
ORDONLY : 파일을 읽기 전용으로 오픈한다.
-
OWRONLY : 파일을 쓰기 전용으로 오픈한다.
-
ORDWR : 파일을 읽기와 쓰기로 오픈한다.
-
-
상태 옵션
-
OAPPEND : PATH 파라미터로 지정한 파일에 쓸 때 기존 파일의 끝에 이어서 쓰도록 지정한다.
-
OCREAT : 파일이 존재하지 않는다면 새로 생성하고, 이미 존재하고 있다면 해당 파일을 오픈한다. 경로에 지정한 디렉터리가 존재하지 않는 경우에는 새 파일을 생성하지 않는다.
-
OEXCL : 파일이 존재하지 않는다면 새로 생성하고, 이미 존재하고 있다면 에러를 리턴하고 해당 JOB STEP 할당에 실패한다. OCREAT이 함께 지정되지 않은 경우 이 설정은 무시된다.
-
ONOCTTY : PATH 파라미터가 터미널 디바이스를 지정하고 있다면, 해당 터미널 디바이스가 프로세스의 제어 터미널이 되지 않도록 지정한다.
-
ONONBLOCK : 읽기를 할 때 읽을 내용이 없는 경우 기다리지 않고 바로 리턴하도록 지정한다.
-
OSYNC : 쓰기를 할 때 실제로 쓰기가 완료된 후에 리턴하도록 지정한다.
-
OTRUNC : PATH 파라미터로 지정한 파일이 이미 존재하는 경우 파일 내용을 덮어쓰도록 지정한다.
-
-
3.45. RECFM
데이터셋의 레코드 형식과 특성을 지정한다. OpenFrame에서는 다음에 나타난 레코드 형식에 대해서만 지원한다.
-
사용법
RECFM={F[B][A|M]} {V[B|S|BS][A|M]} {L[A|M]} {U[A|M]}
항목 설명 A
ASA 코드 포함 레코드 형식이다.
B
블록 레코드 형식이다.
F
고정 레코드 형식이다.
L
라인 단위 레코드 형식이다.
L 레코드 형식은 오픈 환경에서 텍스트 파일을 저장하는 일반적인 레코드 형식으로 OpenFrame으로 마이그레이션한 이후 원활한 데이터 연동을 위해서 새로 추가한 레코드 형식이다.
M
기계 제어 문자 포함 레코드 형식이다.
S
스팬 레코드 형식이다.
V
가변 레코드 형식이다.
U
길이가 미지정된 레코드 형식이다.
-
주의사항
DCB 오퍼랜드의 파라미터로 RECFM이 지정된 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
예제
다음은 RECFM을 FB로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),RECFM=FB,LRECL=80
3.46. RECORG
VSAM 데이터셋을 새로 생성할 경우 반드시 지정해야 하는 파라미터로 생성되는 VSAM 데이터셋의 유형을 지정한다.
-
사용법
RECORG = {KS | ES | RR | LS}
항목 설명 KS
키 순서 데이터 셋이다.
ES
입력 순서 데이터 셋이다.
RR
레코드 번호별 데이터 셋이다.
LS
리니어 데이터 셋이다. OpenFrame에서는 지원하지 않는다.
-
예제
다음은 RECORG를 KS로 지정함으로써 VSAM KSDS를 생성하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,KEEP,DELETE),RECORG=KS,LRECL=80
3.47. REFDD
이전에 설정한 DD의 속성을 레퍼런스한다. REFDD 파라미터로 인해 복사되는 속성은 DSORG, RECFM, KEYLEN, LRECL, BLKSIZE 파라미터에 관련된 속성값들이 복사된다.
-
사용법
REFDD = {*.DD 이름} {*.STEP 이름.DD 이름} {*.STEP 이름.프러시저 STEP 이름.DD 이름}
항목 설명 *.DD 이름
*.STEP 이름.DD 이름
*.STEP 이름.프러시저 STEP 이름.DD 이름
"*[.STEP 이름[.프러시저 STEP 이름].DD 이름"을 역방향 참조라고 한다.
동일한 JOB의 선행 DD 문으로 지정된 데이터셋 이름을 사용할 것을 의미한다. 선행 DD 문의 위치가 선행 JOB STEP인지, 선행 프러시저 STEP인지에 따라서 각각, STEP 이름 또는 STEP 이름과 프러시저 STEP 이름을 지정한다.
-
주의사항
역방향 참조가 지정하는 DD가 존재하지 않으면, JOB은 FLUSH로 처리된다.
-
예제
다음은 REFDD를 사용하여 DD1의 RECFM과 LRECL의 속성을 가져오게 되는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),RECFM=FB,LRECL=80 //DD2 DD DSN=NEW2.DATASET,DISP=(NEW,CATLG),REFDD=*.DD1
3.48. RETPD
데이터셋의 보존할 기한을 일수로 지정한다. 데이터셋을 작성할 경우 지정만 유효하다.
-
사용법
RETPD = nnnn
항목 설명 nnnn
데이터셋의 보존 기한을 0~9999의 부호 없는 정수로 지정한다.
-
주의사항
-
LABEL 오퍼랜드에서 RETPD를 지정한 경우 이 오퍼랜드는 오버라이드되어서 무시된다.
-
OpenFrame에서는 데이터셋 보존의 만료일자 경과 이전에 추가 수정이나 삭제를 방지하는 기능은 지원하지 않는다. 만료일자가 경과한 경우 시스템이 해당 데이터셋을 자동 삭제하는 기능만 제공된다.
-
-
예제
다음은 데이터셋의 만기일자를 현재일로부터 30일 이후로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),RETPD=30
3.52. SPACE
직접 액세스 볼륨에 새로 생성할 데이터셋의 스페이스 할당량을 지정한다.
-
사용법
SPACE = ({TRK,}(초기값1[,추가값1][,디렉터리1])[,RLSE] [,CONTIG][,ROUND]) {CYL,} [,] [,] [,MXIG] {블록 길이,} [,ALX] {레코드길이,} [,]
다음은 파라미터에 대한 설명이다.
파라미터 설명 TRK
스페이스 할당량의 초기값 및 추가 값의 단위가 트랙 단위인 것을 의미한다.
CYL
스페이스 할당량의 초기값 및 추가 값의 단위가 실린더 단위인 것을 의미한다.
블록 길이
스페이스 할당량의 초기값 및 추가 값의 단위가 블록 단위인 것을 의미한다.
0~65535의 부호 없는 정수로 지정한다.
레코드길이
AVGREC 오퍼랜드가 지정되면 레코드 길이로 처리된다.
0~65535의 부호 없는 정수로 지정한다.
초기값
데이테 셋의 최초 할당 크기를 지정한다.
0~16777215의 부호 없는 정수로 지정한다.
추가값
데이터셋의 작성 중에 스페이스가 부족해서 추가를 해야하는 경우 한 번에 추가할 값을 지정한다. 스페이스 추가 할당이 허락되는 최대 횟수는 기본적으로 15회까지이다. OpenFrame에서는 Non-VSAM 데이터셋인 경우 OpenFrame 환경설정에 ds 서브젝트, DATASET_DEFAULT 섹션의 NVSM_EXTENT_LIMIT 키의 VALUE 항목으로 최대 추가 할당 횟수를 지정하는 것이 가능하다. ds 서브젝트 설정에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
0~16777215의 부호 없는 정수로 지정한다.
디렉터리
구분 데이터셋(PDS)를 작성할 때 디렉터리 영역의 스페이스 할당량을 지정한다. 0~16777215의 부호 없는 정수로 지정한다.
이 파라미터가 지정된 경우 구분 데이터셋으로 만 간주된다. OpenFrame에서는 문법 검사만 수행하고 실제로 지정된 값에 의한 스페이스 할당에는 사용하지는 않는다.
설명하지 않은 RLSE, CONTIG, MXIG, ALX, ROUND 파라미터는 지원하지 않는다.
-
주의사항
-
SPACE 오퍼랜드와 DDNAME, AMP, DLM, 애스터리스크(*) 또는 DATA 오퍼랜드는 서로 배타적이기 때문에 동시에 지정하면 안 된다.
-
VSAM 데이터셋을 작성하는 경우 SPACE 오퍼랜드를 지정하면 안 된다.
-
-
예제
다음은 JOB1의 DD 문에서 새롭게 작성하는 데이터셋 데이터에 대해서 20트랙을 할당하고 데이터 기록 중에 스페이스가 부족하면 그때마다 5트랙씩 추가의 스페이스를 할당하는 예제이다. 작성을 종료하고 CLOSE할 때 미사용 스페이스를 해제하는 것을 나타내고 있다. OpenFrame에서 RLSE는 무시된다.
//JOB1 JOB // EXEC PGM=PROG1 //DS1 DD DSN=DATA,UNIT=8598, // VOL=SER=A11111, // SPACE=(TRK,(20,5),RLSE) //
다음은 JOB2의 DD 문에서 새롭게 작성하는 구분 데이터셋 데이터에 대해서 연속한 10실린더를 할당해 스페이스의 선두에서 디렉터리용으로서 256Bytes의 디렉터리 블록을 20개 할당하는 예제이다.
OpenFrame에서 디렉터리 블록 수 20과 CONTIG 파라미터의 지정은 무시된다. 디렉터리 블록 수가 지정되었다는 사실로부터 구분 데이터셋을 새롭게 작성한다.
//JOB2 JOB // EXEC PGM=PROG2 //DS2 DD DSN=DATA,UNIT=8598, // VOL=SER=B11111, // SPACE=(CYL,(10,,20),,CONTIG) //
3.54. STORCLAS
SMS 스토리지 클래스를 지정한다. 스토리지 클래스를 지정하면 OpenFrame 환경설정에 sms 서브젝트에 지정된 스토리지 클래스에 기술되어 있는 데이터셋의 스토리지 관련 설정을 사용하게 된다.
sms 서브젝트에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다. |
-
사용법
STORCLAS = 클래스명
항목 설명 클래스
스토리지 클래스명을 1~8자리의 기호명칭으로 지정한다.
-
주의사항
OpenFrame 환경설정에 sms 서브젝트에 해당 스토리지 클래스가 설정이 되어있지 않으면 에러가 발생한다.
-
예제
다음은 스토리지 클래스를 STOR01로 지정하는 예제이다.
//DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),STORCLAS=STOR01
3.56. SYMBOLS
Instream 데이터에 기호 파라미터를 사용한다.
-
사용법
SYMBOLS = {JCLONLY | EXECSYS | CNVTSYS}
항목 설명 JCLONLY
해당 DD문 이전에 EXPORT 문으로 지정한 기호 파라미터를 instream 데이터에서 사용한다. 사용될 기호 파라미터의 경우 SET 문으로 지정된 값으로 치환된다.
EXECSYS
OpenFrame에서는 사용하지 않는다. JCLONLY와 동일하게 동작한다.
CNVTSYS
OpenFrame에서는 사용하지 않는다. JCLONLY와 동일하게 동작한다.
-
예제
다음은 A1을 TMAX로 치환하는 예이다. 이때 B1의 경우 SET 문으로 지정하였지만 EXPORT문에서 A1 기호 파라미터만 익스포트하였기 때문에 instream 데이터에서는 A1 기호 파라미터만 치환된다.
//EX1 EXPORT SYMLIST=A1 //SET1 SET A1=TMAX,B1=SOFT //SORTIN DD *,SYMBOLS=JCLONLY 1000&A1 2000&B1 /*
3.57. SYSOUT
SYSOUT 데이터셋의 출력 속성을 지정한다.
-
사용법
SYSOUT = ([클래스][,프로그램명][,서식번호]) [*]
항목 설명 클래스
SYSOUT 데이터셋의 출력 클래스를 지정한다. 출력 클래스의 속성에 따라서 SYSOUT 데이터셋의 출력 및 출력 보류 등을 지정된다.
SYSOUT 출력 클래스에 대한 설정은 OpenFrame 환경설정에 tjes 서브젝트, OUTCLASS 섹션에 클래스명을 키로 설정한다. 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
애스터리스크(*)
SYSOUT 데이터셋의 출력 클래스를 시스템 메시지 클래스와 동일하게 설정함을 의미한다.
시스템 메시지 클래스는 JOB 문에서 MSGCLASS 오퍼랜드를 통해 지정한다.
프로그램명
내부 리더 또는 외부 라이터를 사용해 SYSOUT 데이터셋을 출력하는 경우 그 프로그램의 명칭을 지정한다.
내부 리더에게 출력하는 경우는 INTRDR를 지정한다.
서식번호
SYSOUT 데이터셋을 출력할 용지의 서식번호를 1~4자리의 점(.) 문자를 제외한 기호명칭으로 지정한다.
-
예제
다음은 출력 클래스를 8, 외부 라이터 프로그램명을 USERWTR, 출력처를 GROUPA로 지정하는 예제이다. 해당 정보를 외부 프린터 모듈에 전달한다.
//OUT DD SYSOUT=(8,USERWTR),DEST=GROUPA
3.60. UNIT
데이터셋을 할당할 I/O 디바이스 장치를 지정한다.
-
사용법
UNIT = ([ddd] [,개수][,DEFER]) [/ddd] [,P] [/dddd] [,] [디바이스 유형] [디바이스 그룹] UNIT = AFF = DD 이름
항목 설명 /dddd
디바이스 번호를 지정한다. 16진수로 0000부터 FFFF까지 지정 가능하다.
디바이스 유형
디바이스 유형을 지정한다. 지정된 유형의 장치 중에 하나가 시스템에 의해 선택된다. 디바이스 유형은 영문자, 숫자 및 하이픈(-)으로 이루어진 1~8개의 문자열로 지정한다.
디바이스 그룹
디바이스 그룹을 지정한다. 디바이스 그룹은 영문자, 숫자 및 하이픈(-)으로 이루어진 1~8개의 문자열로 지정한다.
OpenFrame에서는 첫 번째 형식의 첫 번째 파라미터 중에 /dddd, 디바이스 유형, 디바이스 그룹만 지원한다.
-
주의사항
다음의 경우 디바이스 정보를 시스템이 자체적으로 판단할 수 있기 때문에 UNIT 오퍼랜드는 생략할 수 있다.
-
데이터셋이 카탈로그되었을 때
-
데이터셋이 선행 STEP에서 패스되었을 때
-
VOLUME=REF 지정에 의해 선행 DD 문 또는 카탈로그되어 있는 데이터셋을 참조했을 때
OpenFrame에서는 Mainframe의 장치를 사용하는 것이 아니라 UNIX OS의 파일 시스템 위에 데이터셋을 구현하고 있기 때문에 장치에 대한 할당은 하지 않는다. 다만, 이 오퍼랜드에 의해 지정되는 디바이스정보를 기억해 두었다가 다음과 같은 용도로 사용한다.
-
디바이스 종류별로 다른 처리를 해야하는 경우에 활용한다. 직접 액세스 디바이스인지 아니면 테이프 디바이스인지를 구분하기 위한 용도로 사용한다.
-
디바이스가 정해지면 볼륨이 확정되는 경우 결정된 디바이스 장치로부터 볼륨 일련번호를 알아내는 용도로 사용한다.
-
-
예제
다음은 EXDD1 DD 문에서 볼륨 일련번호가 VOL001인 볼륨에 새롭게 임시 데이터셋을 작성하는 예제이다. 3390이라고 하는 디바이스 유형 중에서 1대의 장치를 요구하고 있다.
//EXDD1 DD UNIT=3390,SPACE=(CYL,(1,1,1)), // VOL=SER=VOL001
다음은 EXDD DD 문에서 VOL001 볼륨에 임시 데이터셋을 새롭게 작성하는 것을 시스템에 요구하는 예제이다. UNIT 오퍼랜드에서는 SYSDA라고 하는 디바이스 그룹 중에서 하나의 장치를 할당하도록 요구하고 있다.
//EXDD DD UNIT=SYSDA,SPACE=(CYL,(1,1)),VOL=VOL001
3.61. VOLUME/VOL
데이터셋의 볼륨을 지정한다.
-
사용법
{VOLUME | VOL} =([PRIVATE][,RETAIN][,볼륨순서번호][,개수][,][SER=볼륨 일련번호] ) [,] [,] [SER=(볼륨 일련번호[,볼륨 일련번호]...)] [REF=[데이터셋 이름]] [REF=*.DD 이름] [REF=*.STEP 이름.DD 이름] [REF=*.STEP 이름.프러시저 STEP 이름.DD 이름]
다음은 파라미터에 대한 설명이다.
항목 설명 SER=볼륨 일련번호,
SER=(볼륨 일련번호[,볼륨 일련번호]…)
데이터셋을 작성할 볼륨 또는 데이터셋이 있는 볼륨의 일련번호를 지정한다. 볼륨 일련번호는 1~6자리의 인용 문자열로 지정한다.
VOLUME 오퍼랜드로 SER 파라미터만 지정한 경우에는 VOLUME=SER=(볼륨 일련번호,…)와 같이 지정할 수 있다.
볼륨 일련번호를 1개 밖에 지정하지 않는 경우 괄호는 생략할 수 있다. 지정한 볼륨 일련번호는 OpenFrame의 툴인 volmgr 을 통해 먼저 지정되어 있어야 한다.
REF=데이터셋 이름
지정한 데이터셋이 사용하는 볼륨과 같은 볼륨을 사용할 것을 지정한다. REF 파라미터로 지정하는 데이터셋 이름은 세대 데이터 그룹 이름(GDG)과 동일해서는 안 되며 GDG 상대번호 멤버명칭 사용이 불가능하다. 지정된 데이터셋은 카탈로그되어 있어야 한다.
OpenFrame에서는 카탈로그되지 않고 단순히 패스(PASS)된 DD 문의 데이터셋 이름으로 참조하는 것은 지원하지 않는다.
REF=*.DD 이름
REF=*.STEP 이름.DD 이름
REF=*.STEP 이름.프러시저 STEP 이름.DD 이름
"*[.STEP 이름[.프러시저 STEP 이름].DD 이름"을 역방향 참조라고 한다. 동일한 JOB의 선행 DD 문으로 지정된 볼륨을 사용할 것을 의미한다. 선행 DD 문의 위치가 선행 JOB STEP인지, 선행 프러시저 STEP인지에 따라서 각각 STEP 이름 또는 STEP 이름과 프러시저 STEP 이름을 지정한다.
VOLUME 오퍼랜드로 REF 파라미터만 지정한 경우에는 VOLUME=REF=(역방향 참조,…)의 형태로 지정할 수 있다.
역방향 참조가 지정하는 DD가 존재하지 않으면 JOB은 FLUSH로 처리된다.
설명하지 않은 PRIVATE, RETAIN, 볼륨 순서번호, 개수 파라미터는 지원하지 않는다.
-
예제
다음은 EXDD01 DD 문에서 볼륨 일련번호 VOL001의 볼륨에 존재하는 기존의 데이터셋의 사용을 요청하는 예제이다.
//EXDD01 DD UNIT=848X,VOL=SER=VOL001, // DISP=(OLD,KEEP),DSN=TAPEDS1
다음은 카탈로그되어 있는 데이터셋 FILE.ORG가 존재하는 직접 액세스 볼륨에 데이터셋 FILE.AUTH을 작성하는 예제이다.
//DD1 DD DSN=FILE.AUTH,DISP=(,KEEP),VOL=REF=FILE.ORG, // SPACE=(CYL,(5,1))
다음은 선행 JOB STEP의 DD 문 DD1로 정의된 데이터셋 FILE을 확장하는 예제이다. OpenFrame에서 PRIVATE 파라미터와 볼륨 카운트 2의 지정은 무시된다.
//STEP1 EXEC PGM=BUILD //DD1 DD DSN=FILE,DISP=(OLD,KEEP),VOL=SER=111111, // UNIT=8598 //STEP2 EXEC PGM=EXPAND //DD2 DD DSN=FILE,DISP=(MOD,KEEP), // VOL=(PRIVATE,,,2,REF=*.STEP1.DD1)
4. 스페셜 DD 문
특별한 이름의 DD 이름을 사용하는 DD 문에 대해서 설명한다. OpenFrame에서는 아래에 기술된 DD를 제외한 DD에 대해서는 스페셜 DD로 취급하지 않는다.
4.1. SYSIN DD
해당하는 STEP의 프로그램에서 사용하게 될 stdin 데이터가 있는 데이터셋을 지정한다. EXEC 문 이후부터 다음 EXEC 문이나 JOB의 마지막 사이에 기술한다.
다음은 TMAXSOFT 프로그램이 stdin으로 sysin data라는 데이터를 받는 예제이다.
//STEP1 EXEC PGM=TMAXSOFT //SYSIN DD * sysin data /*
다음은 TMAXSOFT 프로그램이 stdin으로 TMAXSOFT.DATA라는 데이터셋의 내용을 받는 예제이다.
//STEP1 EXEC PGM=TMAXSOFT //SYSIN DD DSN=TMAXSOFT.DATA,DISP=SHR
4.2. SYSOUT DD와 SYSPRINT DD
SYSOUT DD나 SYSPRINT DD는 모두 해당하는 STEP의 프로그램에서 출력하는 stdout와 stderr를 담을 데이터셋을 지정한다.
SYSOUT DD와 SYSPRINT DD가 둘 다 지정되어 있는 경우 SYSOUT DD가 사용되고 SYSPRINT는 아무런 내용도 기술되지 않는다. EZTPA00와 같이 다른 제품과의 연동을 위한 유틸리티에서는 SYSPRINT DD에 대해서 다른 용도로 사용하기도 한다. EXEC 문 이후부터 다음 EXEC 문이나 JOB의 마지막 사이에 기술한다.
EZTPA00에서 SYSPRINT DD의 사용에 대한 내용은 OpenFrame Batch "유틸리티 참조 안내서"를 참고한다. |
다음은 TMAXSOFT 프로그램에서 나온 stdout과 stderr이 SYSOUT DD로 지정한 임시 파일에 기록되는 예제이다.
//STEP1 EXEC PGM=TMAXSOFT //SYSOUT DD DSN=&&OUT,DISP=(NEW,PASS),VOLUME=100000
다음은 SYSOUT DD과 SYSPRINT DD를 같이 사용하면 SYSOUT DD에 TMAXSOFT 프로그램에서 나온 stdout과 stderr이 기록되는 예제이다.
//STEP1 EXEC PGM=TMAXSOFT //SYSOUT DD * //SYSPRINT DD *
4.3. JOBLIB DD와 STEPLIB DD
JOBLIB DD와 STEPLIB DD는 모두 STEP에서 실행할 프로그램을 찾기 위해 사용된다.
-
JOBLIB DD
JOBLIB DD로 지정한 것은 JOB 내의 모든 STEP에서 실행할 프로그램을 찾을 때 참조한다. JOBLIB DD는 JOB 문 이후로 첫 번째 EXEC 문이 나오기 전에 기술한다.
-
STEPLIB DD
STEPLIB DD로 지정한 것은 해당 STEP에서 실행할 프로그램을 찾을 때 참조한다. STEPLIB DD는 EXEC 문 이후부터 다음 EXEC 문이나 JOB의 마지막 사이에 기술한다.
JOBLIB DD가 선언되어 있더라도 해당 STEP에서 STEPLIB DD가 선언되어 있으면 해당 STEP에서는 STEPLIB DD만이 사용된다. JOBLIB DD는 STEPLIB DD가 선언되지 않은 STEP에서만 사용된다.
프로그램을 찾는 순서에 대한 자세한 내용은 PGM의 설명을 참고한다. |
다음은 TMAXSOFT 프로그램을 JOBLIB DD에서 선언한 TMAX.JOBLIB 데이터셋에서 우선적으로 찾는 예제이다.
//JOB1 JOB //JOBLIB DD DSN=TMAX.JOBLIB,DISP=SHR //STEP1 EXEC PGM=TMAXSOFT //SYSOUT DD *
다음은 STEP1의 TMAXSOFT 프로그램을 STEPLIB DD에서 선언한 TMAX.STEPLIB 데이터셋에서 우선적으로 찾고, 찾지 못했더라도 JOBLIB DD로 선언한 TMAX.JOBLIB 데이터셋에서는 찾지 않는 예제이다.
STEP2의 TMAXSOFT 프로그램을 JOBLIB DD에서 선언한 TMAX.JOBLIB 데이터셋에서 찾는다.
//JOB1 JOB //JOBLIB DD DSN=TMAX.JOBLIB,DISP=SHR //STEP1 EXEC PGM=TMAXSOFT //STEPLIB DD DSN=TMAX.STEPLIB,DISP=SHR //SYSOUT DD * //STEP2 PGM=TMAXSOFT //SYSOUT DD *
4.4. JOBCAT DD와 STEPCAT DD
JOBCAT DD와 STEPCAT DD는 모두 STEP에서 사용하는 데이터셋이 등록되어 있는 카탈로그를 지정한다.
-
JOBCAT DD
JOBCAT DD로 지정한 것은 JOB 내의 모든 STEP에서 사용하는 데이터셋이 등록되어 있는 카탈로그이다. JOBCAT DD는 JOB 문 이후로 첫 번째 EXEC 문이 나오기 전에 기술한다.
-
STEPCAT DD
STEPCAT DD로 지정한 것은 해당 STEP에서 사용하는 데이터셋이 등록되어 있는 카탈로그이다. STEPCAT DD는 EXEC 문 이후부터 다음 EXEC 문이나 JOB의 마지막 사이에 기술한다.
JOBCAT DD가 선언되어 있더라도 해당 STEP에서 STEPCAT DD가 선언되어 있으면 해당 STEP에서는 STEPCAT DD만이 사용된다. JOBCAT DD는 STEPCAT DD가 선언되지 않은 STEP에서만 사용된다.
JOBCAT DD나 STEPCAT DD에서 지정한 카탈로그에서 해당 데이터셋을 찾지 못했을 경우에는 마스터 카탈로그에서 데이터셋을 찾는다.
다음은 TMAX.SYSIN 데이터셋을 JOBCAT DD에서 선언한 TMAX.JOBCAT 카탈로그에서 우선적으로 찾는 예제이다.
//JOB1 JOB //JOBCAT DD DSN=TMAX.JOBCAT,DISP=SHR //STEP1 EXEC PGM=TMAXSOFT //SYSIN DD DSN=TMAX.SYSIN,DISP=SHR //SYSOUT DD *
다음은 STEP1의 TMAX.SYSIN 데이터셋을 STEPCAT DD에서 선언한 TMAX.STEPCAT 카탈로그에서 우선적으로 찾고, 찾지 못했더라도 JOBCAT DD로 선언한 TMAX.JOBCAT 카탈로그에서는 찾지 않는 예제이다. STEP2의 TMAX.SYSIN 데이터셋을 JOBCAT DD에서 선언한 TMAX.JOBCAT 카탈로그에서 찾는다.
//JOB1 JOB //JOBCAT DD DSN=TMAX.JOBCAT,DISP=SHR //STEP1 EXEC PGM=TMAXSOFT //STEPCAT DD DSN=TMAX.STEPCAT,DISP=SHR //SYSIN DD DSN=TMAX.SYSIN,DISP=SHR //SYSOUT DD * //STEP2 PGM=TMAXSOFT //SYSIN DD DSN=TMAX.SYSIN,DISP=SHR //SYSOUT DD *
5. ENDCNTL 문
ENDCNTL 문은 CNTL 문 이후로 나오는 프로그램 컨트롤문의 마지막을 나타낸다. OpenFrame에서는 CNTL 문과 프로그램 컨트롤문 그리고 ENDCNTL 문에 대해서 문법 오류만 검사하고 사용하지 않는다.
-
사용법
//[라벨]△¹ENDCNTL△[주석]
-
예제
다음은 CNTL 문과 ENDCNTL 문을 사용하는 예제이다.
//STEP1 EXEC PGM=PRINT //ALPHA CNTL * PROGRAM CONTROL STATEMENT FOLLOWS //PRGCNTL PRINTDEV BUFNO=20,PIMSG=YES,DATACK=BLOCK //OMEGA ENDCNTL //AGAR DD UNIT=AFP1
6. EXEC 문
STEP의 시작을 나타내고, 그 STEP의 속성을 기술한다.
-
사용법
//STEP 이름△¹EXEC△¹위치 오퍼랜드[,키워드 오퍼랜드]...△¹[주석]
항목 설명 STEP 이름
명칭 기술 위치로, "//"에 이어서 3번째 칸부터 기술한다.
STEP 이름을 생략하면 시스템은 임의의 STEP 이름으로 설정한다. 임의의 STEP 이름은 $S00000$에서 1씩 증가시키며 생성된다.
STEP 이름은 JOB 내에서 유일한 이름이 되도록 한다. 유일하지 않을 경우 의도하지 않은 STEP을 참조하게 되거나 참조를 하지 못할 수 있다.
STEP 이름은 8자리 이내의 영문자, 숫자이어야 하며 첫 번째 문자는 영문자이어야 한다.
EXEC
오퍼레이션 기술 위치로, STEP 이름 뒤에 1개 이상의 공백을 두고 'EXEC’라고 기술한다.
위치 오퍼랜드[,키워드 오퍼랜드]
'EXEC' 이후에 1개 이상의 공백을 두고 오퍼랜드들을 기술하며 위치 오퍼랜드를 먼저 기술하고 이 후에 키워드 오퍼랜드들을 기술한다. 오퍼랜드 사이의 구분은 콤마(,)로 한다. 자세한 내용은 오퍼랜드와 각 오퍼랜드 절의 설명을 참고한다.
[주석]
오퍼랜드란 이후에 1개 이상의 공백을 두고 기술한다. 주석은 71번째 칸까지 기술할 수 있다. 모든 오퍼랜드를 생략한 경우에는 주석을 기술할 수 없다.
오퍼랜드
다음은 앞에서 언급한 오퍼랜드에 대한 설명이다. 각 오퍼랜드에 대한 자세한 내용은 해당 절의 내용을 참고한다.
-
위치 오퍼랜드
STEP문의 위치 오퍼랜드는 PGM, PROC, 프러시저 이름 중 하나만 기술한다. PGM과 PROC 오퍼랜드는 키워드 오퍼랜드 형태이지만 위치 오퍼랜드처럼 모든 키워드 오퍼랜드들 앞에 기술해야 한다.
항목 설명 STEP에서 실행할 프로그램명을 지정한다.
STEP에서 실행할 프러시저명을 지정한다.
-
키워드 오퍼랜드
항목 설명 OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
해당 STEP의 실행 여부를 결정하는 조건을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
STEP에서 실행하게 될 해당 프로그램의 파라미터를 지정한다.
STEP이 실행 중에 속하는 퍼포먼스 그룹을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSTEM 파라미터의 값을 지정한다.
해당 STEP에서 사용할수 있는 CPU time의 최댓값을 지정한다.
STEP에서 실행하는 프러시저의 기호 파라미터의 값을 지정한다.
6.4. COND
해당 STEP의 실행 여부를 결정하는 조건을 지정한다. COND 오퍼랜드가 지정되어 있으면 해당 STEP을 시작하기 전에 이전 STEP들의 반환코드와 비교해서 이 STEP을 실행할지의 여부를 결정한다.
COND 오퍼랜드에 지정된 조건이 여러 개인 경우 지정된 조건들 중에 하나라도 만족하게 되면 COND 조건은 만족된 것으로 판단한다. STEP 이름이나 프러시저 STEP 이름을 기술할 때 이전에 언급된 STEP 중에 기술해야 한다. 만약 이전 STEP이 아닌 것을 기술할 경우 해당 조건은 만족하지 않은 것으로 판단한다.
-
사용법
COND[.프러시저 STEP 이름]= ((코드,연산 부호[,STEP 이름[.프러시저 STEP 이름]]) ) ([,(코드,연산 부호[,STEP 이름[.프러시저 STEP 이름]])]...) ([,EVEN] ) ([,ONLY] ) COND=EVEN COND=ONLY
항목 설명 코드
JOB STEP의 반환코드와 비교할 조건코드를 부호 없는 정수로 지정한다.
연산 부호
다음 연산 부호 중 원하는 값을 지정한다.
-
EQ : 코드가 반환코드와 같다.
-
NE : 코드가 반환코드와 다르다.
-
GT : 코드가 반환코드보다 크다.
-
GE : 코드가 반환코드보다 크거나 같다.
-
LT : 코드가 반환코드보다 작다.
-
LE : 코드가 반환코드보다 작거나 같다.
STEP 이름
STEP 이름을 기술하면 해당 조건은 기술된 STEP의 반환코드하고만 비교한다. 기호명칭으로 지정한다.
프러시저 STEP 이름
STEP 이름과 함께 기술하며 반환코드를 비교하려는 STEP이 프러시저 내의 STEP일 때 지정한다. 기호명칭으로 지정한다.
EVEN, ONLY
조건의 마지막에 기술하며 비정상 종료의 경우에도 해당 STEP을 실행할지의 여부를 결정한다. 비정상 종료를 발생시키는 반환코드는 OpenFrame 환경설정에 rc 서브젝트, PGM_NAME 섹션에 각 프로그램별로 지정할 수 있다. 자세한 내용은 "OpenFrame 환경설정 안내서"를 참고한다.
일반적으로 이전의 STEP이 비정상 종료되면 이후의 STEP은 스킵을 하는 데 EVEN이나 ONLY가 있다면 실행할 수도 있다.
-
EVEN : 이전 STEP의 정상/비정상 종료와 관계없이 조건이 만족되면 스킵하고 만족되지 않으면 현재 STEP이 실행한다. EVEN만 지정했을 경우에는 항상 조건이 만족되지 않는 것으로 판단한다.
-
ONLY : 이전 STEP이 정상 종료하면 스킵하고 비정상 종료하면 조건을 비교해서 스킵 또는 실행을 결정한다. ONLY만을 지정했을 경우에는 항상 조건이 만족되지 않은 것으로 판단한다.
EVEN, ONLY 지정에 대한 설명은 표 이후에 설명한다.
다음은 EVEN, ONLY의 지정과 관련된 STEP의 설명이다.
COND 오퍼랜드 이전 STEP들의 상태 현재 STEP의 실행 여부 미지정
모두 정상 종료
실행
미지정
1개라도 비정상 종료
스킵
조건만 지정
모두 정상 종료
조건이 하나라도 만족되면 스킵, 아니면 실행
조건만 지정
1개라도 비정상 종료
스킵
EVEN만 지정
모두 정상 종료
실행
EVEN만 지정
1개라도 비정상 종료
실행
EVEN과 조건을 지정
모두 정상 종료
조건이 하나라도 만족되면 스킵, 아니면 실행
EVEN과 조건을 지정
1개라도 비정상 종료
조건이 하나라도 만족되면 스킵, 아니면 실행
ONLY만 지정
모두 정상 종료
스킵
ONLY만 지정
1개라도 비정상 종료
실행
ONLY와 조건을 지정
모두 정상 종료
스킵
ONLY와 조건을 지정
1개라도 비정상 종료
조건이 하나라도 만족되면 스킵, 아니면 실행
-
-
주의사항
-
조건 파라미터는 최대 8개까지 유효하며, 9번째 이상의 조건 파라미터는 무시된다. 조건 파라미터의 개수에 EVEN과 ONLY는 포함하지 않는다.
-
조건 파라미터를 1개만 지정한 경우에는 가장 밖에 있는 괄호를 생략할 수 있다.
-
JOB 문과 EXEC 문에 COND가 지정되어 있을 때 JOB 문의 COND가 만족되면 EXEC 문의 COND는 고려되지 않는다.
-
COND 오퍼랜드의 값은 문법 검사할 때 검사하지 않는다.
-
-
예제
다음은 STEP1의 반환코드가 4이고 STEP2에서 12가 4보다 크므로 조건을 만족하여 STEP2가 스킵되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC RETURN,PARM=4 //STEP2 EXEC TMAXSOFT,COND=(12,GT)
다음은 STEP1의 반환코드가 4이고 STEP2에서 2가 4보다 작고 12가 4보다 크므로 조건을 하나도 만족하지 않아서 STEP2가 실행되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC RETURN,PARM=4 //STEP2 EXEC TMAXSOFT,COND=((2,GT),(12,LT))
다음은 STEP1의 반환코드가 4이고 STEP2에서 ONLY가 지정되어 있고 STEP1이 정상 종료되었으므로 조건을 만족하지 않았지만 ONLY 파라미터로 인해 STEP2가 스킵되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC RETURN,PARM=4 //STEP2 EXEC TMAXSOFT,COND=((2,GT),(12,LT),ONLY)
다음은 STEP1의 반환코드가 4이고 STEP1이 비정상 종료되었는데 STEP2에서 ONLY가 지정되어 있고 조건을 만족하지 않아서 STEP2가 실행되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC ABEND,PARM=4 //STEP2 EXEC TMAXSOFT,COND=((2,GT),(12,LT),ONLY)
다음은 STEP1의 반환코드가 4이고 STEP2에서 EVEN이 지정되어 있으므로 무조건 STEP2가 실행되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC ABEND,PARM=4 //STEP2 EXEC TMAXSOFT,COND=EVEN
다음은 STEP1의 반환코드가 4이고 STEP2는 반환코드가 8인데 STEP3에서 STEP1과 STEP2의 반환코드를 비교해서 STEP1의 반환코드가 4로 조건을 만족해서 STEP3가 스킵되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC RETURN,PARM=4 //STEP2 EXEC RETURN,PARM=8 //STEP3 EXEC TMAXSOFT,COND=(4,EQ)
다음은 STEP1의 반환코드가 4이고 STEP2는 반환코드가 8인데 STEP3에서 STEP2의 반환코드가 4가 아니므로 조건이 만족되지 않아서 STEP3가 실행되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC RETURN,PARM=4 //STEP2 EXEC RETURN,PARM=8 //STEP3 EXEC TMAXSOFT,COND=(4,EQ,STEP2)
다음은 STEP1의 프러시저 STEP인 PSTEP1의 반환코드는 4인데 STEP2에서 비교해서 조건을 만족하므로 STEP2가 스킵되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=RETURN,PARM=4 //PSTEP2 EXEC PGM=RETURN,PARM=8 // PEND //STEP1 EXEC TMAXPROC //STEP2 EXEC TMAXSOFT,COND=(4,EQ,STEP1.PSTEP1)
다음은 STEP1의 반환코드가 4이고 STEP2의 프러시저 STEP에서 PSTEP1은 조건을 만족하여 스킵, PSTEP2는 COND 오퍼랜드를 적용하지 않으므로 실행되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT //PSTEP2 EXEC PGM=TMAXSOFT // PEND //STEP1 EXEC RETURN,PARM=4 //STEP2 EXEC TMAXPROC,COND.PSTEP1=(4,EQ)
6.5. DYNAMNBR
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
DYNAMNBR[.프러시저 STEP 이름] = 값
항목 설명 값
0~3273의 부호 없는 정수를 지정한다.
6.6. MEMLIMIT
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
MEMLIMIT = {값M|값G|값T|값P} {NOLIMIT}
항목 설명 값M
0~99999의 부호 없는 정수이다.
값G
0~99999의 부호 없는 정수이다.
값T
0~99999의 부호 없는 정수이다.
값P
0~16384의 부호 없는 정수이다.
6.7. PARM
STEP에서 실행할 프로그램에 전달하게 될 파라미터 값을 지정한다.
-
사용법
PARM[.프러시저 STEP 이름] = 파라미터값 PARM[.프러시저 STEP 이름] = (파라미터값,파라미터값) PARM[.프러시저 STEP 이름] = ('파라미터값',파라미터값) PARM[.프러시저 STEP 이름] = '파라미터값,파라미터값'
항목 설명 파라미터값
STEP에서 실행할 프로그램에게 전달할 파라미터 값을 지정한다.
-
예제
다음은 STEP1에서 실행하는 PRINT 프로그램의 파라미터로 argv1을 전달하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC PRINT,PARM='argv1'
다음은 STEP1의 프러시저 STEP인 PSTEP1에는 파라미터로 argv1을, PSTEP2에는 argv2를 전달하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=PRINT,PARM='argv2' //PSTEP2 EXEC PGM=PRINT,PARM='argv2' // PEND //STEP1 EXEC TMAXPROC,PARM.PSTEP1='argv1'
6.8. PGM
STEP에서 실행할 프로그램명을 지정한다. 이 오퍼랜드는 해당 STEP에서 실행할 프로그램을 지정한다. 지정할 수 있는 프로그램은 UNIX에서 실행할 수 있는 모든 Excutable 바이너리들이다.
만약 프로그램이 Shared Object로 되어 있다면 해당 프로그램은 직접 실행이 되지 않으므로 PGMRTS00이라는 유틸리티를 통해서 실행할 수 있다. PGMRTS00 유틸리티를 이용할지의 여부는 OpenFrame 환경설정에 tjclrun 서브젝트, PGM 섹션의 USE_PGMRTS00 키의 VALUE 항목 값에 따라 결정할 수 있다.
|
프로그램명을 기술하면 해당 프로그램을 다음과 같은 순서로 검색한다.
-
STEPLIB DD가 STEP에 지정되어 있다면 지정된 데이터셋의 멤버 중에서 검색한다.
-
STEPLIB DD가 STEP에 지정되어 있지 않고 JOBLIB DD가 JOB에 지정되어 있다면 지정된 데이터셋의 멤버 중에서 검색한다.
-
OpenFrame 환경설정에 tjclrun 서브젝트, SYSLIB 섹션의 BIN_PATH 키의 VALUE가 설정되어 있다면 BIN_PATH에 설정된 디렉터리에서 검색한다.
-
OpenFrame 환경설정에 tjclrun 서브젝트, SYSLIB 섹션의 BIN_PATH 키의 VALUE가 설정되어 있지 않다면 obmjinit 서버가 기동될 때의 환경변수 PATH에 설정된 디렉터리에서 검색한다.
다음은 PGM 오퍼랜드에 대한 설명이다.
-
사용법
PGM = {프로그램명}
항목 설명 프로그램명
STEP에서 실행할 프로그램명을 특수 캐릭터 라인으로 지정한다.
-
주의사항
EXEC 문의 오퍼랜드 중에 가장 먼저 기술해야 한다.
-
예제
다음은 실행 프로그램의 이름을 지정하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=TMAXSOFT
다음은 PROD.BATCHLIB에 있는 TMAXSOFT를 실행 프로그램의 이름으로 지정하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=TMAXSOFT //STEPLIB DD DSN=PROD.BATCHLIB,DISP=SHR
6.9. PROC
STEP에서 실행할 프러시저명을 지정한다. 이 오퍼랜드는 해당 STEP에서 실행할 프러시저를 지정한다. 프러시저에는 카탈로그 프러시저와 입력 스트림 프러시저가 있다.
-
카탈로그 프러시저는 데이터셋의 멤버로 저장되어 있는 프러시저를 말하며 어느 JOB에서든 실행할 수 있다.
-
입력 스트림 프러시저는 입력 스트림 중에 지정된 프러시저로 입력 스트림 내의 JOB에서만 일시적으로 실행할 수 있다.
프러시저를 찾는 순서는 다음과 같다.
-
입력 스트림 프러시저 중에서 검색한다.
-
JCLLIB문이 기술되어있다면 JCLLIB문에 기술된 멤버를 통해서 검색한다.
-
JES2 JCL 제어문인 JOBPARM 문에 PROCLIB={ddname} 오퍼랜드가 지정되어 있다면 OpenFrame 환경설정에 tjes 서브젝트, PROCLIB 섹션의 {ddname} 키의 VALUE 항목으로 설정된 데이터셋들의 멤버 중에서 검색한다.
-
OpenFrame 환경설정에 tjes 서브젝트, PROCLIB 섹션의 PROC00 키의 VALUE 항목으로 설정된 데이터셋들의 멤버 중에서 검색한다.
-
SYS1.PROCLIB의 멤버 중에 검색한다.
tjes 서브젝트에 대한 자세한 내용은 "OpenFrame 환경설정 안내서"를 참고한다. |
다음은 PROC 오퍼랜드의 사용법에 대한 설명이다.
-
사용법
{PROC = 프러시저명} {프러시저명}
항목 설명 프러시저명
STEP에서 실행할 프러시저명을 기호명칭으로 지정한다.
-
주의사항
EXEC 문의 오퍼랜드 중에 가장 먼저 기술해야 한다.
-
예제
다음은 TMAXPROC 프러시저를 실행하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //STEP1 EXEC TMAXPROC
다음은 입력 스트림의 TMAXPROC 프러시저를 실행하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT // PEND //STEP1 EXEC TMAXPROC
프러시저 STEP 이름
오퍼랜드의 뒤에 기술할 수 있는 프러시저 STEP 이름에 대해서 설명한다. 프러시저를 실행하는 STEP에서 지정한 키워드 오퍼랜드들은 프러시저 내의 모든 STEP에서 지정한 키워드 오퍼랜드들을 오버라이드한다. 만약 프러시저 내의 특정 STEP의 오퍼랜드만을 오버라이드하고 싶을 경우에는 오퍼랜드에 프러시저 STEP 이름을 같이 기술하며 해당 STEP에서만 오퍼랜드를 오버라이드하게 할 수 있다.
-
사용법
오퍼랜드[.프러시저 STEP 이름] = 값
항목 설명 프러시저 STEP 이름
해당 오퍼랜드가 적용될 프러시저 STEP을 기호명칭으로 지정한다.
-
주의사항
프러시저 STEP 이름은 프러시저를 실행하는 STEP에서만 유효하다. 만약 프로그램을 실행하는 STEP이라면 프러시저 STEP 이름은 무시된다.
-
예제
다음은 프러시저 내의 모든 STEP의 COND 값을 (8,EQ)로 오버라이드하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT,COND=(0,EQ) //PSTEP2 EXEC PGM=TMAXSOFT,COND=(4,EQ) // PEND //STEP1 EXEC TMAXPROC,COND=(8,EQ)
다음은 프러시저 STEP인 PSTEP1의 COND 값을 (0,NE)로 오버라이드하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT,COND=(0,EQ) //PSTEP2 EXEC PGM=TMAXSOFT,COND=(4,EQ) // PEND //STEP1 EXEC TMAXPROC,COND.PSTEP1=(0,NE)
다음은 프러시저 STEP인 PSTEP1의 COND 값을 (0,NE)로 PSTEP2의 COND 값을 (4,NE)로 오버라이드하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC //PSTEP1 EXEC PGM=TMAXSOFT,COND=(0,EQ) //PSTEP2 EXEC PGM=TMAXSOFT,COND=(4,EQ) // PEND //STEP1 EXEC TMAXPROC,COND.PSTEP1=(0,NE),COND.PSTEP2=(4,NE)
6.10. PERFORM
STEP이 실행 중에 속하는 퍼포먼스 그룹을 지정한다. OpenFrame에서는 환경설정에 등록된 퍼포먼스 그룹 번호에 따른 NICE 값으로 변경시킨다.
OpenFrame에서는 퍼포먼스 그룹 번호를 UNIX의 NICE 값으로 치환해서 사용한다. 이 오퍼랜드가 지정되면 Runner는 퍼포먼스 그룹 번호를 NICE 값으로 치환시켜서 STEP 프로그램의 NICE 값을 변경시킨다.
STEP문에 PERFORM이 지정되어 있다면 JOB 문에 지정된 PERFORM은 무시한다.
-
사용법
PERFORM = 퍼포먼스 그룹 번호
항목 설명 퍼포먼스 그룹 번호
1~999의 부호 없는 정수로 퍼포먼스 그룹 번호를 지정한다.
-
주의사항
-
PERFORM 오퍼랜드를 NICE 기능으로 대체해서 사용하고자 한다면 OpenFrame 환경설정에 tjclrun 서브젝트, PERFORM 섹션의 USE_PERFORM 키의 VALUE 항목을 YES로 설정해야 한다. 자세한 내용은 "OpenFrame 환경설정 안내서"를 참고한다.
-
NICE의 값을 변경시키는 것은 슈퍼유저의 권한을 필요로 하므로 Runner에 setuid 설정을 함께 해야 한다. setuid 설정에 대한 내용은 "OpenFrame TJES 안내서"의 "제3장 JOB Execution"에서 setuid root tjclrun 부분을 참고한다.
-
-
예제
다음은 STEP1에 PERFORM을 10으로 지정하는 예제이다.
//JOB1 JOB PERFORM=100 //STEP1 EXEC PGM=TMAXSOFT,PERFORM=10
6.12. REGION
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
REGION[.프러시저 STEP 이름] = {값K | 값M}
항목 설명 값K
0~2096128의 부호 없는 정수를 지정한다.
값M
0~2047의 부호 없는 정수를 지정한다.
6.13. RLSTMOUT
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
RLSTMOUT[.프러시저 STEP 이름] = 값
항목 설명 값
0~9999의 부호 없는 정수를 지정한다.
6.14. SPARM
SYSTEM 파라미터의 값을 지정한다.
-
사용법
SPARM = '[시스템 파라미터]=[값]]'
항목 설명 시스템 파라미터
시스템에 통지할 파라미터를 지정한다. 현재는 JCL 실행일자를 설정하는 DATE와 시간을 설정하는 TIME만 지원한다.
값
DATE 파라미터는 다음의 형식으로 지정한다.
-
YYYY.MM.DD : YYYY는 1900년대 또는 2000년대 4자리 표현
-
YY.MM.DD : YY는 1900년대의 2자리 표현
TIME 파라미터는 HH:MM:SS 형식으로 지정한다.
-
-
예제
다음은 EXEC 문에 SPARM의 DATE 파라미터에 2010년 4월 1일 날짜와 12시 24분 30초의 시간을 설정하는 예제이다.
//STEP1 EXEC PGM=IKJEFT01,SPARM='DATE=DATE=2010.04.01,TIME=12:24:30'
6.15. TIME
해당 STEP에서 사용할수 있는 CPU time의 최댓값을 지정한다.
-
사용법
TIME[.프러시저 STEP 이름] = {([분],[초])} {1440 } {NOLIMIT } {MAXIMUM } {0 }
항목 설명 분
0~357912의 부호 없는 정수로 CPU time의 분 단위의 값이다.
초
0~59의 부호 없는 정수로 CPU time의 초 단위의 값이다.
1440
무제한의 값을 의미한다. CPU time에 제한을 두지 않는다.
NOLIMIT
1440과 마찬가지로 무제한의 값을 의미한다. CPU time에 제한을 두지 않는다.
0
1440과 마찬가지로 무제한의 값을 의미한다. CPU time에 제한을 두지 않는다.
MAXIMUM
357912 분을 의미한다.
-
주의사항
-
분만 지정할 때는 괄호를 생략할 수 있다.
-
지정하지 않으면 기본값은 0이다 .
-
tjclrun에서 CPU time 체크를 5초마다 하므로 최대 5초의 오차는 생길수 있다.
-
-
예제
다음은 STEP1의 TIME을 1분 10초로 지정하는 예이다.
//JOB1 JOB //STEP1 EXEC PGM=TMAXSOFT,TIME=(1,10)
다음은 STEP1의 TIME을 무제한으로 지정하는 예이다.
//JOB1 JOB //STEP1 EXEC PGM=TMAXSOFT,TIME=NOLIMIT
6.16. 기호 파라미터
STEP에서 실행하는 프러시저의 기호 파라미터의 값을 지정한다.
기호 파라미터들은 STEP에서 실행할 프러시저의 기호 파라미터들로 사용된다. 기호 파라미터들은 프러시저의 PROC 문에서 지정한 동일한 기호 파라미터의 값들을 오버라이드한다. 프러시저 내에서 기호 파라미터들은 "&기호 파라미터" 형식으로 사용하여 프러시저가 실행될 때 지정된 값으로 치환된다.
-
사용법
기호 파라미터 = [값]
항목 설명 값
인용 캐릭터 라인으로 기호 파라미터의 값을 지정한다.
-
주의사항
"&기호 파라미터" 형식으로 사용을 하는데 해당 기호 파라미터가 정의되지 않으면 "&기호 파라미터"는 치환되지 않고 그대로 남는다.
-
예제
다음은 기호 파라미터 A=step1으로 지정하여 PSTEP1의 PARM의 값은 step1, PSTEP2의 값은 default가 되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC A=default,B=default //PSTEP1 EXEC PGM=TMAXSOFT,PARM=&A //PSTEP2 EXEC PGM=TMAXSOFT,PARM=&B // PEND //STEP1 EXEC TMAXPROC,A=step1
다음은 기호 파라미터 A=,B=step1으로 지정하여 PSTEP1의 PARM의 값이 NULL이 되고 PSTEP2의 값은 step1이 되는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A //TMAXPROC PROC A=default,B=default //PSTEP1 EXEC PGM=TMAXSOFT,PARM=&A //PSTEP2 EXEC PGM=TMAXSOFT,PARM=&B // PEND //STEP1 EXEC TMAXPROC,A=,B=step1
7. IF/THEN/ELSE/ENDIF 문
분기해서 JCL문을 실행할수 있도록 조건을 지정하고 조건의 결과에 따라서 실행할 문장을 기술한다.
-
사용법
//[명칭]△¹IF△¹조건△¹THEN△¹[주석] . . 조건이 만족되었을때 실행 . //[명칭]△¹ELSE△¹[주석] . . 조건이 만족되지 않았을때 실행 . //[명칭]△¹ENDIF△¹[주석]
항목 설명 명칭
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. 명칭은 생략할 수 있다.
IF
오퍼레이션 기술 위치로 명칭 뒤에 1개 이상의 공백을 두고 'IF’라고 기술한다.
조건
'IF' 이후에 1개 이상의 공백을 두고 조건을 기술한다. 조건에 대한 자세한 내용은 조건의 설명을 참고한다.
THEN
조건 뒤에 1개 이상의 공백을 두고 'THEN’이라고 기술한다.
[주석]
'THEN' 이후에 1개 이상의 공백을 두고 기술한다. 주석은 71번째 칸까지 기술할 수 있다.
ELSE 문
조건이 만족되었을 때 실행할 문장을 모두 기술하고 나서 조건이 만족되지 않았을때 실행할 문장 앞에 기술한다.
ELSE 문은 생략할 수 있다. 생략을 하게되면 조건이 만족되지 않았을 때 실행하는 문장은 없게 된다.
ENDIF 문
IF 문의 마지막을 나타낸다. SET 문과 INCLUDE 문의 경우 JCL의 문법 분석 중에 실행되는 문장이기 때문에 IF 문과 ENDIF 문 사이에 기술하더라고 IF 문과 관계없이 실행된다.
조건
다음은 앞에서 언급한 조건에 대한 설명이다.
조건은 기본적으로 아래와 같이 이루어진다. 아래의 예에서 RC는 키워드 '<' 는 비교연산자이다.
// IF RC < 4 THEN
위의 경우 이전 STEP의 종료코드가 4보다 작은 경우 조건이 만족되는 것으로 처리하고 4 이상인 경우 조건이 만족하지 않는 경우로 처리하게 된다. 조건을 괄호로 둘러쌓아도 된다.
// IF (RC < 4) THEN
논리연산자를 사용해서 조건을 좀더 자세히 기술할 수 있다. 아래의 예에서 '|'와 'OR’은 논리연산자이다.
// IF (RC = 4 | RC EQ 8 OR RC = 12) THEN
-
연산자
연산자는 비교연산자와 논리연산자가 있다. 아래의 표에서 AND, OR, NOT이 논리연산자이고 나머지는 비교연산자이다.
연산자 기능 GT or >
~ 보다 크다.
LT or <
~ 보다 작다.
NG or ^> or ~>
~ 보다 크지 않다.
NL or ^< or ~<
~ 보다 작지 않다.
EQ or =
~ 와(과) 같다.
NE or ^= or ~=
~ 와 같지 않다.
GE or >=
~ 보다 크거나 같다.
LE or <=
~ 보다 작거나 같다.
AND or &
그리고
OR or |
또는
NOT or ^ or ~
~ 이(가) 아니다.
다음은 연산자를 사용하는 예들이다.
// IF RC = 4 THEN // IF RC EQ 4 THEN
위의 두 문장은 같은 의미이다. 해석하면 아래와 같다.
"RC는 4와 같다."
// IF (RC >= 4 & RC < 8) THEN // IF RC GE 4 AND RC LT 8 THEN
위의 두 문장은 같은 의미이다. 해석하면 아래와 같다.
"RC는 4보다 크거나 같다 그리고 RC는 8보다 작다."
// IF ~(RC > 4 & RC < 8) THEN // IF (RC <= 4 | RC >= 8) THEN
위의 두 문장은 해석은 다르지만 같은 결과를 나타낸다.
"RC는 4보다 크다 그리고 RC는 8보다 작다 가 아니다." "RC는 4보다 작거나 같다 또는 RC는 8보다 크거나 같다."
-
키워드
키워드에는 아래와 같이 3가지가 있다.
-
RC
STEP의 종료코드와 비교한다. 예를 들어 (RC = 8) 인 경우 STEP의 종료 코드가 8이면 조건을 만족하는 것으로 처리한다. 이전에 실행된 STEP의 모든 종료코드와 비교를 해서 하나라도 만족하면 만족한 것으로 처리한다. STEP이 하나도 실행되지 않은 경우 조건은 만족하지 않은 것으로 처리된다.
키워드 설명 STEP 이름.RC
지정한 STEP의 종료코드와 비교한다. 지정한 STEP이 실행되지 않은 경우 조건은 만족하지 않은 것으로 처리된다.
STEP 이름.프러시저 STEP 이름.RC
지정한 STEP의 프러시저 STEP의 종료코드와 비교한다. 지정한 STEP의 프러시저 STEP이 실행되지 않은 경우 조건은 만족하지 않은 것으로 처리된다.
-
ABEND
STEP의 비정상종료 여부를 비교한다. ABEND 자체가 조건이기 때문에 연산자가 따로 필요하지는 않다.
// IF ABEND THEN
이전에 실행된 모든 STEP에서 비정상종료 여부를 비교하여 하나라도 비정상종료된 경우 조건을 만족하는 것으로 처리한다.
키워드 설명 STEP 이름.ABEND
지정한 STEP이 비정상종료된 경우 조건을 만족하는 것으로 처리한다. 지정한 STEP이 실행되지 않은 경우 조건은 만족하지 않은 것으로 처리된다.
STEP 이름.프러시저 STEP 이름.ABEND
지정한 STEP의 프러시저 STEP이 비정상종료된 경우 조건을 만족하는 것으로 처리한다. 지정한 STEP의 프러시저 STEP이 실행되지 않은 경우 조건은 만족하지 않은 것으로 처리된다.
NOT의 기호 '~' 또는 '^'를 앞에 붙이면 모든 조건이 반대로 처리된다.
-
RUN
STEP의 실행 여부를 비교한다. RUN의 경우 모든 STEP을 비교할 수 없고, 앞에 'STEP 이름’이나 'STEP 이름.프러시저 STEP 이름’을 꼭 붙여야 한다.
키워드 설명 STEP 이름.RUN
지정한 STEP이 실행된 경우 조건을 만족하는 것으로 처리한다.
STEP 이름.프러시저 STEP 이름.RUN
지정한 STEP의 프러시저 STEP이 실행된 경우 조건을 만족하는 것으로 처리한다.
RUN 자체가 조건이기 때문에 연산자가 따로 필요하지는 않다.
// IF STEP1.RUN THEN
NOT의 기호 '~' 또는 '^'를 앞에 붙이면 모든 조건이 반대로 처리된다.
-
8. INCLUDE 문
지정한 멤버의 내용을 JCL 문장으로 포함시킬 것을 의미한다.
-
사용법
//[명칭]△¹INCLUDE△¹MEMBER=이름△[주석]
항목 설명 명칭
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. 명칭은 생략할 수 있다.
INCLUDE
오퍼레이션 기술 위치로 명칭 뒤에 1개 이상의 공백을 두고 'INCLUDE’이라고 기술한다. 명칭을 생략한 경우에는 "//" 이후로 1개 이상의 공백을 두고 기술한다.
MEMBER=이름
INCLUDE 이후에 1개 이상의 공백을 두고 기술한다. JCL 문장으로 포함시킬 내용이 있는 멤버를 기술한다.
멤버를 검색하는 기준은 아래의 순서에 따른다.
-
INCLUDE 문 이전에 JCLLIB 문이 기술되었다면 JCLLIB 문에서 기술된 PDS 데이터셋 순서대로 멤버를 검색한다.
-
INCLUDE 문 이전에 *PROCLIB 문(JES2 문)이 기술되었다면 *PROCLIB 문의 PROCLIB 파라미터로 기술한 DD 이름을 통해서 멤버를 기술한다.
*PROCLIB 문의 PROCLIB 파라미터로 기술한 DD 이름은 OpenFrame 환경설정에 tjes 서브젝트, PROCLIB 섹션에서 키워드로 이용되며 이를 통해 알게된 PDS 데이터셋 순서대로 멤버를 검색하게된다.
-
PDS 데이터셋 SYS1.PROCLIB에서 멤버를 검색한다.
[주석]
MEMBER=이름 이후 1개 이상의 공백을 두고 기술한다.
주석은 71번째 칸까지 기술할 수 있다.
-
-
예제
다음은 INCLUDE 문을 사용하는 예제로 아래는 각각 입력 JCL과 멤버 AAA의 내용이다.
//TESTJOB JOB CLASS=A // INCLUDE MEMBER=AAA //STEP1 EXEC PGM=TESTPGM //SYSOUT DD SYSOUT=* //
//JOBLIB DD DSN=PROD.PROCLIB1,DISP=SHR // DD DSN=PROD.PROCLIB2,DISP=SHR
위와 같은 경우 입력 JCL은 아래와 같이 처리된다.
//TESTJOB JOB CLASS=A //JOBLIB DD DSN=PROD.PROCLIB1,DISP=SHR // DD DSN=PROD.PROCLIB2,DISP=SHR //STEP1 EXEC PGM=TESTPGM //SYSOUT DD SYSOUT=* //
다음은 INCLUDE 문에서 멤버를 검색하는 예제이다.
// JCLLIB ORDER=(INCLUDE.MEMBER1,INCLUDE.MEMBER2) // INCLUDE MEMBER=AAA
위와 같이 기술된 경우 멤버 AAA는 INCLUDE.MEMBER1, INCLUDE.MEMBER2, SYS1.PROCLIB 순서로 검색된다.
//*JOBPARM PROCLIB=PROC00 // INCLUDE MEMBER=AAA
$ ofconfig list -n NODE1 -s tjes -sec PROCLIB -k PROC00 =================================================================================== SUBJECT | SECTION | KEY | VALUE =================================================================================== tjes | PROCLIB | PROC00 |INCLUDE.MEMBER3:INCLUDE.MEMBER4 ===================================================================================
위와 같이 기술된 경우 멤버 AAA는 INCLUDE.MEMBER3, INCLUDE.MEMBER4, SYS1.PROCLIB 순서로 검색된다.
9. JCL 커맨드문
JCL 커맨드를 기술한다. JCL 커맨드문은 JOB 문과 첫 번째 EXEC 문 사이에 기술한다. 이외의 위치에 기술된 JCL 커맨드문은 사용되지 않는다. JCL 커맨드문을 통해서 실행된 커맨드의 성공 여부는 해당 JOB이 SUBMIT되거나 실행되는 데 전혀 영향을 주지 않는다.
-
사용법
// 커맨드△¹오퍼랜드
항목 설명 커맨드
오퍼레이션 기술 위치로 "//"에 이어 1개 이상의 공백을 두고 커맨드를 기술한다. 지원되는 커맨드에 대한 설명은 커맨드를 참고한다.
오퍼랜드
오퍼레이션 이후로 1개 이상의 공백을 두고 오퍼랜드를 기술한다. 오퍼랜드는 커맨드의 종류에 따라서 다르다.
커맨드
다음은 앞에서 언급한 커맨드 항목에 대한 설명으로 OpenFrame에서는 설명에 있는 기능만을 지원한다.
커맨드 | 설명 |
---|---|
입력한 프러시저를 SUBMIT한다. |
위에 설명되지 않은 커맨드는 지원하지 않는다. |
10. JCLLIB 문
JCL에서 사용할 프러시저나 INCLUDE 문에서 지정한 JCL 문장들을 가져올 라이브러리를 지정한다.
-
사용법
//[명칭]△¹JCLLIB△¹ORDER=(라이브러리[,라이브러리]...)△[주석]
항목 설명 명칭
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. 명칭은 생략할 수 있다.
JCLLIB
오퍼레이션 기술 위치로 명칭 뒤에 1개 이상의 공백을 두고 'JCLLIB’이라고 기술한다. 명칭을 생략한 경우에는 "//" 이후로 1개 이상의 공백을 두고 기술한다.
ORDER=(라이브러리[,라이브러리]…)
'JCLLIB' 이후에 1개 이상의 공백을 두고 기술한다. 프러시저나 INCLUDE 문에서 지정한 JCL 문장들을 가져올 라이브러리를 지정한다. 라이브러리는 PDS 데이터셋으로 기술한다.
검색하는 기준은 아래의 순서에 따른다.
-
JCLLIB 문에서 기술된 라이브러리 순서대로 멤버를 검색한다.
-
*PROCLIB 문(JES2 문)이 기술되었다면 *PROCLIB 문의 PROCLIB 파라미터로 기술한 DD 이름을 통해서 멤버를 기술한다. *PROCLIB 문의 PROCLIB 파라미터로 기술한 DD 이름은 OpenFrame 환경설정에 tjes 서브젝트, PROCLIB 섹션의 키로 이용되며 이를 통해 알게 된 PDS 데이터셋 순서대로 멤버를 검색하게 된다.
-
PDS 데이터셋 SYS1.PROCLIB에서 멤버를 검색한다.
[주석]
오퍼랜드 이후 1개 이상의 공백을 두고 기술한다. 주석은 71번째 칸까지 기술할 수 있다.
-
-
예제
다음은 JCLLIB 문을 사용하는 예제이다.
//TESTJOB JOB CLASS=A //LIBRARY JCLLIB ORDER=PROD.PROCLIB1 //STEP1 EXEC PROC01 //SYSOUT DD SYSOUT=*
위와 같은 경우 PROC01이라는 프러시저는 PROC.PROCLIB1에서 검색하게 된다.
11. JOB 문
JOB의 시작을 의미하고, JOB의 속성을 기술한다.
-
사용법
//JOB 이름△¹JOB△¹위치 오퍼랜드[,키워드 오퍼랜드]...△¹[주석] //JOB 이름△¹JOB
항목 설명 JOB 이름
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. JOB 이름은 생략할 수 없으며 기호명칭으로 한다.
JOB
오퍼레이션 기술 위치로 JOB 이름 뒤에 1개 이상의 공백을 두고 'JOB’이라고 기술한다.
위치 오퍼랜드[,키워드 오퍼랜드]
'JOB' 이후에 1개 이상의 공백을 두고 오퍼랜드를 기술하며 모든 위치 오퍼랜드를 먼저 기술하고 이후에 키워드 오퍼랜드를 기술한다. 자세한 내용은 오퍼랜드와 각 오퍼랜드 절의 설명을 참고한다.
[주석]
오퍼랜드란 이후에 1개 이상의 공백을 두고 기술한다. 주석은 71번째 칸까지 기술할 수 있다. 모든 오퍼랜드를 생략한 경우에는 주석을 기술할 수 없다.
오퍼랜드
다음은 앞에서 언급한 오퍼랜드에 대한 설명이다. 각 오퍼랜드에 대한 자세한 내용은 해당 절의 내용을 참고한다.
-
위치 오퍼랜드
OpenFrame에서는 TIMECONTROLLER 기능을 제외한 구문들은 문법 오류만 검사하고 사용하지 않는다. 단, 2번째 파라미터(프로그래머명)를 기술한 경우에는 환경변수(PROGRAMMERNAME)에 넣어 어셈블러와 같은 프로그램에 전달을 한다.
항목 설명 TIME CONTROLLER를 사용하기 위한 값을 지정한다.
-
키워드 오퍼랜드
항목 설명 OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
JOB CLASS를 지정한다.
JOB STEP 종료 후 반환코드와 비교하여 이후 STEP의 실행 여부를 결정하는 조건을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
시스템 메시지가 출력되는 데이터셋의 출력 클래스를 지정한다. OpenFrame에서는 DD 문의 "SYSOUT=*"를 지정하는 경우 적용되는 용도로만 사용된다.
JOB의 시스템 메시지의 출력 레벨을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
비밀번호를 지정한다.
JOB이 실행 중에 속하는 퍼포먼스 그룹을 지정한다.
JOB의 우선순위를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
JOB의 재시작 STEP을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSTEM 파라미터의 값을 지정한다.
JOB에서 사용할 수 있는 CPU time의 최댓값을 지정한다.
JOB의 실행 형태를 지정한다.
사용자를 지정한다.
11.2. BYTES
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
BYTES = {값 } {(값,CANCEL) } {(값,DUMP) } {(값,WORNING)}
항목 설명 값
0~999999의 부호 없는 정수이다.
11.3. CARDS
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
CARDS = {값 } {(값,CANCEL) } {(값,DUMP) } {(값,WORNING)}
항목 설명 값
0~99999999의 부호 없는 정수이다.
11.5. CLASS
JOB CLASS를 지정한다. JOB 문에 지정된 CLASS는 해당 JOB의 스케줄링에 관여된다. TJES에서는 각각의 노드별로 Runner Slot들을 설정한다. 그리고 Runner Slot들은 각각 자신이 실행할 수 있는 CLASS들이 지정되어 있다. TJES 스케줄러는 SUBMIT된 JOB의 CLASS에 맞는 Runner Slot이 비어 있으면 해당 JOB을 실행하도록 한다. TJES에서는 CLASS별로 설정을 하여 SUBMIT된 JOB을 START나 HOLD 상태로 설정할 수 있다.
예를 들어 A CLASS를 START, B CLASS를 HOLD로 설정하면 A CLASS로 지정한 JOB은 SUBMIT 후 START 상태가 되고 B CLASS로 지정한 JOB은 SUBMIT 후 HOLD 상태가 된다. 설정이 되어 있지 않는 CLASS로 SUBMIT한 JOB은 START 상태가 된다.
JOB 문의 TYPRUN 오퍼랜드를 통해서 JCLHOLD나 HOLD를 지정한 경우에는 이 CLASS별 설정과 관계없이 HOLD 상태가 된다.
|
다음은 CLASS 오퍼랜드에 대한 설명이다.
-
사용법
CLASS = job class
항목 설명 job class
JOB의 스케줄링에 사용되는 클래스를 A~Z, 0~9 사이의 한 문자로 지정한다.
-
주의사항
JOB 문에서 이 오퍼랜드를 생략한 경우 JOB의 CLASS는 OpenFrame 환경설정에 tjclrun 서브젝트, JOB 섹션의 CLASS 키의 VALUE 항목의 지정에 따른다. tjes 서브젝트 환경설정 항목의 세부 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
예제
다음은 JOB CLASS를 A로 지정하는 예제이다.
//JOB1 JOB CLASS=A
11.6. COND
JOB STEP 종료 후 반환코드와 비교하여 이후 STEP의 실행 여부를 결정하는 조건을 지정한다.
COND 오퍼랜드가 지정되어 있으면 매 STEP이 종료될 때마다 STEP의 반환코드와 지정된 코드를 비교한다. JOB문의 COND 조건이 맞는 경우 EXEC 문의 COND를 통한 STEP별 실행 여부를 고려하지 않고, JOB을 종료한다. COND 오퍼랜드에 지정된 조건이 여러 개인 경우 지정된 조건들 중에 하나라도 만족하게 되면 COND 조건은 만족된 것으로 판단한다.
COND 오퍼랜드의 처리와 유사하게 OpenFrame에서는 OpenFrame 환경설정에 rc 서브젝트, PGM_NAME, PGM_TYPE 섹션을 통한 STEP의 반환코드를 검사하여 에러 처리하는 기능이 있다. UNIX로 리호스팅하면서 실행되는 프로그램들의 반환코드가 Mainframe에서와 다르게 나올 수가 있기 때문에 STEP의 에러 여부를 유연하게 판단하기 위해 OpenFrame 환경설정에 rc 서브젝트를 사용하게 되었다.
OpenFrame 환경설정에 rc 서브젝트의 설정이 COND 오퍼랜드의 설정보다 우선순위가 높기 때문에 OpenFrame 환경설정에 rc 서브젝트의 설정을 통해서 STEP이 에러로 처리되는 경우에는 COND 조건에 의해 이후 STEP이 실행되어야 하더라도 해당 STEP을 수행하지 않고 종료한다.
rc 서브젝트 환경설정 항목의 세부 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다. |
다음은 COND 오퍼랜드에 대한 설명이다.
-
사용법
COND = ((코드,연산 부호),...)
항목 설명 코드
JOB STEP의 반환코드와 비교할 조건코드를 부호 없는 정수로 지정한다.
연산 부호
다음 연산 부호 중 원하는 값을 지정한다.
-
EQ : 코드가 반환코드와 같다.
-
NE : 코드가 반환코드와 다르다.
-
GT : 코드가 반환코드보다 크다.
-
GE : 코드가 반환코드보다 크거나 같다.
-
LT : 코드가 반환코드보다 작다.
-
LE : 코드가 반환코드보다 작거나 같다.
-
-
주의사항
-
조건 파라미터는 최대 8개까지 유효하며, 9번째 이상의 조건 파라미터는 무시된다. 조건 파라미터를 1개만 지정한 경우에는 가장 밖에 있는 괄호를 생략할 수 있다.
-
JOB 문과 EXEC 문에 COND가 지정되어 있을 때 JOB 문의 COND가 만족되면 EXEC 문의 COND는 고려되지 않는다.
-
COND 오퍼랜드의 값은 문법 검사할 때 검사하지 않는다.
-
-
예제
다음은 반환코드가 0일 때만 JOB이 계속 실행되도록 지정하는 예제이다.
//JOB1 JOB COND=(0,NE)
다음은 반환코드가 4, 8, 12일 때만 JOB을 종료하도록 지정하는 예제이다.
//JOB1 JOB COND=((4,EQ),(8,EQ),(12,EQ))
다음은 반환코드가 0~12일 때만 JOB이 계속 실행되도록 지정하는 예제이다.
//JOB1 JOB COND=(12,LT)
다음은 반환코드가 4~12일 때만 JOB이 계속 실행되도록 지정하는 예제이다.
//JOB1 JOB COND=((4,GT),(12,LT))
11.9. LINES
OpenFrame에서는 문법 오류만 검사하고 사용하지는 않는다.
-
사용법
LINES = {값 } {(값,CANCEL) } {(값,DUMP) } {(값,WARNING)}
항목 설명 값
0~999999의 부호 없는 정수이다.
11.10. MEMLIMIT
OpenFrame에서는 문법 오류만 검사하고 사용하지는 않는다.
-
사용법
MEMLIMIT = {값M|값G|값T|값P} {NOLIMIT}
항목 설명 값M
0~99999의 부호 없는 정수이다.
값G
0~99999의 부호 없는 정수이다.
값T
0~99999의 부호 없는 정수이다.
값P
0~16384의 부호 없는 정수이다.
11.11. MSGCLASS
JOB 내의 DD 문에서 SYSOUT=*을 지정할 때 "*"의 값을 지정한다.
-
사용법
MSGCLASS = class
항목 설명 class
출력 클래스를 A~Z, 0~9 사이의 1문자로 지정한다.
-
주의사항
JOB 문에서 이 오퍼랜드를 생략한 경우 MSGCLASS는 OpenFrame 환경설정에 tjclrun 서브젝트, JOB 섹션의 MSGCLASS 키의 VALUE 항목 값에 따른다. tjclrun 서브젝트 환경설정 항목의 세부 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
예제
다음은 MSGCLASS를 Z로 지정하는 예제이다.
//JOB1 JOB 8493,KIM,MSGCLASS=Z
11.12. MSGLEVEL
JOB의 시스템 메시지의 출력 레벨을 지정한다.
-
사용법
MSGLEVEL = ([값][,{0}]) {1}
항목 설명 [{0} {1}]
시스템 메시지의 출력 레벨을 지정한다.
-
0 : 시스템 메시지 중 에러 메시지만을 출력한다.
-
1 : 시스템 메시지 중 에러 메시지와 함께 데이터셋의 LOCK, ALLOCATE 등의 정보 메시지를 출력한다.
-
-
주의사항
JOB 문에서 이 오퍼랜드를 생략한 경우 MSGLEVEL은 OpenFrame 환경설정에 tjclrun 서브젝트, JOB 섹션의 MSGLEVEL 키의 VALUE 값에 따른다. tjclrun 서브젝트 환경설정 항목의 세부 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
예제
다음은 MSGCLASS를 Z, MSGLEVEL을 1,0으로 지정하는 예제이다.
//JOB1 JOB MSGCLASS=Z,MSGLEVEL=(1,0)
11.13. NOTIFY
OpenFrame에서는 문법 오류만 검사하고 사용하지는 않는다.
-
사용법
NOTIFY = {nodename.userid} {userid }
항목 설명 nodename
8자리 이내의 기호명칭으로 지정한다.
userid
8자리 이내의 기호명칭으로 지정한다.
11.14. PAGES
문법 오류만 검사하고 사용하지는 않는다.
-
사용법
PAGES = {값 } {(값,CANCEL) } {(값,DUMP) } {(값,WARNING)}
항목 설명 값
0~99999999의 부호 없는 정수이다.
11.15. PASSWORD
비밀번호를 지정한다. JOB 문의 USER 오퍼랜드와 함께 사용된다. 따라서 USER 오퍼랜드를 지정하지 않으면 오퍼랜드는 무시된다. USER 오퍼랜드를 지정하고 이 오퍼랜드를 지정하지 않으면 시스템은 TACF 대리자 기능을 사용하는 것으로 판단한다.
TACF 대리자 기능에 대한 자세한 내용은 OpenFrame Batch "TJES 안내서"의 "보안"을 참고한다. |
다음은 PASSWORD 오퍼랜드에 대한 설명이다.
-
사용법
PASSWORD = password
항목 설명 password
OpenFrame 보안 모듈인 TACF의 사용자에 대한 비밀번호를 지정한다.
password는 8자리 이내의 영문자, 숫자로 지정한다.
-
예제
다음은 USER를 KIM으로 지정하고, PASSWORD를 tmaxsoft로 지정하는 예제이다.
//JOB1 JOB USER=KIM,PASSWORD=tmaxsoft
다음은 USER를 KIM으로 지정하고 PASSWORD를 지정하지 않아서 TACF 대리자 기능을 사용하는 예제이다.
//JOB1 JOB USER=KIM
11.16. PERFORM
JOB이 실행 중에 속하는 퍼포먼스 그룹을 지정한다. OpenFrame에서는 환경설정에 등록된 퍼포먼스 그룹 번호에 따른 NICE 값으로 변경시킨다.
OpenFrame에서는 퍼포먼스 그룹 번호를 UNIX의 NICE 값으로 치환해서 사용한다. 오퍼랜드가 지정되면 Runner는 퍼포먼스 그룹 번호를 NICE 값으로 치환시켜서 STEP 프로그램의 NICE 값을 변경시킨다.
JOB 문에도 PERFORM이 지정되어 있고 STEP문에도 PERFORM이 지정되어 있다면 해당 STEP에서는 해당 STEP의 PERFORM 설정을 따르고 나머지 STEP에서는 JOB의 PERFORM 설정을 따른다.
-
사용법
PERFORM = 퍼포먼스 그룹 번호
항목 설명 퍼포먼스 그룹 번호
1~999의 부호 없는 정수로 퍼포먼스 그룹 번호를 지정한다.
-
주의사항
-
PERFORM 오퍼랜드를 NICE 기능으로 대체해서 사용하고자 한다면 OpenFrame 환경설정에 tjclrun 서브젝트, PERFORM 섹션의 USE_PERFORM 키의 VALUE 항목을 YES로 설정해야 한다. tjclrun 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
NICE의 값을 변경시키는 것은 슈퍼유저의 권한을 필요로 하므로 Runner에 setuid 설정을 함께 해야 한다. 자세한 대한 내용은 "OpenFrame TJES 안내서"의 "제3장 JOB Execution"에서 setuid root tjclrun 부분을 참고한다.
-
-
예제
다음은 PERFORM을 100으로 지정하는 예제이다.
//JOB1 JOB PERFORM=100
11.17. PRTY
JOB의 우선순위를 지정한다. JOB의 우선순위는 JOB CLASS와 함께 스케줄링에 사용되며 숫자가 높을수록 우선순위가 높다.
스케줄러에서는 동일 CLASS를 가진 JOB들이 있을 때 이 오퍼랜드의 값에 따라서 어떤 JOB을 먼저 실행할지를 결정한다. 동일한 우선순위를 가질 때는 먼저 SUBMIT된 JOB이 실행된다. JOB의 우선순위는 Aging 정책에 따라서 시간이 지날수록 높아진다. 우선순위에 대한 처리는 OpenFrame 환경설정에 tjes 서브젝트, SCHEDULING 섹션의 PRTYHIGH, PRTYLOW 키의 VALUE 항목을 참고한다.
tjes 서브젝트에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다. |
-
사용법
PRTY = 우선순위
항목 설명 우선순위
0~15의 부호 없는 정수로 JOB의 우선순위를 지정한다.
-
주의사항
이 오퍼랜드를 사용하기 위해서는 OpenFrame 환경설정에 tjes 서브젝트, SCHEDULING 섹션의 PRTYJOB 키의 VALUE 항목을 YES로 설정해야 한다.
-
예제
다음은 PRTY를 5로 지정하는 예제이다.
//JOB1 JOB PRTY=5
11.19. REGION
OpenFrame에서는 문법 오류만 검사하고 사용하지는 않는다.
-
사용법
REGION = {값K | 값M}
항목 설명 값K
0~2096128의 부호 없는 정수이다.
값M
0~2047의 부호 없는 정수이다.
11.20. RESTART
JOB의 재시작 STEP을 지정한다. 해당 JOB이 어떤 이유로 실행 중에 종료되어서 나중에 다시 이 JOB을 실행할 때 중간에서부터 시작하고 싶을 때 지정하는 오퍼랜드이다. 이 오퍼랜드의 값을 지정하면 JOB은 지정된 STEP에서부터 실행한다. 해당하는 STEP 이름이 여러 개 있을 때는 가장 먼저 나오는 STEP에서 시작한다. 존재하지 않는 STEP을 적용하면 FLUSH가 발생한다.
-
사용법
RESTART = {*} {STEP 이름 } {stepname.procstepname}
항목 설명 asterisk(*)
재시작 STEP이 첫 번째 STEP인 것을 의미한다.
STEP 이름
재시작 STEP의 이름을 지정한다. 이름은 8자리 이내의 기호명칭으로 지정한다.
stepname.procstepname
재시작 STEP이 프러시저 내부 스텝인 경우 프러시저 스텝명과 재시작할 프러시저 내부 스텝 이름을 예제와 같이 지정한다.
-
예제
다음은 RESTART를 애스터리스크(*)로 지정하는 예제이다.
//JOB1 JOB RESTART=*
다음은 RESTART를 STEP3으로 지정하는 예제이다.
//JOB1 JOB RESTART=STEP3
다음은 프러시저 내부 스텝명을 같이 지정하는 예제이다.
//JOB1 JOB RESTART=(STEP3.PSTEP4)
11.23. SPARM
SYSTEM 파라미터의 값을 지정한다.
-
사용법
SPARM = '[시스템 파라미터]=[값]]'
항목 설명 시스템 파라미터
시스템에 통지할 파라미터를 지정한다. 현재는 JCL 실행일자를 설정하는 DATE와 시간을 설정하는 TIME만 지원한다.
값
DATE 파라미터는 다음의 형식으로 지정한다.
-
YYYY.MM.DD : YYYY는 1900년대 또는 2000년대 4자리 표현
-
YY.MM.DD : YY는 1900년대의 2자리 표현
TIME 파라미터는 HH:MM:SS 형식으로 지정한다.
-
-
예제
다음은 JOB 문에 SPARM의 DATE 파라미터에 2010년 4월 1일 날짜와 12시 24분 30초의 시간을 설정하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=X,SPARM='DATE=2010.04.01,TIME=12:24:30'
11.24. TIME
JOB에서 사용할 수 있는 CPU time의 최댓값을 지정한다. 지정된 CPU time을 초과하면 해당 JOB은 FLUSH로 종료된다.
-
사용법
TIME = {([분],[초])} {1440 } {NOLIMIT } {MAXIMUM } {0 }
항목 설명 분
0~357912의 부호 없는 정수이다. CPU time의 분 단위의 값이다.
초
0~59의 부호 없는 정수이다. CPU time의 초 단위의 값이다.
1440
무제한의 값을 의미한다. CPU time에 제한을 두지 않는다.
NOLIMIT
1440과 마찬가지로 무제한의 값을 의미한다. CPU time에 제한을 두지 않는다.
0
1440과 마찬가지로 무제한의 값을 의미한다. CPU time에 제한을 두지 않는다.
MAXIMUM
357912분을 의미한다.
-
주의사항
-
분만 지정할 때는 괄호를 생략할 수 있다.
-
지정하지 않으면 OpenFrame 환경설정에 tjclrun 서브젝트, JOB 섹션의 TIME 키의 VALUE 항목의 값을 사용한다. 설정된 값이 없으면 0이다. tjclrun 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
tjclrun에서 CPU time 체크를 5초마다 하므로 최대 5초의 오차는 생길 수 있다.
-
JOB 문에 TIME=1440이 지정되면 EXEC문의 모든 TIME값 및 기본 TIME값이 무효화된다. JOB 내의 모든 STEP은 TIME=1440 또는 TIME=NOLIMIT을 지정한 것과 같이 CPU time에 제한을 두지 않는다.
-
-
예제
다음은 JOB1의 TIME을 10초로 지정하는 예이다.
//JOB1 JOB CLASS=A,MSGCLASS=A,TIME=(,10) //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
다음은 JOB1의 TIME을 2분으로 지정하는 예이다.
//JOB1 JOB CLASS=A,MSGCLASS=A,TIME=2 //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
다음은 JOB1의 TIME을 MAXIMUM으로 지정하는 예이다.
//JOB1 JOB CLASS=A,MSGCLASS=A,TIME=MAXIMUM //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
11.25. TIMECONTROLLER
JOB에서 날짜 또는 시간을 설정하기 위하여 값을 지정한다.
-
사용법
//{xxcyyddd} {xxdhhmm} {xxYDnn}
항목 설명 xx
TIME CONTROLLER를 사용하기 위한 두 글자의 접두사이다.
c
Century를 의미한다. 0은 20세기, 1은 21세기를 나타낸다.
yy
Century를 제외한 연도를 의미한다. 00~99까지 작성 가능하다.
ddd
Julian day를 의미한다. 000~365까지 작성 가능하다.
d
현재 날짜를 기준으로 하여 오프셋의 시간과 분을 지정한다.
-
P : 실제 시스템 시간에 hhmm 만큼 더한다.
-
M : 실제 시스템 시간에 hhmm 만큼 제한다.
-
F : hhmm 에 지정된 값을 시스템 시간으로 설정 후 사용자 Application 에서 시간을 요청하면, 본 구문으로 설정된 시스템 시간에서 경과된 시간을 나타낸다.
-
A : hhmm 에 지정된 값을 사용한다.
-
E : P 와 동일한 기능이다.
-
W : M 과 동일한 기능이다.
hh
시간을 의미한다. 00~23까지 작성 가능하다.
mm
분을 의미한다. 00~59까지 작성 가능하다.
Y
연도 오프셋을 지정하는데 필요한 문자이다.
D
현재 날짜를 기준으로 하여 오프셋의 연도를 지정한다.
-
P : 연도를 증가시킨다.
-
M : 연도를 감소시킨다.
nn
연도 오프셋의 값을 지정한다.
-
-
주의사항
-
OpenFrame 환경설정에 tjclrun 서브젝트, OPTION 섹션의 TIME_CONTROLLER 키의 VALUE 항목이 YES로 설정되어야 한다. NO로 설정되어 있거나, 값이 없으면 사용할 수 없다.
-
OpenFrame 환경설정에 tjclrun 서브젝트, OPTION 섹션의 TIME_CONTROLLER_PREFIX 키의 VALUE 항목은 두 글자로 된 접두사가 설정되어야 한다.
tjclrun 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
-
예제
다음은 연도를 2030 으로 지정하는 예이다.
//JOB1 JOB 000000000,'//TCP10' //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
다음은 날짜를 20201231로 지정하는 예이다.
//JOB1 JOB 000000000,'//TC120365' //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
다음은 시스템 시간에 1시간 더한 시간을 지정하는 예이다.
//JOB1 JOB 000000000,'//TCP0100' //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
11.26. TYPRUN
JOB의 실행 형태를 지정한다. OpenFrame에서는 HOLD, JCLHOLD, JEM, SCAN만을 지원한다.
JCL이 SUBMIT되는 과정은 다음과 같다.
-
JCL을 입력받는다.
-
입력받은 JCL의 기본 문법 검사를 하는 JCL 파싱 처리를 한다.
기본 문법 검사에서는 JOB 제어문의 위치에 대한 체크, 각각 제어문에 맞는 키워드 체크, 해당 키워드에 넣을 수 있는 값에 대한 체크, 계속 지정에 대한 체크가 포함된다.
-
입력받은 JCL에서 사용하는 프러시저를 SPOOL에 COPY하고 그 프러시저의 기본 문법 검사를 하는 컨버전 처리를 한다.
-
스케줄링 처리를 한다.
다음은 TYPRUN 오퍼랜드에 대한 설명이다.
-
사용법
TYPRUN = {COPY} {HOLD} {JCLHOLD} {JEM} {SCAN}
항목 설명 COPY
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
HOLD
JCL 파싱 처리와 컨버전까지만 처리하고 스케줄링 처리는 하지 않은 상태로 HOLD 상태가 된다.
TJESMGR의 PS 또는 PSJOB 명령어를 통해서 확인할 수 있다.
스케줄링 처리를 하려면 TJESMGR의 START 명령어를 통해서 변경할 수 있다.
JCLHOLD
JCL 파싱 처리만 하고 JCLHOLD 상태가 된다.
JOB의 [W]HOLD 상태로 TJESMGR의 PS 또는 PSJOB 명령어나 OpenFrame Manager의 [Batch] 메뉴에서 확인할 수 있다.
컨버전 처리와 스케줄링 처리를 하려면 TJESMGR의 START 명령어를 통해서 변경할 수 있다.
JEM
JCL에 기술된 프로그램의 존재 여부, 데이터셋의 존재 여부, 데이터셋의 카탈로그 존재 여부를 체크해서 해당 JCL에 존재하는 논리적인 오류에 대한 결과 리포트를 SYSMSG에 기록한 후 오류가 없으면 Done(M00000)으로 오류가 있으면 Done(M00001)로 종료된다.
실제로 JOB을 실행하지 않고도 에러가 발생할 수 있는 요소를 사전에 파악할 수 있는 기능으로 이 오퍼랜드가 지정된 JOB은 스케줄링되어 러너에서 처리된다.
SCAN
JCL 파싱 처리와 컨버전까지 처리하고 스케줄링 처리를 하지 않은 상태로 결과 리포트를 SYSMSG에 기록한 후 DONE(D00000)으로 종료된다.
이 오퍼랜드는 JOB의 SUBMIT을 통과하는 검사만 하고 실제 스케줄링은 하지 않도록 지정하는 것이다.
-
주의사항
TYPRUN 오퍼랜드가 지정되지 않으면 JCL은 모든 SUBMIT 과정을 거쳐 스케줄링 처리가 된다.
-
예제
다음은 TYPRUN을 SCAN으로 지정하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A,TYPRUN=SCAN //STEP1 EXEC PGM=IEFBR14 //SYSOUT DD SYSOUT=* //
다음은 SYSMSG에 기록된 결과 리포트이다.
------------------------------------------------------------------------------ ** JCL SCAN start ** ------------------------------------------------------------------------------ 1 //JOB1 JOB CLASS=A,MSGCLASS=A,TYPRUN=SCAN 2 //STEP1 EXEC PGM=IEFBR14 3 //SYSOUT DD SYSOUT=* // ------------------------------------------------------------------------------ ** JCL SCAN finish ** ------------------------------------------------------------------------------
다음은 TYPRUN을 SCAN으로 지정하고 JCL 파싱 처리에서 에러가 발생하는 예제이다.
//JOB1 JOB CLASS=A,MSGCLASS=A,TYPRUN=SCAN //STEP1 EXEC PGM=IEFBR14, this comma is wrong. //SYSOUT DD SYSOUT=* //
다음은 SYSMSG에 기록된 결과 리포트이다.
1 //JOB1 JOB CLASS=A,MSGCLASS=A,TYPRUN=SCAN 2 //STEP1 EXEC PGM=IEFBR14, this comma is wrong. 3 //SYSOUT DD SYSOUT=* // Syntax Error [Line:2;Column: ;Keyword: ;Message:Expected continuation not received]
다음은 TYPRUN을 JEM으로 지정하고 JCL 오류 체크에서 에러가 발생하는 예제이다. STEP01에서 IEFBR141이라는 프로그램이 없고 STEP02에서 SHR로 지정한 DD02가 존재하지 않기 때문에 각각 에러가 발생한다.
//JEMTEST JOB TYPRUN=JEM //STEP01 EXEC PGM=IEFBR141 //DD01 DD DSN=TMAX.JEM.DATASET,DISP=(MOD,DELETE) //STEP02 EXEC PGM=IEFBR14 //DD02 DD DSN=TMAX.JEM.DATASET,DISP=SHR //STEP03 EXEC PGM=IEFBR14 //DD03 DD DSN=TMAX.JEM.DATASET,DISP=MOD
다음은 SYSMSG에 기록된 결과 리포트이다.
JOBID=JOB00028 JOBPOS=0 RUNPID=8998 JEMTEST JEM (test) ============================================================================== ---------------------------- STEP01 EXEC PGM step ---------------------------- EXEC PGM=IEFBR141 (JEM mode) (JRN0143F) no program file(IEFBR141) exist - check JCL JOBLIB, JCL STEPLIB, and environment PATH ---------------------------- STEP02 EXEC PGM step ---------------------------- EXEC PGM=IEFBR14 (JEM mode) (JRN2008E) [OLDDD02] Dataset 'TMAX.JEM.DATASET' does not exists. ---------------------------- STEP03 EXEC PGM step ---------------------------- EXEC PGM=IEFBR14 (JEM mode) ============================================================================== (JRN2010I) JEM RUN skip enqueue for output processing ok (JRN2017I) JEM RUN total error count : 2 ---------------------------- JEM PROCESS FINISHED ----------------------------
11.27. USER
사용자를 지정한다. 이 오퍼랜드는 PASSWORD 오퍼랜드인 비밀번호와 함께 사용해서 TACF에 사용자 인증 및 자원에 대한 사용 권한을 체크하는 용도로 사용한다.
JCL을 SUBMIT하면 시스템은 TACF에 사용자에 대한 인증 체크를 한다. USER 오퍼랜드가 지정되어 있다면 PASSWORD 오퍼랜드의 비밀번호와 함께 인증 체크(실행 사용자)를 하고 USER 오퍼랜드가 지정되어 있지 않다면 시스템은 JCL을 SUBMIT한 USER로 TACF에 사용자 인증 체크(SUBMIT 사용자)를 한다.
이 오퍼랜드를 지정하고 PASSWORD 오퍼랜드를 지정하지 않으면 시스템은 TACF 대리자 기능을 사용하여 사용자 인증 체크(대리 사용자)를 한다.
Runner에서는 사용자 인증이 된 실행 사용자, SUBMIT 사용자 또는 대리 사용자로 사용 권한을 체크한다. 사용 권한 체크를 하게 되는 리소스는 JOB에서 사용하는 모든 데이터셋과 모든 프로그램들이다. 사용자가 특정 리소스에 대해서 권한 체크를 하려면 대상 리소스를 TACF에 등록해야 한다. 그 리소스가 데이터셋이면 DATASET CLASS에, 프로그램이면 UTILITY CLASS에 등록한다.
TACF 대리자 기능에 대한 자세한 내용은 OpenFrame Batch "TJES 안내서"의 "보안"을 참고한다. |
다음은 USER 오퍼랜드에 대한 설명이다.
-
사용법
USER = user
항목 설명 user
OpenFrame 보안 모듈인 TACF의 사용자를 지정한다.
user는 8자리 이내의 기호명칭으로 지정한다.
-
주의사항
DATASET과 UTILITY에 관한 사용 권한의 체크 여부는 OpenFrame 환경설정에 tjclrun 서브젝트, TACF 섹션의 CHECK_DSAUTH, CHECK_UTAUTH 키의 VALUE 항목을 통해 확인한다. tjclrun 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
예제
다음은 USER를 KIM으로 지정하고, PASSWORD를 tmaxsoft로 지정하는 예제이다.
//JOB1 JOB USER=KIM,PASSWORD=tmaxsoft
다음은 USER를 KIM으로 지정하고, PASSWORD를 지정하지 않아서 TACF 대리자 기능을 사용하는 예제이다.
//JOB1 JOB USER=KIM
12. OUTPUT 문
출력 처리를 하기위한 SYSOUT 데이터셋의 속성을 지정한다.
-
사용법
//명칭 OUTPUT△¹키워드 오퍼랜드[,키워드 오퍼랜드]...△¹[주석]
항목 설명 명칭
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. 명칭은 생략할 수 없다. OUTPUT 문의 명칭은 생략을 할 수 없고, DD 문에서 OUTPUT 오퍼랜드를 통해 해당 OUTPUT 문을 레퍼런스할 때 사용된다.
OUTPUT
오퍼레이션 기술 위치로 명칭 뒤에 1개 이상의 공백을 두고 'OUTPUT’이라고 기술한다.
키워드 오퍼랜드[,키워드 오퍼랜드]
'OUTPUT' 이후에 1개 이상의 공백을 두고 키워드 오퍼랜드를 기술한다. 키워드 오퍼랜드의 순서는 상관없다. 자세한 내용은 오퍼랜드와 각 오퍼랜드 절의 설명을 참고한다.
[주석]
오퍼랜드란 이후에 1개 이상의 공백을 두고 기술한다. 주석은 71번째 칸까지 기술할 수 있다.
오퍼랜드
다음은 앞에서 언급한 오퍼랜드에 대한 설명이다. 각 오퍼랜드에 대한 자세한 내용은 해당 절의 내용을 참고한다.
-
키워드 오퍼랜드
항목 설명 SYSOUT 데이터셋이 전달될 주소를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋과 연관된 건물의 이름을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
데이터셋을 출력할 때 출력 문자와 크기에 대한 설정 테이블을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋의 츨력 클래스를 지정한다. DD 문의 SYSOUT 파라미터에 클래스 지정이 없는 경우에만 적용된다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋의 복사 횟수를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
출력 데이터셋과 연관된 부서 ID를 지정한다.
SYSOUT 데이터셋의 출력처를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
FCB 이름을 지정한다.
용지에 일정한 서식, 범위를 미리 인쇄하는 경우에 사용하는 필름 OVERLAY의 식별명을 지정한다.
FORMDEF 이름을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋의 서식번호를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
이메일을 숨은 참조할 수신인의 메일 주소를 하나 이상 지정한다.
이메일을 참조할 수신인의 메일 주소를 하나 이상 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
이메일을 보낸 사람의 이름이나 기타 식별자를 지정한다.
이메일을 수신할 수신인의 메일 주소를 하나 이상 지정한다.
SYSOUT 데이터셋의 COPY 수식 모듈명과 CHARS 오퍼랜드로 지정하는 테이블 중 사용할 테이블의 순서에 대응한 번호를 지정한다.
SYSOUT 데이터셋과 연관된 이름을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋으로 생성된 OUTPUT의 처리 방법을 지정한다.
인쇄할 페이지 뒷면에 배치되는 overlay 이름을 지정한다.
인쇄할 페이지 앞면에 배치되는 overlay 이름을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
PAGEDEF 이름을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
이메일 수신자가 응답할 수 있는 이메일 주소를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
성공적으로 전송된 데이터셋을 유지하는 시간을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋에 대한 출력의 구분 페이지에 room ID를 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
SYSOUT 데이터셋 출력의 구분 페이지에 인쇄할 출력 설명을 지정한다.
SYSOUT 데이터셋의 각 출력 행에 대한 논리 레코드에 테이블 참조 문자(TRC) 코드가 포함되는지 여부를 지정한다.
universal character set을 지정한다.
사용자 정의 데이터를 지정한다.
USERLIB 데이터셋 이름을 지정한다.
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
외부 출력 모듈을 지정한다.
12.1. ADDRESS
SYSOUT 데이터셋이 전달될 주소를 지정한다.
-
사용법
ADDRESS = (주소값[,주소값]...)
항목 설명 주소값
출력물이 전달될 주소를 문자열로 지정한다. 주소값의 길이는 최대 60bytes이며 10개까지 지정할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 ADDRESS 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋이 전달될 주소를 '1234 Main Street', 'ABCD’로 지정하는 예제이다.
//OUT1 OUTPUT ADDRESS=('1234 Main Street','ABCD') //OUT DD SYSOUT=A,OUTPUT=*.OUT1
12.3. BUILDING
SYSOUT 데이터셋과 연관된 건물의 이름을 지정한다.
-
사용법
BUILDING = 값
항목 설명 건물명
출력물과 관련된 건물 이름을 문자열로 지정한다. 값의 길이는 최대 60bytes이다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 BUILDING 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋과 관련된 건물 이름을 'ABC Tower’으로 지정하는 예제이다.
//OUT1 OUTPUT BUILDING='ABC Tower' //OUT DD SYSOUT=G,OUTPUT=*.OUT1
12.5. CHARS
데이터셋을 출력할 때 출력 문자와 크기에 대한 설정 테이블을 지정한다.
-
사용법
CHARS = (테이블명[,테이블명]...)
항목 설명 테이블명
데이터셋을 출력할 때 출력 문자와 크기에 대한 설정 테이블을 1~4자리의 영문자, 숫자로 지정한다. 최대 4개까지 지정할 수 있다. 지정할 테이블이 하나인 경우에는 괄호문자를 생략할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 CHARS 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 데이터 출력 문자와 크기 설정 테이블로 TBL1, TBL2을 지정하는 예제이다.
//OUT1 OUTPUT CHARS=(TBL1,TBL2) //OUT DD SYSOUT=A,OUTPUT=*.OUT1
12.9. CLASS
SYSOUT 데이터셋의 츨력 클래스를 지정한다. DD문의 SYSOUT 파라미터에 클래스 지정이 없는 경우에만 적용된다.
-
사용법
CLASS = output class
항목 설명 output class
A~Z, 0~9 사이의 한 문자를 지정한다.
-
주의사항
DD문의 SYSOUT 파라미터에 클래스 지정이 있는 경우에는 해당 지정이 우선하고, 해당 지정이 없는 경우에만 적용된다.
-
예제
다음은 SYSOUT 데이터셋의 출력 클래스를 B로 지정하는 예제이다.
//OUT1 OUTPUT CLASS=B //OUT DD SYSOUT=*,OUTPUT=*.OUT1
12.13. CONTROL
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
CONTROL = {PROGRAM | SINGLE | DOUBLE | TRIPLE}
12.14. COPIES
SYSOUT 데이터셋의 복사 횟수를 지정한다.
-
사용법
COPIES= ([복사 횟수][,그룹 복사 횟수...])
항목 설명 복사 횟수
SYSOUT 데이터셋의 복사 횟수를 1~255의 부호 없는 정수로 지정한다. 복사 횟수만 지정할 경우에는 괄호문자 생략이 가능하다. (기본값: 1)
그룹 복사 횟수
SYSOUT 데이터셋의 페이지 단위의 그룹 복사 횟수를 1~255의 부호 없는 정수로 지정한다. 최대 8개까지 지정할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 COPIES 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋의 복사 횟수를 10으로 지정하는 예제이다.
//OUT1 OUTPUT COPIES=10 //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.17. DEPT
출력 데이터셋과 연관된 부서 ID를 지정한다.
-
사용법
DEPT = 부서 ID
항목 설명 부서 ID
출력 데이터셋과 연관된 부서 ID를 최대 60bytes 길이의 문자열로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 DEPT 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋과 연관된 부서 ID를 'FINANCE’로 지정하는 예제이다.
//OUT1 OUTPUT DEPT='FINANCE' //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.18. DEST
SYSOUT 데이터셋의 출력처를 지정한다.
-
사용법
DEST = 출력처
항목 설명 출력처
SYSOUT 데이터셋의 출력처를 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 DEST 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋의 출력처를 BCCOMP로 지정하는 예제이다.
//OUT1 OUTPUT DEST=BCCOMP //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.21. FCB
FCB 이름을 지정한다.
-
사용법
FCB = FCB 이름
항목 설명 FCB 이름
FCB 이름을 1~4자리의 기호명칭으로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 FCB 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 FCB 이름을 AA33으로 지정하는 예제이다.
//OUT1 OUTPUT FCB=AA33 //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.22. FLASH
용지에 일정한 서식, 범위를 미리 인쇄하는 경우에 사용하는 필름 OVERLAY의 식별명을 지정한다.
-
사용법
FLASH = 필름명 (필름명[(,적용 매수)])
항목 설명 필름명
용지에 일정한 서식, 범위를 미리 인쇄하는 경우에 사용하는 필름 OVERLAY의 식별명을 지정한다. 식별명은 1~4자리의 기호명칭으로 지정한다.
적용 매수
용지에 일정한 서식, 범위를 미리 인쇄하는 경우에 사용하는 필름 OVERLAY의 적용 매수를 1~255의 부호 없는 정수로 지정한다. (기본값: 0)
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 FLASH 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 필름 OVERLAY의 식별명을 FLM1로 지정하는 예제이다.
//OUT1 OUTPUT FLASH=FLM1 //OUT DD SYSOUT=A,SYSOUT=*.OUT1
12.23. FORMDEF
FORMDEF 이름을 지정한다.
-
사용법
FORMDEF = 멤버
항목 설명 멤버
FORMDEF 이름을 1~6자리의 기호명칭으로 지정한다. 멤버이름에는 점(.) 문자의 사용이 불가능하다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 FORMDEF 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 FORMDEF의 멤버를 JJPRT로 지정하는 예제이다.
//OUT1 OUTPUT FORMDEF=JJPRT //OUT DD SYSOUT=A,OUTPUT=*.OUT1
12.25. FORMS
SYSOUT 데이터셋의 서식번호를 지정한다.
-
사용법
FORMS = 서식번호
항목 설명 서식번호
SYSOUT 데이터셋의 서식번호를 1~8자리의 기호명칭으로 지정한다. 단, 서식번호에 점(.) 사용은 불가능하다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 FORMS 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋의 서식번호를 5로 지정하는 예제이다.
//OUT1 OUTPUT FLASH=FLM1,FORMS=5 //OUT DD SYSOUT=A,OUTPUT=*.OUT1
12.33. MAILBCC
이메일을 숨은 참조할 수신인의 메일 주소를 하나 이상 지정한다.
-
사용법
MAILBCC = (메일 주소[,메일 주소]...)
항목 설명 메일 주소
출력물을 이메일로 숨은 참조할 수신인의 메일 주소를 지정한다. 메일 주소의 길이는 최대 60bytes이며 10개까지 지정할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 MAILBCC 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋을 숨은 참조할 메일 주소를 지정하는 예제이다.
//OUT1 OUTPUT MAILBCC=('michael@companya.com','jane@companyb.net') //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.34. MAILCC
이메일을 참조할 수신인의 메일 주소를 하나 이상 지정한다.
-
사용법
MAILCC = (메일 주소[,메일 주소]...)
항목 설명 메일 주소
출력물을 이메일로 참조할 수신인의 메일 주소를 지정한다. 메일 주소의 길이는 최대 60bytes이며 10개까지 지정할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 MAILCC 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋을 참조할 메일 주소를 지정하는 예제이다.
//OUT1 OUTPUT MAILCC='robert@companyc.com' //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.36. MAILFROM
이메일을 보낸 사람의 이름이나 기타 식별자를 지정한다.
-
사용법
MAILFROM = 값
항목 설명 값
이메일을 보낸 사람의 이름이나 기타 식별자를 최대 60bytes 길이의 문자열로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 MAILFROM 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 이메일 발신자를 지정하는 예제이다.
//OUT1 OUTPUT MAILFROM='Young R. Sender' //OUT DD SYSOUT=K,OUTPUT=*.OUT1
12.37. MAILTO
이메일을 수신할 수신인의 메일 주소를 하나 이상 지정한다.
-
사용법
MAILTO = (메일 주소[,메일 주소]...)
항목 설명 메일 주소
출력물을 이메일로 수신할 수신인의 메일 주소를 지정한다. 메일 주소의 길이는 최대 60bytes이며 10개까지 지정할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 MAILTO 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋을 수신할 메일 주소를 지정하는 예제이다.
//OUT1 OUTPUT MAILTO='hong@companyd.com' //OUT DD SYSOUT=T,OUTPUT=*.OUT1
12.38. MODIFY
SYSOUT 데이터셋의 COPY 수식 모듈명과 CHARS 오퍼랜드로 지정하는 테이블 중 사용할 테이블의 순서에 대응한 번호를 지정한다.
-
사용법
MODIFY = 모듈명 ([모듈명][,테이블번호])
항목 설명 모듈명
SYSOUT 데이터셋의 COPY 수식 모듈명을 1~4자리의 기호명칭으로 지정한다.
테이블번호
SYSOUT 데이터셋의 CHARS 오퍼랜드로 지정하는 테이블 중 사용할 테이블을 순서에 대응한 0~3의 부호 없는 번호로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 MODIFY 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 COPY 수식 모듈명으로 EDIT을 지정하고 CHARS에서 지정한 테이블 중 TBL2를 지정하는 예제이다.
//OUT1 OUTPUT COPIES=(3,3),CHARS=(TBL1,TBL2),MODIFY=(EDIT,1) //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.39. NAME
SYSOUT 데이터셋과 연관된 이름을 지정한다.
-
사용법
NAME = 이름
항목 설명 이름
SYSOUT 데이터셋과 연관된 이름을 최대 60bytes 길이의 문자열로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 NAME 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋과 연관된 이름을 지정하는 예제이다.
//OUT1 OUTPUT NAME='K. Smith' //OUT DD SYSOUT=D,OUTPUT=*.OUT1
12.40. NOTIFY
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
NOTIFY = {nodename.userid} {userid } {([node1.]userid1,[node2.]userid2,...)}
항목 설명 nodename
8자리 이내의 기호명칭으로 지정한다.
userid
8자리 이내의 기호명칭으로 지정한다.
12.46. OUTDISP
SYSOUT 데이터셋으로 생성된 OUTPUT의 처리 방법을 지정한다.
-
사용법
OUTDISP = ([WRITE][,WRITE]) [HOLD] [,HOLD]) [KEEP] [,KEEP]) [LEAVE][,LEAVE]) [PURGE][,PURGE]) [,]
-
파라미터 1
JOB이 정상 종료했을 때(ABEND가 아닌 경우) SYSOUT 데이터셋으로 생성된 OUTPUT의 처리 방법을 지정한다.
항목 설명 WRITE
OUTPUT이 스케줄링되어 프린트되어야 함을 의미한다. 프린터 솔루션을 호출한 후 OUTPUT이 삭제된다.
HOLD
사용자가 release할 때까지 처리를 대기한다.
KEEP
WRITE와 같다. 다만 출력작업이 끝난 후 삭제하지 않고, LEAVE 상태로 남아있는다.
LEAVE
HOLD와 같다. 다만 사용자가 release하게 되면 KEEP 상태로 된다.
PURGE
OUTPUTQ에서 삭제한다.
-
파라미터 2
JOB이 이상 종료(ABEND)했을 경우의 SYSOUT 데이터셋으로 생성된 OUTPUT의 처리 방법을 지정한다. 항목은 파라미터 1과 동일하게 설정한다.
파라미터 2가 생략되는 경우 파라미터 1의 값이 사용된다. 파라미터 2가 지정되었지만 파라미터 1이 생략된 경우 파라미터 1의 값은 WRITE가 된다.
-
-
주의사항
-
OUTDISP가 생략된 경우 OpenFrame 환경설정에 tjes 서브젝트, OUTCLASS 섹션에 CLASS별로 설정된 키의 VALUE 항목으로 처리된다. 이곳에 해당 CLASS가 설정이 되어있지 않은 경우 OUTDISP는 PURGE가 된다. tjes 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.
-
OUTPUT의 CLASS는 DD 문의 SYSOUT 오퍼랜드를 통해서 지정된다.
-
-
예제
다음은 OUTDISP를 지정하는 예제이다.
//OUT1 OUTPUT OUTDISP=(WRITE,PURGE) //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.47. OVERLAYB
인쇄할 페이지 뒷면에 배치되는 overlay 이름을 지정한다.
-
사용법
OVERLAYB = 값
항목 설명 값
8자 이내의 기호명칭을 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 OVERLAYB 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 overlay 이름을 'MYOVLY’로 지정하는 예제이다.
//OUT1 OUTPUT OVERLAYB=MYOVLY //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.48. OVERLAYF
인쇄할 페이지 앞면에 배치되는 overlay 이름을 지정한다.
-
사용법
OVERLAYF = 값
항목 설명 값
8자 이내의 기호명칭을 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 OVERLAYF 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 overlay 이름을 'MYOVLY’로 지정하는 예제이다.
//OUT1 OUTPUT OVERLAYF=MYOVLY //OUT DD SYSOUT=J,OUTPUT=*.OUT1
12.50. PAGEDEF
PAGEDEF 이름을 지정한다.
-
사용법
PAGEDEF = 멤버
항목 설명 멤버
PAGEDEF 이름을 1~6자리의 점(.)을 제외한 기호명칭으로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 PAGEDEF 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 PAGEDEF의 멤버를 SSPGE로 지정하는 예제이다.
//OUT1 OUTPUT PAGEDEF=SSPGE //OUT DD SYSOUT=A,OUTPUT=*.OUT1
12.51. PIMSG
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
PIMSG = {YES | NO} {(YES[,msg-count])} {(NO[,msg-count]) }
항목 설명 msg-count
0~999의 부호 없는 정수를 지정한다.
12.52. PORTNO
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
PORTNO = 값
항목 설명 msg-count
1~65535의 부호 없는 정수를 지정한다.
12.53. PRMODE
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
PRMODE = 값
항목 설명 값
8자 이내의 점(.) 문자를 제외한 기호문자를 지정한다.
12.56. PRTOPTNS
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
PRTOPTNS = 값
항목 설명 값
16자 이내의 점(.) 문자를 제외한 기호문자를 지정한다.
12.59. REPLYTO
이메일 수신자가 응답할 수 있는 이메일 주소를 지정한다.
-
사용법
REPLYTO = 메일 주소
항목 설명 메일 주소
출력물 수신자가 응답할 수 있는 메일 주소 최대 60bytes 길이의 문자열로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 REPLYTO 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 이메일 수신자가 응답할 수 있는 이메일 주소를 지정하는 예제이다.
//OUT1 OUTPUT REPLYTO='reply@companye.net' //OUT DD SYSOUT=*,OUTPUT=*.OUT1
12.61. RETAINS
성공적으로 전송된 데이터셋을 유지하는 시간을 지정한다.
-
사용법
RETAINS = {값}
항목 설명 값
기호명칭을 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 RETAINS 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 전송된 SYSOUT 데이터셋의 유지 시간을 1시간으로 지정하는 예제이다.
//OUT1 OUTPUT RETAINS='0001:00:00' //OUT DD SYSOUT=P,OUTPUT=*.OUT1
12.62. RETAINF
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
RETAINF = {hhhh:mm:ss | FOREVER}
항목 설명 hhhh
0~9999의 부호 없는 정수를 지정한다.
mm
0~59의 부호 없는 정수를 지정한다.
ss
0~99의 부호 없는 정수를 지정한다.
12.64. RETRYT
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
RETRYT = hhhh:mm:ss
항목 설명 hhhh
0~9999의 부호 없는 정수를 지정한다.
mm
0~59의 부호 없는 정수를 지정한다.
ss
0~99의 부호 없는 정수를 지정한다.
12.65. ROOM
SYSOUT 데이터셋에 대한 출력의 구분 페이지에 room ID를 지정한다.
-
사용법
ROOM = room ID
항목 설명 room ID
SYSOUT 데이터셋과 연관된 room ID를 최대 60bytes 길이의 문자열로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 ROOM 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋의 room ID를 'Main Hall’으로 지정하는 예제이다.
//OUT1 OUTPUT ROOM='Main Hall' //OUT DD SYSOUT=Y,OUTPUT=*.OUT1
12.67. THRESHLD
OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다.
-
사용법
THRESHLD = 값
항목 설명 값
1~99999999의 부호 없는 정수를 지정한다.
12.68. TITLE
SYSOUT 데이터셋 출력의 구분 페이지에 인쇄할 출력 설명을 지정한다.
-
사용법
TITLE = 값
항목 설명 값
SYSOUT 데이터셋 출력의 구분 페이지에 인쇄할 출력 설명을 최대 60bytes 길이의 문자열로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 TITLE 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋의 구분 페이지에 인쇄할 값을 'ANNUAL REPORT’로 지정하는 예제이다.
//OUT1 OUTPUT TITLE='ANNUAL REPORT' //OUT DD SYSOUT=O,OUTPUT=*.OUT1
12.69. TRC
SYSOUT 데이터셋의 각 출력 행에 대한 논리 레코드에 테이블 참조 문자(TRC) 코드가 포함되는지 여부를 지정한다.
-
사용법
TRC = {YES | Y | NO | N}
항목 설명 YES(Y)|NO(N)
테이블 참조 문자 코드 포함 여부를 YES(Y) 또는 NO(N)로 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 TRC 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 SYSOUT 데이터셋의 각 출력 행에 대한 논리 레코드에 테이블 참조 문자 코드가 포함되지 않음을 지정하는 예제이다.
//OUT1 OUTPUT TRC=NO //OUT DD SYSOUT=W,OUTPUT=*.OUT1
12.70. UCS
universal character set을 지정한다.
-
사용법
UCS = 값
항목 설명 값
4자 이내의 기호명칭을 지정한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 UCS 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 universal character set을 A11로 지정하는 예제이다.
//OUT1 OUTPUT UCS=A11 //OUT DD SYSOUT=N,OUTPUT=*.OUT1
12.71. USERDATA
사용자 정의 데이터를 지정한다.
-
사용법
USERDATA = (값[,값]...)
항목 설명 값
사용자 정의 데이터를 최대 60bytes 길이 문자열로 지정한다. 16개까지 지정할 수 있다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 USERDATA 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 USERDATA를 지정하는 예제이다.
//OUT1 OUTPUT USERDATA=('Installation data','USERKEY1=User','ABC') //OUT DD SYSOUT=V,OUTPUT=*.OUT1
12.72. USERLIB
USERLIB 데이터셋 이름을 지정한다.
-
사용법
USERLIB = {데이터셋 이름} {(데이터셋 이름1,데이터셋 이름2,...데이터셋 이름8)}
항목 설명 데이터셋 이름
USERLIB에서 사용할 데이터셋의 이름을 지정한다.
데이터셋 이름은 최대 44자리까지 기술한다. 데이터셋 이름의 형식에 대한 내용은 OpenFrame Base "데이터셋 안내서"를 참고한다.
-
주의사항
OpenFrame에서는 인쇄 출력을 위한 USERLIB 정보를 외부 프린터 모듈에 전달하기 위해 JOB 실행 완료 후 저장하고 있다. 해당 정보의 사용 유무는 외부 프린터 모듈의 필요에 따라 다르다.
-
예제
다음은 데이터셋을 TMAX.DATASET으로 지정하는 예제이다.
//OUT1 OUTPUT FORMS=5,FORMDEF=JJPRT,USERLIB=TMAX.DATASET //OUT DD SYSOUT=A,OUTPUT=*.OUT1
13. PEND 문
프러시저의 마지막을 나타낸다. 입력 스트림 프러시저에서는 마지막에 꼭 기술해야 하지만 카탈로그 프러시저에서는 마지막에 기술하지 않아도 문제되지 않는다.
-
사용법
//[PEND명]△¹PEND△[주석]
항목 설명 [PEND명]
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. 명칭은 생략할 수 있다.
PEND
오퍼레이션 기술 위치로 명칭 뒤에 1개 이상의 공백을 두고 'PEND’라고 기술한다. 명칭을 생략한 경우 "//" 이후로 공백 없이 기술 가능하다.
[주석]
PEND 이후에 1개 이상의 공백을 두고 기술한다.
14. PROC 문
프러시저의 시작을 의미한다. 프러시저에는 다음의 2가지 타입이 있다.
구분 | 설명 |
---|---|
입력 스트림 프러시저 |
입력으로 받은 JOB의 스트림에 지정이 되어 있어서 해당 JOB에서만 사용할 수 있는 일시적인 프러시저이다. PROC 문은 JOB 문 이후로 다음 JOB이 나오기 전까지 어느 위치에든 기술하면 된다. 입력 스트림 프러시저의 경우 PEND 문을 사용하여 프러시저의 끝을 반드시 기술해야 한다. |
카탈로그 프러시저 |
카탈로그에 등록되어 있어서 어느 JOB이나 호출해서 사용할 수 있는 프러시저이다. |
-
사용법
//[PROC 이름]△¹PROC△¹[기호 파라미터=[값]...△¹[주석]]
항목 설명 PROC 이름
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다.
PROC 이름은 입력 스트림 프러시저에서는 반드시 기술해야 하며 기호명칭으로 지정한다. 카탈로그 프러시저에서는 기술하지 않아도 된다. 카탈로그 프러시저를 EXEC 문에서 호출할 때 사용되는 프러시저명은 카탈로그 프러시저가 등록되어 있는 멤버명이다.
PROC
오퍼레이션 기술 위치로 PROC 이름 뒤에 1개 이상의 공백을 두고 'PROC’이라고 기술한다. PROC 이름을 생략한 경우에는 "//" 이후로 1개 이상의 공백을 두고 기술한다.
[기호 파라미터=[값]]
'PROC' 이후에 1개 이상의 공백을 두고 기호 파라미터들을 기술한다.기호 파라미터는 EXEC 문의 오퍼랜드와 같은 것을 사용할 수 없다. 기호 파라미터에 대한 자세한 내용은 기호 파라미터 절의 설명을 참고한다.
[주석]
기호 파라미터들 이후에 1개 이상의 공백을 두고 기술한다. 기호 파라미터를 하나도 기술하지 않으면 주석은 기술할 수 없다.
기호 파라미터
프러시저에서 사용하는 기호 파라미터들의 값들을 1~8의 기호문자로 지정한다. 기호 파라미터만 정의하고 값을 지정하지 않으면 시스템은 NULL값이 지정된 것으로 판단한다. 해당 프러시저를 호출하는 EXEC 문에서 기호 파라미터가 지정이 되어 있으면 프러시저에서 같은 기호 파라미터는 오버라이드되고 다른 기호 파라미터는 추가된다.
기호 파라미터는 프러시저 내의 제어문에서 다음과 같이 사용된다.
-
기호 파라미터의 앞에 ampersand(&)를 붙여서 사용한다.
시스템은 "&기호 파라미터" 형식으로 되어 있는 것을 해당하는 기호 파라미터의 값으로 치환한다.
-
"&기호 파라미터"에서 기호 파라미터의 끝은 다음과 같이 지정할 수 있다.
-
공백, 점(.), 콤마(,), 괄호, "\n", 작은따옴표(' ')가 있으면 그 전까지를 기호 파라미터로 인식한다.
다음 예제에서는 "&ABC" 다음에 콤마(,)가 있으므로 "ABC"를 기호 파라미터로 인식한다.
//STEP1 EXEC PGM=&ABC,PARM=8
-
점(.)으로 기호 파라미터의 끝을 구분하는 경우 점까지가 기호 파라미터의 값으로 치환된다.
다음 예제에서는 "&ABC" 다음에 점이 있으므로 "&ABC."가 TMAX로 치환이 되어 PGM의 값은 TMAXSOFT가 된다.
//PROC PROC ABC=TMAX //STEP1 EXEC PGM=&ABC.SOFT,PARM=8
-
치환할 수 있는 기호 파라미터가 여러 개인 경우에는 가장 긴 이름의 기호 파라미터로 치환한다.
다음 예제에서는 "&ABC"와 "&ABCD"가 모두 기호 파라미터이지만 더 길이가 긴 "ABCD"를 치환하여 PGM의 값은 "tmaxEFG"가 된다.
//PROC PROC ABC=TMAX,ABCD=tmax //STEP1 EXEC PGM=&ABCDEFG,PARM=8
-
기호 파라미터는 다음과 같은 경우에는 치환되지 않는다.
-
"&&기호 파라미터" 형식으로 ampersand(&)가 2개가 붙어 있으면 치환하지 않는다. "&&&기호 파라미터" 형식이면 "&&치환값"으로 치환된다.
-
치환하려는 기호 파라미터가 정의되어 있지 않으면 치환하지 않는다.
15. SET 문
JCL에서 사용하는 기호파라미터의 값을 지정한다.
//[명칭]△¹SET△¹기호 파라미터=값[,기호 파라미터=값]...△¹[주석]
항목 | 설명 |
---|---|
명칭 |
명칭 기술 위치로 "//"에 이어서 3번째 칸부터 기술한다. 명칭은 생략할 수 있다. |
SET |
오퍼레이션 기술 위치로 명칭 뒤에 1개 이상의 공백을 두고 'SET’이라고 기술한다. 명칭을 생략한 경우에는 "//" 이후로 1개 이상의 공백을 두고 기술한다. |
기호 파라미터=값[,기호 파라미터=값]… |
'SET' 이후에 1개 이상의 공백을 두고 기호 파라미터들을 기술한다. 기호 파라미터에 대한 자세한 내용은 기호 파라미터 절의 설명을 참고한다. |
[주석] |
기호 파라미터들 이후에 1개 이상의 공백을 두고 기술한다. |
기호 파라미터
JCL 이후 호출하는 프러시저에서 사용하는 기호 파라미터들의 값들을 점(.) 문자를 제외한 기호문자로 지정한다. 기호 파라미터만 정의하고 값을 지정하지 않으면 시스템은 NULL값이 지정된 것으로 판단한다.
SET 문으로 지정된 기호 파라미터는 이후에 EXEC 문이나 호출하는 프러시저의 PROC 문에서 같은 기호 파라미터를 지정하면 해당하는 프러시저에서는 EXEC 문이나 PROC 문에서 지정한 값이 사용된다.
기호 파라미터는 JCL의 제어문에서 다음과 같이 사용된다.
-
기호 파라미터의 앞에 ampersand(&)를 붙여서 사용한다. 시스템은 "&기호 파라미터" 형식으로 되어 있는 것을 해당하는 기호 파라미터의 값으로 치환한다.
-
"&기호 파라미터"에서 기호 파라미터의 끝은 다음과 같이 지정할 수 있다.
-
공백, 점(.), 콤마(,), 괄호, "\n", 작은 따옴표(')가 있으면 그 전까지를 기호 파라미터로 인식한다.
다음 예제에서는 "&ABC" 다음에 콤마(,)가 있으므로 "ABC"를 기호 파라미터로 인식한다.
//STEP1 EXEC PGM=&ABC,PARM=8
-
점(.)으로 기호 파라미터의 끝을 구분하는 경우 점까지가 기호 파라미터의 값으로 치환된다.
다음 예제에서는 "&ABC" 다음에 점이 있으므로 "&ABC."가 TMAX로 치환이 되어 PGM의 값은 TMAXSOFT가 된다.
// SET ABC=TMAX //STEP1 EXEC PGM=&ABC.SOFT,PARM=8
-
치환할 수 있는 기호 파라미터가 여러 개인 경우에는 가장 긴 이름의 기호 파라미터로 치환한다.
다음 예제에서는 "&ABC"와 "&ABCD"가 모두 기호 파라미터이지만 더 길이가 긴 "ABCD"를 치환하여 PGM의 값은 "tmaxEFG"가 된다.
// SET ABC=TMAX,ABCD=tmax //STEP1 EXEC PGM=&ABCDEFG,PARM=8
-
-
SET 문과 EXEC 문(또는 PROC 문)에서 기호 파라미터를 사용하는 경우 아래와 같이 처리된다.
-
SET 문으로 지정한 파라미터는 프러시저 내에서는 EXEC 문이나 PROC 문에서 같은 파라미터를 지정하지 않은 경우 사용된다. 같은 파라미터가 지정되었다면 프러시저 내에서는 EXEC 문이나 PROC 문에서 지정된 파라미터의 값이 사용된다.
-
JCL에서는 SET 문에서 지정한 파라미터는 SET 문으로 다시 지정하기 전까지는 계속 사용된다.
-
프러시저 내에서 SET 문으로 지정한 파라미터는 해당 프러시저 내에서만 사용된다.
다음 예제에서는 "&ABC"의 값이 어떤식으로 치환이 되는지를 보여준다.
JCL // SET ABC=1 //STEP1 EXEC PROCTEST,ABC=2 -- In PROCTEST PSTEP1 step, PARM parameter's value is 2 //STEP2 EXEC PGM=TEST,PARM=&ABC -- PARM parameter's value is 1 //STEP3 EXEC PROCTEST -- In PROCTEST PSTEP1 step, PARM parameter's value is 1
PROCTEST //PROCTEST PROC //PSTEP1 EXEC PGM=TEST,PARM=&ABC
-
기호 파라미터는 다음과 같은 경우에는 치환되지 않는다.
-
"&&기호 파라미터" 형식으로 ampersand(&)가 2개가 붙어 있으면 치환하지 않는다. "&&&기호 파라미터" 형식이면 "&&치환값"으로 치환된다.
-
치환하려는 기호 파라미터가 정의되어 있지 않으면 치환하지 않는다.
16. XMIT 문
다른 노드로 데이터를 전송하는 문장이다. OpenFrame에서는 문법 오류만 검사하고 사용하지 않는다. 문법적으로 오류를 피하기 위해 XMIT 문 이후로 나오는 Instream 데이터까지 처리한다.
-
사용법
//[명칭]△¹XMIT 오퍼랜드[,오퍼랜드...]△[* 주석]
항목 설명 오퍼랜드
DEST|DLM|SUBCHARS 중 한 가지를 지정한다.
-
예제
다음은 XMIT 문을 사용하는 예제이다.
//JOB1 JOB //X1 XMIT DEST=LOCAL . . (records to be transmitted) . /*
18. 단락문
Instream 데이터의 마지막 줄 바로 뒤에 위치하여 Instream 데이터의 마지막을 의미한다.
Instream 데이터의 시작을 의미하는 DD 문("DD *" 또는 "DD DATA")이 없는 상태에서 Instream 데이터("//"나 "/*"로 시작하지 않는 문장)가 나타나면 시스템은 다음의 문장을 자동으로 생성하여 SYSIN DD의 Instream 데이터로 들어가도록 한다.
//SYSIN DD *
-
사용법
/*[주석]
항목 설명 [주석]
주석은 "/*" 이후 3번째 칸부터 기술한다.
주석을 3번째 칸부터 바로 기술하면 "/*PRIORITY"와 같이 JES2 문장으로 인식할 수도 있기때문에 3번째 칸에는 공백을 기술하는 것을 권장한다.
19. 주석문
주석을 기술한다. 주석문은 어디라도 기술할 수 있는 데, Instream 데이터의 사이에는 기술해서는 안 된다. 기술할 경우 기술한 곳에서 Instream 데이터가 끝난 것으로 간주된다. 그리고 그 이후의 Instream 데이터는 새로운 SYSIN DD로 등록된다.
OpenFrame에서는 "##"으로 시작하는 문장도 특별히 주석으로 처리한다. 단, Instream 데이터에서 "##"으로 시작하는 것은 데이터로 처리된다.
-
사용법
//*[주석]
항목 설명 [주석]
주석은 "//*" 이후 4번째 칸부터 기술한다. 주석을 여러 줄에 기술하려면 항상 앞의 3자리는 "//*"로 시작해야 한다.