Adding records (File architecture): Difference between revisions
No edit summary |
m (link repair) |
||
(13 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
==Adding a record to a file== | ==Adding a record to a file== | ||
<p>This | <p> | ||
<p> | This page describes the process to add a record to a Model 204 file. It presumes that the file has already been [[CREATE command: File|created]] and [[INITIALIZE command|initialized]], and that all fields and field groups needed in this action are defined to the file. </p> | ||
<p> | |||
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 <var>OCCURS</var> attribute), may only be defined in a file to which no data has yet been added.</p> | |||
<p>The addition of the record is driven by the | <p> | ||
The addition of the record is driven by the SOUL <var>[[Data maintenance#STORE RECORD statement|STORE RECORD]]</var> statement with an (optional) list of ''fieldname''=''value'' pairs, as in the following example: </p> | |||
<p class="code">STREC: STORE RECORD | <p class="code">STREC: STORE RECORD | ||
Line 11: | Line 14: | ||
END STORE | END STORE | ||
</p> | </p> | ||
<p>Alternatively, you can use the Host Language Interface IFBREC, IFPUT, and IFSTORE calls, which also require a list of name = value pairs.</p> | <p> | ||
<p>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.</p> | Alternatively, you can use the Host Language Interface <var>IFBREC</var>, <var>IFPUT</var>, and <var>IFSTORE</var> calls, which also require a list of "name = value" pairs.</p> | ||
<p>For more information see | <p> | ||
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.</p> | |||
<p> | |||
For more information, see [[Data maintenance]] or the <var class="book">[[Media:M204 HLIReference V75.pdf|Rocket Model 204 Host Language Interface Reference Manual]]</var>.</p> | |||
==How Model 204 adds records to a file== | ==How Model 204 adds records to a file== | ||
<p>The process of adding a new record to a | <p> | ||
The process of adding a new record to a <var class="product">Model 204</var> file is as follows. Like all SOUL code, the process consists of two parts: </p> | |||
<ol> | |||
<li>The code is compiled: | |||
<ul> | |||
<li>All field names, the values of coded fields, and some <var>FRV</var> fields are converted into fixed-length codes from Table A. </li> | |||
<li>All other attributes of the referenced fields are noted for use during the execution. </li> | |||
</ul></li> | |||
<li>In the evaluation process after compilation, when the <var>STORE RECORD</var> statement is executed: | |||
<ul> | |||
<li>A physical internal record number (IRN) is assigned in Table B, taking the <var>[[BRESERVE parameter|BRESERVE]]</var> parameter into account to determine if there is enough space on the page to store the record. </li> | |||
<li>If there are any preallocated fields, the fields in the [[Table D (File architecture)#Record map of preallocated fields|record map]] are added to the record. </li> | |||
<li>Then, for each field value pair in the <var>STORE RECORD</var> statement (none are required, an "empty" record can be created if no fields are referenced): | |||
<ol> | |||
<li>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). </li> | |||
<li>Of course, normal extension record rules apply (as discussed in [[Table B (File architecture)|Table B]] or [[Table X (File architecture)|Table X]]). </li> | |||
<li>If the field is indexed, the necessary updates occur to Tables C and D. </li> | |||
</ol></li> | |||
</ul></li> | |||
</ol> | |||
==Considerations when adding many records to a file== | ==Considerations when adding many records to a file== | ||
<p>If you are adding a large number of records to a file, consider these alternatives for increased efficiency: </p> | <p> | ||
If you are adding a large number of records to a file, consider these alternatives for increased efficiency: </p> | |||
<ul> | <ul> | ||
<li>Deferred updates. Defer changes or additions that update Tables C and D, instead specifying that step 3 above be performed in separate phases. [[ Deferred | <li>Deferred updates. | ||
<li>File Load utility. If the raw data for the records to be stored in the <var class="product">Model 204</var> 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 <var class="product">Model 204</var> file quickly and economically. [[ File Load | <p> | ||
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.</p></li> | |||
<li>File Load utility. | |||
<p> | |||
If the raw data for the records to be stored in the <var class="product">Model 204</var> 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 <var class="product">Model 204</var> file quickly and economically. See [[File Load utility]] for more information.</p></li> | |||
</ul> | </ul> | ||
[[Category:File architecture]] | [[Category:File architecture]] |
Latest revision as of 14:52, 23 March 2015
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:
STREC: STORE RECORD NAME=RASPUTIN SEX=MALE OCCUPATION=MONK END STORE
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:
- 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.
- 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):
- 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).
- Of course, normal extension record rules apply (as discussed in Table B or Table X).
- 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.