เรียกใช้โปรแกรม COBOL โดยใช้ JCL
การรวบรวมโปรแกรม COBOL
ในการดำเนินการโปรแกรม COBOL ในโหมดแบตช์โดยใช้ JCL โปรแกรมจะต้องมีการคอมไพล์และสร้างโมดูลโหลดด้วยโปรแกรมย่อยทั้งหมด 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
ด้านล่างตัวอย่าง JCL ที่โปรแกรม MYPROG ทำงานโดยใช้ไฟล์อินพุต MYDATA.URMI.INPUT และสร้างไฟล์เอาต์พุตสองไฟล์ที่เขียนไปยังสปูล
//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 ข้างต้นสามารถใช้กับโมดูล COBOL ที่ไม่ใช่ DB2 เท่านั้น
การส่งผ่านข้อมูลไปยังโปรแกรม COBOL
การป้อนข้อมูลไปยังโปรแกรมชุด COBOL สามารถผ่านไฟล์พารามิเตอร์ PARAM และคำสั่ง SYSIN DD ในตัวอย่างด้านบน:
บันทึกข้อมูลจะส่งผ่านไปยัง MYPROG ผ่านไฟล์ MYDATA.URMI.INPUT ไฟล์นี้จะถูกอ้างอิงในโปรแกรมโดยใช้ชื่อ DD INPUT1 ไฟล์สามารถเปิดอ่านและปิดได้ในโปรแกรม
ข้อมูลพารามิเตอร์ PARM ACCT5000 ได้รับในส่วน LINKAGE ของโปรแกรม MYPROG ในตัวแปรที่กำหนดภายในส่วนนั้น
ข้อมูลในคำสั่ง SYSIN ได้รับผ่านคำสั่ง ACCEPT ในส่วน PROCEDURE ของโปรแกรม ทุกคำสั่ง ACCEPT จะอ่านหนึ่งระเบียนทั้งหมด (เช่น CUST1 1000) ในตัวแปรหน่วยเก็บข้อมูลที่ทำงานซึ่งกำหนดไว้ในโปรแกรม
การรันโปรแกรม COBOL-DB2
สำหรับการรันโปรแกรม COBOL DB2 ยูทิลิตี้ IBM เฉพาะจะถูกใช้ใน JCL และโปรแกรม ภูมิภาค DB2 และพารามิเตอร์ที่ต้องการจะถูกส่งผ่านไปยังยูทิลิตี้
ทำตามขั้นตอนด้านล่างนี้ในการรันโปรแกรม COBOL-DB2:
เมื่อคอมไพล์โปรแกรม COBOL-DB2 DBRM (Database Request Module) จะถูกสร้างขึ้นพร้อมกับโหลดโมดูล DBRM ประกอบด้วยคำสั่ง SQL ของโปรแกรม COBOL โดยตรวจสอบไวยากรณ์แล้วว่าถูกต้อง
DBRM ถูกผูกไว้กับภูมิภาค DB2 (สภาพแวดล้อม) ที่ COBOL จะทำงาน สามารถทำได้โดยใช้ยูทิลิตี้ IKJEFT01 ใน JCL
หลังจากขั้นตอนการโยงโปรแกรม COBOL-DB2 จะรันโดยใช้ IKJEFT01 (อีกครั้ง) โดยมีโหลดไลบรารีและไลบรารี DBRM เป็นอินพุตไปยัง JCL
//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 คือโปรแกรม COBOL-DB2 ที่รันโดยใช้ IKJEFT01 โปรดทราบว่าชื่อโปรแกรม DB2 Sub-System Id (SSID) ชื่อแผน DB2 จะถูกส่งผ่านภายในคำสั่ง SYSTSIN DD ไลบรารี DBRM ถูกระบุใน STEPLIB