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.
Utilitas Database
Bagian ini adalah tentang utilitas terkait database. Pada platform lama, program ini biasanya beroperasi pada DB2 database, sedangkan database alternatif dipilih (AWS Aurora menjadi pilihan populer) di lingkungan modern.
DSNTEP2/DSNTEP4
DSNTEP2/DSNTEP4 Tujuan
Utilitas DNSTEP mengeksekusi kueri SQL dari kumpulan data input dan menulis hasil ke kumpulan data keluaran. Ini secara otomatis menulis ulang kueri SQL lama untuk database target yang dimodernisasi (di luar DB2) dan mendukung beberapa jenis SYSIN kumpulan data: aliran, kumpulan data Blusam, file datar, generasi GDG, dan rangkaian kumpulan data.
DSNTEP2/DSNTEP4 Tanda tangan
Utilitas tidak mengambil argumen dan menggunakan dua kumpulan data:
-
SYSIN: Masukan dataset yang berisi pernyataan SQL -
SYSPRINT: Output dataset untuk hasil kueri (hanyaSELECTkueri)
DSNTEP2/parameter konfigurasi DSNTEP4 terkait
Perilaku utilitas dipengaruhi oleh parameter konfigurasi berikut:
unload.sqlCodePointShiftunload.noPadunload.nbi.whenNullunload.nbi.whenNotNullunload.useDatabaseConfigurationunload.format.dateunload.format.timeunload.format.timestamphasGraphicforcedDatefrozenDate
Silakan lihat Properti yang tersedia untuk aplikasi web opsional untuk detail tentang mengkonfigurasi parameter ini.
DSNTEP2/DSNTEP4 Cek/Penanganan kesalahan
-
Jika, karena alasan apa pun, pengecualian terjadi selama kueri dijalankan, pesan kesalahan akan dicatat dan
StopRunUnitExceptionakan dilemparkan, yang menyebabkan menghentikan unit run saat ini. -
Jika
SYSINadalah gabungan dari berbagai kumpulan data dan salah satu kumpulan data tidak didukung, a akan dilemparkan.RuntimeExceptionSaat ini, hanya file datar dan jenis generasi GDG yang didukung sebagai bagian dari file gabungan, bila digunakan sebagai input dengan/4. DSNTEP2
DSNTEP2/Penggunaan DSNTEP4 sampel
Berikut adalah contoh penggunaan JCL dari DNSTEP4:
//******************************************************************** //* RETRIEVE DATA FROM TABLE AP_JBI7_INVOICE * //******************************************************************** //* //DSNTEP03 EXEC PGM=DSNTEP4,DYNAMNBR=20 //SYSPRINT DD DSN=output(out012.txt), // DISP=SHR,DCB=(RECFM=FB,LRECL=1152) //SYSIN DD * SELECT * FROM BUR000.AP_JBI7_INVOICE WITH UR;
dan cuplikan skrip groovy modern yang cocok:
def stepDSNTEP03(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("DSNTEP03", "DSNTEP4", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSPRINT") .path("output(out012.txt)").recordSize(1152) .disposition("SHR") .build() .fileSystem("SYSIN") .stream( """ SELECT * FROM BUR000.AP_JBI7_INVOICE WITH UR; """, getEncoding()) .build() .getFileConfigurations(fcmap)) .withParameters(params) .runProgram("DSNTEP4") }) } } }
Harap dicatat bahwa kueri SQL disediakan “apa adanya” ke utilitas DSNTEP2 /4, tanpa modifikasi apa pun.
DSNUTILB
Tujuan DSNUTILB
Utilitas database untuk memuat, menyalin, dan mengelola data. Biasanya beroperasi pada DB2 database lama; versi modern mendukung AWS Aurora dan database target lainnya.
Tanda Tangan DSNUTILB
Secara alami, DSNUTILB lebih dimaksudkan untuk dipanggil oleh skrip pekerjaan modern.
Tidak membutuhkan argumen; membaca perintah dari SYSIN dataset.
Perintah yang didukung adalah:
TEMPLATE(alokasi dinamis kumpulan data)LISTDEF(kelompokkan objek database ke dalam daftar, dapat digunakan oleh perintah lain)COPY(membuat salinan objek database)LOAD(memuat catatan ke dalam tabel)DISCARD(hapus catatan dari tabel)
Untuk detail tambahan tentang perintah, silakan lihat dokumentasi warisan yang tepat terkait.
DSNUTILB parameter konfigurasi terkait
Perilaku utilitas dipengaruhi oleh parameter konfigurasi berikut:
unload.useDatabaseConfigurationload.format.localDateload.format.dbDateload.format.localTimeload.format.dbTimeload.sqlCodePointShiftconvertGraphicDataToFullWidth
Silakan lihat Properti yang tersedia untuk aplikasi web opsional untuk detail tentang mengkonfigurasi parameter ini.
DSNUTILB Cek/Penanganan kesalahan
-
Jika
SYSINdataset tidak berisi perintah yang dapat digunakan, aRuntimeExceptionakan dilemparkan. -
Jika ada pengecualian yang terjadi selama operasi database, pesan kesalahan akan dicatat, kode pengembalian akan diatur ke 8 dan
StopRunUnitExceptionakan dilemparkan (menghentikan unit run saat ini).
DSNUTILB Penggunaan Sampel
Berikut adalah contoh penggunaan DSNUTILB dalam skrip JCL:
//******************************************************************** //* LOAD DATA IN TABLE AP_JBI7_INVOICE. * //******************************************************************** //DSN01 EXEC PGM=DSNUTILB,DYNAMNBR=20 //SYSREC DD DSN=input(input021.data), // DISP=SHR // DCB=(RECFM=FB,LRECL=76) //SYSIN DD DSN=input(dsn01.card), // DISP=SHR
dengan konten kartu perintah (dsn01.card) - digunakan untuk memuat data ke dalam database, dari file datar yang diekspor dari platform lama --:
LOAD DATA INDDN SYSREC RESUME NO LOG YES NOCOPYPEND SORTDEVT SYSDA SORTNUM 12 SORTKEYS 100000 DISCARDS 0 INTO TABLE BUR000.AP_JB17_INVOICE WHEN (76:76) = 'L' ( IDENTIFIER POSITION(1:1) SMALLINT ,CUST_ID POSITION(10) VARCHAR NULLIF(39) = '?' ,CUST_KD POSITION(40:43) CHAR ,INVC_AMNT POSITION(44:49) NUMERIC ,INVC_DAT POSITION(50:75) TIMESTAMP EXTERNAL(26) )
dan cuplikan skrip modern asyik yang cocok:
// STEP DSN01 - PGM - DSNUTILB**************************************************** def stepDSN01(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("DSN01", "DSNUTILB", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSREC") .path("input(input021.data)").recordSize(76) .disposition("SHR") .build() .fileSystem("SYSIN") .path("input(dsn01.card)") .disposition("SHR") .build() .getFileConfigurations(fcmap)) .withParameters(params) .runProgram("DSNUTILB") }) } } }
INFUTILB/ INZUTILB
Tujuan INFUTILB
INFUTILB/INZUTILB adalah program utilitas yang digunakan untuk mengekstrak data dari database - bongkar - (DB2 pada lingkungan lama) dan mengubahnya menjadi berbagai format output.
Kueri SQL lama secara otomatis disesuaikan on-the-fly agar sesuai dengan persyaratan basis data target modern (mesin yang didukung: PostgreSQL, Oracle dan). DB2
Tanda Tangan INFUTILB/INZUTILB
Alias program berikut dapat digunakan (dan cocok dengan nama utilitas sortir warisan yang sesuai):
INFUTILBINZUTILB
Utilitas tidak mengambil argumen apa pun tetapi membaca perintah untuk dijalankan dari SYSIN dataset (“kartu kontrol”). Catatan yang diekstraksi dari database ditulis ke SYSREC dataset dan SYSPUNCH dataset opsional digunakan untuk menyimpan kartu kontrol yang dapat digunakan untuk memuat ulang data (menggunakan utilitas lain, seperti DSNUTILB misalnya).
Secara alami, INFUTILB/INZUTILB sebagian besar dimaksudkan untuk dipanggil oleh skrip pekerjaan modern.
Untuk mendapatkan detail tentang perintah yang didukung, silakan merujuk ke dokumentasi warisan yang tepat. INFUTILB/INZUTILB Mereka menggunakan kumpulan data “kartu kontrol” lama “apa adanya”.
Parameter konfigurasi terkait INFUTILB/INZUTILB
Perilaku utilitas dipengaruhi oleh parameter konfigurasi berikut:
unload.sqlCodePointShiftunload.noPadunload.nbi.whenNullunload.nbi.whenNotNullunload.useDatabaseConfigurationunload.format.dateunload.format.timeunload.format.timestampunload.columnFillerunload.varCharIsNullunload.DFSIGDCBhasGraphicforcedDatefrozenDate
Silakan lihat Properti yang tersedia untuk aplikasi web opsional untuk detail tentang mengkonfigurasi parameter ini.
INFUTILB/INZUTILB Cek/Penanganan kesalahan
-
Jika database target bukan bagian dari mesin database yang didukung (PostgreSQL, Oracle DB2 dan), kode pengembalian program akan diatur ke 8 dan akan dilemparkan.
UnsupportedOperationException -
Jika program gagal menghapus file sementara, kode pengembalian akan diatur ke 4, pesan kesalahan akan dicatat, tetapi program yang dijalankan tidak akan terganggu.
-
Untuk semua kasus berikut, kode pengembalian program akan diatur ke 4 atau 8, dan
AbendExceptionakan dilemparkan (menghentikan program yang dijalankan):Jika
SYSRECkumpulan data bukan salah satu jenis yang didukung (baik kumpulan data berbasis sistem GDG atau File); kembalikan kode 4;Jika
SYSPUNCHkumpulan data bukan salah satu jenis yang didukung (baik GDG atau kumpulan data berbasis sistem File atauDUMMY); kode kembalikan 4;Jika program tidak dapat mengambil ukuran catatan
SYSRECdataset (tidak ditetapkan atau tidak ditentukan dalam katalog dataset); kode kembalikan 8;Jika program tidak dapat mengambil ukuran catatan
SYSPUNCHdataset (tidak ditetapkan atau tidak ditentukan dalam katalog dataset); kode kembalikan 8;Jika kueri yang digunakan untuk membuat konten
SYSRECkumpulan data tidak valid (kueri yang salah akan dicatat); kode kembalikan 4;Jika ada pengecualian yang terjadi saat mengambil data dari database; mengembalikan kode 8;
Jika
OUTDDNperintah tidak ada dalamSYSINdataset, untuk tugas pembongkaran; kembalikan kode 8;Jika tidak ada perintah yang valid dapat ditemukan di
SYSINdataset; mengembalikan kode 8;
INFUTILB/INZUTILB Contoh penggunaan
Berikut adalah contoh cuplikan skrip jcl warisan:
//******************************************************************** //* UNLOAD DATA FROM TABLE AP_JBI7_INVOICE. * //******************************************************************** //INF1 EXEC PGM=INFUTILB //SYSREC DD DSN=output(out032.data), // DISP=SHR // DCB=(RECFM=FB,LRECL=90) //SYSIN DD DSN=input(inf12.card), // DISP=SHR
yang menggunakan kartu perintah berikut (inf12.card) untuk membongkar beberapa data dari database (di sini, catatan dipilih berdasarkan tanggalnya):
UNLOAD SELECT * FROM BUR000.AP_JB17_INVOICE WHERE INVC_DAT >= CONCAT(STRIP(CHAR(YEAR(CURRENT DATE - 100 YEAR))),'-01-01-00.00.00.000000') AND INVC_DAT >= CONCAT('2025-01-01-',CONCAT((CURRENT TIME),'.000000')) AND INVC_DAT >= (CURRENT TIMESTAMP - 100 YEAR) ORDER BY identifier ASC OUTDDN (SYSREC) FORMAT DSNTIAUL
dan cuplikan skrip groovy yang cocok, hasil modernisasi jcl otomatis:
// STEP INF1 - PGM - INFUTILB***************************************************** def stepINF1(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("INF1", "INFUTILB", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSREC") .path("output(out032.data)").recordSize(90) .disposition("SHR") .build() .fileSystem("SYSIN") .path("input(inf12.card)") .disposition("SHR") .build() .getFileConfigurations(fcmap)) .withParameters(params) .runProgram("INFUTILB") }) } } }
JXHDBCLR
Tujuan JXHDBCLR
JXHDBCLR adalah program utilitas pembersihan basis data, ditemukan pada GS21 platform, yang memotong tabel sesuai dengan pernyataan spesifik yang disediakan yang ditemukan dalam kartu perintah.
Tanda Tangan JXHDBCLR
Itu tidak mengambil argumen apa pun tetapi membaca pernyataan dari SYSIN dataset (kartu perintah).
Karena sifatnya, sebagian besar dimaksudkan untuk dipanggil oleh skrip pekerjaan modern.
Parameter konfigurasi terkait JXHDBCLR
Perilaku utilitas dipengaruhi oleh parameter konfigurasi berikut:
unload.sqlCodePointShiftunload.noPadunload.nbi.whenNullunload.nbi.whenNotNullunload.useDatabaseConfigurationunload.format.dateunload.format.timeunload.format.timestamphasGraphicforcedDatefrozenDate
Silakan lihat Properti yang tersedia untuk aplikasi web opsional untuk detail tentang mengkonfigurasi parameter ini.
Cek JXHDBCLR/Penanganan kesalahan
Jika tidak tabel untuk dipotong dapat ditemukan, pesan peringatan akan dicatat, tetapi program yang dijalankan tidak akan terganggu.
Jika beberapa kegagalan terjadi selama pemotongan tabel, kode pengembalian program akan diatur ke 4, pesan kesalahan akan dicatat, tetapi program yang dijalankan tidak akan terganggu.
Untuk salah satu kondisi berikut, kode pengembalian program akan diatur ke 8 dan AbendException akan dilemparkan (menghentikan program yang dijalankan):
Jika konten kartu perintah kosong;
jika ada pengecualian yang terjadi selama penguraian pemrosesan perintah;
JXHDBCLR Penggunaan Sampel
Contoh penggunaan JXHDBCLR dengan kartu perintah sebaris:
//******************************************************************* //** Step 1 - JXHDBCLR UTILITY - DBCLEAR TYPE=2/3 //******************************************************************* //STEP01 EXEC PGM=JXHDBCLR,REGION=256K,PARM='LINECNT=0' //SYSPRINT DD SYSOUT=* //SYSIN DD * DBCLEAR SCHEMA=MUSICSCH,TYPE=3,CHECK=YES DEFINE RANGE=(SINGERDEST) END
dan cuplikan skrip groovy modern yang cocok:
// STEP STEP01 - PGM - JXHDBCLR*************************************************** def stepSTEP01(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("STEP01", "JXHDBCLR", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .systemOut("SYSPRINT") .output("*") .build() .fileSystem("SYSIN") .stream( """ DBCLEAR SCHEMA=MUSICSCH,TYPE=3,CHECK=YES DEFINE RANGE=(SINGER) END""", getEncoding()) .build() .getFileConfigurations()) .withArguments(getParm("LINECNT=0")) .withParameters(params) .runProgram("JXHDBCLR") }) } } }
Kartu sebaris dari warisan disimpan “apa adanya”, menggunakan aliran.