The CPM Procedure

PROC CPM Statement

PROC CPM options ;

The following options can appear in the PROC CPM statement.

ADDACT
ADDALLACT
EXPAND

indicates that an observation is to be added to the Schedule output data set (and the Resource Schedule output data set) for each activity that appears as a value of the variables specified in the SUCCESSOR or PROJECT statements without appearing as a value of the variable specified in the ACTIVITY statement. If the PROJECT statement is used, and the activities do not have a single common parent, an observation is also added to the Schedule data set containing information for a single common parent defined by the procedure.

CALEDATA=SAS-data-set
CALENDAR=SAS-data-set

identifies a SAS data set that specifies the work pattern during a standard week for each of the calendars that are to be used in the project. Each observation of this data set (also referred to as the Calendar data set) contains the name or the number of the calendar being defined in that observation, the names of the shifts or work patterns used each day, and, optionally, a standard workday length in hours. For details about the structure of this data set, see the section Multiple Calendars. The work shifts referred to in the Calendar data set are defined in the Workday data set. The calendars defined in the Calendar data set can be identified with different activities in the project.

COLLAPSE

creates only one observation per activity in the output data set when the input data set for a network in AON format contains multiple observations for the same activity. This option is allowed only if the network is in AON format.

Often, the input data set may have more than one observation per activity (especially if the activity has several successors). If you are interested only in the schedule information about the activity, there is no need for multiple observations in the output data set for this activity. Use the COLLAPSE option in this case.

DATA=SAS-data-set

names the SAS data set that contains the network specification and activity information. If the DATA= option is omitted, the most recently created SAS data set is used. This data set (also referred to in this chapter as the Activity data set) contains all of the information that is associated with each activity in the network.

DATE=date

specifies the SAS date, time, or datetime that is to be used as an alignment date for the project. If neither the FINISHBEFORE option nor any other alignment options are specified, then the CPM procedure schedules the project to start on date. If date is a SAS time value, the value of the INTERVAL= parameter should be HOUR, MINUTE, or SECOND; if it is a SAS date value, interval should be DAY, WEEKDAY, WORKDAY, WEEK, MONTH, QTR, or YEAR; and if it is a SAS datetime value, interval should be DTWRKDAY, DTDAY, DTHOUR, DTMINUTE, DTSECOND, DTWEEK, DTMONTH, DTQTR, or DTYEAR.

DAYLENGTH=daylength

specifies the length of the workday. On each day, work is scheduled starting at the beginning of the day as specified in the DAYSTART= option and ending daylength hours later. The DAYLENGTH= value should be a SAS time value. The default value of daylength is 24 if the INTERVAL= option is specified as DTDAY, DTHOUR, DTMINUTE, or DTSECOND, and the default value of daylength is 8 if the INTERVAL= option is specified as WORKDAY or DTWRKDAY. If INTERVAL=DAY or WEEKDAY and the value of daylength is less than 24, then the schedule produced is in SAS datetime values. For other values of the INTERVAL= option, the DAYLENGTH= option is ignored.

DAYSTART=daystart

specifies the start of the workday. The DAYSTART= value should be a SAS time value. This parameter should be specified only when interval is one of the following: DTDAY, WORKDAY, DTWRKDAY, DTHOUR, DTMINUTE, or DTSECOND; in other words, this parameter should be specified only if the schedule produced by the CPM procedure is in SAS datetime values. The default value of daystart is 9 a.m. if INTERVAL is WORKDAY; otherwise, the value of daystart is equal to the time part of the SAS datetime value specified for the DATE= option.

FBDATE=fbdate

specifies a finish-before date that can be specified in addition to the DATE= option. If the FBDATE= option is not given but the FINISHBEFORE option is specified, then fbdate $=$ date. Otherwise, fbdate is equal to the project completion date. If fbdate is given in addition to the DATE= and FINISHBEFORE options, then the minimum of the two dates is used as the required project completion date. See the section Scheduling Subject to Precedence Constraints for details about how the procedure uses the date and fbdate to compute the early and late start schedules.

FINISHBEFORE

specifies that the project be scheduled to complete before the date given in the DATE= option.

FIXFINISH

specifies that all finish tasks are to be constrained by their respective early finish times. In other words, the late finish times of all finish tasks do not float to the project completion time.

HOLIDATA=SAS-data-set
HOLIDAY=SAS-data-set

identifies a SAS data set that specifies holidays. These holidays can be associated with specific calendars that are also identified in the HOLIDATA= data set (also referred to as the Holiday data set). The HOLIDATA= option must be used with a HOLIDAY statement that specifies the variable in the SAS data set that contains the start time of holidays. Optionally, the data set can include a variable that specifies the length of each holiday or a variable that identifies the finish time of each holiday (if the holidays are longer than one day). For projects involving multiple calendars, this data set can also include the variable specified by the CALID statement that identifies the calendar to be associated with each holiday. See the section Multiple Calendars for further information regarding holidays and multiple calendars.

INTERVAL=interval

requests that each unit of duration be measured in interval units. Possible values for interval are DAY, WEEK, WEEKDAY, WORKDAY, MONTH, QTR, YEAR, HOUR, MINUTE, SECOND, DTDAY, DTWRKDAY, DTWEEK, DTMONTH, DTQTR, DTYEAR, DTHOUR, DTMINUTE, and DTSECOND. The default value is based on the format of the DATE= parameter. See the section Using the INTERVAL= Option for further information regarding this option.

INTPER=period

requests that each unit of duration be equivalent to period units of duration. The default value is 1.

NACTS=nacts

specifies the number of activities for which memory is allocated in core by the procedure. If the number of activities exceeds nacts, the procedure uses a utility data set for storing the activity array. The default value for nacts is set to nobs, if the network is specified in AOA format, and to nobs$\times ($nsucc$ + 1)$, if the network is specified in AON format, where nobs is the number of observations in the Activity data set and nsucc is the number of variables specified in the SUCCESSOR statement.

NADJ=nadj

specifies the number of precedence constraints (adjacencies) in the project network. If the number of adjacencies exceeds nadj, the procedure uses a utility data set for storing the adjacency array. The default value of nadj is set to nacts if the network is in AON format, and it is set to nacts$\times 2$ if the network is in AOA format.

NNODES=nnodes

specifies the size of the symbolic table used to look up the activity names (node names) for the network specification in AON (AOA) format. If the number of distinct names exceeds nnodes, the procedure uses a utility data set for storing the tree used for the table lookup. The default value for nnodes is set to nobs$\times 2$ if the network is specified in AOA format and to nobs$\times ($nsucc$ + 1)$ if the network is specified in AON format, where nobs is the number of observations in the Activity data set and nsucc is the number of variables specified in the SUCCESSOR statement.

NOUTIL

specifies that the procedure should not use utility data sets for memory management. By default, the procedure resorts to the use of utility data sets and swaps between core memory and utility data sets as necessary if the number of activities or precedence constraints or resource requirements in the input data sets is larger than the number of each such entity for which memory is initially allocated in core. Specifying this option causes the procedure to increase the memory allocation instead of using a utility data set; if the problem is too large to fit in core memory, PROC CPM will stop with an error message.

NRESREQ=nres

specifies the number of distinct resource requirements corresponding to all activities and resources in the project. The default value of nres is set to nobs$\times $nresvar $\times 0.25$, where nobs is the number of observations in the Activity data set, and nresvar is the number of RESOURCE variables in the Activity data set.

OUT=SAS-data-set

specifies a name for the output data set that contains the schedule determined by PROC CPM. This data set (also referred to as the Schedule data set) contains all of the variables that were specified in the Activity data set to define the project. Every observation in the Activity data set has a corresponding observation in this output data set. If PROC CPM is used to determine a schedule that is not subject to any resource constraints, then this output data set contains the early and late start schedules; otherwise, it also contains the resource-constrained schedule. See the section OUT= Schedule Data Set for information about the names of the new variables in the data set. If the OUT= option is omitted, the SAS system creates a data set and names it according to the DATAn naming convention.

RESOURCEIN=SAS-data-set
RESIN=SAS-data-set
RIN=SAS-data-set
RESLEVEL=SAS-data-set

names the SAS data set that contains the levels available for the different resources used by the activities in the project. This data set also contains information about the type of resource (replenishable or consumable), the calendar associated with each resource, the priority for each resource, and lists, for each resource, all the alternate resources that can be used as a substitute. In addition, this data set indicates whether or not the resource rate affects the duration. The specification of the RESIN= data set (also referred to as the Resource data set) indicates to PROC CPM that the schedule of the project is to be determined subject to resource constraints. For further information about the format of this data set, see the section RESOURCEIN= Input Data Set.

If this option is specified, you must also use the RESOURCE statement to identify the variable names for the resources to be used for resource-constrained scheduling. In addition, you must specify the name of the variable in this data set (using the PERIOD= option in the RESOURCE statement) that contains the dates from which the resource availabilities in each observation are valid. Furthermore, the data set must be sorted in order of increasing values of this period variable.

RESOURCEOUT= SAS-data-set
RESOUT=SAS-data-set
ROUT=SAS-data-set
RESUSAGE=SAS-data-set

names the SAS data set in which you can save resource usage profiles for each of the resources specified in the RESOURCE statement. This data set is also referred to as the Usage data set. In the Usage data set, you can save the resource usage by time period for the early start, late start, and resource-constrained schedules, and the surplus level of resources remaining after resource allocation is performed.

By default, it provides the usage profiles for the early and late start schedules if resource allocation is not performed. If resource allocation is performed, this data set also provides usage profiles for the resource-constrained schedule and a profile of the level of remaining resources.

You can control the types of profiles to be saved by using the ESPROFILE (early start usage), LSPROFILE (late start usage), RCPROFILE (resource-constrained usage), or AVPROFILE (resource availability after resource allocation) options in the RESOURCE statement. You can specify any combination of these four options. You can also specify the ALL option to indicate that all four options (ESPROFILE, LSPROFILE, RCPROFILE, AVPROFILE) are to be in effect. For details about variable names and the interpretation of the values in this data set, see the section RESOURCEOUT= Usage Data Set.

RESOURCESCHED= SAS-data-set
RESSCHED=SAS-data-set
RSCHEDULE=SAS-data-set
RSCHED=SAS-data-set

names the SAS data set in which you can save the schedules for each resource used by any activity. This option is valid whenever the RESOURCE statement is used to specify any resource requirements. The resulting data set is especially useful when resource-driven durations or resource calendars cause the resources used by an activity to have different schedules.

SETFINISHMILESTONE

specifies that milestones (zero duration activities) should have the same start and finish times as the finish time of their predecessor. In other words, this option enables milestones that mark the end of the preceding activity to coincide with its finish time. By default, if a milestone M is a successor to an activity that finishes at the end of the day (say 15Mar2004), the start and finish times for the milestone are specified as the beginning of the next day (16Mar2004). This corresponds to the definition of start times in the CPM procedure: all start times indicate the beginning of the date specified. For zero duration activities, the finish time is defined to be the same as the start time. The SETFINISHMILESTONE option specifies that the start and finish times for the milestone M should be specified as 15Mar2004, with the interpretation that the milestone’s schedule corresponds to the end of the day. There may be exceptions to this definition if there are special alignment constraints on the milestone. For details, see the section Finish Milestones.

SUPPRESSOBSWARN

turns off the display of warnings and notes for every observation with invalid or missing specifications.

WORKDATA=SAS-data-set
WORKDAY=SAS-data-set

identifies a SAS data set that defines the work pattern during a standard working day. Each numeric variable in this data set (also referred to as the Workday data set) is assumed to denote a unique shift pattern during one working day. The variables must be formatted as SAS time values and the observations are assumed to specify, alternately, the times when consecutive shifts start and end. See the section Multiple Calendars for a description of this data set.

XFERVARS

indicates that all relevant variables are to be copied from the Activity data set to the Schedule data set. This includes all variables used in the ACTUAL statement, the ALIGNDATE and ALIGNTYPE statements, the SUCCESSOR statement, and the RESOURCE statement.