PROJECTS II Documentation Glenn Story 1/11/95 Last Updated 07/16/2000 1.0 INTRODUCTION This document describes how to use PROJ2 (Projects II). PROJ2 is a program designed to keep track of time spent on the tasks associated with various projects. It also creates status reports and can perform various analyses such as actuals vs. estimates. I originally wrote this program to gather the data to help me improve my project estimating skills. There are currently versions of PROJ2 for the following environments: * Windows (9x and NT) * Tandem Guardian * Tandem OSS * MS-DOS * Solaris This program is designed to replace the PROJECTS program which is part of the Organizer series. This program differs from the Organizer series primarily in the way in which data is stored. Organizer programs store their data as ASCII files. PROJ2 stores its data in a set of xBASE data base files. 2.0 INSTALLATION 2.1 WINDOWS VERSION 1. Obtain the file PROJ2.ZIP from one of the following locations: * Web: http://montavista.loc251.tandem.com/Glenn/proj2.zip * Guardian: \foxii.$posix.gsproj2.ibm (The file PROJ2.ZIP contains both the MS-DOS and Windows versions.) 2. From a DOS command prompt, use PKUNZIP to expand the file into a directory where you keep executable files. e.g. pkunzip proj2 3. Step 2 creates the file PROJ2.EXE, PROJ2WIN.EXE, PROJ2UP.EXE, CHECKDB.EXE, SD.EXE, and PBASE.EXE which are the executable programs. (PROJ2 is the MS-DOS PROJECT II program; PROJ2WIN is the Windows Project II program; PROJ2UP and CHECKDB are used when you upgrade to new versions of PROJ2 as described in section 6 of this document. PBASE is an optional program for examining and modifying data bases as a lower level--use at your own risk. SD is used by other programs to let you select a new directory.) 4. Step 2 also creates an empty PROJECT.DBF data base. If this is the first time you are installing PROJ2 on this machine, you should copy this file to a directory where you want to keep your projects data base files. WARNING: Be sure NOT to do this step when re-installing a new version of the software. Otherwise you will overlay your project data base with the empty one. e.g. mkdir \usr\glenn\projects copy project.dbf \usr\glenn\projects\*.* 5. Step 2 also creates a set of .str files. These files are only needed when you upgrade to new versions of PROJ2. These files should be copied to the same directory where you copied project.dbf. WARNING: You MUST copy these files when re-installing a new version of the software. e.g. copy *.str \usr\glenn\projects\*.* 6. You should create the PROJ_DATA environment variable to specify where your PROJ2 data files are to reside. e.g. set PROJ_DATA=\usr\glenn\projects 7. You can optionally create a file containing non-working days (holidays and vacation days). This file is named HOLIDAYS.DAT and contains one date per line in the form yyyy/mm/dd. This same file can also be used by the Organizer programs with the "work days" and "business days" date options. See the Organizer documentation for more details. If you use this file you should specify its location in the ORG_DATA environment variable. e.g. set ORG_DATA=\usr\glenn\org 8. The commands in steps 6 and 7 should be included in your AUTOEXEC.BAT file for Windows 95 and 98. For Windows NT they should be specified in the Environment tab of the "System" properties. (Right-click "My Computer" on the desktop, or double-click "System" under "Control Panel.") 2.2 GUARDIAN VERSION 1. From TACL, FUP DUP the files \FOXII.$POSIX.GSPROJ2.PROJ2, \FOXII.$POSIX.PROJ2UP, \FOXII.$POSIX.PBASE and \FOXII.$POSIX.CHECKDB to your system to a subvolume where you keep executable files. (This could be a private subvolume, or a public subvolume, depending on whether you plan to share the program with others.) e.g. fup dup \foxii.$posix.gsproj2.proj2,* fup dup \foxii.$posix.gsproj2.proj2up,* fup dup \foxii.$posix.gsproj2.pbase,* fup dup \foxii.$posix.gsproj2.checkdb,* (PROJ2 is the actual PROJECT II program; PROJ2UP and CHECKDB are used when you upgrade to new versions of PROJ2 as described in section 6 of this document. PBASE is an optional program for examining and modifying data bases as a lower level--use at your own risk.) 2. If this is the first time you are installing PROJ2 on this machine, from TACL, FUP DUP the file \FOXII.$POSIX.GSPROJ2.PROJECT to your system. You should copy this file to a subvolume where you want to keep your projects data base files. There should be a separate such subvolume (and a separate copy of the PROJECT file) for each PROJ2 user. WARNING: Be sure NOT to do this step when re-installing a new version of the software. Otherwise you will overlay your project data base with the empty one. e.g. fup dup \foxii.$posix.gsproj2.project,myproj.* 3. From TACL, FUP DUP the files \FOXII.$POSIX.GSPROJ2.*STR to your system. You should copy these files to a subvolume where you want to keep your projects data base files. This is the same subvolume referenced in step 2. WARNING: You MUST copy these files when re-installing a new version of the software. e.g. fup dup \foxii.$posix.gsproj2.*str,myproj.* 4. You should create the =PROJ_DATA define to specify where your PROJ2 data files are to reside. e.g. set defmode on set define class map set define file \sys.$vol.myproj.x add define =PROJ_DATA 5. You can optionally create a file containing non-working days (holidays and vacation days). This file is named HOLIDAYS and contains one date per line in the form yyyy/mm/dd. This same file can also be used by the Organizer programs with the "work days" and "business days" date options. See the Organizer documentation for more details. If you use this file you should specify its location in the =ORG_DATA define. e.g. set defmode on set define class map set define file \sys.$vol.mydata.x add define =ORG_DATA 6. The commands in steps 4 and 5 should be included in your TACLCSTM file. 2.3 OSS VERSION 1. From TACL, FUP DUP the file \FOXII.$POSIX.GSPROJ2.OSS to your system. e.g. fup dup \foxii.$posix.gsproj2.oss,* 2. From the OSS shell, use PAX to expand the file into a directory where you keep executable files. (This could be a private directory, or a public directory, depending on whether you plan to share the program with others.) e.g. pax -rvf /G/vol/subvol/oss 3. Step 2 creates the files proj2, proj2up, checkdb, sd, and pbase, which are the executable programs. (proj2 is the actual PROJECT II program; proj2up and checkdb are used when you upgrade to new versions of PROJ2 as described in section 6 of this document. pbase is an optional program for examining and modifying data bases as a lower level--use at your own risk. sd is used by other programs to let you select a new directory.) 4. Step 2 also creates an empty project.dbf data base. If this is the first time you are installing PROJ2 on this machine, you should copy this file to a directory where you want to keep your projects data base files. There should be a separate such directory (and a separate copy of the project.dbf file) for each PROJ2 user. WARNING: Be sure NOT to do this step when re-installing a new version of the software. Otherwise you will overlay your project data base with the empty one. e.g. mkdir /usr/glenn/projects cp project.dbf /usr/glenn/projects 5. Step 2 also creates a set of .str files. These files are only needed when you upgrade to new versions of PROJ2. These files should be copied to the same directory where you copied project.dbf. WARNING: You MUST copy these files when re-installing a new version of the software. e.g. cp *.str /usr/glenn/projects 6. You should create the PROJ_DATA environment variable to specify where your PROJ2 data files are to reside. e.g. export PROJ_DATA=/usr/glenn/projects 7. You can optionally create a file containing non-working days (holidays and vacation days). This file is named holidays.dat and contains one date per line in the form yyyy/mm/dd. This same file can also be used by the Organizer programs with the "work days" and "business days" date options. See the Organizer documentation for more details. If you use this file you should specify its location in the ORG_DATA environment variable. e.g. export ORG_DATA=/usr/glenn/org 8. The commands in steps 6 and 7 should be included in your .profile file. 2.4 SUNOS VERSION 1. From TACL, FUP DUP the file \FOXII.$POSIX.GSPROJ2.SUN to your system. e.g. fup dup \foxii.$posix.gsproj2.sun,* 2. Use FTP to move the file to your workstation. e.g. ~ 59 >ftp foxii Connected to foxii. 220 foxii FTP SERVER T9552D21 (Version 2.9 TANDEM 17DEC93) ready. Name (foxii:story): software.story 331 Password required for SOFTWARE.STORY. Password: 230 User SOFTWARE.STORY logged in. ftp> cd $vol.subvol 250 CWD command successful. ftp> binary 200 Type set to I. ftp> get sun proj2.tar 200 PORT command successful. 150 Opening data connection for sun (130.252.109.108,1785d) (69724 bytes). 226 Binary Transfer complete. local: proj2.tar remote: sun 69724 bytes received in 0.37 seconds (1.9e+02 Kbytes/s) ftp> bye 221 Goodbye. 3. From the shell, use PAX to expand the file into a directory where you keep executable files. (This could be a private directory, or a public directory, depending on whether you plan to share the program with others.) e.g. pax -rvf proj2.tar 4. Step 3 creates the files proj2, proj2up, checkdb, sd, and pbase, which are the executable programs. (proj2 is the actual PROJECT II program; proj2up and checkdb are used when you upgrade to new versions of PROJ2 as described in section 6 of this document. pbase is an optional program for examining and modifying data bases as a lower level--use at your own risk. sd is used by other programs to let you select a new directory.) 5. Step 3 also creates an empty project.dbf data base. If this is the first time you are installing PROJ2 on this machine, you should copy this file to a directory where you want to keep your projects data base files. There should be a separate such directory (and a separate copy of the project.dbf file) for each PROJ2 user. WARNING: Be sure NOT to do this step when re-installing a new version of the software. Otherwise you will overlay your project data base with the empty one. e.g. mkdir /usr/glenn/projects cp project.dbf /usr/glenn/projects 6. Step 3 also creates a set of .str files. These files are only needed when you upgrade to new versions of PROJ2. These files should be copied to the same directory where you copied project.dbf. WARNING: You MUST copy these files when re-installing a new version of the software. e.g. cp *.str /usr/glenn/projects 7. You should create the PROJ_DATA environment variable to specify where your PROJ2 data files are to reside. e.g. korn or bash shell: export PROJ_DATA=/usr/glenn/projects bourne shell: PROJ_DATA=/usr/glenn/projects export PROJ_DATA c shell: setenv PROJ_DATA /usr/glenn/projects 8. You can optionally create a file containing non-working days (holidays and vacation days). This file is named holidays.dat and contains one date per line in the form yyyy/mm/dd. This same file can also be used by the Organizer programs with the "work days" and "business days" date options. See the Organizer documentation for more details. If you use this file you should specify its location in the ORG_DATA environment variable. e.g. korn or bash shell: export ORG_DATA=/usr/glenn/data bourne shell: ORG_DATA=/usr/glenn/data export ORG_DATA c shell: setenv ORG_DATA /usr/glenn/data 9. The commands in steps 7 and 8 should be included in your .profile .login or .bash_profile file. 3.0 USING PROJ2 3.1 COMMAND LINE OPTIONS (This section does not apply to the Windows version, Proj2Win.) To run PROJ2, use one of the following command lines: proj2 This form invokes the interactive mode, where a menu of choices is presented to you. The interactive mode is not further described in this preliminary documentation. It should be generally self-evident what the items do in this section. However, you should read the following section on "DATA ORGANIZATION" for additional information on the data you enter and display via this program. proj2 -f This form lists all overdue tasks. If no task is overdue for a given project, then the number of days until the next task is due is displayed. proj2 -g [project-name task-name] This form lets you start timing a task. You can optionally specify the project name and task name on the command line. If they are omitted you will be promted to enter them. proj2 -s This form lets you stop timing a task. The combination of the -g and -s options lets you keep accurate track of the amount of time spent on a given task. 3.2 DATA ENTRY 3.2.1 Entering Dates You can enter dates in one of several formats. 1. You can enter an absolute date in one of the following formats: yy/mm/dd mm/dd/yy dd-mm-yy mmm dd, yy dd mmm yy where: yy is a two- or four-digit year mm is the numeric month dd is the day of the month mmm is three (or more) character abbreviation for the month name. If you omit the year, and/or month, the current values are used. (If a date in the future or past is expected, and you only enter a single number, it will be taken to be in the next or preceding month if that is necessary to make the date valid.) If you omit the day, 1 is used. For example the following are all equivalent: 88/12/29 12/29/88 dec 12, 1988 Dec. 12, 1988 December 12, 1988 12 dec 88 2. You can enter the word "today". Today's date will be used. 3. You can enter the word "tomorrow". Tomorrow's date will be used. 4. You can enter the word "yesterday". Yesterday's date will be used. 5. You can enter one of the following relative dates: nn days nn weeks nn months nn years nn business days nn work days where nn is any number, optionally preceded by a minus sign. Work days and business days are equivalent. They count all days except Saturdays and Sundays. If you have a file called "holidays.dat" (or just "HOLIDAYS" on a Guardian system) in the same directory (folder, subvolume) as your other Organizer data files, then dates listed in that file (one per line, beginning in column 1) will also be skipped. 6. You can enter a day of the week, which may be spelled out, or may be abbreviated to three or more characters. The next occurrence of the specified day will be entered. For example, if today is Sunday, and you key in "tue", then this coming Tuesday's date will be used. If you use today's day of the week, then you will get a date a week from today. NOTE: in some cases, the date-started and date-ended must not be in the future; therefore, days of the week are interpreted to be in the past week rather than the coming week. 7. If you enter "00/00/00" or "start" then the date used will be 00/00/00, intended to be lower than any date on file. (This format is not valid in all cases.) 8. If you enter "99/99/99" or "end" then the date used will be 99/99/99, intended to be higher than any date on file. (This format is not valid in all cases.) If you enter an invalid date, it is changed to "????????". In circumstances where you enter a date in the future and it would not make sense, it is marked as an error by changing it to "?future?". Likewise, when a date in the past is entered and would not make sense, it is marked as an error by changing it to "??past??". 3.2.2 Moving between Input Fields (This section does not apply to Proj2Win.) Several screens in Organizer programs have multiple input fields on the screen at one time. Normally you enter data into the first field and then press return, which will move the cursor to the next field. Also you can use the following editing keys: +-----------------------------------------+ | | All | IBM PC | +====================+==========+=========+ | Next field | ^N or | | | | return | v* | | | or Tab | | +--------------------+----------+---------+ | Previous field | ^E | ^* | +--------------------+----------+---------+ | Next char. in field| ^D | -> | +--------------------+----------+---------+ |Prev. char. in field| ^S | <- | | | or BS* | | +--------------------+----------+---------+ |1st char. of field | ^A | HOME | +--------------------+----------+---------+ |last char. of field | ^F | END | +--------------------+----------+---------+ |Insert mode toggle | ^T | INS | +--------------------+----------+---------+ | Finished (Note 1) | ^W | | +--------------------+----------+---------+ | Abort (Note 2) | ESC | | +-----------------------------------------+ *BS = backspace *v = down arrow *^ = up arrow NOTES: 1. This key allows you to signal that you have finished entering data without having to move through each field. 2. This key signals that you have changed your mind and the request you have started will not be finished. Also you can use this key with menu or selection input. In all cases it will return one level in the program. 3.3 SELECTING A TASK Proj2 keeps track of the time spent on various tasks within projects. There are two methods for selecting which task to time. 3.3.1 USER-SELECTED TASK One method of selecting a task is for you to simply choose one from the list. The program will first ask you to select a project from the list of projects you have created. It will then ask you to select a task from the tasks within that project. 3.3.2 PROGRAM_SELECTED TASK The other method of selecting a task is to let the program recommend a task for you. When you choose this option, the program will first display a list of categories to be searched. (The meaning of each of these categories will be documented below.) You can choose for each category whether it is to be included within the search. The first time you choose this option after starting PROJ2, all categories will be selected. Subsequently, categories that have no matching tasks, and categories for which yhou have rejected the available choices will be deselected. You can select or deselect whichever categories you wish. The program will then start looking for tasks in each category in turn until a task is found. It will then ask if you want to start that task. If you respond "Y" (for yes) then the indicated task will be chosen and the search will terminate. If you respond "N" (for no) then the program will continue searching for additional tasks in the current category, and then subsequent categories. If the program exausts all categories without finding a suitable task, then it will list all incomplete tasks on the screen for you to choose from. The categories that PROJ2 searches for are as follows: * "Tasks that are overdue". This includes tasks for which the committed end date is earlier than or equal to today's date. * "Tasks that are behind schedule". This includes tasks for which the estimated end date is earlier than the committed end date. * "Tasks that are under their maximum goal". If you have specified a maximum goal for a task, it means you have specified the maximum amount of time you want to spend on that task during one week. * "Tasks that are under their minimum goal". If you have specified a minimum goal for a task, it means you have specified the minimum amount of time you want to spend on that task during one week. * "Projects that are under their goal". If you have specified a goal for a project, it means you have specified a maximum amount of time you want to spend on that task during one week. * "The Task that is due the soonest". This is the task which has the soonest estimated completion date. For all of the above categories except "Projects that are under their goal", the selected task is checked to see if it is dependent on an earlier task. The task that is actually presented is the earliest task that in the dependency chain that is not completed. 4.0 DATA ORGANIZATION 4.1 FILES The files used by PROJ2 are xBASE format files. If you have dBASE, FoxPro, or one of the other xBASE complient systems, you should be able to use that system to examine these files. There are three types of files: the projects file, tasks files, and log files. 4.1.1 PROJECTS FILE The projects data base has one entry for each project you define. There is only one projects data base file and it has the following name: OSS: project.dbf SunOS: project.dbf MS-DOS and Windows: PROJECT.DBF Guardian: PROJECT The projects data base file has the following fields: Project Description: This is the name displayed in menus and reports. It may take any form you desire up to the limit of the size of the input field. This field is set when you add a project, and may be changed with the modify-project function. Task file name: This is the name of the tasks data base file to be associated with this project. The tasks data base file will be created automatically when you add a new project. This file name must conform to the naming conventions of the operating system under which you are running. Log file name: This is the name of the log data base file to be associated with this project. The log data base is created automatically when you add a new project. However, the use of creation and use of this file are optional: If you leave the log file name blank when you create a project, then no log file will be created. The following guidelines should be used in naming task and log files: 1. It is recommended, although not required, that you do not specify any path information in the name. If you don't, then the path name specified in the PROJ_DATA environment variable or DEFINE will be prepended to the file name. 2. It is recommended, although not required, that you do not specify a file extension in the name. If you don't, then PROJ2 will append the following extension, depending on the operating system: OSS: .dbf SunOS: .dbf MS-DOS and windows: .DBF Guardian: (none) If you do supply an extension (i.e. there is a "." anywhere in the name) then no extension will be added by PROJ2. The task and log file name fields are set when you add a new project. They may not be changed thereafter. Proportion of time available: This consists of two numbers which are treated as the numerator and denominator of a fraction. This fraction represents the portion of an average day that you plan to spend on this project. This number is used in projecting when a task will be done. If a task has 2 work days (person days) left to completion, and you set 1/2 as the value of this fraction, then the program will estimate the task will be done in 4 days. This value defaults to 1/2 for new projects. This field may be changed when you add or modify a project. Project is active: If this value is set to true ("T"), then this project's status will be reported by the -f command-line option. Once a project is finished, you should set this value to "F". This prevents the project from showing up when you run "proj2 -f". But, the data is still available for analysis or to help you estimate future projects. This value is automatically set to "T" when you add a new project. It may be altered by the modify-project function. Additionally, if you pick this project for one of the options that updates project status, and if the project is currently marked inactive, you will be asked if you really want to modify this task. If you do, the project-active flag will be set to "T". (Note that PROJ2 will never automatically set the value to "F": you must do that with the "modify-project" function.) Project goal: The amount of time that is the goal for this project each week, expressed in minutes. Max/Min Goal: Specifies whether the project goals represents the maximum or minimum amount of time to be spent on this project. There are also some internal fields that keep track of the amount of time spent each day and each week. 4.1.2 TASKS FILES There is one tasks file for each project. You specify the name of the tasks file when you create the project. Each record in the tasks file represents one task within the project. The following fields can be set when you create a new task: Task number: This number is used by other tasks to reference this task as being a dependency for the other task. A suggested value for this field is shown when you add a new task. Although you can alter the suggestion, it is recommended that you not do so. Task description: This is the description displayed in menus and reports. It can contain any information that will fit in the field. Current estimated start date: This is the date you expect to start the task. You can specify this value, or, if the task is dependent on other tasks, PROJ2 will calculate the value based on when the dependency is scheduled for completion. Current estimated end date: This is the date you expect to complete the task. You can specify this value; PROJ2 will calculate the value based on the estimated start date, estimated work days, external delay, and proportion of time available (in the projects data base). Current estimated work days: This is the number of days (person days) you expect to spend on this task. External delay: This is an expression of expected externally caused delay. This can be in any of the forms acceptable for dates in the Organizer programs. The generally useful forms are "nn work days" and specific dates. This field is usually left blank. If it is filled in, it is incorporated in the computation of estimated end date. Basis of Estimate: The unit of measure for the value used as the basis for estimating the size of the task. The default value is "lines of code". Current Estimate basis: This the number of lines of code or whatever other unit you specified for "basis of estimate". This can be actual lines, non-comentary source lines, statements, or any other unit you wish. You can use this data to track actual vs. estimated code size. PROJ2 does not do any computations on this field, so you can use it for whatever purpose you wish. Dependent on task: this specifies the task number that must be completed before this task can begin. This is initialized as the current task number minus one, i.e., the current task is dependent on the immediately preceding task. However, you can set to this to any other existing task number. This value is used for computing the estimated start date of this task. You can specify 0 for this value, meaning there is no task upon which the current task is dependent. In that case, you must specify the estimated starting date yourself. Comments: This field can contain whatever additional comments you would like to record about this task. Use original (vs. current) dates in list overdue: If this flag is set to True ("T") then the -f command-line option will use the original estimates when reporting whether a task is overdue, or how much time is left to completion. If this flag is set to False ("F") then the -f command-line option will use the current estimates when reporting whether a task is overdue, or how much time is left to completion. Log Comments Required: If this field is true, you will be required to enter a log comment every time to stop working on this task. Task goal: The amount of time that is the goal for this task each week, expressed in minutes. Max/Min Goal: Specifies whether the task goals represents the maximum or minimum amount of time to be spent on this task. There are also some internal fields that keep track of the amount of time spent each day and each week. The following additional fields can be set when you modify an existing task: Original start date, Original end date, Original work days, Original lines of code: These fields are all set automatically from the corresponding current fields, the first time the current fields are set. Actual start date, Actual end date, Actual work days: These fields are set automatically at appropriate points of time by the PROJ2 program (See the table below for details.) Actual estimate basis: This is the actual lines of code (or whatever) produced for this task. You must enter this value from the modify-task screen, as the PROJ2 program has no other mechanism for updating this data. It is intended that this field be based on the same units as the estimated lines of code, although PROJ2 accepts and reports whatever value you specify. Hours:minutes: PROJ2 actually stores actual time consumed on the project in hours and minutes in addition to days, since the latter is not granular enough. Waiting on external event now: Set this field to True ("T") if this task is being held up by an external event. This will cause the status of the task in reports to be shown as [WAITING]. End date committed: If this field is set to True ("T"), then the estimated end date will not be updated when such estimates are updated. However, the end date *will* be recomputed. If the computed estimate is greater than the committed date, a warning will be issued. There are a number of additional fields used internally by PROJ2. One that is important to mention is the active flag, which will be used in the status algorithm, described in the next section. You indirectly set the flag "T" when you time a task. You can specify to reset the active flag from the Projects menu. The following table shows when you can update fields in a tasks data base, and when PROJ2 does so: Field Create Task Update Task Updated by PROJ2 ===== =========== =========== ================ Task description Y Y never Task Number Y Y When you insert a task between two existing tasks Original estimated N Y Copied from current start date estimated start date the first time it is set Original estimated N Y Copied from current end date estimated end date the first time it is set Original estimated N Y Copied from current work days estimated work days the first time it is set Original estimated N Y Copied from current lines of code estimated lines of code the first time it is set Actual start date N Y Set to current date the first time you start timing a task Actual end date N Y Set to the current date when you indicate the task is completed when you stop timing a task Actual work days N N Computed when each time you stop timing a task; also computed from hours:minutes when you update a task Actual lines of code N Y never Dependent Y Y When you insert a task between two existing tasks Comment Y Y never External delay Y Y never Waiting on external event N Y never End date committed N Y never Use original dates Y Y never when looking for overdue Status N N Computed when needed to display in a report. Active N N Set "T" when you stop timing a task; Set "F" upon request from the Projects menu. 4.1.2.1 OPEN-ENDED TASKS PROJ2 includes the concept of an "open ended" task. This is a task for which there is no expected ending date. Open-ended tasks are specified when the task is created or modified by setting the current estimated work days to zero and the external delay to blanks. This will cause PROJ2 to set the estimated end date to as a way of flagging the task. Open-ended tasks are treated differently in several ways: 1. They cannot be specified as a dependent of another task. 2. Estimated calendar days are not computed by the status report. 3. A status report is not displayed when you stop such a task. 4. Overhead tasks are not reported in the overdue report. 4.1.3 LOG FILES Log files are optionally created when you create a new project. A log file is created if you specify a file name when creating the project. Log files are updated each time you invoke the "stop task" function (either from the menu or the command line). The following data is logged for each such occasion: Task name (as entered when the task was created or modified) Description (as entered by you when you stop the task) Current date Current time The log file can be used to create detail or summary reports, covering either the entire life of the project, or a range of dates that you specify when you request the report. 5.0 ALGORITHMS This section contains pseudo-code for the two most important algorithms in this program. 5.1 STATUS The status is computed for reports. IF the task is not ended THEN IF the task is not started THEN status = [ ] ELSE IF active = "T" THEN status = [Active ] ELSE status = [Started] ELSE status = [Done ] IF waiting = "T" THEN status = [Waiting] 5.2 RECOMPUTING ESTIMATED TIMES This procedure is followed automatically whenever you add a new task. You can also request that it be executed from the main menu. IF task is done THEN exit IF dependent <> 0 THEN recursively do this procedure on the dependent IF dependent is done THEN set dependent-date = actual end date of dependent ELSE set dependent-date = current estimated end date of dependent IF current task is started THEN IF the dependent is completed use the actual start date ELSE use the dependent-date + 1 work day as the start date ELSE use the dependent-date + 1 work day as the start date IF task is started THEN set days-est = current estimated work days minus actual work days IF days-est < 1 THEN days-est = 1 ELSE set days-est = current estimated work days set current estimated end date = start-date + ((days-est / portion of time available) work days) IF external delay is non-blank THEN set current estimated end date relative to external delay IF committed end date THEN IF (committed end date in data base) < (just-computed current estimated end date) THEN issue a warning update the date base current estimated end date NOTE: In this algorithm, "work day" is defined as in the Organizer programs; i.e. Monday-Friday except for dates in the holidays.dat file. 6.0 UPDATING TO NEW VERSIONS There are times when a new version of PROJ2 expects new fields in one or more of its data bases. To update your existing data bases to the new format, follow these steps: 1. Rerun the initial installation steps as described in part 1 of this document. Be careful to skip the step where you copy the empty projects data base file to your directory or subvolume. 2. Run the program PROJ2UP which is supplied with this package. This program should be run from the directory or subvolume where you keep your PROJ2 data base files. The program CHECKDB (also supplied with PROJ2) must be in your program search path or in the current directory when PROJ2UP is run.