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.