OUTPUT FIELD MENU [ HP Data Entry and Forms Management System (VPLUS/V) ] MPE/iX 5.0 Documentation
HP Data Entry and Forms Management System (VPLUS/V)
OUTPUT FIELD MENU
A separate Output Field Menu shown in Figure 5-18, is displayed for every
input field named in the preceding Output Record Menu. The Output Field
Menus are issued in the order the field names were entered in the output
record definition. No Output Field Menu is issued for constants.
The Output Field Menu displays the information for a field entered on the
preceding output record definition. In addition, it allows you to change
the data type of a field from CHAR to any of the legal FORMSPEC data
types. It also allows some formatting in addition to that performed by
default when data is moved from the input field in the batch file to the
output field in the output file.
Figure 5-18. Output Field Menu
The first line of the menu displays the input field values defined for
this field on the preceding Output Record Menu. None of these values can
be changed.
The second line displays the output field values defined for this field.
Except for the data type, these values were established on the preceding
Output Record Menu and cannot be changed on this menu. The data type of
all fields to be written to the output file is defaulted to CHAR. This is
done because only character type fields are written to the output record
exactly as they were entered. If you want the field to be formatted to
the format of a particular data type, you must change the data type
specification on the Output Field Menu. (Refer to Table 5-2 on the
following page for the standard formatting by data type.)
The remaining items in the Output Field Menu allow you to specify
reformatting to be performed on the data item when it is moved to the
output field. Note that these reformatting specifications cannot
override the standard conversion and reformatting performed on the item
based on the destination data type.
Data Type
You may change the output data type to a type other than CHAR. If, for
example, the data type of the input item is NUM2, you can retain this
data type by changing the output data type from CHAR to NUM2. This
causes the value to be reformatted according to the standard rules for
data type reformatting.
To illustrate, when a NUM2 item entered as 000123.12 is moved to a NUM2
field, leading zeros are replaced by blanks and it is right justified in
the field. If moved to a CHAR field the value is moved to the output
field exactly as entered. For another example, assume a date of type MDY
is entered as MAR 6, 1986. If the output data type is left as CHAR, the
date is written to the output field as MAR 6, 1986. If, on the other
hand, the output data type is changed to MDY, the date is written as
03/06/86. When you change a data type to one other than CHAR and
different from the original data type, you must take care since not all
data types are interchangeable, and those that are may require conversion
of the data. Allowed changes are:
Any type to No conversion--data is left exactly as it was entered.
character
Numeric to Convert numeric value to conform to the destination type
numeric (DIGIT, NUM, NUMn, or IMPn).
Date to date Convert date to dd/dd/dd; the exact order depends on the
destination date type (MDY, DMY, or YMD).
Field Formatting
The remaining Output Field Menu specifications affect the actual data in
the field. These specifications (STRIP, JUSTIFY, SIGN, FILL, and
CHECKDIGIT) are performed in addition to the standard formatting
performed when data is moved from an input (batch) field to an output
field.
The standard formatting is described in Table 5-2. In general, the data
is first converted to the destination data type, if necessary. Then all
other formatting is performed. Note that the data is converted only if
the output field type is specifically changed to a type other than CHAR.
Table 5-2. Standard Formatting by Data Type.
---------------------------------------------------------------------------------------------
| | |
| Destination Data | Standard Formatting |
| Type | |
| | |
---------------------------------------------------------------------------------------------
| | |
| CHAR | Conversion: none. |
| | |
| | Data movement: Move data to output field, character by character |
| | from leftmost character (including blanks) through last character |
| | (including blanks). If the data is shorter than the output field, |
| | pad with blanks on the right. If the data is longer than the output |
| | field, truncate on the right. |
| | |
| | Assume a value with length=10 CHAR |
| | moved to CHAR field, length=10 CHAR |
| | to CHAR field, length=15 CHAR |
| | to CHAR field, length=5 CH |
| | |
---------------------------------------------------------------------------------------------
| | |
| DATE | Conversion and Movement: Convert entered date to dd/dd/dd, where the |
| | order of digits depends on the date type. A date is written to MDY |
| | type field as mm/dd/yy; to DMY type field as dd/mm/yy; to YMD field |
| | as yy/mm/dd. Write converted date, character by character, to the |
| | output field starting with the leftmost character. If the date is |
| | shorter than the field, fill with blanks on the right; if longer than |
| | the field, issue error message. |
| | |
| | Assume an MDY date, length=12 JAN 31, 1986 |
| | moved to MDY field, length=12 01/31/86 |
| | to DMY field, length=8 31/01/86 |
| | to YMD field, length=8 86/01/31 |
| | to any date field, length=7 ERROR |
| | |
---------------------------------------------------------------------------------------------
| | |
| DIGIT | Conversion and Movement: Strip any leading zeros. Right justify |
| | converted data in the output field. If the data is shorter than the |
| | field, pad it with blanks on the left. If the data is too long for |
| | the output field, strip any leading blanks, one at a time until the |
| | data fits. If, after all leading blanks are removed, the data does |
| | not fit, issue error message. |
| | |
| | Assume an integer, length=7 0012345 |
| | moved to DIGIT field, length=7 12345 |
| | to DIGIT field, length=10 12345 |
| | to DIGIT field, length=5 12345 |
| | to DIGIT field, length=4 ERROR |
| | |
---------------------------------------------------------------------------------------------
Table 5-2. Standard Formatting by Data Type (cont.)
---------------------------------------------------------------------------------------------
| | |
| Destination Data | Standard Formatting |
| Type | |
| | |
---------------------------------------------------------------------------------------------
| | |
| NUMn | Conversion and Movement: Strip any commas, sign, or leading zeros. |
| or | Float any minus sign to position preceding the first nonblank |
| NUM | character. |
| | |
| | Right justify data in the output field. If the data is shorter than |
| | the field, pad with blanks on the left. If the data is too long, |
| | strip leading blanks one at a time until data fits. If, after all |
| | blanks are removed, the data is still too long, strip trailing |
| | fractional zeros, one by one. Then, if necessary, round fractional |
| | digits, one place at a time, until the value fits in the output |
| | field. (Note that rounding may change the value of the integer |
| | part.) If the value still does not fit, issue error message. |
| | |
| | Assume value with length=10 1,234.510 |
| | moved to NUM3 field, length=10 1234.510 |
| | to NUM3 field, length=11 1234.510 |
| | to NUM3 field, length=6 1234.5 |
| | to NUM3 field, length=4 1235 |
| | to NUM3 field, length=3 ERROR |
| | |
| | Assume signed value, length=10 +1234.510 |
| | moved to NUM2 field, length=10 1234.51 |
| | to NUM2 field, length=3 ERROR |
| | |
| | Assume signed value, length=7 -12.10 |
| | moved to NUM2 field, length=7 -12.10 |
| | to NUM2 field, length=3 -12 |
| | to NUM2 field, length=2 ERROR |
| | |
---------------------------------------------------------------------------------------------
| | |
| IMPn | Conversion and Movement: Strip any decimal point, commas, sign, or |
| | leading zeros. Float any minus sign to the position preceding the |
| | first nonblank digit. Right justify data in the output field. If |
| | the data is shorter than the field, pad with blanks on the left. If |
| | the data is too long, strip leading blanks, one by one. If the data |
| | does not fit and only the fractional part remains, strip leading |
| | fractional zeros. (Trailing fractional zeros are never stripped from |
| | an IMPn field.) If the data still does not fit, issue error message. |
| | |
| | |
| | Assume a value, length=10 -123.0120 z |
| | moved to IMP4 field, length=10 -1230120 |
| | to IMP4 field, length=8 -1230120 |
| | to IMP4 field, length=7 ERROR |
| | |
| | Assume a value, length=7 .0120 |
| | to IMP4 field, length=3 120 |
| | to IMP4 field, length=2 ERROR |
| | |
---------------------------------------------------------------------------------------------
REFSPEC performs all formatting (user-defined and standard) in the
following order:
1. Convert data to destination data type (unless type is CHAR). If
numeric type data does not fit in the output field after
conversion, the output field is set to all blanks,
2. STRIP (user-specified)
3. Move data to output field, justified left, and inserting check
digit if specified, and padding with blanks as needed. If
character type data does not fit, it is truncated on the right.
If a data field does not fit, the output field is set to all
blanks.
Perform any CHECKDIGIT (user-specified) and/or JUSTIFY
(user-specified).
4. SIGN (user-specified)
5. FILL (user-specified)
Note that step 3 includes data type formatting with data movement and
user-specified justification and check digit insertion. These steps are
performed simultaneously so that significant data is not lost due to
justification. For example, if you justify data in a field to the left,
the data is justified before movement; but if you justify data to the
right, the justification is performed after the data is moved.
Any changes (truncation, conversion, and so forth) made to the data in
the output field do not affect the original data in the input field.
Strip
This option lets you remove a particular character or group of characters
from data entered in the field. The following three options are
provided:
STRIP ALL Strips each occurrence of each specified character. The
characters remaining characters are shifted left to fill the space
created by stripping the specified characters.
STRIP LEADING Strips each occurrence of each specified character only
characters if it appears before any other nonblank characters in
the field. Stripped characters are replaced by blanks.
It is meaningless to strip leading blanks; if you want
to shift data left, use JUSTIFY LEFT.
STRIP TRAILING Strips each occurrence of each specified character only
characters if it appears after all other nonblank characters.
Stripped characters are replaced by blanks.
In Table 5-3 are examples using STRIP where both the input field and the
output field are 12 characters long and are the same data type; a blank
is shown by the character .
Table 5-3. Examples using STRIP
--------------------------------------------------------------------------------------------------
| | | | |
| Data | Input Value | Specification | Output Value |
| Type | | | |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| CHAR | ACBAXCBYZBB | none | ACBAXCBYZBB |
| | | STRIP ALL "ABC" | XYZ |
| | | STRIP LEADING "ABC" | XCBYZBB |
| | | STRIP TRAILING "ABC" | ACBAXCBYZ |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| DIGIT | 234567 | none | 1234567 |
| | | STRIP ALL "35" | 12467 1234567 |
| | | STRIP LEADING "0" | 3456 |
| | | STRIP TRAILING "7" | |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| NUM2 | 12,345.67 | none | -12345.67 |
| | | STRIP ALL "35" | -124.67 |
| | | STRIP LEADING "01" | -2345.67 |
| | | STRIP TRAILING "7" | -12345.6 |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| IMP2 | 12,34567 | none | -1234567 |
| | | STRIP ALL "35" | -12467 |
| | | STRIP LEADING "01" | -234567 |
| | | STRIP TRAILING "7" | -123456 |
| | | | |
--------------------------------------------------------------------------------------------------
Note that in the last IMP2 example, stripping the last character moves
the implied decimal to the position between 4 and 5.
Justify
This specification lets you move data to the right or left boundary of
the output field or to center it in the field. These three options are
specified as:
JUSTIFY RIGHT Moves the data to the right until the last character in
the output field is nonblank, padding with blanks on the
left as the data is moved.
JUSTIFY LEFT Moves data to the left until the first character in the
output field is nonblank, padding with blanks on the
right as the data is moved.
JUSTIFY CENTER Positions the data so that there is an equal number of
blanks to the right and left of the nonblank data. If
the total number of blanks in the field is not even, the
extra blank is on the right.
If JUSTIFY is not specified, numeric type data is justified right and
date type data is justified left. No justification is performed on
character type data. In Table 5-4, the examples illustrate the three
types of justification. It is assumed the input and output data types
are the same.
Table 5-4. Examples of Three Types of Justification
--------------------------------------------------------------------------------------------------
| | | | |
| Data | Input Value | Specification | Output Value |
| Type | | | |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| CHAR | ABCDEF | JUSTIFY R | ABCDEF |
| | | JUSTIFY L | ABCDEF |
| | | JUSTIFY C | ABCDEF |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| DATE | 1/30/86 | none | 1/30/86 |
| | | JUSTIFY R | 01/30/86 |
| | | JUSTIFY C | 01/30/86 |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| DIGIT NUM | 123456 | none | 123456 |
| or IMP | | JUSTIFY L | 123456 |
| | | JUSTIFY C | 123456 |
| | | | |
--------------------------------------------------------------------------------------------------
Sign
With the SIGN specification, you can indicate where you want either a
plus or minus sign placed in the output field. Any plus sign is removed
automatically when a number is moved to the output field unless you
specifically request that it be included with the PLUS option of SIGN.
SIGN has the following options:
SIGN LEFT The sign is placed in the first character position of
the field. If this position contains a blank, the sign
replaces it. Otherwise, data may be moved to the right
of a leading zero stripped to accommodate the sign. If
needed, a fractional digit is rounded. If the sign
still does not fit, an error occurs and the field is set
to blanks.
SIGN RIGHT The sign is placed in the last character position in the
field. As with SIGN LEFT, every attempt is made to fit
the sign in the field, but if it results in too many
characters, an error occurs and the field is set to
blanks.
SIGN FLOAT The sign is placed immediately preceding the first
nonblank digit in the field. As with SIGN LEFT a
leading zero may need to be stripped or a fractional
digit rounded to accommodate the sign. If it still does
not fit, an error occurs and the field is set to blanks.
SIGN ZONE The sign is represented as an "overpunch" character in
the last digit of the field. (See Table 5-2 for the
value of a zoned sign.) No movement of data is required
for this option.
NO SIGN Any sign in the input field is stripped from the field
when it is moved to the output record.
PLUS All the preceding specifications apply to either a minus
or a plus sign. The default is to insert only minus
signs. If you want to retain a plus sign, you must
enter Y in the PLUS option as well as indicate where you
want the sign positioned.
If SIGN is not specified, a minus sign is floated for numeric type data
and any plus sign is stripped; character type data is written exactly as
entered.
Table 5-5. Correspondence Between Signed Digits and Characters
-------------------------------------------------------------------------------------------------
| | | | |
| Positive Values | Positive Values | Negative Values | Negative Values |
| | | | |
-------------------------------------------------------------------------------------------------
| | | | |
| Signed Digit | Character | Signed Digit | Character |
| | | | |
-------------------------------------------------------------------------------------------------
| | | | |
| +0 | { | -0 | } |
| | | | |
| +1 | A | -1 | J |
| | | | |
| +2 | B | -2 | K |
| | | | |
| +3 | C | -3 | L |
| | | | |
| +4 | D | -4 | M |
| | | | |
| +5 | E | -5 | N |
| | | | |
| +6 | F | -6 | O |
| | | | |
| +7 | G | -7 | P |
| | | | |
| +8 | H | -8 | Q |
| | | | |
| +9 | I | -9 | R |
| | | | |
-------------------------------------------------------------------------------------------------
In Table 5-6 are examples that illustrate the use of the SIGN option.
The input and output fields are assumed to be the same data type.
Table 5-6. Example using the SIGN Option
--------------------------------------------------------------------------------------------------
| | | | |
| Data Type | Input Value | Spec. | Output Value |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| NUMO | -123456 | none | -123456 |
| | | | |
| | +123456 | none | 123456 |
| | | | |
| | -123456 | NO SIGN | 123456 |
| | | | |
| | -1234567 | SIGN ZONE | 123456P |
| | | | |
| | +1234567 | SIGN ZONE, PLUS | 123456G |
| | | | |
| | -1234567 | SIGN RIGHT | 1234567- |
| | | | |
--------------------------------------------------------------------------------------------------
Fill
This specification allows you to replace leading, trailing, or all blanks
in a field by a particular character. The specified character may be any
printable character. It may not be a nonprinting control character, nor
may it be more than one character. If FILL is not specified, no default
replacement is made.
FILL ALL Replaces all blanks in the data with the specified
character character.
FILL LEADING Replaces all leading blanks with the specified
character character.
FILL TRAILING Replaces all trailing blanks with the specified
character character.
Default = none
You can specify both FILL LEADING and FILL TRAILING with no redundancy.
But, you must not specify either FILL LEADING or FILL TRAILING with FILL
ALL. Since the FILL ALL fills all the blanks, any other FILL
specification for the field is diagnosed as an error. The examples in
Table 5-7 illustrate use of the FILL option. The input and output data
types are the same.
Table 5-7. Example using the FILL Option
--------------------------------------------------------------------------------------------------
| | | | |
| Data | Input Value | Specification | Output Value |
| Type | | | |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| CHAR | ABC DEF | FILL ALL* | ** ABC*DEF** |
| | | FILL LEADING* | **ABC DEF |
| | | FILL TRAILING* | ABC DEF** |
| | | | |
--------------------------------------------------------------------------------------------------
| | | | |
| NUM2 | 123.75 | FILL LEADING* | *****123.75 |
| | | | |
--------------------------------------------------------------------------------------------------
FILL LEADING and FILL ALL are not sensitive to the sign of a signed
number. For example, the first set of specifications in Table 5-8
produce a meaningless result because the sign is floated before the field
is filled with zeros; the second set of specifications produces the
desired result.
Table 5-8. Example using FILL LEADING and FILL ALL Option
-----------------------------------------------------------------------------------------------
| | | |
| Input Value | Specification | Output Value |
| | | |
-----------------------------------------------------------------------------------------------
| | | |
| - 999 | FLOAT SIGN | 000-999 |
| | FILL LEADING 0 | |
| | | |
-----------------------------------------------------------------------------------------------
| | | |
| - 999 | SIGN LEFT | - 999 |
| | FILL ALL 0 | -000999 |
| | | |
-----------------------------------------------------------------------------------------------
Check Digit
You can request that a check digit be added to the end of any digit or
alphabetic value by entering 10 or 11 in the CHECKDIGIT option of the
Output Field Menu. The check digit is calculated by modulo 10 or modulo
11 depending on which you specify.
Check digits can be added only to fields that are type DIG or type CHAR
and that contain only digits or letters of the alphabet.
If ADD CHECK DIGIT is not specified as 10 or 11, no check digit is added.
NOTE This specification adds a check digit. If you want to verify a
number that contains a check digit, this can be requested in the
original form design using FORMSPEC (refer to Section 4).
If the data is right justified, the nonblank digits in the field are
moved left one character position to make room for the check digit. Note
that when a check digit is to be added to a field, the length of the
output field must be specified as at least one character longer than the
input field. (Field length is increased on the Output Record Menu, not
the Output Field Menu.) Refer to Appendix D for a description of how
check digits are calculated if modulo 10 or modulo 11 is specified.
Examples:
CHECKDIGIT 10 Calculate check digit according to modulo 10 formula and
add it following rightmost nonblank digit.
CHECKDIGIT 11 Calculate check digit according to modulo 11 formula and
add it following rightmost nonblank digit.
If the product generated by a CHECKDIGIT 11 calculation
evaluates to 10, this is considered invalid and the
following message is issued when REFORMAT is executed:
"Check digit is invalid for modulus 11 calculation."
If the product generated by a CHECKDIGIT 11 calculation
evaluates to 11, a zero is appended to the basic number.
MPE/iX 5.0 Documentation