Utilitas Lainnya/Lain-lain - 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.

Utilitas Lainnya/Lain-lain

Bagian ini mencakup berbagai program utilitas, dengan tujuan lain-lain, yang tidak dapat dilampirkan ke kategori yang ada

Dalam paragraf berikut, harus PICTURE dipahami sebagai PICTURE kata kunci COBOL, yang digunakan untuk menggambarkan jenis dan format data bidang.

CBL_ AND/CBL_OR/CBL_XOR/CBL_EQ/CBL_IMP/CBL _TIDAK

Tujuan

Ini berkaitan dengan dukungan operasi logis bitwise pada item data, yang ditemukan di beberapa dialek COBOL (Micro Focus). Harap dicatat bahwa refactor otomatis dengan AWS Transform menangani transformasi penggunaan operator bitwise dari dialek Cobol MF ke java (lihat contoh penggunaan di bawah). Agar kode modern berjalan dengan benar, aplikasi utilitas harus digunakan bersama.

Operator yang didukung:

  • Operator Unary:

Operator Unary detail
CBL_NOT Pelengkap Bitwise (~ target)
  • Operator biner:

Operator Biner detail
CBL_AND Bitwise DAN (sumber & target)
CBL_OR Bitwise OR (sumber | target)
CBL_XOR Bitwise eksklusif OR (sumber ^ target)
CBL_EQ Kesetaraan Bitwise (~ (sumber ^ target))
CBL_IMP Implikasi Bitwise (~sumber | target)

Tanda tangan

Selain CBL_NOT yang hanya memiliki satu operan (target), semua operasi lainnya memiliki setidaknya dua operan, yaitu item data. Operan pertama adalah sumbernya, operan kedua adalah target. Argumen opsional tambahan (panjang) memberikan jumlah byte untuk diproses (dari kiri ke kanan). Jika panjangnya dihilangkan, defaultnya minimum sumber dan ukuran target (dalam byte). Hasil operasi disimpan dalam target. Kode pengembalian program adalah 0 (kecuali pengecualian terjadi).

Cek/Penanganan Kesalahan

  • Untuk setiap operator yang tersedia, jumlah argumen yang diperlukan diperiksa. Jika jumlah minimal argumen yang diperlukan tidak terpenuhi, IllegalArgumentException akan dilemparkan.

  • Argumen bilangan bulat panjang opsional diperiksa untuk kepositifan. Jika panjang yang diberikan negatif, pesan akan ditampilkan di log dan operator tidak akan diterapkan.

Penggunaan Sampel

  • Sampel operator unary:

Berikut adalah penggunaan cobol CBL_NOT:

* TARGET: 00000101 * OPERATION: NOT * EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) MOVE X'0500' to TARGET CALL "CBL_NOT" USING TARGET BY VALUE 1.

dan modernisasi java yang sesuai:

/* TARGET: 00000101 OPERATION: NOT EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) */ ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_NOT", CallBuilder.newInstance() .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);
  • Sampel operator biner:

Lihat misalnya kode COBOL berikut menggunakan CBL_AND:

* SOURCE: 00000011 * OPERATION: AND * TARGET: 00000101 * EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) MOVE X'0300' to SRC MOVE X'0500' to TARGET CALL "CBL_AND" USING SRC TARGET BY VALUE 1.

dan modernisasi java nya:

/* SOURCE: 00000011 OPERATION: AND TARGET: 00000101 EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) */ ctx.getSrc().getSrcReference().setBytes(new byte[]{ 3, 0 }); ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_AND", CallBuilder.newInstance() .byReference(ctx.getSrc().getSrcReference()) .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);

CEE3ABD

Tujuan

Program utilitas ini meniru perilaku program warisan dengan nama yang sama, yang perannya adalah untuk mengakhiri program dengan kode Abend (abnormal end) dan waktu pembersihan opsional. AWS transform engine menangani modernisasi otomatis panggilan ke CEE3 ABD. Agar kode modern berjalan dengan benar, aplikasi utilitas harus digunakan bersama.

Program menghentikan unit run saat ini, menggunakan kode abend yang disediakan. Pesan informasi dicetak ke log, menentukan bahwa keluar pengguna telah dipanggil dengan kode yang diberikan. Untuk saat ini, parameter waktu TIDAK diperhitungkan, tetapi hadir sebagai argumen untuk alasan kompatibilitas modernisasi.

Tanda tangan

Program ini menerima 0 atau 2 argumen. Kedua argumen tersebut adalah:

  • Kode Abend (item data yang harus ditafsirkan sebagai nilai bilangan bulat positif)

  • Waktu pembersihan (item data yang harus ditafsirkan sebagai nilai bilangan bulat positif) - diabaikan

Ketika tidak ada argumen yang disediakan, nilai default berikut sedang digunakan:

  • Kode Abend: 0

  • Waktu Pembersihan: 0

Cek/Penanganan Kesalahan

  • Memeriksa bahwa 0 atau 2 argumen sedang disediakan, jika tidak maka IllegalArgumentException akan dilemparkan.

  • Jika dua argumen disediakan, periksa bahwa: abend code adalah antara 0 dan 4095 (keduanya termasuk); waktu antara 0 dan 5 (keduanya termasuk)

Kegagalan untuk tes ini akan memicuIllegalArgumentException.

Penggunaan Sampel

Berikut adalah contoh penggunaan dalam program COBOL, dari aplikasi Carddemo:

9999-ABEND-PROGRAM. DISPLAY 'ABENDING PROGRAM' MOVE 0 TO TIMING MOVE 999 TO ABCODE CALL 'CEE3ABD'.

dan kode java modern yang sesuai:

public void _9999AbendProgram(final Cbtrn03cContext ctx, final ExecutionController ctrl) { DisplayUtils.display(ctx, ctrl, LOGGER, "ABENDING PROGRAM"); ctx.getTiming().setTiming(0); ctx.getAbcode().setAbcode(999); ctrl.callSubProgram("CEE3ABD", CallBuilder.newInstance() .getArguments(), ctx); }

CEEDATE

Tujuan

Utilitas CEEDATE mengubah angka yang mewakili tanggal Lilian (hari sejak 15 Oktober 1582) menjadi representasi tanggal basis karakter, menggunakan format yang disediakan.

Ini meniru perilaku utilitas sistem warisan dengan nama yang sama.

Tanda tangan

Mengingat sifatnya, utilitas CEEDATE lebih dimaksudkan untuk dipanggil dari program.

Dibutuhkan tiga atau empat argumen (argumen terakhir adalah opsional):

  • Argumen pertama wajib adalah item data numerik yang nilainya akan diintepret sebagai tanggal Lilian

  • Argumen kedua wajib adalah item data alfanumerik yang memegang PICTURE string yang digunakan untuk konversi tanggal ke karakter

  • Argumen ketiga wajib adalah item data alfanumerik target, memegang hasil konversi argumen pertama menggunakan argumen kedua sebagai PICTURE

  • Argumen opsional keempat adalah item data yang digunakan untuk menyimpan kode umpan balik dari utilitas

Cek/Penanganan Kesalahan

  • Jika jumlah argumen yang diteruskan ke utilitas tidak tiga atau empat, a BluageWrapperException akan dilemparkan

  • Jika argumen angka pertama yang diberikan tidak dapat dievaluasi dengan benar sebagai tanggal Lilian (di luar batas), pesan kesalahan akan dicatat. Pemegang kode umpan balik opsional, jika ada, akan diberi makan dengan kode umpan balik tingkat keparahan 3 dan nomor pesan 2512

  • Jika pengecualian terjadi selama konversi tanggal karena disediakan tidak validPICTURE, pesan kesalahan akan dicatat. Pemegang kode umpan balik opsional, jika ada, akan diberi makan dengan kode umpan balik tingkat keparahan 3 dan nomor pesan 2518

  • Jika, karena alasan apa pun, konversi tidak dapat terjadi dengan benar, item data keluaran akan diisi dengan kosong

  • Jika konversi berhasil, pemegang kode umpan balik opsional akan diberi kode umpan balik tingkat keparahan 0 (dan tidak ada pesan)

Penggunaan Sampel

Berikut adalah contoh panggilan dari program COBOL (struktur untuk pemegang kode umpan balik FC berisi elipsis, seperti yang berisi ratusan kondisi (level 88) entri yang tidak ditampilkan di sini):

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 TIMESTAMP-OUT PIC X(80). 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. 01 FC. ... * lilian date for 4 June 1990 MOVE SPACES TO MASK-STR MOVE 148887 TO LILIANS. MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEEDATE-ROUTINE USING LILIANS MASK TIMESTAMP-OUT FC.

CEELOCT

Tujuan

Utilitas CEELOCT digunakan untuk mengembalikan lokal date/time dalam tiga format:

  • Tanggal Lilian (jumlah hari sejak 14 Oktober 1582)

  • Detik Lilian (jumlah detik sejak 00:00:00 14 Oktober 1582)

  • String karakter Gregorian (dalam bentuk) YYYYMMDDHHMISS999

Ini meniru perilaku utilitas sistem warisan dengan nama yang sama.

Tanda tangan

Mengingat sifatnya, utilitas CEELOCT lebih dimaksudkan untuk dipanggil dari program.

Dibutuhkan tiga atau empat argumen (argumen terakhir adalah opsional):

  • Argumen pertama wajib adalah item data, digunakan untuk menyimpan tanggal Lilian

  • Argumen kedua wajib adalah item data, digunakan untuk menyimpan detik Lilian

  • Argumen ketiga wajib adalah item data, digunakan untuk menyimpan tanggal Gregorian menggunakan formulir yang diberikan di atas

  • Argumen keempat opsional adalah item data yang digunakan untuk menyimpan kode umpan balik dari utilitas

Cek/Penanganan Kesalahan

  • Jika jumlah argumen yang diteruskan ke utilitas tidak tiga atau empat, a BluageWrapperException akan dilemparkan

  • Jika ada pengecualian yang terjadi selama penanganan konversi dari lokal date/time ke salah satu format output: Argumen pertama dan kedua akan disetel ke 0 dan argumen ketiga akan dibiarkan tidak berubah; Pesan kesalahan akan dicatat; Secara opsional, pemegang kode umpan balik akan diberi makan dengan kode umpan balik tingkat keparahan 3 dan nomor pesan 2531

  • Setelah berhasil, ketiga argumen akan diisi dengan konten yang tepat dan kode umpan balik opsional akan diberi kode keparahan 0

Penggunaan Sampel

Berikut adalah contoh cuplikan COBOL yang menunjukkan penggunaan utilitas CEELOCT. Struktur pemegang kode umpan balik FC tidak diberikan secara penuh karena berisi ratusan entri kondisi (level 88).

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 GREGORN PIC X(80). 01 SECONDS COMP-2. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... CALL CEELOCT-ROUTINE USING LILIANS SECONDS GREGORN FC.

CEERAN0

Tujuan

Program CEERAN0 dipanggil untuk menghasilkan angka pseudo-acak, antara 0,0 dan 1,0, menggunakan benih tertentu. Hal ini didasarkan pada algoritma metode kongruensial multiplikatif, yang membutuhkan benih yang ditentukan pengguna. Menggunakan 0 sebagai seed memicu mode tertentu di mana seed sebenarnya dihitung dari waktu rata-rata Greenwich sebagai gantinya (pada saat program sedang dijalankan). Kalau tidak, benih digunakan apa adanya. Urutan pseudo-acak dapat diprediksi.

Tanda tangan

Program CEERAN0 membutuhkan tiga parameter:

  • seed (parameter input), item data yang dapat diartikan sebagai bilangan bulat positif (termasuk 0)

  • nomor acak (parameter output), item data yang dapat diartikan sebagai angka mengambang presisi ganda (yang nilainya antara 0,0 dan 1,0, eksklusif); itu adalah hasil dari program

  • kode umpan balik opsional (parameter output), item data 12 byte, digunakan untuk menyimpan umpan balik dari program tentang perhitungan angka acak

Cek/Penanganan Kesalahan

  • Jika jumlah argumen tidak 2 atau 3, IllegalArgumentException akan dilemparkan

  • Nilai benih harus antara 0 dan 2147483646, inklusif. Jika nilai seed berada di luar batas ini, pesan kesalahan akan dicatat dan kode umpan balik akan diatur ke tingkat keparahan 3 dan nomor mesage ke 2524. Angka acak yang dihasilkan akan disetel ke -1.0 (analog ke perilaku lama)

  • Jika nilai seed disetel ke 0, tetapi sistem tidak dapat mengambil waktu rata-rata Greewich (untuk alasan apa pun), perhitungan akan dilakukan dengan menggunakan nilai 1 sebagai fallback dan kode umpan balik akan diatur ke tingkat keparahan 1 dan nomor pesan ke 2523. Perhitungan nomor acak akan dilanjutkan dengan nilai seed fallback (analog dengan perilaku lama)

Penggunaan Sampel

Ini contoh java yang menunjukkan cara menggunakan program CEERAN0, menggunakan semua parameter termasuk kode umpan balik, dengan bit dari beberapa lapisan (entitas, layanan):

//Entity layer public class Randomin extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMIN"); private final Elementary randomin = new Elementary(root,new BinaryIntegerType(4, true),new BigDecimal("0")).named("RANDOMIN"); ... public class Randomout extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMOUT"); private final Elementary randomout = new Elementary(root,new DoubleFloatingPointType(),new BigDecimal("0")).named("RANDOMOUT"); ... public class Returncode1 extends RecordEntity { private final Group root = new Group(getData()).named("RETURNCODE"); private final Elementary returncode1 = new Elementary(root,new AlphanumericType(12)," ").named("RETURNCODE"); ... // Service layer CallHandler.newInstance(ctrl, ctx, ctx.getErrorContext()) .byReference(ctx.getRandomin().getRandominReference(), ctx.getRandomout().getRandomoutReference(), ctx.getReturncode1().getReturncode1Reference()) .call("CEERAN0");

CEESEC

Tujuan

Utilitas CEESECS mengubah representasi string stempel waktu menjadi detik Lilian (jumlah detik sejak 00:00:00 14 Oktober 1582).

Tanda tangan

Mengingat sifatnya, utilitas CEESECS lebih dimaksudkan untuk dipanggil dari program.

Dibutuhkan tiga atau empat argumen (argumen terakhir adalah opsional):

  • Argumen pertama wajib adalah item data yang nilainya akan diintepret sebagai stempel waktu

  • Argumen kedua wajib adalah data-item alfanumerik yang memegang PICTURE string yang digunakan untuk menentukan bagaimana menafsirkan argumen pertama

  • Argumen ketiga wajib adalah item data, memegang hasil konversi argumen pertama menggunakan argumen kedua sebagai PICTURE

  • Argumen opsional keempat adalah item data yang digunakan untuk menyimpan kode umpan balik dari utilitas

Cek/Penanganan Kesalahan

  • Jika jumlah argumen yang diteruskan ke utilitas tidak tiga atau empat, a BluageWrapperException akan dilemparkan

  • Jika stempel waktu diteruskan ke utilitas karena argumen tidak valid, pesan kesalahan akan dicatat dan secara opsional, pemegang kode umpan balik akan diberi makan dengan kode umpan balik tingkat keparahan 3 dan nomor pesan 2513

  • Jika gambar diteruskan ke utilitas sebagai argumen tidak valid, pesan kesalahan akan dicatat dan secara opsional, pemegang kode umpan balik akan diberi makan dengan kode umpan balik tingkat keparahan 3 dan nomor pesan 2518

  • Jika, karena alasan apa pun, output detik lilian tidak dapat dihitung, argumen ketiga (output) akan diatur ke 0

Penggunaan Sampel

Berikut adalah contoh panggilan ke utilitas CEESECS dalam program COBOL:

WORKING-STORAGE SECTION. 01 SECONDS COMP-2. 01 TIMESTAMP-IN. 05 TIMESTAMP-IN-LEN PIC S9(4) BINARY. 05 TIMESTAMP-IN-STR. 10 TIMESTAMP-IN-CHAR PIC X OCCURS 0 TO 256 DEPENDING ON TIMESTAMP-IN-LEN. 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... ... * date for lilian second 12,799,191,601.123 MOVE '1988-5-16-19:00:01.123' TO TIMESTAMP-IN-STR MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEESECS-ROUTINE USING TIMESTAMP-IN MASK SECONDS FC.

ILBOABN0

Tujuan

Tujuan dari program ILBOABN0 adalah untuk mengganggu unit run saat ini dengan cara yang terkontrol, menggunakan kode abend (abnormal end) yang disediakan pengguna. Sering digunakan dalam penanganan kesalahan program khusus.

Gangguan unit run saat ini terjadi dengan melempar a. StopRunUnitException

Tanda tangan

Program ILBOABN0 mengambil argumen wajib tunggal yang merupakan item data yang berisi kode abend (yang harus ditafsirkan sebagai bilangan bulat).

Cek/Penanganan Kesalahan

Saat melempar StopRunUnitException to interupsi run unit run saat ini, program akan mengatur kode pengembalian ke nilai yang diberikan sebagai argumen pertama. Selain itu, pesan informasi akan dicatat.

Penggunaan Sampel

Berikut adalah contoh penggunaan java dari program ILBOABN0, yang dihasilkan dari modernisasi COBOL melalui transformasi AWS:

77 WS-ABND-CODE COMP PIC S9(4) VALUE +1234. ... ... 1970-ABNDIT. CALL 'ILBOABN0' USING WS-ABND-CODE.

dan modernisasi java yang cocok:

//Entity layer private final Group root = new Group(getData()); private final Elementary wsAbndCode = new Elementary(root,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("1234")); ... //Service layer @Override public void _1970Abndit(final MyPgmContext ctx, final ExecutionController ctrl) { ctrl.callSubProgram("ILBOABN0", CallBuilder.newInstance() .byReference(ctx.getWsAbndCode().getWsAbndCodeReference()) .getArguments(), ctx);