DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦449acfb27⟧ Ada Source

    Length: 12288 (0x3000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Bug_Report, seg_03818b

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Class_Window;
with Easy_Y;
with Bounded_String;
with Message;
with Requester;
with Scanner;
with Start;

package body Bug_Report is

    procedure Open (X, Y : Object.Index; Screen : String) is
        use Object;
    begin
        Easy_Y.Put_Title (Window => Error_Window,
                          Title => Bounded_String.Value ("Erreur", 80));
        Easy_Y.Put_Left (Window => Error_Window, Left => X);
        Easy_Y.Put_Right (Window => Error_Window, Right => Y);
        Easy_Y.Put_Width (Window => Error_Window, Width => The_Width);
        Easy_Y.Put_Height (Window => Error_Window, Height => The_Height);
        Easy_Y.Open (Display => Screen, Window => Error_Window);

        Easy_Y.Put_Font (To => Easy_Y.Small_Font);
        Easy_Y.Put_Size (Window => Error_Window, Size => 1);

        Easy_Y.Update;
    end Open;

    procedure Close is
        Button : Message.Unary;
        Result : Object.Index;
    begin
        Message.Free (Button);
        Message.Put (This_Name => Bounded_String.Value ("Fin", 80),
                     Into => Button);
        Requester.Open
           (X => 500,
            Y => 250,
            Screen => Bounded_String.Image (Class_Window.Get_Terminal_Name),
            The_Message => Button,
            Str => Bounded_String.Value ("Cliquez pour finir", 80));
        Result := Requester.Choice (Button);
        Message.Free (Button);
        Requester.Close;

        Easy_Y.Close (Window => Error_Window);
    end Close;

    procedure Put (The_String : String) is
        use Object;
        Pos : Object.Index;
    begin
        Open (X => 100,
              Y => 100,
              Screen => Bounded_String.Image (Class_Window.Get_Terminal_Name));

        Easy_Y.Set_Display (Window => Error_Window);
        Pos := (The_Width - The_String'Length * 8) / 2;
        Easy_Y.Print (Pos, 50, Bounded_String.Value (The_String, 80));

        Close;   end Put;

    procedure Print (Message : String) is
    begin
        Put (Message);
    end Print;

    procedure Print (Message : String; Ligne : Object.Index) is
    begin
        Put (Message & " a la ligne" & Object.Index'Image (Ligne) & ".");
    end Print;

    procedure Print (Message : String;
                     Objet : Object.Tiny_String;
                     Ligne : Object.Index) is
    begin
        Put (Message & " `" & Bounded_String.Image (Objet) &
             "' de la ligne" & Object.Index'Image (Ligne) & ".");
    end Print;

    procedure Supervisor (The_File : String) is
    begin

        Start (File => The_File);

    exception
        when Constraint_Error =>
            Print ("Erreur imprevue : Constraint_Error a ete levee",
                   Scanner.Get_Line_Number);
        when Numeric_Error =>
            Print ("Erreur imprevue : Numeric_Error a ete levee",
                   Scanner.Get_Line_Number);
        when Program_Error =>
            Print ("Erreur imprevue : Program_Error a ete levee",
                   Scanner.Get_Line_Number);
        when Storage_Error =>
            Print ("Erreur imprevue : Storage_Error a ete levee",
                   Scanner.Get_Line_Number);
        when Tasking_Error =>
            Print ("Erreur imprevue : Tasking_Error a ete levee",
                   Scanner.Get_Line_Number);
        when Identifier_Is_Missing =>
            Print ("Erreur de syntaxe : ceci n'est pas un identifier =>",
                   Scanner.Get_Value, Scanner.Get_Line_Number);
        when Parenthesis_Is_Missing =>
            Print ("Erreur de syntaxe : il manque une parenthese fermante",
                   Scanner.Get_Line_Number);
        when Point_Is_Missing =>
            Print ("Erreur de syntaxe : il manque un point",
                   Scanner.Get_Line_Number);
        when Brace_Is_Missing =>
            Print ("Erreur de syntaxe : il manque une accolade fermante",
                   Scanner.Get_Line_Number);
        when Prendre_Is_Missing =>
            Print ("Erreur de syntaxe : le mot clef PRENDRE est attendu",
                   Scanner.Get_Line_Number);
        when Unexpected_Token =>
            Print
               ("Erreur de syntaxe : je ne comprend pas la chaine suivante =>",
                Scanner.Get_Value, Scanner.Get_Line_Number);
        when Boolean_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet booleen",
                   Scanner.Get_Line_Number);
        when Integer_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet entier",
                   Scanner.Get_Line_Number);
        when String_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet chaine",
                   Scanner.Get_Line_Number);
        when Block_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet bloc",
                   Scanner.Get_Line_Number);
        when Turtle_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet tortue",
                   Scanner.Get_Line_Number);
        when Pen_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet stylo",
                   Scanner.Get_Line_Number);
        when Window_Bad_Type =>
            Print ("Erreur d'execution : conflit de type avec un objet fenetre",
                   Scanner.Get_Line_Number);
        when Undefined_Identifier =>
            Print
               ("Erreur d'execution : une variable utilisee n'a pas ete definie",
                Scanner.Get_Line_Number);
        when Unknown_Unary_Message =>
            Print
               ("Erreur d'execution : un objet ne comprend pas un message unaire",
                Scanner.Get_Line_Number);
        when Unknown_Binary_Message =>
            Print
               ("Erreur d'execution : un objet ne comprend pas un message binaire",
                Scanner.Get_Line_Number);
        when Unknown_Keyword_Message =>
            Print
               ("Erreur d'execution : un objet ne comprend pas un message a selecteurs",
                Scanner.Get_Line_Number);
        when Mismatch_Parameters =>
            Print
               ("Erreur d'execution : les parametres passes a un bloc ne correspondent pas",
                Scanner.Get_Line_Number);
        when Full_Block_Table =>
            Print
               ("Erreur d'execution : je n'ai plus de place pour reserver des blocs",
                Scanner.Get_Line_Number);
        when Full_String_Table =>
            Print
               ("Erreur d'execution : je n'ai plus de place pour reserver des chaines",
                Scanner.Get_Line_Number);
        when Full_Turtle_Table =>
            Print
               ("Erreur d'execution : je n'ai plus de place pour reserver des tortues",
                Scanner.Get_Line_Number);
        when Full_Pen_Table =>
            Print
               ("Erreur d'execution : je n'ai plus de place pour reserver des stylos",
                Scanner.Get_Line_Number);
        when Full_Window_Table =>
            Print
               ("Erreur d'execution : je n'ai plus de place pour reserver des fenetres",
                Scanner.Get_Line_Number);
        when Divide_By_Zero =>
            Print ("Erreur d'execution : tentative de division par zero",
                   Scanner.Get_Line_Number);
        when others =>
            null;
    end Supervisor;

end Bug_Report;


E3 Meta Data

    nblk1=b
    nid=b
    hdr6=12
        [0x00] rec0=21 rec1=00 rec2=01 rec3=024
        [0x01] rec0=1d rec1=00 rec2=0a rec3=002
        [0x02] rec0=15 rec1=00 rec2=08 rec3=008
        [0x03] rec0=17 rec1=00 rec2=06 rec3=038
        [0x04] rec0=14 rec1=00 rec2=02 rec3=020
        [0x05] rec0=13 rec1=00 rec2=04 rec3=048
        [0x06] rec0=15 rec1=00 rec2=07 rec3=010
        [0x07] rec0=17 rec1=00 rec2=03 rec3=000
        [0x08] rec0=03 rec1=00 rec2=05 rec3=000
        [0x09] rec0=03 rec1=00 rec2=05 rec3=001
        [0x0a] rec0=f0 rec1=da rec2=00 rec3=000
    tail 0x21735ba4a84e67ca6b97a 0x42a00088462060003
Free Block Chain:
  0xb: 0000  00 09 02 7b 00 29 20 20 20 20 70 72 6f 63 65 64  ┆   { )    proced┆
  0x9: 0000  00 00 00 1c 80 12 5f 46 69 6c 65 20 3a 20 53 74  ┆      _File : St┆