Phương thức đầu vào-đầu ra
Bất kỳ chương trình hàng loạt nào được thực thi thông qua JCL đều yêu cầu đầu vào dữ liệu, dữ liệu này được xử lý và đầu ra được tạo. Có các phương pháp khác nhau để cung cấp đầu vào cho chương trình và ghi đầu ra nhận được từ JCL. Ở chế độ hàng loạt, không yêu cầu tương tác của người dùng nhưng các thiết bị đầu vào và đầu ra và tổ chức bắt buộc được xác định trong JCL và được đệ trình.
Nhập dữ liệu trong JCL
Có nhiều cách khác nhau để cung cấp dữ liệu cho một chương trình bằng JCL và các phương pháp này đã được giải thích bên dưới:
DỮ LIỆU INSTREAM
Dữ liệu trong luồng của một chương trình có thể được chỉ định bằng cách sử dụng câu lệnh SYSIN DD.
//CONCATEX JOB CLASS=6,NOTIFY=&SYSUID
//* Example 1:
//STEP10 EXEC PGM=MYPROG
//IN1 DD DSN=SAMPLE.INPUT1,DISP=SHR
//OUT1 DD DSN=SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
// LRECL=50,RECFM=FB
//SYSIN DD *
//CUST1 1000
//CUST2 1001
/*
//*
//* Example 2:
//STEP20 EXEC PGM=MYPROG
//OUT1 DD DSN=SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
// LRECL=50,RECFM=FB
//SYSIN DD DSN=SAMPLE.SYSIN.DATA,DISP=SHR
//*
Trong ví dụ 1, đầu vào MYPROG được chuyển qua SYSIN. Dữ liệu được cung cấp trong JCL. Hai bản ghi dữ liệu được chuyển đến chương trình. Xin lưu ý rằng / * đánh dấu phần cuối của dữ liệu SYSIN trong luồng.
"CUST1 1000" là record1 và "CUST2 1001" là record2. Điều kiện kết thúc dữ liệu được đáp ứng khi gặp biểu tượng / * trong khi đọc dữ liệu.
Trong ví dụ 2, dữ liệu SYSIN được lưu trong tập dữ liệu, trong đó SAMPLE.SYSIN.DATA là tệp PS, có thể chứa một hoặc nhiều bản ghi dữ liệu.
Nhập dữ liệu thông qua tệp
Như đã đề cập trong hầu hết các ví dụ trong các chương trước, dữ liệu đầu vào cho chương trình có thể được cung cấp thông qua các tệp PS, VSAM hoặc GDG, với tên DSN và tham số DISP có liên quan cùng với các câu lệnh DD.
Trong ví dụ 1, SAMPLE.INPUT1 là tệp đầu vào mà qua đó dữ liệu được chuyển đến MYPROG. Nó được gọi là IN1 trong chương trình.
Đầu ra dữ liệu trong một JCL
Kết quả đầu ra trong JCL có thể được lập danh mục thành tập dữ liệu hoặc chuyển tới SYSOUT. Như đã đề cập trong chương câu lệnh DD,SYSOUT=* chuyển hướng kết quả đến cùng một lớp như được đề cập trong tham số MSGCLASS của câu lệnh JOB.
Lưu nhật ký công việc
Xác định MSGCLASS=Ylưu nhật ký công việc trong JMR (Quản lý và truy xuất nhật ký công việc). Toàn bộ nhật ký JOB có thể được chuyển hướng đến SPOOL và có thể được lưu vào tập dữ liệu bằng cách đưa ra lệnh XDC đối với tên công việc trong SPOOL. Khi lệnh XDC được đưa ra trong SPOOL, màn hình tạo tập dữ liệu sẽ được mở ra. Sau đó có thể lưu nhật ký công việc bằng cách đưa ra định nghĩa PS hoặc PDS thích hợp.
Nhật ký công việc cũng có thể được lưu vào tập dữ liệu bằng cách đề cập đến tập dữ liệu đã được tạo cho SYSOUT và SYSPRINT. Nhưng toàn bộ nhật ký công việc không thể được ghi lại bằng cách này (nghĩa là, JESMSG sẽ không được lập danh mục) như được thực hiện trong JMR hoặc XDC.
//SAMPINST JOB 1,CLASS=6,MSGCLASS=Y,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=MYPROG
//IN1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR
//OUT1 DD SYSOUT=*
//SYSOUT DD DSN=MYDATA.URMI.SYSOUT,DISP=SHR
//SYSPRINT DD DSN=MYDATA.URMI.SYSPRINT,DISP=SHR
//SYSIN DD MYDATA.BASE.LIB1(DATA1),DISP=SHR
//*
//STEP2 EXEC PGM=SORT
Trong ví dụ trên, SYSOUT được lập danh mục trong MYDATA.URMI.SYSOUT và SYSPRINT trong MYDATA.URMI.SYSPRINT.