HP 3000 Manuals

File Section (Continued) [ Micro Focus COBOL Language Reference ] MPE/iX 5.0 Documentation


Micro Focus COBOL Language Reference

File Section (Continued) 

The PICTURE Clause (Continued) 

Elementary Item Size.   

The size of an elementary item, where size means the number of character
positions occupied by the elementary item in standard data format, is
determined by the number of allowable symbolsthat represent character
positions.  An integer which is enclosed in parentheses following the
symbols "A", ",", "X" , "9", "P", "Z", "*", "B", "/", "0", "+", "-", or
the currency symbol indicates the number of replications of the symbol.
Note that the following symbols can appear only once in a given PICTURE:
"S" , "V", ".",  "E" (OSVS, VSC2, MF), "CR" , and "DB".   

Symbols Used.   

The functions of the symbols used to describe an elementary item are
explained as follows:

A    Each "A" in the character-string represents a character position
     which can contain only a letter of the alphabet or a space.

B    Each "B" in the character-string represents a character position
     into which the space character will be inserted.

E    For OSVS, MF and VSC2 only:  Marks the start of the exponent in an
     external floating-point item.  The exponent occupies 1 byte of
     storage at run.

P    Each "P" indicates an assumed decimal scaling position and is used
     to specify the location of an assumed decimal point when the point
     is not within the number that appears in the data item.  The scaling
     position character "P" is not counted in the size of the data item.
     Scaling position characters are counted in determining the maximum
     number of digit positions (18) in numeric edited items or numeric
     items.  The scaling position character "P" can appear only to the
     left or right as a continuous string of "P"s within a PICTURE
     description; since the scaling position character "P" implies an
     assumed decimal point (to the left of "P" s if "P"s are leftmost
     PICTURE characters and to the right if "P"s are rightmost PICTURE
     characters), the assumed decimal point symbol "V" is redundant as
     either the leftmost or rightmost character within such a PICTURE
     description.

     The character "P" and the insertion character "." (period) cannot
     both occur in the same PICTURE character-string.  If, in any
     operation involving conversion of data from one form of internal
     representation to another, the data item being converted is
     described with the PICTURE character "P", each digit position
     described by a "P" is considered to contain the value zero, and the
     size of the data item is considered to include the digit positions
     so described.

     For ANS85 only:  In certain operations that reference a data item
     whose PICTURE character-string contains the symbol "P", the
     algebraic value of the data item is used rather than the actual
     character representation of the data item.  This algebraic value
     assumes the decimal point in the prescribed location and zero in
     place of the digit position specified by the symbol "P".  The size
     of the value is the number of digit positions represented by the
     PICTURE character-string.  These operations are any of the
     following.

        1.  Any operation requiring a numeric sending operand.

        2.  An elementary MOVE statement where the sending operand is
            numeric and its PICTURE character-string contains the symbol
            "P".

        3.  A MOVE statement where the sending operand is numeric edited
            and its PICTURE character-string contains the symbol "P" and
            the receiving operand is numeric or numeric edited.

        4.  A comparison operation where both operands are numeric.

            In all other operations the digit positions specified with
            the symbol "P" are ignored and are not counted in the size of
            the operand.

S    The letter "S" is used in a character-string to indicate the
     presence, but neither the representation nor, necessarily, the
     position of an operational sign; it must be written as the leftmost
     character in the PICTURE. The "S" is not counted in determining the
     size (in terms of standard data format characters) of the elementary
     item unless the entry is subject to a SIGN clause which specifies
     the optional SEPARATE CHARACTER phrase.  (See the section The SIGN 
     Clause in this chapter.)

V    The letter "V" is used in a character-string to indicate the
     location of the assumed decimal point and can only appear once in a
     character-string.  The "V" does not represent a character position
     and therefore is not counted in the size of the elementary item.
     When the assumed decimal point is to the right of the rightmost
     symbol in the string the "V" is redundant.

X    Each "X" in the character-string is used to represent a character
     position which contains any allowable character from the computer's
     character set.

Z    Each "Z" in a character-string can only be used to represent the
     leftmost numeric character positions which will be replaced by a
     space character when the contents of that character position is
     zero.  Each "Z" is counted in the size of the item.

9    Each "9" in the character-string represents a character position
     which contains a numeral and is counted in the size of the item.

0    Each "0" (zero) in the character-string represents a character
     position into which the numeral zero will be inserted.  The "0" is
     counted in the size of the item.

/    Each "/" (slash) in the character-string represents a character
     position into which the slant character will be inserted.  The "/"
     is counted in the size of the item.

,    Each "," (comma) in the character-string represents a character
     position into which the character "," will be inserted.  This
     character position is counted in the size of the item.  The
     insertion character "," must not be the last character in the
     PICTURE character-string.

     For ANS85 only:  The insertion character "," can be the last
     character in the PICTURE character-string.

.    When the character "." (period) appears in the character-string it
     is an editing symbol which represents the decimal point for
     alignment purposes and, in addition, represents a character position
     into which the character "." will be inserted.  The character "." is
     counted in the size of the item.  For a given program the functions
     of the period and comma are exchanged if the clause DECIMAL-POINT IS
     COMMA is stated in the SPECIAL-NAMES paragraph.  In this exchange
     the rules for the period apply to the comma and the rules for the
     comma apply to the period wherever they appear in a PICTURE clause.
     The insertion character "." must not be the last character in the
     PICTURE character-string.

     For ANS85 only:  The insertion character "." can be the last
     character in the PICTURE character-string.

+,   These symbols are used as editing sign control symbols.  When used,
-,   they represent the character position into which the editing sign
CR,  control symbol will be placed.  The symbols are mutually exclusive
DB   in any one character-string and each character used in the symbol is
     counted in determining the size of the data item.

*    Each "*" (asterisk) in the character-string represents a leading
     numeric character position into which an asterisk will be placed
     when the contents of that position is zero.  Each "*" is counted in
     the size of the item.

cs   The currency symbol in the character-string represents a character
     position into which a currency symbol is to be placed.  The currency
     symbol in a character-string is represented by either the currency
     sign or by the single character specified in the CURRENCY SIGN
     clause in the SPECIAL-NAMES paragraph.  The currency symbol is
     counted in the size of the item.  See your COBOL System Reference 
     for details of the CURRENCY directive.

Editing Rules.   

Two general methods of performing editing in the PICTURE clause are
available:  insertionor suppressionand replacement.  Four types of
insertion editing are available:

   1.  Simple insertion

   2.  Special insertion

   3.  Fixed insertion

   4.  Floating insertion

Two types of suppression and replacement editing are available:

   1.  Zero suppression and replacement with spaces

   2.  Zero suppression and replacement with asterisks

The type of editing which can be performed upon an item is dependent upon
the category to which the item belongs.  Table 4-3 specifies which type
of editing can be performed upon a given category.

          Table 4-3 :  Editing Types For Data Categories 

---------------------------------------------------------------------------------------------
|                                             |                                             |
|                  Category                   |               Type of Editing               |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| Alphabetic                                  | Simple insertion "B" only 1                 |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| Numeric                                     | None                                        |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| Alphanumeric                                | None                                        |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| Alphanumeric Edited                         | Simple insertion "0",, "B" and "/"          |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| Numeric Edited                              | All 2                                       |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| DBCS                                        | Simple insertion                            |
|                                             |                                             |
---------------------------------------------------------------------------------------------
|                                             |                                             |
| External floating-point                     | Special insertion                           |
|                                             |                                             |
---------------------------------------------------------------------------------------------


NOTE 1 For ANS85 only: In the ANSI'74 standard, PICTURE clauses containing both "A" and "B" are treated as simple insertion in category Alphabetic. As the ANSI'85 standard does not support "B" in the Alphabetic category, the ANSI'85 standard considers this PICTURE as simple insertion in the Alphanumeric Edited category. 2 Floating insertion editing and editing by zero suppression and replacement are mutually exclusive in a PICTURE clause. Only one type of replacement can be used with zero suppression in a PICTURE clause.
Simple Insertion Editing. The "," (comma), "B" (space), "0" (zero), and "/" (slash) are used as the insertion characters. The insertion characters are counted in the size of the item and represent the position in the item into which the character will be inserted. Special Insertion Editing. For OSVS, MF and VSC2 only: This type of editing is valid for either numeric edited items or external floating-point items. The "." (period) is used as the insertion character. In addition to being an insertion character it represents the decimal point for alignment purposes. The insertion character used for the actual decimal point is counted in the size of the item. The use of the assumed decimal point, represented by the symbol "V" and the actual decimal point, represented by the insertion character, in the same PICTURE character-string is disallowed. The result of special insertion editing is the appearance of the insertion character in the item in the same position as shown in the character-string. Fixed Insertion Editing. The currency symbol and the editing sign control symbols "+" , "-", "CR", "DB" are the insertion characters. Only one currency symbol and only one of the editing sign control symbols can be used in a given PICTURE character-string. When the symbols "CR" or "DB" are used, they represent two character positions in determining the size of the item and they must represent the rightmost character positions that are counted in the size of the item. The symbol "+" or "-", when used, must be either the leftmost or rightmost character position to be counted in the size of the item. The currency symbol must be the leftmost character. Table 4-4 : Editing Symbols in PICTURE Character-Strings ---------------------------------------------------------- | | | | | Result | | Editing Symbols in | | | Picture | | | Character-string | | | | | ---------------------------------------------------------- | | | | | | Data Item | Data Item | | | Positive | Negative | | | or Zero | | | | | | ---------------------------------------------------------- | | | | | + | + | - | | | | | ---------------------------------------------------------- | | | | | - | space | - | | | | | ---------------------------------------------------------- | | | | | CR | 2 spaces | CR | | | | | ---------------------------------------------------------- | | | | | DB | 2 spaces | DB | | | | | ---------------------------------------------------------- Floating Insertion Editing. The currency symbol and the editing sign control symbols "+" and "-" are the floating insertion characters and as such are mutually exclusive in a given PICTURE character-string. Floating insertion editing is indicated in a PICTURE character-string by using a string of at least two of the floating insertion characters. This string of floating insertion characters can contain any of the simple insertion characters or have simple insertion characters immediately to the right of this string. These simple insertion characters are part of the floating string. When the floating insertion character is the currency symbol, this string of floating insertion characters can have one of the editing sign control symbols "+", "-", "CR" or "DB" immediately to the right of this string. The leftmost character of the floating insertion string represents the leftmost limit of the floating symbol in the data item. The rightmost character of the floating string represents the rightmost limit of the floating symbols in the data item. The second floating character from the left represents the leftmost limit of the numeric data that can be stored in the data item. Non-zero numeric data can replace all the characters at or to the right of this limit. Floating insertion editing can be represented in a PICTURE character-string in only two ways. One way is to represent any or all of the leading numeric character positions on the left of the decimal point by the insertion character. The other way is to represent all of the numeric character positions in the PICTURE character-string by the insertion character. If the insertion characters are only to the left of the decimal point in the PICTURE character-string, the result is that a single floating insertion character will be placed into the character position immediately preceding either the decimal point or the first non-zero digit in the data represented by the insertion symbol string, whichever is farther to the left in the PICTURE character-string. The character positions preceding the insertion character are replaced with spaces. If all numeric character positions in the PICTURE character-string are represented by the insertion character, the result depends upon the value of the data. If the value is zero, the entire data item will contain spaces. If the value is not zero, the result is the same as when the insertion character is only to the left of the decimal point. For ANS85 only: If all numeric positions in the PICTURE character string are represented by the insertion character, at least one numeric position must be to the left of the assumed or actual decimal point. To avoid truncation, the minimum size of the PICTURE character-string for the receiving data item must be the number of characters in the sending data item, plus the number of non-floating insertion characters being edited into the receiving data item, plus one for the floating insertion character. Zero Suppression Editing. The suppression of leading zeros in numeric character positions is indicated by the use of the alphabetic character "Z" or the character "*" (asterisk) as suppression symbols in a PICTURE character- string. These symbols are mutually exclusive in a given PICTURE character-string. Each suppression symbol is counted in determining the size of the item. If "Z" is used, the replacement character will be the space and if the asterisk is used, the replacement character will be "*". Zero suppression and replacement is indicated in a PICTURE character-string by using a string of one or more of the allowable symbols to represent leading numeric character positions which are to be replaced when the associated character position in the data contains a zero. Any of the simple insertion characters embedded in the string of symbols or to the immediate right of this string are part of the string. Zero suppression can be represented in a PICTURE character-string in only two ways. One way is to represent any or all of the leading numeric character positions to the left of the decimal point by suppression symbols. The other way is to represent all of the numeric character positions in the PICTURE character-string by suppression symbols. If the suppression symbols appear only to the left of the decimal point, any leading zero in the data which corresponds to a symbol in the string is replaced by the replacement character. Suppression terminates at the first non-zero digit in the data represented by the suppression symbol string or at the decimal point, whichever is encountered first. If all numeric character positions in the PICTURE character-string are represented by suppression symbols and the value of the data is not zero, the result is the same as if the suppression characters were only to the left of the decimal point. If the value is zero and the suppression symbol is "Z", the entire data item will be spaces. If the value is zero and the suppression symbol is "*", the data item will be all "*" except for the actual decimal point. The symbols "+", "-", "*", "Z" and the currency symbol, when used as floating replacement characters, are mutually exclusive within a given character-string. Precedence Rules. Table 4-5 shows the order of precedence when using characters as symbols in a character-string. An "X" at an intersection indicates that the symbol(s) at the top of the column can precede, in a given character-string, the symbol(s) at the left of the row. Arguments appearing in braces indicate that the symbols are mutually exclusive. The currency symbol is indicated by the symbol "cs". At least one of the symbols "A " , "X", "Z", "9" or "*", or at least two of the symbols "+" , "-" or "cs" must be present in a PICTURE string. In Table 4-5, non-floating insertion symbols "+" and "-" , floating insertion symbols "Z", "*", "+", "-", and "cs", and other symbol "P" appear twice in the PICTURE character precedence chart. The leftmost column and uppermost row for each symbol represents its use to the left of the decimal point position. The second appearance of symbol in the row and column represents its use to the right of the decimal point position. Table 4-5 : PICTURE Character Precedence Chart (continued overleaf)
[]
[]
[]
Table 4-5 : PICTURE Character Precedence Chart (continued) The RECORD Clause Function. For ANS85 only: The RECORD clause specifies either the number of character positions in a fixed length record or the range of character positions in a variable length record. If the number of character positions varies, the clause specifies the minimum and maximum number of character positions. For MF only: The concepts of FIXEDand VARIABLEformat files used throughout this section do not directly apply to LINE SEQUENTIAL files. See your COBOL System Reference for details on the implications of using LINE SEQUENTIAL files in your COBOL implementation. For XOPEN only: Although it is a part of the standard COBOL definition, the RECORD CONTAINS clause is explicitly excluded from the X/Open COBOL language definitions and should not be used in a conforming X/Open COBOL source program. General Formats. Format 1.
[]
For ANS85 only: Format 2.
[]
Format 3.
[]
Syntax Rules. Format 1. 1. No record description entry for the file can specify a number of character positions different from integer-1. For ANS85 only: Format 2. 2. Record descriptionsfor the file must not describe records which contain fewer character positions than specified by integer-2, nor records which contain a greater number of character positions than that specified by integer-3. 3. Integer-3 must be greater than integer-2. 4. Data-name-1 must describe an elementary unsigned integer in the Working-Storage or Linkage Section. General Rules. All Formats. 1. If the RECORD clause is not specified, the size of each data is completely defined in the record description entry. 2. For ANS85 only: If the associated file connector is an external file connector, all file description entries in the run unit which are associated with that file connector must specify the same values for integer-1 or integer-2 and integer-3. If the RECORD clause is not specified, all record description entries associated with this file connector must be the same length. 3. For MF only: Line sequential files are neither truly fixed nor truly variable format files: the presence or absence of any RECORDING MODE, RECORD CONTAINS or RECORD VARYING IN SIZE clause does not, therefore, inpact their performance. Format 1. 4. Format 1 is used to specify fixed length records. Integer-1 specifies the number of character positions contained in each record in the file. For ANS85 only: Format 2. 5. Format 2 is used to specify variable length records. Integer-2 specifies the minimum number of character positions to be contained in any record of the file. Integer-3 specifies the maximum number of character positions in any record of the file. 6. The number of character positions associated with a record description is determined by the sum of the number of character positions in all elementary data items excluding redefinitions and renamings, plus any implicit FILLER due to synchronization. If a table is specified: a. The minimum number of table elements described in the record is used in the summation above to determine the minimum number of character positions associated with the record description. b. The maximum number of table elements described in the record is used in the summation above to determine the maximum number of character positions associated with the record description. c. If integer-2 is not specified, the minimum number of character positions to be contained in any record of the file is equal to the least number of character positions described for a record in that file. 7. If integer-3 is not specified, the maximum number of character positions to be contained in any record of the file is equal to the greatest number of character positions described for a record in that file. 8. If data-name-1 is specified, the number of character positions in the record must be placed into the data item referenced by data-name-1 before any RELEASE, REWRITE, or WRITE statement is executed for the file. 9. If data-name-1 is specified, the execution of a DELETE, RELEASE, REWRITE, START, or WRITE statement or the unsuccessful execution of a READ or RETURN statement does not alter the content of the data item referenced by data-name-1. 10. During the execution of a RELEASE, REWRITE, or WRITE statement, the number of character positions in the record is determined by the following conditions: a. If data-name-1 is specified, by the content of the data item referenced by data-name-1. b. If data-name-1 is not specified and the record does not contain a variable occurrence data item, by the number of character positions in the record. c. If data-name-1 is not specified and the record does contain a variable occurrence data item, by the sum of the fixed portion and that portion of the table described by the number of occurrences at the time of execution of the output statement. If the number of character positions in the logical record which is to be written is less than integer-2 or greater than integer-3, the output statement is unsuccessful and, except during execution of a RELEASE statement, the associated I/O status is set to a value indicating the cause of the condition. 11. If data-name-1 is specified, after the successful execution of a READ or RETURN statement for the file, the contents of the data item referenced by data-name-1 will indicate the number of character positions in the record just read. 12. If the INTO phrase is specified in the READ or RETURN statement, the number of character positions in the current record that participate as the sending data items in the implicit MOVE statement is determined by the following conditions: a. If data-name-1 is specified, by the content of the data item referenced by data-name-1. b. If data-name-1 is not specified, by the value that would have been moved into the data item referenced by data-name-1 had data-name-1 been specified. Format 3. 13. When format 3 of the RECORDclause is used, integer-4 and integer-5 refer to the minimum number of characters in the smallest size data record and the maximum number of characters in the largest size data record respectively. However, in this case, the size of each data record is completely defined in the record description entry. 14. The size of each data record is specified in terms of the number of character positions required to store the logical record, regardless of the types of characters used to represent the items within the logical record. The size of a record is determined by the sum of the number of characters in all fixed length elementary items plus the sum of the maximum number of characters in any variable length item subordinate to the record. This sum can be different from the actual size of the record. See the section Selection of Character Representation and Radix in the chapter Concepts of the COBOL Language, and the sections The SYNCHRONIZED Clause and The USAGE Clause in this chapter.


MPE/iX 5.0 Documentation