JCL 소개
본 장에서는 OpenFrame에서 사용할 수 있는 JCL을 소개하고, JCL의 기술 형식, 오퍼랜드, JCL의 시작과 종료에 대해 기술한다.
1. 개요
OpenFrame은 Fujitsu Mainframe의 JCL에 대응하는 XSP JCL을 제공한다.
현재 OpenFrame에서는 다음 2종류의 XSP JCL을 지원한다.
-
작업 제어문
JOB이 실행되어 종료될 때까지를 제어한다.
-
매크로 제어문
미리 기술한 JCL을 간단한 문법으로 여러 용도로 사용할 수 있게 하는 기능이다.
2. 기술 형식
본 절에서는 JCL과 매크로의 기술 형식에 대해 기술한다.
2.1. JCL
다음은 JCL의 기술 형식이다.
항목 | 설명 |
---|---|
명칭(Name) |
JCL 문장의 명칭을 지정한다. 명칭을 지정할 때는 반드시 두 번째 칸에서부터 기술해야 한다. 보통은 주석의 의미지만 아래의 경우 의미를 가진다.
위의 3번째 경우를 제외하고 명칭은 8문자 이내의 영문자, 숫자이여야 하며, 첫 번째 문자는 반드시 영문자이어야 한다. 특수문자 "."을 포함할 수 있다. |
오퍼레이션(Operation) |
JCL의 오퍼레이션을 지정한다. 명칭을 지정한 경우에는 명칭과 1개 이상의 공백을 넣어야 한다. 명칭을 생략한 경우에는 3번째 칸 이후부터 기술해야 한다. 주석문, 단락문에는 오퍼레이션이 없다. |
오퍼랜드(Operand) |
각각의 JCL의 문장에 맞는 오퍼랜드를 기술한다. 각각의 오퍼랜드는 콤마(,)로 구분한다. 오퍼랜드는 오퍼레이션 뒤에 기술하며 그 사이에는 1개 이상의 공백을 넣어야 한다. 오퍼레이션만 있고 오퍼랜드는 없는 문도 있다. 오퍼랜드가 없는 문의 경우 오퍼레이션 이후 바로 주석으로 간주한다. |
주석(Comment) |
오퍼랜드 뒤에 주석을 기술하면 그 사이에는 1개 이상의 공백을 넣어야 한다. 오퍼랜드가 있는 문장에서는 오퍼랜드를 생략하면 주석을 기입할 수 없다. |
계속(Continued operand) |
하나의 JCL 문장을 1줄에 기술할 수 없는 경우에는 표 다음에 기술된 방법으로 여러 줄에 걸쳐서 기술할 수 있다. 계속에 대한 자세한 내용은 계속적 표현의 설명을 참고한다. |
임의(Ignored space) |
73번째 칸부터 80번째 칸까지는 임의의 문자를 넣을 수 있다. 81번째 이후 공간은 시스템에서 무시한다. |
계속적 표현
다음은 오퍼랜드, 주석, 인용 캐릭터 라인을 계속적으로 표현하기 위한 방법이다.
-
오퍼랜드의 계속 1
-
71번째 칸 이전에 오퍼랜드가 콤마(,)로 끝나면 오퍼랜드의 계속이 지정된 것으로 판단한다.
-
계속되는 줄의 첫 번째에는 공백을 기술한다. 공백은 여러 칸 기술할 수 있다.
-
계속하는 오퍼랜드는 공백 이후부터 기술하기 시작한다.
-
-
오퍼랜드의 계속 2
-
오퍼랜드가 콤마(,)로 끝나지 않고 주석을 기술하지 않은 상태에서 두 번째 칸에 공백 이외의 문자를 기술하면 오퍼랜드가 계속된 것으로 판단한다.
-
계속되는 줄의 첫 번째에는 공백을 기술한다. 공백은 여러 칸 기술할 수 있다.
-
계속하는 오퍼랜드는 공백 이후부터 기술하기 시작하고 오퍼랜드의 구분을 위한 콤마(,)가 먼저 기술되어야 한다.
-
-
주석의 계속
주석을 기술할 수 있는 제어문에서 오퍼랜드의 기술이 끝나고 주석이 기술할 때 두 번째 칸에 공백 이외의 문자를 기술하면 다음 줄까지 주석이 기술되는 것으로 판단한다.
-
인용 캐릭터 라인의 계속
오퍼랜드의 값이 작은따옴표(' ') 로 둘러쌓여 있는 경우 값의 내용이 길어서 여러 줄에 이어서 기술하는 경우에는 작은따옴표(' ')가 없으면 계속으로 판단한다.
이후 계속되는 줄의 첫 번째 칸에는 공백을 기술하고 내용은 공백 이후부터 기술하기 시작한다. 공백은 여러 칸 기술할 수 있다.
다음은 계속적 표현의 예제이다.
-
예제 1
'오퍼랜드의 계속 1’의 규칙에 따라서 계속이 지정된 것으로 판단된다.
12--------------------------------------------------------------------72 \ JOB JOB1,ML=1, HOLD
-
예제 2
콤마(,) 이후 주석을 기술해도 이와 관계없이 '오퍼랜드의 계속 1’의 규칙에 따른다.
12--------------------------------------------------------------------72 \ JOB JOB1,ML=1, this is comment HOLD
-
예제 3
오퍼랜드가 콤마(,)로 끝나고 주석을 기술한 상태에서 두 번째 칸에 계속 마크를 했기 때문에 '오퍼랜드의 계속 1’과 '주석의 계속' 규칙이 만족되었다. 이런 경우에는 '오퍼랜드의 계속 1’의 규칙으로 판단한다. 따라서 다음 줄이 주석 처리되지 않고 HOLD 오퍼랜드를 인식한다.
12--------------------------------------------------------------------72 \ JOB JOB1,ML=1, this is comment A HOLD
-
예제 4
오퍼랜드가 콤마(,)로 끝나지 않았지만 주석없이 계속 마크가 두 번째 칸에 있기 때문에 '오퍼랜드의 계속 2’의 규칙을 따른다.
12--------------------------------------------------------------------72 \ JOB JOB1,ML=1 B ,HOLD
-
예제 5
오퍼랜드가 콤마(,)로 끝나지 않고 주석을 기술하다가 계속 마크가 두 번째 칸에 기술되었기 때문에 '주석의 계속' 규칙을 따른다. 따라서 다음 줄은 주석으로 간주되어서 HOLD는 주석 처리된다.
12--------------------------------------------------------------------72 \ JOB JOB1,ML=1 this is comment C ,HOLD
-
예제 6
PARA 문의 오퍼랜드의 값이 "인용 캐릭터 라인의 계속" 규칙에 따라서 계속으로 처리되었다. 값은 'this is tmaxsoft program argument’이다.
12--------------------------------------------------------------------72 \ PARA 'this is tmaxsoft program a \ rgument'
-
예제 7
'tmaxsoft_'는 tmaxsoft 이후에 공백이 있고 뉴라인임을 의미한다. 위와 같이 설정되면 공백까지 값으로 판단한다. 따라서 값은 'this is tmaxsoft program argument’이다.
12--------------------------------------------------------------------72 \ PARA 'this is tmaxsoft_ \ program argument'
2.2. 매크로
다음은 매크로의 기술 형식이다.
항목 | 설명 |
---|---|
명칭(Name) |
매크로 문장의 명칭을 지정한다. 명칭을 지정할 때는 반드시 두 번째 칸에서부터 기술해야 한다. 명칭은 IF 문, IFN 문, SKIP 문의 분기점으로 이용된다. 명칭은 8문자 이내의 영문자, 숫자이여야 하며, 첫 번째 문자는 반드시 영문자이어야 한다. |
오퍼레이션(Operation) |
매크로의 오퍼레이션을 지정한다. 명칭을 지정한 경우에는 명칭과 1개 이상의 공백을 넣어야 한다. 명칭을 생략한 경우에는 3번째 칸 이후부터 기술해야 한다. |
오퍼랜드(Operand) |
각각의 문장에 맞는 오퍼랜드를 기술한다. 각각의 오퍼랜드는 콤마(,)로 구분한다. 오퍼랜드는 오퍼레이션 뒤에 기술하며 그 사이에는 1개 이상의 공백을 넣어야 한다. 오퍼레이션만 있고 오퍼랜드는 없는 문도 있다. 오퍼랜드가 없는 문의 경우 오퍼레이션 이후 바로 주석으로 간주한다. |
주석(Comment) |
오퍼랜드 뒤에 주석을 기술하면 그 사이에는 1개 이상의 공백을 넣어야 한다. 오퍼랜드가 있는 문장에서는 오퍼랜드를 생략하면 주석을 기입할 수 없다. |
계속(Continued operand) |
하나의 JCL 문장을 1줄에 기술할 수 없는 경우에는 표 다음에 기술된 방법으로 여러 줄에 걸쳐서 기술할 수 있다. 계속에 대한 것은 JCL의 경우와 같다. |
임의(Ignored space) |
73번째 칸부터 80번째 칸까지는 임의의 문자를 넣을 수 있다. 81번째 이후 공간은 시스템에서 무시한다. |
3. 오퍼랜드
JCL의 오퍼랜드를 기술하는 방식으로 위치 오퍼랜드 방식과 키워드 오퍼랜드 방식이 있다.
3.1. 위치 오퍼랜드
위치 오퍼랜드는 오퍼랜드의 위치가 결정되어 있어서 처음부터 몇 번째에 있는가에 따라서 해당 오퍼랜드의 값이 지정되는 방식이다.
-
위치 오퍼랜드 각각의 구분은 콤마(,)로 구분한다.
값1,값2,값3
-
위치 오퍼랜드를 생략하는 경우에도 해당 위치를 나타내기 위해서 콤마(,)는 생략해서는 안된다.
값1,,값3
-
생략하려는 위치 오퍼랜드 이후로 위치 오퍼랜드가 없다면, 이후의 위치 오퍼랜드를 구분할 필요가 없기 때문에 콤마(,)를 생략할 수 있다.
값1,값2,,키워드 = 값4
값1,값2,키워드 = 값4
-
위치 오퍼랜드 이후로 키워드 오퍼랜드가 없다면 마지막 콤마(,)는 생략해야 한다.
값1,값2
3.2. 키워드 오퍼랜드
키워드 오퍼랜드는 키워드와 값이 등호(=)로 지정되는 방식이다. 또는 키워드만을 사용하는 방식도 있다.
키워드 = 값 or 키워드
-
키워드 오퍼랜드 각각의 구분은 콤마(,)로 구분한다. 키워드 오퍼랜드는 위치에 관계없기 때문에 키워드 오퍼랜드를 생략하는 경우에는 콤마(,)도 함께 생략한다.
-
키워드 오퍼랜드의 순서의 의미가 없다.
-
위치 오퍼랜드와 키워드 오퍼랜드가 모두 있는 경우에는 모든 위치 오퍼랜드를 먼저 기술하고 키워드 오퍼랜드를 기술한다.
-
위치 오퍼랜드를 모두 생략한 경우에는 키워드 오퍼랜드 전에 콤마(,)를 지정할 필요가 없다.
3.4. 기술 규약
본 안내서에서 오퍼랜드의 기술 규약은 다음과 같다.
오퍼랜드 | 기술 규약 |
---|---|
[ ] (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
4. JCL
본 절에서는 JCL에서 사용되는 JOB 그룹 및 JOB의 시작과 종료 및 기술 순서에 대해 설명한다.
4.1. JOB 그룹의 시작과 종료
다음은 JOB 그룹의 시작과 종료이다. JOB 그룹에는 1개 이상의 JOB이 있어야 한다.
-
JOB 그룹의 시작
-
JOBG 문 있는 경우에 시작이다.
-
-
JOB 그룹의 종료
-
JGEND 문이 JOB 그룹의 종료이다.
-
다음 JOB 그룹의 시작을 나타내는 JOBG 문이 JOB 그룹의 종료이다.
-
입력 스트림 중 마지막 JOB 그룹인 경우에는 입력 스트림의 마지막이 JOB 그룹의 종료이다.
-
4.2. JOB의 시작과 종료
다음은 JOB의 시작과 종료이다.
-
JOB의 시작
-
JOB 문 또는 CODE 문이 JOB 문 직전에 있는 경우는 이 CODE 문이 JOB의 시작이다.
-
-
JOB의 종료
-
JEND 문이 JOB의 종료이다.
-
JGEND 문이 JOB의 종료이다.
-
다음 JOB의 시작을 나타내는 JOB 문 또는 CODE 문이 JOB의 종료이다.
-
입력 스트림 중 마지막 JOB인 경우에는 입력 스트림의 마지막이 JOB의 종료이다.
-
다음은 JOB STEP의 시작과 종료이다.
-
JOB STEP의 시작
-
EX 문의 시작이 JOB STEP의 시작이다.
-
-
JOB STEP의 종료
-
다음 JOB STEP의 시작을 나타내는 EX 문이 JOB STEP의 종료이다.
-
JOB의 마지막 STEP인 경우에는 JOB의 종료와 JOB STEP의 종료가 동일하다.
-
4.3. 기술 순서
JOB STEP은 각각의 JOB 범위 내에 기술하여야 한다. 따라서 EX 문은 JOB 문의 뒤에 기술한다.
JCL의 기술 순서
다음은 JCL의 기술 순서이다.
-
JOBG 문 : JOB 그룹의 시작을 의미한다.
-
JOB 문 : JOB의 시작을 의미한다. 단, CODE 문이 있는 경우에는 CODE 문의 뒤에 기술한다.
-
EX 문 : JOB 문 다음에 각 JOB STEP의 선두에 기술한다.
-
FD 문 : EX 문 다음에 기술한다.
-
단락문 : SYSIN 데이터셋의 마지막에 기술한다.
-
공문 : JOB의 마지막에 기술한다.
-
주석문 : JOB의 범위 내에서는 어디라도 관계없다. 단, Instream 데이터셋 내에는 지정해서는 안된다.
-
JEND 문 : JOB의 끝을 의미한다.
-
JGEND 문 : JOB 그룹의 끝을 의미한다.
MACRO JCL의 기술 순서
다음은 MACRO JCL의 기술 순서이다.
-
DEFINE 문 : 매크로의 시작을 의미한다.
-
매크로문 : 매크로 다음에 매크로 범위 내에서는 어디라도 관계없다.
-
JCL 문 : 매크로 다음에 매크로 범위 내에서는 어디라도 관계없다.
-
DEFEND 문 : 매크로의 끝을 의미한다.