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 - metrics - download
Index: B T

⟦5110eba4a⟧ TextFile

    Length: 4960 (0x1360)
    Types: TextFile
    Names: »B«

Derivation

└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
    └─⟦5cb1d1d7f⟧ »DATA« 
        └─⟦3b1ee7bd8⟧ 
            └─⟦this⟧ 

TextFile

separate (Tracker.Report_Generator)
procedure Distribution_Of_Work (Orig_Or_Cur : in Orig_Or_Cur_Type) is
    ----------------------------------------------------------------------
    --|
    --|  NAME:  DISTRIBUTION_OF_WORK
    --|
    --|  OVERVIEW:
    --|    This report actually consists of two separate matrix reports.
    --|    It shows the total man-hours of work remaining for each activity
    --|    in relation to each of the subsystems.  One report is based on the
    --|    original size and the other on the current size.  The activities
    --|    are represented on the x-axis and the subsystems on the y-axis.
    --|    The data printed includes remaining man-hours of work for each
    --|    activity by subsystem, the total remaining work in man-hours for
    --|    each activity and for each subsystem, the percent complete for
    --|    each subsystem, the grand total remaining work, the grand total
    --|    percent complete, and the percentage of the total work remaining
    --|    on the entire project by activity.
    --|
    --|  EXCEPTIONS HANDLED:
    --|    others   an error message is printed and processing continues
    --|
    --|  HISTORY:
    --|    written by   Bonnie Burkhardt   March 1985
    --|
    ----------------------------------------------------------------------

    use Ss_List_Pkg;

    Header1 : String (1 .. 132) := (others => ' ');
    Header2 : String (1 .. 132) := (others => ' ');
    Header_Lines : String (1 .. 132) := (others => ' ');

    End_List : Boolean := False;
    Ss_Index : Integer := 0;
    Ss_Ptr : Subsystem_Pointer;
    Ss_Work_By_Ac : array (1 .. Num_Of_Activities) of Float := (others => 0.0);
    Ss_Work : Float := 0.0;
    Tot_Ss_Work_By_Ac : array (1 .. Num_Of_Activities) of Float :=
       (others => 0.0);
    Tot_Ss_Work : Float := 0.0;
    Subtitle : constant String := "(in MAN-HOURS)";
    Title : String (1 .. 56);
    Title_Orig : constant String :=
       "ORIGINAL DISTRIBUTION OF WORK REMAINING WITHIN SUBSYSTEM";
    Title_Cur : constant String :=
       "CURRENT DISTRIBUTION OF WORK REMAINING WITHIN SUBSYSTEM ";

    procedure Init_Dist_Headers is separate;
    procedure Calc_Ss_Work is separate;

begin
    Init_Dist_Headers;

    if Orig_Or_Cur = Current then
        Title := Title_Cur;
    else
        Title := Title_Orig;
    end if;

    Start_Page (Title, Subtitle, Header1, Header2, Header_Lines);

    -- print out each line of the report
    Start_Walk (Ss_List);

    loop
        Walk (Ss_List, Ss_Ptr, End_List);
        exit when End_List;
        Ss_Index := Ss_Index + 1;

        Calc_Ss_Work;

        -- print out subsystem
        Set_Col (Report_File, 2);
        Put (Report_File, Ss_Ptr.Name);
        Set_Col (Report_File, 14);

        for Ac_Index in 1 .. Num_Of_Activities loop
            Put (Report_File, Ss_Work_By_Ac (Ac_Index), 6, 1, 0);
            Put (Report_File, "  ");
        end loop;

        -- print out totals for this subsystem
        Set_Col (Report_File, 115);
        Put (Report_File, Ss_Work, 7, 1, 0);
        Set_Col (Report_File, 126);

        if Orig_Or_Cur = Current then
            Put (Report_File, Current_Pct_Done.By_Ss (Ss_Index), 3, 2, 0);
            Put (Report_File, '%');
        else
            Put (Report_File, Original_Pct_Done.By_Ss (Ss_Index), 3, 2, 0);
            Put (Report_File, '%');
        end if;

        New_Line (Report_File);
    end loop;


    -- print out totals on contract by activity
    Set_Col (Report_File, 14);
    Put (Report_File, Header_Lines (14 .. 132));
    New_Line (Report_File);
    Set_Col (Report_File, 2);
    Put (Report_File, "TOTALS: ");
    Set_Col (Report_File, 13);

    for Ac_Index in 1 .. Num_Of_Activities loop
        Put (Report_File, Tot_Ss_Work_By_Ac (Ac_Index), 7, 1, 0);
        Put (Report_File, " ");
    end loop;

    Set_Col (Report_File, 115);
    Put (Report_File, Tot_Ss_Work, 7, 1, 0);
    Set_Col (Report_File, 126);

    if Orig_Or_Cur = Current then
        Put (Report_File, Current_Pct_Done.Contract, 3, 2, 0);
        Put (Report_File, '%');
    else
        Put (Report_File, Original_Pct_Done.Contract, 3, 2, 0);
        Put (Report_File, '%');
    end if;

    New_Line (Report_File, 2);

    -- print out percent of total work left
    Set_Col (Report_File, 2);
    Put (Report_File, "% OF TOTAL:");
    Set_Col (Report_File, 15);

    for Ac_Index in 1 .. Num_Of_Activities loop
        if Tot_Ss_Work > 0.0 then
            Put (Report_File,
                 100.0 * Tot_Ss_Work_By_Ac (Ac_Index) / Tot_Ss_Work, 3, 2, 0);
        else
            Put (Report_File, 0.0, 3, 2, 0);
        end if;

        if Ac_Index < Num_Of_Activities then
            Put (Report_File, "% + ");
        end if;
    end loop;

    Put (Report_File, "% = 100.00%");
    New_Line (Report_File);

exception
    when others =>
        Put_Line ("exception raised in WORK DISTRIBUTION REPORT");
end Distribution_Of_Work;