Befehle und Dienstprogramme - AWS Mainframe-Modernisierung

AWS Der Mainframe Modernization Service (Managed Runtime Environment Experience) steht Neukunden nicht mehr zur Verfügung. Funktionen, die dem AWS Mainframe Modernization Service (Managed Runtime Environment-Erfahrung) ähneln, finden Sie unter AWS Mainframe Modernization Service (Self-Managed Experience). Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der Verfügbarkeit von AWS Mainframe Modernization.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Befehle und Dienstprogramme

Dieser Abschnitt bezieht sich auf Hilfsprogramme, deren Aufgabe darin besteht, Benutzerbefehle zu verarbeiten, die mithilfe von Steuerkarten bereitgestellt werden.

IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH

IKJEFT1Ein Zweck

IKJEFT1A und seine Aliase führen TSO-Befehle (T ime S haring O option) in Batch-Jobs aus, ohne dass eine interaktive TSO-Sitzung erforderlich ist, wodurch eine Brücke zwischen nicht interaktiven Batch- und interaktiven TSO-Umgebungen geschaffen wird.

Ahmt IKJEFT1 veraltetes A-Verhalten mit umgebungsspezifischen Unterschieden nach: DB2 TERM-Befehle (inate) werden beispielsweise in modernen Umgebungen ignoriert (als informativ protokolliert).

Anmerkung

Die Befehlssyntax wird hier nicht näher beschrieben — IKJEFT1 A verwendet ältere Befehlsdatensätze unverändert. Einzelheiten zu TSO-Befehlen finden Sie in der Dokumentation zu älteren Plattformen.

IKJEFT1Eine Signatur

Verwendet den SYSTSIN Datensatz für die Befehlseingabe (definiert über die DD JCL-Direktive). Die modernisierte Version verwendet denselben Datensatz unverändert. Wird nur in modernisierten Groovy-Job-Skripten aufgerufen.

IKJEFT1Ein verwandter Konfigurationsparameter

Das Verhalten des Dienstprogramms wird durch den folgenden Konfigurationsparameter beeinflusst:

  • systin.encoding

Einzelheiten Verfügbare Eigenschaften für optionale Webanwendungen zur Konfiguration dieses Parameters finden Sie unter.

IKJEFT1Eine Checks/Error Handhabung

Wenn ein nicht unterstützter Befehl in der SYSTSIN-Datenmenge vorhanden ist, RuntimeException wird a ausgelöst.

IKJEFT1Ein Beispiel für Verwendungen

Das alte JCL-Skript (das mithilfe einer Direktive einen Inline-Inhalt des SYSTSIN Datensatzes verwendet) 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 //*********************************************************************

und das dazu passende modernisierte Skript (in grooviger Form) -- der Inline-Inhalt des SYSTSIN Datensatzes wird durch einen „Stream“ repräsentiert --

// 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

QCMDEXC Zweck

Dieses Hilfsprogramm emuliert das Verhalten des AS/400-Systemdienstprogramms QCMDEXC, mit dem Systembefehle zur Laufzeit dynamisch ausgeführt werden.

Features:

  • Analysiert Befehle und führt sie dynamisch aus.

  • Unterstützt benannte und positionelle Parameterformate.

QCMDEXC-Signatur

Akzeptiert 1-2 Parameter:

  • Erstens: Alphanumerische Daten, die Befehle zur Ausführung enthalten

  • Zweitens (optional): Länge in Byte, die aus dem ersten Parameter gelesen werden soll (standardmäßig die volle Länge)

QCMDEXC-Behandlung Checks/Error

In den folgenden Fällen RuntimeException wird a ausgelöst:

  • Wenn die Anzahl der angegebenen Argumente nicht eins oder zwei ist;

  • Wenn das Befehlsargument leer ist oder wenn der auszuführende Befehl nicht erkannt wird;

  • Falls die Ausführung des Befehls aus irgendeinem Grund fehlschlägt, wird zusätzlich der Rückgabecode des Programms auf 1 gesetzt.

QCMDEXC-Anwendungsbeispiele

Hier ist ein Anwendungsbeispiel aus einem älteren COBOL-Programm: Das Datenelement CL-COMMANDX wird mit Befehlen ausgestattet, bevor es als Argument für den QCMDEXC-Programmaufruf verwendet wird:

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.

Nach der Modernisierung in Java-Code wird daraus:

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

Bitte beachten Sie, dass der Inhalt älterer Befehle im modernisierten Code unverändert und ohne Änderungen verwendet wird.