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: ┃ P T

⟦39470e727⟧ TextFile

    Length: 5183 (0x143f)
    Types: TextFile
    Names: »PRINT_CLOSURE«

Derivation

└─⟦db1c56801⟧ Bits:30000748 8mm tape, Rational 1000, TESTMATE 2_2_0
    └─ ⟦866d14df1⟧ »DATA« 
        └─⟦97c804b2f⟧ 
            └─⟦3a6141a61⟧ 
                └─⟦this⟧ 
└─⟦db1c56801⟧ Bits:30000748 8mm tape, Rational 1000, TESTMATE 2_2_0
    └─ ⟦866d14df1⟧ »DATA« 
        └─⟦97c804b2f⟧ 
            └─⟦this⟧ 

TextFile

with Io;
with System;
with Job_Segment;
with Po_Access_Modes;
with Po_Conditions;
with Po_Handle;
with Full_Unit_Path_List;
with View_Pair;
with Unit_Data_Pair;
with Unit_Path_Data_List;
with Version_Information;

procedure Print_Closure (Of_Test_Run : in String) is

    -- Print_Closure shows a simple use of the subject program version closure object
    -- associated with every test run.

    package Vi renames Version_Information;

    Heap : System.Segment := Job_Segment.Get;
    O : Vi.Object;
    Path : Po_Handle.Object;
    Cond : Po_Conditions.Condition;

    procedure Print_Unit_Data_List (L : Unit_Path_Data_List.Object) is
        Iter : Unit_Path_Data_List.Iterator;
    begin
        Unit_Path_Data_List.Init (Iter, L);
        while not Unit_Path_Data_List.Done (Iter) loop
            Io.Put_Line ("     " & Unit_Data_Pair.Convert
                                      (Unit_Path_Data_List.Value (Iter)));
            Unit_Path_Data_List.Next (Iter);
        end loop;
    end Print_Unit_Data_List;


    procedure Print_Unit_List (L : Full_Unit_Path_List.Object) is
        Iter : Full_Unit_Path_List.Iterator;
    begin
        Full_Unit_Path_List.Init (Iter, L);
        while not Full_Unit_Path_List.Done (Iter) loop
            Io.Put_Line ("     " & Po_Handle.Name
                                      (Full_Unit_Path_List.Value (Iter)));
            Full_Unit_Path_List.Next (Iter);
        end loop;
    end Print_Unit_List;

    procedure Do_Subj_Prog (Object : Vi.Object) is
        Iter : Vi.Iterator;  
        Pname : Po_Handle.Object;
        List : Full_Unit_Path_List.Object;
    begin
        Iter := Vi.Init (Vi.Subject_Program_Closure, Object);  
        if not Vi.Done (Iter) then
            Io.Put_Line ("SUBJECT PROGRAM CLOSURE UNITS =>");
        end if;

        while not Vi.Done (Iter) loop  
            Pname := Vi.Value (Iter);
            Io.Put_Line ("  Subject Program: " & Po_Handle.Name (Pname));
            List := Vi.Eval (Vi.Subject_Program_Closure, Object, Pname);
            Print_Unit_List (List);  
            Io.New_Line;
            Vi.Next (Iter);
        end loop;
    end Do_Subj_Prog;


    procedure Do_Other_Free (Object : Vi.Object) is
        Iter : Vi.Iterator;
    begin
        Iter := Vi.Init (Vi.Other_Free_Units, Object);
        if not Vi.Done (Iter) then
            Io.Put_Line ("FREE UNITS =>");
        end if;

        while not Vi.Done (Iter) loop
            Io.Put_Line ("     " & Unit_Data_Pair.Convert (Vi.Value (Iter)));
            Vi.Next (Iter);
        end loop;

    end Do_Other_Free;


    procedure Do_Subsystem_Free (Object : Vi.Object) is
        Vpair : View_Pair.Object;
        Iter : Vi.Iterator;
        List : Unit_Path_Data_List.Object;
    begin
        Iter := Vi.Init (Vi.Free_Units_In_Subsystem, Object);  
        if not Vi.Done (Iter) then
            Io.Put_Line ("UNITS WITHIN SUBSYSTEMS NOT UNDER CMVC =>");
        end if;
        while not Vi.Done (Iter) loop
            Vpair := Vi.Value (Iter);
            Io.Put_Line ("  Subsystem: " & View_Pair.Image (Vpair));
            List := Vi.Eval (Vi.Free_Units_In_Subsystem, Object, Vpair);
            Print_Unit_Data_List (List);
            Io.New_Line;
            Vi.Next (Iter);
        end loop;
    end Do_Subsystem_Free;

    procedure Do_Cmvc (Object : Vi.Object) is
        Vpair : View_Pair.Object;
        Iter : Vi.Iterator;
        List : Unit_Path_Data_List.Object;
    begin
        Iter := Vi.Init (Vi.Cmvc_Units, Object);
        if not Vi.Done (Iter) then
            Io.Put_Line ("CMVC CONTROLLED UNITS =>");
        end if;

        while not Vi.Done (Iter) loop
            Vpair := Vi.Value (Iter);
            Io.Put_Line ("  Subsystem: " & View_Pair.Image (Vpair));
            List := Vi.Eval (Vi.Cmvc_Units, Object, Vpair);
            Print_Unit_Data_List (List);
            Io.New_Line;
            Vi.Next (Iter);
        end loop;
    end Do_Cmvc;


    procedure Do_Froze (Object : Vi.Object) is
        Iter : Vi.Iterator;
        List : Full_Unit_Path_List.Object;
        Vpair : View_Pair.Object;
    begin
        Iter := Vi.Init (Vi.Cmvc_Frozen_Units, Object);
        if not Vi.Done (Iter) then
            Io.Put_Line ("FROZEN CMVC UNITS =>");
        end if;
        while not Vi.Done (Iter) loop
            Vpair := Vi.Value (Iter);
            Io.Put_Line ("  Subsystem: " & View_Pair.Image (Vpair));
            List := Vi.Eval (Vi.Cmvc_Frozen_Units, Object, Vpair);
            Print_Unit_List (List);
            Io.New_Line;
            Vi.Next (Iter);
        end loop;
    end Do_Froze;

begin

    O := Vi.Constructor (Heap);  
    Path := Po_Handle.Constructor (Of_Test_Run & ".closure", Heap);
    Vi.Persistent_Operations.Open (O, Po_Access_Modes.Read_Only, Path);
    Vi.Persistent_Operations.Get_Condition (O, Cond);
    Po_Conditions.Check_Condition (Cond, Path);

    Io.New_Line;
    Io.Put_Line ("Subject Program Closure information for the Test Run: " &
                 Po_Handle.Name (Path));  
    Io.New_Line;

    Do_Froze (O);

    Do_Cmvc (O);

    Do_Subsystem_Free (O);

    Do_Other_Free (O);

    Do_Subj_Prog (O);

end Print_Closure;