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

⟦1c6d21a1c⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Initialize_Rcf, seg_0064ca

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 Debug_Tools;
with Directory_Tools;
with Error_Reporting;
with Io;
with Log;
with Error_Reporting;
with Profile;
with Program;
with Simple_Status;
with String_Utilities;
with System_Utilities;

procedure Initialize_Rcf (Target_File_Name : String :=
                             "!Machine.Rcf_Targets") is
    Target_File : Io.File_Type;
    Register_Context : constant String :=
       "!Targets.Implementation.Rcf_Customization";
    Job : Program.Job_Id;
    Condition : Program.Condition;
    Rcf_Name : constant String := "Rcf_Compiler";
    Delay_Count : Natural := 0;

    Rcf_Compiler_Failure : exception;

    use Directory_Tools;
begin
    Program.Create_Job
       ("""!Targets.Implementation.Rcf_User_Interface'Spec_View.Units"".Start_Rcf_Main",
        Job, Condition,
        Options => "output => !Machine.Error_Logs.Rcf_Compiler_Log");  
    if Program.Started_Successfully (Condition) then
        while String_Utilities.Locate
                 (Rcf_Name, System_Utilities.Job_Name (Job)) = 0 loop
            Delay_Count := Delay_Count + 1;
            if Delay_Count > 60 then
                raise Rcf_Compiler_Failure;
            end if;
            delay 2.0;
        end loop;
        Log.Put_Line ("Rcf Compiler Started", Profile.Positive_Msg);
    else
        raise Rcf_Compiler_Failure;
    end if;

    if Object.Is_Ok (The_Object => Naming.Resolution (Target_File_Name)) then
        Io.Open (File => Target_File,
                 Mode => Io.In_File,
                 Name => Target_File_Name);
        while not Io.End_Of_File (Target_File) loop
            declare
                Stripped_Target : constant String :=
                   String_Utilities.Strip (Io.Get_Line (Target_File));
            begin
                Program.Create_Job
                   (Program.Current
                       (Subsystem => Register_Context & "." & Stripped_Target,
                        Unit => Stripped_Target & ".Register",
                        Activity => "!Machine.Release.Current.Activity"),
                    Job, Condition,
                    Context => Register_Context);
                if Program.Started_Successfully (Condition) then
                    Program.Wait_For (Job);
                    Log.Put_Line ("Registered Rcf target " & Stripped_Target);
                else
                    Log.Put_Line ("Failed To Register", Profile.Error_Msg);
                    Error_Reporting.Report_Error
                       (Caller => "!Machine.Initialize_Rcf",
                        Reason => Error_Reporting.Create_Condition_Name
                                     ("Unable to register rcf target " &
                                      Stripped_Target, Error_Reporting.Warning),
                        Explanation => Simple_Status.Name (Condition));
                end if;
            end;
        end loop;
        Io.Close (Target_File);
    else
        Error_Reporting.Report_Error
           (Caller => "!Machine.Initialize_Rcf",
            Reason => Error_Reporting.Create_Condition_Name
                         ("No Rcf targets will be registered",
                          Error_Reporting.Warning),
            Explanation => "Bad target file name: " & Target_File_Name);
    end if;
exception
    when Rcf_Compiler_Failure =>
        Error_Reporting.Report_Error
           (Caller => "!Machine.Initialize_Rcf",
            Reason => Error_Reporting.Create_Condition_Name
                         ("Unable to start rcf", Error_Reporting.Problem),
            Explanation => Simple_Status.Name (Condition));
    when others =>
        Error_Reporting.Report_Error
           (Caller => "!Machine.Initialize_Rcf",
            Reason => Error_Reporting.Create_Condition_Name
                         ("Unhandled_Exception", Error_Reporting.Problem),
            Explanation => Debug_Tools.Get_Exception_Name (True, True));

end Initialize_Rcf;

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=22 rec1=00 rec2=01 rec3=004
        [0x01] rec0=18 rec1=00 rec2=02 rec3=036
        [0x02] rec0=12 rec1=00 rec2=03 rec3=03e
        [0x03] rec0=15 rec1=00 rec2=04 rec3=074
        [0x04] rec0=03 rec1=00 rec2=05 rec3=000
    tail 0x2150156b881bfa51d397a 0x42a00088462060003