Hacks

Kreativer Umgang mit Technik

Hacks im ursprünglichen Sinn...

Mainframes

Ich habe lange Zeit mit Mainframes gearbeitet. Eine interessante Umgebung.

Host-Spool: Drucken auf PC-Drucker

Mit dem Aufkommen von PCs wurden viele per Coax (SNA) angeschlossene Drucker nach und nach durch netzwerkfähige (Novell-IPX) Drucker ersetzt. Wie kann man nun dafür sorgen, dass ein Drucker über beide Netzwerke ansprechbar ist?

Wie immer gab es mehrere Möglichkeiten:

  • Anschluss des Druckers sowohl an die Coax-Box (SNA) als an einen Netport, da die Drucker zwei Eingangsports haben. Klingt sehr erfolgversprechend, war es aber nicht. Denn die Coax-Box lieferte eine andere Umlaut-Kodierung als der Print-Server am anderen Anschluss. Und die Default-Kodierung gilt für beide Anschlüsse.

  • Anschluss des Druckers an einen Netport und Implementation eines SNA-nach-IPX Print-Gateways. Dieses basierte auf der verwendeten 3270-Emulation, am Ende wurden auf einem Server-PC neun Print-Queues umgesetzt. Dieser Rechner lief über eine Zeit von mindestens fünf Jahren ohne größere Sorgen. Dieser Rechner wurde Anfang 2000 zusammen mit dem Mainframe abgebaut.

Automatisches Schließen von CICS-Dateien für Batch-Jobs

Auf dem Mainframe konnte eine VSAM-Datei entweder im Zugriff durch einen Batch-Job oder durch den Transaktionsmonitor CICS sein. Mit Hilfe der CICS-Transaktion CEMT können Dateien dynamisch geschlossen und geöffnet werden. Für viele Batch-Jobs war dokumentiert, dass vor dem Start eine bestimmte Datei geschlossen werden muss. Manuelle Eingriffe sind recht fehleranfällig, so dass wir zunächst in jeden Job eine Prüfung eingebaut haben, ob die Datei wirklich geschlossen ist.

Ziel sollte es jedoch sein, diese manuelle Tätigkeit vollständig zu automatisieren. Das gelang nur durch den Einsatz einer ganzen Reihe von Techniken:

Aus einem VSE-Batch-Job kann man einen CP-Befehl absetzen. Der betreffende CP-Befehl, den wir verwendet haben, sendet eine Nachricht an eine VM-Service-Maschine.

Die VM-Service-Maschine empfängt die Nachricht, erkennt, in welchem CICS welche Datei geöffnet oder geschlossen werden soll und ruft das passende Skript auf. Leider sind VM-Guests in der Zeit Single-Task-Systeme gewesen, so dass die Nachrichten und deren Abarbeitung serialisiert wurden und damit z.T. recht lange benötigten.

Das Skript verwendet eine Funktion des Konsole-Tools (MLOG), mit dem von außen Befehle eingegeben werden können. Zum Schließen oder Öffnen einer Datei sind drei Befehle notwendig:

  1. MSG Partition: Aufwecken des betreffendes CICS.

  2. Partition CEMT S DA(Datei CLOSE: Schließen der Datei

  3. Partition: Beenden der Sequenz

Nachteil der ganzen Aktion: Man muss Wartezeiten einstreuen und kann sich nicht sicher sein, dass die Befehle wirklich ausgeführt wurden. Auf der anderen Seite hat es in der Regel recht gut funktioniert. Und das, ohne auf ein teures und komplexes externes Scheduling-System zurückgreifen zu müssen.

Reparatur einer defekten Kostenstellenhierarchie

Im SAP R/2 waren die Daten in VSAM-Dateien gespeichert. Der schreibende Zugriff darauf war nur mittels /370-Assembler und den SAP-Methoden möglich. Nun ergab es sich, dass die Baumstruktur, die zwischen den Kostenstellen aufgebaut wurde leider nicht mehr korrekt war. Das hat dann Auswirkungen auf die Auswertungen in der Kostenrechnung gehabt.

Nun war guter Rat teuer. Denn alle offensichtlichen Möglichkeiten waren mehr oder weniger schwierig oder teuer:

  • Die SAP-Basis könnte kein /370-Assembler (obwohl wir die SAP-Modifikationen von Release zu Release portiert haben). Damit hatten wir keine einfache Möglichkeit das notwendige Batch-Programm zu schreiben. Und ein Versuch scheiterte kläglich...

  • Der Einkauf eines externen SAP-Progammieres scheiterte an den Kosten (so wichtig war's dann doch nicht).

  • Zugriffe aus ABAP oder COBOL-Programmen gingen nur im Lesen.

Die Lösung verwendete dann schließlich die SAP-Umsetzprogramme, die beim SAP Releasewechsel verwendet wurden. Im einfachsten Fall wird die Datenstruktur und der Inhalt der Datenbank entladen. Das Ladeprogramm generiert aus der alten und der neuen Datenbank-Struktur Konvertierungsroutingen und lädt die Daten satzweise nach der Konvertierung in die VSAM-Datei zurück.

Für einfache Konvertierungen ist keine weitere Aktion notwendig. Mittelschwere Probleme lassen sich über Pseudo-Code als Vorlaufkarten zum Ladeprogramm kodieren. Das ist das, was wir hier getan haben. Für schwere Probleme konnte man komplexe Assembler-Routinen implementieren. Das war hier glücklicherweise nicht notwendig.

Linux Hacks

Bei der Migration eines SAP R/3 Systems von Windows NT(Urgs) nach AIX verloren wir den Zugriff auf viele Netzwerk-Drucker, die mit alten Netports ausgestattet waren, welche nur IPX sprachen. Wie man Anwender so kennt - "Es druckt nicht" ist ein ziemlich lästiger Fehler.

Verschiedene Möglichkeiten standen zur Verfügung:

  • Den AIX-Systemen das Protokoll IPX beibringen, die Drucker passend konfigurieren und hoffen, dass es stabil läuft. Hierfür würde zusätzliche kommerzielle Software benötigt, die recht selten eingesetzt wurde - das klang recht instabil. Spätere Versuche haben uns darin bestätigt, dass es eine schlechte Idee gewesen wäre.

  • Im Rahmen der Y2K-Problematik wurden zu einem späteren Zeitpunkt alle Netports durch aktuelle (mit TCP/IP) ersetzt. Zum Migrationszeitpunkt war ein Austausch oder Upgrade nicht geplant.

  • Für die NetWare-Server gab es ein Zusatzprodukt, dass diesen TCP/IP beibrachte, zusammen mit Applikationen zum Drucken (Yepp!) und als NFS-Client und -Server. Die Beschaffung der Software und die Installation hätten die Migration verzögert. Und am Ende verlangte dieses Produkt, dass diverse Daten in der Bindery und nicht im NDS gepflegt werden mussten. Das war etwas, was die Novell-Admins nicht machen wollten.

  • Installation eines Print-Gateways, das Druckjobs via LPR/LPD annimmt und auf der anderen Seite als Netware-Printjob wieder ausgibt. Und das alles mit Token Ring.

Unsere Lösung war die Installation von Linux auf einem Rechner mit 8MB RAM, 80MB Platte. Dieser Rechner hat seinen Dienst ohne Probleme von 1997 bis ins Jahr 2000 hinein getan. Der eigentliche "Hack" ist der Print-Filter, der den Druckjob ins NetWare-Netz einspeist. Ein Einzeiler!

Live Hack

Auf einem Linuxtag in Kassel brachte einer der Referenten (Sebi) seine Präsentation auf einer CD im OpenOffice-Format mit und benötigte nun einen Rechner für seinen Vortrag. An sich kein Problem, sollte man meinen. Es war es dann doch:

Wir hatten einen Laptop mit OpenOffice, der jedoch nicht in der Lage war den Beamer anzusprechen.

Ein weiterer Laptop konnte zwar den Beamer ansprechen, jedoch war aus Platzgründen kein OpenOffice installiert.

Also: diese beiden Rechner vernetzen und per DISPLAY-Umleitung die Anzeige auf den Beamer werfen. Das ganze funktionierte nicht per Ethernet, sondern per WLAN. Innerhalb von fünf Minuten hatten wir zwei WLAN-Karten installiert und eingerichtet, ssh installiert und eine Session mit DISPLAY-Umleitung. Und das alles während die ersten Zuhörer schon im Saal waren.