|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 3911 (0xf47)
Types: TextFile
Names: »B«
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS
└─⟦91c658230⟧ »DATA«
└─⟦458657fb6⟧
└─⟦274c33adf⟧
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
└─⟦fc9b38f02⟧ »DATA«
└─⟦9b46a407a⟧
└─⟦274c33adf⟧
└─⟦this⟧
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;