Field value pairs (File architecture)

From m204wiki
Revision as of 22:40, 12 December 2013 by ELowell (talk | contribs)
Jump to navigation Jump to search

Overview

The basic unit of storage inside a Model 204 record is the field value pair (or, more literally, "field = value pair"). A record or a fieldgroup contains a series of fieldgroups and field value pairs.

A record can contain field value pairs for fields with the OCCURS attribute.

A record or a fieldgroup can contain non-OCCURS field value pairs, whose physical structure is described below, for each storage data type.

STRING fields

The field value pair for STRING fields contains three parts:

  • the field code from Table A; 3 bytes for FILEORG X'100' files or 2 bytes for all others.
  • the length of the value for this pair (0 to 255); 1 byte.
  • the value; variable length 0-255 bytes.

So, if you have a NAME field containing 'SMITH' it will be held in either 8 or 9 bytes (depending on the FILEORG), while a NAME of 'FRANKENSTEIN' will be held as either 15 or 16.

BINARY or CODED fields

BINARY and CODED fields are stored differently depending on whether the file has the Optimized Field Extraction (FILEORG x'80') bit set. Note that FILEORG X'100' files automatically also turn on x'80'.

For non Optimized Field Extraction Files (x'80) the field value pair contains two parts:

  • the field code from Table A; 2 bytes.
  • the value which is always held as 4 bytes.

For Optimized Field Extraction Files the field value pair contains three parts:

  • the field code from Table A; 3 bytes for FILEORG X'100' files or 2 byte for all others.
  • the length of the value for this pair (1 to 4); 1 byte.
  • the value (variable length, 1-4 bytes).

By storing a length with all field occurrences, data in records can be read much faster. The possible tradeoff on performance versus space is discussed in File Design.

FLOAT fields

FLOAT fields are stored differently depending on whether the file has the Optimized Field Extraction (FILEORG x'80') bit set. Note that FILEORG X'100' files automatically also turn on x'80'.

For non Optimized Field Extraction Files the field value pair contains two parts:

  • the field code from Table A; 2 bytes.
  • the value which is always held as 4, 8, or 16 bytes, depending on the LENGTH attribute.

For Optimized Field Extraction Files the field value pair contains three parts:

  • the field code from Table A; 3 bytes for FILEORG X'100' files or 2 byte for all others.
  • the length of the value for this pair (1 to 4); 1 byte.
  • the value which is always held as 4, 8, or 16 bytes, depending on the LENGTH attribute.

By storing a length with all field occurrences, data in records can be read much faster. The possible tradeoff on performance versus space is discussed in File Design.