$Field List: Difference between revisions
mNo edit summary |
(Automatically generated page update) |
||
(18 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:$Field_List}} | {{DISPLAYTITLE:$Field_List}} | ||
<span class="pageSubtitle" | <span class="pageSubtitle">Return field values into a $list</span> | ||
<p class=" | <p class="warn"><b>Note: </b>Many $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for <var>$Field_List</var> is the <var>Stringlist</var> <var>[[AppendFieldValues (Stringlist function)|AppendFieldValues]]</var> function.</p> | ||
This function retrieves field values from the current record into a $list. It provides an alternative to PAI INTO. | This function retrieves field values from the current record into a [[$lists|$list]]. It provides an alternative to <var>PAI INTO</var>. | ||
<var>$Field_List</var> accepts four arguments and returns a number indicating the success of the function. | |||
The | ==Syntax== | ||
<p class="syntax"><span class="term">%rc</span> = <span class="literal">$Field_List</span>(<span class="term">olist</span>, [<span class="term">fieldname_len</span>], [<span class="term">fieldname</span>], [<span class="term">options</span>]) | |||
</p> | |||
===Syntax terms=== | |||
<table class="syntaxTable"> | |||
<tr><th>%rc</th> | |||
<td>A number of items added to <var class="term">olist</var>, or it is one of these (negative) status codes: | |||
<table> | |||
<tr><th><var>>= 0</var> </th> | |||
<td>Number of field values extracted </td></tr> | |||
<tr><th> <var>-3</var></th> | |||
<td>CCATEMP full or $list full</td></tr> | |||
</table> | |||
All other errors result in request cancellation. </td></tr> | |||
<tr><th>olist</th> | |||
<td>The output $list identifier. If the output $list is not empty, data is added to the end of the output $list. This is a required argument. </td></tr> | |||
The | <tr><th>fieldname_len</th> | ||
<td>The length of the output field name in the [[#Output $list format|output $list items]]; it can be any numeric value from 0 to 255. This is an optional argument and defaults to 255. </td></tr> | |||
The | <tr><th>fieldname</th> | ||
<td>The name of the field to be returned. This argument can contain a single specific field name or it can contain a wildcard string that matches a number of fields in the file. This is an optional argument and defaults to asterisk (<tt>*</tt>), which means to return all fields in the record. </td></tr> | |||
<tr><th>options</th> | |||
<td>A set of blank-delimited processing options that, starting with <var class="Product">Sirius Mods</var> Version 7.1, can be specified in any combination of uppercase and lowercase letters (prior to that, all-uppercase letters are required): | |||
<table class="syntaxTable"> | <table class="syntaxTable"> | ||
<tr><th>TruncLeft</th> | <tr><th><var>TruncLeft</var></th> | ||
<td>Truncate | <td>Truncate field names on the left. This is mutually exclusive with the <var>TruncRight</var> and <var>CanTrunc</var> options.</td></tr> | ||
<tr><th>TruncRight</th> | |||
<td>Truncate | <tr><th><var>TruncRight</var></th> | ||
<tr><th>CanTrunc</th> | <td>Truncate field names on the right. This is mutually exclusive with the <var>TruncLeft</var> and <var>CanTrunc</var> options.</td></tr> | ||
<td>Cancel request on truncated | |||
<tr><th>TrueLen</th> | <tr><th><var>CanTrunc</var></th> | ||
<td>Set true | <td>Cancel request on truncated field name, except when the <var class="term">fieldname_len</var> argument is 0. This is mutually exclusive with the <var>TruncRight</var> and <var>TruncLeft</var> options.</td></tr> | ||
<tr><th>TruncLen</th> | |||
<td>Set truncated | <tr><th><var>TrueLen</var></th> | ||
<td>Set true field-name length rather than truncated field name length in the field-name length byte in the output $list. This is mutually exclusive with the <var>TruncLen</var> option.</td></tr> | |||
<tr><th><var>TruncLen</var></th> | |||
<td>Set truncated field-name length in the field-name length byte in the output $list; this is the default. This is mutually exclusive with the <var>TrueLen</var> option. | |||
</td></tr></table> | |||
</td></tr></table> | </td></tr></table> | ||
== | ===Output $list format=== | ||
< | <table class="thJustBold"> | ||
< | <tr class="head"><th>Offset</th> | ||
< | <th>Contents</th> | ||
</ | |||
< | <tr><th>0-3</th> | ||
< | <td>A binary sequence number (same as the $list item number when item added). </td></tr> | ||
<tr><th>4-4</th> | |||
<td>Binary length of field name (true or truncated depending on <var>TrueLen</var>). </td></tr> | |||
</ | <tr><th>5-(5+N-1)</th> | ||
< | <td>Blank padded or truncated field name where N is value of the <var class="term">fieldname_len</var> argument. </td></tr> | ||
</ | |||
<tr><th>5+N-(5+N)</th> | |||
<td>Binary length of field value. </td></tr> | |||
<tr><th>(5+N+1)-end</th> | |||
<td>Field value in string format as it would be displayed in a <var>PAI</var>. </td></tr> | |||
</table> | |||
< | ==Usage notes== | ||
<ul> | |||
<li>Most field names are typically much shorter than 255 bytes so a large amount of $list space is wasted if the <var class="term">fieldname</var> argument is not specified. | |||
<li>If neither <var>TruncLeft</var> nor <var>TruncRight</var> is specified as an option, a truncated field name causes request cancellation, except when the <var class="term">fieldname_len</var> argument is 0, in which case <var>TruncLeft</var>, <var>TruncRight</var>, and <var>CanTrunc</var> are meaningless. | |||
</ | |||
<li>Note that you can (bizarrely) specify <var>TrueLen</var> and <var class="term">fieldname_len</var> of 0, which means that while the field name will not be returned, its length will. | |||
The name specified in the | <li>The name specified in the <var class="term">fieldname</var> argument can be an explicit name, or it can contain the following wildcard characters: | ||
<table class=" | <table class="thJustBold"> | ||
<tr><th>*</th> | <tr><th>*</th> | ||
<td>Matches any number of characters including none</td></tr> | <td>Matches any number of characters including none</td></tr> | ||
Line 69: | Line 95: | ||
For example, | For example, | ||
<ul> | <ul> | ||
<li>< | <li><code>C*D</code> matches "CUSTID", "COD", or "CLOD".</li> | ||
<li>< | <li><code>.S??T</code> matches "SALT", "SLOT", or "SORT".</li> | ||
<li>.E"*CONCRETE</ | <li><code>.E"*CONCRETE</code> matches "E*CONCRETE".</li> | ||
</ul> | </ul> | ||
If a non-wildcard | <li>If a non-wildcard field name is specified for the <var class="term">fieldname</var> argument and the field name does not exist in the file, <var>$Field_List</var> simply returns a 0 without scanning the record. If a wildcard field name is specified for <var class="term">fieldname</var> and the wildcard string does not match any field names in the file, the record is still scanned. Except in the case of a non-wildcard field name that does not exist in the file or a request cancellation because of a truncated field name, or $list or CCATEMP full, the entire record is always scanned. | ||
The following code fragment retrieves all fields in a record where the | <li><var>$Field_List</var> is not recommended for use with <var>FILEORG</var> X'100' files. For example, <var>$Field_List</var> will not create a $list item for an <var>EXACTLY-ONE</var> field that was not explicitly stored. For <var>FILEORG</var> X'100' files, <var>[[AppendFieldImages (Stringlist function)|AppendFieldImages]]</var> (or the non-OO <var>[[$Field_ListI]]</var>) is recommended. | ||
<p class="code"> | </ul> | ||
==Examples== | |||
The following code fragment retrieves all fields in a record where the field name begins with the letters "CHILD_" into a $list and sorts the $list by field name. | |||
<p class="code">In File INFILE Frn %recno | |||
%rc = $Field_List(%olist, 'CHILD_*', 20) | |||
End For | |||
%slist = $ListSort(%olist, '6,20,A') | |||
</p> | </p> | ||
[[Category:$Functions|$Field_List]] | [[Category:$Functions|$Field_List]] |
Latest revision as of 22:51, 20 September 2018
Return field values into a $list
Note: Many $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for $Field_List is the Stringlist AppendFieldValues function.
This function retrieves field values from the current record into a $list. It provides an alternative to PAI INTO.
$Field_List accepts four arguments and returns a number indicating the success of the function.
Syntax
%rc = $Field_List(olist, [fieldname_len], [fieldname], [options])
Syntax terms
%rc | A number of items added to olist, or it is one of these (negative) status codes:
| ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
olist | The output $list identifier. If the output $list is not empty, data is added to the end of the output $list. This is a required argument. | ||||||||||
fieldname_len | The length of the output field name in the output $list items; it can be any numeric value from 0 to 255. This is an optional argument and defaults to 255. | ||||||||||
fieldname | The name of the field to be returned. This argument can contain a single specific field name or it can contain a wildcard string that matches a number of fields in the file. This is an optional argument and defaults to asterisk (*), which means to return all fields in the record. | ||||||||||
options | A set of blank-delimited processing options that, starting with Sirius Mods Version 7.1, can be specified in any combination of uppercase and lowercase letters (prior to that, all-uppercase letters are required):
|
Output $list format
Offset | Contents |
---|---|
0-3 | A binary sequence number (same as the $list item number when item added). |
4-4 | Binary length of field name (true or truncated depending on TrueLen). |
5-(5+N-1) | Blank padded or truncated field name where N is value of the fieldname_len argument. |
5+N-(5+N) | Binary length of field value. |
(5+N+1)-end | Field value in string format as it would be displayed in a PAI. |
Usage notes
- Most field names are typically much shorter than 255 bytes so a large amount of $list space is wasted if the fieldname argument is not specified.
- If neither TruncLeft nor TruncRight is specified as an option, a truncated field name causes request cancellation, except when the fieldname_len argument is 0, in which case TruncLeft, TruncRight, and CanTrunc are meaningless.
- Note that you can (bizarrely) specify TrueLen and fieldname_len of 0, which means that while the field name will not be returned, its length will.
- The name specified in the fieldname argument can be an explicit name, or it can contain the following wildcard characters:
* Matches any number of characters including none ? Matches any single character " Indicates that the next character must be treated literally even if it is a wildcard character. For example,
C*D
matches "CUSTID", "COD", or "CLOD"..S??T
matches "SALT", "SLOT", or "SORT"..E"*CONCRETE
matches "E*CONCRETE".
- If a non-wildcard field name is specified for the fieldname argument and the field name does not exist in the file, $Field_List simply returns a 0 without scanning the record. If a wildcard field name is specified for fieldname and the wildcard string does not match any field names in the file, the record is still scanned. Except in the case of a non-wildcard field name that does not exist in the file or a request cancellation because of a truncated field name, or $list or CCATEMP full, the entire record is always scanned.
- $Field_List is not recommended for use with FILEORG X'100' files. For example, $Field_List will not create a $list item for an EXACTLY-ONE field that was not explicitly stored. For FILEORG X'100' files, AppendFieldImages (or the non-OO $Field_ListI) is recommended.
Examples
The following code fragment retrieves all fields in a record where the field name begins with the letters "CHILD_" into a $list and sorts the $list by field name.
In File INFILE Frn %recno %rc = $Field_List(%olist, 'CHILD_*', 20) End For %slist = $ListSort(%olist, '6,20,A')