1 COBOL Invokes the VSI COBOL compiler to compile a COBOL source program on OpenVMS. See the COBOL User Manual and the COBOL Reference Manual for additional information. Format - COBOL [/command-qualifier]... {file-spec [/file-qualifier]... }... 2 release_notes The release notes for the latest installed version of VSI COBOL are located in SYS$HELP:COBOLvvv.RELEASE_NOTES. (Where vvv = the installed version number) These release notes contain information regarding restrictions, known problems, and differences between HP COBOL on OpenVMS VAX and OpenVMS Alpha, and VSI COBOL on OpenVMS I64. 2 miscellaneous_topics 3 literals A literal is a character-string whose value is specified by: 1) the ordered set of characters it contains, or 2) a reserved word that is a figurative constant. Every literal belongs to one of two types: numeric or nonnumeric. 4 figurative_constants Figurative constants name and refer to specific constant values generated by the compiler. The singular and plural forms of figurative constants are equivalent and interchangeable. The figurative constants supported by VSI COBOL are ZERO, ZEROS, ZEROES, SPACE, SPACES, HIGH-VALUE, HIGH-VALUES, LOW-VALUE, LOW-VALUES, QUOTE, QUOTES, ALL literal, and symbolic-character. 4 hexadecimal_literals A hexadecimal literal (a HP extension to nonnumeric literals) is a character string of 2 to 256 hexadecimal digits. It is delimited on the left by the separator 'X' (or 'x') immediately followed by a quotation mark (") or apostrophe ('); on the right it is delimited by a matching quotation mark or apostrophe. The character string consists only of pairs of hexadecimal digits representing a value ranging from 00 to FF; hence, only the characters '0' through '9', 'A' through 'F', and 'a' through 'f' are valid. The value of a hexadecimal literal is the composite value of the paired hexadecimal representations. The compiler truncates hexadecimal literals to a maximum of 128 hexadecimal representations (pairs of hexadecimal digits). A hexadecimal literal can be used interchangeably wherever a nonnumeric literal can appear in VSI COBOL syntax. (Note that hexadecimal literals cannot be used as operands in arithmetic statements.) 4 nonnumeric_literals A nonnumeric literal is a character-string of 0 to 256 characters. It is delimited on both ends by quotation marks (") or apostrophes ('). A nonnumeric literal delimited by apostrophes is treated in the same manner as a nonnumeric literal delimited by quotation marks. The value of a nonnumeric literal is the value of the characters in the character-string. It does not include the quotation marks (or apostrophes) that delimit the character-string. All other punctuation characters in the nonnumeric literal are part of its value. The compiler truncates nonnumeric literals to a maximum of 256 characters. 4 numeric_literals A numeric literal is a character-string of 1 to 33 characters selected from the digits 0 through 9, the plus sign, the minus sign, and the decimal point. The value of a numeric literal is the algebraic quantity represented by the characters in the literal. Its size equals the number of digits in the character-string. 4 floating_point_literals A floating point literal is a character-string whose value is specified by 4 to 37 characters selected from the digits 0 to 9, the plus sign, the minus sign, the decimal point and the letter E (upper or lower case). The value of a floating point literal is the algebraic quantity represented by the characters in the literal that precede the "E" multiplied by ten raised to the power of the algebraic quantity represented by the characters in the literal following the "E". 3 meta-language The COBOL meta-language describes COBOL syntax. Meta-language elements appear in formats, but they are not part of a source program. 4 braces Braces ({}) indicate that you must select one (but no more than one) of the enclosed entries. If one of the entries contains only reserved words that are not key words, that entry is the default option when no other entry is selected. 4 brackets Brackets ([]) enclose an optional part of a general format. When they enclose vertically stacked entries, brackets indicate that you can select one (but no more than one) of the enclosed entries. 4 choice_indicators If choice indicators, {| |}, enclose part of a general format, you must select one or more of the enclosed entries (in any order). However, no entry can be used more than once. 4 ellipsis In general formats, the ellipsis (...) allows repetition of a part of the format. To determine which part of the format can be repeated: 1) Find the ellipsis. 2) Scanning to the left, find the first right delimiter, either ] or }. 3) Continuing to the left, find its logically matching left delimiter, either [ or {. The ellipsis applies to the part of the format between the matched pair of delimiters. 4 lowercase_words Lowercase words are generic terms. They indicate entries the programmer must provide. Lowercase words can represent COBOL words, literals, PICTURE character-strings, comment-entries, function arguments, or complete syntactical entries. 4 special-character_words The following special-character words are not underlined in general formats but are required where they appear: colon (:) single (=) and double (==) equal signs period (.) left (() or right ()) parenthesis plus sign (+) left (<) or right (>) angle bracket minus sign (-) single (*) and double (**) asterisk slash (/) 4 uppercase_words Underlined uppercase words are key words. A key word is required and must be spelled correctly when it is included in the source program. Uppercase words not underlined are optional. They serve only to improve the source program's readability. 3 program_components A COBOL program is made up of a number of different components. These are listed alphabetically. 4 clause A subdivision of a COBOL sentence; an ordered set of consecutive COBOL character-strings that specifies an attribute of an entry. 4 contained_program A COBOL source program that is directly or indirectly contained in another COBOL source program. 4 division A division is a collection of one or more sections or paragraphs. Each of the four divisions consists of a division header and division body. A division header identifies and marks the beginning of a division. It is a specific combination of reserved words followed by a separator period. 4 end_of_program The end of a COBOL source program is indicated either by the end of that program's Procedure Division or by the END PROGRAM header. Format - END PROGRAM program-name program-name must contain 1 to 31 characters and follow the rules for user-defined words. It must be identical to a program-name declared in a preceding PROGRAM-ID paragraph. 4 paragraph A paragraph consists of a paragraph header or paragraph-name (depending on the division) followed by zero, one, or more entries (or sentences). A paragraph header is a reserved word followed by a separator period. Paragraph headers identify paragraphs in the Identification and Environment Divisions. A paragraph-name is a user-defined word followed by a separator period. Paragraph-names identify Procedure Division paragraphs. 4 phrase An ordered set of one or more consecutive COBOL character-strings that forms part of a clause or procedural statement. 4 program_organization identification-division [ environment-division ] [ data-division ] [ procedure-division ] [ source-program ] ... [ end-program-header ] 4 section A section is a set of zero, one, or more paragraphs or entries (called a section body) that follows a section header and related section body. A section header identifies and marks the beginning of a section in the Environment, Data, and Procedure Divisions. In the Environment and Data Divisions, a section header is a specific combination of reserved words followed by a separator period. In the Procedure Division, a section header is a user-defined word followed by the word SECTION (and an optional segment-number). A separator period always follows a section header. 4 sentence A sequence of one or more statements, the last of which ends with a separator period. 4 separators A separator delimits character-strings. It can be one character or two contiguous characters. The following characters are recognized as separators: space ( ) quotation mark (") comma (,) apostrophe (') semicolon (;) pseudo-text delimiter (==) period (.) horizontal tab colon (:) left (() or right ()) parenthesis 4 source-program represents a contained (nested) COBOL source program. It begins with the Identification Division, a COPY statement or a REPLACE statement. It ends with the END PROGRAM header or the end of the Procedure Division. 4 statement In the Procedure Division, a syntactically valid combination of words and symbols that begins with a verb. 4 word A character-string of not more than 31 characters that forms one of the following: function-name A COBOL word that names a mechanism provided to determine the value of a function. reserved word A COBOL word specified in the list of words that can appear in a COBOL program. A reserved word cannot appear in a program as a user-defined word or system-name. system-name A COBOL word that has already been defined by the implementor to refer to the program's operating environment. text-word A character (or a sequence of characters) in a COBOL library, source program, pseudo-text, or dictionary that is subject to certain restrictions. user-defined word A COBOL word that must appear in the source program to satisfy the format of a clause or statement. verb A word that causes the compiler or object program to take action. 3 source_reference_format The VSI COBOL compiler recognizes two source program formats: ANSI and terminal. 4 ANSI_format ANSI format conforms to the American National Standard COBOL reference format. It describes COBOL programs in terms of character positions on an input line. A source program line has 80 character positions: Margin L C A B R | | | | | +--------------------------------------------------+ column | 1 - 6 | 7 | 8 - 11 | 12 - 72 | 73 - 80 | +--------------------------------------------------+ | | | | | | | Area A Area B Identification Area | | | Indicator Area | Sequence Number Area The compiler expects ANSI format only when the command line includes the /ANSI_FORMAT qualifier. 4 terminal_format The VSI COBOL terminal format shortens program preparation time and reduces storage space for source programs. There is no sequence number or identification area, and the indicator area is combined with Area A. 3 special_registers Compiler-generated storage areas primarily used to store information relating to specific COBOL features. There are four types: (1) Report Writer, (2) Record Management, (3) Database Management, and (4) X/Open related. 4 1_DB-CONDITION A database special register whose value indicates either a successful condition or an exception condition. 4 2_DB-CURRENT-RECORD-ID A database special register containing the subschema user ID number (UID) of the record type of the current record of the run unit. It contains zero if there is no current record of the run unit. 4 3_DB-CURRENT-RECORD-NAME A database special register containing the name of the record type of the current record of the run unit. It contains spaces if there is no current record of the run unit. 4 4_DB-KEY A database special register that holds the dbkey of the record accessed by the last FETCH, STORE or FIND statement. This special register can be used to fine tune storage strategies in the database. 4 5_DB-UWA A database special register containing the user work area (UWA). The UWA is the record delivery area that is used by the DBCS to make data items available to your program. 4 6_LINAGE-COUNTER A special register whose value points to the current position in the page body. 4 7_LINE-COUNTER A Report Writer special register whose value points to the current line in the current page. 4 8_PAGE-COUNTER A Report Writer special register whose value points to the current page in a report. 4 9_RMS-CURRENT-FILENAME A Record Management Services (RMS) exception condition register containing the name of the file causing the exception condition. This register is implicitly associated with the file most recently operated on by an I/O statement. 4 10_RMS-CURRENT-STS A Record Management Services (RMS) exception condition register. It contains the primary RMS status value of an I-O operation. This register is implicitly associated with the file most recently operated on by an I/O statement. RMS-CURRENT-STV is the secondary value. 4 11_RMS-CURRENT-STV A Record Management Services (RMS) exception condition register. It contains the secondary RMS status value of an I-O operation. This register is implicitly associated with the file most recently operated on by an I/O statement. RMS-CURRENT-STS is the primary value. 4 12_RMS-FILENAME A Record Management Services (RMS) exception condition register containing the name of the file causing the exception condition. At any point in time, this register must be explicitly associated with a particular file. 4 13_RMS-STS A Record Management Services (RMS) exception condition register. It contains the primary RMS status value of an I-O operation. At any point in time, this register must be explicitly associated with a particular file. RMS-STV is the secondary value. 4 14_RMS-STV A Record Management Services (RMS) exception condition register. It contains the secondary RMS status value of an I-O operation. At any point in time, this register must be explicitly associated with a particular file. RMS-STS is the primary value. 4 15_RETURN-CODE A special register that may be used to set a return value for a calling program or to retreive the value returned from a called program. 2 IDENTIFICATION_DIVISION The IDENTIFICATION DIVISION marks the beginning of a COBOL program. It also identifies a program and its source listing. Format - IDENTIFICATION DIVISION. PROGRAM-ID. program-name [IS {| INITIAL |} PROGRAM ][WITH IDENT id-str] . [ {| COMMON |} ] [ AUTHOR. [comment-entry] ... ] [ INSTALLATION. [comment-entry] ... ] [ DATE-WRITTEN. [comment-entry] ... ] [ DATE-COMPILED. [comment-entry] ... ] [ SECURITY. [comment-entry] ... ] [ OPTIONS. [ARITHMETIC {NATIVE|STANDARD}.] ] 3 PROGRAM-ID The PROGRAM-ID paragraph identifies a program. Format - PROGRAM-ID. program-name [IS {| INITIAL |} PROGRAM ][WITH IDENT id-str]. [ {| COMMON |} ] 4 program-name identifies a COBOL source program. 4 id-str identifies a literal string to be included in the object module generated by the compilation, for identification. 3 AUTHOR The AUTHOR paragraph is for documentation only. Format - AUTHOR. [comment-entry] ... 4 comment-entry Comment-entry can consist of any combination of characters from the computer character set. Comment-entries can span several lines in Area B. However, they cannot be continued by using a hyphen in the indicator area. The end of comment-entry is the line before the next entry in Area A. 2 ENVIRONMENT_DIVISION The Environment Division describes the program's physical environment. It also specifies input-output control and describes special control techniques and hardware characteristics. Format - [ ENVIRONMENT DIVISION. [ CONFIGURATION SECTION. [ SOURCE-COMPUTER. [source-computer-entry] ] [ OBJECT-COMPUTER. [object-computer-entry] ] [ SPECIAL-NAMES. [special-names-entry] ] ] [ INPUT-OUTPUT SECTION. FILE-CONTROL. {file-control-entry} ... [ I-O-CONTROL. [input-output-control-entry] ] ] ] 3 SOURCE-COMPUTER The SOURCE-COMPUTER paragraph specifies the computer on which the source program is to be compiled. Format - SOURCE-COMPUTER. [ { Alpha } [WITH DEBUGGING MODE] . ] [ { I64 } [WITH DEBUGGING MODE] . ] [ { computer-type } ] 4 computer-type is a user-defined word that names the computer. 3 OBJECT-COMPUTER The OBJECT-COMPUTER paragraph describes the computer on which the program is to execute. Format - OBJECT-COMPUTER. [ { Alpha } [ { I64 } [ { computer-type } [ { WORDS } ] [ MEMORY SIZE integer { CHARACTERS } ] [ { MODULES } ] [ PROGRAM COLLATING SEQUENCE IS alphabet-name ] [ SEGMENT-LIMIT IS segment-number] . ] 4 computer-type is a user-defined word that names the computer. 4 alphabet-name is the name of a collating sequence defined in the ALPHABET clause of the SPECIAL-NAMES paragraph. 4 segment-number is an integer from 1 through 49. 3 SPECIAL-NAMES The SPECIAL-NAMES paragraph: (1) associates compiler features and OpenVMS logical names with user-defined mnemonic-names, (2) defines symbolic-characters, (3) specifies the currency sign, (4) selects the decimal point, (5) relates alphabet-names to character sets or collating sequences, (6) relates class-names to character sets, (7) provides for cursor positioning for an ACCEPT (Format 5) statement, and (8) provides information on the cause of termination of an ACCEPT (Format 5) statement. Format - SPECIAL-NAMES. [ [ { CARD-READER } ] [ { PAPER-TAPE-READER } ] [ { CONSOLE } IS device-name ] [ { LINE-PRINTER } ] [ { PAPER-TAPE-PUNCH } ] [ ] [C01 IS top-of-page-name ] [ ] ... [SWITCH switch-name ] [ { IS switch-name } ] [ { [ON STATUS IS cond-name] [OFF STATUS IS cond-name] } ] [ { IS switch-name } ] [ { [OFF STATUS IS cond-name] [ON STATUS IS cond-name] } ] [ { ON STATUS IS cond-name [OFF STATUS IS cond-name] } ] [ { OFF STATUS IS cond-name [ON STATUS IS cond-name] } ] [ { ASCII } ] [ { STANDARD-1 } ] [ { STANDARD-2 } ] [ALPHABET alphabet-name IS { NATIVE } ] ... [ { EBCDIC } ] [ { {first-literal } ] ] [ { { [{ THRU } last-literal ] } ... } ] [ { { [{ THROUGH } ] } } ] [ { { [{ ALSO lit } ... ] } } ] [SYMBOLIC CHARACTERS ] [ {{{symbolic-char} ... { IS } {char-val} ... } ... } ] ... [ {{ { ARE } } } ] [ {{ [IN alphabet-name] } ... ] [CLASS class-name IS {first-literal [{THROUGH} last-literal]} ] [ { [{THRU } ]} ... ] ... [CURRENCY SIGN IS char] [DECIMAL-POINT IS COMMA] [CURSOR IS cursor-position] [CRT STATUS IS crt-status-code]. ] 4 device-name is a mnemonic-name for a device. It always possesses the global attribute. Only the ACCEPT and DISPLAY statements can refer to it. 4 top-of-page-name is the first line of a logical page (top-of-page). It always possesses the global attribute. Only the WRITE statement can refer to it. 4 switch-num is the number of a program switch. Its value can range from 1 through 16. 4 switch-name is a mnemonic-name for the program switch. 4 cond-name is a condition-name for the "on" or "off" status of the switch. It always possesses the global attribute. Its truth value is "true" when the STATUS phrase matches the status of the switch, "false" when it does not. 4 alphabet-name is the user-defined word for a character set and/or collating sequence. It always possesses the global attribute. 4 first-literal is a literal. It specifies: (1) the value of one or more alphabetic characters, or (2) the first in a range of values. 4 last-literal is a literal. It specifies the last in a range of values. 4 lit is a literal. It specifies an alphabetic character value. 4 symbolic-char is a user-defined word that names the symbolic-character. It always possesses the global attribute. The same symbolic-char cannot appear more than once in the SYMBOLIC CHARACTERS clause. 4 char-val is an integer that indicates the ordinal position of a character in the native character set. 4 class-name is the user-defined word for a class. It always possesses the global attribute 4 char is a one-character nonnumeric literal that specifies the currency symbol. It cannot be a symbolic character. 4 cursor-position is a data item declared in the Working-Storage Section of the program. It is either an elementary unsigned numeric integer either four or six characters in length, described as USAGE IS DISPLAY, or a group item either four or six charaters in length, consisting of two elementary unsigned data items. 4 crt-status-code is a group data item three characters in length, declared in the Working-Storage Section of the program. 3 FILE-CONTROL The FILE-CONTROL paragraph contains the file-related specifications. 4 1format_sequential FILE-CONTROL. Format 1 - Sequential File SELECT [OPTIONAL] file-name { ASSIGN TO [ EXTERNAL ] file-spec } { [ DYNAMIC ] } { } { ASSIGN TO [ EXTERNAL ] { data-name } } { [ DYNAMIC ] { literal } } { { DISK } } { { PRINTER } } [ RESERVE reserve-num [ AREA ] ] [ [ AREAS ] ] [ [ ORGANIZATION IS ] SEQUENTIAL ] [ BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS } ] [ { CHARACTERS } ] [CODE-SET IS alphabet-name] [PADDING CHARACTER IS pad-char] [RECORD DELIMITER IS STANDARD-1] [ACCESS MODE IS SEQUENTIAL] [LOCK MODE IS { AUTOMATIC [WITH LOCK ON RECORD] } ] [ { EXCLUSIVE } ] [FILE STATUS IS file-stat] . 4 2format_line_sequential FILE-CONTROL. Format 2 - Line Sequential File SELECT [OPTIONAL] file-name { ASSIGN TO [ EXTERNAL ] file-spec } { [ DYNAMIC ] } { } { ASSIGN TO [ EXTERNAL ] { data-name } } { [ DYNAMIC ] { literal } } { { DISK } } { { PRINTER } } [ RESERVE reserve-num [ AREA ] ] [ [ AREAS ] ] [ [ ORGANIZATION IS ] LINE SEQUENTIAL ] [ BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS } ] [ { CHARACTERS } ] [CODE-SET IS alphabet-name] [PADDING CHARACTER IS pad-char] [RECORD DELIMITER IS STANDARD-1] [ACCESS MODE IS SEQUENTIAL] [LOCK MODE IS { AUTOMATIC [WITH LOCK ON RECORD] } ] [ { EXCLUSIVE } ] [FILE STATUS IS file-stat] . 4 3format_relative FILE-CONTROL. Format 3 - Relative File SELECT [OPTIONAL] file-name { ASSIGN TO [ EXTERNAL ] file-spec } { [ DYNAMIC ] } { } { ASSIGN TO [ EXTERNAL ] { data-name } } { [ DYNAMIC ] { literal } } { { DISK } } { { PRINTER } } [ RESERVE reserve-num [ AREA ] ] [ [ AREAS ] ] [ ORGANIZATION IS ] RELATIVE [ BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS } ] [ { CHARACTERS } ] [RECORD DELIMITER IS STANDARD-1] [ { SEQUENTIAL [RELATIVE KEY IS rel-key] } ] [ ACCESS MODE IS { { RANDOM } RELATIVE KEY IS rel-key } ] [ { { DYNAMIC } } ] [ { MANUAL WITH LOCK ON MULTIPLE RECORDS } ] [LOCK MODE IS { AUTOMATIC [WITH LOCK ON RECORD] } ] [ { EXCLUSIVE } ] [FILE STATUS IS file-stat] . 4 4format_indexed FILE-CONTROL. Format 4 - Indexed File SELECT [OPTIONAL] file-name { ASSIGN TO [ EXTERNAL ] file-spec } { [ DYNAMIC ] } { } { ASSIGN TO [ EXTERNAL ] { data-name } } { [ DYNAMIC ] { literal } } { { DISK } } { { PRINTER } } [ RESERVE reserve-num [ AREA ] ] [ [ AREAS ] ] [ ORGANIZATION IS ] INDEXED [ BLOCK CONTAINS [ smallest-block TO ] blocksize { RECORDS } ] [ { CHARACTERS } ] [RECORD DELIMITER IS STANDARD-1] [ { SEQUENTIAL } ] [ ACCESS MODE IS { RANDOM } ] [ { DYNAMIC } ] [RECORD KEY IS { rec-key | seg-key = {seg}... } ] [ [WITH DUPLICATES] [ ASCENDING ] ] [ [ DESCENDING ] ] [ALTERNATE RECORD KEY IS { alt-key | seg-key = {seg}... } ] [ [WITH DUPLICATES] [ ASCENDING ] ] [ [ DESCENDING ] ] ... [ { MANUAL WITH LOCK ON MULTIPLE RECORDS } ] [LOCK MODE IS { AUTOMATIC [WITH LOCK ON RECORD] } ] [ { EXCLUSIVE } ] [FILE STATUS IS file-stat] . 4 5format_sort-merge FILE-CONTROL. Format 5 - Sort or Merge File SELECT file-name { ASSIGN TO [ EXTERNAL ] file-spec } { [ DYNAMIC ] } { } { ASSIGN TO [ EXTERNAL ] { data-name } } { [ DYNAMIC ] { literal } } { { DISK } } { { PRINTER } } 4 6format_report FILE-CONTROL. Format 6 - Report File SELECT file-name { ASSIGN TO [ EXTERNAL ] file-spec } { [ DYNAMIC ] } { } { ASSIGN TO [ EXTERNAL ] { data-name } } { [ DYNAMIC ] { literal } } { { DISK } } { { PRINTER } } [ RESERVE reserve-num [ AREA ] ] [ [ AREAS ] ] [ [ ORGANIZATION IS ] SEQUENTIAL ] [ BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS }] [ { CHARACTERS }] [CODE-SET IS alphabet-name] [PADDING CHARACTER IS pad-char] [RECORD DELIMITER IS STANDARD-1] [ACCESS MODE IS SEQUENTIAL] [FILE STATUS IS file-stat] . 4 clauses 5 ASSIGN The ASSIGN clause associates a file with a partial or a complete file specification. Format - ASSIGN TO file-spec 6 file-spec is a nonnumeric literal or a COBOL word formed according to the rules for user-defined names. It represents a partial or complete file specification. 5 BLOCK_CONTAINS The BLOCK CONTAINS clause specifies the size of a physical record. Format - BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS } { CHARACTERS } 6 smallest-block is an integer literal. It specifies the minimum physical record size. 6 blocksize is an integer literal. It specifies the exact or maximum physical record size. 5 CODE-SET The CODE-SET clause specifies the representation of data on external media. Format - CODE-SET IS alphabet-name 6 alphabet-name is the name of a character set defined in the SPECIAL-NAMES paragraph. It cannot be described with literals in the ALPHABET clause. 5 LOCK_MODE The LOCK MODE clause specifies a locking technique to use for a file. LOCK MODE is part of the X/Open COBOL standard. Format - [ { MANUAL WITH LOCK ON MULTIPLE RECORDS } ] [LOCK MODE IS { AUTOMATIC [WITH LOCK ON RECORD] } ] [ { EXCLUSIVE } ] 5 ORGANIZATION The ORGANIZATION clause specifies a file's logical structure. Format - { SEQUENTIAL } [ ORGANIZATION IS ] { LINE SEQUENTIAL } { RELATIVE } { INDEXED } 5 PADDING_CHARACTER The PADDING CHARACTER clause specifies the character to be used to pad blocks in sequential files. Format - PADDING CHARACTER IS pad-char 6 pad-char is a one-character nonnumeric literal or the data-name of a one-character data item. The data-name can be qualified. 5 RECORD_DELIMITER The RECORD DELIMITER clause indicates the method of determining the length of a variable record on the external medium. It is for documentation only. Format - RECORD DELIMITER IS STANDARD-1 5 RESERVE The RESERVE clause specifies the number of input-output buffers for a file. Format - RESERVE reserve-num [ AREA ] [ AREAS ] 6 reserve-num is an integer literal from 1 through 127. It specifies the number of input-output areas for the file. 3 I-O-CONTROL The I-O-CONTROL paragraph specifies the input-output techniques to be used for a file. Format - I-O-CONTROL. [[ {| DEFERRED-WRITE |} ] [[ {| EXTENSION extend-amt |} ] [[ {| FILL-SIZE |} ] [[ {| LOCK-HOLDING |} ] [[APPLY {| MASS-INSERT |} ON {file-name} ... ] ... [[ {|[CONTIGUOUS ] [[ {|[CONTIGUOUS-BEST-TRY] PREALLOCATION preall-amt |} ] [[ {| PRINT-CONTROL |} ] [[ {| WINDOW window-ptrs |} ] [ [ RECORD ] ] [SAME [ SORT ]AREA FOR {same-area-file} {same-area-file} ... ] ... [ [ SORT-MERGE ] ] [ { { [END OF] { REEL } } } ] [ { { { UNIT } } OF file-name} ] [RERUN [ON file-name] EVERY { { integer RECORDS } } ] ... [ { integer CLOCK-UNITS } ] [ { condition-name } ] [MULTIPLE FILE TAPE CONTAINS {file-name [POSITION integer] } ... ] ...].] 4 extend-amt is an integer from 0 through 65535. It specifies the number of blocks in each extension of a disk file. 4 preall-amt is an integer from 0 through 4,294,967,295. It specifies the number of blocks to initially allocate when the program creates a disk file. 4 window-ptrs is an integer from 0 through 127. Its value can also be 255. It specifies the number of retrieval pointers in the window that maps the disk file. 4 file-name names a file described in a Data Division file description entry. 4 same-area-file names a file described in a Data Division File Description entry to share storage areas with every other same-area-file. 2 DATA_DIVISION The DATA DIVISION describes data the program creates, receives as input, manipulates, and produces as output. Format - [ DATA DIVISION. [SUB-SCHEMA SECTION. [subschema-entry [keeplist-entry] ... ] ] [FILE SECTION. [file-description-entry {record-description-entry} ... ] ... [report-file-description-entry] ... [sort-merge-file-description-entry {record-description-entry} ... ] ... ] [WORKING-STORAGE SECTION. [record-description-entry] ... ] [LINKAGE SECTION. [record-description-entry] ... ] [REPORT SECTION. [report-description-entry {report-group-description-entry} ... ] ... ] [SCREEN SECTION [screen-description-entry] ...] ... ] ] 3 rf_report-file-description-entry The report file description entry is Format 4 of the file description entry. See FD_file-description-entry subtopic report_FD (Format 4) for details of the syntax. 3 FD_file-description-entry A file description entry describes the physical structure, identification, record names, and names for sequential, relative, indexed, and report files. It also specifies: (1) the internal or external attributes of a file connector, and (2) the local or global attributes of a file-name. 4 sequential_FD A file description entry describes the physical structure, identification, record names, and names for sequential, relative, indexed, and report files. It also specifies: (1) the internal or external attributes of a file connector, and (2) the local or global attributes of a file-name. Format 1 - Sequential File FD file-name [IS EXTERNAL] [IS GLOBAL] [BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS }] [ { CHARACTERS }] [RECORD { CONTAINS [shortest-rec TO] longest-rec CHARACTERS }] [ { IS VARYING IN SIZE [FROM shortest-rec] [ TO longest-rec ] CHARACTERS [ DEPENDING ON depending-item ] }] [LABEL { RECORDS ARE } { STANDARD } ] [ { RECORD IS } { OMITTED } ] [VALUE OF ID IS file-spec] [DATA { RECORDS ARE } {rec-name} ... ] [ { RECORD IS } ] [ LINAGE IS page-size LINES [ WITH FOOTING AT footing-line ] [ LINES AT TOP top-lines ] [ LINES AT BOTTOM bottom-lines ] ] [CODE-SET IS alphabet-name] [ [ ACCESS MODE IS ] SEQUENTIAL ] [FILE STATUS IS file-stat] . 4 relative_FD A file description entry describes the physical structure, identification, record names, and names for sequential, relative, indexed, and report files. It also specifies: (1) the internal or external attributes of a file connector, and (2) the local or global attributes of a file-name. Format 2 - Relative File FD file-name [IS EXTERNAL] [IS GLOBAL] [BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS }] [ { CHARACTERS }] [RECORD { CONTAINS [shortest-rec TO] longest-rec CHARACTERS }] [ { IS VARYING IN SIZE [FROM shortest-rec] [ TO longest-rec ] CHARACTERS [ DEPENDING ON depending-item ] }] [LABEL { RECORDS ARE } { STANDARD } ] [ { RECORD IS } { OMITTED } ] [VALUE OF ID IS file-spec] [DATA { RECORDS ARE } {rec-name} ... ] [ { RECORD IS } ] [ { SEQUENTIAL [ RELATIVE KEY IS rel-key ] }] [ACCESS MODE IS { { RANDOM } RELATIVE KEY IS rel-key }] [ { { DYNAMIC } }] [FILE STATUS IS file-stat] . 4 indexed_FD A file description entry describes the physical structure, identification, record names, and names for sequential, relative, indexed, and report files. It also specifies: (1) the internal or external attributes of a file connector, and (2) the local or global attributes of a file-name. Format 3 - Indexed File FD file-name [IS EXTERNAL] [IS GLOBAL] [BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS }] [ { CHARACTERS }] [RECORD { CONTAINS [shortest-rec TO] longest-rec CHARACTERS }] [ { IS VARYING IN SIZE [FROM shortest-rec] [ TO longest-rec ] CHARACTERS [ DEPENDING ON depending-item ] }] [LABEL { RECORDS ARE } { STANDARD } ] [ { RECORD IS } { OMITTED } ] [VALUE OF ID IS file-spec] [DATA { RECORDS ARE } {rec-name} ... ] [ { RECORD IS } ] [ { SEQUENTIAL }] [ACCESS MODE IS { RANDOM }] [ { DYNAMIC }] [RECORD KEY IS { rec-key | seg-key = {seg}... } ] [ [WITH DUPLICATES] [ASCENDING ] ] [ [DESCENDING] ] [ALTERNATE RECORD KEY IS { alt-key | seg-key = {seg}... } ] [ [WITH DUPLICATES] [ASCENDING ] ] [ [DESCENDING] ] ... [FILE STATUS IS file-stat] . 4 report_FD A file description entry describes the physical structure, identification, record names, and names for sequential, relative, indexed, and report files. It also specifies: (1) the internal or external attributes of a file connector, and (2) the local or global attributes of a file-name. Format 4 - Report File FD file-name [IS EXTERNAL] [IS GLOBAL] [BLOCK CONTAINS [smallest-block TO] blocksize { RECORDS }] [ { CHARACTERS }] [RECORD { CONTAINS [shortest-rec TO] longest-rec CHARACTERS }] [ { IS VARYING IN SIZE [FROM shortest-rec] [ TO longest-rec ] CHARACTERS [ DEPENDING ON depending-item ] }] [LABEL { RECORDS ARE } { STANDARD } ] [ { RECORD IS } { OMITTED } ] [VALUE OF ID IS file-spec] [ [ACCESS MODE IS] SEQUENTIAL] { REPORT IS } {report-name} ... { REPORTS ARE } [CODE-SET IS alphabet-name] [FILE STATUS IS file-stat] . 3 SD_sort-merge-file-description-entry A sort-merge file description entry describes a sort or merge file's physical structure, identification, and record names. Format - SD file-name [RECORD { CONTAINS [shortest-rec TO] longest-rec CHARACTERS }] [ { IS VARYING IN SIZE [FROM shortest-rec] [TO longest-rec] CHARACTERS [DEPENDING ON depending-item] }] [DATA { RECORDS ARE } {rec-name} ... ] [ { RECORD IS } ] . 3 DB_subschema-entry The Subschema entry allows a program to access a subschema in the Common Data Dictionary/Repository under the schema name. Format - DB subschema-name WITHIN schema-name [ FOR database-name ] [ { THRU } stream-name ] [ { THROUGH } ] . 4 subschema-name references a subschema name in the Common Data Dictionary/Repository (CDD/Repository) under the schema name. 4 schema-name references a schema name in the Common Data Dictionary/Repository. 4 database-name represents a complete or partial file specification defining the database occurrence. A database occurrence is a root file. At run time, database-name points the Database Control System (DBCS) to the root file. 4 stream-name represents the name of a stream. Signals the Data Base Control System (DBCS) that your run unit uses a stream, which allows access to multiple databases or subschemas. 3 RD_report-description-entry The Report Description names a report, specifies any identifying characters to be prefixed to each print line in the report, and describes the physical structure and organization of that report. It also determines whether a report-name is a local name or global name. Format - RD report-name [IS GLOBAL] [CODE report-code] [{ CONTROL IS } { {control-name} ... }] [{ CONTROLS ARE } { FINAL [control-name] ... }] [ PAGE [ LIMIT IS ] page-size [ LINE ] [ LIMITS ARE ] [ LINES ] [ HEADING heading-line ] [ FIRST DETAIL first-detail-line ] [ LAST DETAIL last-detail-line ] [ FOOTING footing-line ] ] . 3 LD_keeplist-entry The Keeplist Description entry names a keeplist. Format - LD keeplist-name [LIMIT IS integer] . 4 keeplist-name is a user-defined name. 4 integer is a positive integer. 3 dd_record-description-entry A data description entry specifies the characteristics of a data item. 4 1format A data description entry specifies the characteristics of a data item. Format 1 - level-number [ data-name ] [ FILLER ] [REDEFINES other-data-item] [IS EXTERNAL] [IS GLOBAL] [ { PICTURE } IS character-string ] [ { PIC } ] [ { BINARY } ] [ { COMPUTATIONAL } ] [ { COMP } ] [ { COMPUTATIONAL-1 } ] [ { COMP-1 } ] [ { COMPUTATIONAL-2 } ] [ [USAGE IS ] { COMP-2 } ] [ { COMPUTATIONAL-3 } ] [ { COMP-3 } ] [ { COMPUTATIONAL-5 } ] [ { COMP-5 } ] [ { COMPUTATIONAL-X } ] [ { COMP-X } ] [ { DISPLAY } ] [ { INDEX } ] [ { PACKED-DECIMAL } ] [ { POINTER } ] [ { POINTER-64 } ] [ [SIGN IS ] { LEADING } [ SEPARATE CHARACTER ] ] [ { TRAILING } ] [ OCCURS table-size TIMES ] [ [ { ASCENDING } KEY IS {key-name} ... ] ... ] [ [ { DESCENDING } ] ] [ ] [ [INDEXED BY {ind-name} ... ] ] [ ] [ OCCURS min-times TO max-times TIMES DEPENDING ON depending-item ] [ [ { ASCENDING } KEY IS {key-name} ... ] ... ] [ [ { DESCENDING } ] ] [ ] [ [INDEXED BY {ind-name} ... ] ] [ { SYNCHRONIZED } [ LEFT ] ] [ { SYNC } [ RIGHT ] ] [ { JUSTIFIED } RIGHT ] [ { JUST } ] [BLANK WHEN ZERO] [ { lit }] [VALUE IS { EXTERNAL external-name }] . [ { REFERENCE data-name }] 4 2format_66 A data description entry specifies the characteristics of a data item. Format 2 - 66 new-name RENAMES rename-start [ { THRU } rename-end ] . [ { THROUGH } ] 4 3format_88 A data description entry specifies the characteristics of a data item. Format 3 - 88 condition-name { VALUE IS } { { EXTERNAL external-name } { VALUES ARE } { { REFERENCE data-name } { { low-val } [ { THRU } { EXTERNAL external-name } ] } [ { THROUGH } { REFERENCE data-name } ] } ... . [ { high-val } ] } 3 clauses 4 ACCESS_MODE The ACCESS MODE clause specifies the order of access for a file's records. 5 1format_sequential The ACCESS MODE clause specifies the order of access for a file's records. Format 1 - Sequential File [ ACCESS MODE IS ] SEQUENTIAL 5 2format_relative The ACCESS MODE clause specifies the order of access for a file's records. Format 2 - Relative File { SEQUENTIAL [ RELATIVE KEY IS rel-key ] } [ ACCESS MODE IS ] { { RANDOM } RELATIVE KEY IS rel-key } { { DYNAMIC } } 6 rel-key is the file's RELATIVE KEY data item. 5 3format_indexed The ACCESS MODE clause specifies the order of access for a file's records. Format 3 - Indexed File { SEQUENTIAL } [ ACCESS MODE IS ] { RANDOM } { DYNAMIC } 4 ALTERNATE_RECORD_KEY THE ALTERNATE RECORD KEY clause specifies an alternate access path to indexed file records. Format - ALTERNATE RECORD KEY IS { alt-key | seg-key = {seg}...} [WITH DUPLICATES] [ASCENDING ] [DESCENDING] 5 alt-key is the Alternate Record Key for the file. It is the data-name of a data item in a record description entry for the file. It can be qualified, but it cannot be a group item that contains a variable-occurrence data item. The data item must be described as: (1) alphanumeric or alphabetic category, (2) a group item, (3) unsigned numeric display, (4) a COMP-3 integer, or (5) a COMP integer. 5 seg-key is the Alternate Record Key for the file. It is a segmented-key name that represents the concatenation of one or more (up to eight) occurrences of seg. 5 seg is the data-name of a data item in a record description entry for the file. It can be qualified, but it cannot be a group item that contains a variable-occurrence data item. The data item must be described as: (1) alphanumeric or alphabetic category, (2) a group item or (3) an unsigned numeric display item. 4 AUTO In the context of ACCEPT, the AUTO clause moves the cursor to the next field when the last character of an input or update field that was defined with the AUTO clause is entered. Format - AUTO 4 BACKGROUND-COLOR The BACKGROUND-COLOR clause specifies the background color for the screen item. Format - BACKGROUND-COLOR color-num 5 color-num is an integer in the range 0-7 specifying a color as follows: -------------------------------------------------------------- COLOR COLOR VALUE COLOR COLOR VALUE -------------------------------------------------------------- Black 0 Red 4 Blue 1 Magenta 5 Green 2 Yellow/Brown 6 Cyan 3 White 7 -------------------------------------------------------------- 4 BELL The BELL clause sounds the workstation or terminal audio tone. Format - BELL 4 BLANK The BLANK clause clears a screen line or clears the entire screen before displaying the screen item. Format - BLANK { LINE } { SCREEN } 4 BLANK_WHEN_ZERO THE BLANK WHEN ZERO clause replaces zeroes with spaces when a data item's value is zero. In the context of the Screen Section, it displays spaces when the value of a screen item to be displayed on the screen is zero. Format - BLANK WHEN ZERO 4 BLINK The BLINK clause displays characters on the screen with the "blink on" characher attribute. Format - BLINK 4 CODE The CODE clause specifies a two-character literal that identifies each print line as belonging to a specific report. Format - CODE report-code 5 report-code must be a two-character nonnumeric literal. 4 COLUMN_NUMBER In a report group description, the COLUMN NUMBER clause identifies a printable item and specifies the position of the item on a print line. In a screen description, the COLUMN NUMBER clause specifies the horizontal screen coordinate for a screen item. 5 1format_report_description Format 1 - Report Description COLUMN NUMBER IS column-num 6 column-num is a positive integer greater than zero. 5 2format_screen_description Format 2 - Screen Description COLUMN NUMBER IS [PLUS] { identifier-1 } { integer-1 } 6 identifier-1 is an elementary unsigned numeric integer data item. It cannot be subscripted. 6 integer-1 is an unsigned integer value. 4 CONTROL The CONTROL clause establishes the levels of the control hierarchy for the report. Format - { CONTROL IS } { {control-name} ... } { CONTROLS ARE } { FINAL [control-name] ... } 5 control-name is any data-name in the File, Working-Storage, or Linkage Section. 4 Data-Name Data-name specifies a data item that your program can explicitly reference. FILLER specifies an item that cannot be explicitly referenced. Format - [ data-name ] [ FILLER ] 4 DATA_RECORDS The DATA RECORDS clause documents the names of a file's record description entries. Format - DATA { RECORD IS } {rec-name} ... { RECORDS ARE } 5 rec-name is the name of a data record. It must be defined by a level 01 data description entry subordinate to the file description entry. 4 ERASE The ERASE clause clears from the starting cursor position to the end of either the line or the screen. Format - ERASE { EOL } { EOS } 4 EXTERNAL The EXTERNAL clause specifies that a data item or a file connector in a defining program is common to other programs in the run unit if the program defines it identically. The group and elementary data items of an external data record and files associated with an external file connector are available to very program in the image that describes them. Format - IS EXTERNAL 4 FILE_STATUS The FILE STATUS clause names a data item that contains the status of an input/output operation. Format - FILE STATUS IS file-stat 5 file-stat is the data-name of a two-character alphanumeric Working-Storage Section or Linkage Section data item. File-stat is the file's FILE STATUS data item. 4 FOREGROUND-COLOR The FOREGROUND-COLOR clause specifies the foreground color for the screen item. Format - FOREGROUND-COLOR color-num 5 color-num is an integer in the range 0-7 specifying a color as follows: -------------------------------------------------------------- COLOR COLOR VALUE COLOR COLOR VALUE -------------------------------------------------------------- Black 0 Red 4 Blue 1 Magenta 5 Green 2 Yellow/Brown 6 Cyan 3 White 7 -------------------------------------------------------------- 4 FULL The FULL clause specifies that a screen item must be left either completely empty or it must be entirely filled with data. Format - FULL 4 GLOBAL The GLOBAL clause specifies that data-name or file-name is available to every program contained within the program that declares it. Format - IS GLOBAL 4 GROUP_INDICATE The GROUP INDICATE clause specifies that the associated printable item is presented only on the first occurrence of its DETAIL report group after a control break or page advance. Format - GROUP INDICATE 4 HIGHLIGHT The HIGHLIGHT clause specifies that the field is to appear on the screen with the highest intensity. Format - HIGHLIGHT 4 JUSTIFIED The JUSTIFIED clause specifies nonstandard data positioning in a screen item or another receiving item. Format - { JUSTIFIED } RIGHT { JUST } 4 LABEL_RECORDS The LABEL RECORDS clause specifies the presence or absence of labels. Format - LABEL { RECORDS ARE } { STANDARD } { RECORD IS } { OMITTED } 4 Level-Number The level-number shows the position of a data item or screen item within the hierarchial structure of a logical record or a report group or a screen description. It also identifies entries for condition-names and the RENAMES clause. Format - level-number 4 LINAGE The LINAGE clause specifies the number of lines on a logical page. It can also specify the size of the logical page's top and bottom margins and the line where the footing area begins in the page body. Format - LINAGE IS {page-lines} LINES [ WITH FOOTING AT footing-line ] [ LINES AT TOP top-lines ] [ LINES AT BOTTOM bottom-lines ] 5 page-lines is a positive integer or the data-name of an elementary unsigned integer numeric data item. Its value must be greater than zero. It specifies the number of lines that can be written or spaced on the logical page. If page-lines is a data-name, it can be qualified. 5 footing-line is a positive integer or the data-name of an elementary unsigned integer numeric data item. Its value must be greater than zero, but cannot be greater than page-lines. Footing-lines specifies the line number where the footing area begins in the page body. If footing-line is a data-name, it can be qualified. 5 top-lines is an integer or the data-name of an elementary unsigned integer numeric data item. Its value can be zero. Top-lines specifies the number of lines in the top margin of the logical page. If top-lines is a data-name, it can be qualified. 5 bottom-lines is an integer or the data-name of an elementary unsigned integer numeric data item. Its value can be zero. Bottom-lines specifies the number of lines in the bottom margin of the logical page. If bottom-lines is a data-name, it can be qualified. 4 LINE_NUMBER The LINE NUMBER clause specifies vertical positioning information for a report group, or specifies the vertical screen coordinate for a screen item. 5 1format_report_description Format - LINE NUMBER IS { line-num [ON NEXT PAGE] } { PLUS line-num-plus } 6 line-num is a nonnegative integer. Line-num represents an absolute line number on a logical page and establishes a print line for a Report Writer report group. 6 line-num-plus is a positive integer. Line-num-plus represents a relative line number on a logical page and establishes a print line for a Report Writer report group. 5 2format_screen_description Format 2 - Screen Description LINE NUMBER IS [PLUS] { identifier-1 } { integer-1 } 6 identifier-1 is an elementary unsigned numeric integer data item. It cannot be subscripted. 6 integer-1 is an unsigned integer value. 4 LOWLIGHT The LOWLIGHT clause specifies that the field is to appear on the screen with the lowest intensity. When only two levels of intensity are available, normal intensity and LOWLIGHT will be the same. Format - LOWLIGHT 4 NEXT_GROUP The NEXT GROUP clause specifies information for the vertical positioning of the next report group on a logical page following the presentation of the last line of a report group. Format - { next-group-line-num } NEXT GROUP IS { PLUS next-group-line-num-plus } { NEXT PAGE } 5 next-group-line-num is a positive, one- to three-digit integer value greater than zero. It represents an absolute line number on a logical page and establishes a print line for the next Report Writer report group. 5 next-group-line-num-plus is a positive, one- to three-digit integer value. It represents a relative line number on a logical page and establishes a print line for the next Report Writer report group. 4 OCCURS The OCCURS clause defines tables and provides the basis for subscripting and indexing. It eliminates the need for separate entries for repeated data items. 5 1format_table-size The OCCURS clause defines tables and provides the basis for subscripting and indexing. It eliminates the need for separate entries for repeated data items. Format 1 - OCCURS table-size TIMES [ { ASCENDING } KEY IS {key-name} ... ] ... [ { DESCENDING } ] [ INDEXED BY {ind-name} ... ] 6 table-size is an integer that specifies the exact number of occurrences of a table element. 6 key-name is the data-name of an entry that contains the OCCURS clause or an entry subordinate to it. Key-name can be qualified. Each key-name after the first must name an entry subordinate to the entry that contains the OCCURS clause. The values in each key-name are the basis of the ascending or descending arrangement of the table's repeated data. 6 ind-name is an index-name. It associates an index with the table and allows indexing in table element references. 5 2format_DEPENDING The OCCURS clause defines tables and provides the basis for subscripting and indexing. It eliminates the need for separate entries for repeated data items. Format 2 - OCCURS min-times TO max-times TIMES DEPENDING ON depending-item [ { ASCENDING } KEY IS {key-name} ... ] ... [ { DESCENDING } ] [ INDEXED BY {ind-name} ... ] 6 min-times is an integer that specifies the minimum number of occurrences of a table element. Its value must be greater than or equal to zero. 6 max-times is an integer that specifies the maximum number of occurrences of a table element. Its value must be greater than min-times. 6 key-name is the data-name of an entry that contains the OCCURS clause or an entry subordinate to it. Key-name can be qualified. Each key-name after the first must name an entry subordinate to the entry that contains the OCCURS clause. The values in each key-name are the basis of the ascending or descending arrangement of the table's repeated data. 6 ind-name is an index-name. It associates an index with the table and allows indexing in table element references. 6 depending-item is the data-name of an elementary unsigned integer data item. Its value specifies the current number of occurrences. Depending-item can be qualified. 4 PAGE The PAGE clause defines the length of a logical page and the vertical subdivisions within which report groups are presented. Format - PAGE [ LIMIT IS ] page-size [ LINE ] [ LIMITS ARE ] [ LINES ] [ HEADING heading-line ] [ FIRST DETAIL first-detail-line ] [ LAST DETAIL last-detail-line ] [ FOOTING footing-line ] 5 page-size is a one- to three-digit integer. It defines the number of lines available on a logical page. 5 heading-line is a one- to three-digit integer. It defines the first line number for a REPORT HEADING or PAGE HEADING report group on the logical page. 5 first-detail-line is a one- to three-digit integer. It defines the first line number for a CONTROL HEADING, DETAIL, and CONTROL FOOTING report group on the logical page. 5 last-detail-line is a one- to three-digit integer. It defines the last line number for a CONTROL HEADING or DETAIL report group on the logical page. 5 footing-line is a one- to three-digit integer. It defines the last line number for a CONTROL FOOTING report group and the first line number for the PAGE FOOTING report group on the logical page. 4 PICTURE The PICTURE clause specifies the general characteristics and editing requirements of an elementary item, including an elementary screen item. 5 1format_general Format 1 - { PICTURE } IS character-string { PIC } 6 PICTURE_symbols The following symbols may be used in a PICTURE clause: A B P S V X Z 9 0 / , . + - CR DB * cs 5 2format_screen_section Format 2 - Screen Section { USING identifier-3 } { PICTURE } IS character-string { {| FROM { identifier-4 } |} } { PIC } { {| { literal-1 } |} } { {| TO identiier-5 |} } 6 PICTURE_symbols The following symbols may be used in a PICTURE clause: A B P S V X Z 9 0 / , . + - CR DB * cs 4 RECORD The RECORD clause specifies: (1) the number of character positions in a fixed length record, (2) variable length record format, or (3) the minimum and maximum number of character positions in a variable length record. 5 1format_CONTAINS The RECORD clause specifies: (1) the number of character positions in a fixed length record, (2) variable length record format, or (3) the minimum and maximum number of character positions in a variable length record. Format 1 - RECORD CONTAINS [shortest-rec TO] longest-rec CHARACTERS 6 shortest-rec is an integer that specifies the minimum number of character positions in a variable-length record. 6 longest-rec is an integer greater than shortest-rec. It specifies the maximum number of character positions in a variable-length record or the size of a fixed-length record. 5 2format_VARYING The RECORD clause specifies: (1) the number of character positions in a fixed length record, (2) variable length record format, or (3) the minimum and maximum number of character positions in a variable length record. Format 2 - RECORD IS VARYING IN SIZE [FROM shortest-rec] [TO longest-rec] CHARACTERS [DEPENDING ON depending-item] 6 shortest-rec is an integer that specifies the minimum number of character positions in a variable-length record. 6 longest-rec is an integer greater than shortest-rec. It specifies the maximum number of character positions in a variable-length record or the size of a fixed-length record. 6 depending-item is the identifier of an elementary unsigned integer data item in the Working-Storage or Linkage Section. It specifies the number of character positions for an output operation, and it contains the number of character positions after a successful input operation. 4 RECORD_KEY The RECORD KEY clause specifies the Prime Record Key access path to indexed file records. Format - RECORD KEY IS { rec-key | seg-key = {seg}... } [ WITH DUPLICATES ] [ ASCENDING ] [ DESCENDING] 5 rec-key is the Record Key for the file. It is the data-name of a data item in a record description entry for the file. It can be qualified, but it cannot be a group item that contains a variable-occurrence data item. The data item must be described as: (1) alphanumeric or alphabetic category, (2) a group item, (3) unsigned numeric display, (4) a COMP-3 integer, or (5) a COMP integer. 5 seg-key is the Record Key for the file. It is a segmented-key name that represents the concatenation of one or more (up to eight) occurrences of seg. 5 seg is the data-name of a data item in a record description entry for the file. It can be qualified, but it cannot be a group item that contains a variable-occurrence data item. The data item must be described as: (1) alphanumeric or alphabetic category, (2) a group item or (3) an unsigned numeric display item. 4 REDEFINES The REDEFINES clause allows different data description entries to describe the same storage area. Format - level-number [ identifier ] REDEFINES other-data-item [ FILLER ] 5 other-data-item is an identifier. It identifies the data description entry that first defines the storage area. 4 RENAMES The RENAMES clause groups elementary items in alternative or overlapping ways. Format - 66 new-name RENAMES rename-start [ { THRU } rename-end ] [ { THROUGH } ] 5 new-name is the identifier of the item being described. It identifies an alternate grouping of one or more items in a record. 5 rename-start is the identifier of the leftmost data item in the area. It can be qualified. 5 rename-end is the identifier of the rightmost data item in the area. It can be qualified. 4 REPORT The REPORT clause in a File Description entry (FD) specifies the Report Description (RD) report names that comprise a report file. Format - { REPORT IS } { report-name } ... { REPORTS ARE } 4 REQUIRED The REQUIRED clause specifies that in the context of an ACCEPT statement, the user must enter at least one character in the input or update field. Format - REQUIRED 4 REVERSE-VIDEO The REVERSE-VIDEO clause specifies that the field is displayed with the default or specified foreground and background colors exchanged. Format - REVERSE-VIDEO 4 SECURE The SECURE clause suppresses the display of input character on the screen. Format - SECURE 4 SIGN The SIGN clause specifies the operational sign's position and type of representation. 5 1format_Data_Screen The SIGN clause specifies the operational sign's position and type of representation. Format 1 - Data Description and Screen Description Entries [ SIGN IS ] { LEADING } [ SEPARATE CHARACTER ] { TRAILING } 5 2format_Report_Group_Description The SIGN clause specifies the operational sign's position and type of representation. Format 2 - Report Group Description Entries [ SIGN IS ] { LEADING } SEPARATE CHARACTER { TRAILING } 4 SOURCE The SOURCE clause identifies a data item to be sent to an associated printable item defined within a Report Group Description entry. Format - SOURCE IS source-id 5 source-id names an elementary item in the Data Division. 4 SUM The SUM clause establishes a Report Writer sum counter and names the data items to be summed. Format - {SUM {sum-name}... [UPON {detail-report-group-name} ... ]} ... [RESET ON { control-foot-name } ] [ { FINAL } ] 5 sum-name names a numeric data item with an optional sign in the File, Working-Storage, and Linkage Sections, or another sum counter in the Report Section. 5 detail-report-group-name names a DETAIL report group. 5 control-foot-name must reference a control-name in the report's CONTROL clause. 4 SYNCHRONIZED The SYNCHRONIZED clause specifies elementary item alignment on word boundary offsets relative to a record's beginning. These offsets are related to the size and usage of the item being stored. Format - [ { SYNCHRONIZED } [ LEFT ] ] [ { SYNC } [ RIGHT ] ] 4 TYPE The TYPE clause identifies the report group type and indicates when the Report Writer Control System (RWCS) is to process it. Format - { REPORT HEADING } } { RH } } { PAGE HEADING } } { PH } } { CONTROL HEADING } { control-head-name } } { CH } { FINAL } } TYPE IS { DETAIL } } { DE } } { CONTROL FOOTING } { control-foot-name } } { CF } { FINAL } } { PAGE FOOTING } } { PF } } { REPORT FOOTING } } { RF } } 5 control-head-name names a control-name in the CONTROL clause. 5 control-foot-name names a control-name in the CONTROL clause. 4 UNDERLINE The UNDERLINE clause specifies that each character of the field is underlined when it is displayed on the screen. Format - UNDERLINE 4 USAGE The USAGE clause specifies the internal format of a data item or represents the address of data in a COBOL program. Format - { BINARY } { COMPUTATIONAL } { COMP } { COMPUTATIONAL-1 } { COMP-1 } { COMPUTATIONAL-2 } [ USAGE IS ] { COMP-2 } { COMPUTATIONAL-3 } { COMP-3 } { DISPLAY } { INDEX } { PACKED-DECIMAL } { POINTER } { POINTER-64 } 4 VALUE_IS The VALUE IS clause defines the values associated with condition-names, the initial value of Working-Storage Section data items, the value of Report Section printable items, the compile-time initialization of variables to the address of data, and to external constants, and the constant values of literal screen items. 5 1format_lit The VALUE IS clause defines the values associated with condition-names, the initial value of Working-Storage Section data items, the value of Report Section printable items, the compile-time initialization of variables to the address of data, and to external constants, and the constant values of literal screen items. Format 1 - VALUE IS lit 6 lit is a numeric or nonumeric literal. In a screen description entry, it is a nonnumeric literal. 5 2format_THROUGH The VALUE IS clause defines the values associated with condition-names, the initial value of Working-Storage Section data items, the value of Report Section printable items, the compile-time initialization of variables to the address of data, and to external constants. Format 2 - { VALUE IS } { { EXTERNAL external-name } { VALUES ARE } { { REFERENCE data-name } { { low-val } [ { THRU } { EXTERNAL external-name } ] } [ { THROUGH } { REFERENCE data-name } ] } ... { high-val } ] } 6 low-val is a numeric or nonnumeric literal. It is the lowest value in a range of values associated with a condition-name in a level 88 data description entry. 6 high-val is a numeric or nonnumeric literal. It is the highest value in a range of values associated with a condition-name in a level 88 data description entry. 6 data-name names a data item in the File or Working-Storage Section. Data-name may be qualified. 6 external-name names a COBOL link-time bound constant. It must define a word or longword integer value. 5 3format_REFERENCE The VALUE IS clause defines the values associated with condition-names, the initial value of Working-Storage Section data items, the value of Report Section printable items, the compile-time initialization of variables to the address of data, and to external constants. Format 3 - VALUE IS { REFERENCE data-name } { numeric-integer-lit } 6 data-name names a data item in the File or Working-Storage Section. Data-name may be qualified. 6 numeric-integer-lit is a positive numeric integer literal. 5 4format_EXTERNAL The VALUE IS clause defines the values associated with condition-names, the initial value of Working-Storage Section data items, the value of Report Section printable items, the compile-time initialization of variables to the address of data, and to external constants. Format 4 - VALUE IS EXTERNAL external-name 6 external-name names a COBOL link-time bound constant. It must define a word or longword integer value. 4 VALUE_OF_ID The VALUE OF ID clause specifies, replaces, or completes a file specification. Format - VALUE OF { ID } IS { file-name } { FILE-ID } { data-name } 5 file-name is a nonnumeric literal. It contains the full or partial file specification. 5 data-name is the data-name of an alphanumeric Working-Storage data item. It contains the full or partial file specification. 3 rg_report-group-description-entry The Report Group Description entry specifies the characteristics of a report group and of the individual items within a report group. 4 1format_01 The Report Group Description entry specifies the characteristics of a report group and of the individual items within a report group. Format 1 - 01 [ group-data-name ] [ LINE NUMBER IS { line-num [ ON NEXT PAGE ] } ] [ { PLUS line-num-plus } ] [ { next-group-line-num } ] [ NEXT GROUP IS { PLUS next-group-line-num-plus } ] [ { NEXT PAGE } ] [ { REPORT HEADING } } ] [ { RH } } ] [ { PAGE HEADING } } ] [ { PH } } ] [ { CONTROL HEADING } { control-head-name } } ] [ { CH } { FINAL } } ] [ TYPE IS { DETAIL } } ] [ { DE } } ] [ { CONTROL FOOTING } { control-foot-name } } ] [ { CF } { FINAL } } ] [ { PAGE FOOTING } } ] [ { PF } } ] [ { REPORT FOOTING } } ] [ { RF } } ] [ [ USAGE IS ] DISPLAY ] . 4 2format The Report Group Description entry specifies the characteristics of a report group and of the individual items within a report group. Format 2 - level-number [ group-data-name ] [ LINE NUMBER IS { line-num [ ON NEXT PAGE ] } ] [ { PLUS line-num-plus } ] [ [ USAGE IS ] DISPLAY ] . 4 3format_PIC The Report Group Description entry specifies the characteristics of a report group and of the individual items within a report group. Format 3 - level-number [ group-data-name ] [ BLANK WHEN ZERO ] [ COLUMN NUMBER IS column-num ] [ GROUP INDICATE ] [ { JUSTIFIED } RIGHT ] [ { JUST } ] [ LINE NUMBER IS { line-num [ ON NEXT PAGE ] } ] [ { PLUS line-num-plus } ] { PICTURE } IS character-string { PIC } [ [ SIGN IS ] { LEADING } SEPARATE CHARACTER ] [ { TRAILING } ] { SOURCE IS source-name } { VALUE IS lit } { {SUM {sum-name} ... [UPON {detail-report-group-name} ... ]} ... } { [ RESET ON { control-foot-name } ] } { [ { FINAL } ] } [ [ USAGE IS ] DISPLAY ] . 3 ss_screen-description-entry A screen description entry describes a video form or a portion of a video form and specifies the attributes, behavior, size, and location of screen items within the video form. The screen description entry is referenced in the Procedure Division by the ACCEPT and DISPLAY statements 4 1format_group_screen Format 1 - Group Screen Item level-number [ screen-name ] [ FILLER ] [ BLANK_SCREEN ] [ FOREGROUND-COLOR IS color-num-1 ] [ BACKGROUND-COLOR IS color-num-2 ] [ AUTO ] [ SECURE ] [ REQUIRED ] [ [ USAGE IS ] DISPLAY ] [ [ SIGN IS ] { LEADING } [ SEPARATE CHARACTER ] ] [ { TRAILING } ] [ FULL ] . 4 2format_literal_elementary Format 2 - Elementary Screen Item level-number [ screen-name ] [ FILLER ] [ BLANK { LINE } ] [ { SCREEN } ] [ BELL ] [ BLINK ] [ ERASE { EOL } ] [ { EOS } ] [ HIGHLIGHT ] [ LOWLIGHT ] [ REVERSE-VIDEO ] [ UNDERLINE ] [ NUMBER IS [ PLUS ] { identifier-1 } ] [ { integer-1 } ] [ NUMBER IS [ PLUS ] {identifier-2 } ] [ { integer-2 } ] [ FOREGROUND-COLOR IS color-num-1 ] [ BACKGROUND-COLOR IS color-num-2 ] VALUE IS literal-1 . 4 3format_elementary Format 3 - Elementary Screen Item level-number [ screen-name ] [ FILLER ] [ BLANK { LINE } ] [ { SCREEN } ] [ BELL ] [ BLINK ] [ ERASE { EOL } ] [ { EOS } ] [ HIGHLIGHT ] [ LOWLIGHT ] [ REVERSE-VIDEO ] [ UNDERLINE ] [ NUMBER IS [ PLUS ] { identifier-1 } ] [ { integer-1 } ] [ NUMBER IS [ PLUS ] { identifier-2 } ] [ { integer-2 } ] [ FOREGROUND-COLOR IS color-num-1 ] [ BACKGROUND-COLOR IS color-num-2 ] { USING identifier-3 } { PICTURE } IS picture-string-1 { {| FROM { identifier-4 } |} } { PIC } { {| { literal-1 } |} } { {| TO identiier-5 |} } [ [ USAGE IS ] DISPLAY ] [ BLANK WHEN ZERO ] [ { JUSTIFIED } RIGHT ] [ { JUST } ] [ [ SIGN IS ] { LEADING } [ SEPARATE CHARACTER ] ] [ { TRAILING } ] [ AUTO ] [ SECURE ] [ REQUIRED ] [ FULL ] . 3 miscellaneous_topics 4 data_division_entries A Data Division entry begins with a level indicator or level-number and is followed, in order, by: 1) A space 2) The name of a data item or file connector or a screen item 3) A sequence of independent descriptive clauses 4) A separator period The level indicators are: FD (for file description entries) SD (for sort-merge file description entries) RD (for report file description entries) DB (for sub-schema entries) LD (for keeplist entries) Level indicators can begin anywhere to the right of Area A. Entries that begin with level-numbers are either called data description or screen description entries depending on their context. The level-number values for data description entries are 01 through 49, 66, 77, and 88. For screen description entries the level-number values are from 01 to 49. 4 record_alignment_boundaries The alignment boundaries for a record are shown in the following table. The boundary is the leftmost location of the one-, two-, four-, or eight-byte area. All boundaries are relative to the beginning of the record. +-----------------------------------------------+ |0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2| SYNCHRONIZED clause |0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3| affects these |-----------------------------------------------| Data Types |B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B| v--------v--------v |---+---+---+---+---+---+---+---+---+---+---+---| |2by|2by|2by|2by|2by|2by|2by|2by|2by|2by|2by|2by|COMP PIC 9 to 9(4) |-------+-------+-------+-------+-------+-------| |4-byte |4-byte |4-byte |4-byte |4-byte |4-byte |COMP PIC 9(5) to 9(9) | | | |COMP-1 POINTER INDEX |---------------+---------------+---------------| |8-byte |8-byte |8-byte |<-----+ +-----------------------------------------------+ | COMP-2 COMP PIC 9(10) to 9(18) 2 PROCEDURE_DIVISION The Procedure Division contains the routines that process the files and data described in the Environment and Data Divisions. 3 1format_declaratives The Procedure Division contains the routines that process the files and data described in the Environment and Data Divisions. Format 1 - [ PROCEDURE DIVISION [ USING {data-name} ... ] [ GIVING identifier ] . [ DECLARATIVES. { section-name SECTION [ segment-number ] . declarative-sentence [ paragraph-name. [sentence] ... ] ... } ... END DECLARATIVES. ] { section-name SECTION [ segment-number ] . [ paragraph-name. [sentence] ... ] ... } ... ] 3 2format The Procedure Division contains the routines that process the files and data described in the Environment and Data Divisions. Format 2 - [ PROCEDURE DIVISION [ USING {data-name} ... ] [ GIVING identifier ] ] . [ paragraph-name. [sentence] ... ] ... ] 3 miscellaneous_topics 4 arithmetic-expressions An arithmetic expression can be one of the following: 1) An identifier (including function-identifier) of a numeric elementary item 2) A numeric literal 3) Two or more of the above choices separated by arithmetic operators (+, -, *, /, **) 4) Two or more arithmetic expressions separated by an arithmetic operator (+, -, *, /, **) 5) An arithmetic expression enclosed in parentheses A unary operator (a sign) can precede any arithmetic expression. The identifiers and literals in an arithmetic expression must represent either: (1) numeric elementary items (including functions), or (2) numeric literals on which arithmetic can be performed. 4 conditional_expressions A conditional expression specifies a condition the program must evaluate to determine the path of program flow. 5 abbreviated When you combine simple or negated simple conditions in a consecutive sequence, you can abbreviate any of the relation conditions except the first. You can do this by either: 1) Omitting the subject of the relation condition 2) Omitting both the subject and the relational operator of the condition A relation condition in the consecutive sequence must contain a subject (or subject and relational operator) that is common with the preceding relation condition. There must be no parentheses in the consecutive sequence. Format - relation-condition { { AND } [NOT] [relational-operator] object } ... { { OR } } 5 class The class condition tests whether the contents of an operand are numeric or alphabetic. It also determines if an alphabetic operand contains only uppercase or only lowercase characters or if the operand is a class-name. Format - { NUMERIC } identifier-1 IS [ NOT ] { ALPHABETIC } { ALPHABETIC-LOWER } { ALPHABETIC-UPPER } { class-name } 6 identifier-1 Identifier-1 must reference a data item whose usage is explicitly or implicitly DISPLAY. If identifier-1 is a function-identifier, it must reference an alphanumeric function. 6 class-name is the user-defined word for a class. It always possesses the global attribute 5 combined_and_negated_combined A combined condition results from connecting conditions with one of the logical operators AND or OR. Format - condition { { AND } condition } ... { { OR } } condition can be 1) A simple condition 2) A negated simple condition 3) A combined condition 4) A negated combined condition 5) Valid combinations of the preceding conditions 5 condition-name The condition-name condition determines if a data item contains a value assigned to one of that item's condition-names. The term conditional variable refers to the data item. Condition-name refers to a level 88 entry associated with that item. Format - condition-name 5 database_key_condition Database conditions allow alternate paths of control depending on the truth value of a test involving conditions peculiar to the database environment. The database conditions are the tenancy, member, and database key conditions. The database key condition determines whether: (1) two database key values identify the same database record, (2) a database key value is null, or (3) a database key value is identical to any database key value in a keeplist. Format - { ALSO database-key } database-key IS [ NOT ] { NULL } { WITHIN keeplist-name } database-key references a currency indicator or a keeplist entry in the Sub-Schema Section. 5 member_database_condition Database conditions allow alternate paths of control depending on the truth value of a test involving conditions peculiar to the database environment. The database conditions are the tenancy, member, and database key conditions. The member condition determines whether member records are present in one or more sets. Only member record types defined in the Sub-Schema Section are considered in determining the truth value of the condition. Format - [ set-name IS ] [ NOT ] EMPTY set-name is a subschema set name. 5 negated_simple The logical operator NOT negates a simple condition. The truth value of a negated simple condition is the opposite of the simple condition's truth value. Thus, the truth value of a negated simple condition is true only if the simple condition's truth value is false. It is false only if the simple condition's truth value is true. Format - NOT simple-condition 5 relation A relation condition states a relation between two operands. The program compares the operands to determine whether the stated relation is true or false. The first operand is called the condition's subject. The second operand is called its object. Either operand can be: (1) an identifier, (2) a literal, or (3) the value of an arithmetic expression. The set of words that specifies the type of comparison is called the relational operator. Format - {IS [NOT] GREATER THAN } {IS [NOT] > } {IS [NOT] LESS THAN } {identifier-1 } {IS [NOT] < } {identifier-2 } {literal-1 } {IS [NOT] EQUAL TO } {literal-2 } {arith-express-1} {IS [NOT] = } {arith-express-2} {IS GREATER THAN OR EQUAL TO} {IS >= } {IS LESS THAN OR EQUAL TO } {IS <= } 5 sign The sign condition determines if the algebraic value of an arithmetic expression is less than, greater than, or equal to zero. Format - { POSITIVE } arithmetic-expression IS [ NOT ] { NEGATIVE } { ZERO } 5 success-failure This condition tests the return status codes of COBOL and non-COBOL procedures for success or failure conditions. Format - status-code-id IS { SUCCESS } { FAILURE } status-code-id must be a word or longword COMP integer as represented by PIC S9(1 to 9) COMP. 5 switch-status The switch-status condition tests the "on" or "off" setting of an external logical program switch. Format - condition-name 5 tenancy_database_condition Database conditions allow alternate paths of control depending on the truth value of a test involving conditions peculiar to the database environment. The database conditions are the tenancy, member, and database key conditions. The tenancy conditions determine whether a record in the database is an owner, or member, or a tenant in one or more sets. Format - { OWNER } [ NOT ] [ set-name ] { MEMBER } { TENANT } set-name is a subschema set name. 4 database_key_identifiers Database key identifiers are in Record Selection Expressions. If a database exception condition occurs during the execution of a FETCH or FIND statement, the Database Control System (DBCS) places a database exception condition code in the special register DB-CONDITION. This code identifies the condition. The DBCS also places the record name of database-record in the special register DB-CURRENT-RECORD-NAME and its UID in DB-CURRENT-RECORD-ID. Format 1 - Currency Indicator Access [ { record-name } ] CURRENT [ WITHIN { set-name } ] [ { realm-name } ] Format 2 - Keeplist Access { OFFSET integer-exp } { FIRST } WITHIN keeplist-name { LAST } 4 declaratives Declaratives specify procedures to be executed only when certain conditions occur. You must write declarative procedures at the beginning of the Procedure Division in consecutive sections. The key word DECLARATIVES begins the declaratives part of the Procedure Division; the pair of key words END DECLARATIVES ends it. Each of these reserved word phrases must: (1) be on a line by itself, starting in Area A; and (2) be followed by a separator period. When you use declarative procedures, you must divide the remainder of the Procedure Division into sections. Format - [ DECLARATIVES. { section-name SECTION [ segment-number ] . declarative-sentence [ paragraph-name. [sentence] ... ] ... } ... END DECLARATIVES. ] 4 I-O_status If a file description entry has a FILE STATUS clause, a value is placed in the two-character FILE STATUS data item during execution of a CLOSE, DELETE, OPEN, READ, REWRITE, START, UNLOCK, or WRITE statement. Two "keys" combine to form this value. Status Key 1 occupies the leftmost character position in the item and Status Key 2 occupies the rightmost position. In combination, the keys indicate the status of the input-output operation. 4 identifiers In Procedure Division rules, the term identifier means the complete specification of a data item. The term refers to all words required to make your reference to the item unique. To reference a data item that is a function, a function-identifier is used. Format 1 - data-name [qualification] [subscripting] [reference modification] Format 2 - data-name [qualification] [indexing] [reference modification] Format 3 - FUNCTION function-name [ ({argument}...) ] [reference modification] 4 functions A function (synonymous with intrinsic function) is a temporary data item that represents a value to be determined at the time the function is referenced during the execution of a statement. The value can be alphanumeric, numeric, or integer. A function-identifier is a syntactically correct combination of character strings and separators that uniquely references the data item resulting from the evaluation of a function. Functions are treated as elementary data items, but cannot be receiving operands. A function-identifier that references an alphanumeric function can be specified wherever an identifier is permitted and where a reference to a function is not specifically prohibited by general-format rules. An integer or numeric function can be used anywhere an arithmetic expression can be used, subject to certain restrictions. The general format of a function-identifier is as follows: FUNCTION function-name [({argument}... )] [reference-modifier] A function-name is one of the names listed below. Most function-names are key words but not reserved words (the exceptions are LENGTH, RANDOM, and SUM, which are reserved words, as is FUNCTION), and can be used in a program outside the context of a function. An argument is an identifier (including a function-identifier), a literal an arithmetic expression, or a table that complies with the specific rules governing the number, class, and category of arguments for the function. The arguments in an argument list may be separated by a comma; they are evaluated individually, from left to right. A reference-modifier can be specified only for alphanumeric functions. It specifies the beginning character position and optionally the length of the resulting data item. The functions are listed below. For a complete description of the functions, including their formats, see the chapter on Intrinsic Functions in the COBOL Reference Manual. ACOS LENGTH ORD-MIN* ANNUITY LOG PRESENT-VALUE* ARGCOUNT LOG10 RANDOM ASIN LOWER-CASE RANGE* ATAN MAX* REM CHAR MEAN* REVERSE COS MEDIAN* SIN CURRENT-DATE MIDRANGE* SQRT DATE-OF-INTEGER MIN* STANDARD-DEVIATION* DAY-OF-INTEGER MOD SUM* FACTORIAL NUMVAL TAN INTEGER NUMVAL-C UPPER-CASE INTEGER-OF-DATE ORD VARIANCE* INTEGER-OF-DAY ORD-MAX* WHEN-COMPILED INTEGER-PART *Functions which permit a variable number of arguments which may include occurring items subscripted by "ALL" for one or more of its dimensions. In addition, five new Y2K functions are documented in the release notes: YEAR-TO-YYYY DATE-TO-YYYYMMDD DAY-TO-YYYYDDD TEST-DATE-YYYYMMDD TEST-DAY-YYYYMMDD 4 indexing Indexing is a special subscripting procedure. In indexing, you use the INDEXED BY phrase of the OCCURS clause to assign an index-name to each table level. You then refer to a table element using the index-name as a subscript. Format - { data-name } ( { , index-name [ { + } literal-2 ] } ) { condition-name } ( { [ { - } ] } ... ) ( { , literal-1 } ) 4 phrases 5 AT_END The AT END phrase specifies the action your program takes when the AT END condition occurs. Format - AT END stment 5 AT_END-OF-PAGE The AT END-OF-PAGE phrase specifies the action your program takes when the AT END-OF-PAGE condition occurs. Format - AT END-OF-PAGE stment 5 CORRESPONDING The CORRESPONDING option allows you to specify group items as operands in order to use their corresponding subordinate items in an operation. 5 FROM Format 1 - record-name FROM identifier Format 2 - FROM { keeplist-name } ... Keeplist-name refers to a user-defined keeplist in the Sub-Schema Section. Record-name and identifier must not refer to the same storage area. After statement execution ends, the data in the area referenced by identifier is available to the program. The data is not available in the area referenced by record-name, unless there is an applicable SAME clause. 5 INTO The INTO phrase implicitly moves a current record from the record storage area into an identifier. Format - file-name INTO identifier 5 INVALID_KEY The INVALID KEY phrase specifies the action your program takes when an invalid key condition is detected for the file being processed. Format - INVALID KEY stment 5 NOT_AT_END The NOT AT END phrase specifies the action your program takes when the AT END condition does not occur. Format - NOT AT END stment 5 NOT_AT_END-OF-PAGE The NOT AT END-OF-PAGE phrase specifies the action your program takes when the AT END-OF-PAGE condition does not occur. Format - NOT AT END-OF-PAGE stment 5 NOT_INVALID_KEY The NOT INVALID KEY phrase specifies the action your program takes when an invalid key condition is not detected for the file being processed. Format - NOT INVALID KEY stment 5 NOT_ON_ERROR_database The database on error exception condition occurs when the Database Control System (DBCS) encounters any database exception condition for any Data Manipulation Language (DML) statement. The NOT ON ERROR phrase in a DML statement allows the selection of an imperative statement sequence when any database exception condition does not occur. Format - NOT ON ERROR stment 5 NOT_ON_EXCEPTION The NOT ON EXCEPTION phrase allows execution of an imperative statement when an exception (or error) condition does not occur. Format - NOT ON EXCEPTION stment 5 NOT_ON_OVERFLOW The NOT ON OVERFLOW phrase allows you to specify an action for your program to take when an overflow condition does not exist. Format - NOT ON OVERFLOW stment 5 NOT_ON_SIZE_ERROR The NOT ON SIZE ERROR phrase allows you to specify an action for your program to take when a size error condition does not exist. Format - NOT ON SIZE ERROR stment 5 ON_ERROR_database The database on error exception condition occurs when the Database Control System (DBCS) encounters any database exception condition for any Data Manipulation Language (DML) statement. The ON ERROR phrase in a DML statement allows the selection of an imperative statement sequence when any database exception condition occurs. Format - ON ERROR stment 5 ON_EXCEPTION The ON EXCEPTION phrase allows execution of an imperative statement when an exception (or error) condition occurs. The ON EXCEPTION option of the CALL statement prevents control transfer of the CALL and triggers the execution of the imperative statement related to the CALL. The ON EXCEPTION option of the ACCEPT statement allows you to handle data entry errors when ACCEPTing into a numeric data field WITH CONVERSION. Format - ON EXCEPTION stment 5 ON_OVERFLOW The ON OVERFLOW phrase allows you to specify an action for your program to take when an overflow condition exists. Format - ON OVERFLOW stment 5 ON_SIZE_ERROR The ON SIZE ERROR phrase allows you to specify an action for your program to take when a size error condition exists. Format - ON SIZE ERROR stment 5 RETAINING The RETAINING clause specifies which currency indicators are not updated during the execution of the CONNECT, FETCH, FIND, MODIFY, RECONNECT, and STORE statements. Format - [ [ {| REALM |} ] ] [ RETAINING [ {| RECORD |} ] CURRENCY ] [ [ {| { SET [ set-name ] ... } |} ] ] [ [ {| { { set-name } ... } |} ] ] set-name is a subschema set name. 5 ROUNDED The rounding operation adds 1 to the absolute value of the low-order digit of the resultant identifier if the absolute value of the next least significant (lower-valued) digit of the intermediate data item is greater than or equal to 5. If you do not use the ROUNDED phrase, any excess low-order digits in the arithmetic result are truncated when the result is moved to the resultant identifier(s). 4 qualification A reference to a user-defined word is unique if: 1) no other name has the same spelling, including hyphenation, 2) it is a part of a REDEFINES clause (the reference following the word REDEFINES is unique because of clause placement), or 3) scoping rules make it unique. A name in a hierarchy of names can occur in more than one place in your program. Unless you are redefining it, you must refer to this nonunique name using one or more higher-level names in the hierarchy. These higher-level names are called qualifiers. Using them to achieve uniqueness of reference is called qualification. To make your reference unique, you need not specify all available qualifiers for a name, only the one(s) necessary to avoid ambiguity. You cannot use the same data-name as: 1) The name of an external record and as the name of any other external data item in any program contained within or containing the program describing the external data record. 2) The name of an item possessing the global attribute and as the name of any other data item in the program describing the global data item. 5 1format_file Format 1 - { { { IN } data-name-2 } ... [ { IN } file-name ] } { data-name-1 }{ { { OF } } [ { OF } ] } { condition-name }{ { IN } file-name } { { OF } } 5 2format_paragraph Format 2 - paragraph-name { IN } section-name { OF } 5 3format_text Format 3 - text-name { IN } library-name { OF } 5 4format_LINAGE Format 4 - LINAGE-COUNTER { IN } file-name { OF } 5 5format_PAGE_LINE Format 5 - { PAGE-COUNTER } { IN } report-name { LINE-COUNTER } { OF } 5 6format_report Format 6 - { { IN } data-name-4 [ { IN } report-name ] } data-name-3 { { OF } [ { OF } ] } { { IN } report-name } { { OF } } 5 7format_screens Format 7 - screen-name-1 { { OF } screen-name-2 } ... { { IN } } 5 8format_RMS Format 8 - { RMS-STS } { IN } file-name { RMS-STV } { OF } { RMS-FILENAME } 4 record_selection_expressions A record selection expression is used to select a record in the database. It can be used in a FETCH or FIND statement. The record thus selected becomes the current record of the run unit upon which subsequent statements may operate when accessing the database. 5 1format_database_key_identifier_access This format selects a record by a database key value held by the Database Control System (DBCS) in a currency indicator or a keeplist entry. Format 1 - Database Key Identifier Access database-key-identifier 6 database-key-identifier identifies a record according to the rules of Database Key Identifiers. 5 2format_set_owner_access This format selects the record that owns a set. Format 2 - Set Owner Access OWNER WITHIN set-name 6 set-name is a subschema set name. The Database Control System (DBCS) uses the currency indicator for set-name to choose the owner record of that set occurrence. A database exception condition occurs if set-name is a singular set (DB-CONDITION is set to DBM$_SINGTYP) or if the currency indicator for the set type is null (DB-CONDITION is set to DBM$_CSTYP_NULL). 5 3format_record_search_access This format selects a record by its position within a collection of records and optionally by its record type and contents. Format 3 - Record Search Access { FIRST } { LAST } { NEXT } { PRIOR } { ANY } { DUPLICATE } { [ RELATIVE ] int-exp } [record-name] [ WITHIN { realm-name } ] [ USING { rec-key } ... ] [ { set-name } ] [ WHERE { bool-expres } ] 6 int-exp is an integer or arithmetic expression resulting in a longword integer value. It cannot be zero. 6 realm-name is a subschema realm name. 6 record-name is a subschema record name. 6 set-name is a subschema set name. 6 rec-key is a key data item within the subschema record occurrence. The same rec-key can appear only once in a given USING phrase. 6 bool-expres is a conditional expression that involves data items of the object record. It is used to specify additional requirements of a qualifying record. bool-expres: { bool-alt [ OR bool-alt ] ... } bool-alt: { simp-bool-rel [ AND simp-bool-rel ] ... } simp-bool-rel: { bool-condit } { NOT bool-expres } bool-condit: { { {[ NOT ] EQUAL TO } } } { { {[ NOT ] = } } } { { {[ NOT ] LESS THAN } } } { { IS {[ NOT ] < } } } { { {[ NOT ] GREATER THAN } } } { { {[ NOT ] > } } } { { id } { { GREATER THAN OR EQUAL TO } } { id } } { { lit } { { >= } } { lit } } { { { LESS THAN OR EQUAL TO } } } { { { <= } } } { { DOES {[ NOT ] CONTAIN } } } { { {[ NOT ] CONTAINS } } } { { {[ NOT ] MATCH } } } { { {[ NOT ] MATCHES } } } 7 bool-alt is one or more sub-expressions (simp-bool-rel). Pairs of sub-expressions are joined by the logical operator AND. 7 simp-bool-rel is a simple-condition (bool-condit), an expression, or the negation of either. 7 bool-condit a simple-condition is a relation involving two operands joined by a relational operator. At least one operand in each relation must be an item in the record being found or fetched. 5 4format_database_key_access This format selects the record that is referred to by the database key value contained in the special register DB-KEY. Format 4 - Database Key Access DBKEY 4 reference_modification Reference modification defines a subset of a data item by specifying its leftmost character and length. Format 1 - data-name ( leftmost-character-position : [ length ] ) Format 2 - FUNCTION function-name [ ({argument}...) ] ( leftmost-character-position : [ length ] ) 4 segmentation VSI COBOL programs execute in a virtual memory environment. Therefore, programs need not manage physical memory by overlaying Procedure Division code. In VSI COBOL, segmentation controls the assignment of Procedure Division sections to fixed or independent segments. The optional segment-number in the section header specifies the type of segment. Format - section-name SECTION [ segment-number ] . 5 section-name names a Procedure Division section. 5 segment-number must be an integer in the range 0 through 99. If there is no segment-number in a section header, the implied segment-number is 0. 5 fixed_segments Fixed segments appear to reside in memory at all times. A fixed segment is in its initial state the first time the program calls it. On later calls, the fixed segment is in its last-used state. 5 independent_segments The state of an independent segment depends on how and when it receives control. 4 subscripting Subscripts can appear only in references to individual elements in a list, or table, of like elements that do not have individual data-names. Format 1 - { data-name } ( { arithmetic-expression } ... ) { condition-name } Format 2 - { ALL } argument ( { integer-1 } { data-name [ {+|-} integer-2 ] } ... ) { index-name [ {+|-} integer-3 ] } In Format 2, argument is an intrinsic function argument that is allowed to be repeated a variable number of times. Note that Format 1 may also be used for intrinsic function arguments when ALL sub- scripts are not specified. In Format 2, when ALL is specified as a subscript, the effect is as if each table element associated with that subscript position were specified. 3 ACCEPT The ACCEPT statement makes low-volume data available to the program. The HP extensions to the ACCEPT statement (formats 3, 4 and 5) are COBOL language additions that facilitate video forms design and data handling. 4 1format_FROM_input The ACCEPT statement makes low-volume data available to the program. The HP extensions to the ACCEPT statement (formats 3, 4 and 5) are COBOL language additions that facilitate video forms design and data handling. Format 1 - ACCEPT dest-item [FROM input-source] [ AT END stment ] [ NOT AT END stment ] [ END-ACCEPT ] 5 dest-item is the identifier of a data item into which data is accepted. 5 input-source is a mnemonic-name defined in the SPECIAL-NAMES paragraph of the Environment Division. 5 stment is an imperative statement executed for an AT END or NOT AT END condition. 4 2format_FROM The ACCEPT statement makes low-volume data available to the program. The HP extensions to the ACCEPT statement (formats 3, 4 and 5) are COBOL language additions that facilitate video forms design and data handling. Format 2 - { DATE [YYYYMMDD] } ACCEPT dest-item FROM { DAY [YYYYDDD] } { DAY-OF-WEEK } { TIME } 5 dest-item is the identifier of a data item into which data is accepted. 4 3format_screen_extensions The ACCEPT statement makes low-volume data available to the program. The HP extensions to the ACCEPT statement (formats 3, 4 and 5) are COBOL language additions that facilitate video forms design and data handling. Format 3 - ACCEPT dest-item {| { line-num } |} {| FROM LINE NUMBER { line-id [ PLUS [ plus-num ] ] } |} {| { PLUS [ plus-num ] } |} {| { column-num } |} {| FROM COLUMN NUMBER { column-id [ PLUS [ plus-num ] ] } |} {| { PLUS [ plus-num ] } |} {| ERASE [TO END OF] { SCREEN } |} {| { LINE } |} {| WITH BELL |} {| UNDERLINED |} {| BOLD |} {| WITH BLINKING |} {| PROTECTED [| SIZE { prot-size-lit } |] |} {| [| { prot-size-item } |] |} {| [| WITH AUTOTERMINATE |] |} {| [| WITH EDITING |] |} {| [| WITH NO BLANK |] |} {| [| WITH FILLER prot-fill-lit |] |} {| WITH CONVERSION |} {| REVERSED |} {| WITH NO ECHO |} {| DEFAULT IS { def-src-lit } |} {| { def-src-item } |} {| { CURRENT VALUE } |} {| CONTROL KEY IN key-dest-item |} { [ ON EXCEPTION stment ] [ NOT ON EXCEPTION stment ] } { [ AT END stment ] [ NOT AT END stment ] } [ END-ACCEPT ] 5 dest-item is the identifier of a data item into which data is accepted. 5 line-num is a numeric literal that specifies a line position on the terminal screen. Line-num must be a positive integer. It cannot be zero. 5 line-id is the identifier of a data item that provides a line position on the terminal screen. 5 column-num is a numeric literal that specifies a column position on the terminal screen. Column-num must be a positive integer. It cannot be zero. 5 column-id is the identifier of a data item that provides a column position on the terminal screen. 5 plus-num is a numeric literal that increments the current value for line or column position, or that increments the value of line-id or column-id. Plus-num can be zero or a positive integer. 5 prot-size-lit is a numeric literal that specifies the maximum length of the video screen field into which data can be typed. Prot-size-lit must be a positive integer. It cannot be zero. 5 prot-size-item is the identifier of a numeric integer data item that specifies the maximum length of the video screen field into which data can be typed. It must be a positive integer; it cannot be zero. 5 prot-fill-lit is a single character alphanumeric literal that is used to initialize each character position of a protected video screen field into which data can be typed. 5 def-src-lit is a nonnumeric literal or a figurative constant. However, it cannot be the figurative constant ALL literal. 5 def-src-item is the identifier of an alphanumeric data item. 5 key-dest-item is the identifier of a data item that defines a control key. Key-dest-item must specify an alphanumeric data item at least four characters in length. 5 stment is an imperative statement executed for an AT END, NOT AT END, ON EXCEPTION or NOT ON EXCEPTION condition. 4 4format_screen_extensions_CONTROL_KEY The ACCEPT statement makes low-volume data available to the program. The HP extensions to the ACCEPT statement (formats 3, 4 and 5) are COBOL language additions that facilitate video forms design and data handling. Format 4 - ACCEPT CONTROL KEY IN key-dest-item {| { line-num } |} {| FROM LINE NUMBER { line-id [ PLUS [ plus-num ] ] } |} {| { PLUS [ plus-num ] } |} {| { column-num } |} {| FROM COLUMN NUMBER { column-id [ PLUS [ plus-num ] ] } |} {| { PLUS [ plus-num ] } |} {| ERASE [TO END OF] { SCREEN } |} {| { LINE } |} {| WITH BELL |} { [ ON EXCEPTION stment ] [ NOT ON EXCEPTION stment ] } { [ AT END stment ] [ NOT AT END stment ] } [ END-ACCEPT ] 5 line-num is a numeric literal that specifies a line position on the terminal screen. Line-num must be a positive integer. It cannot be zero. 5 line-id is the identifier of a data item that provides a line position on the terminal screen. 5 column-num is a numeric literal that specifies a column position on the terminal screen. Column-num must be a positive integer. It cannot be zero. 5 column-id is the identifier of a data item that provides a column position on the terminal screen. 5 plus-num is a numeric literal that increments the current value for line or column position, or that increments the value of line-id or column-id. Plus-num can be zero or a positive integer. 5 key-dest-item is the identifier of a data item that defines a control key. Key-dest-item must specify an alphanumeric data item at least four characters in length. 5 stment is an imperative statement executed for an AT END, NOT AT END, ON EXCEPTION or NOT ON EXCEPTION condition. 4 5format_screen_section_extensions The ACCEPT statement makes low-volume data available to the program. The HP extensions to the ACCEPT statement (formats 3, 4 and 5) are COBOL language additions that facilitate video forms design and data handling. Format 5 - ACCEPT screen-name [ {| LINE NUMBER { line-num } |} ] [ {| { line-id } |} ] [ AT {| |} ] [ {| COLUMN NUMBER { column-num } |} ] [ {| { column-id } |} ] [ ON EXCEPTION stment ] [ NOT ON EXCEPTION stment2 ] [ END-ACCEPT ] 5 screen-name is the name of a screen item defined in the SCREEN SECTION of the program. 5 line-num is a numeric literal that specifies a line position on the terminal screen. Line-num must be a positive integer. It cannot be zero. 5 line-id is the identifier of a data item that provides a line position on the terminal screen. 5 column-num is a numeric literal that specifies a column position on the terminal screen. Column-num must be a positive integer. It cannot be zero. 5 column-id is the identifier of a data item that provides a column position on the terminal screen. 5 stment is an imperative statement executed for an AT END, NOT AT END, ON EXCEPTION or NOT ON EXCEPTION condition. 3 ADD The ADD statement adds two or more numeric operands and stores the result. 4 1format_TO The ADD statement adds two or more numeric operands and stores the result. Format 1 - ADD { num } ... TO { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-ADD ] 5 num is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item. It is the resultant identifier. 5 stment is an imperative statement. 4 2format_GIVING The ADD statement adds two or more numeric operands and stores the result. Format 2 - ADD { num } ... TO { num } GIVING { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-ADD ] 5 num is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 stment is an imperative statement. 4 3format_CORRESPONDING The ADD statement adds two or more numeric operands and stores the result. Format 3 - ADD { CORRESPONDING } grp-1 TO grp-2 [ ROUNDED ] { CORR } [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-ADD ] 5 grp is the identifier of a numeric group item. 5 stment is an imperative statement. 3 ALTER The ALTER statement changes the destination of a GO TO statement. Format - ALTER { proc TO [ PROCEED TO ] new-proc } ... 4 proc is the name of a paragraph that contains one sentence: a GO TO statement without the DEPENDING phrase. 4 new-proc is a procedure-name. 3 CALL The CALL statement transfers control to another program in the executable image. Format - CALL prog-name [ {{{ [BY REFERENCE] } }} [{{BY REFERENCE } }] ] [ {{{ BY CONTENT } }} [{{BY CONTENT } }] ] [USING{{{ BY DESCRIPTOR }{arg}...}} [{{BY DESCRIPTOR}{arg}...}] ... ] [ {{{ BY VALUE } }} [{{BY VALUE } }] ] [ { OMITTED } [ OMITTED ] ] [ GIVING function-res ] { [ ON EXCEPTION stment ] [ NOT ON EXCEPTION stment ] } { [ ON OVERFLOW stment ] [ NOT ON OVERFLOW stment ] } [ END-CALL ] 4 prog-name is a nonnumeric literal or the identifier of an alphanumeric data item. It is the name of the program to which control transfers. 4 arg is the argument. It identifies the data that is available to both the calling and called programs. It is any data item described in the File Section, Working-Storage Section, or Linkage Section, or it is a nonnumeric literal. It must not be a function-identifier. 4 function-res is the identifier of an elementary integer numeric data item with COMP, COMP-1, or COMP-2 usage and no scaling positions. Function-res can be subscripted, and it can be qualified. When control returns to the calling program, function-res can contain a function result. 4 stment is an imperative statement. 3 CANCEL The CANCEL statement removes the logical relationship to another program. Format - CANCEL { prog-name } ... 4 prog-name is a nonumeric literal or the identifier of an alphanumeric data item. It contains the program-name of the program to be cancelled. 3 CLOSE The CLOSE statement ends processing of reels (or units) and files. It can also perform rewind, lock, and removal operations. Format - { [ { REEL } [ FOR REMOVAL ] ] } CLOSE { file-name [ { UNIT } [ WITH NO REWIND ] ] } ... { [ WITH { NO REWIND } ] } { [ { LOCK } ] } 4 file-name is the name of a file described in the Data Division. It cannot be a sort or merge file. 3 COMMIT The COMMIT statement ends your database transaction, makes permanent all changes made to the database since the last quiet point, and establishes a new quiet point for this run unit. Format - COMMIT [ RETAINING ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-COMMIT ] 4 stment is an imperative statement. 3 COMPUTE The COMPUTE statement evaluates an arithmetic expression and stores the result. Format - COMPUTE { rsult [ ROUNDED ] } ... = arithmetic-expression [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-COMPUTE ] 4 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 4 stment is an imperative statement. 3 CONNECT The CONNECT statement inserts the current record of the run unit as a member record into one or more sets. The set occurrence for each insertion is determined by the currency indicator for the corresponding set type. Format - CONNECT [ record-name ] TO { { set-name } ... } { ALL } [ [{| REALM |}] ] [ RETAINING [{| RECORD |}] CURRENCY ] [ [{| { SET [ set-name ] ... } |}] ] [ [{| { { set-name } ... } |}] ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-CONNECT ] 4 record-name names a subschema record type. 4 set-name names a subschema set type. 4 stment is an imperative statement. 3 CONTINUE The CONTINUE statement indicates that no executable statement is present. It causes an implicit control transfer to the next executable statement. Format - CONTINUE 3 DELETE The DELETE statement logically removes a record from a mass storage file. Format - DELETE file-name RECORD [ INVALID KEY stment ] [ NOT INVALID KEY stment ] [ END-DELETE ] 4 file-name is the name of a relative or indexed file described in the Data Division. It cannot be the name of a sequential file or a sort or merge file. 4 stment is an imperative statement. 3 DISCONNECT The DISCONNECT statement logically removes the current record of the run unit from one or more sets. Format - DISCONNECT [record-name] FROM { { set-name } ... } { ALL } [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-DISCONNECT ] 4 record-name names a subschema record type. 4 set-name names a subschema set type. 4 stment is an imperative statement. 3 DISPLAY The DISPLAY statement transfers low-volume data from the program to the default system output device or to the object of a mnemonic-name. The HP extensions to the DISPLAY statement, Formats 2 and 3, are COBOL language additions that facilitate video forms design and data handling. Format 4 sets a program variable to the current command line argument number to read with a Format 7 ACCEPT. Format 5 sets the name of an environment variable or system logical while Format 6 sets the value of an environment variable or system logical. 4 1format_statement The DISPLAY statement transfers low-volume data from the program to the default system output device or to the object of a mnemonic-name. The HP extensions to the DISPLAY statement (formats 2 and 3) are COBOL language additions that facilitate video forms design and data handling. Format 1 - DISPLAY { src-item } ... [ UPON output-dest ] [ WITH NO ADVANCING ] [ WITH CONVERSION] [ END-DISPLAY ] 5 src-item is a literal or the identifier of a data item. The literal can be any figurative constant including ALL literal. 5 output-dest is a mnemonic-name defined in the SPECIAL-NAMES paragraph of the Environment Division. 4 2format_screen_extensions The DISPLAY statement transfers low-volume data from the program to the default system output device or to the object of a mnemonic-name. The HP extensions to the DISPLAY statement (formats 2 and 3) are COBOL language additions that facilitate video forms design and data handling. Format 2 - DISPLAY { src-item [{| { line-num } |}] } [{| AT LINE NUMBER { line-id [ PLUS [ plus-num ] ] } |}] } [{| { PLUS [ plus-num ] } |}] } [{| { column-num } |}] } [{| AT COLUMN NUMBER { column-id [ PLUS [ plus-num ] ] } |}] } [{| { PLUS [ plus-num ] } |}] } [{| ERASE [TO END OF] { SCREEN } |}] } ... [{| { LINE } |}] } [{| WITH BELL |}] } [{| UNDERLINED |}] } [{| BOLD |}] } [{| WITH BLINKING |}] } [{| REVERSED |}] } [{| WITH CONVERSION |}] } [ WITH NO ADVANCING ] [ END-DISPLAY ] 5 src-item is a literal or the identifier of a data item. The literal can be any figurative constant except ALL literal. 5 output-dest is a mnemonic-name defined in the SPECIAL-NAMES paragraph of the Environment Division. 5 line-num is a numeric literal that specifies a line position on the terminal screen. Line-num must be a positive integer. It cannot be zero. 5 line-id is the identifier of a data item that provides a line position on the terminal screen. 5 column-num is a numeric literal that specifies a column position on the terminal screen. Column-num must be a positive integer. It cannot be zero. 5 column-id is the identifier of a data item that provides a column position on the terminal screen. 5 plus-num is a numeric literal that increments the current value for line or column position, or that increments the value of line-id or column-id. Plus-num can be zero or a positive integer. 4 3format_screen_section_extensions The DISPLAY statement transfers low-volume data from the program to the default system output device or to the object of a mnemonic-name. The HP extensions to the DISPLAY statement (formats 2 and 3) are COBOL language additions that facilitate video forms design and data handling. Format 3 - DISPLAY screen-name [ {| LINE NUMBER { line-num } |} ] [ {| { line-id } |} ] [ AT {| |} ] [ {| COLUMN NUMBER { column-num } |} ] [ {| { column-id } |} ] [ END-DISPLAY ] 5 screen-name is the name of a screen item defined in the SCREEN SECTION of the program. 5 line-num is a numeric literal that specifies a line position on the terminal screen. Line-num must be a positive integer. It cannot be zero. 5 line-id is the identifier of a data item that provides a line position on the terminal screen. 5 column-num is a numeric literal that specifies a column position on the terminal screen. Column-num must be a positive integer. It cannot be zero. 5 column-id is the identifier of a data item that provides a column position on the terminal screen. 4 4format_arg_position_extensions When a Format 4 DISPLAY statement is specified, the value stored in arg-position is moved to argument-number. This updates the current argument position indicator for the command line. See ARGUMENT-NUMBER in the SPECIAL-NAMES paragraph. This point to to selected argument to be read by a Format 7 ACCEPT statement. Format 4 - DISPLAY arg-position UPON argument-number [ END-DISPLAY ] 5 arg-position is a literal or identifier that specifies the desired argument position on the run command line. It must be an unsigned integer. 5 argument-number is a mnemonic name associated with argument-number in the SPECIAL-NAMES paragraph in the Environment Division, representing the name of an environment variable or system logical. 4 5format_envlog_name_extensions When a Format 5 DISPLAY statement is specified, the value stored in envlog-name is moved to environment-name. See ENVIRONMENT-NAME in the SPECIAL-NAMES paragraph. The updated value of environment-name becomes the environment variable or logical to be accessed by subsequent Format 6 DISPLAY and Format 8 ACCEPT statements. Format 5 - DISPLAY envlog-name UPON environment-name [ END-DISPLAY ] 5 envlog-name references an alphanumeric data item, or is a nonnumeric literal. 5 environment-name is a mnemonic name associated with ARGUMENT-NUMBER in the SPECIAL-NAMES paragraph in the Environment Division, representing the name of an environment variable or system logical. 5 Example Example of Formats 5 and 6. IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. ENVIRONMENT-NAME IS NAME-OF-EVAR ENVIRONMENT-VALUE IS VALUE-OF-EVAR. DATA DIVISION. WORKING-STORAGE SECTION. 01 NAME-1 PIC X(20). 01 VALUE-ACCEPTED PIC X(20). PROCEDURE DIVISION. P1. * The name of the environment variable MOVE "TESTPATH1" TO NAME-1. * Create an environment with the name "TESTPATH1" DISPLAY NAME-1 UPON NAME-OF-EVAR. * Set the value of "TESTPATH1" DISPLAY "/USER/MYNAME" UPON VALUE-OF-EVAR. * Read the value of TESTPATH1 into a variable ACCEPT VALUE-ACCEPTED FROM VALUE-OF-EVAR. * Display the value of TESTPATH1" DISPLAY VALUE-ACCEPTED. STOP RUN. 4 6format_envlog_value_extensions When a Format 6 DISPLAY statement is specified, environment-value receives the value stored in envlog-value. The environment variable or logical is the one named by a Format 5 DISPLAY statement. See ENVIRONMENT-VALUE in the SPECIAL-NAMES paragraph. Format 6 - DISPLAY envlog-value UPON environment-value [ ON EXCEPTION stment ] [ NOT ON EXCEPTION stment2 ] [ END-DISPLAY ] 5 envlog-value references an alphanumeric data item, or is a nonnumeric literal. 5 environment-value is a mnemonic name associated with ENVIRONMENT-VALUE in the SPECIAL-NAMES paragraph in the Environment Division, representing the contents of the variable associated with the ENVIRONMENT-NAME. 5 Example Example of Formats 5 and 6. IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. ENVIRONMENT-NAME IS NAME-OF-EVAR ENVIRONMENT-VALUE IS VALUE-OF-EVAR. DATA DIVISION. WORKING-STORAGE SECTION. 01 NAME-1 PIC X(20). 01 VALUE-ACCEPTED PIC X(20). PROCEDURE DIVISION. P1. * The name of the environment variable MOVE "TESTPATH1" TO NAME-1. * Create an environment with the name "TESTPATH1" DISPLAY NAME-1 UPON NAME-OF-EVAR. * Set the value of "TESTPATH1" DISPLAY "/USER/MYNAME" UPON VALUE-OF-EVAR. * Read the value of TESTPATH1 into a variable ACCEPT VALUE-ACCEPTED FROM VALUE-OF-EVAR. * Display the value of TESTPATH1" DISPLAY VALUE-ACCEPTED. STOP RUN. 3 DIVIDE The DIVIDE statement divides one or more numeric data items by another. It stores the quotient and, for Formats 4 and 5, the remainder. 4 1format_INTO The DIVIDE statement divides one or more numeric data items by another. It stores the quotient. Format 1 - DIVIDE srcnum INTO { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-DIVIDE ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item. It is the resultant identifier. 5 stment is an imperative statement. 4 2format_INTO_GIVING The DIVIDE statement divides one or more numeric data items by another. It stores the quotient. Format 2 - DIVIDE srcnum INTO srcnum GIVING { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-DIVIDE ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 stment is an imperative statement. 4 3format_BY_GIVING The DIVIDE statement divides one or more numeric data items by another. It stores the quotient. Format 3 - DIVIDE srcnum BY srcnum GIVING { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-DIVIDE ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 stment is an imperative statement. 4 4format_INTO_with_REMAINDER The DIVIDE statement divides one or more numeric data items by another. It stores the quotient and remainder. Format 4 - DIVIDE srcnum INTO srcnum GIVING rsult [ ROUNDED ] REMAINDER remaind [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-DIVIDE ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 remaind is the identifier of an elementary numeric item or an elementary numeric edited item. 5 stment is an imperative statement. 4 5format_BY_with_REMAINDER The DIVIDE statement divides one or more numeric data items by another. It stores the quotient and remainder. Format 5 - DIVIDE srcnum BY srcnum GIVING rsult [ ROUNDED ] REMAINDER remaind [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-DIVIDE ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 remaind is the identifier of an elementary numeric item or an elementary numeric edited item. 5 stment is an imperative statement. 3 ERASE The ERASE statement deletes the current record of the run unit from the database. Additional records owned by the current record may also be deleted and/or disconnected. Format - ERASE [ ALL ] [ record-name ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-ERASE ] 4 record-name names a subschema record type. 4 stment is an imperative statement. 3 EVALUATE The EVALUATE statement selects a program action based on the evaluation of one or more conditions. Format - { subj-item } [ { subj-item } ] EVALUATE { TRUE } [ ALSO { TRUE } ] ... { FALSE } [ { FALSE } ] { { { ANY } { { { cond } { {WHEN{ TRUE } { { { FALSE } { { { [NOT] {obj-item [{THRU } obj-item]} } { { { { [{THROUGH} ]} } [ { ANY }] } } [ { cond }] } } [ALSO { TRUE }] ... } ... stment} ... [ { FALSE }] } } [ { [NOT] {obj-item [{THRU } obj-item]}}] } } [ { { [{THROUGH} ]}}] } } [ WHEN OTHER stment ] [ END-EVALUATE ] 4 subj-item is an identifier, an arithmetic or conditional expression, or a literal other than the figurative constant ZERO. 4 cond is a conditional expression. 4 obj-item is a literal, an identifier, or an arithmetic expression. 4 stment is an imperative statement. 3 EXIT The EXIT statement provides a common logical end point for a series of procedures. The EXIT PROGRAM statement marks the logical end of a called program. 4 1statement The EXIT statement provides a common logical end point for a series of procedures. Format - EXIT 4 2statement_PROGRAM The EXIT PROGRAM statement marks the logical end of a called program. Format - EXIT PROGRAM 3 FETCH The FETCH statement is a combined FIND and GET that establishes a specific record in the database as the current record of the run unit and makes the record available to the run unit in the User Work Area. Format - FETCH database-record [ FOR UPDATE ] [ [{| REALM |}] ] [RETAINING [{| RECORD |}] CURRENCY] [ [{| { SET [ set-name ] ... } |}] ] [ [{| { { set-name } ... } |}] ] [{ [ AT END stment ] [ NOT AT END stment ] } ] [{ [ ON ERROR stment ] [ NOT ON ERROR stment ] } ] [ END-FETCH ] 4 database-record represents a record selection expression. References are made to a record in the data-base according to the rules for Record Selection Expressions. 4 set-name names a subschema set type. 4 stment is an imperative statement. 3 FIND The FIND statement locates a specific record in the database and establishes it as the current record of the run unit. The FIND ALL statement locates zero or more records in the database and inserts them into the named keeplist. 4 1format The FIND statement locates a specific record in the database and establishes it as the current record of the run unit. Format 1 - FIND database-record [ FOR UPDATE ] [ [{| REALM |}] ] [RETAINING [{| RECORD |}] CURRENCY] [ [{| { SET [ set-name ] ... } |}] ] [ [{| { { set-name } ... } |}] ] [{ [ AT END stment ] [ NOT AT END stment ] } ] [{ [ ON ERROR stment ] [ NOT ON ERROR stment ] } ] [ END-FIND ] 5 database-record represents a record selection expression. References are made to a record in the database according to the rules for Record Selection Expressions. 5 set-name names a subschema set type. 5 stment is an imperative statement. 4 2format_ALL The FIND ALL statement locates zero or more records in the database and inserts them into the named keeplist. Format 2 - FIND ALL keeplist-name [ record-name ] [ WITHIN { realm-name } ] [ { set-name } ] [ USING { rec-key } ... ] [ FOR UPDATE ] [ WHERE { bool-exp } ] [{ [ AT END stment ] [ NOT AT END stment ] } ] [{ [ ON ERROR stment ] [ NOT ON ERROR stment ] } ] [ END-FIND ] 5 keeplist-name names a keeplist in the Sub-Schema Section. 5 record-name is a subschema record name. 5 realm-name is a subschema realm name. 5 set-name is a subschema set name. 5 rec-key is a key data item within the subschema record occurrence. The same rec-key can appear only once in a given USING phrase. 5 bool-exp is a conditional expression that involves data items of the object record. It is used to specify additional requirements of a qualifying record. 5 stment is an imperative statement. 3 FREE The FREE statement empties selected keeplists or removes a database key value from a keeplist or currency indicator. Format - { [ { record-name } ] } { CURRENT [ WITHIN { set-name } ] } { [ { realm-name } ] } FREE { { OFFSET integer-exp } } { { FIRST } WITHIN keeplist-name } { { LAST } } { ALL [ { FROM { keeplist-name } ... } ] } { [ { CURRENT } ] } [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-FREE ] 4 record-name is a subschema record name. 4 set-name is a subschema set name. 4 realm-name is a subschema realm name. 4 integer-exp is an arithmetic expression or integer. It refers to a position in keeplist-name. Integer-exp cannot be zero. 4 keeplist-name names a keeplist in the Sub-Schema Section. 4 stment is an imperative statement. 3 GENERATE The GENERATE statement directs the Report Writer Control System (RWCS) to produce a report according to the Report Description entry (RD) in the Report Section of the Data Division. Format - GENERATE report-item 4 report-item names either a report-name in a Report Description entry, or the group-data-name of a TYPE IS DETAIL report group. 3 GET The GET statement moves the contents of the current database record of the run unit to your User Work Area. Format - GET [ record-name ] [ { record-item } ... ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-GET ] 4 record-name names a database subschema record type. 4 record-item is a group or elementary data item in a subschema record type. Record-item may be qualified. 4 stment is an imperative statement. 3 GO_TO The GO TO statement transfers control from one part of the Procedure Division to another. 4 1format The GO TO statement transfers control from one part of the Procedure Division to another. Format 1 - GO TO [ proc-name ] 5 proc-name is a procedure-name. 4 2format_DEPENDING The GO TO statement transfers control from one part of the Procedure Division to another. Format 2 - GO TO { proc-name } ... DEPENDING ON num 5 proc-name is a procedure-name. 5 num is the identifier of an elementary numeric item described with no positions to the right of the assumed decimal point. 3 IF The IF statement evaluates a condition. The condition's truth value determines the program action that follows. Format - IF condition THEN { { stment-1 } ... } { NEXT SENTENCE } [ ELSE { stment-2 } ... [ END-IF ] ] [ ELSE NEXT SENTENCE ] [ END-IF ] 4 stment an imperative or conditional statement. An imperative statement can precede a conditional statement. 3 INITIALIZE The INITIALIZE statement sets selected types of data fields to predetermined values. Format - INITIALIZE { fld-name } ... [ { { ALPHABETIC } } ] [ { { ALPHANUMERIC } } ] [ REPLACING { { NUMERIC } DATA BY val } ... ] [ { { ALPHANUMERIC-EDITED } } ] [ { { NUMERIC-EDITED } } ] 4 fld-name is the identifier of the receiving area data item. 4 val is the sending area. It can be a literal or the identifier of a data item. 3 INITIATE The INITIATE statement causes the Report Writer Control System (RWCS) to begin processing a report. Format - INITIATE { report-name } ... 4 report-name names a report defined by a Report Description entry (RD) in the Report Section of the Data Division. 3 INSPECT The INSPECT statement counts or replaces occurrences of single characters or groups of characters in a data item. 4 1format_TALLYING The INSPECT statement counts or replaces occurrences of single characters or groups of characters in a data item. Format 1 - INSPECT src-string TALLYING { { tally-ctr FOR { { { [ { BEFORE } ] } } { CHARACTERS [ { AFTER } INITIAL delim-val ] ... } ... } ... { { ALL } { { { LEADING } { compare-val [{ BEFORE } ] } } } [{ AFTER } INITIAL delim-val ] ... } ... } ... } ... 5 src-string is the identifier of a group item or an elementary data item with DISPLAY usage. INSPECT operates on the contents of this data item. 5 tally-ctr is the identifier of an elementary numeric data item. 5 compare-val is the character-string INSPECT uses for comparison. It is a nonnumeric literal (or figurative constant other than ALL literal) or the identifier of an elementary alphabetic, alphanumeric, or numeric data item with DISPLAY usage. 5 delim-val is the character-string that delimits the INSPECT operation. Its content restrictions are the same as those for compare-val. 4 2format_REPLACING The INSPECT statement counts or replaces occurrences of single characters or groups of characters in a data item. Format 2 - INSPECT src-string REPLACING { CHARACTERS BY replace-char [{ BEFORE } INITIAL delim-val] ... } { [{ AFTER } ] } { { ALL } } ... { { LEADING } { compare-val BY replace-val { { FIRST } [ { BEFORE } INITIAL delim-val ] ... } ... } [ { AFTER } ] } } 5 src-string is the identifier of a group item or an elementary data item with DISPLAY usage. INSPECT operates on the contents of this data item. 5 compare-val is the character-string INSPECT uses for comparison. It is a nonnumeric literal (or figurative constant other than ALL literal) or the identifier of an elementary alphabetic, alphanumeric, or numeric data item with DISPLAY usage. 5 delim-val is the character-string that delimits the INSPECT operation. Its content restrictions are the same as those for compare-val. 5 replace-char is the one-character item that replaces all characters. Its content restrictions are the same as those for compare-val. 5 replace-val is the character-string that replaces occurrences of compare-val. Its content restrictions are the same as those for compare-val. 4 3format_TALLYING_REPLACING The INSPECT statement counts or replaces occurrences of single characters or groups of characters in a data item. Format 3 - INSPECT src-string TALLYING { { tally-ctr FOR { { { [ { BEFORE } ] } } { CHARACTERS [ { AFTER } INITIAL delim-val ] ... } ... } ... { { ALL } { { { LEADING } { compare-val { [{ BEFORE } ] } } } [{ AFTER } INITIAL delim-val ] ... } ... } ... } ... REPLACING { CHARACTERS BY replace-char [{ BEFORE } INITIAL delim-val] ... } { [{ AFTER } ] } { { ALL } } ... { { LEADING } { compare-val BY replace-val { { FIRST } [ { BEFORE } INITIAL delim-val ] ... } ... } [ { AFTER } ] } } 5 src-string is the identifier of a group item or an elementary data item with DISPLAY usage. INSPECT operates on the contents of this data item. 5 tally-ctr is the identifier of an elementary numeric data item. 5 compare-val is the character-string INSPECT uses for comparison. It is a nonnumeric literal (or figurative constant other than ALL literal) or the identifier of an elementary alphabetic, alphanumeric, or numeric data item with DISPLAY usage. 5 delim-val is the character-string that delimits the INSPECT operation. Its content restrictions are the same as those for compare-val. 5 replace-char is the one-character item that replaces all characters. Its content restrictions are the same as those for compare-val. 5 replace-val is the character-string that replaces occurrences of compare-val. Its content restrictions are the same as those for compare-val. 4 4format_CONVERTING The INSPECT statement counts or replaces occurrences of single characters or groups of characters in a data item. Format 4 - INSPECT src-string CONVERTING compare-chars TO convert-chars [ { BEFORE } INITIAL delim-val ] ... [ { AFTER } ] 5 src-string is the identifier of a group item or an elementary data item with DISPLAY usage. INSPECT operates on the contents of this data item. 5 delim-val is the character-string that delimits the INSPECT operation. Its content restrictions are the same as those for compare-val. 5 compare-chars is the string that contains the individual characters that convert to those in convert-chars. It is the same kind of item as compare-val. 5 convert-chars is the string that contains the individual characters to which the characters in compare-chars convert. It is the same kind of item as compare-val. 3 KEEP The KEEP statement inserts a database key value from a currency indicator or keeplist into a keeplist. Format - [ [ { record-name } ] ] [ CURRENT [ WITHIN { set-name } ] ] [ [ { realm-name } ] ] KEEP [ { OFFSET integer-exp } ] [ { FIRST } WITHIN keeplist-name ] [ { LAST } ] USING destination-keeplist [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-KEEP ] 4 record-name is a subschema record name. 4 set-name is a subschema set name. 4 realm-name is a subschema realm name. 4 integer-exp is an arithmetic expression or integer. It refers to a position in keeplist-name. Integer-exp cannot be zero. 4 keeplist-name names a keeplist in the Sub-Schema Section. 4 destination-keeplist names a keeplist in the Sub-Schema Section to receive the database key value. 4 stment is an imperative statement. 3 MERGE The MERGE statement takes two or more identically sequenced files and combines them according to the key values you specify. During the process, it makes records available, in merged order, to routines in OUTPUT PROCEDURE or to an output file. Format - MERGE mergefile { ON { ASCENDING } KEY { mergekey } ... } ... { { DESCENDING } } [ COLLATING SEQUENCE IS alpha ] USING infile { infile } ... { OUTPUT PROCEDURE IS first-proc [ { THRU } end-proc ] } { [ { THROUGH } ] } { GIVING { outfile } ... } 4 mergefile is a file-name described in a sort-merge file description (SD) entry in the Data Division. 4 mergekey is the data-name of a data item in a record associated with mergefile. 4 alpha is an alphabet-name defined in the SPECIAL-NAMES paragraph of the Environment Division. 4 infile is the file-name of an input file. It must be described in a file description (FD) entry in the Data Division. 4 first-proc is the section-name or paragraph-name of the output procedure's first (or only) section or paragraph. 4 end-proc is the section-name or paragraph-name of the output procedure's last section or paragraph. 4 outfile is the file-name of an output file. It must be described in a file description (FD) entry in the Data Division. 3 MODIFY The MODIFY statement changes the contents of specified data items in a database record. Format - MODIFY [ record-name ] [ { record-item } ... ] [ [{| REALM |}] ] [RETAINING [{| RECORD |}] CURRENCY] [ [{| { SET [ set-name ] ... } |}] ] [ [{| { { set-name } ... } |}] ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-MODIFY ] 4 record-name names a database subschema record type. 4 record-item is a group or elementary data item in a subschema record type. Record-item can be qualified. 4 set-name names a subschema set type. 4 stment is an imperative statement. 3 MOVE The MOVE statement transfers data to one or more data areas. The editing rules control data transfer. 4 1format The MOVE statement transfers data to one or more data areas. The editing rules control data transfer. Format 1 - MOVE { src-item } TO { dest-item } ... { lit } 5 src-item is an identifier that represents the sending area. 5 lit is a literal that represents the sending area. 5 dest-item is an identifier that represents the receiving area. 4 2format_CORRESPONDING The MOVE statement transfers data to one or more data areas. The editing rules control data transfer. Format 2 - MOVE { CORRESPONDING } src-item TO dest-item { CORR } 5 src-item is an identifier that represents the sending area. 5 dest-item is an identifier that represents the receiving area. 3 MULTIPLY The MULTIPLY statement multiplies two numeric operands and stores the result. 4 1format The MULTIPLY statement multiplies two numeric operands and stores the result. Format 1 - MULTIPLY srcnum BY { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-MULTIPLY ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item. It is the resultant identifier. 5 stment is an imperative statement. 4 2format_GIVING The MULTIPLY statement multiplies two numeric operands and stores the result. Format 2 - MULTIPLY srcnum BY srcnum GIVING { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-MULTIPLY ] 5 srcnum is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 stment is an imperative statement. 3 OPEN The OPEN statement creates an access stream to the file, makes the file available to the program, begins the processing of a file, and specifies file sharing. 4 1format_sequential_relative_indexed The OPEN statement creates an access stream to the file, makes the file available to the program, begins the processing of a file, and specifies file sharing. Format 1 - Sequential, Relative, Indexed { { [WITH LOCK ]} } { { [ {NO OTHERS }]} } { { [ {{|READERS |}}]} } {{INPUT }{file-name[WITH NO REWIND][ALLOWING {{|WRITERS |}}]}...} {{OUTPUT}{ [ {{|UPDATERS|}}]} } { { [ {ALL }]} } OPEN{ }... { { [WITH LOCK ]} } { { [ { NO OTHERS } ]} } { { [ { {| READERS |}} ]} } {{EXTEND}{ file-name [ALLOWING { {| WRITERS |}} ]}... } {{I-O }{ [ { {| UPDATERS |}} ]} } { { [ { ALL } ]} } 5 file-name is the name of a file described in the Data Division. It cannot be the name of a sort or merge file. 4 2format_report_writer The OPEN statement creates an access stream to the file, makes the file available to the program, begins the processing of a file, and specifies file sharing. Format 2 - Report Writer OPEN { OUTPUT { file-name [ WITH NO REWIND ] } ... } ... { EXTEND { file-name } ... } 5 file-name is the name of a file described in the Data Division. It cannot be the name of a sort or merge file. 3 PERFORM The PERFORM statement executes one or more procedures. It returns control to the end of the PERFORM statement when procedure execution ends. 4 1format The PERFORM statement executes one or more procedures. It returns control to the end of the PERFORM statement when procedure execution ends. Format 1 - PERFORM [first-proc [ { THRU } end-proc ]] [ [ { THROUGH } ]] [ stment END-PERFORM ] 5 first-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in first-proc are the first (or only) set of statements in the PERFORM range. 5 end-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in end-proc are the last set of statements in the PERFORM range. 5 stment is an imperative statement. 4 2format_repeat-count The PERFORM statement executes one or more procedures. It returns control to the end of the PERFORM statement when procedure execution ends. Format 2 - PERFORM [first-proc [ { THRU } end-proc ]] repeat-count TIMES [ [ { THROUGH } ]] [ stment END-PERFORM ] 5 first-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in first-proc are the first (or only) set of statements in the PERFORM range. 5 end-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in end-proc are the last set of statements in the PERFORM range. 5 stment is an imperative statement. 5 repeat-count is a numeric integer literal or the identifier of a numeric integer elementary item. It controls how many times the statement set (or sets) executes. 4 3format_UNTIL The PERFORM statement executes one or more procedures. It returns control to the end of the PERFORM statement when procedure execution ends. Format 3 - PERFORM [first-proc [ { THRU } end-proc ]] [ WITH TEST { BEFORE } ] [ [ { THROUGH } ]] [ { AFTER } ] UNTIL cond [ stment END-PERFORM ] 5 first-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in first-proc are the first (or only) set of statements in the PERFORM range. 5 end-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in end-proc are the last set of statements in the PERFORM range. 5 stment is an imperative statement. 5 cond can be any conditional expression. 4 4format_VARYING The PERFORM statement executes one or more procedures. It returns control to the end of the PERFORM statement when procedure execution ends. Format 4 - PERFORM [first-proc [ { THRU } end-proc ]] [ WITH TEST { BEFORE } ] [ [ { THROUGH } ]] [ { AFTER } ] VARYING var FROM init BY increm UNTIL cond [ AFTER var FROM init BY increm UNTIL cond ] ... [ stment END-PERFORM ] 5 first-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in first-proc are the first (or only) set of statements in the PERFORM range. 5 end-proc is a procedure-name that identifies a paragraph or section in the Procedure Division. The set of statements in end-proc are the last set of statements in the PERFORM range. 5 stment is an imperative statement. 5 cond can be any conditional expression. 5 var is an index-name or the identifier of a numeric elementary data item. Its value is changed by increm each time all statements in the PERFORM range execute. 5 init is a numeric literal, index-name, or the identifier of a numeric elementary data item. It specifies the value of var before any statement in the PERFORM range executes. 5 increm is a nonzero numeric literal or the identifier of a numeric elementary data item. It systematically changes the value of var each time the program executes all statements in the PERFORM range. 3 READ For sequential access files, the READ statement makes the next logical record available. For random access files, READ makes a specified record available. 4 1format_sequential For sequentially accessed files, the READ statement makes the next logical record in the sequence available. Format 1 - READ file-name [ NEXT ] RECORD [ INTO dest-item ] [ PREVIOUS ] [ PRIOR ] [ WITH [ NO ] LOCK ] [ REGARDLESS OF LOCK ] [ { UPDATERS } ] [ ALLOWING { READERS } ] [ { NO OTHERS } ] [ AT END stment ] [ NOT AT END stment ] [ END-READ ] 5 file-name is the name of a file described in the Data Division. It cannot be a sort or merge file. 5 dest-item is the identifier of a data item that receives the record accessed by the READ statement. 5 stment is an imperative statement executed for an at end or not at end condition. 4 2format_random_dynamic For randomly accessed files, READ makes a specified record available. Format 2 - READ file-name RECORD [ INTO dest-item ] [ WITH [ NO ] LOCK ] [ REGARDLESS OF LOCK ] [ { UPDATERS } ] [ ALLOWING { READERS } ] [ { NO OTHERS } ] [ KEY IS key-data ] [ INVALID KEY stment ] [ NOT INVALID KEY stment ] [ END-READ ] 5 file-name is the name of a file described in the Data Division. It cannot be a sort or merge file. 5 dest-item is the identifier of a data item that receives the record accessed by the READ statement. 5 key-data is the data-name of a data item or the segmented-key name specified as a record key for file-name. It can be qualified. This clause is not used on RELATIVE files. 5 stment is an imperative statement executed for an invalid key or not invalid key condition. 3 READY The READY statement begins a database transaction, prepares one or more database realms for processing, and places each specified realm in a ready mode. Format - READY [ realm-name ] ... [ { { CONCURRENT } } ] [ { { EXCLUSIVE } [ { RETRIEVAL } ] } ] [ { { PROTECTED } [ { UPDATE } ] } ] [ USAGE-MODE IS { { BATCH } } ] [ { [ { CONCURRENT } ] } ] [ { { RETRIEVAL } [ { EXCLUSIVE } ] } ] [ { { UPDATE } [ { PROTECTED } ] } ] [ { [ { BATCH } ] } ] [ WITH WAIT ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-READY ] 4 realm-name names a subschema realm name. 4 stment is an imperative statement. 3 RECONNECT The RECONNECT statement moves the current database record of the run unit from one set to another (possibly the same) set. Format - RECONNECT [ record-name ] WITHIN { { set-name } ... } { ALL } [ [{| REALM |}] ] [ RETAINING [{| RECORD |}] CURRENCY ] [ [{| { SET [ set-name ] ... } |}] ] [ [{| { { set-name } ... } |}] ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-RECONNECT ] 4 record-name names a subschema record type. 4 set-name names a subschema set type. 4 stment is an imperative statement. 3 RECORD The RECORD statement creates a Common Data Dictionary/Repository (CDD/Repository) dependency relationship between a COBOL program and a dictionary entity stored in CDD/Repository. For this statement to be meaningful, you must compile your program with the /DEPENDENCY_DATA qualifier. RECORD DEPENDENCY pathname [ TYPE IS rel-type ] [ IN DICTIONARY ]. 4 pathname is a partial or full CDD/Repository pathname. It specifies a CDD/Repository dictionary entity stored in CDO format. 4 rel-type is a valid CDD/Repository protocol. It specifies the type of relationship to be created between the VSI COBOL program and the CDO dictionary entity specified in the pathname. The default is CDD$COMPILED_DEPENDS_ON. 3 RELEASE The RELEASE statement transfers records to the initial phase of a sort operation. Format - RELEASE rec [ FROM src-area ] 4 rec is the name of a logical record in a sort-merge file description (SD) entry. It can be qualified. 4 src-area is the identifier of the data item that contains the data. If src-area is a function-identifier, it must reference an alphanumeric function. 3 RETURN The RETURN statement gets sorted records from a sort operation. It also returns merged records in a merge operation. Format - RETURN smrg-file RECORD [ INTO dest-area ] AT END stment [ NOT AT END stment ] [ END-RETURN ] 4 smrg-file is the name of a file described in a sort-merge file description (SD) entry. 4 dest-area is the identifier of the data item to which the returned smrg-file record is moved. 4 stment is an imperative statement. 3 REWRITE The REWRITE statement logically replaces a mass storage file record. 4 1format_sequential Format 1 - REWRITE rec-name [ FROM src-item ] [ ALLOWING NO OTHERS ] [ END-REWRITE ] 5 rec-name is the name of a logical record in the Data Division File Section. It can be qualified. 5 src-item is the identifier of the data item that contains the data. If src-item is a function-identifier, it must reference an alphanumeric function. 4 2format_relative_indexed Format 2 - REWRITE rec-name [ FROM src-item ] [ ALLOWING NO OTHERS ] [ INVALID KEY stment ] [ NOT INVALID KEY stment ] [ END-REWRITE ] 5 rec-name is the name of a logical record in the Data Division File Section. It can be qualified. 5 src-item is the identifier of the data item that contains the data. If src-item is a function-identifier, it must reference an alphanumeric function. 5 stment is an imperative statement. 3 ROLLBACK The ROLLBACK statement ends your database transaction, nullifies all database changes made by this run unit since its last quiet point, and establishes a new quiet point for this run unit. Format - ROLLBACK [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-ROLLBACK ] 4 stment is an imperative statement. 3 SEARCH The SEARCH statement searches for a table element that satisfies a condition. It sets the value of the associated index to point to the table element. 4 1format_serial The SEARCH statement searches for a table element that satisfies a condition. It sets the value of the associated index to point to the table element. Format 1 - SEARCH src-table [ VARYING pointr ] [ AT END stment ] { {WHEN cond stment} ... END-SEARCH } { } { {WHEN cond { stment } } } { { { NEXT SENTENCE } } ... } 5 src-table is a table identifier. 5 pointr is an index-name or the identifier of a data item described as USAGE INDEX, or an elementary numeric data item with no positions to the right of the assumed decimal point. 5 cond is any conditional expression. 5 stment is an imperative statement. 4 2format_binary The SEARCH statement searches for a table element that satisfies a condition. It sets the value of the associated index to point to the table element. Format 2 - SEARCH ALL src-table [ AT END stment ] WHEN { elemnt { IS EQUAL TO } arg } { { IS = } } { cond-name } [ AND { elemnt { IS EQUAL TO } arg } ] ... [ { { IS = } } ] [ { cond-name } ] { stment [ END-SEARCH ] } { NEXT SENTENCE } 5 src-table is a table identifier. 5 stment is an imperative statement. 5 elemnt is an indexed data-name. It refers to the table element against which the argument is compared. 5 arg is the argument tested against each element (elemnt) in the search. It is an identifier, a literal, or an arithmetic expression. 5 cond-name is a condition-name. 3 SET The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. 4 1format_TO The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. Format 1 - SET { rsult } ... TO val 5 rsult is an index-name, the identifier of an index data item, or an elementary numeric data item described as an integer. 5 val is a positive integer, which may be signed. It can also be an index-name (or the identifier of an index data item) or an elementary numeric data item described as an integer. 4 2format_UP_DOWN The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. Format 2 - SET { indx } ... { UP BY } increm { DOWN BY } 5 indx is an index-name. 5 increm is an integer, which may be signed. It can also be the identifier of an elementary numeric data item described as an integer. 4 3format_cond-name The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. Format 3 - SET { cond-name } ... TO TRUE 5 cond-name is a condition-name that must be associated with a conditional variable. 4 4format_switch-name The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. Format 4 - SET { { switch-name } ... TO { ON } } ... { { OFF } } 5 switch-name is the name of an external switch defined in the SPECIAL-NAMES paragraph. 4 5format_REFERENCE The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. Format 5 - SET { pointer-id } ... TO REFERENCE OF identifier 5 pointer-id is a data-name whose data description entry must contain the USAGE IS POINTER or POINTER-64 clause. 5 identifier is a data item in the File, Working-Storage, Linkage Section, or Sub-Schema Section. 4 6format_SUCCESS_FAILURE The SET statement sets values of indexes associated with table elements. It can also change the value of a conditional variable, change the status of an external switch, and store the address of a COBOL identifier reference at run time. Format 6 - SET status-code-id TO { SUCCESS } { FAILURE } 5 status-code-id is a word or longword integer data item represented by PIC S9(1) to S9(9) COMP. 3 SORT The SORT statement handles both files and tables. 4 1format_file The SORT statement creates a sort file by executing input procedures or transferring records from an input file. It sorts the records in the sort file using one or more keys that you specify. Finally, it returns each record from the sort file, in sorted order, to output procedures or an output file. Format - SORT sortfile { ON { ASCENDING } KEY { sortkey } ... } ... { { DESCENDING } } [ WITH DUPLICATES IN ORDER ] [ COLLATING SEQUENCE IS alpha ] { INPUT PROCEDURE IS first-proc [ { THRU } end-proc ] } { [ { THROUGH } ] } { USING { infile } ... } { OUTPUT PROCEDURE IS first-proc [ { THRU } end-proc ] } { [ { THROUGH } ] } { GIVING { outfile } ... } 5 sortfile is a file-name described in a sort-merge file description (SD) entry in the Data Division. 5 sortkey is the data-name of a data item in a record associated with sortfile. 5 alpha is an alphabet-name defined in the SPECIAL-NAMES paragraph of the Environment Division. 5 first-proc is the section-name or paragraph-name of the first (or only) section or paragraph of the INPUT or OUTPUT procedure range. 5 infile is the file-name of the input file. It must be described in a file description (FD) entry in the Data Division. 5 end-proc is the section-name or paragraph-name of the last section or paragraph of the INPUT or OUTPUT procedure range. 5 outfile is the file-name of the output file. It must be described in a file description (FD) entry in the Data Division. 4 2format_table The SORT statement orders a table. It sorts the table elements based on the keys as specified in the OCCURS for the table. The table keys as specified in the OCCURS can be overridden with keys as specified in the SORT statement. If no key is specified, the table elements are the SORT keys. Format - SORT table-name [ ON { ASCENDING } KEY { sortkey } ... ] ... [ { DESCENDING } ] [ WITH DUPLICATES IN ORDER ] [ COLLATING SEQUENCE IS alpha ]. 5 table-name is a table described with OCCURS in the Data Division. 5 sortkey is the data-name of a data item in the table-name table. 5 alpha is an alphabet-name defined in the SPECIAL-NAMES paragraph of the Environment Division. 3 START The START statement establishes the logical position of the Next Record Pointer in an indexed or relative file. The logical position affects subsequent sequential record retrieval. Format - [ { IS EQUAL TO } ] [ { IS = } ] [ { IS GREATER THAN } ] START file-name [ KEY { IS > } key-data ] [ { IS NOT LESS THAN } ] [ { IS NOT < } ] [ { IS GREATER THAN OR EQUAL TO } ] [ { IS >= } ] [ { IS LESS THAN } ] [ { IS < } ] [ { IS LESS THAN OR EQUAL TO } ] [ { IS <= } ] [ { IS NOT GREATER THAN } ] [ { IS NOT > } ] [ REGARDLESS OF LOCK ] [ { UPDATERS } ] [ ALLOWING { READERS } ] [ { NO OTHERS } ] [ INVALID KEY stment ] [ NOT INVALID KEY stment ] [ END-START ] 4 file-name is the name of an indexed or relative file with sequential or dynamic access. It cannot be the name of a sort or merge file. 4 key-data is the data-name of a data item or the segmented-key name specified as a record key, or the leftmost part of a record key, or the relative key for file-name. It can be qualified. 4 stment is an imperative statement. 3 STOP The STOP statement permanently terminates or temporarily suspends image execution. Format - STOP { RUN } { disp } 4 disp is any literal, or any figurative constant except ALL literal. 3 STORE The STORE statement stores a new record in the database, establishes the record as an owner of an empty set of each set type for which the record is an owner record type, and connects the record as a member to the current set of each set type for which the record is an AUTOMATIC member record type. Format - STORE record-name [ [ NEXT TO ] DBKEY ] [ WITHIN { realm-name } ... ] [ [{| REALM |}] ] [ RETAINING [{| RECORD |}] CURRENCY ] [ [{| { SET [ set-name ] ... } |}] ] [ [{| { { set-name } ... } |}] ] [ ON ERROR stment ] [ NOT ON ERROR stment ] [ END-STORE ] 4 record-name names a subschema record type. 4 realm-name names a subschema realm. 4 set-name names a subschema set type. 4 stment is an imperative statement. 3 STRING The STRING statement concatenates the partial or complete contents of one or more data items into a single data item. Format - STRING { { src-string } ... DELIMITED BY { delim } } ... { { SIZE } } INTO dest-string [ WITH POINTER pointr ] [ ON OVERFLOW stment ] [ NOT ON OVERFLOW stment ] [ END-STRING ] 4 src-string is a nonnumeric literal or identifier of a DISPLAY data item. It is the sending area. 4 delim is a nonnumeric literal or the identifier of a DISPLAY data item. It is the delimiter of src-string. 4 dest-string is the identifier of a DISPLAY data item. It cannot be reference modified. Dest-string is the receiving area that contains the result of the concatenated src-strings. 4 pointr is an elementary numeric data item described as an integer. It points to the position in dest-string to contain the next character moved. 4 stment is an imperative statement. 3 SUBTRACT The SUBTRACT statement subtracts one, or the sum of two or more, numeric items from one or more items. It stores the result in one or more items. 4 1format_FROM The SUBTRACT statement subtracts one, or the sum of two or more, numeric items from one or more items. It stores the result in one or more items. Format 1 - SUBTRACT { num } ... FROM { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-SUBTRACT ] 5 num is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item. It is the resultant identifier. 5 stment is an imperative statement. 4 2format_GIVING The SUBTRACT statement subtracts one, or the sum of two or more, numeric items from one or more items. It stores the result in one or more items. Format 2 - SUBTRACT { num } ... FROM num GIVING { rsult [ ROUNDED ] } ... [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-SUBTRACT ] 5 num is a numeric literal or the identifier of an elementary numeric item. 5 rsult is the identifier of an elementary numeric item or an elementary numeric edited item. It is the resultant identifier. 5 stment is an imperative statement. 4 3format_CORRESPONDING The SUBTRACT statement subtracts one, or the sum of two or more, numeric items from one or more items. It stores the result in one or more items. Format 3 - SUBTRACT { CORRESPONDING } grp-1 FROM grp-2 [ ROUNDED ] { CORR } [ ON SIZE ERROR stment ] [ NOT ON SIZE ERROR stment ] [ END-SUBTRACT ] 5 grp is the identifier of a group item. 5 stment is an imperative statement. 3 SUPPRESS The SUPPRESS statement causes the Report Writer Control System (RWCS) to inhibit the presentation of a report group. Format - SUPPRESS PRINTING 3 TERMINATE The TERMINATE statement causes the Report Writer Control System (RWCS) to complete the processing of the specified report. Format - TERMINATE { report-name } ... 4 report-name names a report defined by a Report Description entry in the Report Section of the Data Division. 3 UNLOCK The UNLOCK statement removes record locks from a record or all currently locked records in the file. Format - UNLOCK file-name [ RECORD ] [ ALL RECORDS ] 4 file-name is the name of a sequential, relative, or indexed file described in the Data Division. 3 UNSTRING The UNSTRING statement separates contiguous data in a sending field and stores it in one or more receiving fields. Format - UNSTRING src-string [ DELIMITED BY [ALL] delim [ OR [ALL] delim ] ... ] INTO { dest-string [DELIMITER IN delim-dest] [COUNT IN countr] } ... [ WITH POINTER pointr ] [ TALLYING IN tally-ctr ] [ ON OVERFLOW stment ] [ NOT ON OVERFLOW stment ] [ END-UNSTRING ] 4 src-string is the identifier of an alphanumeric class data item. It cannot be reference modified. Src-string is the sending field. 4 delim is a nonumeric literal or the identifier of an alphanumeric data item. It is the delimiter for the UNSTRING operation. 4 dest-string is the identifier of an alphanumeric, alphabetic, or numeric DISPLAY data item. It is the receiving field for the data from src-string. 4 delim-dest is the identifier of an alphanumeric data item. It is the receiving field for delimiters. 4 countr is the identifier of an elementary numeric data item described as an integer. It contains the count of characters moved. 4 pointr is the identifier of an elementary numeric data item described as an integer. It points to the current character position in src-string. 4 tally-ctr is the identifier of an elementary numeric data item described as an integer. It counts the number of dest-string fields accessed during the UNSTRING operation. 4 stment is an imperative statement. 3 USE The USE statement specifies Declarative procedures to handle input/output errors and database exception conditions. It can also specify procedures to be executed before the program processes a specific report group. These procedures supplement the standard procedures in the COBOL Run-Time System and OpenVMS RMS. 4 1format_AFTER_EXCEPTION The USE statement specifies Declarative procedures to handle input/output errors and database exception conditions. It can also specify procedures to be executed before the program processes a specific report group. These procedures supplement the standard procedures in the COBOL Run-Time System and OpenVMS RMS. Format 1 - { {file-name} ...} { INPUT } USE [GLOBAL] AFTER STANDARD {EXCEPTION }PROCEDURE ON{ OUTPUT }. {ERROR } { I-O } { EXTEND } 5 file-name is the name of a file connector described in a file description entry in a Data Division. It cannot refer to a sort or merge file. 4 2format_BEFORE_REPORTING The USE statement specifies Declarative procedures to handle input/output errors and database exception conditions. It can also specify procedures to be executed before the program processes a specific report group. These procedures supplement the standard procedures in the COBOL Run-Time System and OpenVMS RMS. Format 2 - USE [GLOBAL] BEFORE REPORTING group-data-name . 5 group-data-name is the name of a report group in a report group description entry in a Data Division. It must not appear in more than one USE statement. 4 3format_DB-EXCEPTION The USE statement specifies Declarative procedures to handle input/output errors and database exception conditions. It can also specify procedures to be executed before the program processes a specific report group. Format 3 - USE [GLOBAL] FOR DB-EXCEPTION [ON { {DBM$_exception-condition} ... }]. [ { OTHER }] 5 DBM$_exception-condition is a symbolic constant name beginning with the characters "DBM$_". It identifies a DBMS exception condition. 3 WRITE The WRITE statement releases a logical record to an output or input-output file. It can also position lines vertically on a logical page. 4 1format_sequential The WRITE statement releases a logical record to an output or input-output file. It can also position lines vertically on a logical page. Format 1 - WRITE rec-name [ FROM src-item ] [ ALLOWING NO OTHERS ] [ { advance-num [ LINE ] } ] [ { BEFORE } { [ LINES ] } ] [ { AFTER } ADVANCING { top-name } ] [ { PAGE } ] [ AT { END-OF-PAGE } stment ] [ { EOP } ] [ NOT AT { END-OF-PAGE } stment ] [ { EOP } ] [ END-WRITE ] 5 rec-name is the name of a logical record described in the Data Division File Section. It cannot be qualified. The logical record cannot be in a sort-merge file description entry. 5 src-item is the identifier of the data item that contains the data. If src-item is a function-identifier, it must reference an alphanumeric function. 5 advance-num is an integer or the identifier of an unsigned data item described as an integer. Its value can be zero. 5 top-name is a mnemonic-name equated to "C01" in the SPECIAL-NAMES paragraph of the Environment Division. It represents top-of-page and is equivalent to the PAGE phrase. 5 stment is an imperative statement. 4 2format_relative_indexed The WRITE statement releases a logical record to an output or input-output file. It can also position lines vertically on a logical page. Format 2 - WRITE rec-name [ FROM src-item ] [ ALLOWING NO OTHERS ] [ INVALID KEY stment ] [ NOT INVALID KEY stment ] [ END-WRITE ] 5 rec-name is the name of a logical record described in the Data Division File Section. It cannot be qualified. The logical record cannot be in a sort-merge file description entry. 5 src-item is the identifier of the data item that contains the data. If src-item is a function-identifier, it must reference an alphanumeric function. 5 stment is an imperative statement. 2 COPY_statement The COPY statement includes text in a COBOL source program. 3 1format_text-name The COPY statement includes text in a COBOL source program. Format 1 - COPY text-name [ { OF } library-name ] [ { IN } ] [ { { ==pseudo-text-1== } { ==pseudo-text-2== } } ] [REPLACING { { identifier-1 } BY { identifier-2 } } ... ] . [ { { literal-1 } { literal-2 } } ] [ { { word-1 } { word-2 } } ] 4 text-name is the name of a COBOL library file available during compilation. 4 library-name is the name of the OpenVMS Librarian library file that contains text-name. 4 1__pseudo-text-1__identifier-1__literal-1__word-1 are text-matching arguments that the compiler compares against text-words in the library text. 4 2__pseudo-text-2__identifier-2__literal-2__word-2 are replacement items that the compiler inserts into the source program. 3 2format_record-name The COPY statement includes text in a COBOL source program. Format 2 - COPY record-name FROM DICTIONARY [ { { ==pseudo-text-1== } { ==pseudo-text-2== } } ] [REPLACING { { identifier-1 } BY { identifier-2 } } ... ] . [ { { literal-1 } { literal-2 } } ] [ { { word-1 } { word-2 } } ] 4 record-name is a partial or complete Common Data Dictionary/Repository (CDD/Repository) pathname. It specifies the CDD/Repository record description to be copied into the source program. 4 1__pseudo-text-1__identifier-1__literal-1__word-1 are text-matching arguments that the compiler compares against text-words in the library text. 4 2__pseudo-text-2__identifier-2__literal-2__word-2 are replacement items that the compiler inserts into the source program. 2 REPLACE_statement The REPLACE statement is used to replace source program text. 3 1format_pseudo-text-name The REPLACE statement is used to replace source program text. Format 1 - REPLACE {==pseudo-text-1== BY ==pseudo-text-2==} ... 4 pseudo-text-1 is a text-matching argument that the compiler compares against text-words in the source program. 4 pseudo-text-2 is a replacement item that the compiler inserts into the source program. 3 2format_OFF The REPLACE OFF statement is used to terminate any text replacement processing currently in effect. Format 2 - REPLACE OFF 2 Compiler_Messages This subset of VSI COBOL compiler messages includes those that require additional explanation. 3 ACCEXCEPT DISPLAY now allows [NOT] ON EXCEPTION - check DISPLAY scope within ACCEPT ON EXCEPTION Explanation: Format 6 of the DISPLAY statement with the [NOT] ON EXCEPTION phrase is a conditional statement and may require the use of END-DISPLAY to determine the proper scope of the DISPLAY statement. User Action: Verify the scope of the DISPLAY statement in the program logic. You may need to insert a terminating "end-display". For example, consider this code fragment: accept password-form at line 15 column 20 on exception display "Problem " line 16 not on exception continue end-accept. The "not on exception" is NOT matched with the "accept" as shown by the indentation, but is matched with nearest preceding unterminated statement, the "display". To match the "not on exception" phrase with the "accept" insert an "end-display" so the code looks like: accept password-form at line 15 column 20 on exception display "Problem " line 16 end-display not on exception continue end-accept. 3 BADINT Integer value is outside of valid range---results are undefined Explanation: The compiler truncates the value, and the results are undefined because your program violates one of these rules: a. The value is greater than that allowed by RMS. b. The value is not less than 2**31. c. The value is equal to zero. User Action: Modify the value so that it is within the valid range. 3 BADPROTCL *Node is an invalid CDD object Explanation: The dictionary object is corrupt. The compiler could not find a required CDD entry. User Action: You must reinsert the definition into the dictionary. 3 CDDERROR CDD error at node Explanation: The dictionary object is corrupt. The compiler could not find a required CDD entry. User Action: You must reinsert the definition into the dictionary. 3 DEBUGOPT /NOOPTIMIZE is recommended with /DEBUG Explanation: The compiler performs optimization of your COBOL program when you specify /DEBUG, resulting in unusual program behavior when stepping through your program in subsequent debugging sessions. In addition, program SECTION and PARAGRAPH names may not appear when debugging optimized programs. User Action: To suppress this compiler message, you must change the level of optimization on the COBOL command line or specify no optimization. (For example, specify /NOOPTIMIZE, /OPTIMIZE, or /OPTIMIZE=LEVEL=x). To provide the debugger with the best possible information about your program, specify /NOOPTIMIZE. 3 GRPVALCND VALUE and condition-names invalid with subordinate JUSTIFIED, SYNCHRONIZED, or non-DISPLAY usage Explanation: The compiler accepts the VALUE clause. User Action: Use an explicit MOVE statement in your program to initialize these items. 3 ILLLITERL CDD record containing symbolic literals invalid in COBOL Explanation: This CDD entry is incompatible with VSI COBOL. The COBOL language does not define symbolic literals, therefore the VSI COBOL compiler ignores them. User Action: You must take the following action: a. Redefine the record definition and reinsert it into the dictionary, omitting the symbolic literal. b. Do not use this record definition with VSI COBOL. 3 INVADVANC Invalid ADVANCING operand Explanation: The operand must be one of the following: a. PAGE. b. a mnemonic-name. c. an unsigned integer data item. d. an unsigned integer literal. User Action: Recode the program using one of the four valid operands 3 MISS01 Missing level 01 or 77 entry before this item Explanation: If the current item is a condition-name, the compiler ignores the definition; otherwise, the compiler treats the current item as an 01 level item. User Action: Recode the program using a level 01 or level 77 entry. 3 MULTIDIM Invalid multidimensional CDD OCCURS Explanation: This CDD entry is incompatible with VSI COBOL. CDD supports the definition of multidimensional tables more generally than VSI COBOL does. The compiler uses only one dimension of the information contained in a multidimensional table definition. User Action: You must take the following action: a. Redefine the record definition in the dictionary, omitting this multidimensional table definition. b. Do not use this record definition with VSI COBOL. 3 NOTRECORD Node is an , not a CDD record definition---COPY ignored Explanation: VSI COBOL requires a pathname to reference a CDD record description. The compiler ignores the COPY FROM DICTIONARY statement. User Action: You must use a different pathname in your COPY FROM DICTIONARY statement or correct the CDD entry to describe a record. 3 NOV3EVAL /STANDARD=V3 evaluation order not supported for this construct Explanation: The compiler generates this message for items that may be affected by the evaluation order in the INSPECT, STRING, UNSTRING, and DIVIDE statements. Specifically, this message appears when you specify /STANDARD=V3 and either a subscript or a reference modification occurs in a place that, for VAX COBOL Version 3.0, required a different evaluation order User Action: Review the code indicated by the message and refer to the online help information for the /STANDARD qualifier to determine whether or not your program needs a change. 3 NOV3ODO /STANDARD=V3 variable length item rules not supported for this construct Explanation: The compiler generates this message when you specify /STANDARD=V3 for destinations where OCCURS DEPENDING ON requires different behavior in the MOVE statement than VAX COBOL Version 3.0. User Action: Review the code indicated by the message and refer to the online help information about the /STANDARD qualifier to determine whether or not your program needs a change. 3 ODOSAMDD OCCURS DEPENDING ON data-name must be defined in the same DATA DIVISION as the OCCURS DEPENDING ON. Explanation: The compiler ignores the error. User Action: You must take the following actions: a. Redefine the OCCURS DEPENDING ON data-name in the same Data Division as the OCCURS DEPENDING ON. b. Recompile your program. 3 REAMISIO READ statement required for OPEN I-O on file Explanation: The program opens the file in I-O mode, but does not contain a READ statement. A DELETE or REWRITE operation on a sequentially accessed file requires a previously executed READ or START statement. User Action: You must take one of the following actions: a. Add a READ statement to your program. b. Check the file declaration for the EXTERNAL attribute and add one to your program, if appropriate. 3 REDEFFILL Redefinition of FILLER invalid in COBOL Explanation: The compiler ignores the redefinition and treats the item as a separate data description entry. User Action: Remove the erroneous redefinition. 3 REDEFNAM Incorrect data-name in REDEFINES clause Explanation: The compiler assumes the correct data-name, if possible. Otherwise, the compiler ignores the REDEFINES clause. User Action: Correct the data-name and recompile your program. 3 REFINVSEC REFERENCE data name defined in an invalid section Explanation: Data name must be defined in the File, or Working-Storage Section. The compiler ignores the entire VALUE IS clause. User Action: Remove the VALUE IS reference clause. 3 SECTGLOB Invalid GLOBAL clause Explanation: This data-item either: a. does not have an explicit name. b. is not an 01 or 77 item. c. is not defined in the File or Working-Storage Sections. User Action: You must take one of the following actions: a. Remove the GLOBAL clause. b. Check entries that contain the GLOBAL clause and make certain they are named. c. Check your program to ensure that the GLOBAL clause is an 01 or 77 item and make the necessary corrections. d. Make certain that the data-item is in the File or Working-Storage section. If it is not, remove the GLOBAL clause. 3 SELOBJECTS Invalid number of selection objects Explanation: In the WHEN clause of an EVALUATE statement, the number of selection objects must equal the number of selection subjects. User Action: Recode the program making certain that you have an equal number of selection objects and selection subjects. 3 BADITMLEN Length for database record-item "!AF" must be greater than zero Explanation: The minimum size for a COBOL data item is 1 byte. In a DBMS Data Description entry, the minimum size for a subschema data item is 0 bytes. The compiler treats the record-item as if it has a length of 1 byte, which may produce run-time errors. User Action: You must take one of the following actions: a. Redefine the subschema data item to be at least 1 byte, and recompile the subschema with the DDL Utility b. Do not use this subschema with VSI COBOL 3 BADITMMUL Length for database record-item ".!AF" must be multiple of 8 bits Explanation: This entry is incompatible with VSI COBOL. The smallest unit of data that can be defined in a VSI COBOL program is 1 byte (8 bits). The compiler rounds the length up to the next multiple of 8 bits. User Action: You must take the following actions: a. Redefine the subschema data item to be a multiple of 8 bits. b. Recompile the subschema with the DDL Utility. 3 BADITMOFF Offset for database record-item "!AF" must be multiple of 8 bits Explanation: This entry is incompatible with VSI COBOL. The smallest unit of data that can be defined in a VSI COBOL program is 1 byte (8 bits). The compiler rounds the offset up to the next multiple of 8 bits. User Action: You must take the following actions: a. Redefine the subschema data item to be a multiple of 8 bits. b. Recompile the subschema with the DDL Utility. 3 BADRECMUL Length for database record "!AF" must be multiple of 8 bits Explanation: This entry is incompatible with VSI COBOL. The smallest unit of data that can be defined in a VSI COBOL program is 1 byte (8 bits). The compiler rounds the length up to the next multiple of 8 bits. User Action: You must take the following actions: a. Redefine the subschema data item to be a multiple of 8 bits. b. Recompile the subschema with the DDL Utility..! 3 CDDACCERR Error in accessing subschema---DB statement ignored Explanation: The VSI COBOL compiler could not access the subschema and/or schema specified in your DB statement. Make certain that the schema and subschema exist in the CDD. Also, verify that your logical names resolve to the schema and subschema that you intend to use. The compiler ignores the DB statement. User Action: Check your CDD access path or CDD access authorization. 3 CDDSTRIDE Invalid stride for database record-item "!AF" Explanation: This entry is incompatible with VSI COBOL. The stride attribute describes the separation (in bits) between one occurrence of a table item and the next occurrence. This should be the same as the allocated length of a single occurrence of the item. The compiler issues this message whenever these two lengths do not agree. The compiler gives the record-item a stride equal to the length of one occurrence of the table item. User Action: You must take the following actions: a. Redefine your subschema to ensure that these two database record-item lengths are identical. b. Recompile the subschema containing this record-item with the DBMS DDL Utility. 3 CNTSGNOUT Unable to complete subschema processing Explanation: The compiler failed to exit the CDD when it completed subschema processing. The compiler terminates subschema processing. User Action: Recompile your program. 3 FLDACCERR Error in accessing record-item "!AF" from subschema Explanation: The subschema containing the record item is most likely corrupt. User Action: Recompile the subschema with the DBMS DDL Utility. 3 ILLNUMSUB Invalid multidimensional database record-item "!AF" Explanation: This entry is incompatible with VSI COBOL. The DBMS Data Definition Language defines multidimensional tables more generally than VSI COBOL does. The compiler uses one dimension of information of the multidimensional table definition. User Action: You must take one of the following actions: a. Redefine the record definition in the dictionary, omitting such multidimensional table definitions. b. Do not use this record definition with VSI COBOL. 3 INVDATTYP Unsupported subschema datatype for "!AF" Explanation: The compiler treats the item as if it were alphanumeric with a length equal to the original data type. User Action: You must take the following actions: a. Update the data type subschema definition. b. Recompile the subschema containing this definition with the DBMS DDL Utility. 3 NEGRECLEN Invalid length for database record "!AF" Explanation: The subschema containing the record definition with the invalid length is most likely corrupt. The compiler assigns the record a length of one byte. This may produce run-time errors. User Action: Recompile the subschema with the DBMS DDL Utility. 3 NOOFFSET Offset required for database record-item "!AF" Explanation: The required offset-into-the-record attribute is missing in the entry for this subschema record-item. Most likely the subschema is corrupt. User Action: Recompile the subschema using the DBMS DDL Utility. 3 NORECORDS Subschema must have at least one database record Explanation: This DBMS DDL entry is invalid in COBOL. The compiler terminates subschema processing. User Action: You must take one of the following actions: a. Redefine the subschema including a record-type definition and recompile the subschema with the DBMS DDL Utility. b. Do not use such subschema definitions with VSI COBOL. 3 NOUPBND Upper-bound required for database record-item "!AF" Explanation: The compiler encountered a table definition with no upper-bound. Most likely the subschema record description is corrupt. User Action: Recompile the subschema with the DBMS DDL Utility. 3 RECACCERR Error in accessing record "!AF" from subschema Explanation: The subschema containing the record is most likely corrupt. User Action: Recompile the subschema using the DBMS DDL Utility. 3 RLMACCERR Error in accessing realm "!AF" from subschema Explanation: The subschema containing the realm is most likely corrupt. User Action: Recompile the subschema with the DBMS DDL Utility. 3 SETACCERR Error in accessing set "!AF" from subschema Explanation: The subschema containing the set is most likely corrupt. User Action: Recompile the subschema with the DBMS DDL Utility. 3 SMLNPICDB Numeric database record-item "!AF" must represent at least one digit Explanation: This subschema entry is incompatible with VSI COBOL. The DBMS Data Definition Language allows the definition of numeric record-items to consist of zero digits; VSI COBOL does not. User Action: You must take the following actions: a. Correct the definition of the numeric record-item. b. Recompile the subschema with the DBMS DDL Utility. 3 OFFSRSE1 OFFSET invalid in a format 3 record selection expression Explanation: You can use OFFSET in the database key identifier form of the record selection expression, but not in the record search access form. User Action: Correct the record selection expression and recompile your program. 3 OPDCMPFN Operand subordinate to another database group operand Explanation: The list of record-items for this statement cannot contain any item that is subordinate to another item in the list. User Action: You must take the following actions: a. Update the subschema for the database. b. Recompile the subschema with the DBMS DDL Utility. 2 Run-Time_Messages This subset of VSI COBOL run-time messages includes those that require additional explanation. 3 ACCEPT_CVT_ERROR Error during ACCEPT from default input device Explanation: The data you entered in response to an ACCEPT WITH CONVERSION statement, which did not include an ON EXCEPTION phrase, caused a conversion error. The data in question was not properly formatted for the data type of the data-item you entered. User Action: If you want your program to handle incorrectly formatted data, add an ON EXCEPTION phrase to the ACCEPT statement. When the ON EXECEPTION phrase executes, your application can take the necessary corrective action. 3 ALREADY_OPEN File is already open Explanation: The program attempts to open a file on a file connector that is already open. User Action: Verify the program logic. If you expect that some cases will attempt to open a file connector that is already open, add a declarative procedure to handle this condition. 3 ANNUITYBOUNDS argument(s) to FUNCTION ANNUITY out of bounds Explanation: One or both of these rules were violated: a. Argument-1 must be greater than or equal to zero. b. Argument-2 must be positive. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 BUG_CHECK Internal consistency check failure Explanation: The system detects a defect in the COBOL Run-time Library. Under normal operation, this message should never appear. User Action: Please report the problem via the normal problem reporting channels and include an example that reproduces the problem. 3 CALL_FAILED Call failed to find program Explanation: The program specified in the CALL statement is not part of the run-unit, and the CALL statement does not include an ON OVERFLOW or ON EXCEPTION phrase. User Action: You must take one or more of the following actions: a. If you think that the program specified in the CALL statement may not be part of the run-unit, add an ON OVERFLOW or ON EXCEPTION phrase to the CALL statement. If the program named in the error message is part of the run-unit, check the scope of names rules. The named program may not be in a scope that is visible to the calling program. b. Check to see if the DCL LINK command produced any undefined symbol warnings. Executing a CALL statement to a program named in an undefined symbol warning results in the CALL_FAILED error at run time. c. Check to see if the object file containing the called program was properly linked into the run-unit. Specify /MAP/FULL/CROSS with the LINK command to produce a listing map that shows the object files and the programs within the object files that are part of the run-unit. d. Verify the spelling of the named program. 3 CANCEL_FAILED Cancel failed to find program Explanation: The program specified in the CANCEL statement is not part of the run-unit. User Action: You must take one or more of the following actions: a. If you think that the program specified in the CANCEL statement may not be part of the run-unit, add an ON OVERFLOW phrase to the CANCEL statement. If the program named in the error message is part of the run-unit, check the scope of names rules. The named program may not be in a scope that is visible to the calling program. b. Check to see if the DCL LINK command produced any undefined symbol warnings. Executing a CANCEL statement to a program named in an undefined symbol warning results in the CANCEL_FAILED error at run time. c. Check to see if the object file containing the called program was properly linked into the run-unit. Specify /MAP/FULL/CROSS with the LINK command to produce a listing map that shows the object files and the programs within the object files that are part of the run-unit. d. Verify the spelling of the named program. 3 CHARBOUNDS argument to FUNCTION CHAR out of bounds Explanation: Function argument must be greater than zero and less than or equal to the number of positions in the collating sequence. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 CLOSE_ERROR Unknown error during CLOSE Explanation: The system produced an error when closing a file. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the CLOSE statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 CLOSE_LOCKED File was closed with lock Explanation: The program attempted to perform an OPEN statement on a file that had been closed with a CLOSE WITH LOCK statement. User Action: Check the program logic. The WITH LOCK phrase indicates that the specified file connector cannot be used in a subsequent OPEN statement for the duration of the execution of the run-unit. The WITH LOCK phrase has no relation to the ALLOWING NO OTHERS file sharing option. 3 DATEINTBOUNDS argument to FUNCTION DATE-OF-INTEGER out of bounds Explanation: Function argument must be greater than zero. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 DAYINTBOUNDS argument to FUNCTION DAY-OF-INTEGER out of bounds Explanation: Function argument must be greater than zero. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 DELETE_ERROR Error during DELETE on file Explanation: The system produced an error when executing a DELETE statement. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the DELETE statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 DISPLAY_ERROR Error during DISPLAY on file Explanation: This error indicates an unexpected error condition during the execution of a DISPLAY statement. Under normal operation, this message should never appear. User Action: Check to see if there is any external interference with the display device. For all device types, possible problems may include a device that is off line or a user who does not have the necessary privileges to write to a display device. If the device is a file, possible problems may include a full disk or disk quota exceeded. 3 DIVBY_ZER Divide by zero; execution continues Explanation: The program executed a DIVIDE operation with the value zero for the divisor, and the statement does not contain an ON SIZE ERROR clause. Execution continues with undefined results. User Action: You must take one of the following actions: a. Check the program logic. If you expect that your program may attempt to divide by zero, add an ON SIZE ERROR clause to the DIVIDE statement. b. If this error occurs in the context of an expression that cannot include an ON SIZE ERROR clause, such as an IF statement, evaluate the expression in a DIVIDE or COMPUTE statement with an ON SIZE ERROR clause, storing the result in a temporary variable. Use that variable in the expression context. 3 FACTBOUNDS argument to FUNCTION FACTORIAL out of bounds Explanation: Function argument must be in the range of 0 through 33. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 FILE_ATTRIB File attributes not matched Explanation: The file organization of the file on the disk does not match the organization specified in the file connector. User Action: You must take the following actions: a. Check the program logic, and verify that the file you specified is the one you intended. b. Use the DCL command DIRECTORY/FULL to check the file organization of the file. 3 FILE_LOCKED File is locked by another program Explanation: The specified disk file has already been opened by another file connector, using file sharing options that prohibit the current program from opening the same file. The program that successfully opened the file could be part of the same run-unit, or it could belong to a different person running another program. User Action: You must take the following actions: a. Check the program logic, and verify that the file being opened is the one you intended. b. If you expect that some cases will attempt to open a file that is already open, add a declarative procedure to handle this condition. c. If the file should be available for sharing, use the DCL command SHOW DEVICE /FILES to find the process that has the file open and locked. In a clustered environment, perform this DCL command on each node in the cluster. d. Once you have identified the process, use the DCL command SHOW PROCESS /CONTINUOUS to find the program that is being executed. e. Check the program logic and the file sharing options for the program that has the file locked. 3 FILE_NOT_FOUND File not found Explanation: The specified file is not present. User Action: You must take the following actions: a. Check the spelling of the filename. If the name looks correct, examine any logical names that are part of the name. b. Use the DCL command DIRECTORY to see if the file exists and in which directory it is located. 3 GOTO_ALT GO TO with no preceding ALTER Explanation: The program executed a GO TO statement with no target. An example is a GO TO statement whose target is altered by one or more ALTER statements, but the program executes the GO TO statement before executing any of the ALTER statements. User Action: You must take either of the following actions: a. Modify the GO TO statement in the source file to include an initial target. b. Check the program logic to ensure that the program executes ALTER statements before it executes the referenced GO TO statements. 3 INSVIRMEM Failed to allocate virtual memory Explanation: The COBOL Run-time Library attempted to allocate virtual memory using the HP C routine malloc() or LIB$GET_VM. The virtual memory allocation failed. Under normal operation, this message should never appear. User Action: You must take the following actions: a. If the program is large, raise the virtual memory parameters. You can determine the current virtual memory usage from the "virtual pages" item of the display from the DCL command SHOW PROCESS/CONTINUOUS. b. Use the AUTHORIZE utility to check the page file quota (Pgflquo). c. Use the SYSGEN utility to check the parameter VIRTUALPAGECNT. 3 INTDATEBOUNDS argument to FUNCTION INTEGER-OF-DATE out of bounds Explanation: Function argument must be an integer of the form YYYYMMDD. One or more of these rules were violated: a. YYYY must be greater than 1600 and less than or equal to 9999 b. MM must be in the range of 1 through 12. c. DD must be in the range of 1 through 31 and valid for the particular month and year combination. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 INTDAYBOUNDS argument to FUNCTION INTEGER-OF-DAY out of bounds Explanation: Function argument must be an integer of the form YYYYDDD. One or more of these rules were violated: a. YYYY must be greater than 1600 and less than or equal to 9999 b. DDD must be in the range of 1 through 366 and valid for the year specified. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 INVALID_FNAME Filename is too long or otherwise invalid Explanation: There is a syntax error in the specified filename, or the filename is too long. User Action: Check the spelling of the filename, including any punctuation characters. For VMS systems, make sure that the file name, file type, and each piece of the directory specification are each less than 39 characters long. The total length of the filename string cannot exceed 255 characters. 3 INVALID_FOOTING Invalid footing specified on file Explanation: The FOOTING clause in the FD must specify a value larger than zero and less than the pagesize specified by the LINAGE clause. User Action: Check the program logic to ensure that the above conditions are met. 3 INVALID_SWITCH Invalid external switch value Explanation: The logical COB$SWITCHES does not specify a valid list of switches. The logical must translate to a comma-separated list of numbers from 1 to 16. User Action: Check the value of logical COB$SWITCHES using the DCL command SHOW LOGICAL COB$SWITCHES. 3 INVARGMTH argument to one of the following FUNCTIONs is out of bounds: ACOS, ASIN, LOG, LOG10, SQRT. Explanation: Function argument must be as follows: ACOS, ASIN: Function argument must be greater than or equal to -1 and less than or equal to 1. LOG, LOG10: Function argument must be greater than 0. SQRT: Function argument must be greater than or equal to 0. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 INVDECDAT Invalid decimal data Explanation: A numeric data-item declared as USAGE IS DISPLAY, or with an implied declaration of USAGE IS DISPLAY, contains characters that are not digits or the sign position does not contain a valid sign representation. User Action: You must determine how invalid characters are being stored in the variable. Some possible reasons why this can occur are as follows: a. The variable in question is a parameter in a CALL statement and the called routine treats the variable as an alphanumeric field. b. The variable in question participates in a REDEFINES operation with an alphanumeric variable. c. The variable is defined as an element of a record, and alphanumeric data is moved to a group item that contains that variable. If the invalid data is caused by numeric data-items that contain leading blank characters instead of leading zeros, recompile the program specifying /CONVERT=LEADING_BLANKS. 3 IO_NOT_MASS_STORAGE Open I-O on non-mass storage device Explanation: The program attempted to execute an OPEN statement for random or dynamic access on a file that is not a disk file. Non-disk files cannot perform random access. User Action: You must take the following actions: a. Check the program logic, and verify that the file being opened is the one you intended. b. Change the access mode to sequential, or move the file to a disk device. 3 KEY_COUNT_ERROR Attempting to open indexed file whose actual keys do not match those declared Explanation: The program specified more keys for a file than had been defined for that file. User Action: You must take the following actions: a. Check that the file being specified is the one you intended. b. Check the number of keys for the file using the DCL command DIRECTORY/FULL. c. Use the CONVERT utility to add key definitions to the file. 3 KEY_MATCH_ERROR Attempting to open indexed file whose actual keys do not match those declared Explanation: The program specified different datatype and key positions than had been defined for that file. User Action: You must take the following actions: a. Check that the file being specified is the one you intended. b. Check the type and position of keys using the DCL command ANALYZE/RMS. 3 LOCKED_FAILED Record locked by another user; not available Explanation: The system attempted to perform an operation on a record that was already locked by another file connector or program. User Action: You must take the following actions: a. In a file sharing environment, this condition is expected to occur from time to time. Add a declarative procedure to trap this error. b. If your program does not require sharing that file, remove the ALLOWING clause from the OPEN statement and the APPLY LOCK-HOLDING clause in the ENVIRONMENT DIVISION (if present). 3 LOCKED_OK Record locked by another user; available Explanation: While executing a START or READ statement with a REGARDLESS phrase, the system encountered a locked record. The record is available in the record area. User Action: In a file sharing environment, this condition is expected when using the REGADARDLESS phrase. Add a declarative procedure to handle this condition. 3 LOWERLENZERO FUNCTION LOWER-CASE argument length cannot be zero. Explanation: A group consisting solely of a variable-length table was used as an argument to LOWER-CASE and its current lowbound was 0. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 MODBOUNDS argument to FUNCTION MOD out of bounds. Explanation: The second argument to FUNCTION MOD cannot be zero. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 NESERRPER Nesting error for PERFORM Explanation: The last statement the program executed was a PERFORM statement whose range was exited in an order that violates the rules for nesting PERFORM statements in COBOL programs. PERFORM statement ranges must be exited in reverse order from the order in which they are activated. User Action: Check the program logic of the PERFORM range nesting to ensure that the program exits from nested PERFORM ranges in the reverse order in which they are activated. 3 NO_CURRENT No current record, no previous READ Explanation: The program executed a REWRITE or DELETE statement for a file in sequential access mode when there was no current record. The I-O operation immediately before the REWRITE or DELETE must be a READ statement. This rule applies to indexed files with duplicate primary keys that are opened in dynamic access mode. User Action: Check the program logic to ensure that no I-O statement executes between the READ and REWRITE or DELETE statements. 3 NO_NEXT_RECORD No next logical record exists Explanation: The program attempted a sequential READ after the first such READ failed with an end of file error, or after a failed START statement. User Action: Verify the program logic. If you expect that your program will attempt a sequential READ in one of these situations, add a declarative procedure to handle this condition. 3 NO_SPACE No file space on device Explanation: The OPEN statement failed because the device is full. User Action: You must take the following actions: a. Verify the device where the file resides. b. Delete unneeded files to free more space. 3 NOT_INPUT File not open, or incompatible open mode Explanation: The program attempted to execute a READ statement on a file connector that was not opened, or not opened in the correct mode. User Action: You must take the following actions: a. Verify the program logic, paying particular attention to the open mode. Consult the description of the valid open modes for the READ statement, based on file organization and access mode. Refer to the table under the OPEN statement in the COBOL Reference Manual for this information. b. Verify that the OPEN operation was successful. 3 NOT_IO File not open, or incompatible open mode Explanation: The program attempted to execute a REWRITE or a DELETE statement on a file connector that was not opened, or not opened in the correct mode. User Action: You must take the following actions: a. Verify the program logic, paying particular attention to the open mode. Consult the description of the valid open modes for the REWRITE or DELETE statement, based on file organization and access mode. Refer to the table under the OPEN statement in the COBOL Reference Manual for this information. b. Verify that the OPEN operation was successful. 3 NOT_LOCKED_IDX Previous indexed START or READ did not lock record Explanation: When your program executes a REWRITE or DELETE statement for a file in sequential access mode, the current record must be locked. This message indicates that, for an indexed file, this condition was not met. User Action: You must take the following actions: a. Verify that the previous START or READ statement that established the current record did not include an ALLOWING UPDATERS file sharing option. This option does not lock the record. b. Check the program logic to ensure that there are no UNLOCK statements that unlocked the current record. 3 NOT_LOCKED_REL Previous relative START or READ did not lock record Explanation: When your program executes a REWRITE or DELETE statement for a file in sequential access mode, the current record must be locked. This message indicates that, for a relative file, this condition was not met. User Action: You must take the following actions: a. Verify that the previous START or READ statement that established the current record did not include an ALLOWING UPDATERS file sharing option. This option does not lock the record. b. Check the program logic to ensure that there are no UNLOCK statements that unlocked the current record. 3 NOT_MASS_STORAGE Open on unknown or non-mass storage device Explanation: The specified device is not a valid device. User Action: You must take the following actions: a. Check the spelling of the filespec. b. If the spelling is correct, verify that any logicals used in the name are properly defined. c. Use the DCL command DIRECTORY to verify that the device exists. 3 NOT_OPEN File not open, or incompatible open mode Explanation: The program attempted to execute a CLOSE statement on a file connector that was not opened, or not opened in the correct mode. User Action: You must take the following actions: a. Verify the program logic, paying particular attention to the open mode. Consult the description of the valid open modes for the CLOSE statement, based on file organization and access mode. Refer to the table under the OPEN statement in the COBOL Reference Manual for this information. b. Verify that the OPEN operation was successful. c. If you expect that your program may attempt to close unopened files, add a declarative procedure to handle this condition. 3 NOT_OUTPUT File not open, or incompatible open mode Explanation: The program attempted to execute a WRITE statement on a file connector that was not opened, or not opened in the correct mode. User Action: You must take the following actions: a. Verify the program logic, paying particular attention to the open mode. Consult the description of the valid open modes for the WRITE statement, based on file organization and access mode. Refer to the table under the OPEN statement in the COBOL Reference Manual for this information. b. Verify that the OPEN operation was successful. 3 NUMVALARGINV argument to FUNCTION NUMVAL or NUMVAL-C is invalid. Explanation: The argument does not conform to an allowable format (see Reference Manual for format). User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 OPEN_ERROR Error during OPEN on file Explanation: The system produced an error when executing an OPEN statement. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the OPEN statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 OPEN_MFT Error during open of multifile tape Explanation: The system produced an error when attempting to open a file that is present on a multiple file tape. User Action: You must take the following actions: a. Check that the correct tape is in the tape drive. b. For files opened for input, check that the file indicated by its position exists on the tape. Use the DCL command DIRECTORY and count the files that are displayed. c. For files opened for output, verify that the file position specified in the APPLY clause makes the file the last one on the tape and that all previous files exist. 3 ORDLENONE the length of the argument to FUNCTION ORD is not one character Explanation: Function argument must be one charcter in length. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 PAGE_SIZE Invalid pagesize specified on file Explanation: The specified pagesize is zero. User Action: Change the pagesize to a non-zero value. 3 PERMANENT_ERROR Unknown permanent error Explanation: The system produced an unspecified error during an I-O operation. Under normal operation, this message should never appear. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the statement to fail. Please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 PRESVALBOUNDS argument to FUNCTION PRESENT-VALUE out of bounds. Explanation: The first argument to FUNCTION PRESENT-VALUE must be greater than -1. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 RANDOMBOUNDS argument to FUNCTION RANDOM out of bounds. Explanation: The argument to FUNCTION RANDOM must be greater than or equal to zero. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 READ_ERROR Error during READ on file Explanation: The system produced an error when attempting to read from a file. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the read operation to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 RECACTPER Recursize activation of PERFORM Explanation: The program attempted to execute a PERFORM statement that has the same end paragraph or section as a currently active PERFORM statement. Recursive activation of PERFORM statements violates the rules for nesting PERFORM statements in COBOL programs. PERFORM statements with the same end paragraph or section cannot be active at the same time. User Action: Check the program logic of the PERFORM statements to ensure that the program exits from the first PERFORM statement before attempting to execute a subsequent PERFORM statement with the same end paragraph or section. 3 REMBOUNDS argument to FUNCTION REM out of bounds. Explanation: The 2nd argument to FUNCTION REM cannot be zero. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 REVERSELENZERO FUNCTION REVERSE argument length cannot be zero. Explanation: A group consisting solely of a variable-length table was used as an argument to REVERSE and its current lowbound was 0. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 REWRITE_ERROR Error during REWRITE on file Explanation: The system produced an error when attempting to update a file. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the REWRITE statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 REWRITE_SIZE Attempt to rewrite a different record size Explanation: The record size specified for a REWRITE statement was less than the minimum or greater than the maximum record size specified for the file. User Action: Verify the program logic, paying particular attention to the variables used in OCCURS DEPENDING ON phrases. 3 SIZE_CHANGED Size of rewritten record changed Explanation: For a file with sequential file organization, the REWRITE statement must not change the record size. User Action: Verify the program logic, paying particular attention to the variables used in OCCURS DEPENDING ON phrases. 3 SORT_ERROR Error during SORT or MERGE on SD Explanation: The program produced an unknown error during a sort operation. User Action: Check the secondary status displayed with the error message. Consult the VMS documentation on SORT/MERGE for more information about specific SORT errors. 3 START_ERROR Error during START Explanation: The system produced an error while attempting to execute a START statement. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the START statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 SWITCH_FAIL SET external switch statement failed Explanation: The system produced an error when attempting to change the switch setting. Under normal operation, this error should not occur. User Action: Check to see that the logical name tables have not overflowed. If the problem is reproducible, please submit a problem report along with sample code demonstrating the problem. 3 UNDEF_EXP Attempting undefined exponentiations; Execution continues Explanation: The system produced a size error when attempting to perform an undefined exponentiation operation whose associated statement does not include a SIZE ERROR clause. User Action: Add an ON SIZE ERROR or a NOT ON SIZE ERROR clause to the statement in your program that causes the error. 3 UNLOCK_ERROR Error during UNLOCK Explanation: The system produced an error while executing an UNLOCK statement. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused in the UNLOCK statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 UNLOCK_FAILED UNLOCK on file that is not open Explanation: The program attemped to execute an UNLOCK statement on a file connector that was not open. User Action: Verify the program logic, paying particular attention to areas where the program opens and closes the specified file connector. 3 UPPERLENZERO FUNCTION UPPER-CASE argument length cannot be zero. Explanation: A group consisting solely of a variable-length table was used as an argument to UPPER-CASE and its current lowbound was 0. User Action: If this is not the desired result, modify the source program to ensure a valid argument or avoid the function with an invalid argument. 3 WRITE_ERROR Error during WRITE Explanation: The program produced an error while executing a WRITE statement. No more detailed information is available. User Action: Use the special symbol RMS-CURRENT-STS to see which RMS error caused the WRITE statement to fail. If the RMS condition is common, please submit a problem report suggesting that a better message be provided. Be sure to include the value of RMS-CURRENT-STS in your report. 3 WRITE_SIZE Attempt to write a different record size Explanation: The program attempted to write a record that was less than the minimum or greater than the maximum record size specified for the file. User Action: Verify the program logic, paying particular attention to the variables used in DEPENDING ON phrases. 2 Parameters {file-spec [/file-qualifier]}... Specifies one or more COBOL source programs to be compiled. If a file specification does not contain a file type, the compiler uses the default file type of COB. You can specify more than one input file but you must use separators. Each file is compiled separately when you separate the file specifications with a comma. Files separated by plus signs are concatenated in a single compilation. No wild card characters are allowed in the file specification. 2 Directives A directive is a structured comment that is interpreted by the compiler. All VSI COBOL directives begin with the charaters "*DC", where the asterisk (*) signals the beginning of the structured comment to the compiler. VSI COBOL provides directives for ALIGNMENT only. 3 ALIGNMENT Directives The syntax of the ALIGNMENT directives is as follows: *DC SET ALIGNMENT *DC SET NOALIGNMENT *DC END-SET ALIGNMENT You can use these ALIGNMENT directives to alter the current alignment for binary data by specifying new alignment information from within your source program. The SET ALIGNMENT directive specifies natural alignment. The SET NOALIGNMENT directive specifies OpenVMS VAX compatible alignment. The END-SET ALIGNMENT directive terminates the current SET ALIGNMENT (or SET NOALIGNMENT) directive. You can also nest these ALIGNMENT directives within a source program by specifying dirrerent alignments for a set of data items. For more information about the ALIGNMENT directives, see the online help on /ALIGNMENT and the COBOL User Manual. 2 Qualifiers This list includes the VSI COBOL command qualifiers and options for the COBOL command. /ALIGNMENT /ALIGNMENT[=[NO]PADDING] /NOALIGNMENT (D) Specifies the alignment of binary data items within record structures. Specifying /ALIGNMENT uses OpenVMS Alpha and I64 data alignment to increase performance and conformity to the OpenVMS Alpha and I64 calling standards. The /ALIGNMENT qualifier specifies natural alignment; it aligns all COMP, COMP-1, COMP-2, INDEX, and POINTER data along natural boundaries. A natural boundary is the smallest boundary at which data can be aligned without crossing the next boundary for that type. For example, longword is the natural boundary for four byte integers. Specifying /ALIGNMENT is equivalent to using the SYNCHRONIZED clause or using ALIGNMENT compiler directives. (Refer to the COBOL Reference Manual for information about the SYNCHRONIZED clause.) The /ALIGNMENT=PADDING option indicates Alpha and I64 natural alignment and padding of records according to the OpenVMS Alpha and I64 calling standard. The default, /NOALIGNMENT, specifies OpenVMS VAX compatible data alignment. This qualifier aligns data on byte boundaries for compatibility with HP COBOL for OpenVMS VAX and other OpenVMS VAX languages. The alignment you specify remains in effect throughout a given compilation, except as modified by ALIGNMENT compiler directives. For more information about the behavior of the /ALIGNMENT qualifier and ALIGNMENT compiler directives, refer to the Directives section (in this online HELP facility) and the COBOL User Manual. /ANALYSIS_DATA /ANALYSIS_DATA[=file-spec] /NOANALYSIS_DATA (D) Indicates whether an ANA file is created during compilation. If you have the Source Code Analyzer (SCA) installed on your system, you can use the /ANALYSIS_DATA qualifier to generate an output file of source-code analysis information. The source-code information file generated by the /ANALYSIS_DATA qualifier has a default file name of the primary source file and a default file type of ANA. SCA uses the ANA file to display information about program symbols and source files. The default, /NOANALYSIS_DATA, does not generate an ANA file. For more information about SCA, see the Guide to Source Code Analyzer for OpenVMS Systems. /ANSI_FORMAT /ANSI_FORMAT /NOANSI_FORMAT (D) Indicates that the source program is in conventional ANSI format. The compiler then expects 80-character card image records with optional sequence numbers in character positions 1 through 6, indicators in position 7, Area A beginning in position 8, Area B beginning in position 12, and the identification area in positions 73 through 80. The default, /NOANSI_FORMAT, indicates that the source program is in VSI COBOL terminal format, where Area A begins in position 1, Area B begins in position 5, and the source program records do not have line numbers. /ARCHITECTURE /ARCHITECTURE=option /ARCHITECTURE=GENERIC (D) Determines the type of Alpha chip code that will be generated for a particular program. The /ARCHITECTURE qualifier uses the same options (keywords) as the /OPTIMIZE=TUNE qualifier. Whereas the /OPTIMIZE=TUNE qualifier is primarily used by certain higher-level optimizations for instruction scheduling purposes, the /ARCHITECTURE qualifier determines the type of code instructions generated for the program unit being compiled. OpenVMS Alpha V7.1 and subsequent releases provide an operating system kernel that includes an instruction emulator. This emulator allows new instructions, not implemented on the host processor chip, to execute and produce correct results. Applications using emulated instructions will run correctly, but may incur significant software emulation overhead at runtime. All Alpha processors implement a core set of instructions. Certain Alpha processor versions include additional instruction extensions. The following /ARCHITECTURE options are supported: GENERIC Generates code that is appropriate for all Alpha processor generations. This is the default. Programs compiled with the GENERIC option run all implementations of the Alpha architecture without any instruction emulation overhead. HOST Generates code for the processor generation in use on the system being used for compilation. Programs compiled with this option on other implementations of the Alpha architecture may encounter instruction emulation overhead. EV4 Generates code for the 21064, 21064A, 21066, and 21068 implementations of the Alpha architecture. Programs compiled with the EV4 option run without instruction emulation overhead on all Alpha processors. EV5 Generates code for some 21164 chip implementations of the Alpha architecture that use only the base set of Alpha instructions (no extensions). Programs compiled with the EV5 option run without instruction emulation overhead on all Alpha processors. EV56 Generates code for some 21164 chip implementations that use the byte and word manipulation instruction extensions of the Alpha architecture. Programs compiled with the EV56 option may incur emulation overhead on EV4 and EV5 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. EV6 Generates code for the 21264 chip implementation that uses the following extensions to the base Alpha instruction set: BWX (Byte/Word manipulation) and MAX (Multimedia) instructions, and square root and FIX (Floating-point convert) instructions. Programs compiled with the EV6 option may incur emulation overhead on EV4, EV5, EV56, and PCA56 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. EV67, EV68 Generates code for the 21264A chip implementation that uses the following extensions to the base Alpha instruction set: BWX (Byte/Word manipulation) and MAX (Multimedia) instructions, square root and FIX (Floating-point convert) instructions, and CIX (Count) instructions. Programs compiled with the EV67 or EV68 options may incur emulation overhead on EV4, EV5, EV56, EV6, and PCA56 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. PCA56 Generates code for the 21164PC chip implementation that uses the byte and word manipulation instruction extensions and multimedia instruction extensions of the Alpha architecture. Programs compiled with the PCA56 option may incur emulation overhead on EV4, EV5, and EV56 processors, but still run correctly on OpenVMS Alpha V7.1 (or later) systems. /ARCHITECTURE is currently ignored on OpenVMS I64. /ARITHMETIC /ARITHMETIC={NATIVE,STANDARD} Specifies whether native arithmetic or standard arithmetic is used to evaluate arithmetic operations and statements. NATIVE Selects native arithmetic. Arithmetic operations will produce results that are reasonably compatible with releases of HP COBOL for OpenVMS Alpha prior to V2.7 and also with HP COBOL for OpenVMS VAX. STANDARD Selects standard arithmetic. Most common arithmetic operations will produce results that are predictable, reasonable, and portable. In this context, portable means that the results will be identical from implementation to implementation. Choosing the STANDARD option forces /MATH_INTERMEDIATE=CIT4. The default is /ARITHMETIC=NATIVE. /AUDIT /AUDIT[=("string",...)] /NOAUDIT (D) Controls whether user-supplied text is included in a CDD/Repository history list entry if a compilation accesses the dictionary. You can specify from 1 to 64 strings with the /AUDIT qualifier. If you specify more than one string, separate them with commas and enclose the list in parentheses. If you specify /AUDIT without a string, the compiler creates standard history list entries with no additional text in the dictionary for COPY FROM DICTIONARY records and for information put in the dictionary as a result of specifying the /DEPENDENCY_DATA qualifier. Only one user-supplied string is included in these entries, even though up to 64 can be specified. The default, /NOAUDIT, suppresses the creation of history list entries. /CHECK /CHECK[=(option[,...])] /NOCHECK (D) Specifies conditions to be checked at execution time. Controls whether the system checks the validity of numeric digits or PERFORM statements, indexes, subscripts, reference modification, and the OCCURS DEPENDING ON depending item for specific run-time errors. If you specify a qualifier option, the default options do not change unless they are individually modified. You can select one or more of the following options: [NO]PERFORM Verifies that PERFORM statement rules are met. The default is NOPERFORM. [NO]BOUNDS Verifies the range of subscripts and reference modifiers. The default is NOBOUNDS. [NO]DECIMAL Validates numeric digits when using display numeric items in a numeric context. The default is NODECIMAL. [NO]DUPLICATE_KEYS Verifies that the duplicate key specification for indexed file keys in the source program matches the duplicate key specification in the physical file. The default is NODUPLICATE_KEYS. ALL Same as /CHECK without any options. NONE Same as /NOCHECK. Default if /CHECK is not used. Specifying /CHECK=PERFORM controls whether the system checks PERFORM statements. Incorrect use of PERFORM statements can produce unpredictable results and, when used with the PERFORM option, causes the system to generate a run-time message and abort the program. Specifying /CHECK=BOUNDS controls whether the system checks the range of subscripts, indexes, and the depending item in the DEPENDING ON phrase of the OCCURS clause. The system generates a run-time message and aborts the program if it detects one of these errors: If DEPENDING ON is not specified and a subscript or index is greater than the upper bound or less than or equal to zero If DEPENDING ON is specified and a subscript or index is greater than the depending item or less than or equal to zero If a depending item is less than the low bound or greater than the upper bound, and either a subscripted or indexed item references a table or a group containing the table is referenced as a sending item Specifying /CHECK=DECIMAL controls whether the system checks for numeric characters when using numeric display items in a numeric context and generates an error if any digit is invalid (not numeric). Specify /CHECK=DECIMAL to validate data produced by other systems that might use a different internal representation for numeric data. You can also use this qualifier option to detect logic errors in programs that result in text data being moved to numeric data items. Specifying /CHECK=DECIMAL produces extra instructions to perform these checks, which may result in slightly larger images and slightly longer execution times than the /CHECK=NODECIMAL qualifier option. The default, /NOCHECK, is the equivalent of /CHECK=NONE. Specify /CHECK with the /NOOPTIMIZE qualifier, as optimization can make finding error found by /CHECK more difficult. /CONDITIONALS /CONDITIONALS[=(character,...)] /NOCONDITIONALS (D) Controls whether the conditional compilation lines in a source program are compiled or treated as comments. Specifying /CONDITIONALS results in all conditional compilation lines being compiled. Specifying /CONDITIONALS=(selector,...), where a selector is a list of one or more characters from A to Z, results in the selected conditional compilation lines being compiled. If you specify more than one selector, separate them with commas and enclose the list in parentheses. The default, /NOCONDITIONALS, results in all conditional compilation lines being treated as comments during compilation. /CONVERT /CONVERT[=(option[,...])] /NOCONVERT (D) Instructs the compiler to perform certain conversions to your data. You can select the following option: [NO]LEADING_BLANKS Controls whether or not the compiler changes blanks to zeros in numeric display items. Specifying /CONVERT=LEADING_BLANKS instructs the compiler to check for and change blanks to zeros in numeric display items. Specify /CONVERT=LEADING_BLANKS, if you are using a non-VAX system, to convert your existing COBOL programs to run on an OpenVMS Alpha or I64 system by changing blanks in the data to zeros at run time. Specifying /CONVERT=LEADING_BLANKS produces extra instructions to perform these data conversions, which may result in slightly larger images and slightly longer execution times than the /NOCONVERT qualifier. The default is /NOCONVERT. /COPY_LIST /COPY_LIST /NOCOPY_LIST (D) Controls whether source statements included by COPY statements are printed in the listing file. The /COPY_LIST qualifier has no effect unless you also specify the /LIST qualifier. The default, /NOCOPY_LIST, suppresses the listing of text copied from library files; only the COPY statement appears in the listing file. /CROSS_REFERENCE /CROSS_REFERENCE[=(option[,...])] /NOCROSS_REFERENCE (D) Controls whether the source listing file includes a cross-reference listing. The /CROSS_REFERENCE qualifier has no effect unless you also specify the /LIST qualifier. You can select one or both of the following options: ALPHABETICAL The compiler sorts user-defined names in alphabetical order and lists them with the source program line numbers on which they appear. /CROSS_REFERENCE=ALPHABETICAL is the equivalent of /CROSS_REFERENCE. DECLARED Produces a listing of user-defined names in order of declaration. If you specify /CROSS_REFERENCE=(ALPHABETICAL, DECLARED), the compiler produces a listing of user-defined names in both alphabetical and declared order in the same compilation. In the listing file, the pound sign ( ) indicates the source line containing the definition of the user-defined name, while the asterisk (*) indicates a line on which the associated data item is modified. The default, /NOCROSS_REFERENCE, suppresses the cross-reference listing. /DEBUG /DEBUG[=(option[,...])] /NODEBUG Controls whether the compiler produces traceback and local symbol table information for the VMS Debugger. The /DEBUG qualifier allows you to refer to data items by data name, and to Procedure Division locations by line number, paragraph name, and section name. You can also view source lines from source files and files included by simple COPY statements. The debugger cannot reference source lines from CDD/Repository or any line in which text has been replaced. If you specify a qualifier option, the default options do not change unless they are individually modified. You can select one or more of the following options: [NO]SYMBOLS Produces a local symbol table that allows you to refer to data items by data name and to source lines by line number. The default is NOSYMBOLS. [NO]TRACEBACK Produces traceback information only to provide the debugger with compiler-generated line numbers and names. The default is TRACEBACK. ALL Provides traceback and local symbol table information. /DEBUG=ALL is the equivalent of /DEBUG or /DEBUG=(TRACEBACK,SYMBOLS). NONE Omits traceback and local symbol table information. /DEBUG=NONE is the equivalent of /NODEBUG. The default is /DEBUG=TRACEBACK. /DEPENDENCY_DATA /DEPENDENCY_DATA /NODEPENDENCY_DATA (D) Controls whether or not a compiled module entity is stored in CDD/Repository. If you have CDD/REpository installed on your system, you can use the /DEPENDENCY_DATA qualifier to store CDD/Repository relationship information in the dictionary. The information generated will correlate the VSI COBOL program with: a. The object file created by the compilation b. CDD/Repository entities specified in COPY FROM DICTIONARY statements c. CDD/Repository entities explicitly referenced in the RECORD DEPENDENCY statements The default, /NODEPENDENCY_DATA, indicates that a compiled module entity and CDD/Repository relationships will not be recorded in CDD/Repository. /DIAGNOSTICS /DIAGNOSTICS[=file-spec] /NODIAGNOSTICS (D) Creates a diagnostic file containing compiler messages and diagnostic information. The diagnostic file is reserved for use by HP. The Language-Sensitive Editor (LSE) uses the diagnostic file to display diagnostic messages and to position the cursor on the line and column where a source error exists. The default file type for a diagnostic file is DIA. The default, /NODIAGNOSTICS, suppresses the creation of a diagnostic file. /DISPLAY_FORMATTED /DISPLAY_FORMATTED /NODISPLAY_FORMATTED (D) In COBOL DISPLAY statements, supports the WITH CONVERSION syntax implicitly for numeric data fields which contain non-printing values. The compile-time qualifier /DISPLAY_FORMATTED must be explicitly present in the compilation command line to cause the conversion of non-printing numeric values to human-readable printing values when they are displayed at the user's terminal display unit. The default, /NODISPLAY_FORMATTED, retains the behaviour of not converting non-printing numeric values when displaying them to the user's terminal display. /FIPS /FIPS=74 /NOFIPS (D) Supports the Federal Information Processing Standards Publication 21--1 (FIPS-PUB 21--1), issued by the U.S. National Bureau of Standards, interpretation of file status. FIPS-PUB 21--1 specifies that a file status of 10 be returned when reporting at end conditions. The /FIPS=74 qualifier returns a file status of 10 when reporting at end conditions. The following table compares the file status values that are returned when you use or do not use the /FIPS=74 qualifier. Note that these at end file status values apply to any file organization accessed sequentially. __________________________________________________________________ FILE STATUS VALUES __________________________________________________________________ /FIPS=74 /NOFIPS __________________________________________________________________ The file has no next logical record. 10 13 An optional file was not present. 10 15 The program did not establish a valid 10 16 next record. __________________________________________________________________ The default, /NOFIPS, ensures version to version compatibility for COBOL. The /FIPS=74 and /NOFIPS qualifier only apply when you also specify /STANDARD=V3. /FLAGGER /FLAGGER[(=option,...)] /NOFLAGGER (D) Allows you to specify a FIPS level of COBOL syntax, in accordance with the Federal Information Processing Standards Publication 21-3 (FIPS-PUB 21-3) issued by the U.S. National Bureau of Standards, beyond which the compiler generates informational messages. To receive these informational messages, you must also specify /WARNINGS=ALL or /WARNINGS=INFORMATIONAL. Use the /FLAGGER qualifier when you know that your target system's compiler has a low level of FIPS syntax support. The following table shows the required functional processing modules and the optional modules supported by VSI COBOL. The table also shows the COBOL subsets that correspond to the FIPS levels of Minimum, Intermediate, and High. The levels numbers (0, 1, and 2) correspond to the levels indicated in the 1985 ANSI COBOL standard. __________________________________________________________________ RELATIONSHIP AMONG VSI COBOL MODULES, SUBSETS, AND LEVELS __________________________________________________________________ COBOL Subsets ________________________________________ Minimum Intermediate High __________________________________________________________________ Required Modules __________________________________________________________________ Nucleus 1 1 2 Sequential I-O 1 1 2 Relative I-O 0 1 2 Indexed I-O 0 1 2 Interprogram Communication 1 1 2 Sort-merge 0 1 1 Source Text Manipulation 0 1 2 __________________________________________________________________ Optional Modules __________________________________________________________________ Report Writer --, or 1 --, or 1 --, or 1 Segmentation --, 1, or 2 --, 1, or 2 --, 1, or 2 __________________________________________________________________ Table Legend: 0---Null level (the module is not included in the subset) 1---First nonnull level 2---Second nonnull level Dash---Optional __________________________________________________________________ When you use the /FLAGGER qualifier with its options, you receive informational messages for syntax in the source program as follows: a. Not within the FIPS validation level you selected b. Within the optional module you selected c. For obsolete language elements as defined by the ANSI 1985 standard for the COBOL language d. For HP extensions to the COBOL language You can select one or more of the following options: HIGH_FIPS Flags language constructs that are above the FIPS high validation level, such as HP extensions to ANSI COBOL. INTERMEDIATE_FIPS Flags language constructs that are above the FIPS intermediate validation level, such as language constructs that are within the FIPS high validation level or HP extensions to ANSI COBOL. MINIMUM_FIPS Flags language constructs that are above the FIPS minimum validation level, such as language constructs that are within the FIPS high and intermediate validation levels or HP extensions to ANSI COBOL. OBSOLETE Flags language constructs that the ANSI 1985 COBOL Standard identifies as obsolete. If a language construct is within the selected FIPS validation level or optional module and is also on the obsolete list, the compiler generates only the obsolete informational message. OPTIONAL_FIPS Flags language constructs that are within FIPS optional modules, including Report Writer and Segmentation. REPORT_WRITER A subset of OPTIONAL_FIPS that flags language constructs that are within the FIPS optional module Report Writer. SEGMENTATION A subset of OPTIONAL_FIPS that flags language constructs that are within the FIPS optional module Segmentation. SEGMENTATION_1 A subset of OPTIONAL_FIPS that flags language constructs that are above the level 1 of the FIPS optional module Segmentation. You can use any combination of qualifier options. If you specify more than one validation level, the compiler uses the lowest level. If you use the /FLAGGER qualifier without specifying a FIPS level and with another option, the compiler assumes /FLAGGER=HIGH_FIPS. You cannot specify the /FLAGGER qualifier with the /STANDARD=V3 qualifier. The default is /NOFLAGGER. For additional information about the required and optional modules for the COBOL language, refer to the American National Standard Programming Language - COBOL, ANSI X3.23-1895, ISO 1989-1985. For more information about the FIPS validation levels, see Federal Information Processing Standards Publication 21-3. /FLOAT /FLOAT=[option] Specifies the floating-point data format to be used in memory for single and double precision data items. You can use the /FLOAT qualifier at compile time to specify either VAX F_floating or IEEE S_floating formats for single precision data items or VAX D_floating or VAX G_floating or IEEE T_floating formats for double precision data items. You cannot mix VAX and IEEE formats in the same compilation unit. You can select one of the following options: D_FLOAT Specifies that the memory format for COMP-1 data is VAX F_floating and for COMP-2 data is VAX D_floating. The default is D_FLOAT on OpenVMS Alpha. Note that D_floating on Alpha and I64 is not 100% compatible with D_floating on VAX. G_FLOAT Specifies that the memory format for COMP-1 data is VAX F_floating and for COMP-2 data is VAX G_floating. Note that G_floating on I64 is not 100% compatible with G_floating on Alpha and VAX. IEEE_FLOAT Specifies that the memory format for COMP-1 data is IEEE S_floating and for COMP-2 data is IEEE T_floating. The default is IEEE_FLOAT on OpenVMS I64. The IEEE standard for binary floating-point arithmetic, ANSI/IEEE 754-1985, defines four floating-point formats in two groups, basic and extended, each group having two widths, single and double. The Alpha architecture supports the basic single and double formats. Refer to the Alpha Architecture Reference Manual for more information about using floating-point data types with the Alpha architecture. Because the Alpha and I64 architectures are IEEE-compliant, you can run existing COBOL programs containing IEEE floating-point data formats with VSI COBOL. Specifying /FLOAT without an option is equivalent to specifying /FLOAT=D_FLOAT on OpenVMS Alpha and /FLOAT=IEEE_FLOAT on OpenVMS I64. /GRANULARITY /GRANULARITY[=option ] Specifies the minimum size of a memory access. Use this qualifier if different processes sharing memory attempt to update different parts of the same aligned quadword concurrently. The option can be one of the following: o BYTE - Used if concurrent processes sharing memory may be updating different bytes within the same quadword. o LONG - Used if concurrent processes sharing memory may be updating different longwords within the same quadword. o QUAD - (default) Used for best performance if you are sure that no concurrent updates will occur within the same aligned quadword. /INCLUDE /INCLUDE=(pathname[,...]) /NOINCLUDE (D) Provides an additional level of search for non-dictionary COPY files whose names do not include a directory component. Each pathname argument can be either a logical name or a legal directory specification. The compiler first searches for copy files in the current default directory. If the file is not found, each "pathname" location is searched in the order of specification on the command line. The first file located that satisfies the COPY statement is used and the search terminates. /NOINCLUDE, which is the default, means to only search for files in the current default directory. This option applies to .LIB files or .TLB files depending on the type of COPY statement used. /LIST /LIST[=file-spec] /NOLIST Controls whether the compiler produces an output listing file. When you specify /LIST, you can control the defaults applied to the output file specification by your placement of the qualifier in the command. The listing file always contains a listing of the source program. Other portions of the listing file are optionally produced under the control of the /MACHINE_CODE, /MAP, and /CROSS_REFERENCE qualifiers. The /LIST qualifier is required when you want to use the /CROSS_REFERENCE, /COPY_LIST, /FLAGGER, /MACHINE_CODE, or /MAP qualifiers. In batch mode, /LIST, the default, causes the compiler to create an output listing file with the same file name as the input source file and with a default file type of LIS. In interactive mode, /NOLIST, the default, suppresses the creation of a listing file. /MACHINE_CODE /MACHINE_CODE /NOMACHINE_CODE (D) Controls whether the listing file contains a list of compiler generated machine code. The /MACHINE_CODE qualifier has no effect unless you also specify the /LIST qualifier. The default, /NOMACHINE_CODE, suppresses compiler generated machine code in the listing file. If you specify the /MACHINE_CODE qualifier with the /OPTIMIZE qualifier, the machine code listing may not reflect the actual code executed for a given statement nor the order of execution. /MAP /MAP[=option] /NOMAP (D) Controls whether the compiler produces the following maps in the listing file: a. data names, procedure names, file names, and their attributes b. external references such as user-called routines or Run-Time Library routines You can control the format of the data name, procedure name, and file name maps in the listing file by specifying one or both of the following options: ALPHABETICAL Produces an alphabetical list of map items /MAP=ALPHABETICAL is the equivalent of /MAP. DECLARED Produces a list of map items in the order in which they were declared If you specify /MAP=(ALPHABETICAL,DECLARED), the compiler produces both alphabetical and declared map listings. The /MAP qualifier has no effect unless you also specify the /LIST qualifier. The default, /NOMAP, suppresses the creation of maps in the listing file. /MATH_INTERMEDIATE /MATH_INTERMEDIATE[={FLOAT,CIT3,CIT4}] Specifies the intermediate data type to be used when the result of an arithmetic operation can not be represented exactly. FLOAT Selects double-precision floating-point for the intermediate data type. Intermediate values are truncated to the most significant 53 bits, providing approximately 15 decimal digits of precision. CIT3 Selects COBOL Intermediate Temporary (design 3) for the intermediate data type. Intermediate values are truncated to the most significant 18 decimal digits. CIT4 Selects COBOL Intermediate Temporary (design 4) for the intermediate data type. Intermediate values are truncated to the most significant 32 decimal digits. The default is /MATH_INTERMEDIATE=FLOAT. /NAMES /NAMES[(=option)] /NAMES=UPPER (D) Controls whether the compiler translates external names (program-id's,literal entry-names in CALL statements, external data items) to uppercase, lowercase or leaves it unchanged. AS_IS Causes VSI COBOL not to change the case of literal entry-names for CALL statements. The AS_IS option has no effect on other external datanames or program-id names. VSI COBOL does not support mixed-case of external data names or program-id names. However, specifying the AS_IS option may be useful for calling non-Cobol routines. When AS_IS is specified, external datanames and program-id's are treated as if UPPER has been specified. LOWER Causes VSI COBOL to force all external names (program-id's, literal entry-names in CALL statements, external data items) to be lowercase. UPPER Causes VSI COBOL to force all external names (program-id's, literal entry-names in CALL statements, external data items) to be uppercase. This is the default. The default is /NAMES=UPPER. /NATIONALITY /NATIONALITY[(=option)] /NATIONALITY=US (D) Controls whether national language features are selected. US The default currency sign and symbol are the Dollar sign and Japanese language support features are disabled. JAPAN The default currency sign and symbol are the Yen sign and Japanese language support features are enabled. /NODIAGNOSTICS and /NOANALYSIS_DATA are specified implicitly. The specific features enabled include: . Yen currency-sign . National character user-defined-words . National data items (PIC N) . National literal (N"") The default is /NATIONALITY=US. /OBJECT /OBJECT[=file-spec] (D) /NOOBJECT Controls whether the compiler produces an object file. By default, the compiler produces an object file with the same file name as the input file and a default file type of OBJ. However, you can define a different file name or a different file type by specifying /OBJECT=file-spec. Specify /NOOBJECT to speed up compilations during program development and when you want to check syntax. /OPTIMIZE /OPTIMIZE[=LEVEL=n] /OPTIMIZE=TUNE=option /OPTIMIZE=LEVEL=4 (D) /OPTIMIZE=TUNE=GENERIC (D) /NOOPTIMIZE Controls how the compiler produces optimized code. The default is /OPTIMIZE, which is the same as /OPTIMIZE=(LEVEL=4, TUNE=GENERIC). For a debugging session, use the negative form (/NOOPTIMIZE or /OPTIMIZE=LEVEL=0) to ensure that the debugger has sufficient information to locate errors in the source program. In most cases, using /OPTIMIZE will make the program execute faster. As a side effect of getting the fastest execution speeds, using /OPTIMIZE can produce larger object modules and longer compile times than /NOOPTIMIZE. LEVEL=n You can select one of the following levels: 0 Has the same effect as /NOOPTIMIZE. All optimizations are turned off. 1 Has some optimizations (such as instruction scheduling). 2 Adds more optimizations (such as loop unrolling and split lifetime analysis) to those in level 1. 3 Adds more optimizations (such as decimal shadowing) to those in level 2. All optimizations are turned on. 4 Is identical to level 3. /OPTIMIZE=LEVEL=4 is the equivalent of /OPTIMIZE or not specifying /OPTIMIZE. Specify /NOOPTIMIZE if you specify /DEBUG when compiling a program. /NOOPTIMIZE expedites and simplifies your debugging session by putting the machine code in the same order as the lines in the source program. Optimizations can cause unexpected and confusing behavior in a debugging session. For more information about debugging your program with the /NOOPTIMIZE qualifier, see the COBOL User Manual. Specify /NOOPTIMIZE if you specify /MACHINE_CODE when compiling a program to ensure that the machine code listing reflects the actual code executed for a given statement as well as the order of execution. The /NOOPTIMIZE qualifier is also useful in conjunction with /CHECK, as optimization can make checking more difficult. Specifying /OPTIMIZE, the default, usually makes programs run faster. However, using /OPTIMIZE produces extra instructions to perform the optimization, which may result in larger object modules and longer compile times than the /NOOPTIMIZE qualifier. To speed compilations during program development, you may want to compile with the /NOOBJECT qualifier when you want to check syntax, with /NOOPTIMIZE when you check for correct execution, and later with /OPTIMIZE for your final check. For more information about optimizing your program with the /OPTIMIZE qualifier, see the COBOL User Manual. TUNE=keyword Specifies the kind of optimized code to be generated. The keyword can be any of the following: Keyword Meaning ------- ------- GENERIC Generates and schedules code that will execute well for both generations of Alpha processors. This provides generally efficient code for those cases where both processor generations are likely to be used. HOST Generates and schedules code optimized for the processor generation in use on the system being used for compilation. EV4 Generates and schedules code optimized for the 21064, 21064A, 21066, and 21068 implementations of the Alpha chip. EV5 Generates and schedules code optimized for the 21164 implementation of the Alpha chip. This processor generation is faster than EV4. EV56 Generates code for some 21164 chip implementations that use the byte and word manipulation instruction extensions of the Alpha architecture. Running programs compiled with the EV56 keyword may incur emulation overhead on EV4 and EV5 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. EV6 Generates and schedules code for the 21264 chip implementation that uses the following extensions to the base Alpha instruction set: BWX (Byte/Word manipulation) and MAX (Multimedia) instructions, square root and FIX (Floating-point convert) instructions. Running programs compiled with the EV6 keyword may incur emulation overhead on EV4, EV5, EV56, and PCA56 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. EV67,EV68 Generates and schedules code for the 21264A chip implementation that uses the following extensions to the base Alpha instruction set: BWX (Byte/Word manipulation) and MAX (Multimedia) instructions, square root and FIX (Floating-point convert) instructions, and CIX (Count) instructions. Running programs compiled with the EV67 or EV68 keywords may incur emulation overhead on EV4, EV5, EV56, EV6, and PCA56 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. PCA56 Generates code for the 21164PC chip implementation that uses the byte and word manipulation instruction extensions and multimedia instruction extensions of the Alpha architecture. Running programs compiled with the PCA56 keyword may incur emulation overhead on EV4, EV5, and EV56 processors, but will still run correctly on OpenVMS Alpha V7.1 (or later) systems. /OPTIMIZE=TUNE is currently ignored on OpenVMS I64. /RESERVED_WORDS /RESERVED_WORDS[=(option[,...])] /RESERVED_WORDS=XOPEN (D) Controls whether the compiler recognizes certain COBOL words as reserved words. You can select the following option: [NO]XOPEN Controls whether or not the compiler recognizes reserved words defined by the COBOL X/Open Portability Guide. Use /RESERVED_WORDS=NOXOPEN if your program uses one or more of the X/Open reserved words as an identifier. The default is /RESERVED_WORDS=XOPEN. The X/Open reserved words are as follows: AUTO FULL BACKGROUND-COLOR HIGHLIGHT BELL LOWLIGHT BLINK REQUIRED EOL RETURN-CODE EOS REVERSE-VIDEO ERASE SCREEN FOREGROUND-COLOR SECURE UNDERLINE [NO]FOREIGN_EXTENSIONS Controls whether or not the compiler recognizes reserved words used by foreign extensions (language constructs that are not part of HP COBOL). Use /RESERVED_WORDS=FOREIGN_EXTENSIONS if you want the compiler to output specific diagnostics of foreign extensions to assist you in porting to VSI COBOL from other COBOL dialects. Do not use this option if your program uses any of the foreign_extensions reserved words as user-defined words. The reserved words that are recognized for foreign_extensions are: ADDRESS OTHERWISE CHANGED PASSWORD CORE-INDEX POSITIONING DBCS RECORDING DISP RECORD-OVERFLOW DISPLAY-1 RELOAD EJECT REMARKS ENTRY REORG-CRITERIA EXAMINE RETURNING EXHIBIT SERVICE GOBACK SKIP1 ID SKIP2 KANJI SKIP3 NAMED TRACE NOTE TRANSFORM [NO]200X Controls whether or not the compiler recognizes selected reserved words defined by the ANSI-200x draft standard. Use /RESERVED_WORDS=NO200X if your program uses one or more of these reserved words as an identifier. The default is /RESERVED_WORDS=NO200X. The selected ANSI-200x draft standard reserved words are as follows: BINARY-CHAR FLOAT-LONG BINARY-DOUBLE FLOAT-SHORT BINARY-LONG OPTIONS BINARY-SHORT SIGNED COL SYMBOL FLOAT-EXTENDED UNSIGNED /SEPARATE_COMPILATION /SEPARATE_COMPILATION /NOSEPARATE_COMPILATION (D) Specifies that a source file that contains multiple separately-compiled programs (SCPs) should be compiled into an object file that consists of a concatenation of modules, each containing a single procedure. This object may be inserted into an object library from which the linker can extract the procedures that are specifically needed. The default, /NOSEPARATE_COMPILATION, specifies that such a program should be compiled as a single unit, producing an object file that consists of one module with multiple embedded procedures. If this object is inserted into an object library and any part of a module must be loaded, the linker must extract the entire object. /SEQUENCE_CHECK /SEQUENCE_CHECK /NOSEQUENCE_CHECK (D) Controls whether the compiler produces a sequence check on the line numbers in columns 1 through 6 of the source program. Source programs written in terminal format always pass the sequence check. The default, /NOSEQUENCE_CHECK, suppresses sequence checking. /STANDARD /STANDARD[(=option,...)] /STANDARD=85 (D) Controls whether the compiler generates code according to either the ANSI 1974 or 1985 COBOL standard and produces informational messages associated with specific language features. To receive these informational messages, you must also specify /WARNINGS=ALL or /WARNINGS=INFORMATIONAL. You can select one or more of the following options: 85 Produces code according to the 1985 ANSI standard for certain constructs. The default is /STANDARD=85. [NO]V3 Produces code in the manner of version 3.4 of VAX COBOL in specific instances, and issues informational messages for language constructs that would cause different run-time results if /STANDARD=85 had been specified. The default is NOV3. [NO]SYNTAX Produces informational diagnostics on language features that point out HP extensions to the ANSI 1985 COBOL Standard. The default is NOSYNTAX. [NO]XOPEN Produces code for the ASSIGN clause and default file-sharing behavior in the manner of the X/Open CAE specification for the COBOL language. The default is NOXOPEN. [NO]MIA Issue informational diagnostics for the language elements which do not conform to the MIA (Multivendor Integration Architecture). The default is NOMIA. VSI COBOL is based on the ANSI 1985 COBOL standard. As such, VSI COBOL provides full support for the /STANDARD=85 qualifier option as well as support for some features of the /STANDARD=V3 qualifier option that were available with VAX COBOL Version 4.0 and higher. For information about the HP COBOL for OpenVMS VAX implementation of the /STANDARD=V3 qualifier option, see the COBOL User Manual. When you specify /STANDARD=V3 in the following specific instances, VSI COBOL exhibits behavior that is consistent with the ANSI 1985 COBOL standard: . When evaluating subscripts in STRING, UNSTRING, INSPECT (Format 3), and the REMAINDER phrase of the DIVIDE statement. . When evaluating reference modification in STRING, UNSTRING, and INSPECT (Format 3) statements. . When evaluating the order of identifiers in some PERFORM (Format 4) statements. . When interpreting PIC P items in some move and comparison operations. . When determining the size of variable-length tables in some MOVE statements. When you specify /STANDARD=V3 in the following four specific instances, VSI COBOL exhibits behavior that is identical to the VAX COBOL Version 4.0 and higher behavior, when specifying /STANDARD=V3: a. EXIT PROGRAM statement in a main program If you specify /STANDARD=V3, the compiler treats an EXIT PROGRAM statement as a return in both main programs and subprograms. Specify /STANDARD=85 to bypass an EXIT PROGRAM statement in the body of a main program and execute the statements following the EXIT PROGRAM statement. If the program is a subprogram, the EXIT PROGRAM statement acts as a return to the program that called the subprogram. b. I-O file status values If you specify /STANDARD=V3, you receive the file status values listed in the left-hand column, labeled V3. If you specify /STANDARD=85, you receive the file status values listed in the right-hand column, labeled 85. The following table explains the I-O error conditions and lists the corresponding file status values for the /STANDARD qualifier using the V3 and 85 options. __________________________________________________________________ I-O File Status Values for the /STANDARD Qualifier __________________________________________________________________ I-O Error Condition Status Value ________________________ V3 85 __________________________________________________________________ READ successful -- detected alternate duplicate key. 00 02 READ successful -- record shorter than fixed file attribute. 00 04 CLOSE reel/unit attempted on nonreel/unit device. 00 07 READ fails -- relative key digits exceed relative key. 00 14 WRITE fails -- relative key digits exceed relative key. 00 24 OPEN I-O on file that is not mass storage. 00 37 WRITE fails -- attempt to write a record of a different size than in the file description. 00 44 READ fails -- no next logical record (EOF detected). 13 10 READ fails -- no next logical record (EOF on OPTIONAL file). 15 10 READ fails -- no valid next record (already at EOF). 16 10 READ NEXT or sequential READ -- no valid next record pointer. 16 46 READ or START fails -- optional input file not present. 25 23 READ successful -- record longer than fixed file attribute. 30 04 OPEN on relative or indexed file that is not mass storage. 30 37 REWRITE fails -- attempt to rewrite record of different size. 30 44 CLOSE fails -- file not currently open. 94 42 DELETE or REWRITE fails -- previous I-O not successful READ. 93 43 OPEN fails -- file previously closed with LOCK. 94 38 OPEN fails -- file created with different organization. 94 39 OPEN fails -- file created with different prime record key. 94 39 OPEN fails -- file created with different alternate record keys. 94 39 OPEN fails -- file currently open. 94 41 READ or START fails -- file not opened INPUT or I-O. 94 47 WRITE fails -- file not opened OUTPUT, EXTEND, or I-O. 94 48 DELETE or REWRITE fails -- file not opened I-O. 94 49 OPEN INPUT on a nonoptional file -- file not found. 97 35 __________________________________________________________________ c. No Valid Next Record condition If all of the following conditions exist: . The no valid next record (NVNR) condition exists. . Your program attempts a sequential READ statement. . Your program includes an AT END branch associated with the READ statement. And if you specify /STANDARD=V3, the following occurs: 1. The file status variable, if any, for the file is set to 16. 2. The statements associated with the AT END statement are executed. 3. The program continues to execute normally. If you specify /STANDARD=85, the following occurs: 1. The file status variable, if any, for the file is set to 46. 2. The statements associated with the AT END statement are not executed. 3. The program terminates execution abnormally (unless you have provided for this situation with a Declaratives USE AFTER STANDARD EXCEPTION procedure). d. Opening nonoptional files in OPEN I-O and EXTEND modes If you specify /STANDARD=V3, the compiler creates nonoptional files opened in I-O or EXTEND mode, if the file is unavailable. If you specify /STANDARD=85, the compiler does not create nonoptional files opened in I-O or EXTEND mode if the file is unavailable; instead, the I/O system issues a run-time error. Specifying /STANDARD=V3 with the /FIPS=74 qualifier instructs the compiler to produce code according to the 1974 ANSI standard for certain constructs that are supported by the Federal Information Processing Standards Publication 21--1 (FIPS-PUB 21--1), issued by the U.S. National Bureau of Standards, interpretation of file status. Specifying /STANDARD=V3 with the /NOFIPS qualifier ensures version to version compatibility for COBOL. Specifying /STANDARD=SYNTAX with the /WARNINGS=ALL qualifier instructs the compiler to produce and print informational messages on language features that point out HP extensions to the ANSI 1985 COBOL Standard. Specifying /STANDARD=MIA with the /WARNINGS=ALL qualifier instructs the compiler to produce and print informational messages on language features that point out langauges element which do not conform to the MIA specifications: . HP syntax extensions from base standards (ANSI-85, JIS-88) . Two of four optional modules . All obsolete language elements of required modules in base standards . Language elements omitted from required modules in base standards due to the different implementation of the vendors . HP specific Japanese features out of MIA extension elements related to Japanese Not specifying /STANDARD or specifying /STANDARD, /NOSTANDARD, /STANDARD=(85,NOV3,NOSYNTAX,NOXOPEN,NOMIA), or /STANDARD=(NO85,NOV3,NOSYNTAX,NOXOPEN,NOMIA) is equivalent to specifying /STANDARD=85. /TIE /TIE /NOTIE (D) Generates code that allows native OpenVMS I64 images to call translated Alpha images and translated OpenVMS Alpha images to call native OpenVMS I64 images. This qualifier is supported on OpenVMS I64 systems only. Specify /TIE when you want to use native, compiled code with shared translated Alpha images, either because the code might call into a translated Alpha image or because it might be called from a translated Alpha image. If you specify /TIE, you should link the object module using the LINK command qualifier /NATIVE_ONLY. See the OpenVMS Linker Utility Manual for information about the /NATIVE_ONLY qualifier. Specifying /NOTIE, the default, indicates that your compiled code is not associated with a translated Alpha image. /TRUNCATE /TRUNCATE /NOTRUNCATE (D) Controls how the compiler stores values in COMPUTATIONAL receiving items if high-order truncation is necessary. If you specify /TRUNCATE, the compiler truncates values according to the number of decimal digits specified by the PICTURE size. Specifying /TRUNCATE increases program execution time. The default, /NOTRUNCATE, instructs the compiler to truncate values according to the hardware storage unit (word, longword, or quadword) allocated to the receiving item. /VERSION /VERSION /NOVERSION (D) Directs the compiler to print out the compiler version and platform. The compiler version is the same as in the listing file. This qualifier helps you to report what compiler you are using. When this qualifier is specified, the compiler just prints its version and exits. No other qualifiers are processed, no source file is read, and no object module is produced. The syntax for using this qualifier is: COBOL/VERSION The default is /NOVERSION. /VFC /VFC (D) /NOVFC Generates VFC record format for the following types of files: . LINAGE . REPORT WRITER . APPLY PRINT-CONTROL . WRITE ADVANCING . ORGANIZATION SEQUENTIAL with GLOBAL . ORGANIZATION SEQUENTIAL with EXTERNAL If you specify /NOVFC, these output files are generated with Stream_LF record format. /WARNINGS /WARNINGS[=(option[,...])] /NOWARNINGS Controls whether the compiler prints warning or informational messages as well as error and severe error messages. You can select one or more of the following options: [NO]INFORMATION Produces additional informational messages. The default is NOINFORMATION. [NO]OTHER Produces warning messages. The default is OTHER. ALL Provides the messages produced by the INFORMATION and OTHER options. /WARNINGS=ALL is the equivalent of /WARNINGS. NONE Omits the listing of all messages. /WARNINGS=NONE is the equivalent of /NOWARNINGS. If you specify a qualifier option, the default options do not change unless they are individually modified. The default is /WARNINGS=OTHER. Specifying /WARNINGS=ALL or /WARNINGS=INFORMATIONAL with the /STANDARD=SYNTAX qualifier option instructs the compiler to produce and print informational messages on language features that point out HP extensions to the ANSI 1985 COBOL Standard. Specify /WARNINGS=INFORMATIONAL to receive the FIPS messages about HP extensions that the compiler produces when you specify /FLAGGER[(=option,...)].