next up previous
Next: PROCEDURES Up: DECLARATIONS Previous: TABLES

DBTABLES

The GLIDER system can import, update, and export files generated by a data base system (DBASE IV in this implementation). A data base file is a succession of records, each with a set of fields. All the records in a file have the same structure. The records usually describe the characteristics of individuals of a set (people, objects, years, cities, etc.) by means of the values of the fields. These are simple tables.

DBASE file in order to be suitable for GLIDER processing must have as its first field in its record structure a primary key field named with the same file or table name.

Association tables are used when the values of a relation of two (or more) sets have to be described. For each combination set of two (or more) individuals, one of each set, there is an entry in the table that describes, by one or more fields, the characteristics of the relation. In the actual version only complete tables can be imported, i.e., all the possible combinations of records in the associated tables must appear. In an association table of N simple tables the names of these tables must appear as the first N fields in each record, conforming the primary key of the association.

The user must give in a DBTABLES declaration, the names of the tables and the association indicator (i.e., how many simple tables are associated in the declared table).
The declarations have DBTABLES as a heading, followed by one or more declarations:

<table name> : <association indicator>

These declarations must be separated by commas and each or some groups of them may be delimited by ( ). The groups are also separated by commas.

<table name> is a name of an existing DBASE file optionally preceded with directory path.

<association indicator> is a number from 1 to 5. If omitted, 1 is assumed (simple table).

The declarations that are in a group within ( ) are assumed to have the same structure.

Example:

    DBTABLES (GroupP1, GroupP2), (Goods), (ConsPatt: 2, CPat1: 2);
Declares two simple tables: GroupP1, GroupP2 of the same structure, a simple table Goods of different structure and two tables that are association of two tables and have the same structure. The two first fields of ConsPatt must have as name the name of the two simple tables that ConsPatt associates. Such simple tables must have been declared before.

All the declared tables must exist as DBASE tables. The compiler uses information from these tables. If they are in other directory the table names must include the path. To handle these tables the GLIDER system provides the instructions: LOAD, UNLOAD (see 6.14, 6.29), and UPDATE (see 7.26).

The system declares the following variables:

N_<table name> is an integer whose value is the number of records of the table.

NOM_<name of a simple table> is a constant array of N_<name> elements that contains the values (usually key names) of the first field of the table.

For each table integer constants are declared with the names in the first field and successive values 1, 2, 3 ... N_<name> . They are useful in the program to refer to records by name.

The types of the fields may be: REAL, INTEGER, STRING or BOOLEAN.

Example:

   DBTABLES ( \Pop\Group), ( \Econ\Goods),
              ( \Modat\ConsPatt: 2, \Modat\Consp: 2);
The file Group in the directory Pop may be:
   Fields      Group      Size     Income   Savings   EmplFrac
   Records
    1          Entrep1   20000 4275000.00  870000.00       1.00
    2          Entrep2  300000 1875000.00  322000.00       0.98
    3          Entrep3  850000  975000.00   52000.00       0.97
    4          Worker1  560000  675000.00    5000.00       0.92
    .          .....................................       ....
    9          SelfEmp  130000   52500.00   10000.00       0.72
This table contains some characteristics of different population groups.

The system generates the constants N_Group (value 9) and the array NOM_Group

(values 'Entrep1', 'Entrep2', .. , 'SelfEmp').

The constants Entrep1 = 1, Entrep2 = 2,.., SelfEmp = 9 are also defined.

An array of length 9 is dynamically allocated in memory at run time for each field. The instruction LOAD imports the data from the file table. So the instruction:

   LOAD(Group, Size, Income);
loads the record values of the table Group into the system created arrays Size and Income. So, Income[Worker1] = 675000. The model program can now use and change the values of these array. The instruction DBUPDATE can pass these modified data to the original file or to other file with the same structure. When the values are no longer needed in the simulation they can be discarded by an UNLOAD instruction and the memory they used is freed.

If the table Goods have the following fields and values:

   Fields      Goods     Production      PrizeIndex
   Records
    1            Housing     380000           1.10
    2            Food       7850000           1.05
    3            Clothing     56000           1.20
    .             ...	       ...             ...
    7            Health       22400           1.32
    8            Education   837000           1.22
Then the system generates N_Goods = 8; NOM_Goods = 'Housing', 'Food', etc. and the constants: Housing = 1,
Food = 2, etc. This table contains some characteristics of certain goods. The table ConsPatt will describe the consumption pattern of the population groups indicating how much each group consumes of each good. One part of this table may be:

   Fields    Group      Goods     Consumpt    Priority
   Records
    1        Entrep1     Housing     150400         8
    2        Entrep1     Food        250100         5
    3        Entrep1     Clothing    170000         5
    .         ...         ...          ...          . 
    7        Entrep1     Health      230000         7
    8        Entrep1     Education   296000         8
    9        Entrep2     Housing      75000         7
   10        Entrep2     Food         92000         6
   11        Entrep2     Clothing     80600         5
    .         ...         ...          ...          .
   15        Entrep2     Health      119000         7
   16        Entrep2     Education   104000         7
    .         ...         ...          ...          .
   65        SelfEmp     Housing       2500         5
   66        SelfEmp     Food          3060         8
   67        SelfEmp     Clothing      1200         6
    .         ...         ...          ...          .
   71        SelfEmp     Health        1350         6
   72        SelfEmp     Education     1095         7
When this table is loaded the system passes the values to an array called ConsPatt with two indexes and sizes of 9 rows and 8 columns. So, ConsPatt[Entrep2, Food] = 92000.


next up previous
Next: PROCEDURES Up: DECLARATIONS Previous: TABLES

domingo c
Mon Mar 20 11:09:25 PST 2000