

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](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

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

# Dataset Utilitas
<a name="system-datasets-utilities"></a>

## BLUESAMCOPY/BLUESAMCREATE/BLUESAMDELETE/BLUESAMCLEAR
<a name="bluesam-utilities"></a>

Program utilitas ini menyediakan fungsi manipulasi kumpulan data penting pada kumpulan data [Blusam](https://docs.aws.amazon.com/m2/latest/userguide/ba-shared-blusam.html).

`bypassBluesamStatus`Bendera (disimpan dalam JobContext) menentukan apakah akan melewati validasi status kumpulan data normal yang mencegah konflik akses bersamaan antara proses online dan batch.

Kapan `bypassBluesamStatus` benar:
+ Melewatkan pemeriksaan status dataset normal selama operasi
+ Memungkinkan akses ke kumpulan data yang biasanya diblokir

### BLUESAMCOPY
<a name="bluesamcopy"></a>

Program BLUESAMCOPY menyalin data dan struktur metadata dari satu kumpulan data Bluesam ke kumpulan data lainnya.

#### Parameter
<a name="bluesamcopy-parameters"></a>

Program BLUESAMCOPY mengambil dua parameter:
+ `FROM=<source dataset name>`- Dataset sumber untuk disalin
+ `TO=<target dataset name>`- Target dataset untuk disalin

#### Perilaku
<a name="bluesamcopy-behavior"></a>
+ Jika kumpulan data target tidak ada, buat dengan struktur metadata sumber
+ Jika target ada, bersihkan sebelum menyalin (menimpa data yang ada)
+ Operasi berlangsung ketika kumpulan data tidak digunakan oleh proses online atau ketika `bypassBluesamStatus` disetel ke true
+ Mempertahankan kunci, kompresi, panjang rekaman, dan properti metadata lainnya

#### Penanganan Kesalahan
<a name="bluesamcopy-error"></a>

Mengembalikan kode 1 jika kumpulan data sumber tidak ada atau jika salah satu kumpulan data digunakan oleh proses online.

#### Penggunaan Sampel
<a name="bluesamcopy-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// copy bluesam dataset
res = mpr.withArguments("FROM=MYBLUESAMTABLE","TO=MYBLUESAMTABLE2").runProgram("BLUESAMCOPY")
```

### BLUESAMCREATE
<a name="bluesamcreate"></a>

Program BLUESAMCREATE membuat kumpulan data Bluesam dengan parameter yang ditentukan.

#### Parameter
<a name="bluesamcreate-parameters"></a>

Program BLUESAMCREATE membutuhkan tujuh parameter:
+ `name=<dataset name>`- Dataset untuk membuat (wajib)
+ `compress=<true/false>`- Aktifkan kompresi (opsional, default: false)
+ `fixedLength=<true/false>`- Status catatan panjang tetap (opsional, default: false)
+ `recordLength=<integer>`- Rekam panjang dalam byte (opsional, default: -1)
+ `primaryKey=<key id>,duplicates=<true/false>,fields=<offset,length,...>`- Spesifikasi kunci utama (opsional)
+ `key=<altkey id>,duplicates=<true/false>,fields=<offset,length,...>`- Tombol alternatif (dapat memiliki beberapa atau 0)
+ `clearExisting=true/false`- Hapus dataset yang ada (default opsional: true)

 Penjelasan parameter kunci spesifik:
+ `duplicates`: Apakah nilai duplikat diperbolehkan atau tidak untuk kunci yang diberikan;
+ `fields`: Posisi bidang (berbasis 1) dan panjang yang menentukan kunci;

#### Perilaku
<a name="bluesamcreate-behavior"></a>
+ Jika dataset tidak ada, buat dengan parameter tertentu
+ Jika dataset ada, bersihkan jika `clearExisting=true`
+ Operasi berlangsung ketika dataset tidak digunakan oleh proses online atau ketika `bypassBluesamStatus` diatur ke `true`

#### Kondisi Kesalahan
<a name="bluesamcreate-error"></a>

Mengembalikan kode 0 dalam semua kasus.

#### Penggunaan Sampel
<a name="bluesamcreate-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// create bluesam dataset
mpr.withArguments(
      "name=MYBLUESAMTABLE",
      "compress=FALSE", 
      "fixedLength=true", 
      "recordLength=54",
      "primaryKey=MYKEY_PK,duplicates=FALSE,fields=0,6")
    .runProgram("BLUESAMCREATE")
```

### BLUESAMDELETE
<a name="bluesamdelete"></a>

Program BLUESAMDELETE menghapus kumpulan data Bluesam.

#### Parameter
<a name="bluesamdelete-parameters"></a>

Program BLUESAMDELETE membutuhkan 1 atau lebih parameter:
+ `<dataset name>`- dataset untuk menghapus (dapat memiliki beberapa)

#### Perilaku
<a name="bluesamdelete-behavior"></a>
+ Operasi berlangsung ketika dataset tidak digunakan oleh proses online atau ketika `bypassBluesamStatus` diatur ke `true`
+ Jika dataset ada, hapus

#### Kondisi Kesalahan
<a name="bluesamdelete-error"></a>

Mengembalikan kode 0 dalam semua kasus.

#### Penggunaan Sampel
<a name="bluesamdelete-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// delete bluesam datasets
res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2","MYBLUESAMTABLE3").runProgram("BLUESAMDELETE")
```

### BLUESAMCLEAR
<a name="bluesamclear"></a>

Program BLUESAMCLEAR menghapus semua data dari kumpulan data yang ada sambil mempertahankan struktur dan metadatanya.

#### Parameter
<a name="bluesamclear-parameters"></a>

Program BLUESAMCLEAR membutuhkan 1 atau lebih parameter:
+ `<dataset name>`- dataset untuk menghapus (dapat memiliki beberapa)

#### Perilaku
<a name="bluesamclear-behavior"></a>
+ Operasi berlangsung ketika dataset tidak digunakan oleh proses online atau ketika `bypassBluesamStatus` diatur ke `true`
+ Jika dataset ada, kosongkan

#### Kondisi Kesalahan
<a name="bluesamclear-error"></a>

Mengembalikan kode 0 dalam semua kasus.

#### Penggunaan Sampel
<a name="bluesamclear-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// clear bluesam datasets
res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2").runProgram("BLUESAMCLEAR")
```

## BPXWDYN
<a name="bpxwdyn"></a>

Program utilitas ini mensimulasikan layanan z/OS BPXWDYN untuk alokasi dan deallokasi dataset dinamis. Dalam aplikasi modern, alokasi file dilakukan dalam skrip Groovy melalui api pembangun. `FileConfigurationUtils` Program ini memungkinkan manajemen dinamis dari alokasi ini tanpa Groovy, yang penting untuk pemrosesan file interaktif atau bersyarat dalam aplikasi modern.

### Parameter
<a name="bpxwdyn-parameters"></a>

Format argumen warisan dipertahankan. Mengharapkan argumen tunggal yang berisi header ukuran 2-byte diikuti oleh string perintah.

format string perintah untuk alokasi: `ALLOC DD(<name>) DSN('<dsn>') SHR?`

format string perintah untuk deallocation: `FREE DD(<name>)`

### Penanganan Kesalahan
<a name="bpxwdyn-error"></a>
+ Setel kode kesalahan 0 untuk sukses, 1 untuk kegagalan
+ Melempar RuntimeException untuk perintah atau parameter yang tidak valid

### Penggunaan Sampel
<a name="bpxwdyn-sample"></a>

Berikut adalah contoh penggunaan Java dari program BPXWDYN, yang dihasilkan dari modernisasi COBOL melalui transformasi AWS:

Kode COBOL:

```
   01  WK-AREA.
       03  DS-ALLOC-STRING.
           05  DS-LENGTH          PIC S9(004) COMP VALUE 100.
           05  DS-TEXT            PIC  X(100) VALUE
            "ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR".
...
           01  RC-RETURN-CODE-AREA.
       03  RC-RETURN-CODE         PIC S9(008) COMP.
...
     CALL  'BPXWDYN'  USING  DS-ALLOC-STRING RETURNING RC-RETURN-CODE.
```

dan modernisasi Java yang cocok:

```
private final Group dsAllocString = new Group(root).named("DS-ALLOC-STRING");
private final Elementary dsLength = new Elementary(dsAllocString,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("100")).named("DS-LENGTH");
private final Elementary dsText = new Elementary(dsAllocString,new AlphanumericType(100),"ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR").named("DS-TEXT");
...
private final Group root = new Group(getData()).named("RC-RETURN-CODE-AREA"); 
private final Elementary rcReturnCode = new Elementary(root,new BinaryType(8, 0, "STD", false, false, true)).named("RC-RETURN-CODE");
...
    // Call to utility program  BPXWDYN
ctrl.callSubProgram(
       "BPXWDYN", 
        CallBuilder.newInstance().byReference(ctx.getWkArea().getDsAllocStringReference()).getArguments(), ctx);
 
ctx.getRcReturnCodeArea().setRcReturnCode(NumberUtils.convert(ctx.getProgramReturned()).intValue());
```

## GDGUTILS
<a name="gdgutils"></a>

GDGs (Generation Data Group) memungkinkan aplikasi untuk bekerja dengan kumpulan data berversi di mana setiap eksekusi menciptakan generasi baru sambil mempertahankan akses ke generasi sebelumnya. Utilitas ini membuat dan mengelola generasi dataset ini. Utilitas ini dimaksudkan untuk dipanggil dalam skrip groovy.

### Parameter
<a name="gdgutils-parameters"></a>

urutan parameter tidak masalah
+ `action=<create|refreshevents>`- Operasi untuk melakukan (wajib)
+ `gdgname=<name>`- Nama basis GDG (wajib)
+ `storageProvider=<filesystem|bluesam>`- Backend penyimpanan
+ `relativeGeneration=<+integer>`- Nomor generasi relatif (mis., \+1 untuk berikutnya)
+ `absoluteGeneration=integer`- Nomor generasi absolut
+ `recordLength=<integer>`- Ukuran rekam dalam dataset
+ `fixedLength=<true/false>`- Menentukan bahwa catatan memiliki panjang tetap dalam dataset
+ `ownerPath=<File system path>`- Jalur untuk menyimpan kumpulan data (spesifik sistem file, wajib untuk kasus itu)
+ `compress=<true/false>`- Menunjukkan bahwa data harus tetap dikompresi dalam memori jika data dikompresi di penyimpanan data (khusus bluesam) (Opsional, false adalah nilai default)
+ `catalog`- Menentukan dataset yang akan dikatalogkan (Opsional)
+ `warmUp`- Menunjukkan bahwa dataset harus dimuat ke dalam memori saat dibuka (khusus bluesam) (Opsional)

RelativeGeneration atau AbsoluteGeneration: salah satu properti ini perlu diatur.

### Operasi
<a name="gdgutils-operations"></a>
+ create: Membuat generasi dataset GDG baru sesuai dengan metadata GDG (Menangani sistem file dan penyimpanan Bluesam)
+ refreshevents: Menyesuaikan nomor generasi (Gdg Metadata) tanpa membuat kumpulan data baru (Digunakan saat memulai ulang pekerjaan gagal yang sudah membuat kumpulan data)

### Penanganan Kesalahan
<a name="gdgutils-error"></a>
+ Setel kode kesalahan 0 untuk sukses, 1 untuk kegagalan
+ Melempar RuntimeException untuk perintah atau parameter yang tidak valid

### Penggunaan Sampel
<a name="gdgutils-sample"></a>

Operasi pembuatan Gdg: kode berikut membuat generasi bluesam (43) untuk dataset `IC.PLI.GDGTEST`

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

Map params = new Hashtable()
params.put("jobContext", jobContext)
Object[] args =["action=create","gdgname=IC.PLI.GDGTEST","absoluteGeneration=43","storageProvider=bluesam","recordLength=80"]
mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")
```

Operasi refreshevents Gdg: hanya RelativeGeneration yang relevan untuk operasi ini. Kode berikut memperbarui nomor generasi (\+1 dibandingkan dengan generasi saat ini) untuk `IC.PLI.GDGTEST` dataset

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

Map params = new Hashtable()
params.put("jobContext", jobContext)
Object[] args =["action=refreshevents","gdgname=IC.PLI.GDGTEST","relativeGeneration=1","storageProvider=bluesam"]
mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")
```

## ICEGENER/SYNCGENR
<a name="icegener"></a>

Program utilitas ini meniru perilaku utilitas z/OS sistem ICEGENER, ia menyalin dataset dari input (dataset) ke output (SYSUT1 dataset). SYSUT2 Implementasi Java ini menyediakan fungsionalitas setara yang mendukung sistem file dan penyimpanan Bluesam.

### Parameter
<a name="icegener-parameters"></a>

Tidak ada argumen

### Dataset yang Diperlukan
<a name="icegener-datasets"></a>
+ SYSUT1: Masukan dataset/file
+ SYSUT2: Keluaran dataset/file

### Penanganan Disposisi untuk SYSUT2 Dataset
<a name="icegener-disposition"></a>
+ BARU: Buat dataset/file baru
+ OLD/SHR: Use existing dataset/file(harus ada)
+ MOD: Ubah, buat jika hilang, tambahkan jika ada

### Penanganan Kesalahan
<a name="icegener-error"></a>
+ Setel kode kesalahan 0 jika salinan berhasil, 1 jika gagal
+ Melempar `IllegalStateException` untuk penggunaan kumpulan data Bluseam yang tidak valid

### Penggunaan Sampel
<a name="icegener-sample"></a>

Berikut adalah contoh penggunaan Groovy dari program ICEGENER, yang dihasilkan dari modernisasi JCL melalui transformasi AWS:

Kode JCL:

```
//STEP01    EXEC PGM=ICEGENER
//SYSUT1   DD DSN=POI.INPUT,DISP=SHR
//SYSUT2   DD DSN=POI.OUTPU,
//            DISP=(,CATLG,DELETE),
//            UNIT=3490,
//            DCB=(RECFM=FB,LRECL=100)
/*
```

dan modernisasi Groovy yang cocok:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .bluesam("SYSUT1")
        .dataset("POI.INPUT")
        .disposition("SHR")
        .build()
        .bluesam("SYSUT2")
        .dataset("POI.OUTPU")
        .normalTermination("CATLG")
        .abnormalTermination("DELETE")
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("ICEGENER")
```

## IDCAMS/KQCAMS
<a name="idcams"></a>

Program utilitas ini meniru perilaku program lama IDCAMS, yang merupakan alat manajemen data mainframe yang digunakan untuk operasi file VSAM (Virtual Storage Access Method). Ini memproses perintah IDCAMS lama, mempertahankan sintaks yang sama dengan input SYSIN asli.

### Konteks
<a name="idcams-context"></a>

Perilaku program dapat dikonfigurasi oleh dua parameter yang didefinisikan dalam`application-utility-pgm.yml`:
+ JCLType: pengidentifikasi tipe JCL (vse atau mvs). PRINT/REPRO Perintah utilitas IDCAMS mengembalikan 4 jika file kosong untuk jcl non-vse
+ forcedCharsetIdcams: Penggantian charset opsional untuk pemrosesan IDCAMS

### Parameter
<a name="idcams-parameters"></a>

Tidak ada argumen. Operasi dilewatkan melalui dataset SYSIN.

### Dataset yang Diperlukan
<a name="idcams-datasets"></a>
+ SYSIN - Berisi pernyataan perintah IDCAMS
+ Kumpulan data Input/Output - Seperti yang direferensikan dalam perintah IDCAMS (Tergantung pada Pernyataan IDCAMS)

### Fitur Utama/Perintah yang Didukung
<a name="idcams-commands"></a>

Rincian tentang perintah IDCAMS yang ditemukan di kartu kontrol SYSIN tidak diberikan di sini tetapi harus diambil dari dokumentasi platform lama yang relevan yang ada.
+ DEFINE - Membuat cluster dan dataset VSAM
+ DELETE - Menghapus dataset (mendukung wildcard)
+ REPRO - Menyalin data antar kumpulan data
+ PRINT - Menampilkan konten dataset
+ VERIFIKASI - Memvalidasi keberadaan dan integritas kumpulan data
+ ALTER - Memodifikasi atribut dataset (mengganti nama)
+ ALLOC - Mengalokasikan kumpulan data secara dinamis
+ SET - Mengelola kode kondisi (LASTCC/MAXCC)
+ IF-THEN-ELSE - Eksekusi perintah bersyarat
+ BATAL - Mengakhiri eksekusi pekerjaan

### Penanganan Kesalahan
<a name="idcams-error"></a>
+ Setel kode kesalahan 0 jika perintah terakhir berhasil, -1 jika gagal
+ Perintah SET (LASTCC) dapat digunakan untuk mengganti kode kesalahan, mis `SET LASTCC = 0`

### Penggunaan Sampel
<a name="idcams-sample"></a>

Berikut adalah contoh penggunaan Groovy dari program IDCAMS, yang dihasilkan dari modernisasi JCL melalui transformasi AWS:

Kode JCL:

```
//STEP15 EXEC PGM=IDCAMS
//SYSPRINT DD   SYSOUT=*
//ACCTDATA DD DISP=SHR,
//         DSN=AWS.M2.CARDDEMO.ACCTDATA.PS
//ACCTVSAM DD DISP=SHR,
//         DSN=AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS
//SYSIN    DD   *
  REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM)
/*
```

dan modernisasi Groovy yang cocok:

```
mpr.withFileConfigurations(new FileConfigurationUtils()
    .withJobContext(jobContext)
    .systemOut("SYSPRINT")
    .output("*")
    .build()
    .bluesam("ACCTDATA")
    .dataset("AWS.M2.CARDDEMO.ACCTDATA.PS")
    .disposition("SHR")
    .build()
    .bluesam("ACCTVSAM")
    .dataset("AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS")
    .disposition("SHR")
    .build()
    .fileSystem("SYSIN")
    .stream("REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM)", getEncoding())
    .build()
    .getFileConfigurations())
.withParameters(params)
.runProgram("IDCAMS")
```

## IEBGENER/JSDGENER
<a name="iebgener"></a>

Program ini mereplikasi utilitas IEBGENER. Ini digunakan untuk menyalin dan memanipulasi kumpulan data berurutan. Implementasi ini memperluas fungsionalitas penyalinan dasar dengan mendukung pernyataan kontrol IEBGENER untuk operasi pemrosesan data tingkat lanjut.

### Parameter
<a name="iebgener-parameters"></a>

Tidak ada argumen. Operasi dilewatkan melalui dataset SYSIN.

### Dataset yang Diperlukan
<a name="iebgener-datasets"></a>
+ SYSIN: berisi pernyataan kontrol (Opsional, jika tidak ditentukan, program IEBGENER identik dengan ICEGENER)
+ SYSUT1: Masukan dataset/file
+ SYSUT2: Keluaran dataset/file

### Fitur Utama/Pernyataan Kontrol IEBGENER yang Didukung
<a name="iebgener-commands"></a>

Rincian tentang pernyataan kontrol IEBGENER yang ditemukan di kartu kontrol SYSIN tidak diberikan di sini tetapi harus diambil dari dokumentasi platform warisan yang relevan yang ada.
+ GENERATE - mendefinisikan struktur keseluruhan dari proses manipulasi data dengan menentukan jumlah maksimum jenis rekaman (MAXNAME) dan bidang (MAXFLDS) yang akan diproses
+ RECORD - mendefinisikan tata letak dan konten aktual dari setiap jenis rekaman dengan menentukan posisi, panjang, dan format masing-masing bidang yang akan disalin dari dataset input atau dihasilkan dengan nilai tertentu
+ LABEL/MEMBER/EXITtidak didukung

contoh:

```
GENERATE MAXNAME=3,MAXFLDS=5
RECORD TYPE=1,
       FIELD=(1,1,CH,VALUE='H'),
       FIELD=(2,30,CH,VALUE='EMPLOYEE REPORT 2024         ')
RECORD TYPE=2,
       FIELD=(1,1,CH,VALUE='D'),
       FIELD=(2,10,CH),              /* Name */
       FIELD=(12,8,CH),             /* Birth date */
       FIELD=(20,8,CH,VALUE='ACTIVE')
RECORD TYPE=3,
       FIELD=(1,1,CH,VALUE='F'),
       FIELD=(2,30,CH,VALUE='END OF REPORT              ')
```

### Penanganan Kesalahan
<a name="iebgener-error"></a>

Setel kode kesalahan 0 jika salinan berhasil, 1 jika gagal.

### Penggunaan Sampel
<a name="iebgener-sample"></a>

Berikut adalah contoh penggunaan Groovy dari program IEBGENER, yang dihasilkan dari modernisasi JCL melalui transformasi AWS:

Kode JCL:

```
//GENDATA  EXEC PGM=IEBGENER
//SYSUT1   DD DSN=INPUT.EMPLOYEE.DATA,
//            DISP=SHR
//SYSUT2   DD DSN=OUTPUT.EMPLOYEE.FILE,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
//SYSIN    DD *
  GENERATE MAXNAME=2,MAXFLDS=5
  RECORD TYPE=1,
         FIELD=(1,1,CH,VALUE='H'),
         FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024    ')
  RECORD TYPE=2,
         FIELD=(1,1,CH,VALUE='D'),
         FIELD=(2,10,CH),              /* Name from input */
         FIELD=(12,8,CH),             /* Birth date from input */
         FIELD=(20,8,CH),             /* Dept from input */
         FIELD=(28,8,CH)              /* Salary from input */
/*
```

dan modernisasi Groovy yang cocok:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .systemOut("SYSPRINT")
        .output("*")
        .build()
        .bluesam("SYSUT1")
        .dataset("INPUT.EMPLOYEE.DATA")
        .disposition("SHR")
        .build()
        .bluesam("SYSUT2")
        .dataset("OUTPUT.EMPLOYEE.FILE")
        .disposition("NEW")
        .normalTermination("CATLG")
        .abnormalTermination("DELETE")
        .build()
        .fileSystem("SYSIN")
        .stream( """GENERATE MAXNAME=2,MAXFLDS=5
  RECORD TYPE=1,
         FIELD=(1,1,CH,VALUE='H'),
         FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024    ')
  RECORD TYPE=2,
         FIELD=(1,1,CH,VALUE='D'),
         FIELD=(2,10,CH),              /* Name from input */
         FIELD=(12,8,CH),             /* Birth date from input */
         FIELD=(20,8,CH),             /* Dept from input */
         FIELD=(28,8,CH)              /* Salary from input */""", getEncoding())
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("IEBGENER")
```

## IEFBR14
<a name="iefbr14"></a>

IEFBR14 adalah program “tidak melakukan apa-apa” yang hanya kembali dengan kode pengembalian 0 (nol). Penggunaan utamanya adalah untuk alokasi dataset, penghapusan, atau pemeliharaan katalog melalui pernyataan DD, tanpa melakukan pemrosesan data aktual apa pun.

### Parameter
<a name="iefbr14-parameters"></a>

Tidak ada argumen

### Penanganan Kesalahan
<a name="iefbr14-error"></a>

Atur selalu kode kesalahan 0.

### Penggunaan Sampel
<a name="iefbr14-sample"></a>

Berikut adalah contoh penggunaan IEFBR14 program Groovy, yang dihasilkan dari modernisasi JCL melalui transformasi AWS:

Kode JCL untuk membuat dataset sekuensial baru:

```
//STEP1    EXEC PGM=IEFBR14
//NEWSEQ   DD DSN=USER.NEW.SEQ.DATA,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(TRK,(10,5)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
```

dan modernisasi Groovy yang cocok:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .bluesam("NEWSEQ")
        .dataset("USER.NEW.SEQ.DATA")
        .disposition("NEW")
        .normalTermination("CATLG")
        .abnormalTermination("DELETE")
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("IEFBR14")
```

Kode JCL untuk menghapus dataset yang ada:

```
//STEP3    EXEC PGM=IEFBR14
//DELDD    DD DSN=USER.OLD.DATASET,
//            DISP=(OLD,DELETE,DELETE)
```

dan modernisasi Groovy yang cocok:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .bluesam("DELDD")
        .dataset("USER.OLD.DATASET")
        .disposition("OLD")
        .normalTermination("DELETE")
        .abnormalTermination("DELETE")
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("IEFBR14")
```

## JCLBCICS
<a name="jclbcics-utility"></a>

Program ini mengelola status dataset, enables/disables dataset berdasarkan konfigurasi, mendukung kedua file individual dan pola wildcard: mengubah bidang STATUS dalam tabel JICS file\_table.

### Parameter
<a name="jclbcics-parameters"></a>

Tidak ada argumen. Operasi dilewatkan melalui `DatasetsConfiguration` objek, mis

```
mpr.withDatasetsConfiguration(new DatasetsConfiguration().close(<Dataset Name>)
```

### Konteks
<a name="jclbcics-context"></a>

Perilaku program dapat dikonfigurasi oleh dua parameter:

Dalam `application-utility-pgm.yml`:
+ `jclbcics.ddname.size`(defaultnya adalah 8): secara global mengonfigurasi ukuran nama kumpulan data; jika nilai ini disetel dan panjang nama kumpulan data kurang dari nilai ini, nama kumpulan data akan terpotong.

Dalam langkah individual dari file Groovy memanggil program
+ `JCLBCICS_OVERRIDDEN_SIZE`: itu mengesampingkan ukuran nama dataset global:

```
TreeMap stepMapTransfo = [:]
Map stepParams = ["MapTransfo":stepMapTransfo]
stepParams["MapTransfo"]["JCLBCICS_OVERRIDDEN_SIZE"] = '6'
```

Jika ukuran nama dd yang disesuaikan (setelah truncature) kurang dari 8, nama dd dianggap sebagai wild card dan fungsinya beroperasi untuk semua kumpulan data yang dimulai dengan nama dd ini.

### Fitur Utama
<a name="jclbcics-features"></a>

Operasi yang didukung adalah:
+ BUKA: Menyetel kumpulan data ke status ENABLED
+ TUTUP: Menyetel kumpulan data ke status DISABLED

Operasi ini dideklarasikan melalui kelas `DatasetsConfiguration` pembangun:

```
new DatasetsConfiguration().close(<DD name>).open(<DD name>)
```

Nama DD: nama dataset, wildcard\* diterima jika ukuran nama dd kurang dari ukuran nama dd maksimum (8).

### Penanganan Kesalahan
<a name="jclbcics-error"></a>

Setel kode kesalahan 0

### Penggunaan Sampel
<a name="jclbcics-sample"></a>

Berikut adalah contoh penggunaan Groovy dari program JCLBCICS:

itu menonaktifkan dataset`UFOLJ3P`, memungkinkan semua dataset dimulai dengan AX, memungkinkan semua dataset dimulai dengan DX

```
import com.netfective.bluage.gapwalk.rt.call.MainProgramRunner
import com.netfective.bluage.gapwalk.rt.call.ProgramExecutionResult
import com.netfective.bluage.gapwalk.rt.io.support.DatasetsConfiguration

MainProgramRunner mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)
def TreeMap stepMapTransfo = [:]
def Map stepParams = ['MapTransfo':stepMapTransfo]
stepParams['MapTransfo']['JCLBCICS_OVERRIDDEN_SIZE'] = '7'

ProgramExecutionResult res = mpr
.withDatasetsConfiguration(new DatasetsConfiguration().close("UFOLJ3P").open("AX*").open("DX"))
.withParameters(stepParams)
.runProgram("JCLBCICS")
```