Die Entwicklung und Pflege von Anwendungen auf z/OS-Systemen ist für viele Entwickler eine Herausforderung – insbesondere wenn es um den effizienten Umgang mit Partitioned Datasets Extended (PDSE) geht. Hier setzt das Konzept von z/OS Metal I/O an und eröffnet neue Wege bei der direkten Interaktion mit Dataset-Mitgliedern, die weit über die üblichen Middleware-Zugriffe hinausgehen. Durch den Einsatz von BPAM (Basic Partitioned Access Method) bietet Metal I/O deutliche Performance- und Funktionalitätsvorteile, die Entwicklerleben erleichtern und den Entwicklungsprozess optimieren können. Traditionell greifen Entwickler auf z/OS I/O-Dienste meist über bekannte Middleware-Komponenten wie CICS, IMS oder Db2 zu. Diese abstrahieren die systemnahen I/O-Routinen und machen das Arbeiten mit Datensätzen und deren Mitgliedern komfortabler – schränken aber zugleich den direkten Einfluss und die Möglichkeiten an.
Standard-C-Funktionen wie fopen, fread oder fwrite nutzen intern meist BSAM (Basic Sequential Access Method) oder QSAM (Queued Sequential Access Method), welche zwar robust sind, aber bei der Bearbeitung mehrerer PDSE-Mitglieder ineffizient agieren, da sie für jeden Zugriff den Datensatz öffnen und schließen. BPAM hebt sich hier entscheidend ab. Es erlaubt die Öffnung eines PDSE als Ganzes, das Arbeiten mit mehreren Mitgliedern nacheinander und das endgültige Schließen erst am Ende. Diese Mechanik spart wertvolle Zeit und Ressourcen, was insbesondere bei automatisierten Build-Prozessen oder bei umfangreicher Quellcodeverwaltung einen erheblichen Unterschied macht. Genau diese Effizienz war für Entwickler wie Mike Fulton Motivation genug, um einen C- und Assembler-basierten Service-Stack zu entwickeln, der BPAM-Services unter z/OS verfügbar macht und die Verwendung in Softwareprojekten vereinfacht.
Ein weiterer wesentlicher Aspekt von Metal I/O ist die Fähigkeit, erweiterte Attribute der PDSE-Mitglieder auszulesen und zu manipulieren. Dazu gehören wichtige Metadaten wie CCSID (Coded Character Set Identifier), Zeitstempel und Benutzerinformationen. Diese erweiterten Attribute ermöglichen eine deutlich intelligentere Handhabung der Daten und bieten neue Möglichkeiten für Entwicklungs- und Build-Werkzeuge. Tools könnten beispielsweise intelligente Differenzvergleiche anhand von Zeitstempeln durchführen oder editorübergreifend korrekt codierte Texte (ASCII, EBCDIC, UTF-8) bearbeiten, ohne dabei aufwendige Konvertierungen vornehmen zu müssen. Die technische Herausforderung liegt jedoch darin, dass die für diese erweiterten Funktionen nötigen Systemservices wie DESERV (Directory Entry Services) und STOW (Update Partitioned Dataset Directory) ausschließlich im HLASM (High Level Assembler) verfügbar sind.
Dies verlangt nach fundiertem Know-how im Umgang mit allerlei Kontrollblöcken und systemnahen Datenstrukturen, die im C-Umfeld nicht direkt nutzbar sind. Um diesen Aufwand zu minimieren, hat Mike eine mehrschichtige Architektur entwickelt, bestehend aus Assemblerroutinen, die die Low-Level-Systemservices aufrufen, und darüber liegenden C-Wrappers, die eine 31- und 64-Bit-kompatible Schnittstelle bereitstellen. Das Herzstück sind dabei die Assemblerroutinen wie OPENA zum Öffnen eines Datensatzes, FINDA zum Auffinden von PDSE-Mitgliedern oder DESERVA und STOWA zum Lesen und Schreiben der erweiterten Attribute. Die C-Services kapseln diese Rufe, sodass Entwickler in höherwertigen Sprachen problemlos darauf zugreifen können – eine entscheidende Erleichterung gegenüber reinem HLASM-Programmieren. Besonders anspruchsvoll ist dabei die Verwaltung von Kontrollblöcken, die teilweise im sogenannten „below the line“-Speicher (24-Bit-Adressraum) liegen müssen.
Für diese Anforderung wurden eigene Speicherverwaltungsroutinen wie MALOC24A und FREE24A implementiert, um die Anforderungen von z/OS zu erfüllen. Praktische Einsatzbeispiele verdeutlichen die Funktionsweise und den Mehrwert der entwickelten Services. So gibt es Testprogramme, die unter anderem PDSE-Mitglieder anlegen, Datenblöcke schreiben und lesen sowie die Attribute auslesen und anzeigen. Diese Beispiele fungieren gleichzeitig als Tutorial für Entwickler, die in die Thematik einsteigen möchten und bieten eine wichtige Dokumentationsgrundlage. Ein besonders praktischer Anwendungsfall ist das Problem der Quellcodedateienverwaltung in Zeiten von Versionskontrollsystemen wie Git.
Im z/OS-Bereich werden Quellcodes traditionell in PDSE-Mitgliedern gespeichert, was die Integration moderner Entwicklungsprozesse erschwert. Das Script-Tool „f2m“ (file to member) basiert auf den Metal I/O Services und erlaubt das effiziente Kopieren ganzer Verzeichnisse von Dateien in PDSEs. Dabei wird jeder Datei der korrekte CCSID-Tag mitgegeben, um eine konsistente Kodierung sicherzustellen – eine bislang unzureichend abgedeckte Funktionalität. Parallel dazu stellt „f2m“ sicher, dass PDSE-Datensätze pro Dataset nur einmal geöffnet werden, um alle Mitglieder hineinzuschreiben, was deutlich Zeit spart im Vergleich zu herkömmlichen Verfahren, die immer wieder öffnen und schließen. Gleichzeitig wird ein gemeinsamer Puffer für Ein- und Ausgabe genutzt, was die Übertragungsrate weiter optimiert.
Die Unterstützung gängiger Dateitypen und Dateinamensmuster macht die Integration in bestehende Workflows einfach und flexibel. Neben „f2m“ existieren weitere Beispiele wie „m2f“ für den umgekehrten Weg vom PDSE-Mitglied zu einer Datei oder „mlsx“, das erweiterte Listenfunktionen inklusive Attributanzeige bereitstellt. Diese Beispiele sollen die Nutzung der BPAM-Services illustrieren und Entwickler ermutigen, eigene Werkzeuge auf Basis dieses Metal I/O Stacks zu entwickeln. Der offene Charakter des Projekts bietet zusätzlichen Nutzen. Der Quellcode steht unter der Apache Version 2.
0 Lizenz, was freie Nutzung, Modifikation und Verbreitung erlaubt. So entsteht eine Basis für Community-Entwicklung und gemeinsames Lernen im Umfeld der z/OS I/O-Dienste. Angesichts der Komplexität und des geringen Bewusstseins für diese Low-Level-Methoden sind solche Initiativen essenziell, um Entwicklerproduktivität und Systemeffizienz zu steigern. Technisch gesehen beruht der Dienst auf der von IBM bereitgestellten Dokumentation zu z/OS I/O-Systemsteuerblöcken wie IHADCB (I/O Handler Access Descriptor Control Block), die ursprünglich sehr assemblerlastig ist und daher für High-Level-Sprachen schwer zugänglich war. Das Mapping zu C-Strukturen durch Tools wie den DSECT Konvertierer hilft dabei erheblich, die nötigen Kontrollinformationen übersichtlicher und wartbarer zu gestalten.
Des Weiteren wurde durch die Integration einer sogenannten 64-31-Bit-Thunking-Schicht (siehe call31a.s) die Interoperabilität zwischen 31-Bit-Assembler-Routinen und 64-Bit C-Anwendungen hergestellt, was für moderne Anwendungen unabdingbar ist. Interessant sind auch die Implikationen zukünftiger Entwicklungen: Die Möglichkeit, Zeitstempel, Benutzer-IDs und CCSID direkt auf Mitgliederebene zu verwalten, eröffnet vollkommen neue Potentiale für z/OS-Werkzeuge. Versionsmanagementtools könnten nahtlos in den Buildprozess eingebunden werden, Editoren könnten automatisch die richtige Kodierung erkennen und anwenden, und Vergleichsprogramme könnten präziser arbeiten. Zudem liefert diese Offenlegung eine wertvolle Lernumgebung, um die Meilensteine und Feinheiten des z/OS I/O-Subsystems zu verstehen.
Eine nicht zu unterschätzende Komponente des Projekts ist die aktive Community, die durch Fragen, Feedback und Unterstützung seitens Experten der IBM und unabhängiger Entwickler lebt. Diese Zusammenarbeit hat entscheidend dazu beigetragen, die Komplexität zu bewältigen und robuste Lösungen zu gestalten. Namen wie Tom Brennan, David Crayford, Peter Relson oder Wayne Rhoten stehen stellvertretend für das breite technische Know-how, das eingebracht wurde. Zusammenfassend lässt sich sagen, dass z/OS Metal I/O einen wichtigen Beitrag leistet, das volle Potenzial von z/OS-Datasets und insbesondere von PDSE-Mitgliedern nutzbar zu machen. Für Entwickler bedeutet das mehr Performance, flexiblere Steuerungsmöglichkeiten und die Chance, moderne Softwaremethoden effizient auf Mainframe-Systemen umzusetzen.
Wer sich mit z/OS beschäftigt, gewinnt durch die Beschäftigung mit Metal I/O wertvolle Einblicke und Werkzeuge, die den Umgang mit dem System deutlich erleichtern und professionalisieren. Ein Blick in die Zukunft zeigt, dass die kontinuierliche Arbeit an den Services, die Integration neuer Funktionen wie ISPF-Statistiken und die Erweiterung auf Plan PDS die Einsatzmöglichkeiten weiter vergrößern werden. Metal I/O steht exemplarisch für die Synthese von Tradition und Innovation auf dem Mainframe und zeigt, wie fundierte Systemkenntnisse mit modernen Entwicklungsansätzen zusammenfinden können, um Entwicklerleben besser zu machen und z/OS fit für kommende Herausforderungen zu halten.