231-TP-002-001 Bill-of-Materials Procurement Cost Model for the ECS Project Technical Paper Technical Paper--Not intended for formal review or government approval. December 1994 Prepared Under Contract NAS5-60000 RESPONSIBLE ENGINEER James Waterfall /s/ 12/20/94 James Waterfall, Business Manager Date EOSDIS Core System Project SUBMITTED BY Peter G. OÕNeill /s/ 12/20/94 Pete OÕNeill, SI&P Office Manager Date EOSDIS Core System Project Hughes Applied Information Systems Landover, Maryland This page intentionally left blank. Abstract This paper provides a written description of the Commercial off-the-Shelf (COTS) Procurement Cost Model. This model has been used extensively to support proposal and change order cost volume submissions. This model provides the detail Bill-of-Material information required in these cost volumes. Keywords: procurement, cost, model, bill, materials, module, scheduling, data, files, maintenance. This page intentionally left blank. Contents Abstract 1. Introduction 1.1 Purpose 1-1 1.2 Organization 1-1 2. General Overview of the Procurement Cost Model 2.1 Cost Model Functionality 2-1 2.2 Model Structure 2-1 2.2.1 Purchase Module 2-1 2.2.2 Maintenance Module 2-1 3. Description of the Model Operations 3.1 Purchase Module 3-1 3.2 Maintenance Module 3-1 4. Dataflow Diagram 5. Description of Model Files 5.1 File Relationships 5-1 5.2 Common File Issues 5-4 5.3 Work-Breakdown Structure (WBS) File 5-5 5.4 Labor Rate File 5-5 5.5 Loading Rate File 5-6 5.6 Release File 5-6 5.7 Curve File 5-6 5.8 Component File 5-8 5.9 Assembly File 5-8 5.10 Design File 5-9 5.10.1 Design File Traceability 5-9 5.11 Maintenance File 5-12 6. Field Descriptions 7. Processing Descriptions 7.1 Purchase Module Flow Description 7-1 7.2 Maintenance Module Flow Description 7-4 Figures 4-1. ECS Procurement Cost Model: Dataflow Diagram 4-1 5-1. File Relationships for Cost Model Purchase Module 5-2 5-2. File Relationships for Cost Model Maintenance Module 5-3 5-3. Preparation of Design Input File 5-10 Tables 5-1. Data Files 5-1 5-2. Cost Model Modules Specific Relationships 5-4 5-3. Work-Breakdown Structure (WBS) File Schema 5-5 5-4. Labor Rate File Schema 5-5 5-5. Loading Rate File Schema 5-6 5-6. Release File Schema 5-6 5-7. Curve File Schema 5-7 5-8. Component File Schema 5-8 5-9. Assembly File Schema 5-9 5-10. Design File Schema 5-11 5-11. Maintenance File Schema 5-12 6-1. Field Descriptions (1 of 2) 6-1 1. Introduction 1.1 Purpose The purpose of this paper is to provide a written description of the Commercial off-the-Shelf (COTS) Procurement Cost Model. This model has been used extensively to support proposal and change order cost volume submissions. This model provides the detail Bill-of-Material information required in these cost volumes. It should be noted that this is one of two cost estimation models for COTS, the other being the COTS Cost Estimation Model (231-TP-001- 001) which provides a high level ROM type of cost estimate. 1.2 Organization This paper is organized as follows: ¥ Section 1 contains the introduction to this paper. ¥ Section 2 contains the general overview of the Procurement Cost Model. ¥ Section 3 contains a description of the model operations. ¥ Section 4 contains dataflow diagrams of the procurement cost model. ¥ Section 5 contains the descriptions of the model files. ¥ Section 6 contains the field descriptions. ¥ Section 7 contains the processing description. Questions regarding technical information contained within this Paper should be addressed to the following ECS contacts: - Ken Bowyer, SI&P Hardware Engineering, (301)925-0320, kbowyer@eos.hitc.com - Chuck Pross, SI&P Hardware Engineering, (301)925-0716, chuck@eos.hitc.com - Jim Waterfall, Business Manager, (301)925-0738, jwaterfa@eos.hitc.com Questions concerning distribution or control of this document should be addressed to: Data Management Office The ECS Project Office Hughes Applied Information Systems 1616 McCormick Dr. Landover, MD 20785 2. General Overview of the Procurement Cost Model 2.1 Cost Model Functionality The ECS Bill-of-Materials Procurement Cost Model, hereafter referred to as the model, is a life cycle estimating tool used for the estimation of costs associated with the procurement of hardware and software COTS products. The Procurement Cost Model is a database model using Foxpro supported by EXCEL spreadsheets. 2.2 Model Structure The model is composed of two modules: the purchase and the maintenance modules supported by a number of database files which serve as both input and output files. All estimating is performed in the design file. The design file consists of equipment records scheduled over time based on ASSEMBLY and RELEASE table data. 2.2.1 Purchase Module The purchase module, performs the functions of: ¥ Expanding assemblies into components ¥ Scheduling delivery of hardware and software ¥ Costing purchased material over time ¥ Determining final price to customer ¥ Assignment of WBS codes In addition, the purchase module checks the design file for consistency with related records in other files of the model database. This module also sets other data into the design file, which is subsequently used by the maintenance module. 2.2.2 Maintenance Module The maintenance module is the second module of the ECS costing model. It performs the functions of computing: ¥ Vendor provided installation cost / price ¥ Project provided installation cost / price ¥ Monthly maintenance cost / price ¥ Maintenance WBS code As with the purchase module, the maintenance module checks the lookup codes used in the files of the model database. Note that the execution of the purchase module is a prerequisite for the execution of the maintenance module. 3. Description of the Model Operations This section describes how to use each of the modules comprising the model. 3.1 Purchase Module Use of the purchase module starts with the preparation of the model database files: ¥ Design ¥ Component ¥ Assembly ¥ Labor rates ¥ Curves ¥ Loading rates ¥ Work breakdown structure ¥ Maintenance ¥ Release Note that these names are external names, used throughout this documentation for descriptive purposes. The corresponding internal file names are shown below, in the file name description files in Section 5. These internal names will not be used again in this document except in the program code listings, and the file relationship charts in Section 5. To execute the purchase module all database files must be established and checked for relational integrity, (a value used as a pointer reference to data in other files, actually exists in those files). Assuming that no database inconsistencies are found, the model will run to completion with no user intervention required. If errors are encountered, messages on the screen will tell the user what is wrong, and how to proceed (i.e., No such release code). 3.2 Maintenance Module The maintenance module follows the same operational scenario as the purchase module. The purchase module MUST be executed prior to the execution of the maintenance module, no additional database files are required. The maintenance module produces both a one-time install record and monthly maintenance cost records for each item in the design file. 4. Dataflow Diagram The following diagram shows which data files are used by each of the model modules: .c.Figure 4-1. ECS Procurement Cost Model: Dataflow Diagram 5. Description of Model Files The cost model relates data contained in nine data files. Of these, seven serve as input only files, one as an output only file, and one as both an input and output file. These data files are: .c.Table 5-1. Data Files Internal File Name External File Name Type: Input (I), Output (O), Both (B) Description HW_DSIGN Design B The design consists of EQUIP items scheduled over time based on ASSEMBLY and RELEASE table data. Cost and Price are determined by data referenced in the FACTOR and CURVE tables. The design is contained in a series of codes, which designate either components or assemblies of components. EQUIP Component I A Ôshopping listÕ of components used in the design. Table contains information specific to each item such as vendor, model no., description, vendor quotes. MACROS Assembly I A list of assemblies of components, to be used in the design. These assemblies are identified by macro codes, which are a group or listing of components to make up an assembly. Items are grouped together to facilitate scheduling of like items. RELEASE Release I Contains the scheduled release dates(month/year) . FACTOR Loading rate I Contains factors applied to labor or material costs, to convert cost to selling price. JOB_CODE Labor rate I Contains labor rate information for various job codes, currently used for EDS installation labor associated with a given EQUIP item. CURVES Curves I Multi-use file, contains future price changes (discount/escalation) of a particular item of cost. WBS Work- breakdown structure I Contains data used to assign estimated costs to a work-breakdown structure cost account. TEMP Maintenance O An output only file, containing installation, and monthly maintenance costs. Note: See Section 6 for Field Descriptions 5.1 File Relationships The relationships between these data files, are contained within the models two modules (purchase and maintenance), using a series of codes that point to records in various data files. Each of these two modules, view the relationships between the data files slightly differently, as shown in figures 5-1 and 5-2 below. The arrows represent relationships between the files, using pointer codes in one file (arrow tail) that point to similar codes contained in the referenced file (arrow head). .c.Figure 5-1. File Relationships for Cost Model Purchase Module .c.Figure 5-2. File Relationships for Cost Model Maintenance Module Table 5-2 shows the specific relationship between the cost model modules and fields. .c.Table 5-2. Cost Model Modules Specific Relationships Source File Pointer Field Destination File Destination File Indexed On Design code Macros code Design code Component ref_code Design segment+element+site WBS segment+element+site+ptype Design year Loading rates cyear Design year Curves curve_id+year Design relse Release date_code Component curve|maintcurve|instalcurv Curves curve_id+year Component ptype WBS segment+element+site+ptype Assembly expansion Component ref_code Release year Loading rates cyear Design (procedure access - not indexed) Labor rate (N/A) Design wbs WBS wbs 5.2 Common File Issues All files used in the ECS costing model must be in dBase (*.dbf) format, regardless of how the files were originally produced. Spreadsheet programs can be used to enter data into the database files used in the ECS model. The user of a spreadsheet program must be cognizant of the data type of an element that he is entering, to avoid difficulties in converting spreadsheet to database format.. Note: ALL TEXT IN ANY DATABASE FILE MUST BE SHOWN IN UPPERCASE. In the following file descriptions there are fields shown in the schema for which no description is given. These fields are not now being used, but must continue to exist in order for the model to execute. For all schema, the column headed Field Type may contain one of two codes as follows: C = Character field N = Numeric field L = Logical field The column headed Field Length contains the total size of the field, including any decimal digits. The field headed Decimals is the number of decimal digits to be held in the field. 5.3 Work-Breakdown Structure (WBS) File The work-breakdown structure (WBS) file maps SEGMENT, ELEMENT, SITE, and PRODUCT TYPE into a WBS account code. It also maps purchase WBS account codes into maintenance WBS account codes. This file is derived from the ECS contract WBS. .c.Table 5-3. Work-Breakdown Structure (WBS) File Schema Field Name Field Type Field Length Decimals WBS C 13 0 SEGMENT C 7 0 ELEMENT C 6 0 SITE C 5 0 PTYPE C 4 0 MWBS C 13 0 Note: See Section 6 for Field Descriptions 5.4 Labor Rate File The labor rate file contains the EDS standard labor rates for a number of job codes. In addition, the file contains a field that indicates the percentage of that job code effort that is required for an equipment installation. .c.Table 5-4. Labor Rate File Schema Field Name Field Type Field Length Decimals JOBCODE C 6 0 RATE N 5 2 DISTRIB N 4 2 Note: See Section 6 for Field Descriptions 5.5 Loading Rate File The loading rate file contains EDSÕ projected loading rates for both labor and material, by year to be applied to vendor costs. .c.Table 5-5. Loading Rate File Schema Field Name Field Type Field Length Decimals CYEAR C 4 0 LABOR N 10 8 EQUIP N 10 8 Note: See Section 6 for Field Descriptions 5.6 Release File The release file provides scheduled month and year values of releases. This file is derived from the ECS Master Schedule. .c.Table 5-6. Release File Schema Field Name Field Type Field Length Decimals DATE_CODE C 13 0 YEAR C 11 0 MONTH C 10 0 Note: See Section 6 for Field Descriptions 5.7 Curve File The curve file contains discount factors as a function of future years. This allows the model to account for projected price changes (up or down) to be applied to material purchase, maintenance, and installation cost. Each line item in the component file (Section 5.8) is assigned to three curves, one for each of these categories. The base year cost is multiplied by the factor in the appropriate record of this file. The projected price changes are developed by EDS in conjunction with the corporate infrastructure which supports research and development testing, procurement and product support. The two key internal organizations of the EDS Technical Support Group (TSG) are the Technology Resource Acquisition Division (TRA) and the Technical Infrastructure Services Division (TISD). EDS' Technical Resource Acquisition (TRA) Division has the corporate mission to provide corporate-wide support for the procurement of products and services. TRA, as a single procurement organization within EDS, leverages corporate buying power in order to achieve the most competitive prices available. TRA annually coordinates the purchase of the largest volume of COTS hardware and software products outside the US Government. EDS' TISD provides the core technical assessment for all computing and communications that EDS is involved in. TISD collects independent data on new products and emerging technology information. New product data is collected by installing, testing, and analyzing actual product performance. When complete product evaluations have been concluded, TISD selects a cadre of products, or includes the new products in existing solutions, to respond to current or projected technology needs. Recommendations are supported by specific evidence of product performance without vendor bias. Products and technologies are evaluated and recommended based on technical requirements, customer needs, and best price for performance. The EDS internal infrastructure is constantly evaluating new technology and forecasting technology trends. This process will help ensure that ECS systems meet defined requirements and that the systems evolve in concert with new technology advances. Technology assessment requires that vendor claims be assessed in light of ECS project needs and verified for accuracy. EDS obtains information about new technology and monitors technology through master vendor non-disclosure agreements. In preparation of future technology and price forecasts, EDS meets with top executives from the most prominent and innovative firms in the computer industry. The curve file contains discount factors as a function of future years. This allows the model to account for projected price changes (up or down) to be applied to material purchase, maintenance, and installation cost. Each line item in the component file (Section 5.8) is assigned to three curves, one for each of these categories. The base year cost is multiplied by the factor in the appropriate record of this file. .c.Table 5-7. Curve File Schema Field Name Field Type Field Length Decimals CURVE_ID C 12 0 DISCOUNT N 6 4 YEAR C 4 0 Note: See Section 6 for Field Descriptions 5.8 Component File The component file is the Ôshopping listÕ of all possible components to be used in the ECS design. In addition to defining the component reference codes used in the design file, the component file also contains other relevant data associated with each component item. .c.Table 5-8. Component File Schema Field Name Field Type Field Length Decimals REF_CODE C 12 0 CURVE C 12 0 MODEL C 25 0 ITEM C 32 0 MAINT_COST N 10 2 EDSCOST N 12 2 INSTALL_HR N 3 0 PTYPE C 4 0 WARNT_PER N 2 0 INST_COST N 10 2 MAINTCURVE C 12 0 INSTALCURV C 12 0 CALC_INST N 12 2 BACKUP L 1 0 VENDOR C 10 0 POWER92* N 6 2 PWCV* C 12 0 AC* N 6 0 LENGTH* N 5 1 WIDTH* N 5 1 CATEGORY C 1 0 LIST_PR* N 12 2 VEN_DISC* N 5 2 BASIS* C 1 0 GSA* N 12 2 PAGENO* N 5 1 MPAGENO* N 5 1 IPAGENO* N 5 1 DEPT C 4 0 Notes: See Section 6 for Field Descriptions. * = Field Not Being Used in Current Version of Procurement Cost Model 5.9 Assembly File The assembly file contains the grouping of components that comprise the assemblies, or configurations, that are available to be used as elements of the design. The designers are to construct their designs from these higher level assemblies, while the costing process must determine the cost at the component level for audit and contract reporting purposes. The assembly or configuration records are used by the designers to schedule this grouping of components. Bill-of-material reporting can be at either the assembly or component level of detail. .c.Table 5-9. Assembly File Schema Field Name Field Type Field Length Decimals CODE C 12 0 EXPANSION C 12 0 QTY N 5 0 Note: See Section 6 for Field Descriptions. 5.10 Design File This file consists of the design, as provided by the design staff, of equipment to be delivered over time in support of the release schedule. The design staff can enter component and assembly records. During the execution of the purchase process module assembly records are expanded into respective component records. 5.10.1 Design File Traceability The following diagram shows the flow of design requirements from the SPSO Database, the Ad Hoc Working Group on Production (AHWGP), the System Design, the Operations Concept document, requirement specification documents, the Statement of Work and any assumptions through modeling and engineering functions to produce the Design File (the Bill-of-Materials). The SPSO Database and the AHWGP data along with assumptions and the system design are primary inputs to the modeling function. This activity is the primary source of derived performance and capacity requirements that complement the requirement specifications. Outputs of this activity include, but are not limited to, processing requirements (in MIPS or MFLOPS), storage requirements (in MB, GB, or TB), and throughput requirements (in MB/Sec.). A high level overview of modeling activities is provided in the PDR Modeling Plan (243-TP-001-001). These performance requirements from modeling feed the engineering function where trade studies are performed, hardware sizing is completed, and actual configurations are selected from the component and/or assembly file (refer to sections 5.8 and 5.9) to satisfy the performance requirements. The system design along with the requirements specifications drive what COTS software is needed for the selected hardware. In some instances, the Operations Concept document complements requirement specifications as well as modeling results in deriving quantities of hardware and COTS software. Examples here include operational workstation positions such as service administrators for the Interoperability Subsystem or DBMS administrators for the Data Management Subsystem. The SOW along with assumptions (such as phasing assumptions) determine when the hardware and software is needed. In general, quantities of COTS software correspond to quantities of COTS hardware. Exceptions occur in areas such as tool kit products or where a site license (such as the IMSL math libraries) is obtained. In conjunction with the engineering activities just discussed, another activity is to provide configuration specifications for the component and assembly files based on the design. Component examples include items such as a small workstation or a medium file server. Assembly (or macro) examples include a grouping of different COTS software that will reside on a given workstation or a set of hardware items including peripherals that make up a compute server. A more detailed description of the engineering methodologies are discussed in Section 7 of the System Engineering Plan (194-201-SE1-001). .c.Figure 5-3. Preparation of Design Input File .c.Table 5-10. Design File Schema Field Name Field Type Field Length Decimals WBS C 13 0 SITE C 5 0 SEGMENT C 7 0 ELEMENT C 6 0 PTYPE C 2 0 CODE C 12 0 QTY N 9 0 RELSE C 4 0 YEAR C 4 0 MONTHNUM N 2 0 EDSCOST N 12 2 EDS_PRICE N 12 2 SUBSYSTEM C 30 0 COMMENT C 50 0 SEQ N 7 2 FISCALYEAR C 4 0 FISCALMNTH N 2 0 MACRO N 5 0 XPANDED N 5 0 TOPIC C 2 0 DEPT C 4 0 DESIGN C 4 0 Note: See Section 6 for Field Descriptions. 5.11 Maintenance File The maintenance file contains installation costs, and monthly maintenance support costs, associated with the delivery of hardware and software in the purchase module. .c.Table 5-11. Maintenance File Schema Field Name Field Type Field Length Decimals WBS C 13 0 SITE C 5 0 REF_CODE C 12 0 RELEASEID C 4 0 YEAR C 4 0 MONTH N 2 0 FISCALYEAR C 4 0 FISCALMNTH N 2 0 MMC N 10 2 MMP N 10 2 INSTL_COST N 10 2 INSTL_PRCE N 10 2 INSTL_HRS N 4 0 CALC_INSTC N 12 2 CALC_INSTP N 12 2 POWER_COST* N 12 2 SQ_FOOT* N 12 2 POWERQTY* N 10 2 AIR* N 10 2 PTYPE C 2 0 QTY N 7 0 SEQ N 7 2 LENGTH* N 12 0 WIDTH* N 12 0 BTU_MNTH* N 9 0 TOPIC C 2 0 XPANDED N 5 0 MACRO N 5 0 DESIGN C 2 0 Notes: See Section 6 for Field Descriptions. * = Field Not Being Used in Current Version of Procurement Cost Model 6. Field Descriptions This section provides a listing of field descriptions for the cost model files as discussed in Section 5. Note that fields not being used in the current version of the Procurement Cost Model, as noted in tables 5-8 and 5-11, are excluded from Table 6-1, below. .c.Table 6-1. Field Descriptions (1 of 2) CALC_INSTC Total cost of vendor supplied installation. CALC_INSTP Total price of vendor supplied installation. CATEGORY A=Available, B=Committed by Mfgr., C=High risk CODE The CODE field of the design file contains either the assembly code (as it is in the assembly file - field CODE), or it contains the component code (as it is in the component file - field REF_CODE). If left blank or containing anything else, it is considered an error, and will be so flagged during processing. COMMENT Can be used by designer at their discretion, data is not used in the processing of the purchase module. CURVE Refers to CURVE_ID. CURVE_ID Name of discount curve. CYEAR Year (as character string) 1993 - 2003. DATE_CODE Release Code identifier ID. DEPT Accounting code. This is a code assigned by the business operation organization. It is used by subsequent processes to further categorize estimated costs and uploading into the MPM system. DESIGN Code used to indicate source of line item. Usually B=baseline, A1=added change order 1, M1=minus change order 1. DISCOUNT Rate applied to Vendor Quote for cost of iyem in out years. DISTRIB Percent of this job code required during an installation. EDSCOST Contains EDSÕ purchase cost(vendor quote). EDS_PRICE Contains EDSÕ price to the customer(EDSCOST loaded). ELEMENT Contains the element code for the line item, and is used in the determination of the WBS code. An element is a subdivision of the ECS project, defined by the customer organization. EQUIP Overhead rate for all non labor items of cost, hardware/software purchase, training, vendor installation and maintenance. EXPANSION Numeric pointer to macro record that this expansion record is linked to. FISCALMNTH Government fiscal year month number. FISCALYEAR Government fiscal year. INSTALCURV CURVE_ID of forward pricing curve to be used for installation. INSTALL_HR Unit number of hours required for EDS installation of item. INST_COST Unit cost of vendor supplied installation. INSTL_HRS Total number of hours required for EDS installation of item. INSTL_COST Cost of EDS provided installation. INSTL_PRCE Price of EDS provided installation. ITEM Description of item. JOBCODE EDS job code, from approved bid rate listing, associated with labor category. .c.Table 6-1. Field Descriptions (2 of 2) LABOR Overhead rate for labor. MACRO This is an output only field. It contains a unique, non zero integer number, that is automatically assigned to each item that the model has recognized as an assembly item (composed of identified components). A zero (or blank) in this field indicates that the model did not recognized this record as an assembly record. MAINTCURVE CURVE_ID of forward pricing curve to be used for maintenance. MAINT_COST Unit monthly maintenance cost. MMC Total monthly maintenance cost. MMP Total monthly maintenance price. MODEL Model number of item. MONTH Month number of the year record. MONTHNUM Month number of the calendar year. MWBS Maintenance work-breakdown structure code. PTYPE Type of record: HW=hardware, SW=software, TR=training. QTY Contains the total quantity of items of this line item. RATE Labor rate for a specific job code from EDS approved bid rate listing. REF_CODE Code ID of item RELEASEID Code indicating release date. RELSE Refers to RELEASE ID. SEGMENT Segment code for the line item. Is used in the determination of the WBS code. A segment is a subdivision of the ECS project, defined by the customer organization. SEQ Numeric field assigned to each specific input record, used for tracking purposes only. During macro expansion, the sequence number of an assembly record is assigned to the expanded component records. SITE Contains the site code for the line item, and is used in the determination of the WBS code. A site is one of the customerÕs designated facilities which are to contain ECS provided material. SUBSYSTEM Can be used by designer at their discretion, data is not used in the processing of the purchase module. TOPIC Topic number assigned for optional elements of design. VENDOR Manufacturer or supplier. WARNT_PER Not currently being used. WBS Assigned WBS code for the specific line item. XPANDED This is an output only field. It contains an integer number, that is automatically assigned to each item that the model has expanded as a component of an assembly record. The non-unique, non zero number assigned in this field will always match the number in the MACRO field of the parent assembly record. A record containing a blank or 0 in this field was not produced as a result of an assembly expansion. YEAR Calendar years 1993 through 2002. 7. Processing Descriptions This section contains processing descriptions of the two major processing routines. While not designed to replace the program code, or to be all inclusive, these descriptions will provide significant insight, into the internal workings of the two modules that accomplish the majority of the estimating done by the ECS Procurement Cost Model. 7.1 Purchase Module Flow Description /* (This section is designed to facilitate the reader's understanding of the associated program code and MUST be used with that code, to provide a complete understanding of program internals. In general, to reduce the complexity of this discussion, flow control for error reporting in not detailed.) */ ECS Procurement Cost Model: Purchase Module Flow description: set global environment for each required file check existence if exists index file endif endfor inform 'Database check complete' if any files found missing quit endif set filter string to null /* filter code disabled */ call macro preprocessor create and title a text error file create error flag, record counter, and running total accumulator /* =0 */ open all data files for each record in design file increment record counter if this record is a macro record skip to next record goto end of loop endif point to release record if record does not exist record error count error skip to next record goto end of loop endif copy year from release record to design record convert month name from release record to numeric store in design record convert year to fiscal year store in design record convert month to fiscal month store in design record point to equipment record if record does not exist record error count error skip to next record goto end of loop endif point to WBS record if record does not exist record error count error skip to next record goto end of loop endif copy wbs code from wbs file to design file copy dept code from component table to design file copy dept code from component table to design file copy component type code from component table to design record point to curve record if record does not exist record error count error skip to next record goto end of loop endif copy (component->cost * curve->discount) * design->qty to design->cost point to loading record copy (design->cost * loading_rate->equipment) to design->price add design->price to running total accumulator skip to next record endfor close all files open design file reindex design file close design file /* add up macro costs */ open design file copy to temp_design open temp_design index on expanded field for each record in design if macro field is 0 skip to next record goto end of loop endif position temp_design pointer using design->macro as key set cost and price accumulators to zero starting from current record in temp_design, for each record in temp_design, while design->macro = temp_design->xpandex add temp_design->cost to cost accumulator add temp_design->price to price accumulator save wbs, year, month number, fiscal year, fiscal month number skip to next record in temp_design endfor store all accumulators in current macro record of design file skip to next record of design file endfor close design file close temp_design file erase temp_design and index file if error flag not set inform user that program terminated normally, and total price else inform user that run was errored quit 7.2 Maintenance Module Flow Description /* (This section is designed to facilitate the reader's understanding of the associated program code and MUST be used with that code, to provide a complete understanding of program internals. In general, to reduce the complexity of this discussion, flow control for error reporting in not detailed.) */ ECS Procurement Cost Model: Maintenance Module Flow description: set global environment for each required file check existence if exists index file endif endfor inform 'Database check complete' if any files found missing quit endif set inflation factor to 1.0 /* compute labor rate for installation */ open job code file set install rate accumulator /* ins_rate */ to zero for each record in file if distrb > 0 add (distrib * rate) to install rate /* ins_rate */ accumulator endif endfor open all database files /* implied close of job code file */ clear output (temp) file for each record in design file if record is a macro record /* create a summary record */ append blank MACRO record to maintenance file copy seq, rel_code, ptype, macro, topic, qty, design->design to maintenance file skip to next design record goto end of loop endif if type of item is training /* by-pass all training records */ skip to next design record goto end of loop endif point to component record if record does not exist record error count error skip to next record goto end of loop endif point to WBS record if record does not exist record error count error skip to next record goto end of loop endif append blank INSTALL record to maintenance file copy seq, ptype, ref_code, topic, xpanded, qty, design->design to maintenance file convert year to fiscal year store in design record convert month to fiscal month store in design record point to curve record if record does not exist record error count error skip to next record goto end of loop endif compute ins_cost = component->install_hr * ins_rate * cv->discount * hw->qty copy (component->install_hr * design->qty) to maintenance->instl_hrs copy (component->inst_cost * curve->discount * component->qty) to maintenance->calc_instc copy memory->ins_cost to instl_cost copy copy component->ptype to ptype copy design->qty to maintenance->qty /* compute install price for BOTH vendor install & EDS install */ point to loading_factor record if record does not exist record error count error skip to next record goto end of loop endif copy (instl_cost * loading_factor->labor) to maintenance->instl_prce copy (calc_instc * loading_factor->equip) to calc_instp /* filter out sw items/ if design record type = 'SW' call swmaint /* SW install and maintenance handled externally */ skip to next record goto end of loop endif /* start of HW maintenance section */ /* first month of maint is 13 months after install */ compute first_mn = month_num(hw->monthnum, hw->year) + 12 compute last month of contract (last_mn) = 120 compute countr = first_mn compute cur_mn = first_mn - 12 /* current month, used for inflation computation later */ point to curve record if record does not exist record error count error skip to next record goto end of loop endif compute cvdisc = curve->discount for each month from countr until last_mn append blank record to maintenance file copy wbs->mwbs to maintenance->wbs copy month, year, type, qty, seq, topic, xpanded to maintenance file convert year to fiscal year store in design record convert month to fiscal month store in design record compute mr = 1.0 /* management reserve */ compute md = 1.0 /* hughes discount */ point to loading_factor record if record does not exist record error count error skip to next record goto end of loop endif /* compute inflation factor */ compute years = int((countr - cur_mn) / 12) copy (component->maint_cost * design->qty * cvdisc * mr * md) to maintenance->mmc copy ( mmc * loading_rate->equip) to maintenance->mmp /* special patch for GSFC hours in 1997+ */ if current year >= 1977 and site = 'GSFC' if year = 1977 copy maintenance->mmc * 1.3 to maintenance->mmc else copy maintenance->mmc * 1.6 to maintenance->mmc endif /* load the price */ copy mmc * fac->equip to mmp endif countr = countr + 1 endfor skip to next design record endfor close all files add up all macro costs quit