

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.

# Perintah Utilitas
<a name="system-commands-utilities"></a>

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

## IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH
<a name="ikjeft1a-ikjeft1b-keqeft01-ikjeft01-dsndbtch"></a>

### IKJEFT1Sebuah Tujuan
<a name="ikjeft1a-purpose"></a>

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
<a name="ikjeft1a-signature"></a>

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
<a name="ikjeft1a-configuration"></a>

Perilaku utilitas dipengaruhi oleh parameter konfigurasi berikut:
+ `systin.encoding`

Silakan lihat [Properti yang tersedia untuk aplikasi web opsional](ba-runtime-key-value.md#ba-runtime-key-value-web) untuk detail tentang mengkonfigurasi parameter ini.

### IKJEFT1 Checks/Error Penanganan
<a name="ikjeft1a-error-handling"></a>

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

### IKJEFT1Penggunaan Sampel
<a name="ikjeft1a-sample-usages"></a>

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
<a name="qcmdexc"></a>

### Tujuan QCMDEXC
<a name="qcmdexc-purpose"></a>

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
<a name="qcmdexc-signature"></a>

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
<a name="qcmdexc-error-handling"></a>

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
<a name="qcmdexc-sample-usages"></a>

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.