


                PANTT - The PERT and Gantt Program
                
                Peter M. Hurley      June 1, 1978

        Help file for version 4.3(252) May 9, 1981


PANTT is a program written for project managers to aid  them  in  both
scheduling  and  daily  tracking  of  their  projects.   PANTT  is  an
interactive data base  management  program  that  allows  the  project
manager  to  enter  and  update project information and status as each
project progresses.  Whenever needed, PANTT can output an updated PERT
chart  of  the  project,  an overall Gantt chart of the project, and a
Gantt chart for each of the developers on the project.

Unlike most other computerized PERT  systems,  PANTT  is  designed  to
produce the optimum schedule for more than one interdependent projects
being staffed by a common set of developers.  As work assignments  are
made, the project manager can direct PANTT to associate each developer
with his or her assigned projects.  The remainder of the projects  are
scheduled to be completed in the shortest time by optimally allocating
available developers and by reassigning  developers  as  projects  are
completed.

PANTT also makes it  possible  for  the  project  manager  to  set  up
dependencies  of  some  projects  on  other  projects.  The scheduling
routine determines the critical path and allocates developers  to  the
projects on the critical path in a manner that minimizes the length of
the  critical  path.   While  doing  this,  the   scheduling   routine
acknowledges  the  dependencies  specified  by the project manager and
does not schedule any project until all  projects  that  are  blocking
this project have been completed.

PANTT understands about the common problems  of  weekends,  vacations,
new   employees,  outside  dependencies,  background  activities,  and
differing levels  of  developer  productivity  that  plague  all  PERT
systems.   There  are  facilities  integrated into the PANTT system to
handle each of these problem areas.
                                                                Page 2



Each project being entered into the PANTT data base must be broken  up
into  a  set  of  tasks.   For example, the XYZ project might have the
following  tasks:   functional  specification,  design  specification,
coding, debugging, and integration.  In this example none of the tasks
can be started until  the  previous  task  has  been  completed.   The
project  manager  would  set  this  project  up  with  each task being
dependent on the task immediately preceding it.   If  more  detail  is
desired,  these  tasks  could  be  divided  into  smaller  units.  For
example, the coding task might be broken up into monitor code, utility
code, and application code.  Both the utility code and the application
code are dependent on the monitor code being  finished  and  could  be
specified  as being dependent on the monitor code task.  But since the
utility code and the application code tasks are not dependent on  each
other,  these  tasks  can  be  done  in parallel.  The PANTT scheduler
routine would allocate  developers  to  these  tasks  in  the  optimum
fashion to minimize the overall length of the project.
                                                                Page 3



                        PANTT Commands

1.      Top level commands


ADD DEVELOPER user_name (RATE) x (HANDICAP) y

        Add a developer to  the  overall  developer  list.   This  new
        developer  can  spend  up to x (0 to 1.0) amount of his or her
        time working on projects.  The  handicap  rating,  y,  is  the
        indication  of  the  performance of this developer relative to
        the other members on the project (1.0 is the norm).

ADD PROJECT (PROJECT NAME) project_name

        Add a project to the data base.

ADD TASK (TASK NAME) task_name (TO PROJECT) project_name

        Add a task to the specified project.


DELETE DEVELOPER user_name

        Delete the specified user  name  from  the  overall  developer
        list.

DELETE PROJECT (PROJECT NAME) project_name

        Delete the specified project and all of  its  tasks  from  the
        data base.

DELETE TASK (FROM PROJECT) project-name (TASK NAME) task_name

        Delete the specified task from the specified project.


EXIT

        Exit from PANTT.


LIST (PROJECT) project_name (TASK) task_name

        Type out all information about a given task.  If task_name  is
        omitted then all tasks in the project will be listed.
                                                                Page 4



OUTPUT CHANGES-IN-ESTIMATED-DATES (TO FILE) file_specification

        Outputs a list of all estimated dates which changed since  the
        last REMEMBER command.

OUTPUT CONTROL-FILE (TO FILE) file_specification

        Writes a control file for a batch job  to  rebuild  the  PANTT
        data-base.   This  lets  one  rename  projects  and make other
        systematic changes with a text editor.

        This process  also  flushes  all  dates  stored  by  the  last
        REMEMBER command.

OUTPUT DEVELOPER-LIST (TO FILE) file_specification

        Output the overall list of developers, their rates, and  their
        handicaps.


OUTPUT PATH-CHARACTER-LIST (TO FILE) file_specification

        Outputs an alphabetical listing of  each  task  with  a  given
        path-character.

OUTPUT PERT-CHART (TO FILE) file_specification

        Output a PERT chart of all tasks  in  the  data  base  to  the
        specified file specification.

OUTPUT SCHEDULE (TO FILE) file_specification

        Outputs a listing of all tasks sorted by earliest start  date,
        with the following information.

        Estimated start and completion dates
        Name of project and task
        Project description
        Task description

OUTPUT SELECTED-PERT-BOXES (TO FILE) file_spec

        Same idea as OUTPUT PERT-CHART except  one  can  select  which
        projects get included.  See SELECT mode.


OUTPUT TASK-LIST (SORTED BY) EARLIEST-START-DATE (TO FILE) file_spec

        Output a list of the tasks in the  data  base  sorted  by  the
        earliest  start date.  This list contains the task length, the
        start date, the finish date, the developers available to  work
        on the task, the tasks blocking this task, and the tasks being
        blocked by this task.
                                                                Page 5


OUTPUT TASK-LIST (SORTED BY) PROJECT (TO FILE) file_spec

        Output a description of each task of each project in the  data
        base.   This  report lists all available data about each task.
        The list is arranged alphabetically by project  and  by  tasks
        within each project.
                                                                Page 6



OUTPUT GANTT-CHART (OF) DEVELOPERS (TO FILE) file_spec

        Output a Gantt chart for each developer scheduled to  work  on
        some  part of this set of projects and tasks.  The Gantt chart
        includes the dates that the developer is working on a task and
        the  amount  of  that  developers  time is being spent on that
        task.  The Gantt chart pictorially shows  the  start  and  end
        dates  for  each  task that this developer is working on.  The
        chart also indicates which tasks have been completed and which
        tasks are in progress.

OUTPUT GANTT-CHART (OF) MILESTONES (TO FILE) file_spec

        Output a chart show the dates of all milestones.

OUTPUT GANTT-CHART (OF) ONLY-DEVELOPER developer (TO FILE) file-spec

        Output a  gantt-chart  for  only  one  developer.   This  mode
        figures out a good starting date for the chart.

OUTPUT GANTT-CHART (OF) TASKS (TO FILE) file_spec

        Output a chart showing the start  and  finish  of  all  tasks.
        This  chart  also  shows those tasks that have been completed,
        those tasks that are in progress, and  the  number  of  people
        allocated to each task at any point in time.
                                                                Page 7


PLOT GANTT-CHART (OF) DEVELOPERS (TO FILE) file_spec
PLOT GANTT-CHART (OF) MILESTONES (TO FILE) file_spec
PLOT GANTT-CHART (OF) ONLY-DEVELOPER developer (TO FILE) file_spec
PLOT GANTT-CHART (OF) TASKS (TO FILE) file_spec
PLOT PERT-CHART (TO FILE) file_spec
PLOT SELECTED-PERT-BOXES (TO FILE) file_spec

        These commands  are  identical  to  the  corresponding  OUTPUT
        commands except data is written in TXT2P format so that it may
        be plotted on the VERSATEC plotter.  Here is a  brief  example
        of generating a PERT plot:
        PANTT>PLOT PERT-CHART (TO FILE) PERT.T2P
        PANTT>EXIT
        @TXT2P
        *PERT.DPL=PERT.T2P
        NO ERRORS DETECTED
        *^C
        @R P
        MODE(S)? 1
        INPUT FILENAME(.DPL): PERT.DPL
        @DO SYS:NETPLO PERT.PLO
        now go over the LA36 next to the PDP-11 and type:
        RUN MAPVP
        INPUT FILENAME: PERT.PLO/E
        The above procedure worked on  system  1031  on  26  June  80.
        Things may have changed since that date.

        NOTE:  The VERSATEC system is now located  in  CIRCUIT  DESIGN
        DRAFTING on MR1-2.
                                                                Page 8



REMEMBER (ESTIMATED DATES FOR FUTURE COMPARISON)

        Remembers the estimated dates for each  task.   These  may  be
        compared  with  the  latest  estimates with the OUTPUT CHANGES
        command.

SCHEDULE

        Perform a scheduling pass over all tasks  in  the  data  base.
        This  command requests the "Scheduler Look Ahead Value".  This
        is the searching depth to which the  scheduler  will  go  when
        trying  to  resolve  scheduling  conflicts.  A conflict arises
        when there are more than one tasks that are not being  blocked
        by any other tasks and the set of developers available to work
        on these tasks overlap.  These conflicts are  resolved  by  an
        exhaustive  check  of  all  combinations  and  permutations of
        developers and tasks.  The scheduler  choses  the  order  that
        minimizes the end date of the critical path.

        Since  the  length  of  time  to  perform  a  scheduling  pass
        increases  exponentially  as  the number of conflicts goes up,
        PANTT allows the project manager to specify the depth  of  the
        search.   If the scheduler look ahead value is set to 0, PANTT
        will do a complete scheduling pass in  the  shortest  possible
        time.  [[Values other than zero have not been well tested]]

SET HOLIDAY (DATE) date

        Prevents work from being scheduled on specified date.

SET PERT-PLACEMENT-ALGORITHM (TO THE) DEFAULT (PLACEMENT ALGORITHM)

        Places the PERT boxes using minimum cpu time.

SET  PERT-PLACEMENT-ALGORITHM   (TO   THE)   HIGH-DENSITY   (PLACEMENT
ALGORITHM)

        Reduces the amount of white-space on the pert chart.  If  your
        pert  chart  is  larger than the plotter or line-printer page,
        this command may help it fit.

        This  mode  may  also  produce  better  looking  pert  charts.
        [Depends on your definition of "good looking"]

SET SCHEDULE-DATE (TO) date

        Pretend today is "date".  Useful if a project will  not  start
        for a while.
                                                                Page 9



UPDATE (PROJECT) project_name

        Enter update mode for the  specified  project.   This  command
        allows  the project manager to go change project related data.
        See  the  section  on  project  commands  for  more   detailed
        information.

UPDATE (PROJECT) project_name (TASK) task_name

        Enter update mode for the specified task.  This command allows
        the  project  manager  to  update  task data for the specified
        task.  See the section on task commands for further details.
                                                               Page 10



2.      Project Commands

DELETE DEVELOPER user_name

        Delete a developer from the list  of  developers  assigned  to
        this specific project.


DEVELOPER user_name (RATE) x (HANDICAP) y

        Add the specified user to the list of developers available  to
        work  on  this  project.  The maximum amount of time that this
        developer can spend on this project is  x  (0  to  1.0).   The
        relationship  of this developer to the other developers on the
        project is y (1.0 is the norm).


FINISHED (UPDATING PROJECT DATA)

        This command returns to the top command level.


LIST

        This command lists all the available data about this project.


PREFERENCE-VALUE (FOR FREE CHOICE) x

        This command sets the free choice preference  value  for  this
        project.   Whenever the scheduling routine makes a free choice
        of the next task to be scheduled, this preference  value  will
        bias  its  choice.   The  higher  the  value,  the  sooner the
        scheduler will chose tasks of this project to be done.


PROJECT-DESCRIPTION

        This  command  lets  the  project  administrator  rewrite  the
        description  of  this  project.   This description can be more
        than one line in length, and it is terminated with an  ALTMODE
        or a CTRL/Z.
                                                               Page 11



3.      Task Commands

ALL-DEVELOPERS-REQUIRED

        This sets a bit which forces all listed developers to work  on
        this  task  for  an  equal amount of time.  This is useful for
        design reviews, group  meetings  and  other  tasks  where  all
        developers are required.

        This command will be  replaced  (or  augmented)  in  a  future
                version  by NUMBER-OF-DEVELOPERS-REQUIRED (IS EXACTLY)
                n
        which will schedule n of  the  available  developers  to  work
        together on this task.

ATTRIBUTE (NAME IS) name (VALUE) value

        This allows the user to add additional description to a  given
        task.   Attributes  are remembered in the database and printed
        when the task is listed.  For example, the command:
                ATTRIBUTE (NAME IS) BUDGET (VALUE) 35K
        will generate a line containing:
                BUDGET: 35K
        whenever the task is listed.

COMPLETION-DATE date

        This command specifies the actual completion date of the task.
        If  a task has a completion date specified, then the scheduler
        assumes that this project must be scheduled according to  this
        date.   The  completion date can be specified as a date in the
        future.  An example of this is when a project manager  adds  a
        task  to  indicate that a developer is going to be on vacation
        on a particular date.


DELETE COMPLETION-DATE

        This command deletes the actual finishing date for this task.


DELETE DEPENDENCY (ON PROJECT) project_name (TASK NAME) task_name

        This command removes the dependency of the task being  updated
        on the task specified in this command.

DELETE DEVELOPER user_name

        This command deletes the  specified  user  from  the  list  of
        developers that are available to work on this task.

                                                               Page 12



DELETE ESTIMATED-PROJECT-LENGTH

        This command deletes the specified task length.


DELETE EXPECTED COMPLETION-DATE

        This command deletes the expected completion date of the task.


DELETE EXPECTED STARTING-DATE

        This command deletes the expected start date of the task.

DELETE MINIMUM-STARTING-DATE

        This command deletes the minimum starting  date  specification
        for this task.

DELETE PATH-CHARACTER

        Remove the critical path character from this task

DELETE PREFERENCE-VALUE

        This command deletes the preference value for this task.

DELETE STARTING-DATE

        This command deletes the starting date of the task.


DEPENDENCY (ON PROJECT) project_name (TASK NAME) task_name

        This command indicates that this task cannot be started  until
        the specified task has been completed.


DEVELOPER user_name (RATE) x (HANDICAP) y

        Add the specified user to the list of developers that  can  be
        assigned  to  work on this task.  The rate and handicap values
        for this developer are x and y.

                                                               Page 13



ESTIMATED-PROJECT-LENGTH (IN DAYS) n

        This command specifies the estimated length  of  the  project.
        The  task  length  is  specified in work days (5 work days per
        week).  This is an integer value;   fractional  days  are  not
        accepted.


EXPECTED COMPLETION-DATE (IS) date

        This command is used to set the expected completion date of  a
        project.  This differs from the actual completion date only in
        the fact that this  date  is  not  guaranteed.   However,  the
        scheduling  routine  treats  this date as if it is a firm date
        for scheduling purposes.

EXPECTED STARTING-DATE (IS) date

        Set the expected starting date.  The scheduling  routine  will
        cause this task to be scheduled on the specified date.


FINISHED (UPDATING TASK DATA)

        This command returns to the top command level.


LIST

        This command lists all available data about the task.

LONG-ATTRIBUTE name

        This is the same as ATTRIBUTE except it takes  a  long  string
        terminated with an escape.  Example:
                LONG-ATTRIBUTE (NAME IS) COMPLETION-CRITERIA
                VALUE OF ATTRIBUTE (<ESC> WHEN DONE)
                        ALL DEMO INFORMATION IS IN FILE.
                $
        will produce:
                COMPLETION-CRITERIA:
                        ALL DEMO INFORMATION IS IN FILE.
        whenever, the task is listed.

MILESTONE

        This command marks this task as being a milestone.

                                                               Page 14



MINIMUM-STARTING-DATE date

        This command specifies the earliest date that  the  this  task
        can  be scheduled.  The scheduling routines will schedule this
        task at the optimal time after this date.


PATH-CHARACTER (IS) x

        This command assigns a "critical-path character"  to  a  task.
        All  tasks on the critical path blocking this task are flagged
        with this path character.  This allows several critical  paths
        to be monitored.

PREFERENCE-VALUE (FOR FREE CHOICE) x

        This command sets the free choice preference  value  for  this
        task.   Whenever  the  scheduler has a free choice between two
        tasks belonging to the same project, it will  chose  the  task
        with the higher preference value.  If both tasks have the same
        preference value, then it will chose the task that will finish
        in the longest time.


STARTING-DATE date

        This command sets the actual starting date of the  task.   The
        scheduling  routines  chose  tasks  that  have  starting dates
        specified before any other tasks are  chosen.   In  this  way,
        these tasks will be completed without interruption.


TASK-DESCRIPTION

        This command  allows  the  project  manager  to  enter  a  new
        description of the task.


TIME-TO-DATE (IN DAYS) n (AT DATE) date

        This command specifies that n work days had been spent on this
        project  at  the specified date.  This command is used to give
        updated information about the progress of  a  task  after  the
        start date but before the completion date.
                                                               Page 15



4.      SELECT MODE


There is  a  new  option  in  the  OUTPUT  and  PERT  commands  called
SELECTED-PERT-BOXES.  The format of the command is exactly the same as
the normal PERT option except it leaves you in SELECT:  mode when  you
are  done.   SELECT:  mode currently has 2 possible commands, FINISHED
and INCLUDE.

INCLUDE PROJECT project-name (NAME) task

        If TASK is omitted the entire project is pert'ed.  If TASK  is
        given,  only  that box is pert'ed.  There may be any number of
        INCLUDE commands.

FINISHED gets you out of select mode and writes out the pert.

        example:
        PANTT> PLOT SELECTED-PERT-BOXES (TO FILE) KL10.T2P
        SELECT: INCLUDE PROJECT CPU
        SELECT: INCLUDE PROJECT EBOX
        SELECT: INCLUDE PROJECT MBOX
        SELECT: INCLUDE PROJECT DEBUG CPU-POWERON
        SELECT: FINISHED

        This will produce a PERT chart of the CPU  design  up  to  CPU
        poweron.

        The selection happens prior to placing the boxes on  the  plot
        and the plot looks as good as any full PANTT chart.  Selection
        only changes what gets  plotted.   All  tasks  are  scheduled,
        slacks  set,  and  critical paths determined based on the full
        network.

        If the PERT is plotted (as opposed  to  printed  on  the  line
        printer)  dependencies  on  boxes not plotted are indicated by
        arrows.  An arrow pointing up indicates that this task depends
        on  one  or  more  tasks which are not in this PERT.  An arrow
        pointing down indicates that one or more tasks which  are  not
        in this plot depend on this task.
