In this example, a simple software development project is built from scratch, starting with an empty Activity data set. PROC PM is invoked with an Activity data set that has no observations and just a few variables that are required to start the procedure. In addition to the Activity data set, a Project data set is also defined that is used to save the display attributes of the PM window to be used between successive invocations of the procedure. The following program invokes PROC PM and opens a PM window that enables you to enter project data. The initial window is shown in Output 5.1.1.
Note that the PROJNAME= option is used in the PROC PM statement. This value is used to label the PM window. Also specified in the PROC PM statement is the PROJECT= option that identifies the project attribute data set. The activities in the project follow a weekday calendar which is indicated to PROC PM by specifying the INTERVAL=WEEKDAY option. In the PM window, the weekends are shaded gray in the Gantt View.
/* Initialize the Activity data set */ data software; length activity $20.; input activity $ actid succid pntid duration; datalines; ;
data softattr; length projattr $8. pratcval $200.; input projattr pratnval pratcval; datalines; ;
proc pm data=software project=softattr date='1mar04'd interval=weekday projname='Software Project' out=softout1; act actid; succ succid; project pntid; duration duration; id activity; run;
Output 5.1.1: Initial PM window
In the PM window, enter the following tasks with the corresponding durations in the Table View:
Design 5 Develop 10 Document 8 Test 8 Ship 0
As each task is entered, the Schedule columns in the Table View are updated with the early and late start times, and the Early Schedule bars appear in the Gantt View. Output 5.1.2 shows the PM window after the five tasks have been entered. To view the Schedule columns, you can scroll the Table View to the right or use the View menu (Figure 5.7) to move the Schedule columns to the left.
Output 5.1.2: List of Tasks in the Software Project
To enter precedence constraints between two activities, such as 'Design' and 'Develop,' draw an arc, using the left mouse button, from the end of the predecessor task to the beginning of the successor task. Use the Gantt View to enter the following precedence constraints:
Design --> Develop Design --> Document Develop --> Test Test --> Ship
Output 5.1.3 shows the Software Project as the last precedence constraint is being drawn. Note that, in this view of the PM window, the Schedule columns have been moved to the left, the grid lines in the Gantt View have been turned off (using the menu in Figure 5.12), and the Gantt View has been scrolled to the right to bring the end of the schedule bar for 'Test' into view.
Output 5.1.3: Drawing Precedence Constraints
To check the overall project status, you can bring the Project Summary task into view by selecting View menu (Figure 5.7). Note that the project duration is 23 days. The critical activities are shown in red while the noncritical ones are green. The Summary Task is indicated by vertical cones at the end of its schedule bar.
from theFor the next few examples, the units used in the Gantt View are changed to “Weeks” by using the Axis pop-up menu shown in Figure 5.13, the Summary Task is displayed at the top of the list of activities, and the Activity description columns are shown in the
Table View. To save these window settings in the Project data set, select → → from the Project menu. The view of the project corresponding to these settings is shown in Output 5.1.4. You can end the interactive editing session by closing the window. All the activity and precedence information is saved
in the output data set, SOFTOUT1
, displayed in Output 5.1.5. Note the two sets of observations in this data set: the first contains all the schedule information for all the activities,
and the second lists all the precedence relationships between activities.
Output 5.1.4: Project Schedule
Output 5.1.5: Schedule Data Set
Schedule Data Set |
Obs | OBS_TYPE | PNTID | PROJ_DUR | PROJ_LEV | WBS_CODE | ACTID | SUCCID | duration | PARENT | activity | SUCCESSR | LAG | ALGNDATE | ALGNTYPE | E_START | E_FINISH | L_START | L_FINISH | T_FLOAT | F_FLOAT | ES_ASC | ES_DESC | LS_ASC | LS_DESC |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | SCHEDULE | . | 23 | 0 | 0 | 0 | . | 23 | Project Summary | . | 01MAR04 | 31MAR04 | 01MAR04 | 31MAR04 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
2 | SCHEDULE | 0 | . | 1 | 0.0 | 1 | . | 5 | Project Summary | Design | . | 01MAR04 | 05MAR04 | 01MAR04 | 05MAR04 | 0 | 0 | 1 | 5 | 1 | 5 | |||
3 | SCHEDULE | 0 | . | 1 | 0.1 | 2 | . | 10 | Project Summary | Develop | . | 08MAR04 | 19MAR04 | 08MAR04 | 19MAR04 | 0 | 0 | 2 | 4 | 2 | 4 | |||
4 | SCHEDULE | 0 | . | 1 | 0.2 | 3 | . | 8 | Project Summary | Document | . | 08MAR04 | 17MAR04 | 22MAR04 | 31MAR04 | 10 | 10 | 3 | 3 | 3 | 3 | |||
5 | SCHEDULE | 0 | . | 1 | 0.3 | 4 | . | 8 | Project Summary | Test | . | 22MAR04 | 31MAR04 | 22MAR04 | 31MAR04 | 0 | 0 | 4 | 2 | 4 | 2 | |||
6 | SCHEDULE | 0 | . | 1 | 0.4 | 5 | . | 0 | Project Summary | Ship | . | 01APR04 | 01APR04 | 01APR04 | 01APR04 | 0 | 0 | 5 | 1 | 5 | 1 | |||
7 | LOGIC | . | . | . | 1 | 2 | 5 | Design | Develop | . | . | . | . | . | . | . | . | . | . | . | ||||
8 | LOGIC | . | . | . | 1 | 3 | 5 | Design | Document | . | . | . | . | . | . | . | . | . | . | . | ||||
9 | LOGIC | . | . | . | 2 | 4 | 10 | Develop | Test | . | . | . | . | . | . | . | . | . | . | . | ||||
10 | LOGIC | . | . | . | 4 | 5 | 8 | Test | Ship | . | . | . | . | . | . | . | . | . | . | . |