JCL 소개
OpenFrame은 IBM Mainframe의 JCL에 대응하는 MVS JCL을 제공한다. 본 장에서는 MCL의 기본 개념에 대해서 설명한다.
1. 기술 형식
본 절에서는 JCL의 기술 형식에 대해 기술한다.
1.1. JCL 제어문
다음은 JCL 제어문의 기술 형식이다.
항목 | 설명 |
---|---|
명칭(Name) |
JCL 문장의 명칭을 지정한다. 다른 JCL 문장과 구별하거나 시스템에서 참조할 때 사용된다. 명칭을 지정할 때는 반드시 3번째 칸에서부터 기술해야 한다. 명칭은 8문자 이내의 영문자, 숫자이여야 하며, 첫 번째 문자는 반드시 영문자이어야 한다. 주석문, 단락문, 공문에는 명칭이 없다. |
오퍼레이션(Operation) |
JCL의 오퍼레이션을 지정한다. 명칭을 지정한 경우에는 명칭과 1개 이상의 공백을 넣어야 한다. 명칭을 생략한 경우에는 4번째 칸 이후부터 기술해야 한다. 주석문, 단락문, 공문에는 오퍼레이션이 없다. |
오퍼랜드(Operand) |
각각의 JCL의 문장에 맞는 오퍼랜드를 기술한다. 각각의 오퍼랜드는 콤마(,)로 구분한다. 오퍼랜드는 오퍼레이션 뒤에 기술하며 그 사이에는 1개 이상의 공백을 넣어야 한다. 주석문, 단락문, 공문, PEND 문에는 오퍼랜드가 없다. |
주석(Comment) |
오퍼랜드 뒤에 주석을 기술하면 그 사이에는 1개 이상의 공백을 넣어야 한다. 오퍼랜드가 있는 문장(JOB 문, EXEC 문, DD 문, PROC 문)에서 오퍼랜드를 생략하면 주석을 기입할 수 없다. 공문에는 주석을 기입할 수 없다. |
계속(Continued operand) |
하나의 JCL 문장을 1줄에 기술할 수 없는 경우에는 표 다음에 기술된 방법으로 여러 줄에 걸쳐서 기술할 수 있다. 주석문, 단락문, 공문에는 계속을 지정할 수 없다. 계속에 대한 자세한 내용은 "계속적 표현"을 설명한다. |
임의(Ignored space) |
73번째 칸부터 80번째 칸까지는 임의의 문자를 넣을 수 있다. 81번째 이후 공간은 시스템에서 무시한다. |
계속적 표현
다음은 오퍼랜드, 주석, 인용 캐릭터 라인을 계속적으로 표현하기 위한 방법이다.
-
오퍼랜드의 계속 1
-
71번째 칸 이전에 오퍼랜드가 콤마(,)로 끝나면 오퍼랜드의 계속이 지정된 것으로 판단한다.
-
계속되는 줄의 1번째 칸과 2번째 칸에는 "//"를 기술한다.
-
계속되는 줄에서는 명칭을 기술해서는 안된다.
-
계속하는 오퍼랜드는 4번째 칸부터 16번째 칸 사이에서 기술하기 시작한다.
-
-
오퍼랜드의 계속 2
-
오퍼랜드가 콤마(,)로 끝나지 않고 주석을 기술하지 않은 상태에서 72번째 칸에 공백 이외의 문자를 기술하면 오퍼랜드가 계속된 것으로 판단한다.
-
계속되는 줄의 1번째 칸과 2번째 칸에는 "//"를 기술한다.
-
계속되는 줄에서는 명칭을 기술해서는 안된다.
-
계속하는 오퍼랜드는 4번째 칸부터 16번째 칸 사이에서 기술하기 시작하고 오퍼랜드의 구분을 위한 콤마(,)가 먼저 기술되어야 한다.
-
-
주석의 계속
주석을 기술할 수 있는 제어문에서 오퍼랜드의 기술이 끝나고 주석을 기술할 때 72번째 칸에 공백 이외의 문자를 기술하면 다음 줄까지 주석이 기술되는 것으로 판단한다.
-
인용 캐릭터 라인의 계속
오퍼랜드의 값이 작은따옴표(' ')로 둘러쌓여 있는 경우 값의 내용이 길어서 여러 줄에 이어서 기술하는 경우에는 작은따옴표(' ')가 없으면 계속으로 판단한다. 이후 계속되는 줄의 1번째 칸과 2번째 칸에는 "//"를 기술하고 내용은 4번째 칸부터 16번째 칸 사이에서 기술하기 시작한다.
다음은 계속적 표현의 예제이다.
-
예제 1
'오퍼랜드의 계속 1’의 규칙에 따라서 계속이 지정된 것으로 판단된다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ), // MSGLEVEL=(1,1)
-
예제 2
콤마(,) 이후 주석을 기술해도 이와 관계없이 '오퍼랜드의 계속 1’의 규칙에 따른다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ), this is comment // MSGLEVEL=(1,1)
-
예제 3
오퍼랜드가 콤마(,)로 끝나고 주석을 기술한 상태에서 72번째 칸에 계속 마크를 했기 때문에 '오퍼랜드의 계속 1’과 '주석의 계속' 규칙이 만족되었다. 이런 경우에는 '오퍼랜드의 계속 1’의 규칙으로 판단한다. 따라서 다음 줄이 주석 처리되지 않고 MSGLEVEL 오퍼랜드를 인식한다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ), this is comment A // MSGLEVEL=(1,1)
-
예제 4
오퍼랜드가 콤마(,)로 끝나지 않았지만 주석없이 계속 마크가 72번째 칸에 있기 때문에 '오퍼랜드의 계속 2’의 규칙을 따른다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ) B // ,MSGLEVEL=(1,1)
-
예제 5
오퍼랜드가 콤마(,)로 끝나지 않고 주석을 기술하다가 계속 마크가 72번째 칸에 기술되었기 때문에 '주석의 계속' 규칙을 따른다. 따라서 다음 줄은 주석으로 간주되어서 MSGLEVEL=(1,1)은 주석 처리된다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ) this is comment C // ,MSGLEVEL=(1,1)
-
예제 6
EXEC 문의 PARM 오퍼랜드의 값이 '인용 캐릭터 라인의 계속' 규칙에 따라서 계속으로 처리되었다. PARM의 값은 'this is tmaxsoft program argument’이다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ),MSGLEVEL=(1,1) //STEP1 EXEC PGM=TMAXSOFT,COND=(0,NE),PARM='this is tmaxsoft program a // rgument'
-
예제 7
'tmaxsoft_'는 tmaxsoft 이후에 공백이 있음을 의미한다. 위와 같이 설정되면 공백까지 값으로 판단한다. 따라서 PARM의 값은 'this is tmaxsoft program argument’이다.
123-------------------------------------------------------------------72 //JOB1 JOB CLASS=A,MSGCLASS=A,COND=(0,EQ),MSGLEVEL=(1,1) //STEP1 EXEC PGM=TMAXSOFT,COND=(0,NE),PARM='this is tmaxsoft_ // program argument'
2. 오퍼랜드
JCL의 오퍼랜드를 기술하는 방식으로 위치 오퍼랜드 방식과 키워드 오퍼랜드 방식이 있다.
2.1. 위치 오퍼랜드
위치 오퍼랜드는 오퍼랜드의 위치가 결정되어 있어서 처음부터 몇 번째에 있는가에 따라서 해당 오퍼랜드의 값이 지정되는 방식이다.
다음은 위치 오퍼랜드 설정에 대한 규칙이다.
-
위치 오퍼랜드 각각의 구분은 콤마(,)로 구분한다.
값1,값2,값3
-
위치 오퍼랜드를 생략하는 경우에도 해당 위치를 나타내기 위해서 콤마(,)는 생략해서는 안된다.
값1,,값3
-
생략하려는 위치 오퍼랜드 이후로 위치 오퍼랜드가 없다면, 이후의 위치 오퍼랜드를 구분할 필요가 없기 때문에 콤마(,)를 생략할 수 있다.
값1,값2,,키워드 = 값4
값1,값2,키워드 = 값4
-
위치 오퍼랜드 이후로 키워드 오퍼랜드가 없다면 마지막 콤마(,)는 생략해야 한다.
값1,값2
2.2. 키워드 오퍼랜드
키워드 오퍼랜드는 키워드와 값이 등호(=)로 지정되는 방식이다.
키워드 = 값
다음은 키워드 오퍼랜드 설정에 대한 규칙이다.
-
키워드 오퍼랜드 각각의 구분은 콤마(,)로 구분한다. 키워드 오퍼랜드는 위치에 관계없기 때문에 키워드 오퍼랜드를 생략하는 경우에는 콤마(,)도 함께 생략한다.
-
키워드 오퍼랜드의 순서의 경우 EXEC 문의 PROC 오퍼랜드와 PGM 오퍼랜드를 제외하고는 순서의 의미가 없다.
-
위치 오퍼랜드와 키워드 오퍼랜드가 모두 있는 경우에는 모든 위치 오퍼랜드를 먼저 기술하고 키워드 오퍼랜드를 기술한다.
-
위치 오퍼랜드를 모두 생략한 경우에는 키워드 오퍼랜드 전에 콤마(,)를 지정할 필요가 없다.
2.3. 기술 규약
본 안내서에서 오퍼랜드의 기술 규약은 다음과 같다.
오퍼랜드 | 기술 규약 |
---|---|
[ ] (brackets) |
이 기호로 표현된 오퍼랜드는 생략할 수 있음을 의미한다.
|
{ } (braces) |
이 기호로 표현된 오퍼랜드는 세로의 항목 중 1개의 항목을 선택하는 것을 의미한다.
|
| (vertical bar) |
이 기호로 구분되어 있으면 구분되는 항목 중 1개의 항목을 선택하는 것을 의미한다.
|
Bold |
선택 기호 { } 안의 어떤 값도 기술하지 않았을 경우 디폴트로 사용되는 기본값을 의미한다.
|
... (ellipsis) |
이 기호의 직전에 나타나고 있는 항목을 반복해서 지정할 수 있는 것을 의미한다. |
지정값 타입
다음은 오퍼랜드에 지정할 수 있는 지정값 타입에 대한 설명이다.
-
숫자
의미
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
예제
0, 1, 9
-
영문자
의미
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | $ | # | @
예제
C,J,@,$
-
특수문자
의미
숫자, 영문자를 제외한 임의의 문자로, 특수문자 중에 콤마(,), 작은따옴표(' '), 등호(=), 괄호, 공백에 대해서는 작은따옴표(' ')로 둘러싸서 기술해야 한다.
예제
, , . , / , ' , ( , ) , * , & , + , - , = , 공백
-
영문자, 숫자
의미
영문자, 숫자 또는 영문자와 숫자의 조합이다.
예제
A, 7, A56, 8X, ABC, 997
-
부호 없는 정수
의미
부호가 없는 숫자 또는 부호가 없는 숫자의 조합이다.
예제
01, 375
-
정수
의미
부호가 붙어 있어도 되는 숫자 또는 숫자의 조합이다.
예제
99, +76, -143
-
특수 캐릭터 라인
의미
영문자, 숫자, 특수문자 또는 영문자, 숫자, 특수문자의 조합이다.
예제
32 A5, *315'?&A
-
인용 캐릭터 라인
의미
<영문자, 숫자>|'<특수 캐릭터 라인>' 특수 캐릭터 라인에 작은따옴표(' ')가 있다면 이것은 2개를 연속으로 지정해야 시스템에서 하나의 작은따옴표(' ')로 간주한다.
ampersand(&)의 경우도 2개가 연속으로 지정되어 있으면 하나의 ampersand(&)로 간주한다. ampersand(&)는 1개만 지정되어 있어도 한 문자의 ampersand(&)로 간주한다. 인용 캐릭터 라인이 작은따옴표(' ')로 둘러싸여 있을 때 문자수에는 작은따옴표(' ')는 포함되지 않는다.
예제
'5&23' '8=/' 'A''B', 8X3B
-
기호 명칭
의미
영문자로 시작되는 8문자 이내의 영문자, 숫자의 조합이다.
예제
Z7@, LMN, A123BC
2.4. 예제
다음은 JOB 문에 과금 식별 정보와 프로그래머명을 위치 오퍼랜드로 지정하고 CLASS와 MSGCLASS가 키워드 오퍼랜드로 지정하는 예제이다.
//JOB1 JOB A001,TMAX.PROGRAM,CLASS=A,MSGLEVEL=(1,1)
과금 식별 정보와 프로그래머명을 지정할 때 과금 식별 정보(A001)을 생략할 때는 최초의 콤마(,)는 생략할 수 없다.
//JOB1 JOB ,TMAX.PROGRAM,CLASS=A,MSGLEVEL=(1,1)
프로그래머명(TMAX.PROGRAM)을 생략할 경우에는 위치 오퍼랜드가 더 이상 존재하지 않기 때문에 생략을 위한 콤마(,)는 지정하지 않아도 된다.
//JOB1 JOB A001,CLASS=A,MSGLEVEL=(1,1)
과금 식별 정보와 프로그래머명 모두를 생략할 때는 다음과 같이 지정할 수 있다.
//JOB1 JOB CLASS=A,MSGLEVEL=(1,1)
파라미터 지정
다음은 파라미터를 지정하는 예제이다.
LABEL=(3,SL,PASSWORD,OUT,RETPD=350)
다음은 PASSWORD 위치 파라미터를 생략한 경우의 예제이다.
LABEL=(3,SL,,OUT,RETPD=350)
다음은 SL 파라미터와 RETPD 파라미터만 지정하는 경우의 예제이다.
LABEL=(,SL,RETPD=350)
3. JCL
본 절에서는 JCL에서 사용되는 JOB의 시작과 종료 및 기술 순서에 대해 설명한다.
3.1. JOB의 시작과 종료
다음은 JOB의 시작과 종료이다.
-
JOB의 시작
JOB 문이 있는 경우 JOB의 시작이다.
-
JOB의 종료
공문 다음 JOB의 시작을 나타내는 JOB 문이 JOB의 종료이다. 입력 스트림 중 마지막 JOB인 경우에는 입력 스트림의 마지막이 JOB의 종료이다.
JOB에는 1개 이상의 STEP이 있어야 한다. 즉, JOB 문과 다음 JOB 문의 사이에는 하나 이상의 EXEC 문이 존재해야 한다. 다음은 JOB STEP의 시작과 종료이다.
-
JOB STEP의 시작
EXEC 문의 시작이 JOB STEP의 시작이다.
-
JOB STEP의 종료
다음 JOB STEP의 시작을 나타내는 EXEC 문이 JOB STEP의 종료이다. JOB의 마지막 STEP인 경우에는 JOB의 종료와 JOB STEP의 종료가 동일하다.
3.2. 기술 순서
JOB STEP은 각각의 JOB 범위 내에 기술하여야 한다. 따라서 EXEC 문은 JOB 문의 뒤에 기술한다.
JCL 제어문의 기술 순서
다음은 JCL 제어문의 기술 순서이다.
-
JOB 문
JOB의 시작을 의미한다. 단, PRIORITY 문이 있는 경우에는 PRIORITY 문의 뒤에 기술한다.
-
EXEC 문
EXEC 문은 다음 3가지로 나뉜다.
-
프러시저 내에 기술되지 않은 경우
JOB 문, JOBLIB DD 문, JOBCAT DD 문의 다음에 각 JOB STEP의 선두에 기술한다.
-
입력 스트림 프러시저 내에 기술된 경우
PROC 문의 다음에 각 프러시저 STEP의 선두에 기술한다.
-
카탈로그 프러시저 내에 기술된 경우
각 프러시저 STEP의 선두에 PROC 문이 있을 때에는 PROC 문 다음에 기술한다.
-
-
DD 문
DD 문은 다음 2가지로 나뉜다.
-
JOBLIB DD 문, JOBCAT DD 문
JOB 문의 바로 다음에 최초의 JOB STEP을 정의하는 EXEC 문의 전에 기술한다. 단, JOB 문과 해당 DD 문 사이에 JES2 JCL 제어문은 기술 가능하다.
-
이외의 DD 문
EXEC 문 다음에 기술한다.
-
-
단락문
SYSIN 데이터셋의 마지막에 기술한다.
-
공문
JOB의 마지막에 기술한다. 입력 스트림 프러시저나 카탈로그 프러시저에는 기술할 수 없다.
-
주석문
JOB의 범위 내에서는 어디라도 관계없다. 단, Instream 데이터셋 내에는 지정해서는 안된다.
-
PROC 문
PROC 문은 다음 2가지로 나뉜다.
-
입력 스트림 프러시저
각 입력 스트림 프러시저의 선두에 기술한다. JOB 문의 다음에 입력 스트림 프러시저를 호출하는 JOB STEP 전에 기술한다.
-
카탈로그 프러시저
카탈로그 프러시저의 선두에 기술한다.
-
-
PEND 문
각 입력 스트림 프러시저의 마지막에 기술한다.
JES2 JCL 제어문의 기술 순서
다음은 JES2 JCL 제어문의 기술 순서이다.
-
PRIORITY 문
JOB 문의 직전에 기술한다.
-
PRIORITY 문을 제외한 나머지 구문들
어느 곳에 위치해도 관계없다.