Christoph Karl Walter Grein
Im Paradies bedient man sich mit unfehlbarer Sicherheit inzwischen natürlich ebenfalls der neuesten Technologie. Äonen lang haben sich die besten Köpfe der Himmlischen Heerscharen mit dem Design der Heavenware beschäftigt – und das ist dabei herausgekommen. Den Teil, der sich mit der Überwachung des menschlichen Teils der Bevölkerung befasst, wollen wir einmal genauer betrachten.
Sünden sammelt man nicht mehr in dicken Büchern, sondern mit modernster Datenverarbeitung.
generic type Listen_Index is range <>; type Listen_Element is private; package Liste is procedure Lies (Index : in Listen_Index; Element: out Listen_Element); procedure Schreib (Index : in Listen_Index; Element: in Listen_Element); end Liste; with Liste; package Sündenregister is Reif_fuer_die_Hölle: constant := _0; -- die himmlische Geduld ist unendlich type Nummer is range 1 .. Reif_fuer_die_Hölle; type Mensch is (Adam, Eva); type Eintrag (Wessen: Mensch := Mensch'First) is record Allgemeine_Sünde: Menschensünde; case Wessen is when Adam => Adams_Sünde: Männersünde; when Eva => Evas_Sünde : Frauensünde; end case; end record; package Register is new Liste (Listen_Index => Nummer, Listen_Element => Eintrag); end Sündenregister;
Auf diese Weise können die Himmlischen Heerscharen unter Oberaufsicht des Erzengels Gabriel alle Schritte der sündigen Menschheit leicht überwachen.
with Sündenregister; use Sündenregister; procedure Paradies is procedure Lies_Sünde (Welche: in Nummer; Sünde : out Eintrag) is begin Register.Lies (Welche, Sünde); end Lies_Sünde; Sünde: Eintrag; -- keine Einschränkung begin Lies_Sünde (1, Sünde); case Sünde.Wessen is when Adam => ... when Eva => ... end case; end Paradies;
Luzifer, der natürlich längst ein begehrliches Auge auf die junge hübsche Eva geworfen hat, lässt das nicht ruhen. Endlich findet er einen Ansatzpunkt für seine üblen Machenschaften. Er schafft es, die himmlischen Software-Ingenieure zu überzeugen, dass es doch viel bequemer sei, die Sünden nach Übeltätern sortiert zu bekommen. Eine gemischte Kommission aus SW-Engineering-Engelchen und -Teufelchen wird gebildet, die fleißig und gewissenhaft zu folgendem verbesserten Design kommt.
package Sündenregister is -- Wie zuvor, nur das Paket Register wird durch folgende -- Deklarationen ersetzt: subtype Adams_Eintrag is Eintrag (Adam); subtype Evas_Eintrag is Eintrag (Eva); package Adams_Sündenregister is new Liste (Listen_Index => Nummer, Listen_Element => Adams_Eintrag); package Evas_Sündenregister is new Liste (Listen_Index => Nummer, Listen_Element => Evas_Eintrag); end Sündenregister; with Sündenregister; use Sündenregister; procedure Paradies is procedure Lies_Sünde (Wessen: in Mensch; Welche: in Nummer; Sünde : out Eintrag) is begin case Wessen is when Adam => Adams_Sündenregister.Lies (Welche, Sünde); when Eva => Evas_Sündenregister .Lies (Welche, Sünde); end case; end Lies_Sünde; Sünde: Eintrag; -- keine Einschränkung -- Die einzige Einschränkung im Paradies: vom_Baume_der_Erkenntnis_gegessen: exception renames Constraint_Error; begin Lies_Sünde (Adam, 1, Sünde); Lies_Sünde (Eva , 1, Sünde); exception when vom_Baume_der_Erkenntnis_gegessen => Ab_in_die_Hölle; end Paradies;
Auf den Trick mit dem Ausnahmenbehandler ist Luzifer besonders stolz.
Denn schon gehört sie ihm, die Eva. Wieso?
Eine übersetzbare und ausführbare Version des Programms ist hier runterladbar.
© Copyright 1999 C.K.W. Grein |