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.
Andere//Diverse Hilfsprogramme
In diesem Abschnitt werden verschiedene Hilfsprogramme für verschiedene Zwecke behandelt, die bestehenden Kategorien nicht zugeordnet werden konnten
In den folgenden Abschnitten PICTURE ist unter dem PICTURE Schlüsselwort COBOL zu verstehen, das verwendet wird, um den Datentyp und die Formate von Feldern zu beschreiben.
CBL_ _NICHT AND/CBL_OR/CBL_XOR/CBL_EQ/CBL_IMP/CBL
Zweck
Dies bezieht sich auf die Unterstützung bitweiser logischer Operationen an Datenelementen, wie sie in einigen COBOL-Dialekten (Micro Focus) vorkommen. Bitte beachten Sie, dass der automatische Refactor mit AWS Transform die Transformation der Verwendung bitweiser Operatoren vom Cobol-MF-Dialekt in Java übernimmt (siehe Anwendungsbeispiele unten). Damit der modernisierte Code ordnungsgemäß ausgeführt werden kann, muss die Utility-Anwendung parallel bereitgestellt werden.
Unterstützte Betreiber:
Unärer Operator:
| Unärer Operator | Details |
|---|---|
CBL_NOT |
Bitweises Komplement (~target) |
Binäre Operatoren:
| Binäre Operatoren | Details |
|---|---|
CBL_AND |
Bitweises UND (Quelle und Ziel) |
CBL_OR |
Bitweises ODER (Quelle | Ziel) |
CBL_XOR |
Bitweises exklusives ODER (Quelle ^ Ziel) |
CBL_EQ |
Bitweise Äquivalenz (~ (Quelle ^ Ziel)) |
CBL_IMP |
Bitweise Implikation (~Quelle | Ziel) |
Signatur
Abgesehen von CBL_NOT, das nur einen Operanden (Ziel) hat, haben alle anderen Operationen mindestens zwei Operanden, die Datenelemente sind. Der erste Operand ist die Quelle, der zweite Operand ist das Ziel. Ein zusätzliches optionales Argument (Länge) gibt die Anzahl der zu verarbeitenden Byte an (von links nach rechts). Wenn die Länge weggelassen wird, wird standardmäßig das Minimum an Quell- und Zielgrößen (in Byte) verwendet. Das Ergebnis der Operation wird im Ziel gespeichert. Der Rückgabecode des Programms ist 0 (sofern keine Ausnahme auftritt).
Prüfungen/Behandlung von Fehlern
Für jeden verfügbaren Operator wird die Anzahl der erforderlichen Argumente überprüft. Wenn die Mindestanzahl der erforderlichen Argumente nicht erreicht wird,
IllegalArgumentExceptionwird ein ausgelöst.Das optionale Integer-Argument Länge wird auf Positivität überprüft. Wenn die angegebene Länge negativ ist, wird eine Meldung in den Protokollen angezeigt und der Operator wird nicht angewendet.
Beispiel für die Verwendung
Beispiel für einen unären Operator:
Hier ist eine Cobol-Verwendung von CBL_NOT:
* TARGET: 00000101 * OPERATION: NOT * EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) MOVE X'0500' to TARGET CALL "CBL_NOT" USING TARGET BY VALUE 1.
und die entsprechende Java-Modernisierung:
/* TARGET: 00000101 OPERATION: NOT EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) */ ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_NOT", CallBuilder.newInstance() .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);
Beispiel für einen binären Operator:
Sehen Sie sich zum Beispiel den folgenden COBOL-Code an, der CBL_AND verwendet:
* SOURCE: 00000011 * OPERATION: AND * TARGET: 00000101 * EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) MOVE X'0300' to SRC MOVE X'0500' to TARGET CALL "CBL_AND" USING SRC TARGET BY VALUE 1.
und seine Java-Modernisierung:
/* SOURCE: 00000011 OPERATION: AND TARGET: 00000101 EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) */ ctx.getSrc().getSrcReference().setBytes(new byte[]{ 3, 0 }); ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_AND", CallBuilder.newInstance() .byReference(ctx.getSrc().getSrcReference()) .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);
CEE3SCHLECHT
Zweck
Dieses Hilfsprogramm ahmt das Verhalten des gleichnamigen Legacy-Programms nach, dessen Aufgabe darin besteht, ein Programm mit einem Abend-Code (abnormales Ende) und einem optionalen Cleanup-Timing zu beenden. Die AWS-Transform-Engine übernimmt die automatische Modernisierung von Aufrufen an CEE3 ABD. Damit der modernisierte Code ordnungsgemäß ausgeführt werden kann, muss die Utility-Anwendung parallel bereitgestellt werden.
Das Programm stoppt die aktuell ausgeführte Einheit unter Verwendung des bereitgestellten Abendcodes. In den Protokollen wird eine Informationsmeldung ausgegeben, die angibt, dass ein Benutzer-Exit mit dem angegebenen Code aufgerufen wurde. Im Moment wird der Timing-Parameter NICHT berücksichtigt, er wird aber aus Gründen der Modernisierungskompatibilität als Argument verwendet.
Signatur
Das Programm akzeptiert entweder 0 oder 2 Argumente. Die beiden Argumente sind:
Der Abend-Code (ein Datenelement, das als positiver Ganzzahlwert interpretierbar sein muss)
Der Zeitpunkt der Bereinigung (ein Datenelement, das als positiver Ganzzahlwert interpretierbar sein muss) — wird ignoriert
Wenn keine Argumente angegeben werden, werden die folgenden Standardwerte verwendet:
Abendcode: 0
Zeitpunkt der Säuberung: 0
Prüfungen/Behandlung von Fehlern
Überprüft, ob entweder 0 oder 2 Argumente angegeben werden, andernfalls
IllegalArgumentExceptionwird ein ausgelöst.Wenn zwei Argumente angegeben werden, überprüfen Sie, ob der Abend-Code zwischen 0 und 4095 liegt (beide enthalten); das Timing liegt zwischen 0 und 5 (beide enthalten)
Jeder Fehler bei diesen Tests löst eine IllegalArgumentException aus.
Verwendung eines Beispiels
Hier ist ein Beispiel für die Verwendung in einem COBOL-Programm aus der Carddemo-Anwendung:
9999-ABEND-PROGRAM. DISPLAY 'ABENDING PROGRAM' MOVE 0 TO TIMING MOVE 999 TO ABCODE CALL 'CEE3ABD'.
und der entsprechende modernisierte Java-Code:
public void _9999AbendProgram(final Cbtrn03cContext ctx, final ExecutionController ctrl) { DisplayUtils.display(ctx, ctrl, LOGGER, "ABENDING PROGRAM"); ctx.getTiming().setTiming(0); ctx.getAbcode().setAbcode(999); ctrl.callSubProgram("CEE3ABD", CallBuilder.newInstance() .getArguments(), ctx); }
ABTRETEN
Zweck
Das Hilfsprogramm CEEDATE konvertiert eine Zahl, die ein lilianisches Datum (Tage seit dem 15. Oktober 1582) darstellt, unter Verwendung eines bereitgestellten Formats in eine zeichenbasierte Datumsdarstellung.
Es ahmt das Verhalten des älteren Systemdienstprogramms mit dem gleichen Namen nach.
Signatur
Aufgrund seiner Beschaffenheit ist das CEEDATE-Hilfsprogramm eher dazu gedacht, von Programmen aus aufgerufen zu werden.
Es benötigt drei oder vier Argumente (das letzte Argument ist optional):
Das obligatorische erste Argument ist ein numerisches Datenelement, dessen Wert als Lilian-Datum interpretiert wird
Das zweite obligatorische Argument ist ein alphanumerisches Datenelement, das die
PICTUREZeichenfolge enthält, die für die Konvertierung von Datum in Zeichen verwendet wurdeDas obligatorische dritte Argument ist das alphanumerische Zieldatenelement, das das Ergebnis der Konvertierung des ersten Arguments unter Verwendung des zweiten Arguments als
PICTUREDas vierte optionale Argument ist ein Datenelement, das zum Speichern des Feedback-Codes vom Hilfsprogramm verwendet wird
Prüfungen/Behandlung von Fehlern
Wenn die Anzahl der an das Hilfsprogramm übergebenen Argumente nicht drei oder vier beträgt,
BluageWrapperExceptionwird a ausgelöstWenn das angegebene erste Zahlenargument nicht korrekt als Lilian-Datum ausgewertet werden kann (außerhalb der Grenzen), wird eine Fehlermeldung protokolliert. Falls vorhanden, erhält der optionale Feedback-Code-Inhaber einen Feedback-Code mit Schweregrad 3 und der Meldungsnummer 2512
Tritt bei der Datumskonvertierung aufgrund einer ungültigen Angabe eine Ausnahme auf
PICTURE, wird eine Fehlermeldung protokolliert. Falls vorhanden, erhält der optionale Feedback-Code-Inhaber einen Feedback-Code mit dem Schweregrad 3 und der Meldungsnummer 2518Wenn die Konvertierung aus irgendeinem Grund nicht ordnungsgemäß durchgeführt werden kann, wird das Ausgabedatenelement mit Leerzeichen gefüllt
Wenn die Konvertierung erfolgreich war, erhält der optionale Feedback-Code-Inhaber einen Feedback-Code mit dem Schweregrad 0 (und keine Meldung)
Beispiel für die Verwendung
Hier ist ein Beispielaufruf aus einem COBOL-Programm (die Struktur für den Feedback-Codehalter FC enthält Ellipsen, da sie Hunderte von Bedingungseinträgen (Stufe 88) enthält, die hier nicht gezeigt werden):
WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 TIMESTAMP-OUT PIC X(80). 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. 01 FC. ... * lilian date for 4 June 1990 MOVE SPACES TO MASK-STR MOVE 148887 TO LILIANS. MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEEDATE-ROUTINE USING LILIANS MASK TIMESTAMP-OUT FC.
CEELOCT
Zweck
Das CEELOCT-Hilfsprogramm wird verwendet, um das Lokale date/time in drei Formaten zurückzugeben:
Lilianisches Datum (die Anzahl der Tage seit dem 14. Oktober 1582)
Lilian-Sekunden (die Anzahl der Sekunden seit 00:00:00 Uhr am 14. Oktober 1582)
Gregorianische Zeichenfolge (in der Form)
YYYYMMDDHHMISS999
Sie ahmt das Verhalten des älteren Systemdienstprogramms mit demselben Namen nach.
Signatur
Aufgrund seiner Beschaffenheit ist das CEELOCT-Hilfsprogramm eher dazu gedacht, von Programmen aus aufgerufen zu werden.
Es benötigt drei oder vier Argumente (das letzte Argument ist optional):
Das obligatorische erste Argument ist ein Datenelement, das zum Speichern des Lilian-Datums verwendet wird
Das obligatorische zweite Argument ist ein Datenelement, das zum Speichern der Lilian-Sekunden verwendet wird
Das obligatorische dritte Argument ist ein Datenelement, das verwendet wird, um das gregorianische Datum in der oben angegebenen Form zu speichern
Das optionale vierte Argument ist ein Datenelement, das zum Speichern des Feedback-Codes des Dienstprogramms verwendet wird
Prüfungen/Behandlung von Fehlern
Wenn die Anzahl der an das Hilfsprogramm übergebenen Argumente nicht drei oder vier beträgt,
BluageWrapperExceptionwird a ausgelöstWenn bei der Konvertierung vom lokalen date/time in eines der Ausgabeformate eine Ausnahme auftritt: Das erste und zweite Argument werden auf 0 gesetzt und das dritte Argument bleibt unverändert; eine Fehlermeldung wird protokolliert; optional erhält der Inhaber des Feedback-Codes einen Feedback-Code mit dem Schweregrad 3 und der Meldungsnummer 2531
Bei Erfolg werden alle drei Argumente mit dem richtigen Inhalt gefüllt und der optionale Feedback-Code erhält einen Code mit dem Schweregrad 0
Beispiel für die Verwendung
Hier ist ein COBOL-Beispielausschnitt, der die Verwendung des CEELOCT-Dienstprogramms zeigt. Die Feedback-Code-Halter-Struktur FC ist nicht vollständig angegeben, da sie Hunderte von Einträgen für Bedingungen (Stufe 88) enthält.
WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 GREGORN PIC X(80). 01 SECONDS COMP-2. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... CALL CEELOCT-ROUTINE USING LILIANS SECONDS GREGORN FC.
CEERAN0
Zweck
Das Programm CEERAN0 wird aufgerufen, um unter Verwendung eines bestimmten Ausgangswerts Pseudozufallszahlen zwischen 0,0 und 1,0 zu generieren. Es basiert auf dem Algorithmus der multiplikativen kongruentiellen Methode, für den ein benutzerdefinierter Startwert erforderlich ist. Die Verwendung von 0 als Ausgangswert löst einen bestimmten Modus aus, in dem der Ausgangswert stattdessen anhand der Greenwich-Mittelwertzeit (zu dem Zeitpunkt, zu dem das Programm ausgeführt wird) berechnet. Andernfalls wird der Startwert unverändert verwendet. Die Pseudozufallssequenz ist vorhersehbar.
Signatur
Das Programm CEERAN0 verwendet drei Parameter:
der Startwert (Eingabeparameter), ein Datenelement, das als positive Ganzzahl interpretiert werden kann (0 eingeschlossen)
die Zufallszahl (Ausgabeparameter), ein Datenelement, das als Gleitzahl mit doppelter Genauigkeit interpretiert werden kann (deren Wert ausschließlich zwischen 0,0 und 1,0 liegt); sie ist das Ergebnis des Programms
der optionale Feedback-Code (Ausgabeparameter), ein Datenelement von 12 Byte, das verwendet wird, um das Feedback des Programms über die Zufallszahlenberechnung zu speichern
Prüfungen/Behandlung von Fehlern
Wenn die Anzahl der Argumente nicht 2 oder 3 ist,
IllegalArgumentExceptionwird ein ausgelöstDer Startwert muss zwischen 0 und 2147483646 (einschließlich) liegen. Wenn der Startwert außerhalb dieser Grenzen liegt, wird eine Fehlermeldung protokolliert, und der Feedback-Code wird auf Schweregrad 3 und die Meldungsnummer auf 2524 gesetzt. Die resultierende Zufallszahl wird auf -1,0 gesetzt (analog zum bisherigen Verhalten)
Wenn der Startwert auf 0 gesetzt ist, das System aber (aus welchem Grund auch immer) nicht in der Lage war, die mittlere Zeit nach Greewich zu ermitteln, wird bei der Berechnung der Wert 1 als Fallback verwendet, und der Feedback-Code wird auf Schweregrad 1 und die Nachrichtennummer auf 2523 gesetzt. Die Berechnung der Zufallszahlen wird mit dem Fallback-Seed-Wert fortgesetzt (analog zum bisherigen Verhalten)
Verwendung eines Beispiels
Dies ist ein Java-Beispiel, das zeigt, wie das CEERAN0-Programm unter Verwendung aller Parameter einschließlich des Feedback-Codes mit Bits aus mehreren Ebenen (Entität, Service) verwendet wird:
//Entity layer public class Randomin extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMIN"); private final Elementary randomin = new Elementary(root,new BinaryIntegerType(4, true),new BigDecimal("0")).named("RANDOMIN"); ... public class Randomout extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMOUT"); private final Elementary randomout = new Elementary(root,new DoubleFloatingPointType(),new BigDecimal("0")).named("RANDOMOUT"); ... public class Returncode1 extends RecordEntity { private final Group root = new Group(getData()).named("RETURNCODE"); private final Elementary returncode1 = new Elementary(root,new AlphanumericType(12)," ").named("RETURNCODE"); ... // Service layer CallHandler.newInstance(ctrl, ctx, ctx.getErrorContext()) .byReference(ctx.getRandomin().getRandominReference(), ctx.getRandomout().getRandomoutReference(), ctx.getReturncode1().getReturncode1Reference()) .call("CEERAN0");
CEESECS
Zweck
Das CEESECS-Hilfsprogramm konvertiert eine Zeitstempelzeichenfolge in Lilian-Sekunden (die Anzahl der Sekunden seit 00:00:00 Uhr am 14. Oktober 1582).
Signatur
Aufgrund seiner Beschaffenheit ist das CEESECS-Hilfsprogramm eher dazu gedacht, von Programmen aus aufgerufen zu werden.
Es benötigt drei oder vier Argumente (das letzte Argument ist optional):
Das obligatorische erste Argument ist ein Datenelement, dessen Wert als Zeitstempel interpretiert wird
Das obligatorische zweite Argument ist ein alphanumerisches Datenelement, das die
PICTUREZeichenfolge enthält, mit der angegeben wird, wie das erste Argument interpretiert werden sollDas obligatorische dritte Argument ist das Datenelement, das das Ergebnis der Konvertierung des ersten Arguments unter Verwendung des zweiten Arguments als enthält
PICTUREDas vierte optionale Argument ist ein Datenelement, das zum Speichern des Feedback-Codes vom Hilfsprogramm verwendet wird
Prüfungen/Behandlung von Fehlern
Wenn die Anzahl der an das Hilfsprogramm übergebenen Argumente nicht drei oder vier beträgt,
BluageWrapperExceptionwird a ausgelöstWenn der als Argument an das Hilfsprogramm übergebene Zeitstempel ungültig ist, wird eine Fehlermeldung protokolliert und optional erhält der Inhaber des Feedback-Codes einen Feedback-Code mit dem Schweregrad 3 und der Meldungsnummer 2513
Wenn das als Argument an das Programm übergebene Bild ungültig ist, wird eine Fehlermeldung protokolliert und optional erhält der Inhaber des Feedback-Codes einen Feedback-Code mit Schweregrad 3 und Meldungsnummer 2518
Falls die Lilian-Sekunden-Ausgabe aus irgendeinem Grund nicht berechnet werden kann, wird das dritte Argument (Ausgabe) auf 0 gesetzt
Beispiel für eine Verwendung
Hier ist ein Beispiel für einen Aufruf des CEESECS-Dienstprogramms in einem COBOL-Programm:
WORKING-STORAGE SECTION. 01 SECONDS COMP-2. 01 TIMESTAMP-IN. 05 TIMESTAMP-IN-LEN PIC S9(4) BINARY. 05 TIMESTAMP-IN-STR. 10 TIMESTAMP-IN-CHAR PIC X OCCURS 0 TO 256 DEPENDING ON TIMESTAMP-IN-LEN. 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... ... * date for lilian second 12,799,191,601.123 MOVE '1988-5-16-19:00:01.123' TO TIMESTAMP-IN-STR MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEESECS-ROUTINE USING TIMESTAMP-IN MASK SECONDS FC.
ILBOABN0
Zweck
Der Zweck des Programms ILBOABN0 besteht darin, die aktuell ausgeführte Einheit mithilfe eines vom Benutzer bereitgestellten Abendcodes (abnormales Ende) kontrolliert zu unterbrechen. Wird häufig bei der Fehlerbehandlung spezieller Programme verwendet.
Die Unterbrechung der aktuell ausgeführten Einheit erfolgt durch das Auslösen einerStopRunUnitException.
Signatur
Das Programm ILBOABN0 verwendet ein einzelnes obligatorisches Argument, das ein Datenelement ist, das den Abend-Code enthält (der als Ganzzahl interpretierbar sein muss).
Prüfungen/Behandlung von Fehlern
Beim Auslösen vonStopRunUnitException, um den aktuellen Run-Unit-Lauf zu unterbrechen, setzt das Programm den Rückgabecode auf den Wert, der als erstes Argument angegeben wurde. Außerdem wird eine Informationsmeldung protokolliert.
Beispiel für die Verwendung
Hier ist ein Java-Beispiel für die Verwendung des ILBOABN0-Programms, das aus einer COBOL-Modernisierung durch AWS-Transformation resultiert:
77 WS-ABND-CODE COMP PIC S9(4) VALUE +1234. ... ... 1970-ABNDIT. CALL 'ILBOABN0' USING WS-ABND-CODE.
und die passende Java-Modernisierung:
//Entity layer private final Group root = new Group(getData()); private final Elementary wsAbndCode = new Elementary(root,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("1234")); ... //Service layer @Override public void _1970Abndit(final MyPgmContext ctx, final ExecutionController ctrl) { ctrl.callSubProgram("ILBOABN0", CallBuilder.newInstance() .byReference(ctx.getWsAbndCode().getWsAbndCodeReference()) .getArguments(), ctx);