A Stochastic Model
of the Long-Range Financial Status
of the OASDI Program—September 2004

  Contents Prev Next List of Tables List of Figures

III. DOCUMENTATION OF THE COMPUTER PROGRAM

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.

A. ORGANIZATION

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.

Table III.1—Module Dependencies
Module
Input Modules
Output Modules
Assumptions
N/A
Population
Economics
DIB
Cost
Summary Results
Population
Assumptions
Economics
Insured
DIB
OASIB
Awards
Cost
Economics
Assumptions
Population
DIB
Insured
Awards
Cost
Insured
Population
Economics
DIB
OASIB
DIB
Assumptions
Population
Insured
Economics
OASIB
Cost
OASIB
Population
Insured
DIB
Cost
Awards
Population
Economics
Cost
Cost
Assumptions
Population
Economics
DIB
OASIB
Awards
Summary Results
Summary Results
Assumptions
Population
Cost
N/A


Contents Prev Next List of Tables List of Figures