HP 3000 Manuals

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