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 sollTO=<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
bypassBluesamStatusistBehä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=trueDer Vorgang wird fortgesetzt, wenn Datensätze nicht von Online-Prozessen verwendet werden oder wenn auf eingestellt
bypassBluesamStatusisttrue
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
bypassBluesamStatusisttrueWenn 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
bypassBluesamStatusisttrueFalls 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-BackendrelativeGeneration=<+integer>- Relative Generationsnummer (z. B. +1 für die nächste Generation)absoluteGeneration=integer- Absolute GenerationsnummerrecordLength=<integer>- Datensatzgröße im DatensatzfixedLength=<true/false>- Gibt an, dass die Datensätze im Datensatz eine feste Länge habenownerPath=<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
IllegalStateExceptionwegen 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")