JCL을 사용하여 COBOL 프로그램 실행

COBOL 프로그램 컴파일

JCL을 사용하여 배치 모드에서 COBOL 프로그램을 실행하려면 프로그램을 컴파일하고 모든 서브 프로그램으로로드 모듈을 작성해야합니다. JCL은 실행시 실제 프로그램이 아닌로드 모듈을 사용합니다. 로드 라이브러리는 다음을 사용하여 실행시 JCL에 연결되고 제공됩니다.JCLLIB 또는 STEPLIB.

COBOL 프로그램을 컴파일하는 데 사용할 수있는 많은 메인 프레임 컴파일러 유틸리티가 있습니다. 일부 기업에서는 다음과 같은 변경 관리 도구를 사용합니다.Endevor, 프로그램의 모든 버전을 컴파일하고 저장합니다. 이것은 프로그램의 변경 사항을 추적하는 데 유용합니다.

//COMPILE   JOB ,CLASS=6,MSGCLASS=X,NOTIFY=&SYSUID             
//*            
//STEP1     EXEC IGYCRCTL,PARM=RMODE,DYNAM,SSRANGE
//SYSIN     DD DSN=MYDATA.URMI.SOURCES(MYCOBB),DISP=SHR
//SYSLIB    DD DSN=MYDATA.URMI.COPYBOOK(MYCOPY),DISP=SHR
//SYSLMOD   DD DSN=MYDATA.URMI.LOAD(MYCOBB),DISP=SHR
//SYSPRINT  DD SYSOUT=*
//*

IGYCRCTL은 IBM COBOL 컴파일러 유틸리티입니다. 컴파일러 옵션은 PARM 매개 변수를 사용하여 전달됩니다. 위의 예에서 RMODE는 프로그램에서 상대 주소 지정 모드를 사용하도록 컴파일러에 지시합니다. COBOL 프로그램은 SYSIN 매개 변수를 사용하여 전달되고 카피 북은 SYSLIB의 프로그램이 사용하는 라이브러리입니다.

이 JCL은 실행 JCL에 대한 입력으로 사용되는 출력으로 프로그램의로드 모듈을 생성합니다.

COBOL 프로그램 실행

아래는 MYPROG 프로그램이 입력 파일 MYDATA.URMI.INPUT을 사용하여 실행되고 스풀에 기록 된 두 개의 출력 파일을 생성하는 JCL 예제입니다.

//COBBSTEP  JOB CLASS=6,NOTIFY=&SYSUID
//
//STEP10    EXEC PGM=MYPROG,PARM=ACCT5000
//STEPLIB   DD DSN=MYDATA.URMI.LOADLIB,DISP=SHR
//INPUT1    DD DSN=MYDATA.URMI.INPUT,DISP=SHR
//OUT1      DD SYSOUT=*
//OUT2      DD SYSOUT=*
//SYSIN     DD *
//CUST1     1000
//CUST2     1001
/*

MYPROG의로드 모듈은 MYDATA.URMI.LOADLIB에 있습니다. 위의 JCL은 비 DB2 COBOL 모듈에만 사용할 수 있다는 점에 유의해야합니다.

COBOL 프로그램에 데이터 전달

COBOL 배치 프로그램에 대한 데이터 입력은 파일, PARAM 매개 변수 및 SYSIN DD 문을 통해 이루어질 수 있습니다. 위의 예에서 :

  • 데이터 레코드는 MYDATA.URMI.INPUT 파일을 통해 MYPROG로 전달됩니다. 이 파일은 DD 이름 INPUT1을 사용하여 프로그램에서 참조됩니다. 파일은 프로그램에서 열고, 읽고, 닫을 수 있습니다.

  • PARM 매개 변수 데이터 ACCT5000은 해당 섹션 내에 정의 된 변수에있는 프로그램 MYPROG의 LINKAGE 섹션에서 수신됩니다.

  • SYSIN 문의 데이터는 프로그램의 PROCEDURE 부서에서 ACCEPT 문을 통해 수신됩니다. 모든 ACCEPT 문은 하나의 전체 레코드 (예 : CUST1 1000)를 프로그램에 정의 된 작업 저장 변수로 읽습니다.

COBOL-DB2 프로그램 실행

COBOL DB2 프로그램을 실행하기 위해 JCL 및 프로그램에서 특수 IBM 유틸리티가 사용됩니다. DB2 리젼 및 필수 매개 변수는 유틸리티에 입력으로 전달됩니다.

아래 단계는 COBOL-DB2 프로그램을 실행할 때 따릅니다.

  • COBOL-DB2 프로그램이 컴파일되면로드 모듈과 함께 DBRM (Database Request Module)이 작성됩니다. DBRM에는 구문이 올바른지 확인한 COBOL 프로그램의 SQL 문이 포함되어 있습니다.

  • DBRM은 COBOL이 실행될 DB2 영역 (환경)에 바인드됩니다. 이는 JCL에서 IKJEFT01 유틸리티를 사용하여 수행 할 수 있습니다.

  • 바인드 단계 후 COBOL-DB2 프로그램은 JCL에 대한 입력으로로드 라이브러리 및 DBRM 라이브러리와 함께 IKJEFT01 (다시)을 사용하여 실행됩니다.

//STEP001  EXEC PGM=IKJEFT01
//*
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//*
//input files
//output files
//SYSPRINT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSDBOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//DISPLAY  DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(MYCOBB) PLAN(PLANNAME) PARM(parameters to cobol program) -
    LIB('MYDATA.URMI.LOADLIB')
    END
/*

위의 예에서 MYCOBB는 IKJEFT01을 사용하여 실행되는 COBOL-DB2 프로그램입니다. 프로그램 이름, DB2 하위 시스템 ID (SSID), DB2 계획 이름은 SYSTSIN DD 문 내에서 전달됩니다. DBRM 라이브러리는 STEPLIB에 지정됩니다.