|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 44032 (0xac00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package body Subsystem_Audit, seg_004491
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Directory_Miscellaneous;
with Common;
with Analyze_Views;
with Profile;
with Create_Null_Document;
with Simple_Status;
with Log;
with Errors;
with Sequential_Reference;
with Bounded_String;
with Unbounded_String;
with String_Utilities;
with Table_Formatter;
with String_Table;
with Cmvc_Db_Utilities;
with Directory_Tools;
with View_Naming;
with Directory_Renames;
use Directory_Renames;
package body Subsystem_Audit is
package Unbounded is new Unbounded_String (80);
Spec_Unit_Table : String_Table.Table := String_Table.New_Table (1000);
subtype Variable_String is Bounded_String.Variable_String (256);
function Hash (Text : Variable_String) return Integer;
package Name_Reference is
new Sequential_Reference (Variable_String, Hash, Bounded_String.Image);
type Unit_Information is
record
Handle : Object.Handle := Object.Nil;
Parent_Directory : Object.Handle := Object.Nil;
In_Units_Directory : Boolean := False;
Is_Used : Boolean := False;
Is_Installed : Boolean := False;
Is_Coded : Boolean := False;
Is_Spec : Boolean := False;
Joined_Views : Unbounded.Variable_String;
Cmvc_Stat : Cmvc_Db_Utilities.Cmvc_Status;
Acl : Variable_String;
end record;
type Spec_Load_Pair_Information is
record
Load_View_Unit : Unit_Information;
Spec_View_Unit : Unit_Information;
Has_Cooresponding_Spec_Unit : Boolean := False;
Is_Compatible : Boolean := False;
Spec_Joined_With_Load_Unit : Boolean := False;
end record;
function Hash (Text : Variable_String) return Integer is
begin
return String_Utilities.Hash_String (Bounded_String.Image (Text));
end Hash;
function Analyze (Unit : Object.Handle;
Is_Load_View_Unit : Boolean;
Db : Cmvc_Db_Utilities.View_Db) return Unit_Information is
Info : Unit_Information;
begin
if not Object.Is_Bad (Unit) then
Info.Handle := Unit;
Info.Parent_Directory := Cmvc_Db_Utilities.Parent_Directory (Unit);
Info.In_Units_Directory :=
Cmvc_Db_Utilities.In_Units_Directory (Unit);
Info.Is_Used := Cmvc_Db_Utilities.Is_Used (Unit);
Info.Cmvc_Stat := Cmvc_Db_Utilities.Get_Cmvc_Status (Db, Unit);
Info.Is_Installed := Cmvc_Db_Utilities.Is_Installed (Unit);
Info.Is_Coded := Cmvc_Db_Utilities.Is_Coded (Unit);
Info.Is_Spec := Ada_Object.Is_Visible_Part (Unit);
if Info.Cmvc_Stat.Controlled then
Unbounded.Copy (Info.Joined_Views,
Cmvc_Db_Utilities.Joined_Views
(Unit, not (Is_Load_View_Unit), True, Db));
else
Unbounded.Copy (Info.Joined_Views, "");
end if;
Bounded_String.Copy (Info.Acl, Cmvc_Db_Utilities.Get_Acl (Unit));
end if;
return Info;
end Analyze;
function Analyze (Unit : Object.Handle;
Db : Cmvc_Db_Utilities.View_Db;
Is_Load_View_Unit : Boolean)
return Spec_Load_Pair_Information is
Info : Spec_Load_Pair_Information;
begin
if Is_Load_View_Unit then
Info.Load_View_Unit := Analyze (Unit, Is_Load_View_Unit, Db);
Info.Spec_View_Unit :=
Analyze (Cmvc_Db_Utilities.Corresponding_Unit (Unit, Db),
Is_Load_View_Unit, Db);
Info.Has_Cooresponding_Spec_Unit :=
not (Object.Is_Nil (Info.Spec_View_Unit.Handle));
Info.Is_Compatible := Cmvc_Db_Utilities.Compatible
(Info.Load_View_Unit.Handle,
Info.Spec_View_Unit.Handle);
Info.Spec_Joined_With_Load_Unit :=
Cmvc_Db_Utilities.Joined (Info.Load_View_Unit.Handle,
Info.Spec_View_Unit.Handle, Db);
else
Info.Spec_View_Unit := Analyze (Unit, Is_Load_View_Unit, Db);
end if;
return Info;
end Analyze;
function Get_Unit_Name
(Unit : Object.Handle; Is_Spec : Boolean) return String is
Simple : constant String := Naming.Simple_Name (Unit);
begin
-- if Is_Spec then
-- return Simple & "'SPEC";
-- else
-- return Simple & "'BODY";
-- end if;
return Simple;
end Get_Unit_Name;
function View_Names (Spec_View, Load_View : Object.Handle) return String is
begin
if Object.Is_Nil (Spec_View) then
return Naming.Unique_Full_Name (Load_View);
else
return "[" & Naming.Unique_Full_Name (Spec_View) & ";" &
Naming.Unique_Full_Name (Load_View) & "]";
end if;
end View_Names;
generic
with function Include
(Given_Info : Spec_Load_Pair_Information;
Check_Spec_Unit : Boolean := True;
Check_Load_Unit : Boolean := True) return Boolean;
procedure Make_Report (For_Activity : String := "<SELECTION>";
To_Doc : in out Abstract_Document.Handle;
Response : String := "<PROFILE>");
procedure Make_Report (For_Activity : String := "<SELECTION>";
To_Doc : in out Abstract_Document.Handle;
Response : String := "<PROFILE>") is
Iter : View_Naming.Subsystem_Iterator;
Spec_View : Object.Handle;
Load_View : Object.Handle;
Spec_View_Units : Object.Iterator;
Load_View_Units : Object.Iterator;
Db : Cmvc_Db_Utilities.View_Db;
Acl_List : Name_Reference.Map;
begin
View_Naming.Initialize (For_Activity, Iter);
Name_Reference.Initialize (Acl_List);
while not View_Naming.Done (Iter) loop
Spec_View := View_Naming.Spec_View_Entry (Iter);
Spec_View_Units :=
Naming.Resolution
(Naming.Unique_Full_Name (Spec_View) & ".?'c(ada)");
Load_View := View_Naming.Load_View_Entry (Iter);
Load_View_Units :=
Naming.Resolution
(Naming.Unique_Full_Name (Load_View) & ".?'c(ada)");
Analyze_Views.Add (View_Names (Spec_View, Load_View),
False, To_Doc, Response);
Cmvc_Db_Utilities.Open (Spec_View, Load_View, Db);
declare
package Table is new Table_Formatter (12);
Current_Unit : Object.Handle;
Current_Info : Spec_Load_Pair_Information;
Found_Other_Spec : Boolean := False;
procedure Put (S : String;
Explanation : String := "";
Linkage : Object.Handle := Object.Nil) is
begin
Table.Item (S,
Object_Linkage => Linkage,
Explanation => Explanation);
end Put;
procedure Put (B : Boolean;
Dont_Care : Boolean := False;
Explanation : String) is
begin
if Dont_Care then
Table.Item (" ", Explanation => "Not Applicable");
elsif B then
Table.Item (" +",
Explanation => "Unit is " & Explanation);
else
Table.Item (" -",
Explanation =>
"Unit is not " & Explanation);
end if;
end Put;
procedure Put_Exported (Is_Exported : Boolean;
Is_Spec : Boolean := False) is
begin
if Is_Exported then
Table.Item (" E", Explanation => "Unit is Exported");
else
if Is_Spec then
Table.Item
(" S",
Explanation => "Spec unit is not Exported");
else
Table.Item
(" B",
Explanation =>
"Unit is a body; bodies cannot be exported");
end if;
end if;
end Put_Exported;
procedure Put (B1, B2 : Boolean;
Dont_Care_1, Dont_Care_2 : Boolean := False;
Explanation : String) is
begin
if Dont_Care_1 then
if Dont_Care_2 then
Table.Item
(" / ",
Explanation => Explanation & " does not apply");
elsif B2 then
Table.Item (" /+",
Explanation =>
"Load view unit is " & Explanation);
else
Table.Item
(" /-",
Explanation =>
"Load view unit is not " & Explanation);
end if;
elsif B1 then
if Dont_Care_2 then
Table.Item ("+/ ",
Explanation =>
"Spec view unit is " & Explanation);
elsif B2 then
Table.Item
("+/+",
Explanation => "Spec and load view units are " &
Explanation);
else
Table.Item ("+/-",
Explanation =>
"Spec view unit is " & Explanation);
end if;
else
if Dont_Care_2 then
Table.Item
("-/ ",
Explanation =>
"Spec view unit is not " & Explanation);
elsif B2 then
Table.Item ("-/+",
Explanation =>
"Load view unit is " & Explanation);
else
Table.Item ("-/-",
Explanation =>
"Spec and load view units are not " &
Explanation);
end if;
end if;
end Put;
procedure Add_Separator (Title : String) is
Line : constant String := "***";
begin
Put (Line & " " & Title);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
Put (Line);
end Add_Separator;
procedure Add_Lv_Unit_Line (Unit_Info :
Spec_Load_Pair_Information) is
Load_Unit_Info : Unit_Information
renames Unit_Info.Load_View_Unit;
Spec_Unit_Info : Unit_Information
renames Unit_Info.Spec_View_Unit;
begin
Put (Get_Unit_Name (Load_Unit_Info.Handle,
Load_Unit_Info.Is_Spec),
"Name of the load view unit",
Directory_Miscellaneous.Copy (Load_Unit_Info.Handle));
if Load_Unit_Info.In_Units_Directory then
Put ("+" & Naming.Simple_Name
(Load_Unit_Info.Parent_Directory),
"Name of the parent directory",
Directory_Miscellaneous.Copy
(Load_Unit_Info.Parent_Directory));
else
Put ("-" & Naming.Simple_Name
(Load_Unit_Info.Parent_Directory),
"Name of the parent directory",
Directory_Miscellaneous.Copy
(Load_Unit_Info.Parent_Directory));
end if;
Put_Exported (Unit_Info.Has_Cooresponding_Spec_Unit,
Load_Unit_Info.Is_Spec);
if not Unit_Info.Has_Cooresponding_Spec_Unit then
Put (Load_Unit_Info.Is_Used,
Dont_Care => not (Load_Unit_Info.Is_Spec),
Explanation => "Used");
Put (Load_Unit_Info.Cmvc_Stat.Controlled,
Dont_Care => False,
Explanation => "Controlled");
Put (not (Load_Unit_Info.Cmvc_Stat.Checked_Out),
Dont_Care => not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation => "Checked In");
Put (not (Load_Unit_Info.Cmvc_Stat.Out_Of_Date),
Dont_Care => not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation => "Latest version; Up to date");
Put (Load_Unit_Info.Is_Installed,
Dont_Care => False,
Explanation => "Installed");
Put (Load_Unit_Info.Is_Coded,
Dont_Care => False,
Explanation => "Coded");
Put ("");
declare
Joined : constant String :=
Unbounded.Image (Load_Unit_Info.Joined_Views);
begin
if Joined = "" then
Put (False,
Dont_Care => not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation => "joined");
else
Put (True,
Dont_Care => not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation => "joined to " & Joined);
end if;
end;
Put ("(" &
String_Utilities.Strip
(Integer'Image
(Name_Reference.Index
(Load_Unit_Info.Acl, Acl_List))) & ")",
Explanation =>
Bounded_String.Image (Load_Unit_Info.Acl));
else
Put (Load_Unit_Info.Is_Used, Explanation => "Used");
Put (Spec_Unit_Info.Cmvc_Stat.Controlled,
Load_Unit_Info.Cmvc_Stat.Controlled,
False, False,
Explanation => "Controlled");
Put (not (Spec_Unit_Info.Cmvc_Stat.Checked_Out),
not (Load_Unit_Info.Cmvc_Stat.Checked_Out),
not (Spec_Unit_Info.Cmvc_Stat.Controlled),
not (Load_Unit_Info.Cmvc_Stat.Controlled),
Explanation => "Checked In");
Put (not (Spec_Unit_Info.Cmvc_Stat.Out_Of_Date),
not (Load_Unit_Info.Cmvc_Stat.Out_Of_Date),
not (Spec_Unit_Info.Cmvc_Stat.Controlled),
not (Load_Unit_Info.Cmvc_Stat.Controlled),
Explanation => "Latest version; up to date");
Put (Spec_Unit_Info.Is_Installed,
Load_Unit_Info.Is_Installed, False, False,
Explanation => "Installed");
Put (Spec_Unit_Info.Is_Coded,
Load_Unit_Info.Is_Coded, False, False,
Explanation => "Coded");
Put (Unit_Info.Is_Compatible,
Explanation => "Compatible");
declare
Load_Joined : constant String :=
Unbounded.Image (Load_Unit_Info.Joined_Views);
Spec_Joined : constant String :=
Unbounded.Image (Spec_Unit_Info.Joined_Views);
begin
if Load_Joined = "" then
if Spec_Joined = "" then
Put (False, False,
not (Spec_Unit_Info.
Cmvc_Stat.Controlled),
not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation => "joined");
else
Put (True, False,
not (Spec_Unit_Info.
Cmvc_Stat.Controlled),
not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation =>
"joined to " & Spec_Joined);
end if;
else
if Spec_Joined = "" then
Put (False, True,
not (Spec_Unit_Info.
Cmvc_Stat.Controlled),
not (Load_Unit_Info.
Cmvc_Stat.Controlled),
Explanation =>
"joined to " & Load_Joined);
else
-- both are controlled so dont pass
-- in don't cares
Put (True, True, False, False,
Explanation =>
"joined to " & Spec_Joined &
"joined to " & Load_Joined);
end if;
end if;
end;
Put ("(" &
String_Utilities.Strip
(Integer'Image
(Name_Reference.Index
(Load_Unit_Info.Acl, Acl_List))) & ")",
Explanation =>
Bounded_String.Image (Load_Unit_Info.Acl));
end if;
end Add_Lv_Unit_Line;
procedure Add_Sv_Unit_Line (Unit_Info :
Spec_Load_Pair_Information) is
Spec_Unit_Info : Unit_Information
renames Unit_Info.Spec_View_Unit;
begin
Put (Naming.Simple_Name (Spec_Unit_Info.Handle),
"Name of the unit",
Directory_Miscellaneous.Copy (Spec_Unit_Info.Handle));
if Spec_Unit_Info.In_Units_Directory then
Put ("+" & Naming.Simple_Name
(Spec_Unit_Info.Parent_Directory),
"Name of the parent directory",
Directory_Miscellaneous.Copy
(Spec_Unit_Info.Parent_Directory));
else
Put ("-" & Naming.Simple_Name
(Spec_Unit_Info.Parent_Directory),
"Name of the parent directory",
Directory_Miscellaneous.Copy
(Spec_Unit_Info.Parent_Directory));
end if;
Put (" E");
Put (Spec_Unit_Info.Is_Used, Explanation => "Used");
Put (Spec_Unit_Info.Cmvc_Stat.Controlled,
Explanation => "Controlled");
Put (not (Spec_Unit_Info.Cmvc_Stat.Checked_Out),
Dont_Care => not (Spec_Unit_Info.Cmvc_Stat.Controlled),
Explanation => "Checked In");
Put (not (Spec_Unit_Info.Cmvc_Stat.Out_Of_Date),
Dont_Care => not (Spec_Unit_Info.Cmvc_Stat.Controlled),
Explanation => "Latest version; up to date");
Put (Spec_Unit_Info.Is_Installed,
Explanation => "Installed");
Put (Spec_Unit_Info.Is_Coded, Explanation => "Coded");
Put ("");
declare
Joined : constant String :=
Unbounded.Image (Spec_Unit_Info.Joined_Views);
begin
if Joined = "" then
Put (False,
Dont_Care =>
not (Spec_Unit_Info.Cmvc_Stat.Controlled),
Explanation => "joined");
else
Put (True,
Dont_Care =>
not (Spec_Unit_Info.Cmvc_Stat.Controlled),
Explanation => "joined to " & Joined);
end if;
end;
Put ("(" &
String_Utilities.Strip
(Integer'Image
(Name_Reference.Index
(Spec_Unit_Info.Acl, Acl_List))) & ")",
Explanation =>
Bounded_String.Image (Spec_Unit_Info.Acl));
end Add_Sv_Unit_Line;
begin
Table.Header ("Unit");
Table.Header ("Dir");
Table.Header ("Exp");
Table.Header ("Usd");
Table.Header ("CTR");
Table.Header ("CIn");
Table.Header ("Lat");
Table.Header ("Ins");
Table.Header ("Cod");
Table.Header ("Cmp");
Table.Header ("Jnd");
Table.Header ("ACL");
while not Object.Done (Load_View_Units) loop
Current_Info := Analyze (Object.Value (Load_View_Units), Db,
Is_Load_View_Unit => True);
if Include (Current_Info) then
Name_Reference.Add
(Elem => Current_Info.Load_View_Unit.Acl,
To => Acl_List);
Add_Lv_Unit_Line (Current_Info);
end if;
Object.Next (Load_View_Units);
end loop;
Table.Sort ((2, 1));
if not Object.Is_Bad (Spec_View) or else
Object.Is_Nil (Spec_View) then
while not Object.Done (Spec_View_Units) loop
Current_Unit := Object.Value (Spec_View_Units);
if String_Table.Equal
(String_Table.Find
(Naming.Unique_Full_Name (Current_Unit),
Spec_Unit_Table), String_Table.Nil) then
if Found_Other_Spec then
null;
else
Add_Separator ("SV UNITS:");
Found_Other_Spec := True;
end if;
Current_Info := Analyze
(Current_Unit, Db,
Is_Load_View_Unit => False);
if Include (Current_Info,
Check_Load_Unit => False) then
Name_Reference.Add
(Elem => Current_Info.Spec_View_Unit.Acl,
To => Acl_List);
Add_Sv_Unit_Line (Current_Info);
end if;
end if;
Object.Next (Spec_View_Units);
end loop;
end if;
Table.Display (In_Document => To_Doc,
Table_Title => "Subsystem Audit");
end;
Cmvc_Db_Utilities.Close (Db);
View_Naming.Next (Iter);
end loop;
end Make_Report;
function Include_Everything
(Info : Spec_Load_Pair_Information;
Check_Spec_Unit : Boolean := True;
Check_Load_Unit : Boolean := True) return Boolean is
begin
return True;
end Include_Everything;
procedure Full_Report is new Make_Report (Include_Everything);
procedure Add_Report (For_Activity : String := "<SELECTION>";
To_Document : in out Abstract_Document.Handle;
Response : String := "<PROFILE>") is
begin
Full_Report (For_Activity, To_Document, Response);
end Add_Report;
procedure Report (For_Activity : String := "<SELECTION>";
To_Preview_Object : String := "subsystem_audit";
Response : String := "<PROFILE>") is
Status : Errors.Condition;
Doc : Abstract_Document.Handle;
begin
Create_Null_Document (Named => To_Preview_Object,
Error_Info => Status,
Document_Handle => Doc);
case Errors.Severity (Status) is
when Simple_Status.Problem | Simple_Status.Fatal =>
Log.Put_Line ("Problem creating object " & To_Preview_Object &
". " & Errors.Info (Status), Profile.Error_Msg);
when others =>
Add_Report (For_Activity, Doc, Response);
Abstract_Document.Close (Doc);
Common.Definition (To_Preview_Object);
end case;
end Report;
procedure Report_Problems_Only
(For_Activity : String := "<SELECTION>";
To_Preview_Object : String := "subsystem_audit";
Units_Not_Coded : Boolean := False;
Units_Not_Installed : Boolean := True;
Units_Not_Controlled : Boolean := True;
Units_Out_Of_Date : Boolean := True;
Units_Checked_Out : Boolean := True;
Spec_Not_In_Spec_View : Boolean := True;
Units_Not_Compatible : Boolean := True;
Units_Not_In_Units_Directory : Boolean := True;
Response : String := "<PROFILE>") is
Status : Errors.Condition;
Doc : Abstract_Document.Handle;
begin
Create_Null_Document (Named => To_Preview_Object,
Error_Info => Status,
Document_Handle => Doc);
case Errors.Severity (Status) is
when Simple_Status.Problem | Simple_Status.Fatal =>
Log.Put_Line ("Problem creating object " & To_Preview_Object &
". " & Errors.Info (Status), Profile.Error_Msg);
when others =>
Add_Problem_Report (For_Activity,
Doc,
Units_Not_Coded,
Units_Not_Installed,
Units_Not_Controlled,
Units_Out_Of_Date,
Units_Checked_Out,
Spec_Not_In_Spec_View,
Units_Not_Compatible,
Units_Not_In_Units_Directory,
Response);
Abstract_Document.Close (Doc);
Common.Definition (To_Preview_Object);
end case;
end Report_Problems_Only;
procedure Add_Problem_Report
(For_Activity : String := "<SELECTION>";
To_Document : in out Abstract_Document.Handle;
Units_Not_Coded : Boolean := False;
Units_Not_Installed : Boolean := True;
Units_Not_Controlled : Boolean := True;
Units_Out_Of_Date : Boolean := True;
Units_Checked_Out : Boolean := True;
Spec_Not_In_Spec_View : Boolean := True;
Units_Not_Compatible : Boolean := True;
Units_Not_In_Units_Directory : Boolean := True;
Response : String := "<PROFILE>") is
function Include_Problems_Only
(Info : Spec_Load_Pair_Information;
Check_Spec_Unit : Boolean := True;
Check_Load_Unit : Boolean := True) return Boolean is
Load_Unit_Info : Unit_Information renames Info.Load_View_Unit;
Spec_Unit_Info : Unit_Information renames Info.Spec_View_Unit;
function Test_For_False_Unit_Values
(First_Test : Boolean;
Test_Unit1, Unit1_Value : Boolean;
Test_Unit2, Unit2_Value : Boolean) return Boolean is
begin
if First_Test then
if Test_Unit1 and then not Unit1_Value then
return True;
end if;
if Test_Unit2 and then not Unit2_Value then
return True;
end if;
return False;
else
return False;
end if;
end Test_For_False_Unit_Values;
begin
if Test_For_False_Unit_Values
(Units_Not_Installed,
Check_Load_Unit,
Load_Unit_Info.Is_Installed,
Check_Spec_Unit and then Info.Has_Cooresponding_Spec_Unit,
Spec_Unit_Info.Is_Installed) then
return True;
end if;
if Test_For_False_Unit_Values
(Units_Not_Coded,
Check_Load_Unit,
Load_Unit_Info.Is_Coded,
Check_Spec_Unit and then Info.Has_Cooresponding_Spec_Unit,
Spec_Unit_Info.Is_Coded) then
return True;
end if;
if Test_For_False_Unit_Values
(Units_Not_Controlled,
Check_Load_Unit,
Load_Unit_Info.Cmvc_Stat.Controlled,
Check_Spec_Unit and then Info.Has_Cooresponding_Spec_Unit,
Spec_Unit_Info.Cmvc_Stat.Controlled) then
return True;
end if;
if Test_For_False_Unit_Values
(Units_Checked_Out,
Check_Load_Unit,
not (Load_Unit_Info.Cmvc_Stat.Checked_Out),
Check_Spec_Unit and then Info.Has_Cooresponding_Spec_Unit,
not (Spec_Unit_Info.Cmvc_Stat.Checked_Out)) then
return True;
end if;
if Test_For_False_Unit_Values
(Units_Out_Of_Date,
Check_Load_Unit,
not (Load_Unit_Info.Cmvc_Stat.Out_Of_Date),
Check_Spec_Unit and then Info.Has_Cooresponding_Spec_Unit,
not (Spec_Unit_Info.Cmvc_Stat.Out_Of_Date)) then
return True;
end if;
if Test_For_False_Unit_Values
(Units_Not_In_Units_Directory,
Check_Load_Unit,
Load_Unit_Info.In_Units_Directory,
Check_Spec_Unit and then Info.Has_Cooresponding_Spec_Unit,
Spec_Unit_Info.In_Units_Directory) then
return True;
end if;
if Test_For_False_Unit_Values
(Spec_Not_In_Spec_View,
Check_Load_Unit and then
Directory_Tools.Ada_Object.Is_Visible_Part
(Info.Load_View_Unit.Handle),
Info.Has_Cooresponding_Spec_Unit,
False, -- only one check necessary
Info.Has_Cooresponding_Spec_Unit) then
return True;
end if;
if Test_For_False_Unit_Values
(Units_Not_Compatible,
Check_Load_Unit and then Info.Has_Cooresponding_Spec_Unit,
Info.Is_Compatible,
False, -- only one check necessary
Info.Is_Compatible) then
return True;
end if;
return False; -- only when all tests fail
end Include_Problems_Only;
procedure Problem_Report is new Make_Report (Include_Problems_Only);
begin
Problem_Report (For_Activity, To_Document, Response);
end Add_Problem_Report;
end Subsystem_Audit;
nblk1=2a
nid=29
hdr6=52
[0x00] rec0=25 rec1=00 rec2=01 rec3=056
[0x01] rec0=16 rec1=00 rec2=2a rec3=038
[0x02] rec0=04 rec1=00 rec2=02 rec3=04e
[0x03] rec0=13 rec1=00 rec2=03 rec3=01a
[0x04] rec0=16 rec1=00 rec2=04 rec3=040
[0x05] rec0=1a rec1=00 rec2=05 rec3=048
[0x06] rec0=16 rec1=00 rec2=06 rec3=02a
[0x07] rec0=1e rec1=00 rec2=07 rec3=064
[0x08] rec0=00 rec1=00 rec2=28 rec3=018
[0x09] rec0=1b rec1=00 rec2=08 rec3=016
[0x0a] rec0=17 rec1=00 rec2=09 rec3=02a
[0x0b] rec0=15 rec1=00 rec2=0a rec3=04c
[0x0c] rec0=15 rec1=00 rec2=0b rec3=024
[0x0d] rec0=17 rec1=00 rec2=0c rec3=00a
[0x0e] rec0=18 rec1=00 rec2=0d rec3=03e
[0x0f] rec0=12 rec1=00 rec2=0e rec3=074
[0x10] rec0=12 rec1=00 rec2=0f rec3=094
[0x11] rec0=15 rec1=00 rec2=10 rec3=042
[0x12] rec0=12 rec1=00 rec2=11 rec3=060
[0x13] rec0=0f rec1=00 rec2=12 rec3=028
[0x14] rec0=11 rec1=00 rec2=13 rec3=088
[0x15] rec0=12 rec1=00 rec2=14 rec3=070
[0x16] rec0=14 rec1=00 rec2=15 rec3=02a
[0x17] rec0=15 rec1=00 rec2=16 rec3=044
[0x18] rec0=11 rec1=00 rec2=17 rec3=0a0
[0x19] rec0=15 rec1=00 rec2=18 rec3=05c
[0x1a] rec0=1a rec1=00 rec2=19 rec3=006
[0x1b] rec0=16 rec1=00 rec2=1a rec3=012
[0x1c] rec0=12 rec1=00 rec2=1b rec3=06e
[0x1d] rec0=1d rec1=00 rec2=1c rec3=02a
[0x1e] rec0=17 rec1=00 rec2=1d rec3=004
[0x1f] rec0=00 rec1=00 rec2=27 rec3=006
[0x20] rec0=16 rec1=00 rec2=1e rec3=00e
[0x21] rec0=00 rec1=00 rec2=26 rec3=006
[0x22] rec0=12 rec1=00 rec2=1f rec3=01e
[0x23] rec0=16 rec1=00 rec2=20 rec3=012
[0x24] rec0=17 rec1=00 rec2=21 rec3=02e
[0x25] rec0=18 rec1=00 rec2=22 rec3=082
[0x26] rec0=18 rec1=00 rec2=23 rec3=05a
[0x27] rec0=17 rec1=00 rec2=24 rec3=014
[0x28] rec0=0f rec1=00 rec2=25 rec3=000
[0x29] rec0=00 rec1=00 rec2=00 rec3=018
tail 0x215003808815c6441bc18 0x42a00088462061e03
Free Block Chain:
0x29: 0000 00 00 00 70 80 02 29 3b 02 00 0d 20 20 20 20 65 ┆ p ); e┆