DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦fff63578f⟧ TextFile

    Length: 4702 (0x125e)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 

TextFile

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, " Y'A UN PROBLEME... ", 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, "En analysant la ligne numero " &
                                      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, " Y'A UN PROBLEME... ", 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, "En interpretant la ligne numero" &
                                      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, " A BIENTOT ... ", 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;