This chapter describes the details of the computer program used to run the OSM. The model was written in Fortran 90/95 and compiled using the Compaq Visual Fortran compiler, version 6.1.A. The program has about 26,000 lines of source code and was written in modular format with 20 source code files. It uses over 160 data files as input and about 425 MB of RAM. On a personal computer with a 2.8 GHz Intel Pentium 4 processor, running 5,000 simulations takes about 34 hours.
The OSM contains nine modules. They are executed sequentially in the following order: Assumptions, Population, Economics, Insured, DIB (Disability Insurance Beneficiaries), OASIB (Old-Age and Survivors Insurance Beneficiaries), Awards, Cost, and Summary Results. In a sequential model, the output from an earlier module may become input to a later module. The flow of data among the OSM modules is summarized in table III.1. The first column lists the nine modules in the order in which they are executed. For each module, the second column lists the modules from which it receives input, while the third column lists the modules to which it provides input. For example, the Population Module receives input from only one module (i.e., Assumptions) and provides output (that then becomes input) to six modules (i.e., Economics, Insured, DIB, OASIB, Awards, and Cost). The Assumptions Module does not receive data from any of the other modules, while the Summary Results Module does not send data to any of the other modules. It is important to note that in this table the only instance in which a module sends data to an earlier solved module is the DIB Module sending data to the Economics Module. This is possible because the DIB data sent there is from the prior (not current) year.
The computer program used to solve the modules is organized to go through three main phases: initialization, simulation, and wrap-up. In the initialization phase, the program prepares input and output files and variables needed by each module. In the simulation phase, the program solves the first eight modules using two nested loops. The first (outermost) is the run number loop. It loops once for each simulation. The second is the year loop. It loops from the first year of the simulation (the current Trustees Report year) through the last year of the simulation (the Trustees Report year plus 75). Thus, for the 2004 Trustees Report, the year loop starts in 2004 and ends in 2079 (a total of 76 years for each simulation). In the wrap-up phase, the program sorts and prints the final output results.