|
|
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: 2718 (0xa9e)
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 (Manpower)
procedure Get_Staff_Profile (Profile : in Profile_Type;
Accel_Increment : in Accurate_Float) is
----------------------------------------------------------------------
--| NAME : GET_STAFF_PROFILE
--|
--| OVERVIEW:
--| This procedure calculates the manpower staffing estimates by month
--| of various acceleration rates. The acceleration rates tested start
--| at ACCEL_INCREMENT and are incremented by ACCEL_INCREMENT for each
--| successive test. GRAPH_IT is called to plot a graph of the
--| distribution for each acceleration rate tested.
--|
--| HISTORY:
--| written by Bonnie Burkhardt March 1985
--|
--| EXCEPTIONS HANDLED:
--| others An error message is printed and processng continues.
--|
----------------------------------------------------------------------
Down_Hill : Boolean := False;
begin
Accel_Rate := 0.0;
Outer_Loop:
loop
Accel_Rate := Accel_Rate + Accel_Increment;
Month := Month_Type'First;
Tdev := Sqrt (1.0 / (2.0 * Accel_Rate));
Staffing := (others => 0.0); -- reset array
-- the inner loop will calculate the manpower (staffing) estimates at
-- each time period (1 month increments) with a constant acceleration
-- rate 'ACCEL_RATE'
Inner_Loop:
loop
Param := -Accel_Rate * (Float (Month) ** 2);
Staffing (Month) := 2.0 * Man_Months * Accel_Rate *
Float (Month) * Exp (Param);
Down_Hill := Staffing (Month) < Staffing (Month - 1);
if Down_Hill and Staffing (Month) < 2.0 then
exit Inner_Loop;
end if;
Month := Month + 1;
end loop Inner_Loop;
-- graph the appropriate profile
if Profile = Nominal then
if (Float (Month) <= Td_Nominal + 0.5) then
Graph_It
("Nominal Schedule"); -- nominal schedule has been found
exit Outer_Loop;
end if;
else
if Float (Month) <= Td_Nominal then
Graph_It ("COMPRESSED SCHEDULE");
else
Graph_It ("EXTENDED SCHEDULE");
end if;
exit when Staffing (Integer (Imp_Region)) < 2.0;
end if;
end loop Outer_Loop;
exception
when others =>
Put_Line ("exception raised in GET_STAFF_PROFILE");
end Get_Staff_Profile;