Andere//Diverse Hilfsprogramme - 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.

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, IllegalArgumentException wird 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 IllegalArgumentException wird 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 PICTURE Zeichenfolge enthält, die für die Konvertierung von Datum in Zeichen verwendet wurde

  • Das obligatorische dritte Argument ist das alphanumerische Zieldatenelement, das das Ergebnis der Konvertierung des ersten Arguments unter Verwendung des zweiten Arguments als PICTURE

  • Das 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, BluageWrapperException wird a ausgelöst

  • Wenn 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 aufPICTURE, wird eine Fehlermeldung protokolliert. Falls vorhanden, erhält der optionale Feedback-Code-Inhaber einen Feedback-Code mit dem Schweregrad 3 und der Meldungsnummer 2518

  • Wenn 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, BluageWrapperException wird a ausgelöst

  • Wenn 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, IllegalArgumentException wird ein ausgelöst

  • Der 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 PICTURE Zeichenfolge enthält, mit der angegeben wird, wie das erste Argument interpretiert werden soll

  • Das obligatorische dritte Argument ist das Datenelement, das das Ergebnis der Konvertierung des ersten Arguments unter Verwendung des zweiten Arguments als enthält PICTURE

  • Das 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, BluageWrapperException wird a ausgelöst

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