Chạy chương trình COBOL sử dụng JCL
Biên soạn các chương trình COBOL
Để thực thi chương trình COBOL ở chế độ hàng loạt sử dụng JCL, chương trình cần được biên dịch và mô-đun tải được tạo với tất cả các chương trình con. JCL sử dụng mô-đun tải chứ không phải chương trình thực tại thời điểm thực thi. Các thư viện tải được nối và cấp cho JCL tại thời điểm thực thi bằng cách sử dụngJCLLIB hoặc là STEPLIB.
Có nhiều tiện ích trình biên dịch máy tính lớn có sẵn để biên dịch chương trình COBOL. Một số công ty doanh nghiệp sử dụng các công cụ Quản lý Thay đổi nhưEndevor, biên dịch và lưu trữ mọi phiên bản của chương trình. Điều này rất hữu ích trong việc theo dõi các thay đổi được thực hiện đối với chương trình.
//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 là một tiện ích trình biên dịch COBOL của IBM. Các tùy chọn trình biên dịch được chuyển bằng cách sử dụng tham số PARM. Trong ví dụ trên, RMODE hướng dẫn trình biên dịch sử dụng chế độ định địa chỉ tương đối trong chương trình. Chương trình COBOL được truyền bằng tham số SYSIN và copybook là thư viện được chương trình sử dụng trong SYSLIB.
JCL này tạo ra mô-đun tải của chương trình dưới dạng đầu ra được sử dụng làm đầu vào cho JCL thực thi.
Chạy chương trình COBOL
Dưới đây là một ví dụ JCL trong đó chương trình MYPROG được thực thi bằng cách sử dụng tệp đầu vào MYDATA.URMI.INPUT và tạo ra hai tệp đầu ra được ghi vào ống đệm.
//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
/*
Mô-đun tải của MYPROG nằm trong MYDATA.URMI.LOADLIB. Điều quan trọng cần lưu ý là JCL ở trên chỉ có thể được sử dụng cho một mô-đun COBOL không phải DB2.
Truyền dữ liệu cho các chương trình COBOL
Dữ liệu đầu vào cho chương trình hàng loạt COBOL có thể thông qua các tệp, tham số PARAM và câu lệnh SYSIN DD. Trong ví dụ trên:
Các bản ghi dữ liệu được chuyển tới MYPROG thông qua tệp MYDATA.URMI.INPUT. Tệp này sẽ được giới thiệu trong chương trình bằng tên DD INPUT1. Tập tin có thể được mở, đọc và đóng trong chương trình.
Dữ liệu tham số PARM ACCT5000 được nhận trong phần LINKAGE của chương trình MYPROG trong một biến được xác định trong phần đó.
Dữ liệu trong câu lệnh SYSIN được nhận thông qua câu lệnh ACCEPT trong phần PROCEDURE của chương trình. Mỗi câu lệnh ACCEPT đọc toàn bộ một bản ghi (ví dụ CUST1 1000) vào một biến lưu trữ đang hoạt động được xác định trong chương trình.
Chạy chương trình COBOL-DB2
Để chạy chương trình COBOL DB2, tiện ích IBM chuyên biệt được sử dụng trong JCL và chương trình; Vùng DB2 và các tham số bắt buộc được chuyển làm đầu vào cho tiện ích.
Các bước dưới đây được thực hiện khi chạy chương trình COBOL-DB2:
Khi chương trình COBOL-DB2 được biên dịch, một DBRM (Mô-đun yêu cầu cơ sở dữ liệu) được tạo cùng với mô-đun tải. DBRM chứa các câu lệnh SQL của chương trình COBOL với cú pháp của nó được kiểm tra là đúng.
DBRM được liên kết với vùng DB2 (môi trường) mà COBOL sẽ chạy. Điều này có thể được thực hiện bằng cách sử dụng tiện ích IKJEFT01 trong JCL.
Sau bước liên kết, chương trình COBOL-DB2 được chạy bằng IKJEFT01 (một lần nữa) với thư viện tải và thư viện DBRM làm đầu vào cho 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
/*
Trong ví dụ trên, MYCOBB là chương trình COBOL-DB2 chạy bằng IKJEFT01. Xin lưu ý rằng tên chương trình, Id hệ thống con (SSID) DB2, tên gói DB2 được chuyển trong câu lệnh SYSTSIN DD. Thư viện DBRM được chỉ định trong STEPLIB.