Gentle Breeze

[MainFrame] JCL (Job Control Language) 본문

⑨ 직무역량강화/MainFrame

[MainFrame] JCL (Job Control Language)

재령 2009. 8. 5. 21:16
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.  
   
Comments