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

⟦40abf246d⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Errors, seg_038c20

Derivation

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

E3 Source Code



with Bounded_String;
with Custom;
with Easy_X;
with Integer_Class;
with Message;
with Object;
with Parameters;
with Pen_Class;  
with Scanner;
with String_Class;

package body Errors is

    A_Pen : Object.Reference := Pen_Class.Get_For_Error;
    Opened_Window : Boolean := False;

    procedure Write_With_Pen (The_Pen : Object.Reference;
                              The_String : String;
                              X, Y : Integer) is
        Msg : Message.Selector;
        Arg : Parameters.List;
        Obj : Object.Reference;
        Ton_X : Scanner.Lexeme := Bounded_String.Value
                                     ("TON_X:", Custom.String_Max_Length);
        Ton_Y : Scanner.Lexeme := Bounded_String.Value
                                     ("TON_Y:", Custom.String_Max_Length);
        Fin : Scanner.Lexeme := Bounded_String.Value
                                   ("FIN", Custom.String_Max_Length);
        Ecris : Scanner.Lexeme := Bounded_String.Value
                                     ("ECRIS:", Custom.String_Max_Length);
    begin
        Message.Free (Msg);
        Parameters.Free (Arg);
        Obj := Integer_Class.Create (X);
        Message.Insert (Ton_Y, Msg);
        Parameters.Insert (Obj, Arg);
        Obj := Integer_Class.Create (Y);
        Message.Insert (Ton_X, Msg);
        Parameters.Insert (Obj, Arg);
        Pen_Class.Send (The_Pen, Msg, Arg, Obj);
        Obj := Pen_Class.Send (The_Pen, Fin);
        Message.Free (Msg);
        Parameters.Free (Arg);
        Obj := String_Class.Get_For_Error (The_String);
        Message.Insert (Ecris, Msg);
        Parameters.Insert (Obj, Arg);
        Pen_Class.Send (The_Pen, Msg, Arg, Obj);
    end Write_With_Pen;

    procedure Parse_Log (The_Error : String;
                         Terminal : String;
                         With_Line_Nb : Boolean := True) is
        Line_Number : Natural;
    begin
        Easy_X.Open (Terminal, " SOMETHING WRONG... ", 100, 300, 800, 50);
        loop
            case Easy_X.Next_Event is
                when Easy_X.Update =>  
                    if With_Line_Nb then
                        Line_Number := Scanner.Get_Line_Number;
                        Write_With_Pen
                           (A_Pen, "When parsing line " &
                                      Natural'Image (Line_Number) & " :",
                            20, 20);
                        Write_With_Pen (A_Pen, The_Error, 40, 30);
                    else
                        Write_With_Pen (A_Pen, The_Error, 20, 20);
                    end if;
                when Easy_X.Button_Down =>
                    exit;
                when Easy_X.Button_Up =>
                    null;
            end case;
        end loop;
        Opened_Window := True;
        raise Stop_Parsing;
    end Parse_Log;

    procedure Save_Interpret_Line (Line_Number : Natural) is
    begin  
        Interpreting_Line := Line_Number;
        if not Opened_Window then
            Opened_Window := True;
        end if;
    end Save_Interpret_Line;

    procedure Interpret_Log (The_Error : String;
                             Terminal : String;
                             With_Line_Nb : Boolean := True) is
    begin
        Easy_X.Close;
        Easy_X.Open (Terminal, " SOMETHING WRONG... ", 100, 300, 800, 50);
        loop
            case Easy_X.Next_Event is
                when Easy_X.Update =>
                    if With_Line_Nb then
                        Write_With_Pen
                           (A_Pen, "When interpreting line " &
                                      Natural'Image (Interpreting_Line) & " :",
                            20, 20);
                        Write_With_Pen (A_Pen, The_Error, 40, 30);
                    else
                        Write_With_Pen (A_Pen, The_Error, 20, 20);
                    end if;
                when Easy_X.Button_Down =>
                    exit;
                when Easy_X.Button_Up =>
                    null;
            end case;
        end loop;
        raise Stop_Interpreting;
    end Interpret_Log;

    procedure Run_Log (The_Error : String; Terminal : String) is
    begin
        if Opened_Window then
            Easy_X.Close;
        end if;
        Easy_X.Open (Terminal, " SEE YOU SOON... ", 200, 400, 700, 40);
        loop
            case Easy_X.Next_Event is
                when Easy_X.Update =>
                    Write_With_Pen (A_Pen, The_Error, 30, 30);
                when Easy_X.Button_Down =>
                    exit;
                when Easy_X.Button_Up =>
                    null;
            end case;
        end loop;
        Easy_X.Close;
    end Run_Log;

end Errors;

E3 Meta Data

    nblk1=7
    nid=3
    hdr6=c
        [0x00] rec0=1e rec1=00 rec2=01 rec3=032
        [0x01] rec0=1a rec1=00 rec2=07 rec3=014
        [0x02] rec0=18 rec1=00 rec2=06 rec3=074
        [0x03] rec0=02 rec1=00 rec2=02 rec3=01c
        [0x04] rec0=18 rec1=00 rec2=05 rec3=02c
        [0x05] rec0=1d rec1=00 rec2=04 rec3=001
        [0x06] rec0=25 rec1=7c rec2=00 rec3=01f
    tail 0x21531c85c84e8482fb09b 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 00 02 b7 00 15 20 20 20 20 20 20 20 20 20 20  ┆                ┆