'⑨ 직무역량강화/MainFrame'에 해당되는 글 5

  1. 2009/12/31 IBM MAINFRAME FORUMS
  2. 2009/12/12 [TSO] USER PROFILE 에서 PREFIX 수정
  3. 2009/09/30 7bit n-byte 한글방식 - SI (Shift In) / SO (Shift Out)
  4. 2009/08/05 [MainFrame] JCL Statements
  5. 2009/08/05 [MainFrame] JCL (Job Control Language)
⑨ 직무역량강화/MainFrame | Posted by 서풍의신 재령 2009/12/31 10:03

IBM MAINFRAME FORUMS

IBM MAINFRAME FORUMS JOBS MANUALS & DOWNLOAD

 - http://www.ibmmainframes.com/
크리에이티브 커먼즈 라이선스
Creative Commons License
⑨ 직무역량강화/MainFrame | Posted by 서풍의신 재령 2009/12/12 00:12

[TSO] USER PROFILE 에서 PREFIX 수정

일반적으로 TSO 에서는 PREFIX가 USER ID 로 설정되어있다.
이 때 PROFILE 을 확인하여 PREFIX 를 확인하고 변경할 수 있다.

PREFIX 제거 : TSO PROFILE NOPREFIX

사용자 삽입 이미지

PROFILE 확인 : TSO PROFILE
사용자 삽입 이미지

(▲ CLICK TO ENLARGE)


크리에이티브 커먼즈 라이선스
Creative Commons License

7bit n-byte 한글방식은, 제어문제로 한글과 영문을 구분하기 위해 SI(shift in), SO(shift out) 를 이용해 모드 전환을 하고 한글코드와 영어코드(아스키코드등)를 같은값을 쓰는 방식이다.

영문 영역(0~127)을 이용해 표현하기 때문에 7bit n-byte 한글방식이라고 불리며 초기에는 자음, 모음을 각각 하나의 바이트로 취급해 표현이 가장 쉬운 장점을 가지고 있었다.

english... <SO>한글<SI> <SO>한글<SI><CRLF>

즉, euc-kr 과는 달리 각각 1BYTE 씩을 차지하는 SO, SI 를  두어 한글을 나타내는 방식이다.

사용자 삽입 이미지


위의 그림에서 보다시피 한글로 된 부분 앞 뒤의 '》','《' 로 표시 된 부분이..
SO/SI 부분이 되겠다.

이로 인해 예를 들어 MCI 를 통해 SO/SI 가 처리되지 않은 화면에서 SO/SI 처리 된 프로그램 모듈로 데이터를 가득 채워 넘길 때 혹은 한글과 한글 사이에 반자(1 BYTE) 가 섞여 들어왔을 때 다음과 같이 MCI 에러가 발생할 수 있는 것이다.

사용자 삽입 이미지

결국 이를 해결하기 위해서는...
아래 그림과 같이 계산을 해야 한다는 결론을 얻을 수 있다.


사용자 삽입 이미지

<↑ Click to Enlarge>
크리에이티브 커먼즈 라이선스
Creative Commons License
⑨ 직무역량강화/MainFrame | Posted by 서풍의신 재령 2009/08/05 22:03

[MainFrame] JCL Statements

COMMON JCL Statements / Cards


-JOB Statement
  JOB 을 시작하고 알려 주고, JOB NAME을 정한다.
-EXEC Statement (Execution)
  JOB STEP의 시작을 알려 주고, JOB STEP NAME을 정한다.
-DD Statement  (Data definition)
  사용되는 DATA SET을 알려 주고, 그 DATA SET에 대한 정보를 준다.


JCL Statement Format

-Indicates a JCL Statement
  //  : All JCL Statements except the delimiter.
  /*  : Delimiter , JES2 Control Statements.
  //*  : Comment , JES3 Control Statements.
   (Delimiter : INPUT STREAM DATA의 끝을 나타낸다.
    영구보관이 아닌 1회성인 DATA를 처리할 때 사용한다.)
-Name field
  maximum 8자, alphanumeric ( A~Z, 0~9), national characters(#,@,£)
  첫 글자는 반드시 alphabetic or national.
-Operation field
  JCL Statement의 종류를 알려 준다.
  JOB, EXEC, DD
  IF, JCLLIB, COMMAND, SET, etc.
-Parameter field
  JCL Statement에서 사용되는 Parameter로서 COMMA(,)로 분리한다.


Positional parameters
  위치가 정해져 있으므로 서로 위치를 바꿀 수 없다.
  생략으로 인해 남아있는 위치는 ','로 생략되었음을 알려 준다.
 //NAME OPERATION P1,P2,P3,K1=A,K2=B,K3=C
 //NAME OPERATION ,P2,P3,K1=A,K2=B,K3=C       (P1을 생략한 경우)
 //NAME OPERATION P1,,P3,K1=A,K3=C,K2=B       (P2를 생략한 경우)
 //NAME OPERATION K1=A,K2=B,K3=C       (Parameter를 모두 생략한 경우)   

Keyword parameters
 위치가 정해져 있지 않으므로 어느 위치에나 적을 수 있다.
 생략시 생략되었음을 알려 줄 필요가 없다.
 //NAME OPERATION P1,K2=B

 //NAME OPERATION ,P2,K3=C,K1=A
 //NAME OPERATION P1,P2

-Comment field
  User가 기록하고자 하는 Comments를 적는다.


JOB CARD PARAMETER
 CLASS  : JOB에 수행하게 될 CLASS를 지명한다.
               JOB의 Initiator와 match되어 작업됨.
 MSGCLASS : JOB LOG에 OUTPUT CLASS를 지명한다.
 MSGLEVEL : JOB LOG에 있는 내용을 보여 준다. (PRINT할 내용을 지정)
 MSGLEVEL=(M,N)
                    M:WHAT WILL BE WRITTEN
                    (0 - only JOB Statement, 1 - all JCL & Procedures, 2 - only INPUT JCL)
                    N:ALLOCATION/TEAM MESSAGES
                    (0 - only IF JOB abends, 1 - JES & OP Messages)
 PRTY  : JOB이 수행되기 위해 SELECTION되는 PRIORITY를 정한다. 우선순위 결정
 ADDRSPC  : JOB이 VIRTUAL STORAGE/ REAL STORAGE에서 수행되는가를 정한다.
 REGION   : JOB에  할당되는 STORAGE의 크기를 정한다. (MEMORY 사용크기)
 COND   :  CONDITION PARAMETER
               각 JOB STEP의 RETURN CODE를 TEST하여 JOB의 수행여부를 결정한다.
               COND=((VALUE,OPERATOR,STEPNAME),EVEN/ONLY)
 OPERATOR : GT/LT/EQ/NE/GE/LE
 PERFORM  : JOB에 PERFORMANCE GROUP을 정한다.
 TIME   : JOB이 사용할 수 있는 MAXIMUM PROCESSOR TIME을 설정한다.
             TIME=(1440) 무한루프허용
 TYPRUN  : JOB이 수행되는 TYPE을 정한다. 
 HOLD : OPERATOR가 풀어 줄 때까지 JOB을 수행하지 않고 HOLD 한다.
 JCLHOLD : JCL PROCESSING 이전 상태에서 HOLD 한다.
 SCAN : JOB을 수행하지 않고 JCL의 SYNTAX ERROR만을 CHECK한다.
 COPY : JOB을 수행하지 않고 INPUT STREAM을 SYSTEM OUTPUT DATA SET으로
            
CONVERSION을 한다.


EXEC CARD PARAMETERS
 POSITIONAL PARAMETER
  PGM : 수행할 PROGRAM의 이름
  PROC : 수행할 PROCEDURE의 이름 (PROC=COBUCLG)
              KEYWORD PARAMETER
  PARM :이 JOB STEP에서 수행할 PROGRAM에 VARIABLE INFORMATION을 제공
  ACCT :이 JOB STEP에 ACCOUNTING INFORMATION을 제공한다.



JOB CARD PARAMETERS
//JOBA  JOB DEPT1,SDS,CLASS=A,MSGCLASS=X,
//    MSGLEVEL=(1,1),PRTY=10,ADDRSPC=REAL,
//   REGION=1024K,COND=(4,LT),PERFORM=3,
//   TIME=(3,30),TYPRUN=HOLD

EXEC CARD PARAMETERS
//STEPB  EXEC  PGM=PAYROLL(or COBUCLG),
//     PARM='MM/DD/YY',ACCT=DEPT1,ADDRSPC=REAL,
//    REGION=512K,TIME=5,COND=(12,LE,STEPA)

DD CARD PARAMETERS
//ddname  DD  DSN=PAYROLL.MAS01,DISP=(NEW,KEEP),
//     UNIT=3380,VOL=SER=WORK01,
//     DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),
//     SPACE=(CYL,(5,3))

//ddname  DD  LABEL=(3,SL)

//ddname  DD  SYSOUT=*

//ddname  DD  *


SYSTEM DEFINED DDNAME
  JOBLIB : JOB에서 사용할 PROGRAM이 들어있는 LIBRARY를 명시한다.
  STEPLIB : STEP에서 사용할 PROGRAM이 들어있는 LIBRARY를 명시한다.
  JOBCAT : JOB에서 사용하는 DATA SET이 등록 되있을 때 CATALOG를 명시한다.
  STEPCAT : STEP에서 사용하는 DATA SET이 등록 되었을 때 CATALOG를 명시한다.
  SYSABEND, SYSUDUMP, SYSMDUMP : DUMP DATA SET
  SYSCHK : CHECKPOINT DATA SET을 명시한다.
  DSN : DATA SET NAME
           DSN=ddname(member name) ---> LIBRARY 사용할 때.
           DSN=&&ddname(member name) ---> TEMPORARY DATA SET 사용할 때.

           EXAMPLE : DSN=MYDATA, DSN=MYLIB(DATA),DSN=&&TEMP1
                             DSN=&&TEMP(GO),DSN=MASTER(+1)

  UNIT : UNIT PARAMETER
            UNIT=3380
             DEVICE TYPE ---> 3380, 3375, 3480,3390
                                          CTAPE(3480),ACS(3490),DISK,VSM 등

VOLUME PARAMETER
  VOLUME=(PRIVATE,RETAIN,2,5,SER=(VOLA,VOLB))
  PRIVATE : DATA SET이 CLOSE된 후 VOLUME이 DEMOUNT된다.
  RETAIN : VOLUME 이 DEMOUNT 및 REWOUND 되지 않도록 한다.(TAPE일 때)
                SER=(SERIAL-NUMBER,SERIAL-NUMBER)
                DATA SET이 위치하는 VOLUMES

DISP PARAMETER
  DISP=(NEW,CATLG,DELETE)
           NEW : 새로운 DATA SET을 만들려고 할 때.
           OLD : 존재하는 DATA SET을 EXCLUSIVE CONTROL한다.
           SHR : 존재하는 DATA SET을 다른 JOB과 SHARE한다.
           MOD : 기존 DATA SET에 덧 붙일 때.
           CATLG : DATA SET을 KEEP하며, CATALOG에 등록한다.
           UNCATLG : DATA SET은 KEEP하며, UNCATALOG 한다.
           PASS : DATA SET을 JOB의 연결되는 STEP에게 PASS한다.
           KEEP : DATA SET을 KEEP한다. 원 상태로 유지.
           DELETE : DATA SET을 DELETE 한다.

SPACE PARAMETER
           SPACE=(TRK,(20,2,10),RLSE,CONTIG,ROUND)
           ALLOCATION TYPE : TRK, CYL, BLOCKLENGTH
           PRIMARY QUANTITY : INITIAL VALUE (주 할당 영역)
           SECONDARY QUANTITY : 추가되는 SPACE (16번까지 ALLOCATE)
           DIRECTORY : DIRECTORY RECORD 수
           RLSE : OUTPUT DATA SET에 ALLOCATE되었던 SPACE중 사용하지 않은
                     부분을 RELEASE한다. 재사용하도록...
           CONTIG : PRIMARY SPACE ALLOCATION이 CONTINUOUS한 상태로
                          이루워지도록 지정한다. 할당 영역이 한 곳으로 모이도록 지정한 것
           ROUND : DATA SET에 ALLOCATE되는 SPACE를 CYLINDER경계로 할 것을 지정.

SYSOUT PARAMETER
     SYSOUT=(P1,P2,P3)
                P1 : OUTPPUT CLASS
                       SYSOUT=* : MSGCLASS의 CLASS와 같은 OUTPUT CLASS를 사용한다.
                P2 : WRITER NAME
                       EXTERNAL WRITER의 이름
                P3 : FORM NAME
                       PRINT/PUNCH FORM의 이름

DCB(DATA CONTROL BLOCK) PARAMETER
      DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,..)
              RECFM : RECORD FORMAT ......F, FB, V, VB, U,...
              LRECL : LOGICAL RECORD LENGTH ......NUMBER OF BYTES
              BLKSIZE : PHYSICAL RECORD LENGTH......NUMBER OF BYTES
  그 밖의 쓰지 잘 않는 것  DSORG : DATA SET ORGANIZATION...PS,PO,DA...
     DEN : TAPE DENSITY...1:556,2:800,4:6450 BPI

크리에이티브 커먼즈 라이선스
Creative Commons License
⑨ 직무역량강화/MainFrame | Posted by 서풍의신 재령 2009/08/05 21:16

[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.  
   
크리에이티브 커먼즈 라이선스
Creative Commons License