Perintah Utilitas - AWS Modernisasi Mainframe

AWS Layanan Modernisasi Mainframe (Managed Runtime Environment experience) tidak lagi terbuka untuk pelanggan baru. Untuk kemampuan yang mirip dengan Layanan Modernisasi AWS Mainframe (pengalaman Lingkungan Runtime Terkelola), jelajahi Layanan Modernisasi AWS Mainframe (Pengalaman yang Dikelola Sendiri). Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk informasi selengkapnya, lihat Perubahan AWS ketersediaan Modernisasi Mainframe.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Perintah Utilitas

Bagian ini terkait dengan program utilitas yang perannya menangani perintah pengguna, disediakan menggunakan kartu kontrol.

IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH

IKJEFT1Sebuah Tujuan

IKJEFT1A dan aliasnya mengeksekusi perintah TSO (T ime S haring O ption) dalam pekerjaan batch tanpa memerlukan sesi TSO interaktif, menjembatani batch non-interaktif dan lingkungan TSO interaktif.

Meniru warisan Perilaku IKJEFT1 dengan perbedaan spesifik lingkungan: misalnya, perintah DB2 TERM (inate) diabaikan di lingkungan modern (dicatat sebagai informasi).

catatan

Sintaks perintah tidak dirinci di sini - IKJEFT1 A menggunakan kumpulan data perintah lama tidak berubah. Silakan lihat dokumentasi platform lama untuk detail perintah TSO.

IKJEFT1Tanda Tangan

Menggunakan SYSTSIN dataset untuk input perintah (didefinisikan melalui DD arahan JCL). Versi modern menggunakan kumpulan data yang sama tidak berubah. Dipanggil hanya dalam skrip pekerjaan Groovy yang dimodernisasi.

IKJEFT1Parameter konfigurasi terkait

Perilaku utilitas dipengaruhi oleh parameter konfigurasi berikut:

  • systin.encoding

Silakan lihat Properti yang tersedia untuk aplikasi web opsional untuk detail tentang mengkonfigurasi parameter ini.

IKJEFT1 Checks/Error Penanganan

Ketika perintah yang tidak didukung hadir dalam dataset SYSTSIN maka a RuntimeException dilemparkan.

IKJEFT1Penggunaan Sampel

Skrip JCL lama (yang menggunakan konten sebaris dari SYSTSIN kumpulan data, menggunakan arahan) DD *

//********************************************************************* //* READ THE TEMPORARY INPUT FILE * //********************************************************************* // IF IDCM00032.RC = 1 THEN //067FILEKEY EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSIN DD * DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END /* //TEMPVSAM DD DSN=IDXVIDEO.TEMPVSAM,DISP=SHR //FKOUT DD DSN=output(out067.txt),DISP=(NEW,CATLG) // ENDIF //*********************************************************************

dan skrip modern yang cocok (asyik) -- konten SYSTSIN kumpulan data yang sebaris diwakili oleh “aliran” --

// STEP 067FILEKEY - PGM - IKJEFT01*********************************************** def step067FILEKEY(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("067FILEKEY", "IKJEFT01", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSTSIN") .stream( """ DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END """, getEncoding()) .build() .bluesam("TEMPVSAM") .dataset("IDXVIDEO.TEMPVSAM") .disposition("SHR") .build() .fileSystem("FKOUT") .path("output(out067.txt)") .disposition("NEW") .normalTermination("CATLG") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IKJEFT01") }) } } }

QCMDEXC

Tujuan QCMDEXC

Program utilitas ini mengemulasi perilaku utilitas sistem AS/400 QCMDEXC, yang digunakan untuk menjalankan perintah sistem secara dinamis saat runtime.

Fitur-fitur:

  • Mem-parsing dan mengeksekusi perintah secara dinamis.

  • Mendukung format parameter bernama dan posisi.

Tanda Tangan QCMDEXC

Menerima 1-2 parameter:

  • Pertama: Data alfanumerik yang berisi perintah untuk dijalankan

  • Kedua (opsional): panjang dalam byte untuk dibaca dari parameter pertama (default ke panjang penuh)

Penanganan QCMDEXC Checks/Error

Untuk kasus-kasus berikut, a RuntimeException akan dilemparkan:

  • Ketika jumlah argumen yang diberikan bukan satu atau dua;

  • Jika argumen perintah kosong atau jika perintah yang akan dijalankan tidak dikenali;

  • Jika perintah berjalan gagal karena alasan apa pun; selain itu, kode pengembalian dari program akan diatur ke 1.

Penggunaan Sampel QCMDEXC

Berikut adalah contoh penggunaan dari program COBOL lama: item CL-COMMANDX data dilengkapi dengan perintah sebelum digunakan sebagai argumen untuk panggilan program QCMDEXC:

INITIALIZE CL-COMMANDX. STRING "CPYF FROMFILE(PLAYERS) TOFILE(" DELIMITED BY SIZE, "NEWFILE" DELIMITED BY SIZE, ") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)" DELIMITED BY SIZE INTO CL-COMMANDX END-STRING. CALL "QCMDEXC" USING CL-COMMANDX CLENGTHX.

Setelah dimodernisasi menjadi kode java, ini menjadi:

DataUtils.initialize(ctx.getClCommandx().getClCommandxReference()); StringConcatenationBuilder.newInstance(ctx.getClCommandx().getClCommandxReference()) .addDelimitedBySize("CPYF FROMFILE(PLAYERS) TOFILE(") .addDelimitedBySize("NEWFILE") .addDelimitedBySize(") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)") .end(); ctrl.callSubProgram("QCMDEXC", CallBuilder.newInstance() .byReference(ctx.getClCommandx().getClCommandxReference()) .byReference(ctx.getClengthx().getClengthxReference()) .getArguments(), ctx);

Harap dicatat bahwa isi perintah lama digunakan “apa adanya” dalam kode modern, tanpa modifikasi apa pun.