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에 지정됩니다.