|
|
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: 4960 (0x1360)
Types: TextFile
Names: »B«
└─⟦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⟧
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;