Dienstprogramme für Datensätze - 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.

Dienstprogramme für Datensätze

BLUESAMCOPY/BLUESAMCREATE/BLUESAMDELETE/BLUESAMCLEAR

Diese Hilfsprogramme bieten wichtige Funktionen zur Bearbeitung von Datensätzen in Blusam-Datensätzen.

Das bypassBluesamStatus Kennzeichen (gespeichert in JobContext) legt fest, ob die normale Statusüberprüfung von Datensätzen, die gleichzeitige Zugriffskonflikte zwischen Online- und Batch-Prozessen verhindert, umgangen werden soll.

Wann bypassBluesamStatus ist wahr:

  • Überspringt normale Statusprüfungen von Datensätzen während des Betriebs

  • Ermöglicht den Zugriff auf Datensätze, die normalerweise blockiert sein könnten

BLUESAMCOPY

Das BLUESAMCOPY-Programm kopiert Daten und Metadatenstrukturen von einem Bluesam-Datensatz in einen anderen.

Parameters

Das BLUESAMCOPY-Programm verwendet zwei Parameter:

  • FROM=<source dataset name>- Quelldatensatz, aus dem kopiert werden soll

  • TO=<target dataset name>- Zieldatensatz, in den kopiert werden soll

Behavior

  • Wenn der Zieldatensatz nicht existiert, wird er mit der Metadatenstruktur der Quelle erstellt

  • Wenn das Ziel existiert, wird es vor dem Kopieren gelöscht (überschreibt bestehende Daten)

  • Der Vorgang wird fortgesetzt, wenn Datensätze nicht von Online-Prozessen verwendet werden oder wenn der Wert auf true gesetzt bypassBluesamStatus ist

  • Behält Schlüssel, Komprimierung, Datensatzlänge und andere Metadateneigenschaften bei

Fehlerbehandlung

Gibt Code 1 zurück, wenn der Quelldatensatz nicht existiert oder wenn einer der Datensätze von Online-Prozessen verwendet wird.

Beispiel für die Verwendung

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // copy bluesam dataset res = mpr.withArguments("FROM=MYBLUESAMTABLE","TO=MYBLUESAMTABLE2").runProgram("BLUESAMCOPY")

BLUESAMCREATE

Das Programm BLUESAMCREATE erstellt einen Bluesam-Datensatz mit den angegebenen Parametern.

Parameters

Das BLUESAMCREATE-Programm benötigt sieben Parameter:

  • name=<dataset name>- Zu erstellender Datensatz (erforderlich)

  • compress=<true/false>- Komprimierung aktivieren (optional, Standard: false)

  • fixedLength=<true/false>- Status von Datensätzen mit fester Länge (optional, Standard: falsch)

  • recordLength=<integer>- Länge des Datensatzes in Byte (optional, Standard: -1)

  • primaryKey=<key id>,duplicates=<true/false>,fields=<offset,length,...>- Spezifikation des Primärschlüssels (optional)

  • key=<altkey id>,duplicates=<true/false>,fields=<offset,length,...>- Alternativer Schlüssel (kann mehrere oder 0 haben)

  • clearExisting=true/false- Löscht den vorhandenen Datensatz (optionaler Standardwert: true)

Erläuterungen zu bestimmten Schlüsselparametern:

  • duplicates: Ob doppelte Werte für den angegebenen Schlüssel zulässig sind oder nicht;

  • fields: Feldpositionen (1-basiert) und Längen, die den Schlüssel definieren;

Behavior

  • Wenn der Datensatz nicht existiert, wird er mit den angegebenen Parametern erstellt

  • Wenn der Datensatz existiert, wird er gelöscht, wenn clearExisting=true

  • Der Vorgang wird fortgesetzt, wenn Datensätze nicht von Online-Prozessen verwendet werden oder wenn auf eingestellt bypassBluesamStatus ist true

Bedingungen für Fehler

Gibt in allen Fällen den Code 0 zurück.

Beispiel für die Verwendung

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // create bluesam dataset mpr.withArguments( "name=MYBLUESAMTABLE", "compress=FALSE", "fixedLength=true", "recordLength=54", "primaryKey=MYKEY_PK,duplicates=FALSE,fields=0,6") .runProgram("BLUESAMCREATE")

BLUESAMDELETE

Das Programm BLUESAMDELETE löscht Bluesam-Datensätze.

Parameters

Das BLUESAMDELETE-Programm benötigt einen oder mehrere Parameter:

  • <dataset name>- Zu löschender Datensatz (kann mehrere haben)

Behavior

  • Der Vorgang wird fortgesetzt, wenn Datensätze nicht von Online-Prozessen verwendet werden oder wenn auf eingestellt bypassBluesamStatus ist true

  • Wenn der Datensatz vorhanden ist, löschen Sie ihn

Fehlerbedingungen

Gibt in allen Fällen den Code 0 zurück.

Beispiel für die Verwendung

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // delete bluesam datasets res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2","MYBLUESAMTABLE3").runProgram("BLUESAMDELETE")

BLUESAM CLEAR

Das BLUESAMCLEAR-Programm entfernt alle Daten aus vorhandenen Datensätzen, wobei deren Struktur und Metadaten erhalten bleiben.

Parameters

Das BLUESAMCLEAR-Programm benötigt einen oder mehrere Parameter:

  • <dataset name>- Zu löschender Datensatz (kann mehrere haben)

Behavior

  • Der Vorgang wird fortgesetzt, wenn Datensätze nicht von Online-Prozessen verwendet werden oder wenn auf eingestellt bypassBluesamStatus ist true

  • Falls ein Datensatz vorhanden ist, löschen Sie ihn

Fehlerbedingungen

Gibt in allen Fällen den Code 0 zurück.

Beispiel für die Verwendung

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // clear bluesam datasets res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2").runProgram("BLUESAMCLEAR")

BPXWDYN

Dieses Hilfsprogramm simuliert den z/OS BPXWDYN-Dienst für die dynamische Zuweisung und Freigabe von Datensätzen. In modernen Anwendungen werden die Dateizuweisungen in Groovy-Skripten über die Builder-API vorgenommen. FileConfigurationUtils Dieses Programm ermöglicht die dynamische Verwaltung dieser Zuweisungen ohne Groovy, was für die interaktive oder bedingte Dateiverarbeitung in modernisierten Anwendungen unerlässlich ist.

Parameters

Das alte Argumentformat wird beibehalten. Erwartet ein einzelnes Argument, das einen Header mit einer Größe von 2 Byte gefolgt von der Befehlszeichenfolge enthält.

Format der Befehlszeichenfolge für die Zuweisung: ALLOC DD(<name>) DSN('<dsn>') SHR?

Format der Befehlsfolge für die Freigabe: FREE DD(<name>)

Fehlerbehandlung

  • Stellen Sie den Fehlercode 0 für Erfolg und 1 für Misserfolg ein

  • Wird bei RuntimeException ungültigen Befehlen oder Parametern ausgelöst

Beispiel für eine Verwendung

Hier ist ein Java-Beispiel für die Verwendung des BPXWDYN-Programms, das aus einer COBOL-Modernisierung durch AWS-Transformation resultiert:

Der COBOL-Code:

01 WK-AREA. 03 DS-ALLOC-STRING. 05 DS-LENGTH PIC S9(004) COMP VALUE 100. 05 DS-TEXT PIC X(100) VALUE "ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR". ... 01 RC-RETURN-CODE-AREA. 03 RC-RETURN-CODE PIC S9(008) COMP. ... CALL 'BPXWDYN' USING DS-ALLOC-STRING RETURNING RC-RETURN-CODE.

und die passende Java-Modernisierung:

private final Group dsAllocString = new Group(root).named("DS-ALLOC-STRING"); private final Elementary dsLength = new Elementary(dsAllocString,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("100")).named("DS-LENGTH"); private final Elementary dsText = new Elementary(dsAllocString,new AlphanumericType(100),"ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR").named("DS-TEXT"); ... private final Group root = new Group(getData()).named("RC-RETURN-CODE-AREA"); private final Elementary rcReturnCode = new Elementary(root,new BinaryType(8, 0, "STD", false, false, true)).named("RC-RETURN-CODE"); ... // Call to utility program BPXWDYN ctrl.callSubProgram( "BPXWDYN", CallBuilder.newInstance().byReference(ctx.getWkArea().getDsAllocStringReference()).getArguments(), ctx); ctx.getRcReturnCodeArea().setRcReturnCode(NumberUtils.convert(ctx.getProgramReturned()).intValue());

GDGUTILS

GDGs (Generation Data Group) ermöglicht es Anwendungen, mit versionierten Datensätzen zu arbeiten, wobei bei jeder Ausführung eine neue Generation erstellt wird, während gleichzeitig der Zugriff auf frühere Generationen erhalten bleibt. Dieses Hilfsprogramm erstellt und verwaltet diese Datensatzgenerationen. Dieses Hilfsprogramm soll in Groovy-Skripten aufgerufen werden.

Parameters

Die Reihenfolge der Parameter spielt keine Rolle

  • action=<create|refreshevents>- Durchzuführender Vorgang (verpflichtend)

  • gdgname=<name>- Name der GDG-Basis (verpflichtend)

  • storageProvider=<filesystem|bluesam>- Speicher-Backend

  • relativeGeneration=<+integer>- Relative Generationsnummer (z. B. +1 für die nächste Generation)

  • absoluteGeneration=integer- Absolute Generationsnummer

  • recordLength=<integer>- Datensatzgröße im Datensatz

  • fixedLength=<true/false>- Gibt an, dass die Datensätze im Datensatz eine feste Länge haben

  • ownerPath=<File system path>- Der Pfad zum Speichern des Datensatzes (dateisystemspezifisch, für diesen Fall obligatorisch)

  • compress=<true/false>- Gibt an, dass die Daten im Speicher komprimiert bleiben sollen, wenn Daten im Datenspeicher komprimiert wurden (Bluesam-spezifisch) (optional, false ist der Standardwert)

  • catalog— Gibt an, dass der Datensatz katalogisiert werden soll (optional)

  • warmUp- Gibt an, dass der Datensatz beim Öffnen in den Speicher geladen werden soll (Bluesam-spezifisch) (optional)

RelativeGeneration oder AbsoluteGeneration: Eine dieser Eigenschaften muss festgelegt werden.

Operationen

  • create: Erstellt eine neue GDG-Datensatzgenerierung gemäß den GDG-Metadaten (verarbeitet sowohl Dateisystem- als auch Bluesam-Speicher)

  • refreshevents: Passt die Generationsnummer (Gdg-Metadaten) an, ohne neue Datensätze zu erstellen (Wird verwendet, wenn fehlgeschlagene Jobs neu gestartet werden, die bereits Datensätze erstellt haben)

Fehlerbehandlung

  • Setzt den Fehlercode 0 für Erfolg und 1 für Misserfolg

  • Wird bei RuntimeException ungültigen Befehlen oder Parametern ausgelöst

Beispiel für eine Verwendung

GDG-Erstellungsvorgang: Der folgende Code erstellt eine Bluesam-Generation (43) für den Datensatz IC.PLI.GDGTEST

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) Map params = new Hashtable() params.put("jobContext", jobContext) Object[] args =["action=create","gdgname=IC.PLI.GDGTEST","absoluteGeneration=43","storageProvider=bluesam","recordLength=80"] mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")

Gdg-Refreshevents-Operation: Nur RelativeGeneration ist für diesen Vorgang relevant. Der folgende Code aktualisiert die Generationsnummer (+1 im Vergleich zur aktuellen Generation) für den Datensatz IC.PLI.GDGTEST

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) Map params = new Hashtable() params.put("jobContext", jobContext) Object[] args =["action=refreshevents","gdgname=IC.PLI.GDGTEST","relativeGeneration=1","storageProvider=bluesam"] mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")

ICEGENER/SYNCGENR

Dieses Hilfsprogramm ahmt das Verhalten des z/OS Systemdienstprogramms ICEGENER nach. Es kopiert Datensätze von der Eingabe (Datensatz) zur Ausgabe (Datensatz). SYSUT1 SYSUT2 Diese Java-Implementierung bietet äquivalente Funktionen und unterstützt sowohl Dateisystem- als auch Bluesam-Speicher.

Parameters

Kein Argument

Erforderliche Datensätze

  • SYSUT1: Eingabedatensatz/Datei

  • SYSUT2: Ausgabedatensatz/Datei

Umgang mit der Disposition für den Datensatz SYSUT2

  • NEU: Neuen Datensatz/Datei erstellen

  • OLD/SHR: Use existing dataset/file(muss existieren)

  • MOD: Ändern, erstellen, falls vorhanden, anhängen, falls vorhanden

Fehlerbehandlung

  • Setze den Fehlercode 0, wenn der Kopiervorgang erfolgreich war, und 1, wenn er fehlschlägt

  • Wird IllegalStateException wegen ungültiger Verwendung des Bluseam-Datensatzes ausgelöst

Beispiel für die Verwendung

Hier ist ein groovy-Beispiel für die Verwendung des ICEGENER-Programms, das aus einer JCL-Modernisierung durch AWS-Transformation resultiert:

Der JCL-Code:

//STEP01 EXEC PGM=ICEGENER //SYSUT1 DD DSN=POI.INPUT,DISP=SHR //SYSUT2 DD DSN=POI.OUTPU, // DISP=(,CATLG,DELETE), // UNIT=3490, // DCB=(RECFM=FB,LRECL=100) /*

und die dazu passende Groovy-Modernisierung:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .bluesam("SYSUT1") .dataset("POI.INPUT") .disposition("SHR") .build() .bluesam("SYSUT2") .dataset("POI.OUTPU") .normalTermination("CATLG") .abnormalTermination("DELETE") .build() .getFileConfigurations()) .withParameters(params) .runProgram("ICEGENER")

IDCAMS/KQCAMS

Dieses Hilfsprogramm ahmt das Verhalten der älteren Programme IDCAMS nach, einem Mainframe-Datenverwaltungstool, das für VSAM-Dateioperationen (Virtual Storage Access Method) verwendet wird. Es verarbeitet die alten IDCAMS-Befehle und behält dabei dieselbe Syntax wie die ursprünglichen SYSIN-Eingaben bei.

Kontext

Das Programmverhalten kann durch zwei Parameter konfiguriert werden, die in definiert sind: application-utility-pgm.yml

  • jclType: JCL-Typ-ID (vse oder mvs). Die PRINT/REPRO Befehle des IDCAMS-Dienstprogramms geben 4 zurück, wenn die Datei für JCL-Dateien, die nicht mit VSE verknüpft sind, leer ist

  • forcedCharsetIdcams: Optionale Überschreibung des Zeichensatzes für die IDCAMS-Verarbeitung

Parameters

Kein Argument. Operationen werden über den SYSIN-Datensatz weitergeleitet.

Erforderliche Datensätze

  • SYSIN — Enthält IDCAMS-Befehlsanweisungen

  • Eingabe-/Ausgabe-Datensätze — Wie in den IDCAMS-Befehlen angegeben (abhängig von der IDCAMS-Anweisung)

Hauptmerkmale//Unterstützte Befehle

Die Details zu den IDCAMS-Befehlen auf der SYSIN-Steuerkarte sind hier nicht aufgeführt, sollten aber aus den vorhandenen Dokumentationen zu den entsprechenden älteren Plattformen abgerufen werden.

  • DEFINE — Erzeugt VSAM-Cluster und -Datensätze

  • DELETE — Entfernt Datensätze (unterstützt Platzhalter)

  • REPRO — Kopiert Daten zwischen Datensätzen

  • PRINT - Zeigt den Inhalt des Datensatzes an

  • VERIFY — Überprüft die Existenz und Integrität von Datensätzen

  • ALTER — Ändert Datensatzattribute (Umbenennung)

  • ALLOC — Weist Datensätze dynamisch zu

  • SET — Verwaltet Bedingungscodes (LASTCC/MAXCC)

  • IF-THEN-ELSE - Bedingte Befehlsausführung

  • ABBRECHEN — Beendet die Jobausführung

Fehlerbehandlung

  • Setzt den Fehlercode 0, wenn der letzte Befehl erfolgreich war, -1, falls er fehlschlägt

  • Die SET-Befehle (LASTCC) können verwendet werden, um den Fehlercode zu überschreiben, z. B. SET LASTCC = 0

Beispiel für die Verwendung

Hier ist ein Groovy-Beispiel für die Verwendung des IDCAMS-Programms, das aus einer JCL-Modernisierung durch AWS-Transformation resultiert:

Der JCL-Code:

//STEP15 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //ACCTDATA DD DISP=SHR, // DSN=AWS.M2.CARDDEMO.ACCTDATA.PS //ACCTVSAM DD DISP=SHR, // DSN=AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS //SYSIN DD * REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM) /*

und die dazu passende Groovy-Modernisierung:

mpr.withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .systemOut("SYSPRINT") .output("*") .build() .bluesam("ACCTDATA") .dataset("AWS.M2.CARDDEMO.ACCTDATA.PS") .disposition("SHR") .build() .bluesam("ACCTVSAM") .dataset("AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS") .disposition("SHR") .build() .fileSystem("SYSIN") .stream("REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM)", getEncoding()) .build() .getFileConfigurations()) .withParameters(params) .runProgram("IDCAMS")

IEBGENER/JSDGENER

Dieses Programm repliziert das IEBGENER-Hilfsprogramm. Es wird zum Kopieren und Bearbeiten sequentieller Datensätze verwendet. Diese Implementierung erweitert die grundlegenden Kopierfunktionen durch die Unterstützung von IEBGENER-Steueranweisungen für erweiterte Datenverarbeitungsvorgänge.

Parameters

Kein Argument. Operationen werden über den SYSIN-Datensatz weitergeleitet.

Erforderliche Datensätze

  • SYSIN: enthält Steueranweisungen (optional, falls nicht definiert, ist das IEBGENER-Programm identisch mit ICEGENER)

  • SYSUT1: Eingabedatensatz/Datei

  • SYSUT2: Ausgabedatensatz/Datei

Hauptmerkmale//Unterstützte IEBGENER Control Statements

Die Details zur IEBGENER-Steueranweisung auf den SYSIN-Steuerkarten sind hier nicht aufgeführt, sollten aber aus den vorhandenen Dokumentationen zu den entsprechenden älteren Plattformen abgerufen werden.

  • GENERATE — definiert die Gesamtstruktur des Datenmanipulationsprozesses, indem die maximale Anzahl der zu verarbeitenden Datensatztypen (MAXNAME) und Felder (MAXFLDS) angegeben wird

  • RECORD — definiert das tatsächliche Layout und den Inhalt jedes Datensatztyps durch Angabe der Position, Länge und des Formats einzelner Felder, die entweder aus dem Eingabedatensatz kopiert oder mit bestimmten Werten generiert werden

  • LABEL/MEMBER/EXITwerden nicht unterstützt

Beispiel:

GENERATE MAXNAME=3,MAXFLDS=5 RECORD TYPE=1, FIELD=(1,1,CH,VALUE='H'), FIELD=(2,30,CH,VALUE='EMPLOYEE REPORT 2024 ') RECORD TYPE=2, FIELD=(1,1,CH,VALUE='D'), FIELD=(2,10,CH), /* Name */ FIELD=(12,8,CH), /* Birth date */ FIELD=(20,8,CH,VALUE='ACTIVE') RECORD TYPE=3, FIELD=(1,1,CH,VALUE='F'), FIELD=(2,30,CH,VALUE='END OF REPORT ')

Fehlerbehandlung

Setzen Sie den Fehlercode 0, wenn der Kopiervorgang erfolgreich war, und 1, wenn er fehlschlägt.

Beispiel für die Verwendung

Hier ist ein groovy-Beispiel für die Verwendung des IEBGENER-Programms, das aus einer JCL-Modernisierung durch AWS-Transformation resultiert:

Der JCL-Code:

//GENDATA EXEC PGM=IEBGENER //SYSUT1 DD DSN=INPUT.EMPLOYEE.DATA, // DISP=SHR //SYSUT2 DD DSN=OUTPUT.EMPLOYEE.FILE, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920) //SYSIN DD * GENERATE MAXNAME=2,MAXFLDS=5 RECORD TYPE=1, FIELD=(1,1,CH,VALUE='H'), FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024 ') RECORD TYPE=2, FIELD=(1,1,CH,VALUE='D'), FIELD=(2,10,CH), /* Name from input */ FIELD=(12,8,CH), /* Birth date from input */ FIELD=(20,8,CH), /* Dept from input */ FIELD=(28,8,CH) /* Salary from input */ /*

und die dazu passende Groovy-Modernisierung:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .systemOut("SYSPRINT") .output("*") .build() .bluesam("SYSUT1") .dataset("INPUT.EMPLOYEE.DATA") .disposition("SHR") .build() .bluesam("SYSUT2") .dataset("OUTPUT.EMPLOYEE.FILE") .disposition("NEW") .normalTermination("CATLG") .abnormalTermination("DELETE") .build() .fileSystem("SYSIN") .stream( """GENERATE MAXNAME=2,MAXFLDS=5 RECORD TYPE=1, FIELD=(1,1,CH,VALUE='H'), FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024 ') RECORD TYPE=2, FIELD=(1,1,CH,VALUE='D'), FIELD=(2,10,CH), /* Name from input */ FIELD=(12,8,CH), /* Birth date from input */ FIELD=(20,8,CH), /* Dept from input */ FIELD=(28,8,CH) /* Salary from input */""", getEncoding()) .build() .getFileConfigurations()) .withParameters(params) .runProgram("IEBGENER")

IEFBR14

IEFBR14 ist ein „Nichts tun“ -Programm, das einfach mit dem Rückgabecode 0 (Null) zurückkehrt. Es wird hauptsächlich für die Zuordnung, Löschung oder Katalogverwaltung von Datensätzen mithilfe von DD-Anweisungen verwendet, ohne dass eine tatsächliche Datenverarbeitung durchgeführt wird.

Parameters

Kein Argument

Fehlerbehandlung

Setze immer den Fehlercode 0.

Beispiel für die Verwendung

Hier ist ein Groovy-Beispiel für die Verwendung des IEFBR14 Programms, das aus einer JCL-Modernisierung durch AWS-Transformation resultiert:

Der JCL-Code zum Erstellen eines neuen sequentiellen Datensatzes:

//STEP1 EXEC PGM=IEFBR14 //NEWSEQ DD DSN=USER.NEW.SEQ.DATA, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(10,5)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)

und die dazu passende Groovy-Modernisierung:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .bluesam("NEWSEQ") .dataset("USER.NEW.SEQ.DATA") .disposition("NEW") .normalTermination("CATLG") .abnormalTermination("DELETE") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IEFBR14")

Der JCL-Code zum Löschen eines vorhandenen Datensatzes:

//STEP3 EXEC PGM=IEFBR14 //DELDD DD DSN=USER.OLD.DATASET, // DISP=(OLD,DELETE,DELETE)

und die passende Groovy-Modernisierung:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .bluesam("DELDD") .dataset("USER.OLD.DATASET") .disposition("OLD") .normalTermination("DELETE") .abnormalTermination("DELETE") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IEFBR14")

JCLBCICS

Dieses Programm verwaltet den Status von Datensätzen, es setzt enables/disables Datensätze auf der Grundlage der Konfiguration und unterstützt sowohl einzelne Dateien als auch Platzhaltermuster: Es ändert das STATUS-Feld in der JICS-Tabelle file_table.

Parameters

Kein Argument. Operationen werden durch ein DatasetsConfiguration Objekt übergeben, z.B.

mpr.withDatasetsConfiguration(new DatasetsConfiguration().close(<Dataset Name>)

Kontext

Das Programmverhalten kann durch zwei Parameter konfiguriert werden:

In application-utility-pgm.yml:

  • jclbcics.ddname.size(Standard ist 8): Die Größe des Datensatznamens wird global konfiguriert. Wenn dieser Wert gesetzt ist und die Länge des Datensatznamens kleiner als dieser Wert ist, wird der Datensatzname gekürzt.

In einem einzelnen Schritt der Groovy-Datei, die das Programm aufruft

  • JCLBCICS_OVERRIDDEN_SIZE: Es überschreibt die Größe des globalen Datensatznamens:

TreeMap stepMapTransfo = [:] Map stepParams = ["MapTransfo":stepMapTransfo] stepParams["MapTransfo"]["JCLBCICS_OVERRIDDEN_SIZE"] = '6'

Wenn die angepasste Größe des DD-Namens (nach der Kürzung) kleiner als 8 ist, wird der DD-Name als Platzhalter betrachtet und die Funktion funktioniert für alle Datensätze, die mit diesem DD-Namen beginnen.

Wichtigste Funktionen

Die unterstützten Operationen sind:

  • ÖFFNEN: Setzt Datensätze auf den Status AKTIVIERT

  • SCHLIESSEN: Setzt Datensätze auf den Status DEAKTIVIERT

Diese Operationen werden über die DatasetsConfiguration Builder-Klasse deklariert:

new DatasetsConfiguration().close(<DD name>).open(<DD name>)

DD-Name: Name des Datensatzes, Platzhalter * wird akzeptiert, wenn die Größe des DD-Namens kleiner als die maximale DD-Namensgröße (8) ist.

Fehlerbehandlung

Setze den Fehlercode 0

Beispiel für die Verwendung

Hier ist ein Beispiel für die Verwendung des JCLBCICS-Programms mit Groovy:

es deaktiviert den DatensatzUFOLJ3P, es aktiviert alle Datensätze, die mit AX beginnen, es aktiviert alle Datensätze, die mit DX beginnen

import com.netfective.bluage.gapwalk.rt.call.MainProgramRunner import com.netfective.bluage.gapwalk.rt.call.ProgramExecutionResult import com.netfective.bluage.gapwalk.rt.io.support.DatasetsConfiguration MainProgramRunner mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) def TreeMap stepMapTransfo = [:] def Map stepParams = ['MapTransfo':stepMapTransfo] stepParams['MapTransfo']['JCLBCICS_OVERRIDDEN_SIZE'] = '7' ProgramExecutionResult res = mpr .withDatasetsConfiguration(new DatasetsConfiguration().close("UFOLJ3P").open("AX*").open("DX")) .withParameters(stepParams) .runProgram("JCLBCICS")