JCL 소개

본 장에서는 OpenFrame에서 사용할 수 있는 JCL을 소개하고, JCL의 기술 형식, 오퍼랜드, JCL의 시작과 종료에 대해 기술한다.

1. 개요

OpenFrame은 Fujitsu Mainframe의 JCL에 대응하는 XSP JCL을 제공한다.

현재 OpenFrame에서는 다음 2종류의 XSP JCL을 지원한다.

  • 작업 제어문

    JOB이 실행되어 종료될 때까지를 제어한다.

  • 매크로 제어문

    미리 기술한 JCL을 간단한 문법으로 여러 용도로 사용할 수 있게 하는 기능이다.

2. 기술 형식

본 절에서는 JCL과 매크로의 기술 형식에 대해 기술한다.

2.1. JCL

다음은 JCL의 기술 형식이다.

figure 1 1
JCL 기술 형식
항목 설명

명칭(Name)

JCL 문장의 명칭을 지정한다. 명칭을 지정할 때는 반드시 두 번째 칸에서부터 기술해야 한다. 보통은 주석의 의미지만 아래의 경우 의미를 가진다.

  • 해당 문장이 EX 문인 경우 : JOB STEP명을 나타내게 되고 다른 문장에서 해당 JOB STEP명이 필요할 때 이용된다.

  • 매크로인 경우 : IF 문, IFN 문, SKIP 문의 분기점으로 이용된다.

  • 값이 *, /, = 의 경우: 각각 주석문, 단락문, 지령문임을 의미한다.

위의 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. 매크로

다음은 매크로의 기술 형식이다.

figure 1 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.3. 예제

다음은 JOB 문에 JOB명을 위치 오퍼랜드로 지정하고 ML에 키워드 오퍼랜드로 지정하는 예제이다.

\ JOB JOB1,ML=1

3.4. 기술 규약

본 안내서에서 오퍼랜드의 기술 규약은 다음과 같다.

오퍼랜드 기술 규약

[ ] (brackets)

이 기호로 표현된 오퍼랜드는 생략할 수 있음을 의미한다.

  • 예제

    다음과 같이 기술되어 있다면 그 다음 설명된 4가지 경우가 가능하다.

    A[,B][,C]
    • A

    • A,B

    • A,C

    • A,B,C

{ } (braces)

이 기호로 표현된 오퍼랜드는 세로의 항목 중 1개의 항목을 선택하는 것을 의미한다.

  • 예제

    다음과 같이 기술되어 있다면 그 다음 설명된 2가지 경우가 가능하다.

    {B}
    {C}
    • B

    • C

| (vertical bar)

이 기호로 구분되어 있으면 구분되는 항목 중 1개의 항목을 선택하는 것을 의미한다.

  • 예제

    다음과 같이 기술되어 있다면 그 다음 설명된 2가지 경우가 가능하다.

    { PS | PSU }
    • PS

    • PSU

Bold

선택 기호 { } 안의 어떤 값도 기술하지 않았을 경우 디폴트로 사용되는 기본값을 의미한다.

  • 예제

    다음과 같이 기술되어 있다면 FREE 파라미터가 생략될 경우 FREE=END가 지정된다.

    FREE = {END | CLOSE}

... (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의 기술 순서이다.

  1. JOBG 문 : JOB 그룹의 시작을 의미한다.

  2. JOB 문 : JOB의 시작을 의미한다. 단, CODE 문이 있는 경우에는 CODE 문의 뒤에 기술한다.

  3. EX 문 : JOB 문 다음에 각 JOB STEP의 선두에 기술한다.

  4. FD 문 : EX 문 다음에 기술한다.

  5. 단락문 : SYSIN 데이터셋의 마지막에 기술한다.

  6. 공문 : JOB의 마지막에 기술한다.

  7. 주석문 : JOB의 범위 내에서는 어디라도 관계없다. 단, Instream 데이터셋 내에는 지정해서는 안된다.

  8. JEND 문 : JOB의 끝을 의미한다.

  9. JGEND 문 : JOB 그룹의 끝을 의미한다.

MACRO JCL의 기술 순서

다음은 MACRO JCL의 기술 순서이다.

  1. DEFINE 문 : 매크로의 시작을 의미한다.

  2. 매크로문 : 매크로 다음에 매크로 범위 내에서는 어디라도 관계없다.

  3. JCL 문 : 매크로 다음에 매크로 범위 내에서는 어디라도 관계없다.

  4. DEFEND 문 : 매크로의 끝을 의미한다.