JCL - Thư viện cơ sở
Base Librarylà Tập dữ liệu được phân vùng (PDS), chứa các mô-đun tải của chương trình sẽ được thực thi trong JCL hoặc thủ tục được phân loại, được gọi trong chương trình. Thư viện cơ sở có thể được chỉ định cho toàn bộ JCL trongJOBLIB thư viện hoặc cho một bước công việc cụ thể trong một STEPLIB tuyên bố.
Tuyên bố JOBLIB
A JOBLIBđược sử dụng để xác định vị trí của chương trình sẽ được thực thi trong một JCL. Câu lệnh JOBLIB được chỉ định sau câu lệnh JOB và trước câu lệnh EXEC. Điều này chỉ có thể được sử dụng cho các thủ tục và chương trình trong luồng.
Cú pháp
Sau đây là cú pháp cơ bản của câu lệnh JCL JOBLIB:
//JOBLIB DD DSN=dsnname,DISP=SHR
Tuyên bố JOBLIB có thể áp dụng cho tất cả các tuyên bố EXEC trong JCL. Chương trình được chỉ định trong câu lệnh EXEC sẽ được tìm kiếm trong thư viện JOBLIB theo sau là thư viện hệ thống.
Ví dụ: nếu câu lệnh EXEC đang thực thi một chương trình COBOL, thì mô-đun tải của chương trình COBOL phải được đặt trong thư viện JOBLIB.
Tuyên bố STEPLIB
A STEPLIBcâu lệnh được sử dụng để xác định vị trí của chương trình sẽ được thực hiện trong một Bước công việc. Câu lệnh STEPLIB được chỉ định sau câu lệnh EXEC và trước câu lệnh DD của bước công việc.
Cú pháp
Sau đây là cú pháp cơ bản của câu lệnh JCL STEPLIB:
//STEPLIB DD DSN=dsnname,DISP=SHR
Chương trình được chỉ định trong câu lệnh EXEC sẽ được tìm kiếm trong thư viện STEPLIB theo sau là thư viện hệ thống. STEPLIB được mã hóa trong một bước công việc sẽ ghi đè câu lệnh JOBLIB.
Thí dụ
Ví dụ sau cho thấy cách sử dụng các câu lệnh JOBLIB và STEPLIB:
//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//JOBLIB DD DSN=MYPROC.BASE.LIB1,DISP=SHR
//*
//STEP1 EXEC PGM=MYPROG1
//INPUT1 DD DSN=MYFILE.SAMPLE.INPUT1,DISP=SHR
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
// RECFM=FB,LRECL=80
//*
//STEP2 EXEC PGM=MYPROG2
//STEPLIB DD DSN=MYPROC.BASE.LIB2,DISP=SHR
//INPUT2 DD DSN=MYFILE.SAMPLE.INPUT2,DISP=SHR
//OUTPUT2 DD DSN=MYFILES.SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
// RECFM=FB,LRECL=80
Tại đây, mô-đun tải của chương trình MYPROG1 (trong STEP1) được tìm kiếm trong MYPROC.SAMPLE.LIB1. Nếu không tìm thấy, nó sẽ được tìm kiếm trong thư viện hệ thống. Trong STEP2, STEPLIB ghi đè JOBLIB và mô-đun tải của chương trình MYPROG2 được tìm kiếm trong MYPROC.SAMPLE.LIB2 và sau đó trong thư viện hệ thống.
BAO GỒM Tuyên bố
Một tập hợp các tuyên bố JCL được mã hóa trong một thành viên của PDS có thể được đưa vào JCL bằng cách sử dụng INCLUDEtuyên bố. Khi JES diễn giải JCL, tập hợp các câu lệnh JCL trong thành viên INCLUDE sẽ thay thế câu lệnh INCLUDE.
Cú pháp
Sau đây là cú pháp cơ bản của câu lệnh JCL INCLUDE:
//name INCLUDE MEMBER=member-name
Mục đích chính của câu lệnh INCLUDE là khả năng tái sử dụng. Ví dụ: các tệp chung được sử dụng trên nhiều JCL có thể được mã hóa dưới dạng câu lệnh DD trong thành viên INCLUDE và được sử dụng trong JCL.
Không thể mã hóa các câu lệnh DD giả, thông số kỹ thuật thẻ dữ liệu, PROC, JOB, PROC trong một thành viên INCLUDE. Một câu lệnh INLCUDE có thể được mã hóa trong một thành viên INCLUDE và việc lồng thêm có thể được thực hiện lên đến 15 cấp độ.
Tuyên bố JCLLIB
A JCLLIBcâu lệnh được sử dụng để xác định các thư viện riêng được sử dụng trong công việc. Nó có thể được sử dụng cả với các thủ tục trong luồng và theo danh mục.
Cú pháp
Sau đây là cú pháp cơ bản của câu lệnh JCL JCLLIB:
//name JCLLIB ORDER=(library1, library2....)
Các thư viện được chỉ định trong câu lệnh JCLLIB sẽ được tìm kiếm theo thứ tự nhất định để xác định vị trí các chương trình, thủ tục và INCLUDE thành viên được sử dụng trong công việc. Chỉ có thể có một câu lệnh JCLLIB trong một JCL; được chỉ định sau câu lệnh JOB và trước câu lệnh EXEC và INCLUDE nhưng nó không thể được mã hóa trong thành viên INCLUDE.
Thí dụ
Trong ví dụ sau, chương trình MYPROG3 và INCLUDE thành viên MYINCL được tìm kiếm theo thứ tự MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, thư viện hệ thống.
//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//MYLIB JCLLIB ORDER=(MYPROC.BASE.LIB1,MYPROC.BASE.LIB2)
//*
//STEP1 EXEC PGM=MYPROG3
//INC INCLUDE MEMBER=MYINCL
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
// RECFM=FB,LRECL=80
//*