head     1.1;
access   paws bayes jws quist dew jwh;
symbols  ;
locks    ; strict;
comment  @# @;


1.1
date     88.10.06.15.02.08;  author dew;  state tmp;
branches ;
next     ;


desc
@Base file for PWS 3.3 release.

@



1.1
log
@Initial revision
@
text
@








       1.  Manual Organization

       This manual is organized into three sections.  First, a general
       description of pert chart terminology that will be used in the manual
       is given.  Then, the formats for the basic pert chart data are
       described, along with the commands to list out the data.  Finally, the
       commands used to control the pert program, including file access and
       plotting, are discussed.

       1.1  Notation

       The following notation is used in command and data line descriptions:

	       Square brackets indicate optional items.
	       Curled braces indicate arguments that may appear either
		       on the command line or on the following line.
	       A vertical bar indicates 'exclusive or' within the enclosing
		       brackets.



































					1-1












       2.  Pert Chart Terminology

       A pert chart is a graphic representation of the tasks necessary to
       accomplish a project or goal.  It displays the dependencies among the
       tasks and also shows the relative, estimated times required to
       complete them.

       2.1  Events

       An event is a starting or ending point of a task.  It consumes no time
       or resource, and is usually something like a checkpoint or a contract
       date.  Events are depicted in a pert chart as nodes (circles).  The
       horizontal position of the circles correspond to the date the event is
       expected to occur.

       2.2  Activities

       The tasks in a pert chart are called activities.  Activities do
       consume time and resources, and one of the major tasks in developing a
       pert chart is the estimation of the times required.  Activities are
       depicted as the lines connecting events in the chart.  The horizontal
       length of each activity corresponds to at least the required time
       along the time axis, though it may be greater.  Examples of typical
       activities are assembly operations or testing periods.

       2.3  Groups

       The vertical axis of a pert chart is used to organize related events
       and activities into functional groups.  Usually there are sequences of
       activities required to accomplish single parts of the overall goal,
       and the logical progression from one step to the next is best shown if
       these related events are close together in the chart.  A group is
       roughly equivalent to a horizontal band in a Gantt chart.

       2.4  Times

       The estimates of activity times are usually made in one of two ways.
       The simple approach is to make a single estimate for each activity.
       This is usually the most likely amount of time to be spent.  A more
       sophisticated approach is to make estimates with 10%, 50%, and 90%
       confidence that the activity can be completed.  This not only gives a
       better feeling for the difficulty of the activity, it also allows
       computation of an estimator of the variance, which in turn points out
       where more information or effort is needed.









					2-1











       2.5  Critical Paths

       A vital piece of information in a pert chart is a starting date.  All
       event dates are determined from the time required to go from the
       initial event(s) to the other events via activity paths.  The total
       time from the first event to the last in a pert chart determines the
       longest path through the chart, called the project critical path.  In
       general, the longest path from the starting event(s) to any particular
       event is the critical path to that event.  The activities along such a
       path are those that require a reduced estimate (more resources) in
       order to move up the event date.  When there are several paths to a
       given event, there may be second- and third-most-critical paths of
       interest as well.

       2.6  Fixed events

       The dates of most events in the pert chart are determined by the
       activity times required to reach them.  However, occasionally events
       must occur on certain dates, due to contractual or logistical needs.
       It must be noted that events should be fixed at realistic dates in
       order to avoid contradiction in the pert data.

































					2-2












       3.  Data Input

       This section discusses the format of the pert data for the program,
       and also those commands that produce data listings. The pert program
       takes one or more text files as input.  The files can be organized
       into a hierarchy through use of *stream (see file control, below).

       3.1  General Format Information

       Certain keywords are recognized by the pert program as "commands".  A
       command consists of an asterisk (*) in column one of a line, followed
       immediately by a keyword from the set discussed below. Commands are
       case-insensitive.

       Lines that do not start with an asterisk are considered data lines.
       Data is specified in lines whose format is determined by certain
       separator characters.  Any data line can end with an exclamation mark
       (!) followed by comment text.  Blank lines are ignored.  Blanks and
       tab characters are equivalent as separators; however, ends of lines
       are not considered white space.

       3.2  Groups

       The vertical organization of the chart is controlled by groups.  Each
       group usually has a functional label to be shown at the left edge of
       the chart.  In addition to controlling the vertical arrangement,
       groups can also be divided into plotting groups and non-plotting (or
       "hidden") groups.  This allows some data to affect the dates in the
       pert chart without cluttering up the plot output.  The program
       includes a feature to automatically make groups visible in order to
       show the critical path.

       Each event in the pert chart is a member of one and only one group.
       While the group label is a good descriptive tool, it is cumbersome to
       use it to associate the group with many events.  Therefore, a short
       group token is also part of each group's description. A group token
       should be a mnemonic for the group label.

       The first event of a group may in certain cases need to be delayed by
       some number of days from the initial chart date.  This is called an
       offset.












					3-1











       The format for group data is as follows:

       *groups
       [@@]token1 [grouplabel1][: offset1]
       [@@]token2 [grouplabel2][: offset2]
	  .
	  .

       where   the optional @@ sign indicates a hidden group.  Placement of this
		       group is as specified, if it is made visible
	       a group token is 1 to 8 characters and is terminated
		       by a blank
	       a group label can be empty or up to 32 characters long and
		       can contain blanks. It is terminated by a colon.
	       an offset is an integer number of days from the
		       starting date

       The group token is the only required element.  If there is no offset,
       the colon that terminates the label can be omitted.  If the label is
       less than 32 characters long and an offset is to be specified, the
       colon must be present.

       More than one *groups command can appear in the data for a pert chart;
       the effect is additive.  However, a group token must be declared in
       only one group record.  A group must be declared in order to be a
       plotting group.  Otherwise, the data will be used in computation but
       will not be plotted (however, see the *showcrit command, below).  More
       specifically, no activity that starts or ends with an event in that
       group will appear in the plot.  The order in which groups are declared
       is the order in which they will appear in the plotted output.  The
       program will issue a warning message as each undeclared group is
       added.

       The

       *grplist

       command generates a listing of the activities in the data, separated
       into plotting and non-plotting group.  The group token and label is
       listed for each group. If non-plotting groups were declared, they are
       marked with an asterisk.

       In order for the program to account for group offsets in the critical
       path computation, it will actually add an activity to the beginning of
       each offset group.  For this purpose the group token '###' is
       reserved.  Offsets will be accounted for correctly whether implemented
       in *groups data as discussed here, or by fixing the first event of a
       group (see *events, below).






					3-2











       3.3  Activities

       Activities are specified by their starting and ending events, together
       with a descriptive label and the time estimates.  Each event must have
       a unique identifying label, which is used each time the event is named
       as a starting or ending event.  It is a good idea to collect
       activities together in the data file either by their starting group,
       or by their starting or ending events.

       Each event is assigned to a group by associating its label with a
       group token.  This allows the same event label (for example, "Release
       to QA") to be used in more than one group.  The format for activities
       is shown below.

       *activities
       [@@]event1:token1 [@@]event2:token2 [activitylabel1]: time1 [time2 time3]
       [@@]event3:token3 [@@]event2:token2 [activitylabel2]: time1 [time2 time3]
       [@@]event3:token3 [@@]event4:token4 [activitylabel3]: time1 [time2 time3]
	   .
	   .

       where   @@ is an optional flag indicating that an event label is to be
		       plotted.  It need only appear once with any specific
		       label in order to force plotting.
	       an event label is 1 to 15 characters and may include blanks
	       a token is a group token as described above
	       an activity label may be empty or up to 32 characters long,
		       including blanks
	       each time value is an integer number of days. time2 and time3
		       can be omitted

       Note that each activity has a directional attribute, from the starting
       event to the ending event.  A loop in the data will cause the program
       to terminate, because it cannot compute path lengths properly.

       The events defined can be listed by the

       *evtlist

       command.  The event number, label, and group token are listed for each
       event. Event numbers can be correlated to the *numevts option
       described under plotting options, below. Events on the overall
       critical path and fixed events are marked with asterisks.  The fix
       date for fixed events is also shown.

       Activities data is listed by the

       *actlist

       command.  The activity number, label, times, and starting and ending
       events are shown.  This listing produces two lines per item.



					3-3











       3.4  Times and Dates

       The start date for the pert chart is specified by the *date command:

       *date {mm dd yy}

       where   mm, dd, and yy are one or two digits indicating the month, day,
		       and year respectively.

       When computing path lengths and times, the pert program works with
       total project days.  For some outputs these "project days" must be
       converted to dates. The default conversion skips Saturday and Sunday
       of each week.  To allow seven work days per week (i.e., calendar
       days), the following command should be present in the data file:

       *calendar

       Occasionally, holidays fall on work days and must be allowed for in
       the pert data.  Holidays can be declared with the following command:

       *holidays
       mm dd yy [ct]
       mm dd yy [ct]
	   .
	   .

       where   mm, dd, and yy are one or two digits indicating the month, day,
		       and year of the holiday
	       ct is an optional integer indicating how many days the
		       holiday accounts for (default is one day)

       As discussed previously, activity time estimates can be entered as a
       single value or as a triple of low, medium, and high estimates.  The
       default time estimate used by the pert program is a weighted mean of
       the three values (in the ratio 1:3:1).  However, one of the following
       commands will cause the corresponding estimate to be used:

       *average       uses the weighted average
       *optimistic    uses the low estimate
       *probable      uses the middle estimate
       *pessimistic   uses the high estimate

       To list out the starting and ending dates of each activity, along with
       the computed slacks, the following command should be used:

       *timelist

       Which time estimate was used to do the computations is shown at the
       top of the listing.





					3-4











       3.5  Fixed Events

       To fix exact dates for certain events, the *events command is
       provided.  Note well that the dates of these events are absolutely
       fixed, and no early or late time computations will move them.  This
       can cause actual contradictions in the data.  Fixing dates should be
       restricted if possible to checkpoints, contract dates, and other
       events beyond your control.

       After the *events command, each line specifies a single event and the
       date on which it must occur:

       *events
       evt1:tok1 mm dd yy
       evt2:tok2 mm dd yy
	  .
	  .

       where   evt is an event label (must match one defined in a preceding
		       *activities section)
	       tok is a group token (must also match)
	       mm, dd, yy are one or two digits each indicating month, day,
		       and year

       If contradictions are present in the data due to fixed events, the
       activities in which the contradictions are detected can be listed by:

       *forcedlist

       Exactly what activities are determined to be "forced" to fit depends
       on whether early or late times are being used in the program.
       Activities will be forced when, during the computation of dates along
       a path, the estimated activity time will not fit between the early
       start date and early end date (or late start and late end if
       *latetimes is on; see the plotting section).

       3.6  Critical Paths

       The ending events of one or more critical path sets can be specified
       in the input to the pert program.  The program default is to compute
       the single most critical path to the ending event in the chart.
       However, it can compute up to nine critical paths to each of several
       events.  In order to compute more than one path to the final event,
       that event must be named just like any other path ending event:










					3-5











       *paths
       evt1:tok1  ct1
       evt2:tok2  ct2
	.
	.

       where   evt is an event label (must match one named in a previous
		       *activities data line)
	       tok is a group token (must also match)
	       ct is an integer number of paths to compute to the
		       named event (1..9)

       It is recommended that no more than the number of available pen colors
       be named for plotting purposes, and not more than nine events for
       listing purposes.

       The plot output from the program cannot show all the information
       computed for each critical path.  However, the

       *critlist

       command will list out all activities on each path, with the current
       time estimates and the 50% values, and also the lower and upper
       variances for each activity.  A total for each path is also printed,
       showing the sum-of-squares estimate of total variance on the path.
       The paths are ordered by 1) event order in *paths input,  2) total
       time ("criticality"), and 3) decreasing variance. If the final event
       is included in the *paths events, the overall critical path may appear
       twice.

       Two commands affect critical path computation:

       *nocrit

       suppresses the computation altogether.  Since this is the most time-
       consuming part of the computation, it is convenient in the early
       stages of chart development to avoid it altogether.  However,
       *critlist will be disabled, and *latetimes will not work as expected,
       in addition to the lack of a critical path in the plotted or listed
       outputs.

       *fast

       computes only the overall critical path by finding activities with
       zero total slack, rather that by the exhaustive path search that is
       usually done.  This will only work correctly under the following
       conditions:





					3-6











	  + *progcrit must not be active (this suppresses overall path
	    computation)

	  + *critlist must not be active

	  + no ending events have been defined (i.e., *paths has not been
	    used)

       In fact, violation of any of the last three conditions will override
       *fast and use the regular critical path search.












































					3-7












       4.  Program Control

       4.1  Invocation

       The pert program requires an initial input file, called the "level 0"
       file.  This can either be a text file name in the local file system,
       or the string "*keybd", indicating that the keyboard is the level 0
       source of commands.  This becomes important when the *init command is
       used (see below).

       4.1.1  HPUX  The pert program usage is as follows:

	    pert [- | file]

       When invoked with no options, the program will prompt for a UNIX
       pathname to be used as the source file.  The string *keybd may be
       entered in response, in which case the standard input will be used,
       but prompts will be issued when looking for commands or data.  The
       filename option on the command line functions the same way, although
       care should be taken that the shell does not interpret the asterisk.

       When invoked with the - option, the standard input will be taken as
       input, just as for the *keybd source name, but no prompts will be
       issued.  Thus the program can be placed at the end of a pipe.

       4.1.2  Pascal_workstation  The pert program is invoked by executing
       the code file name, just as for any user program.  It will always
       prompt for a source file name, which may be *keybd or can be a valid
       [volume:]filename for a text file.

       4.2  Shell escapes (HPUX only)

       Any time the pert program is expecting a command, it is possible to
       fork a shell to execute a command in the HPUX environment.  The shell
       used is the value of the SHELL environment variable, or /bin/sh by
       default.  The format of the escape is

       *!commandstring

       so "*!sh" will start a nested shell and "*!ls /users/bob" will list
       the named directory.  Upon exit from the shell, the program will
       prompt for another command. Note that the exclamation mark has a
       different meaning on a data line (it initiates comment text).

       4.3  File control

       Some commands in the pert program are used only to direct input from
       various sources and to clear the current data altogether.  They are
       discussed here.




					4-1











	    *echo
		 The *echo command causes each data line to be written to the
		 screen as it is read, as well as some error messages.

	    *prefix {string}
		 This command sets a filename prefix to be used in all
		 filenames for the *stream command.  If no prefix string is
		 given on the command line, a prompt will be made.  This is a
		 literal prefix, not simply a directory or volume name.

	    *end, *return, *stop, <EOF>
		 An input file is read until one of these is seen (EOF is the
		 system end-of-file condition).  When such a condition
		 occurs, input is taken again from the previous level.  If
		 the current file is level 0, the program terminates.

	    *keybd
		 causes input to be taken from the keyboard until an end-of-
		 file condition occurs.  Prompts will be issued, just as for
		 the case of the level 0 file.

	    *stream {filename}
		 takes input from the named file (modified by the current
		 filename prefix) until an end of file condition is seen.  If
		 no filename is given on the command line, a prompt will be
		 issued.

	    *init
		 This command should only be given from the level 0 input
		 file.  It causes all the current data to be cleared, and all
		 plotting and computational options to return to their
		 default values.  All open files except level 0 are closed.
		 The next command should either be new pert data or else a
		 *stream command naming a new data source.

       4.4  Listing control

       Two commands are available for control of data listings. The first
       redirects the listing to a new file:

       *printer {filename}

       The old listing file is closed immediately and the new one opened.

       4.4.1  HPUX  The default listing file is "PERTLIST" in the current
       directory.  To divert the listing to the screen, use filename
       "/dev/tty".  A valid pathname may also be used.

       4.4.2  Pascal_workstation  The default listing file is "PRINTER:",
       i.e., the default printer is expected to be online. To divert the
       listing to the screen, use "CONSOLE:".  A filename in a local disc or



					4-2











       memory volume may also be used.

       The second listing command is

       *pagesize {n}

       and changes the number of lines per page to n.  The default pagesize
       is 58 lines, unless the listing file has been changed to the screen,
       for which it is 20 lines.

       4.5  Plotting control

       This section discusses general plotting control commands.  Specific
       commands for aspects of the plot output are discussed in later
       sections.

       4.5.1  Plotting_devices  For each execution of the pert program, the
       available plotting devices must be described. It is usual to create a
       generally available file describing the system configuration and
       *stream-ing it once in each execution. The *devices command is
       additive, so a default configuration can be extended.  An existing
       device declaration will be replaced if a device identifier (devid
       below) matches one already declared.

       4.5.1.1  HPUX  The *devices command is followed by a set of lines of
       the form

       devid isterm wspname devname [pipe]

       where   devid is a 1-5 character, uppercase device identifier
	       isterm is a "1" if the device is a terminal,
		       "2" if the device is a 200-series HPUX console,
		       else "0"
	       wspname is the pathname of the AGP workstation program
		       for this device
	       devname is the pathname of the device special file for
		       this device
	       pipe is an optional command line beginning with "|", into
		       which spooled output is sent instead of to the
		       spool file

       For the special case of terminals, the devname can be "/dev/tty".
       Also, the terminal used for the windowing feature must have devid
       "TTY".  The *devices command must be input before the first *plot
       command, otherwise a "Devices not set" message will be issued.  Any
       non-terminal device allows spooled plots.  The recommended place for
       this system-wide file is /usr/lib/pertdevices.

       4.5.1.2  Pascal_workstation  The *devices command is followed by a set
       of lines of the form




					4-3











       devid sssbb

       where   devid is a 1-5 character, uppercase device identifier
	       sssbb is the selectcode*100 + busaddress of the device

       The devid "CRT" is predefined to be the screen, which will be used for
       the windowing feature.  In order for plots to be spooled to the
       device, it must be supported by the DGL Display_Finit routine (see
       Pascal Procedure Library User's Manual; some common choices that are
       supported are 9872C, 7470A, 7580A).

       4.5.2  Plot_spooling  The pert program supports spooling of plot
       output to a file, for disposal to a device at a later time.  A file
       must be specified if plot output is to be spooled.  This file is
       rewritten at each *plot command.  The following command allows a new
       filename to be specified:

       *spoolfl [filename]

       4.5.2.1  HPUX  The default filename is "PERTPLOT" in the current
       directory.  Any valid pathname can be used, and in fact if it is a
       device special file, plots can be sent directly to a device that the
       graphics driver does not recognize (although the result is not
       guaranteed to be intelligible).  Plots cannot be spooled to devices
       designated as terminals by the *devices command.

       Note that if the optional pipe is given in *devices for a specific
       device, that command is used instead of appending to the spoolfile,
       and a temporary file will be used for the plot data.  Note: only D
       size plots may be spooled to a 758x plotter.

       4.5.2.2  Pascal_workstation  The default filename is "PERTPLOT" in the
       current volume.  Any valid filename can be used.

       4.5.3  Plot_command  The main plotting command is

       *plot {devid [papersize [penct]]}

       where   devid is a device identifier as defined in the *devices
		       command, except that it need not be uppercase
	       papersize is a single character from the set a,b,c,d,e.
	       penct is an integer number of pen colors to employ

       If no parameters are specified on the command line, and there is only
       one defined device, that device will be chosen.  If there are no
       parameters but more that one device, the program will prompt for a
       device id, supplying the available choices in parentheses and also
       possibly a default in square brackets.  The default is the last device
       used for a plot and will be empty for the first instance of *plot.  If
       an error occurred during the last attempt to initialize a device, the
       default will be an ABORT of the plot command.



					4-4











       For the screen device (all terminal devices on HPUX), the default
       paper size is "b".  For non-terminals, if no size is specified on the
       command line, a prompt will be made.  In either case, paper size
       affects the scaling of lettering and indirectly the amount of vertical
       and horizontal space available for activity plotting.  If a certain
       size is specified and the plot is output in that true size, the
       default lettering should be about 12 characters per inch.  Any paper
       size can be specified for the terminal; this allows proportioning to
       be observed on the screen.  (However, in order to specify the paper
       size, the devid must be present.)

       If not a screen device, the program attempts to set device display
       limits to the specified paper size.  The limits will default if the
       attempt fails (e.g., if a D size plot is sent to a B size plotter),
       but the proportional sizes of lettering will be preserved.

       The default number of pens is 4 for all devices (assumes plotters with
       less pens will default to pen 1 for numbers over the limit).  The
       number of pens used has some affect on linestyle choices.  Here are
       the differences by pen count:

	    1 - This assumes one black pen in stall one. The critical path is
		 distinguished by linestyle.

	    2,3 - The pen in stall one is used for the activities, events,
		 and labels. The pen in stall two is used for timeline and
		 borders.  The critical path is distinguished by linestyle.

	    4 - Pen one is used for activities and activity labels, timeline,
		 and borders.  Pen two is used for critical path or negative
		 slacks (if *showslack on).  Pen three is used for positive
		 slacks (if *showslack on).  Pen four is used for events and
		 event labels.

	    5,6,7,8 - As for four pens except the highest pen is used for
		 borders.

       When multiple critical paths are being plotted, a pen from 2 through 8
       is assigned to each ending event, in the order given in *paths.  Thus
       it is advisable to limit the number of ending events to be used to one
       less than the available pen colors. More than three or four ending
       events will probably cause a great deal of clutter in the output. The
       paths to each event are distinguished by linestyle in a set order.  A
       legend is plotted at the right margin.

       4.5.4  Basic_Plot_Layout  The general format for plot output is as
       follows: A rectangular border is plotted.  Beneath the top edge, the
       chart title is plotted if one has been defined.  In the upper right
       corner, a label indicates what time estimate (average, low, middle,
       high) was used for this plot.  Along the left edge, the group labels
       are plotted, right justified.  Groups are plotted in the order the



					4-5











       order they are named in *groups input, so the plot can be rearranged
       to eliminate some clutter by shuffling the groups data. Along the
       bottom edge, a second horizontal line defines the boundary of the
       chart data area and is also used as the week scale.  Below it are
       drawn the dates of the first Monday in each month, the ending date of
       the chart, and the starting date as well.  At the right margin, a
       legend will be drawn if multiple critical paths are plotted, otherwise
       this margin will be blank.

       The remaining interior area is used for activity and event plotting.
       The vertical space is divided among the plotting groups.  The
       horizontal space is mapped to the time span of the chart data.  All
       the events in a group are plotted as circles in a horizontal line to
       the right of the group label, placed according to their dates.
       Activities are drawn as labelled lines connecting events.

       In the event that some contradictions are introduced in the data by
       fixed events, some activities will be "forced".  Forced activities are
       plotted as double lines and a warning message is issued to the screen.
       Exactly what activities are forced depends on the
       *earlytimes/*latetimes option described below. In any case, the data
       must be changed when this happens.

       The program does not attempt to avoid overlaps between activity and
       event labels, nor does it space groups to allow for tilted labels
       except at the top of the plot.

       When a plot is being spooled, a message is displayed to the screen for
       the user's information.

       4.5.5  General_Options

	    *scale {n}
		 changes the scale factor for lettering and event circle
		 sizes (default is 1.0).  This is a real number so fine
		 adjustment is possible.  The recommended range is from 0.5
		 to 3.0 .  Beyond about 3 or 4, the event circles will
		 overlap and the plot will become illegible.

	    *fineprint
		 is equivalent to *scale 0.8 .

	    *latetimes
		 causes the late time estimates to be used for all events.
		 This has the effect of sliding entire sequences of
		 activities to their latest possible dates, sometimes
		 resulting in a potentially better distribution of resources.
		 Events on the overall critical path will not move, nor will
		 fixed events.  The *showslack command does not work properly
		 with *latetimes.




					4-6











	    *earlytimes
		 resets the program to use early times estimates for event
		 placement (this is the default).

	    *current
		 lists the current state of most options in the program to
		 the screen (interactive mode only).

	    *default
		 returns all plotting options and a few data processing
		 options to their default values.  The following options are
		 set as shown:

				*actpen         1
				*alltimes       off
				*calendar       off
				*dateevts       off
				*dayscale       off
				*echo           off
				*fast           off
				*fineprint      off
				*labelevts      off
				*latetimes      off
				*nocrit         off
				*numevts        off
				*progcrit       off
				*showcrit       off
				*showslack      off
				*tiltlabel      off
				*truncate       off

       4.5.6  Activity_Labelling  By default, the program tries to fit each
       activity label between the starting and ending event circles.  If it
       fits it is plotted that way; otherwise, the label is tilted at a 70
       degree angle to the activity line.  The time estimate currently in
       effect for computational purposes, which may be the weighted average,
       is plotted beneath and parallel to the line.  The following options
       affect the plotting of activity labels:

	    *alltimes
		 causes all three raw time estimates to be plotted below each
		 activity line.

	    *truncate
		 forces all activity labels to be plotted parallel to the
		 activities, truncating those that don't fit between the
		 ending event circles.

	    *tiltlbl
		 forces all activity labels to be plotted at a 70 degree
		 angle to the activity line.



					4-7











       4.5.7  Event_Labelling  By default, small circles are drawn to
       represent events, and labels are drawn only for those events that have
       an @@ prepended to their labels at least once in the *activities data.
       The labels are drawn horizontally.  No attempt is made to prevent
       event labels from overlapping other data.  The following commands
       affect event labelling:

	    *labelevts
		 causes all events to be labelled.

	    *titlelbl
		 causes all event labels to be tilted at a 70 degree angle to
		 the horizontal.

	    *dateevts
		 plots the day of the month inside each event circle, which
		 is drawn larger to allow two digits.  This is mutually
		 exclusive with *numevts.

	    *numevts
		 plots the number of each event inside the event circle,
		 allowing correlation with the *evtlist output.  This is
		 mutually exclusive with *dateevts.

	    *dayevts
		 draws the project days below the event circle.

       4.5.8  Time_Labelling  By default, the starting and ending dates of
       the pert chart are drawn in the time scale space, respectively beneath
       the left and right margins of the chart.  The starting date may be
       omitted if it falls on a Monday.  A week scale is plotted along the
       bottom, with the first Monday of each month labelled with its date.
       The horizontal axis is linear with respect to project days; holidays
       and weekends occupy no space.  Holidays are indicated by carets
       beneath the time line, underwritten with the number of days allotted.
       Three options affect this part of the plot:

	    *nodates
		 suppresses altogether the date labels along the bottom.
		 This allows more room for the activity data because the time
		 scale space is reduced.

	    *dayscale
		 plots a smaller, secondary scale along the bottom edge of
		 the chart.  This scale is labelled in cumulative project
		 days.

	    *grid
		 causes a dotted vertical grid line to be placed above each
		 first-Monday tic mark.




					4-8











       4.5.9  Activity_Lines  By default, events are placed according to the
       early time estimates for the events.  Activity lines are drawn in the
       pen one color, usually black, except for overall critical path
       elements that are plotted in the pen two color, usually red.

	    *actpen {n}
		 allows a pen number other than one to be used for non-
		 critical path activities.  This is useful if plot is
		 becoming very cluttered.  Since black is a relatively opaque
		 ink, this allows some transparent color to be used for the
		 majority of (usually non-interesting) activities.  Activity
		 labels will still be done in pen one.

	    *progcrit
		 toggles suppression of the overall critical path, both for
		 listing and plotting.  This is useful if the overall path is
		 obscuring other critical paths of interest in the plot.

	    *showcrit
		 allows the pert program to append the necessary non-plotting
		 groups to the plotting set in order to show the overall
		 critical path.  Normally, if the path leaves the plotting
		 groups it just disappears from the plot. Groups declared as
		 non-plotting (using the @@ sign) will be placed according to
		 declaration order.  The program will attempt to place
		 undeclared groups near other groups involving the same part
		 of the overall critical path.

	    *showslack
		 plots the free slack, or difference between the early and
		 late estimates for the starting event of each activity, in
		 color as a part of the activity line.  Positive slack (extra
		 days) are shown in green (pen three), with the estimated
		 length of the activity shown in black.  In the case where an
		 activity has negative free slack, the proportion that is
		 negative is shown in red (pen two).  This condition occurs
		 when the early start date (computed forward) is later than
		 the late start date (computed backward).  See also the note
		 about forced activities, under the general plot layout
		 discussion.  Since slack is computed forward from the start,
		 this feature will not work correctly with *latetimes.

	    *velum
		 uses a lesser pen force and acceleration appropriate to
		 plotting on velum paper.  Some plotters do not support these
		 output escapes, so error messages may appear.

       4.5.10  Title  A title can be plotted across the top of the pert
       chart.  The command is

       *title {string}



					4-9











       where string is at most 80 characters.  If lettering has been scaled
       up, the full length of the title may not fit.  In this case the
       program will prompt for a shorter title.

       4.5.11  Windowing  For terminals with locators, it is possible to view
       parts of a plot in greater detail on the screen.  The device id is
       assumed (HPUX:"TTY"; Pascal workstation:"CRT"), so a special *devices
       command may be needed in order to use this feature.  Windowing is a
       mode in the pert program: while in effect, any *plot command will
       cause the sequence described below to occur.

       When windowing mode is on, no prompts for device, paper size, or pen
       count should be made in response to the *plot command.  Instead, a
       quick plot of the entire pert chart, without labels or event circles,
       will be drawn.  The locator will then be enabled and the graphics
       cursor will appear in the center of the plot.  The cursor should be
       moved to the lower left corner of the desired window and a carriage
       return entered.  Then the cursor should be moved to the upper right
       corner of the window and another return entered.  The aspect ratio of
       the window should be the same as the screen to avoid distortion.

       The program will then proceed to plot the data inside the window,
       clipping vectors and text as necessary.  Currently no heuristics are
       applied to rule out data completely outside the window, so the
       clipping performance is dependent on the graphics package in use.  A
       progress message is displayed to show what type of data is currently
       be plotted--this gives comfort when delays are long.

	    *window
		 turns on window mode.

	    *nowindow
		 turns it off.

       4.5.11.1  HPUX  The lower left corner is marked with a small crosshair
       after it is chosen, for reference in choosing the upper right corner.
       (Many terminals do not provide a rubber band box echo.) Graphics
       cursor motion is dependent on the terminal, but usually requires arrow
       keys.

       4.5.11.2  Pascal_workstation  A rubber band box is displayed to show
       the window as the upper right corner is sought.  The knob is used for
       cursor motion, unshifted for horizontal motion and shifted for
       vertical.










					4-10












       5.  Command Summary

       5.1  Data control

       __________________________________________________________________________
      | Command     |  Description                                              |
      |_____________|___________________________________________________________|
      | *groups     |  precedes lines of the form                               |
      |             |    [@@]token [grouplabel][:offset]                         |
      | *activities |  precedes lines of the form                               |
      |             |    strtev:grptok endev:grptok [actlbl]:time1 [time2 time3]|
      | *date       |  precedes one line of the form                            |
      |             |    mm dd yy                                               |
      | *events     |  precedes lines of the form                               |
      |             |    evt:grptok mm dd yy                                    |
      | *paths      |  precedes lines of the form                               |
      |             |    evt:grptok pathct                                      |
      | *holidays   |  precedes lines of the form                               |
      |             |    mm dd yy [ct]                                          |
      |_____________|___________________________________________________________|
      | *calendar   |  use calendar days instead of working (def off)           |
      | *average    |  use weighted average time estimates (def)                |
      | *optimistic |  use the low time estimates                               |
      | *probable   |  use the middle time estimates                            |
      | *pessimistic|  use the high time estimates                              |
      |_____________|___________________________________________________________|
      | *grplist    |  list groups                                              |
      | *evtlist    |  list events                                              |
      | *actlist    |  list activities (raw data)                               |
      | *timelist   |  list activities (processed data)                         |
      | *forcedlist |  list activities containing data                          |
      |             |  contradictions                                           |
      | *critlist   |  list overall plus specified                              |
      |             |  critical paths                                           |
      |_____________|___________________________________________________________|


















					5-1











       5.2  Program control

       5.2.1  File_control

       __________________________________________________________________________
      | Command Description|                                                    |
      |____________________|____________________________________________________|
      | *echo              |  echo data input lines to screen (toggles; def off)|
      | *prefix {string}   |  set prefix for stream file names                  |
      | *end               |                                                    |
      | *return            |                                                    |
      | *stop              |  signify end of input file                         |
      | *keybd             |  begin taking input from keyboard or standard input|
      | *stream {filename} |  begin taking input from named file                |
      | *init              |  clear all data and prepare to take new data input |
      | *!string           |  submit string to a subshell for execution         |
      |____________________|____________________________________________________|

       5.2.2  Listing_control

       _________________________________________________________________
      | Command Description|                                           |
      |____________________|___________________________________________|
      | *printer {filename}|  redirect listings to named file          |
      | *pagesize {n}      |  set listing page size to n lines (def 58)|
      |____________________|___________________________________________|




























					5-2











       5.2.3  Plotting_control


       (*) indicates that option toggles if repeated
       ____________________________________________________________________________
      | Command Description         |                                             |
      |_____________________________|_____________________________________________|
      | *devices                    |  precedes lines of the form                 |
      |                             |  (HPUX)   devid isterm wsp dev [pipe]       |
      |                             |  (Pascal) devid sssbb                       |
      | *spoolfl {filename}         |  redirect plot output to named file         |
      | *plot {devid [paper [pens]]}|  plot to indicated device                   |
      |_____________________________|_____________________________________________|
      | *scale {n}                  |  set scale factor to n (def. 1)             |
      | *fineprint                  |  set scale factor to 0.8                    |
      | *current                    |  list current option settings               |
      | *default                    |  reset plot options to defaults             |
      | *fast                       |  use fast critical path algorithm (*)       |
      | *latetimes                  |  use late dates for event placement         |
      | *nocrit                     |  suppress all critical path computations (*)|
      | *earlytimes                 |  use early dates for event placement        |
      |_____________________________|_____________________________________________|
      | *alltimes                   |  plot all 3 times under activities (*)      |
      | *truncate                   |  plot all activity labels parallel (*)      |
      | *tiltlbl                    |  plot all activity labels angled (*)        |
      |_____________________________|_____________________________________________|
      | *labelevts                  |  plot all event labels (*)                  |
      | *tiltelbl                   |  angle all plotted event labels (*)         |
      | *dateevts                   |  plot day of month in event circles (*)     |
      | *numevts                    |  plot event number in event circles (*)     |
      | *dayevts                    |  plot project days below events (*)         |
      |_____________________________|_____________________________________________|
      | *nodates                    |  suppress time scale labelling (*)          |
      | *dayscale                   |  plot project days scale (*)                |
      | *grid                       |  plot vertical grid marks at Mondays (*)    |
      |_____________________________|_____________________________________________|
      | *title {string}             |  define chart title                         |
      |_____________________________|_____________________________________________|
      | *actpen {n}                 |  draw activity lines in pen number n (def 1)|
      | *progcrit                   |  suppresses plot of overall path (*)        |
      | *showcrit                   |  force plotting of critical path (*)        |
      | *showslack                  |  plot free slack for each activity (*)      |
      | *velum                      |  use pen force for velum plotting           |
      |_____________________________|_____________________________________________|
      | *window                     |  turn on window mode                        |
      | *nowindow                   |  turn off window mode                       |
      |_____________________________|_____________________________________________|







					5-3





















				 Pert User's Guide


				     Ron Rogers
				      May 1983

				     John Waitz
				 September 24, 1984




































				       - i -











				      CONTENTS


       1.  Manual Organization.........................................   1-1
	   1.1  Notation...............................................   1-1

       2.  Pert Chart Terminology......................................   2-1
	   2.1  Events.................................................   2-1
	   2.2  Activities.............................................   2-1
	   2.3  Groups.................................................   2-1
	   2.4  Times..................................................   2-1
	   2.5  Critical Paths.........................................   2-2
	   2.6  Fixed events...........................................   2-2

       3.  Data Input..................................................   3-1
	   3.1  General Format Information.............................   3-1
	   3.2  Groups.................................................   3-1
	   3.3  Activities.............................................   3-3
	   3.4  Times and Dates........................................   3-4
	   3.5  Fixed Events...........................................   3-5
	   3.6  Critical Paths.........................................   3-5

       4.  Program Control.............................................   4-1
	   4.1  Invocation.............................................   4-1
		4.1.1   HPUX...........................................   4-1
		4.1.2   Pascal workstation.............................   4-1
	   4.2  Shell escapes (HPUX only)..............................   4-1
	   4.3  File control...........................................   4-1
	   4.4  Listing control........................................   4-2
		4.4.1   HPUX...........................................   4-2
		4.4.2   Pascal workstation.............................   4-2
	   4.5  Plotting control.......................................   4-3
		4.5.1   Plotting devices...............................   4-3
			4.5.1.1   HPUX   4-3
			4.5.1.2   Pascal workstation   4-3
		4.5.2   Plot spooling..................................   4-4
			4.5.2.1   HPUX   4-4
			4.5.2.2   Pascal workstation   4-4
		4.5.3   Plot command...................................   4-4
		4.5.4   Basic Plot Layout..............................   4-5
		4.5.5   General Options................................   4-6
		4.5.6   Activity Labelling.............................   4-7
		4.5.7   Event Labelling................................   4-8
		4.5.8   Time Labelling.................................   4-8
		4.5.9   Activity Lines.................................   4-9
		4.5.10  Title..........................................   4-9
		4.5.11  Windowing......................................  4-10
			4.5.11.1  HPUX  4-10
			4.5.11.2  Pascal workstation  4-10

       5.  Command Summary.............................................   5-1



				       - ii -











	   5.1  Data control...........................................   5-1
	   5.2  Program control........................................   5-2
		5.2.1   File control...................................   5-2
		5.2.2   Listing control................................   5-2
		5.2.3   Plotting control...............................   5-3

















































				      - iii -




$
@
