Pengenalan JCL

Cara z/OS menjalankan COBOL: pernyataan JOB, EXEC, dan DD sebagai konteks dunia nyata.

Daftar isi

Pada komputer pusat z/OS, program COBOL tidak dijalankan satu per satu secara manual, melainkan dikemas sebagai kerja batch yang diatur oleh sistem. Topik ini memperkenalkan JCL (Job Control Language), bahasa yang mendeskripsikan kerja tersebut, beserta tiga pernyataan intinya, yaitu JOB, EXEC, dan DD. Setelah membacanya, hubungan antara berkas yang dideklarasikan pada program COBOL dan dataset z/OS dapat dibaca langsung dari sebuah skrip JCL.

Peran JCL pada z/OS#

JCL adalah bahasa kendali kerja, bukan bahasa pemrograman. JCL tidak memiliki variabel, perhitungan, maupun percabangan, karena seluruh logika pemrosesan tetap berada di dalam program COBOL. Tugas JCL adalah menyatakan tiga hal kepada sistem, yaitu identitas kerja yang dikirimkan, program yang perlu dimuat, dan dataset yang dipakai oleh program itu. Sistem kemudian menjadwalkan kerja tersebut, menjalankannya, dan mengumpulkan keluarannya.

Satu kerja batch terdiri atas satu atau beberapa langkah (step), dan setiap langkah memanggil satu program. Hasil kompilasi COBOL pada z/OS berupa load module, yaitu modul siap eksekusi yang dipanggil oleh JCL pada saat kerja berjalan. Susunan ini memisahkan dua peran dengan rapi, yaitu program yang memproses data dan skrip yang mengatur kapan serta dengan data apa program itu dijalankan.

Bentuk penulisan pernyataan JCL seragam. Setiap pernyataan berawalan dua garis miring, diikuti nama pernyataan yang terdiri atas satu sampai delapan karakter, operasi pernyataan, dan daftar operan. Baris komentar berawalan //* dan dapat diletakkan bebas di antara pernyataan mana pun.

Tiga pernyataan inti#

PernyataanPeranContoh
JOBMengidentifikasi kerja di hadapan sistem//REKAPJOB JOB (KULIAH),'LATIHAN COBOL',CLASS=A
EXECMembuka langkah dan memanggil program//STEP01 EXEC PGM=REKAPPIK
DDMendefinisikan dataset untuk program//PIKETIN DD DSN=PROYEK.PIKET.DATA,DISP=SHR

Pernyataan JOB membuka kerja dan memberi identitasnya. Pernyataan ini wajib menjadi pernyataan kerja yang pertama, sehingga identitasnya terbaca sebelum langkah mana pun dijalankan. Nama pada kolom nama, REKAPJOB, membedakan kerja ini dari kerja lain. Operan dalam kurung memuat informasi akuntansi, nama pemrogram ditulis dalam tanda kutip, dan operand CLASS menggolongkan kerja ke dalam kelas pemrosesan yang ditetapkan sistem.

Pernyataan EXEC membuka satu langkah kerja dan menunjuk programnya melalui operand PGM. Nilai PGM adalah nama load module hasil kompilasi COBOL, sehingga langkah STEP01 pada tabel memanggil program rekap piket yang sudah terpasang pada pustaka program.

Pernyataan DD mendefinisikan satu dataset yang dibutuhkan program. Operand DSN menyebut nama dataset, sedangkan operand DISP menyatakan disposisinya, yaitu bagaimana dataset diperlakukan sebelum dan sesudah langkah berjalan. Nilai DISP=SHR menyatakan dataset yang sudah ada dan boleh dibaca bersama kerja lain. Nama pada pernyataan DD, misalnya PIKETIN, menjadi DDNAME yang dicari sistem ketika program meminta berkasnya.

Contoh skrip lengkap#

Skrip berikut mengemas program rekap jam piket sebagai satu kerja batch. Skrip ini tidak dapat dieksekusi pada sandbox karena memerlukan lingkungan z/OS, sehingga hanya dipakai sebagai bahan bacaan.

jcl Skrip JCL kerja rekap piket
//* Kerja batch rekap jam piket
//REKAPJOB JOB (KULIAH),'LATIHAN COBOL',CLASS=A
//STEP01   EXEC PGM=REKAPPIK
//PIKETIN  DD  DSN=PROYEK.PIKET.DATA,DISP=SHR
//SYSOUT   DD  SYSOUT=*

Baris pertama berupa komentar, sedangkan baris kedua membuka kerja bernama REKAPJOB. Langkah STEP01 memanggil load module REKAPPIK. Dataset masukan didefinisikan oleh pernyataan DD bernama PIKETIN yang menunjuk dataset PROYEK.PIKET.DATA. Pernyataan DD terakhir, bernama SYSOUT, memuat operand SYSOUT=* yang mengarahkan keluaran laporan ke antrean keluaran sistem sehingga laporan dapat dilihat pada hasil kerja.

DDNAME dan ASSIGN TO#

Keterkaitan antara skrip dan program terletak pada nama berkas eksternal. Pada program COBOL, pernyataan SELECT menamai berkas secara internal, kemudian klausa ASSIGN menunjuk nama eksternalnya, misalnya ASSIGN TO UT-S-PIKETIN. Pada IBM Enterprise COBOL, nama eksternal semacam ini boleh diberi prefiks seperti UT-S- yang menggambarkan perangkat dan organisasi berkas, sedangkan bagian akhirnya, yaitu PIKETIN, adalah DDNAME yang dicocokkan sistem dengan pernyataan DD pada skrip. Pada saat kerja berjalan, dataset PROYEK.PIKET.DATA pada contoh sebelumnya terhubung ke berkas DATA-PIKET yang dibaca program melalui pencocokan DDNAME tersebut.

Keluaran program juga mengikuti pola yang sama. Pernyataan DISPLAY dapat diarahkan ke SYSOUT, yang pada skrip dideklarasikan oleh pernyataan DD bernama SYSOUT. Dengan demikian, seluruh berkas yang dipakai program, baik berkas masukan, berkas keluaran, maupun keluaran layar, didefinisikan di luar program melalui pernyataan DD.

Padanan pada GnuCOBOL dan Linux#

Pada lingkungan GnuCOBOL dan Linux, peran DD dan peran penjadwal diambil alih mekanisme yang lebih sederhana. Peran DD diambil alih nama berkas biasa, karena klausa ASSIGN TO “piket.dat” diperlakukan sebagai nama berkas pada direktori kerja. Peran penjadwal diambil alih cron, yaitu penjadwal Unix yang menjalankan skrip shell berisi perintah kompilasi dan eksekusi pada waktu yang ditetapkan. Rangkaian kerja batch yang pada z/OS diatur subsistem penerimaan kerja (JES, Job Entry Subsystem) kini cukup diwakili oleh satu skrip shell yang dijalankan cron.

Perbedaan tersebut tidak mengubah pola pikir batch. Program tetap membaca berkas terurut, memprosesnya sekali lewat, dan menulis hasilnya, sedangkan yang berbeda hanyalah tempat definisi berkas dan cara kerja dijadwalkan.

Ringkasan#

  • JCL adalah bahasa kendali kerja z/OS yang mendeskripsikan identitas kerja, program yang dipanggil, dan dataset yang dipakai, tanpa memuat logika pemrosesan.
  • Pernyataan JOB mengidentifikasi kerja, pernyataan EXEC membuka langkah dan memanggil load module COBOL, sedangkan pernyataan DD mendefinisikan dataset beserta disposisinya.
  • Nama eksternal pada klausa ASSIGN terhubung ke skrip melalui DDNAME yang dicocokkan sistem dengan pernyataan DD.
  • Pada lingkungan GnuCOBOL dan Linux, peran DD digantikan nama berkas biasa dan peran penjadwal digantikan cron.

Referensi#