separate (Tracker.Manipulate_Data)
procedure Group_Data_Fixes is
    --------------------------------------------------------------------------------
    --|
    --|  NAME:  GROUP_DATA_FIXES
    --|
    --|  OVERVIEW:
    --|    This procedure is the driver for making changes to the entire set of
    --|    element data.  Two types of changes are possible, updating the original
    --|    estimate to equal the current estimate or starting the project at this
    --|    point and using this run as the starting point for the project.
    --|
    --|  EXCEPTIONS HANDLED:
    --|    none
    --|
    --|  HISTORY:
    --|    written by   Bonnie Burkhardt   March 1985
    --------------------------------------------------------------------------------

    Input_Char : Character := ' ';

    procedure Update_Original is separate;
    procedure Reset_Data is separate;

begin
    -- ask the user if he wants to re-originalize his data
    New_Line;
    Put_Line (" Would you like to update the original size estimates for all");
    Put_Line (" the elements to reflect the current size estimate?");
    New_Line;
    Put (" Y or N  ( <cr>=N ) : ");

    loop
        begin
            if End_Of_Line then
                Skip_Line;
                New_Line (2);
                exit;
            else
                Get (Input_Char);

                if (Input_Char = 'n') or (Input_Char = 'N') then
                    Skip_Line;
                    New_Line (2);
                    exit;
                elsif (Input_Char = 'y') or (Input_Char = 'Y') then
                    Skip_Line;
                    New_Line (2);
                    Update_Original;
                    exit;
                else
                    -- give more information
                    Skip_Line;
                    New_Line (2);
                    Put_Line
                       (" Tracker will step through each element and assign the");
                    Put_Line (" original size to equal the current size.");
                    Put_Line (" Would you like to update the original size?");
                    New_Line;
                    Put (" [ Y or N  <cr>=N ] : ");
                end if;
            end if;
        exception
            when others =>
                Skip_Line;
                New_Line (2);
                Put_Line
                   (" Tracker will step through each element and assign the");
                Put_Line (" original size to equal the current size.");
                Put_Line (" Would you like to update the original size?");
                New_Line;
                Put (" [ Y or N ] : ");
        end;
    end loop;

    -- determine if the user wants to 'reset' his data file
    New_Line;
    Put_Line
       (" Do you want to start tracking the project from this point onwards");
    Put_Line (" and use the current percent complete as the starting point?");
    New_Line;
    Put (" [ Y or N  <cr>=N ] : ");

    loop
        begin
            if End_Of_Line then
                Skip_Line;
                New_Line (2);
                exit;
            else
                Get (Input_Char);

                if (Input_Char = 'n') or (Input_Char = 'N') then
                    Skip_Line;
                    New_Line (2);
                    exit;
                elsif (Input_Char = 'y') or (Input_Char = 'Y') then
                    Skip_Line;
                    Reset_Data;
                    New_Line (2);
                    exit;
                else
                    -- give more information
                    Skip_Line;
                    New_Line;
                    Put_Line
                       (" Tracker will step through each element and compute the ");
                    Put_Line
                       (" amount of work that is completed on the element.  It then");
                    Put_Line
                       (" subtracts this amount from the current size to obtain the");
                    Put_Line
                       (" EQUIVALENT NEW SIZE estimate.  The percent complete for ");
                    Put_Line (" that element is erased and set to '   '.");
                    Put_Line
                       (" Do you want to start tracking the project from this point?");
                    New_Line;
                    Put (" [ Y or N  <cr>=N ] : ");
                end if;
            end if;
        exception
            when others =>
                Skip_Line;
                New_Line;
                Put_Line
                   (" Tracker will step through each element and compute the ");
                Put_Line
                   (" amount of work that is completed on the element.  It then");
                Put_Line
                   (" subtracts this amount from the current size to obtain the");
                Put_Line
                   (" EQUIVALENT NEW SIZE estimate.  The percent complete for ");
                Put_Line (" that element is erased and set to '   '.");
                Put_Line
                   (" Do you want to start tracking the project from this point?");
                New_Line;
                Put (" [ Y or N  <cr>=N ] : ");
        end;
    end loop;

end Group_Data_Fixes;