The PM Procedure

Example 5.1 Defining a New Project

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

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

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

Drawing Precedence Constraints


To check the overall project status, you can bring the Project Summary task into view by selecting Display Summary Task from the 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.

For 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 ProjectPreferencesSave 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

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   .   . . . . . . . . . .