

AWS Il servizio di modernizzazione del mainframe (esperienza Managed Runtime Environment) non è più aperto a nuovi clienti. Per funzionalità simili a AWS Mainframe Modernization Service (esperienza Managed Runtime Environment), esplora AWS Mainframe Modernization Service (Self-Managed Experience). I clienti esistenti possono continuare a utilizzare il servizio normalmente. [Per ulteriori informazioni, consulta AWS Modifica della disponibilità di Mainframe Modernization.](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Comandi e utilità
<a name="system-commands-utilities"></a>

Questa sezione è relativa ai programmi di utilità il cui ruolo è gestire i comandi utente, forniti tramite schede di controllo.

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

### IKJEFT1Uno scopo
<a name="ikjeft1a-purpose"></a>

IKJEFT1A e i suoi alias eseguono i comandi TSO (**TIME** **S** Sharing **Option**) in processi batch senza richiedere una sessione TSO interattiva, collegando ambienti batch non interattivi e ambienti TSO interattivi.

Imita il comportamento precedente di IKJEFT1 A con differenze specifiche dell'ambiente: ad esempio, i comandi DB2 TERM (inate) vengono ignorati negli ambienti moderni (registrati come informativi).

**Nota**  
Sintassi dei comandi non dettagliata qui: A utilizza i set di dati dei comandi legacy invariati. IKJEFT1 Consulta la documentazione della piattaforma precedente per i dettagli dei comandi TSO.

### IKJEFT1Una firma
<a name="ikjeft1a-signature"></a>

Utilizza il `SYSTSIN` set di dati per l'input dei comandi (definito tramite la `DD` direttiva JCL). La versione modernizzata utilizza lo stesso set di dati invariato. Richiamato solo negli script Groovy jobs modernizzati.

### IKJEFT1Un parametro di configurazione correlato
<a name="ikjeft1a-configuration"></a>

Il comportamento dell'utilità è influenzato dal seguente parametro di configurazione:
+ `systin.encoding`

[Proprietà disponibili per applicazioni Web opzionali](ba-runtime-key-value.md#ba-runtime-key-value-web)Per ulteriori informazioni sulla configurazione di questo parametro, consulta la sezione.

### IKJEFT1Una gestione Checks/Error
<a name="ikjeft1a-error-handling"></a>

Quando un comando non supportato è presente nel set di dati SYSTSIN, viene generato un`RuntimeException`.

### IKJEFT1A) Esempi di utilizzo
<a name="ikjeft1a-sample-usages"></a>

Lo script JCL legacy (che utilizza un contenuto in linea del `SYSTSIN` set di dati, utilizzando la direttiva) `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                                                                        
//*********************************************************************
```

e lo script modernizzato corrispondente (in groovy) - il contenuto in linea del `SYSTSIN` set di dati è rappresentato da un «flusso» -

```
// 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")
                })
        }
    }
}
```

## QCMDEC
<a name="qcmdexc"></a>

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

Questo programma di utilità emula il comportamento dell'utilità di sistema AS/400 QCMDEXC, utilizzata per eseguire i comandi di sistema in modo dinamico in fase di esecuzione.

Funzionalità:
+ Analizza ed esegue i comandi in modo dinamico.
+ Supporta i formati di parametri denominati e posizionali.

### Firma QCMDEXC
<a name="qcmdexc-signature"></a>

Accetta 1-2 parametri:
+ Primo: dati alfanumerici contenenti comandi da eseguire
+ Secondo (opzionale): lunghezza in byte da leggere dal primo parametro (il valore predefinito è la lunghezza completa)

### Gestione QCMDEXC Checks/Error
<a name="qcmdexc-error-handling"></a>

Nei seguenti casi, `RuntimeException` verrà generato un:
+ Quando il numero di argomenti forniti non è uno o due;
+ Se l'argomento dei comandi è vuoto o se il comando da eseguire non è riconosciuto;
+ Se l'esecuzione del comando fallisce per qualsiasi motivo; inoltre, il codice restituito dal programma verrà impostato su 1.

### QCMDEXC Esempi di utilizzo
<a name="qcmdexc-sample-usages"></a>

Ecco un esempio di utilizzo di un programma COBOL legacy: l'elemento di dati `CL-COMMANDX` è dotato di comandi prima di essere utilizzato come argomento per la chiamata al programma 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.
```

Una volta modernizzato in codice java, questo diventa:

```
    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);
```

Tieni presente che il contenuto dei comandi precedenti viene utilizzato «così com'è» nel codice modernizzato, senza alcuna modifica.