Adding records (File architecture)

From m204wiki
Revision as of 14:52, 23 March 2015 by JAL (talk | contribs) (link repair)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Adding a record to a file

This page describes the process to add a record to a Model 204 file. It presumes that the file has already been created and initialized, and that all fields and field groups needed in this action are defined to the file.

A reminder: while fields and field groups may, generally, be defined to the file at any time, some field attributes (for example, the pre-allocation of fields with the OCCURS attribute), may only be defined in a file to which no data has yet been added.

The addition of the record is driven by the SOUL STORE RECORD statement with an (optional) list of fieldname=value pairs, as in the following example:


Alternatively, you can use the Host Language Interface IFBREC, IFPUT, and IFSTORE calls, which also require a list of "name = value" pairs.

All referenced field names must previously have been defined, but not all field names need to have assigned values in every record. In fact, if you omit a field, the field is not stored in the record at all, thus saving space in the file.

For more information, see Data maintenance or the Rocket Model 204 Host Language Interface Reference Manual.

How Model 204 adds records to a file

The process of adding a new record to a Model 204 file is as follows. Like all SOUL code, the process consists of two parts:

  1. The code is compiled:
    • All field names, the values of coded fields, and some FRV fields are converted into fixed-length codes from Table A.
    • All other attributes of the referenced fields are noted for use during the execution.
  2. In the evaluation process after compilation, when the STORE RECORD statement is executed:
    • A physical internal record number (IRN) is assigned in Table B, taking the BRESERVE parameter into account to determine if there is enough space on the page to store the record.
    • If there are any preallocated fields, the fields in the record map are added to the record.
    • Then, for each field value pair in the STORE RECORD statement (none are required, an "empty" record can be created if no fields are referenced):
      1. The field value pair is added to the record (for a Table E update, only the pointer is added to the field in Table B and the LOB itself is added to Table E).
      2. Of course, normal extension record rules apply (as discussed in Table B or Table X).
      3. If the field is indexed, the necessary updates occur to Tables C and D.

Considerations when adding many records to a file

If you are adding a large number of records to a file, consider these alternatives for increased efficiency:

  • Deferred updates.

    Defer changes or additions that update Tables C and D, instead specifying that step 3 above be performed in separate phases. Deferred update feature describes how to use deferred updates.

  • File Load utility.

    If the raw data for the records to be stored in the Model 204 file already exists in a machine-readable format (magnetic tape, direct-access storage, cards), use the File Load utility to load that data directly into the Model 204 file quickly and economically. See File Load utility for more information.