$Field Image: Difference between revisions
m (1 revision) |
m (add link) |
||
(24 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
<span class="pageSubtitle">Return field values into an image</span> | <span class="pageSubtitle">Return field values into an image</span> | ||
<p class=" | <p class="warn"><b>Note:</b> Many $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the <var>$Field_Image</var> function.</p> | ||
<var>$Field_Image</var> retrieves single-occurrence fields or fields in a repeating group into an [[Images|image]]. It provides an alternative to <var>PAI INTO</var>. | |||
The <var>$Field_Image</var> function accepts four arguments and returns a number indicating the success of the function. | |||
==Syntax== | ==Syntax== | ||
<p class="syntax">< | <p class="syntax"><span class="term">%rc</span> = <span class="literal">$Field_Image</span>(<span class="term">image_id</span>, [<span class="term">occ</span>], [<span class="term">options</span>], [<span class="term">null_value</span>]) </p> | ||
< | |||
< | |||
</ | |||
< | |||
< | ===Syntax terms=== | ||
<table> | |||
<tr><th>%rc</th> | |||
<td>A numeric variable to contain the function [[#Return codes|return codes]]: 0 (if occurrence not found) or 1. </td></tr> | |||
< | <tr><th>image_id</th> | ||
<td>A string containing the name of an image, and optionally, an item in the image separated from the image name with a colon. The image and optional item name can be separated with a blank from an optional fieldname prefix. If an image item name is specified, that item will be set to the occurrence number retrieved. This is a required argument. | |||
<p> | |||
The specified image must have been defined with the <var>NAMESAVE</var> option. The image is not allowed to have arrays, cannot have more than 255 items, and cannot be more than the maximum length of $list items (6124 bytes). </p> | |||
<p> | |||
The names of the image items in the specified image are mapped to fields in the current record context, then the values of those fields are moved into the image. </p></td></tr> | |||
The | <tr><th>occ</th> | ||
<td>The occurrence number of the fields mapped to the image to return. This is an optional argument, and it defaults to 1, meaning that the first occurrence of the fields will be returned. </td></tr> | |||
<tr><th>options</th> | |||
< | <td>A set of blank-delimited options to affect <var>$Field_Image</var> processing. The options, which can be specified in any combination of uppercase and lowercase letters, are: | ||
< | <table class="thJustBold"> | ||
<table class=" | |||
<tr><th>MissCan</th> | <tr><th>MissCan</th> | ||
<td>Cancel the request if not all image items map to field names. If an occurrence count item is specified in argument one, that item does not have to map to a field name (if it does, the field value will not be retrieved anyway). This is the default.</td></tr> | <td>Cancel the request if not all image items map to field names. If an occurrence count item is specified in argument one, that item does not have to map to a field name (if it does, the field value will not be retrieved anyway). This is the default.</td></tr> | ||
<tr><th>NoMissCan</th> | <tr><th>NoMissCan</th> | ||
<td>Don't cancel the request if not all image items map to field names. Specify NoMissCan if there are image items in the image that are not associated with fields.</td></tr> | <td>Don't cancel the request if not all image items map to field names. Specify NoMissCan if there are image items in the image that are not associated with fields.</td></tr> | ||
<tr><th>PartCan</th> | <tr><th>PartCan</th> | ||
<td>Cancel the request if not all image items that map to fields return the same number of occurrences, that is 0 or 1. This is the default.</td></tr> | <td>Cancel the request if not all image items that map to fields return the same number of occurrences, that is 0 or 1. This is the default.</td></tr> | ||
<tr><th>NoPartCan</th> | <tr><th>NoPartCan</th> | ||
<td>Don't cancel the request if not all image items that map to fields return the same number of occurrences. | <td>Don't cancel the request if not all image items that map to fields return the same number of occurrences. | ||
</td></tr></table> | <p> | ||
In group context, the MissCan/NoMissCan setting applies based on whether the fields are defined in the group, that is, in any file in the group. If some fields that map to image items are not found in all files in group context, NoPartCan must be specified if any fields are to be retrieved. | If the <var>NoPartCan</var> option is specified, the contents of the image items that are not set from fields will be whatever they are in the image at the time of the <var>$Field_Image</var> call. </p></td></tr> | ||
< | </table> | ||
</ | <p> | ||
In group context, the MissCan/NoMissCan setting applies based on whether the fields are defined in the group, that is, in any file in the group. If some fields that map to image items are not found in all files in group context, NoPartCan must be specified if any fields are to be retrieved. </p></td></tr> | |||
<tr><th>null_value</th> | |||
<td>A value to be converted to null when populating the target image. This argument is discussed at the end of this section. </td></tr> | |||
</ | </table> | ||
</ | |||
===Return codes=== | |||
<p class="code">1 - One or more fields extracted | |||
0 - No fields extracted | |||
All errors result in request cancellation | |||
</p> | </p> | ||
==Examples== | |||
<p class="code"> IMAGE CHILD NAMESAVE | As shown in these examples, the target image must be [[Images#PREPARE statement|prepared]] at the time of the <var>$Field_Image</var> call. | ||
<ul> | |||
<li>In the following example, a repeating group with three fields is extracted into an image and then processed: | |||
<p class="code">IMAGE CHILD NAMESAVE | |||
LNAME IS STRING LEN 16 | |||
FNAME IS STRING LEN 16 | |||
SSN IS PACKED LEN 5 | |||
END IMAGE | |||
. . . | |||
PREPARE IMAGE CHILD | |||
IN FILE FAMILIES FRN %RECNO | |||
FOR %I FROM 1 TO 100 | |||
%RC = $Field_Image('CHILD', %I) | |||
IF %RC NE 1 THEN | |||
LOOP END | |||
END IF | |||
. . . | |||
</p> | END FOR | ||
END FOR </p></li> | |||
<li>In the following example, the occurrence number of the group is placed into image item <code>NUMBER</code>: | |||
<p class="code">IMAGE CHILD NAMESAVE | |||
LNAME IS STRING LEN 16 | |||
FNAME IS STRING LEN 16 | |||
SSN IS PACKED LEN 5 | |||
NUMBER IS BINARY LEN 2 | |||
END IMAGE | |||
. . . | |||
PREPARE IMAGE CHILD | |||
IN FILE FAMILIES FRN %RECNO | |||
FOR %I FROM 1 TO 100 | |||
%RC = $Field_Image('CHILD:NUMBER', %I) | |||
IF %RC NE 1 THEN | |||
LOOP END | |||
END IF | |||
. . . | |||
END FOR | |||
END FOR | |||
</p></li> | |||
</ul> | |||
==Usage notes== | |||
<ul> | |||
<li><var>$Field_Image</var> behaves much as if each individual field value were assigned individually to its corresponding image item. This means that assignments of non-numeric field values to a numeric target image item cause the target item to be set to 0. It also means that in certain cases a "M204.0552: VARIABLE TOO SMALL FOR RESULT" might be issued. </li> | |||
<li>If the image name and possibly the occurrence number item are specified as literals or static variables, the mapping of image item names to field names is performed at compile time, so it can be considerably more efficient at evaluation time than a <var>$Field_Image</var> call with a variable image name. </li> | |||
<p | <li>The first argument to <var>$Field_Image</var> can have a blank after the image name (and optional occurrence item name) followed by a prefix to be prepended to each image item name in generating field names. | ||
<p> | |||
For example, before such a blank was allowed, if a file had fields in a repeating group that were called <code>ORDERDATA.PRODID</code>, <code>ORDERDATA.QUANTITY</code>, and <code>ORDERDATA.PRICE</code>, an image definition used with <var>$Field_Image</var> would need to look something like this: | |||
</p> | </p> | ||
<p class="code">IMAGE ORDERINFO | |||
ORDERDATA.PRODID IS STRING LEN 8 | |||
<p class="code"> % | ORDERDATA.QUANTITY IS BINARY LEN 4 | ||
ORDERDATA.PRICE IS BINARY LEN 4 | |||
END IMAGE </p> | |||
<p> | |||
But then the following statement would result in "ugly" looking image item names like <code>%ORDERINFO:ORDERDATA.PRODID</code>: </p> | |||
<p class="code">%rc = $Field_Image('ORDERINFO', %OCC) | |||
</p> | </p> | ||
With a prefix allowed, the <var>$Field_Image</var> call can be this: | |||
<p class="code">%rc = $Field_Image('ORDERINFO ORDERDATA.', %OCC) | |||
<p class="code"> % | |||
</p> | </p> | ||
the image definition | And the image definition can be simplified to: | ||
<p class="code"> IMAGE ORDERINFO | <p class="code">IMAGE ORDERINFO | ||
PRODID IS STRING LEN 8 | |||
QUANTITY IS BINARY LEN 4 | |||
PRICE IS BINARY LEN 4 | |||
END IMAGE | |||
</p> | </p> | ||
And the resulting image item references, like <code>%ORDERINFO:PRODID</code>, are simpler. </li> | |||
<li>The <var class="term">null_value</var> argument indicates a special value to be treated as a null when populating the target image. This is useful because storing nulls in fields is problematic on many fronts in <var class="product">Model 204</var>, so most sites have a special value that acts as a placeholder for a null. | |||
<p> | |||
By specifying the | Without the <var class="term">null_value</var> argument, an application would have to go through the image items to find these placeholder values and convert them to real nulls. Obviously, this is tedious, error-prone, and can be CPU intensive. | ||
By specifying the <var class="term">null_value</var> argument, <var>$Field_Image</var> will automatically convert the null placeholder to a real null. </p> | |||
<p> | |||
For example, if the string <code>_NULL_</code> is used to indicate a null value in a file, the following will convert all values of <code>_NULL_</code> to a null before populating the target $list: | |||
</p> | |||
<p class="code"> %RC = $Field_Image('ORDERINFO', , , , '_NULL_') | <p class="code"> %RC = $Field_Image('ORDERINFO', , , , '_NULL_') | ||
</p> | </p></li> | ||
</ul> | |||
==Products authorizing {{PAGENAMEE}}== | |||
<ul class="smallAndTightList"> | |||
<li>[[Sirius Functions]]</li> | |||
</ul> | |||
[[Category:$Functions|$Field_Image]] | [[Category:$Functions|$Field_Image]] |
Latest revision as of 23:24, 30 January 2018
Return field values into an image
Note: Many $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the $Field_Image function.
$Field_Image retrieves single-occurrence fields or fields in a repeating group into an image. It provides an alternative to PAI INTO.
The $Field_Image function accepts four arguments and returns a number indicating the success of the function.
Syntax
%rc = $Field_Image(image_id, [occ], [options], [null_value])
Syntax terms
%rc | A numeric variable to contain the function return codes: 0 (if occurrence not found) or 1. | ||||||||
---|---|---|---|---|---|---|---|---|---|
image_id | A string containing the name of an image, and optionally, an item in the image separated from the image name with a colon. The image and optional item name can be separated with a blank from an optional fieldname prefix. If an image item name is specified, that item will be set to the occurrence number retrieved. This is a required argument.
The specified image must have been defined with the NAMESAVE option. The image is not allowed to have arrays, cannot have more than 255 items, and cannot be more than the maximum length of $list items (6124 bytes). The names of the image items in the specified image are mapped to fields in the current record context, then the values of those fields are moved into the image. | ||||||||
occ | The occurrence number of the fields mapped to the image to return. This is an optional argument, and it defaults to 1, meaning that the first occurrence of the fields will be returned. | ||||||||
options | A set of blank-delimited options to affect $Field_Image processing. The options, which can be specified in any combination of uppercase and lowercase letters, are:
In group context, the MissCan/NoMissCan setting applies based on whether the fields are defined in the group, that is, in any file in the group. If some fields that map to image items are not found in all files in group context, NoPartCan must be specified if any fields are to be retrieved. | ||||||||
null_value | A value to be converted to null when populating the target image. This argument is discussed at the end of this section. |
Return codes
1 - One or more fields extracted 0 - No fields extracted All errors result in request cancellation
Examples
As shown in these examples, the target image must be prepared at the time of the $Field_Image call.
- In the following example, a repeating group with three fields is extracted into an image and then processed:
IMAGE CHILD NAMESAVE LNAME IS STRING LEN 16 FNAME IS STRING LEN 16 SSN IS PACKED LEN 5 END IMAGE . . . PREPARE IMAGE CHILD IN FILE FAMILIES FRN %RECNO FOR %I FROM 1 TO 100 %RC = $Field_Image('CHILD', %I) IF %RC NE 1 THEN LOOP END END IF . . . END FOR END FOR
- In the following example, the occurrence number of the group is placed into image item
NUMBER
:IMAGE CHILD NAMESAVE LNAME IS STRING LEN 16 FNAME IS STRING LEN 16 SSN IS PACKED LEN 5 NUMBER IS BINARY LEN 2 END IMAGE . . . PREPARE IMAGE CHILD IN FILE FAMILIES FRN %RECNO FOR %I FROM 1 TO 100 %RC = $Field_Image('CHILD:NUMBER', %I) IF %RC NE 1 THEN LOOP END END IF . . . END FOR END FOR
Usage notes
- $Field_Image behaves much as if each individual field value were assigned individually to its corresponding image item. This means that assignments of non-numeric field values to a numeric target image item cause the target item to be set to 0. It also means that in certain cases a "M204.0552: VARIABLE TOO SMALL FOR RESULT" might be issued.
- If the image name and possibly the occurrence number item are specified as literals or static variables, the mapping of image item names to field names is performed at compile time, so it can be considerably more efficient at evaluation time than a $Field_Image call with a variable image name.
- The first argument to $Field_Image can have a blank after the image name (and optional occurrence item name) followed by a prefix to be prepended to each image item name in generating field names.
For example, before such a blank was allowed, if a file had fields in a repeating group that were called
ORDERDATA.PRODID
,ORDERDATA.QUANTITY
, andORDERDATA.PRICE
, an image definition used with $Field_Image would need to look something like this:IMAGE ORDERINFO ORDERDATA.PRODID IS STRING LEN 8 ORDERDATA.QUANTITY IS BINARY LEN 4 ORDERDATA.PRICE IS BINARY LEN 4 END IMAGE
But then the following statement would result in "ugly" looking image item names like
%ORDERINFO:ORDERDATA.PRODID
:%rc = $Field_Image('ORDERINFO', %OCC)
With a prefix allowed, the $Field_Image call can be this:
%rc = $Field_Image('ORDERINFO ORDERDATA.', %OCC)
And the image definition can be simplified to:
IMAGE ORDERINFO PRODID IS STRING LEN 8 QUANTITY IS BINARY LEN 4 PRICE IS BINARY LEN 4 END IMAGE
And the resulting image item references, like%ORDERINFO:PRODID
, are simpler. - The null_value argument indicates a special value to be treated as a null when populating the target image. This is useful because storing nulls in fields is problematic on many fronts in Model 204, so most sites have a special value that acts as a placeholder for a null.
Without the null_value argument, an application would have to go through the image items to find these placeholder values and convert them to real nulls. Obviously, this is tedious, error-prone, and can be CPU intensive. By specifying the null_value argument, $Field_Image will automatically convert the null placeholder to a real null.
For example, if the string
_NULL_
is used to indicate a null value in a file, the following will convert all values of_NULL_
to a null before populating the target $list:%RC = $Field_Image('ORDERINFO', , , , '_NULL_')