Neujahrsnacht 1988
Für den Jahresabschluss der Bank wird immer ein erfahrener Programmierer zum Pikettdienst eingeteilt. Diesmal bin ich dran und erhalte ein Funktelefon, damit ich nicht zu hause auf einen eventuellen Alarm warten muss.
Ich darf mit meinem Bruder Silvester feiern, trinke aber aus Vorsicht keinen Alkohol. Um ca. 2:00 Uhr kommt der Anruf: das mehrere Jahre alte und bewährte Abschluss-Programm ist nach einer Stunde Laufzeit abgestürzt. Jeder Operator wusste damals, dass jetzt am Rechner ja kein Knopf gedrückt werden darf; unbedingt den Speicherausdruck und die entsprechende Programmliste bereithalten. Die IBM 360 steht einfach still und alle müssen warten, bis ein Programmierer da ist.
Nach 40 Min. bin ich im Computerraum. Jetzt heisst es Dump lesen, Fehler mit Hilfe der Programmliste suchen und Situation analysieren.
Zum Glück haben wir das gute Tool QPAC von der Firma OSYS. Damit können Ad-hoc-Berichte von Speicherdaten angezeigt werden und man kommt somit leichter zum Ziel.
Die Ursache ist ein zu kleines Totalfeld welches beim Editieren des Jahresumsatzes einen Überlauf. produzierte. Beim Erstellen des Programmes (ungefähr 6 Jahre vorher) wurde von der Geschäftsleitung die max. Zahl von 9’999’999.99, also ein gepacktes Feld mit 5 Bytes abgesegnet. Man glaubte diesen Jahresumsatz werde man nie erreichen. Bei diesem Jahresabchluss wurde die Grenze aber zum ersten Mal überschritten!
Nun kommt der anspruchsvolle Eingriff ins laufende Programm. Mittels den Knöpfen an der Konsole können Befehle in Maschinencode direkt in den Speicher eingegeben werden: für jedes Byte die richtige Adresse und die entsprechenden Bits an oder ab; pro Adresse 8 Bit und 1 Kontroll-Bit. Meistens sind jeweils mindestens 100 bis 200 Bytes zu korrigieren, also 900 bis 1800 Mal die 9 Bit-Schalter auf oder ab setzen; die Werte werden durch diese Manipulation direkt im Speicher überdeckt.
Und so funktionierte das „Hacken“ wie wir damals sagten (hier an einer IBM 1401 im Computer History Museum demonstriert)
Achtung: ja nicht vergessen alle die Korrekturen auf der Programmliste von Hand nachzutragen! Jetzt noch die Speicher-Adresse für die Fortsetzung des laufenden Programms eingeben und dann braucht es viel Mut die grüne RUN-Taste zu drücken.
Nach diesem heiklen Quick-and-Dirty-Hack von mindestens 90 Minuten arbeitet das alte Programm wieder munter weiter und zwei sehr erleichterte Operators stehen mit mir im Produktionsraum. Zur Sicherheit bleibe ich noch bis am Morgen da.
Am Vormittag feiert die versammelte Direktion das Erreichen der 10 Millionen-Grenze ohne jede Ahnung, wie viele Nerven im Computerraum strapaziert worden sind. Die Herren erfuhren nichts von meinem Hack.
Nachdem alle Jahresend-Listen ausgedruckt sind, kommt der zweite Teil des Einsatzes. Damit das Programm auch nächstes Jahr keinen Absturz produziert, muss die in der Nacht eingegebene Anpassung im Quellprogramm ebenfalls nachgetragen werden. Das ist aber nicht einfach in ein paar Minuten erledigt!
Im Laufe der Jahre haben sich in der Bank mehrere Tausend Programme angesammelt. Deshalb gibt es zur Sicherheit ein genaues Prozedere für den Umgang mit einem in der Produktion laufenden Programm.
In den 80er-Jahren wird der Quellcode (Assembler) nicht mehr mit Lochkarten eingegeben, sondern mit einem sehr dummen Terminal erfasst. Nach der Umwandlung werden Quellcode und das Programm in Maschinencode auf Magnetband geschrieben. Die Operators wissen genau auf welches Band welche Programme hingehören. Jedes Band mit Programmen wird kopiert und als Sicherheit in einen externen Bunker gebracht.
Muss nun ein Programm aus der Produktion durch irgendwelche Umstände geändert werden, wird der Quellcode beim Operating angefordert, die Programmliste ist im Büro der Programmierer abgelegt. Via Terminal werden die Anpassungen gemacht, dann mit den Testdaten durchgespielt bis alles richtig funktioniert. Erst jetzt darf das Programm wieder frei gegeben werden und das Operating sorgt für die richtige Sicherung und Aufbewahrung auf den Magnetbändern.
Diese Neujahrsnacht war eine meiner aufregendsten im ganzen Leben, denn die grosse Verantwortung für die richtigen Jahresabschluss-Zahlen einer Bank lastete allein auf meinen Schultern.
Wunderbar dass ich meine Aufgabe
so erfolgreich abgeschlossen habe.