300
LET RE HNUNG = 60 + 1 0*EINHEITEN /100
310
PRINT RE HNUNG
320
GOTO 100
5000
PRINT "TARIF NI HT GUELTIG"
5010
STOP
Na gut. Ich weiß, das Programm könnte straffer sein, und in Wirklichkeit würden
wir mehr Informationen brauchen, etwa Namen und Kontonummer des Kun
den, aber Sie wissen schon, was ich meine.
Wir testen also das Programm, es läuft richtig, und wir entfernen uns mit
den gemurmelten Worten, unsere bemerkenswerten Gaben seien eigentlich
vergeudet, wenn man uns mit derlei Krimskrams behellige.
Und das Programm läuft jahrelang wunderbar, bis es eines Tages eine
Rechnung über DM 0.00 druckt. Das fällt natürlich keinem Menschen auf, weil
es eine Rechnung unter Tausenden ist, die vermutlich ohnehin automatisch
kuvertiert wird. Der Empfänger ist verwirrt und amüsiert sich vermutlich über die
Rechnung, weil sie wieder einmal beweist, wie dumm
omputer in Wirklichkeit
sind, aber Anlaß für eine Reaktion scheint es nicht zu geben, also wirft er die
Rechnung in den Papierkorb. Leider haben wir gleichzeitig ein Programm
geschrieben, mit dem das Absendedatum jeder Rechnung festgehalten wird,
und wenn es nicht die Bestätigung erhält, daß die Rechnung innerhalb von 30
Tagen bezahlt worden ist, schickt es eine Mahnung. Diesmal ist der Empfänger
weniger belustigt als verärgert, wirft aber auch die Mahnung in seinen Papier
korb. Von da an geht's bergab. Das Programm, das die Zeitspanne zwischen
Rechnungszustellung und Geldeingang prüft, weist die technische Abteilung
an, dem Kunden den Strom abzuschalten, wenn er nach 60 Tagen nicht bezahlt
haben sollte.
Was ist passiert? Ganz einfach! Der Kunde ist Rentner und hat ein Lang
zeit-Urlaubsangebot für Senioren genutzt. Er war ein gutes Vierteljahr im Aus
land und hat ein ganzes Rechnungsquartal lang keinen Strom verbraucht.
Außerdem verbraucht er allgemein nur sehr wenig Strom und zahlt aus diesem
Grund nach Tarif B. Deshalb hat das System eine Zahlungsaufforderung für Null
Mark geschickt. Freilich wird dergleichen nicht oft vorkommen, weil nur sehr
wenige Menschen so lange von zu Hause fort sind und es auch kaum Leute
geben wird, die Tarif B wählen. Damit das Problem überhaupt auftreten kann,
muß der Kunde beiden Bedingungen entsprechen.
Wenn man den Fehler erst einmal entdeckt hat, ist er ganz leicht auszu
merzen:
145
IF RE HNUNG = 0THEN GOTO 100
womit die PRINT-Anweisung hier vermieden wird. Das erwähnte Problem soll
bei einem frühen
omputersystem aufgetreten sein; ich kann allerdings nicht
beurteilen, ob es nicht nur erfunden ist. Jedenfalls zeigt es, wie ich meine, auf
hübsche Weise, daß ein Fehler beinahe eine Ewigkeit lang unbemerkt bleiben
kann.
Die Moral davon: Wenn Sie Daten erfinden, um ein Programm zu testen, tun Sie
das nicht aufs Geratewohl. Wählen Sie Werte, die den Sprungwerten im Pro
89