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.
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à
Questa sezione è relativa ai programmi di utilità il cui ruolo è gestire i comandi utente, forniti tramite schede di controllo.
IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH
IKJEFT1Uno scopo
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
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
Il comportamento dell'utilità è influenzato dal seguente parametro di configurazione:
-
systin.encoding
Proprietà disponibili per applicazioni Web opzionaliPer ulteriori informazioni sulla configurazione di questo parametro, consulta la sezione.
IKJEFT1Una gestione Checks/Error
Quando un comando non supportato è presente nel set di dati SYSTSIN, viene generato unRuntimeException.
IKJEFT1A) Esempi di utilizzo
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
Scopo QCMDEXC
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
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
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
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.