Notice
Recent Posts
Recent Comments
Gentle Breeze
[MainFrame] JCL (Job Control Language) 본문
JCL 사용법
1. JCL의 기본문법
1.1 CODING의 기본원칙
(1) Coding의 영역 : 1 - 72 Column
(2) 문장의 처음은 반드시 '//'로 시작해야 한다
(3) 문장의 연결표시는 마지막 Column에 ' , '로 표시한다
(4) 연결되는 문장의 개시위치는 반드시 4 - 16Column사이에서 시작해야 한다
(5) 주석의 처리는 '//' 다음에 * 표시가 나오면 주석이다
1.2 JCL 제어문의 종류
(1) Job Statement : Job의 시작을 알려주고 Job Name을 정한다 .
Job Name은 반드시 7자리 이상이어야 하며 필수기재 사항은 Job Name,
'JOB' 이라는 Operation , Input Class Parameter 'CLASS= A', Output Class
Parameter 'MSGCLASS=X' 등이다
(EX)' // JOBNAME JOB ..... '
(2) EXEC Statement : Job Step의 시작을 알려주고 Job Step의 Name을 정한다
필수기재 사항은 'EXEC'라는 Operation, 실행될 Program을 나타내는
'PGM='이나Procedure를 나타내는 'PROC='
(EX) '//STEPNAME EXEC ..... '
(3) DD Statement : 사용되는 Dataset을 알려주고 그 Dataset에 대한 정보를 준다
DD Name은 반드시 필수적이며 DD Statement를 나타내는 'DD'와 Dataset Name을
기술해야 하는데 Catalog의 유무, Access의 종류에 따라 적절하게 기술한다
(EX) ' //DDNAME DD ..... '
(4) Command Statement : Input Stream을 통해 System Command를 System에 통지
(EX) ' // COMMAND '
(5) Null Statement : JCL의 끝을 나타낸다
(EX) ' // '
1.3 PROCEDURE의 금기사항
Procedure내에는 다음과 같은 것을 포함시킬 수 없습니다
(1) Job, Delimiter 및 Null (//)Statement
(2) '*' 또는 Data Parameter를 가진 DD Statement
(3) Data Record
(4) Jes2 Control Statement
(5)다른 Procedure를 호출하는 EXEC Statement
(6) Joblib이라고 하는 DDNAME을 가진 DD Statement
2. JCL의 PARAMETER
2.1 JOB STATEMENT PARAMETER
=- CLASS : Job의 Input queue Class를 지정하는 Parameter
=- MSGCLASS : Job의 결과가 출력될 Output queue Class를 지정하는 Parameter
=- MSGLEVEL : Job의 결과를 출력하는 범위를 지정하는 Parameter MSGLEVEL=(M,N)
M : 0 Only Job Statement N : 0 Only if Job Abends
1 All JCL and Procedure 1 JES and OP Message
2 Only Input JCL
=- TYPRUN : Job이 수행되는 Type을 정한다
HOLD : Operator가 풀어줄 때까지 Job을 수행하지 않고 Hold한다
JCLHOLD : JCL Processing 이전 상태에서 Hold한다
SCAN : Job을 수행하지 않고 JCL의 Syntax Error만을 Check한다
COPY : Job을 수행하지 않고 Input Stream을 System Output Dataset으로
Conversion을 한다
=- TIME : Job이 사용할 수 있는 Maximum Procedure TIME
2.2 EXEC STATEMENT PARAMETER
=- PARM :이 Job Step에서 수행할 Program에 변수를 제공한다
=- COND :앞에서 수행된 Job Step들의 Return Code를 Test하여 이 Job Step의
수행여부를 결정한다
COND=((Value,Operator,Stepname),Even/Only)
Operator : GT/LT/EQ/NE/GE/LE
Even : 앞의 Step이 Abend되더라도 수행
Only : 앞의 Step이 Abend 될 때만 수행
Even/Only가 표시되지 않은 경우는 앞의 Step이 Abend되면 수행하지 않음
2.3 DD STATEMENT PARAMETER
DD Statement는 Initor에게 Allocation할 Resource를 통지 Terminator에게
Deallocate할 Resource를 통지 Access Method Routine에게 필요한 정보를 제공
- 'DSN=' : Dataset Name를 표시하며 Disk Dataset의 경우 5 Level로 구분자
'.'를 포함하여 44자리까지 가능하고 Tape의 경우 3 Level로 18자리까지 가능
- 'DISP=' : Dataset을 처리하는 정보를 나타낸다 다음과 같다
DISP=(P1, P2, P3)
P1 : DATASET의 상태
NEW ( New Dataset Allocation)
OLD (기존에 존재하는 Dataset을 배타적으로 Locking하고 재사용하며
Write시 처음부터 기록하며 기존 Dataset는 보존되지 않는다)
SHR(기존에 존재하는 Dataset을 Shared Locking하고 재사용하며 Write시
처음부터 기록하며 기존 Dataset는 보존되지 않는다)
MOD( (기존에 존재하는 Dataset을 배타적으로 Locking하고 재사용하며
Write 시 기존에 기록된 Data의 끝에 붙여서 기록한다
P2 : 정상종료시의 처리
P3 : 비정상종료시의 처리
DELETE (Dataset을 삭제)
KEEP (Dataset을 Catalog하지 않고 보존한다)
CATLG (Dataset을 Catalog에 등록하고 보존한다)
UNCATLG (Dataset을 Catalog에서 Uncatalog하고 보존한다)
PASS (Dataset을 Job의 연결되는 Step에게 전달한다)
- 'LABEL=' : Tape Dataset의 Access시 Label Information 및 Block 정보를 정의한다
SL : Standard Label
NL : Nn-Label
BLP : Bypass Label Process
- 'UNIT=' 장치의 유형을 정의한다
- 'DCB=' Access Method Routine에게 Data Access에 관한 정보를 준다
RECFM : Record Format (F,FB,V,VB,U....)
LRECL : Logical Record Size
BLKSIZE : Record Block Size
DSORG : Dataset의 구조 (PS,PO)
- 'VOL=SER=' 저장되어 있는 Volume의 명
- 'SPACE=' Dataset을 생성할 때 정보를 정의한다
SPACE=(P1,(P2,P3,P4) )
P1 : Dataset의 할당단위 (CYLS/TRKS/BLKS)
P2 : 첫번째 할당되는 크기
P3 : 추가로 할당되는 크기 (Non-Vsam : 15번 , Vsam : 119번)
P4 : PDS의 경우 Directory Block의 수, 1Directory Block에는 Member의 수가
약 5.5개 정도수록
3. MODULE의 SEARCH 순서
(1) Job Pack Area(자기 Address Space에 Module이 와있는 경우)
(2) Steplib,Joblib,Tasklib
(3) LPA Queue (FLPA,MLPA)
(4) PLPA
(5) LLA(VLF)
=- Steplib을 사용하여도 LLA에 등록되어 있는 경우는 VLF에서 확인하여 존재하면
사용하고없으면 Disk에서 I/O 한다
(C.F)
LPA Search 순서
FLPA ---> MLPA ---> PLPA
3.1 VTOC SEARCH
(1) VTOC의 DSCB를 검색하며 해당 Dataset의 위치정보를 찾는다
(Volume정보, DCB정보, Unit정보가 필수적)
DSNAME= AAA.TXT
VOLUME ID
VTOC DATASET DATASET DATASET ..... DATASET
DSCB DSCB DSCB DSCB DSCB
AAA.TXT
3.2 CATALOG SEARCH
DSN=AAA.TXT
(1) Master Catalog에서 AAA가 Alias로 등록되어 있는지 확인
(2-1) Master에 Alias로 등록되어 있으면 해당 User Catalog를 검색
(2-2) Master Catalog에 Alias로 등록되어 있지 않으면 Master Catalog의
등록정보를 검색한다
MASTER CATALOG USER CATALOG(UCAT1)
AAA.TXT
ALIAS AAA => UCAT1 AAA.TXT
ALIAS BBB => UCAT2
ALIAS CCC => UCAT3 USER CATALOG(UCAT2)
DDD.TEST
EEE.TEST
USER CATALOG(UCAT3)
4. ABEND CODE
4.1 기본적인 ABEND 목록
ABEND CODE
106 Region Size 부족
213 Dataset not Found
322 CPU 사용시간 한계 초과
413 Tape Level Reading Error
522 Idle Time Limit Out
622 TSO TCAS Control Block Stop(VTAM Inactive Command Exec)
637 지정된 Tape의 사용량 초과
806 Module not found
813 Dataset Name not found
878 GETMAIN(Virtual Storage) Error
913 RACF Authority 부족
A13 Tape Dataset 순서가 틀림
B37 Space 부족 (End of Volume)
E37 Space 부족(16-Extention Reached)
0C1 Operation Exception
0C2 Privileged-Operation Exception
0C3 Execution Exception
0C4 Reason Code 4 : Protection Exception
Reason Code 10: Segment-Translation Exception
Reason Code 11: Page-Transaction Exception
0C5 Addressing Exception
0C6 Specification Exception
0C7 Data Exception
0C8 Fixed Point Overflow Exception
0C9 Fixed Point Divide Exception
0CA Decimal Overflow
0CB Decimal Divide Exception
0CC Exponent Overflow
0CD Exponent underflow
0CE Signigicance Exception
0CF Floating Point Divide Exception
4.2 TSO에서 ABEND QUERY방법(기본적인 CODE만 가능)
(단 , sys1.help에 abend라는 member가 존재하는 경우만 가능)
ISPF Command Shell
Enter TSO or Workstation commands below:
===> tso help abend o(s806)
S806 - BLDL detected an error during the execution of a LINK, LOAD,
XCTL, or ATTACH macro instruction.
** If the register 15 return code is available, supply it in the **
** S806 operand for more specific information: H ABEND O(S806-rc) **
***
ISPF Command Shell
Enter TSO or Workstation commands below:
===> tso help abend o(s806-04)
S806-04 - Program not found.
1. JCL의 기본문법
1.1 CODING의 기본원칙
(1) Coding의 영역 : 1 - 72 Column
(2) 문장의 처음은 반드시 '//'로 시작해야 한다
(3) 문장의 연결표시는 마지막 Column에 ' , '로 표시한다
(4) 연결되는 문장의 개시위치는 반드시 4 - 16Column사이에서 시작해야 한다
(5) 주석의 처리는 '//' 다음에 * 표시가 나오면 주석이다
1.2 JCL 제어문의 종류
(1) Job Statement : Job의 시작을 알려주고 Job Name을 정한다 .
Job Name은 반드시 7자리 이상이어야 하며 필수기재 사항은 Job Name,
'JOB' 이라는 Operation , Input Class Parameter 'CLASS= A', Output Class
Parameter 'MSGCLASS=X' 등이다
(EX)' // JOBNAME JOB ..... '
(2) EXEC Statement : Job Step의 시작을 알려주고 Job Step의 Name을 정한다
필수기재 사항은 'EXEC'라는 Operation, 실행될 Program을 나타내는
'PGM='이나Procedure를 나타내는 'PROC='
(EX) '//STEPNAME EXEC ..... '
(3) DD Statement : 사용되는 Dataset을 알려주고 그 Dataset에 대한 정보를 준다
DD Name은 반드시 필수적이며 DD Statement를 나타내는 'DD'와 Dataset Name을
기술해야 하는데 Catalog의 유무, Access의 종류에 따라 적절하게 기술한다
(EX) ' //DDNAME DD ..... '
(4) Command Statement : Input Stream을 통해 System Command를 System에 통지
(EX) ' // COMMAND '
(5) Null Statement : JCL의 끝을 나타낸다
(EX) ' // '
1.3 PROCEDURE의 금기사항
Procedure내에는 다음과 같은 것을 포함시킬 수 없습니다
(1) Job, Delimiter 및 Null (//)Statement
(2) '*' 또는 Data Parameter를 가진 DD Statement
(3) Data Record
(4) Jes2 Control Statement
(5)다른 Procedure를 호출하는 EXEC Statement
(6) Joblib이라고 하는 DDNAME을 가진 DD Statement
2. JCL의 PARAMETER
2.1 JOB STATEMENT PARAMETER
=- CLASS : Job의 Input queue Class를 지정하는 Parameter
=- MSGCLASS : Job의 결과가 출력될 Output queue Class를 지정하는 Parameter
=- MSGLEVEL : Job의 결과를 출력하는 범위를 지정하는 Parameter MSGLEVEL=(M,N)
M : 0 Only Job Statement N : 0 Only if Job Abends
1 All JCL and Procedure 1 JES and OP Message
2 Only Input JCL
=- TYPRUN : Job이 수행되는 Type을 정한다
HOLD : Operator가 풀어줄 때까지 Job을 수행하지 않고 Hold한다
JCLHOLD : JCL Processing 이전 상태에서 Hold한다
SCAN : Job을 수행하지 않고 JCL의 Syntax Error만을 Check한다
COPY : Job을 수행하지 않고 Input Stream을 System Output Dataset으로
Conversion을 한다
=- TIME : Job이 사용할 수 있는 Maximum Procedure TIME
2.2 EXEC STATEMENT PARAMETER
=- PARM :이 Job Step에서 수행할 Program에 변수를 제공한다
=- COND :앞에서 수행된 Job Step들의 Return Code를 Test하여 이 Job Step의
수행여부를 결정한다
COND=((Value,Operator,Stepname),Even/Only)
Operator : GT/LT/EQ/NE/GE/LE
Even : 앞의 Step이 Abend되더라도 수행
Only : 앞의 Step이 Abend 될 때만 수행
Even/Only가 표시되지 않은 경우는 앞의 Step이 Abend되면 수행하지 않음
2.3 DD STATEMENT PARAMETER
DD Statement는 Initor에게 Allocation할 Resource를 통지 Terminator에게
Deallocate할 Resource를 통지 Access Method Routine에게 필요한 정보를 제공
- 'DSN=' : Dataset Name를 표시하며 Disk Dataset의 경우 5 Level로 구분자
'.'를 포함하여 44자리까지 가능하고 Tape의 경우 3 Level로 18자리까지 가능
- 'DISP=' : Dataset을 처리하는 정보를 나타낸다 다음과 같다
DISP=(P1, P2, P3)
P1 : DATASET의 상태
NEW ( New Dataset Allocation)
OLD (기존에 존재하는 Dataset을 배타적으로 Locking하고 재사용하며
Write시 처음부터 기록하며 기존 Dataset는 보존되지 않는다)
SHR(기존에 존재하는 Dataset을 Shared Locking하고 재사용하며 Write시
처음부터 기록하며 기존 Dataset는 보존되지 않는다)
MOD( (기존에 존재하는 Dataset을 배타적으로 Locking하고 재사용하며
Write 시 기존에 기록된 Data의 끝에 붙여서 기록한다
P2 : 정상종료시의 처리
P3 : 비정상종료시의 처리
DELETE (Dataset을 삭제)
KEEP (Dataset을 Catalog하지 않고 보존한다)
CATLG (Dataset을 Catalog에 등록하고 보존한다)
UNCATLG (Dataset을 Catalog에서 Uncatalog하고 보존한다)
PASS (Dataset을 Job의 연결되는 Step에게 전달한다)
- 'LABEL=' : Tape Dataset의 Access시 Label Information 및 Block 정보를 정의한다
SL : Standard Label
NL : Nn-Label
BLP : Bypass Label Process
- 'UNIT=' 장치의 유형을 정의한다
- 'DCB=' Access Method Routine에게 Data Access에 관한 정보를 준다
RECFM : Record Format (F,FB,V,VB,U....)
LRECL : Logical Record Size
BLKSIZE : Record Block Size
DSORG : Dataset의 구조 (PS,PO)
- 'VOL=SER=' 저장되어 있는 Volume의 명
- 'SPACE=' Dataset을 생성할 때 정보를 정의한다
SPACE=(P1,(P2,P3,P4) )
P1 : Dataset의 할당단위 (CYLS/TRKS/BLKS)
P2 : 첫번째 할당되는 크기
P3 : 추가로 할당되는 크기 (Non-Vsam : 15번 , Vsam : 119번)
P4 : PDS의 경우 Directory Block의 수, 1Directory Block에는 Member의 수가
약 5.5개 정도수록
3. MODULE의 SEARCH 순서
(1) Job Pack Area(자기 Address Space에 Module이 와있는 경우)
(2) Steplib,Joblib,Tasklib
(3) LPA Queue (FLPA,MLPA)
(4) PLPA
(5) LLA(VLF)
=- Steplib을 사용하여도 LLA에 등록되어 있는 경우는 VLF에서 확인하여 존재하면
사용하고없으면 Disk에서 I/O 한다
(C.F)
LPA Search 순서
FLPA ---> MLPA ---> PLPA
3.1 VTOC SEARCH
(1) VTOC의 DSCB를 검색하며 해당 Dataset의 위치정보를 찾는다
(Volume정보, DCB정보, Unit정보가 필수적)
DSNAME= AAA.TXT
VOLUME ID
VTOC DATASET DATASET DATASET ..... DATASET
DSCB DSCB DSCB DSCB DSCB
AAA.TXT
3.2 CATALOG SEARCH
DSN=AAA.TXT
(1) Master Catalog에서 AAA가 Alias로 등록되어 있는지 확인
(2-1) Master에 Alias로 등록되어 있으면 해당 User Catalog를 검색
(2-2) Master Catalog에 Alias로 등록되어 있지 않으면 Master Catalog의
등록정보를 검색한다
MASTER CATALOG USER CATALOG(UCAT1)
AAA.TXT
ALIAS AAA => UCAT1 AAA.TXT
ALIAS BBB => UCAT2
ALIAS CCC => UCAT3 USER CATALOG(UCAT2)
DDD.TEST
EEE.TEST
USER CATALOG(UCAT3)
4. ABEND CODE
4.1 기본적인 ABEND 목록
ABEND CODE
106 Region Size 부족
213 Dataset not Found
322 CPU 사용시간 한계 초과
413 Tape Level Reading Error
522 Idle Time Limit Out
622 TSO TCAS Control Block Stop(VTAM Inactive Command Exec)
637 지정된 Tape의 사용량 초과
806 Module not found
813 Dataset Name not found
878 GETMAIN(Virtual Storage) Error
913 RACF Authority 부족
A13 Tape Dataset 순서가 틀림
B37 Space 부족 (End of Volume)
E37 Space 부족(16-Extention Reached)
0C1 Operation Exception
0C2 Privileged-Operation Exception
0C3 Execution Exception
0C4 Reason Code 4 : Protection Exception
Reason Code 10: Segment-Translation Exception
Reason Code 11: Page-Transaction Exception
0C5 Addressing Exception
0C6 Specification Exception
0C7 Data Exception
0C8 Fixed Point Overflow Exception
0C9 Fixed Point Divide Exception
0CA Decimal Overflow
0CB Decimal Divide Exception
0CC Exponent Overflow
0CD Exponent underflow
0CE Signigicance Exception
0CF Floating Point Divide Exception
4.2 TSO에서 ABEND QUERY방법(기본적인 CODE만 가능)
(단 , sys1.help에 abend라는 member가 존재하는 경우만 가능)
ISPF Command Shell
Enter TSO or Workstation commands below:
===> tso help abend o(s806)
S806 - BLDL detected an error during the execution of a LINK, LOAD,
XCTL, or ATTACH macro instruction.
** If the register 15 return code is available, supply it in the **
** S806 operand for more specific information: H ABEND O(S806-rc) **
***
ISPF Command Shell
Enter TSO or Workstation commands below:
===> tso help abend o(s806-04)
S806-04 - Program not found.
'⑨ 직무역량강화 > MainFrame' 카테고리의 다른 글
IBM MAINFRAME FORUMS (0) | 2009.12.31 |
---|---|
[TSO] USER PROFILE 에서 PREFIX 수정 (0) | 2009.12.12 |
7bit n-byte 한글방식 - SI (Shift In) / SO (Shift Out) (0) | 2009.09.30 |
[MainFrame] JCL Statements (0) | 2009.08.05 |
Comments