\chapter{Language element lists}

This appendix is required for conformance to the COBOL standard.

\section{Implementor-defined language element list}

\begin{enumerate}
\item \textbf{ACCEPT statement (conversion of data)}:
\item \textbf{ACCEPT statement (device used when FROM is unspecified)}:
\item \textbf{ACCEPT statement, screen format (result when screen items overlap)}:
\item \textbf{ACCEPT statement, screen format (when data is verified, behavior for inconsistent data)}:
\item \textbf{ACCEPT statement (size of data transfer)}:
\item \textbf{Alignment of alphanumeric group items (relative to first elementary item)}:
\item \textbf{Alignment of data for increased efficiency (special or automatic alignment: interpretation, implicit filler, semantics of statements)}:
\item \textbf{ALPHABET clause (ordinal number of characters in the native coded character sets)}:
\item \textbf{Alphanumeric literals (number of hexadecimal digits that map to an alphanumeric character)}:
\item \textbf{ASSIGN clause, USING phrase (meaning and rules for operands; consistency rules)}:
\item \textbf{BACKGROUND-COLOR clause (the background color when the clause is not specified or the value specified is not in the range 0 to 7)}:
\item \textbf{Byte (number of bits in)}:
\item \textbf{CALL statement (rules for program-name formation for a non-COBOL program)}:
\item \textbf{CALL statement (runtime resources that are checked)}:
\item \textbf{CALL statement (rules for locating a non-COBOL program)}:
\item \textbf{CALL statement (calling a non-COBOL program)}:
\item \textbf{CALL statement (other effects of the CALL statement)}:
\item \textbf{CANCEL statement (result of canceling an active program when EC-PROGRAM-CANCEL-ACTIVE is not enabled)}:
\item \textbf{CANCEL statement (result of canceling a non-COBOL program)}:
\item \textbf{Case mapping}:
\item \textbf{CHAR function (which one of the multiple characters is returned)}:
\item \textbf{CHAR-NATIONAL function (which one of the multiple characters is returned)}:
\item \textbf{Characters prohibited from use in text-words in COPY ... REPLACING and REPLACE statements}:
\item \textbf{CLOSE statement (closing operations)}:
\item \textbf{COBOL character repertoire (encoding of, mapping of, substitute graphics)}:
\item \textbf{COBOL character repertoire (if more than one encoding in a compilation group, control functions if any)}:
\item \textbf{Color number (for a monochrome terminal, the mapping of the color attributes onto other attributes)}:
\item \textbf{Compiler directives, compiler directive IMP (syntax rules and general rules)}:
\item \textbf{Computer's coded character set (characters in and encoding of computer's alphanumeric coded character set and computer's national coded character set, encoding for usage DISPLAY and usage NATIONAL)}:
\item \textbf{Computer's coded character set (coded character values for certain COBOL items)}:
\item \textbf{Computer's coded character set (correspondence between alphanumeric and national characters)}:
\item \textbf{Computer's coded character set (for literals, correspondence between compile-time and runtime character sets, when conversion takes place)}:
\item \textbf{Computer's coded character set (correspondence between lowercase and uppercase letters when a locale is not in effect)}:
\item \textbf{Computer's coded character set (when composite alphanumeric and national, mapping of characters to each)}:
\item \textbf{Computer's coded character set (when more than one encoding, the mechanism for selecting encoding for runtime)}:
\item \textbf{Computer's coded character set (whether UTF-8 or mixed alphanumeric and national characters recognized in class alphanumeric; applicable syntax and general rules)}:
\item \textbf{COPY statement (rules for identifying and locating default library text)}:
\item \textbf{CRT status 9xxx (the value of xxx for unsuccessful completion with implementor-defined conditions)}:
\item \textbf{Cultural ordering table (allowable content of literal defines a cultural ordering table)}:
\item \textbf{Currency symbol (equivalence of non-COBOL characters)}:
\item \textbf{Currency symbol (implementor-defined prohibition of non-COBOL characters)}:
\item \textbf{Cursor (the cursor movement if keys are defined that change the cursor position)}:
\item \textbf{Data storage (possible representations when implementation provides multiple ways of storing data)}:
\item \textbf{Default encoding specifications (for standard decimal floating-point usages)}:
\item \textbf{Default endianness specifications (for standard floating-point usages)}:
\item \textbf{DEFINE directive (mechanism for providing value of a compilation-variable-name from the operating environment)}:
\item \textbf{Devices that allow concurrent access}:
\item \textbf{DISPLAY statement (data conversion)}:
\item \textbf{DISPLAY statement (format for display of a variable-length group)}:
\item \textbf{DISPLAY statement (size of data transfer)}:
\item \textbf{DISPLAY statement (standard display device)}:
\item \textbf{Dynamic-capacity table (determination of highest permissible occurrence number)}:
\item \textbf{Dynamic-capacity table (physical allocation)}:
\item \textbf{Dynamic-length elementary items (maximum length)}:
\item \textbf{Dynamic-length elementary items (structure if dynamic-length-structure-name-1 is not specified)}:
\item \textbf{ENTRY-CONVENTION clause (entry-convention-names, their meanings and the default when not specified)}:
\item \textbf{EXIT and GOBACK statements (execution continuation in a non-COBOL runtime element)}:
\item \textbf{Exponentiation (results for certain operand values)}:
\item \textbf{External repository (mechanism for specifying whether checking and updating occur)}:
\item \textbf{External repository information (other information beyond the required information)}:
\item \textbf{Externalized names (formation and mapping rules)}:
\item \textbf{Fatal exception condition (whether detected at compile time, circumstances under which detected)}:
\item \textbf{Fatal exception condition (whether or not execution will continue, how it will continue, and how any receiving operands are affected when events that would cause a fatal exception to exist occur but checking for that condition is not enabled)}:
\item \textbf{FILE-CONTROL entry, ASSIGN clause (TO phrase meaning and rules)}:
\item \textbf{FILE-CONTROL entry, ASSIGN clause (consistency rules for external file connectors)}:
\item \textbf{FILE-CONTROL entry, ASSIGN clause (USING phrase meaning and rules)}:
\item \textbf{Figurative constant values (representation of zero, space, and quote)}:
\item \textbf{File sharing (interaction with other facilities and languages)}:
\item \textbf{File sharing (which devices allow concurrent access to the file)}:
\item \textbf{File sharing (default mode when unspecified)}:
\item \textbf{Fixed file attribute (whether the ability to share a file is a fixed file attribute)}:
\item \textbf{FLAG-02 directive (warning mechanism)}:
\item \textbf{FLAG-85 directive (warning mechanism)}:
\item \textbf{Floating-point numeric item (alignment when used as a receiving operand)}:
\item \textbf{Floating-point numeric literals (maximum permitted value and minimum permitted value of the exponent)}:
\item \textbf{FOREGROUND-COLOR clause (the foreground color when the clause is not specified or the value specified is not in the range 0 to 7)}:
\item \textbf{FORMAT clause (representation produced)}:
\item \textbf{FORMAT clause (exclusions on restoring to same internal representation)}:
\item \textbf{Format validation (rules for checking items of usages other than display or national)}:
\item \textbf{FORMATTED-CURRENT-DATE (accuracy of returned time)}:
\item \textbf{Function-identifier (execution of a non-COBOL function when a function-prototype-name is specified)}:
\item \textbf{Function-identifier (object time resources that are checked)}:
\item \textbf{Function-identifier (result when argument rules are violated and checking for the EC-ARGUMENT-FUNCTION exception condition is not enabled)}:
\item \textbf{Function keys (context-dependent keys, function number, and method for enabling and disabling)}:
\item \textbf{Function returned values (characteristics, representation, and returned value for native arithmetic)}:
\item \textbf{Hexadecimal alphanumeric literals (mapping for non-existing corresponding character)}:
\item \textbf{Hexadecimal alphanumeric literals (mapping when characters not multiples of four bits)}:
\item \textbf{Hexadecimal national literals (mapping for non-existing corresponding character)}:
\item \textbf{Hexadecimal national literals (mapping when characters not multiples of four bits)}:
\item \textbf{Implementor-defined exception conditions, EC-IMP-xxx (specification and meaning of xxx)}:
\item \textbf{Implementor-defined level-2 exception conditions, EC-level-2-IMP (specification and meaning of the specified level-2 exception condition)}:
\item \textbf{INVOKE statement (behavior when invoking a non-COBOL method)}:
\item \textbf{INVOKE statement (runtime resources that are checked)}:
\item \textbf{I-O status (action taken for fatal exception conditions)}:
\item \textbf{I-O status (if more than one value applies)}:
\item \textbf{I-O status, permanent error (technique for error correction)}:
\item \textbf{I-O status 0x (value of x)}:
\item \textbf{I-O status 24 (manner in which the boundaries of a file are defined)}:
\item \textbf{I-O status 34 (manner in which the boundaries of a file are defined)}:
\item \textbf{I-O status 52 (conditions under which deadlock is detected)}:
\item \textbf{I-O status 9x (value of x)}:
\item \textbf{LEAP-SECOND directive (whether a value greater than 59 seconds may be reported and, if so, the maximum number of seconds that may be reported)}:
\item \textbf{LEAP-SECOND directive (whether standard numeric time form values greater than or equal to 86,400 may be reported)}:
\item \textbf{Life cycle for objects (timing and algorithm for taking part in continued execution)}:
\item \textbf{Linkage section (whether access to linkage section items is meaningful when called from a non-COBOL program)}:
\item \textbf{Listings (whether and when produced by the compiler, effect of logical conversion)}:
\item \textbf{Locale specification (how user and system defaults defined; at least one user and one system default)}:
\item \textbf{Locale specification (manner of implementation)}:
\item \textbf{Locale switch (whether a switch by a non-COBOL runtime module is recognized by COBOL)}:
\item \textbf{METHOD-ID paragraph (actual method-name used when PROPERTY phrase is specified)}:
\item \textbf{National literals (number of hexadecimal digits that map to a national character)}:
\item \textbf{Native arithmetic (techniques used, intermediate data item)}:
\item \textbf{Native arithmetic (when an operand or arithmetic expression is an integer)}:
\item \textbf{NULL (value of NULL)}:
\item \textbf{OBJECT-COMPUTER paragraph (default object computer)}:
\item \textbf{OBJECT-COMPUTER paragraph (computer-name and implied equipment configuration)}:
\item \textbf{OCCURS clause (range of values allowed in the index)}:
\item \textbf{OPEN statement (validation of fixed file attributes)}:
\item \textbf{OPEN statement with OUTPUT phrase (positioning of the output file with regard to physical page boundaries)}:
\item \textbf{OPEN statement without the SHARING phrase and no SHARING clause in the file control entry (definition of sharing mode established for each file connector)}:
\item \textbf{Parameterized classes and interfaces (when expanded)}:
\item \textbf{Procedure division header rules when either the activating or the activated runtime element is not a COBOL element (restrictions and mechanisms for all supported language products with details such as the matching of parameters, data type representation, returning of a value, and omission of parameters)}:
\item \textbf{Program-address identifier (relation between address and non-COBOL program)}:
\item \textbf{Program-name (formation rules for a non-COBOL program)}:
\item \textbf{RANDOM function (seed value when no argument on first reference)}:
\item \textbf{RANDOM function (subset of the domain of argument-1)}:
\item \textbf{RECORD clause (calculations to derive size of records on storage medium)}:
\item \textbf{RECORD clause (implicit RECORD clause if RECORD clause is not specified)}:
\item \textbf{RECORD clause (whether fixed or variable records produced for fixed-or-variable-length format)}:
\item \textbf{RECORD DELIMITER clause (consistency rules when used with external file connectors)}:
\item \textbf{RECORD DELIMITER clause (feature-name and associated method for determining length of variable-length records)}:
\item \textbf{RECORD DELIMITER clause (if not specified, method for determining length of variable-length records)}:
\item \textbf{Record locking (circumstances other than a locked logical record that return a locked record status)}:
\item \textbf{Record locking (default mode when unspecified by user)}:
\item \textbf{Record locking (maximum number allowed for a run unit)}:
\item \textbf{Record locks (maximum number allowed for a file connector)}:
\item \textbf{Reference format (control characters in a free-form line)}:
\item \textbf{Reference format (meaning of lines and character positions in free-form and fixed-form format)}:
\item \textbf{Reference format (rightmost character position of program-text area)}:
\item \textbf{Report file (record structure)}:
\item \textbf{Report writer printable item (fixed correspondence between columns and national characters)}:
\item \textbf{REPOSITORY paragraph (how external repository and class-specifier determine which class is used)}:
\item \textbf{REPOSITORY paragraph, INTERFACE phrase (how interface specifier and external repository determine which interface is used)}:
\item \textbf{REPOSITORY paragraph (when the AS phrase is required)}:
\item \textbf{RESERVE clause (number of input-output areas, if not specified)}:
\item \textbf{RETRY phrase (interval between attempts to obtain access to a locked file or record)}:
\item \textbf{RETRY phrase (maximum meaningful time-out value and internal representation; technique for determining frequency of retries)}:
\item \textbf{Run unit (relationship and interaction with non-COBOL components)}:
\item \textbf{Run unit termination (whether locale reset)}:
\item \textbf{SAME SORT/SORT-MERGE AREA clause (extent of allocation)}:
\item \textbf{SEARCH ALL statement (varying of the search index during the search operation)}:
\item \textbf{SECONDS-PAST-MIDNIGHT function returned value (precision)}:
\item \textbf{SECURE clause (cursor movement when data is entered into a field for which the SECURE clause is specified)}:
\item \textbf{SELECT WHEN clause (whether a SELECT WHEN takes effect for READ statements and REWRITE or WRITE statements with the FILE phrase in the absence of a CODE-SET clause or a FORMAT clause)}:
\item \textbf{SET statement (effect of SET on function whose address is being stored in a function-pointer)}:
\item \textbf{SET statement (effect of SET on program whose address is being stored in a program-pointer)}:
\item \textbf{SET statement (value in NaN payload)}:
\item \textbf{SIGN clause (representation when PICTURE contains character 'S' with no optional SIGN clause)}:
\item \textbf{SIGN clause (valid sign when SEPARATE CHARACTER phrase not present)}:
\item \textbf{Size error condition (whether or not range of values allowed for the intermediate data item is to be checked)}:
\item \textbf{SPECIAL-NAMES paragraph (allowable locale-names and literal values)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause (coded character set referenced by STANDARD-2 phrase)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause, code-name-1 (alphanumeric coded character set and collating sequence; ordinal number of characters; correspondence with native alphanumeric character set)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause, code-name-1 and code-name-2 (the names supported for code-name-1 and code-name-2)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause, code-name-2 (national coded character set and collating sequence; ordinal number of characters; correspondence with native national character set)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause, literal phrase (ordinal number of characters not specified)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause, STANDARD-1 and STANDARD-2 phrases (correspondence with native character set)}:
\item \textbf{SPECIAL-NAMES paragraph, ALPHABET clause, UCS-4, UTF-8, and UTF-16 phrases (correspondence with native character set)}:
\item \textbf{SPECIAL-NAMES paragraph, device-name (names available, restrictions on use)}:
\item \textbf{SPECIAL-NAMES paragraph, feature-name (names available, any positioning rules, any restrictions on use)}:
\item \textbf{SPECIAL-NAMES paragraph, switch-name (names available, which switches may be referenced by the SET statement, scope of, and external facility for modification)}:
\item \textbf{Standard intermediate data item (representation)}:
\item \textbf{STOP statement (constraints on the value of the STATUS literal or on the contents of the data item referenced by the STATUS identifier)}:
\item \textbf{STOP statement (mechanism for error termination)}:
\item \textbf{Subscripts (mapping indexes to occurrence numbers)}:
\item \textbf{Switch-name (identifies an external switch)}:
\item \textbf{SYNCHRONIZED clause (effect on elementary items and containing records or groups; implicit filler generation)}:
\item \textbf{SYNCHRONIZED clause (how records of a file are handled)}:
\item \textbf{SYNCHRONIZED clause (positioning when neither RIGHT or LEFT is specified)}:
\item \textbf{System-names (rules for formation of a system-name)}:
\item \textbf{Terminal screen (correspondence of a column and a character in the computer's national coded character set)}:
\item \textbf{Text manipulation (stage of processing the LISTING and PAGE directives and the SUPPRESS phrase of COPY)}:
\item \textbf{Text manipulation (stage of processing parameterized class expansion)}:
\item \textbf{Time formats and corresponding function values (maximum precision not less than nine fractional digits)}:
\item \textbf{THROUGH phrase in VALUE clause and EVALUATE statement (collating sequence used for determining range of values when no alphabet-name is specified)}:
\item \textbf{TURN directive (whether location information is available when the LOCATION phrase is not specified)}:
\item \textbf{USAGE BINARY clause (computer storage allocation, alignment and representation of data)}:
\item \textbf{USAGE BINARY-CHAR, BINARY-SHORT, BINARY-LONG, BINARY-DOUBLE (allow wider range than minimum specified)}:
\item \textbf{USAGE BINARY-SHORT, BINARY-LONG, BINARY-DOUBLE, FLOAT-SHORT, FLOAT-LONG, FLOAT-EXTENDED (representation and length of data item associated with)}:
\item \textbf{USAGE COMPUTATIONAL clause (alignment and representation of data)}:
\item \textbf{USAGE DISPLAY (size and representation of characters)}:
\item \textbf{USAGE FLOAT-SHORT, FLOAT-LONG, FLOAT-EXTENDED (size and permitted range of value)}:
\item \textbf{USAGE FUNCTION-POINTER clause (alignment, size, and representation of data; and allowable languages)}:
\item \textbf{USAGE INDEX clause (alignment and representation of data)}:
\item \textbf{USAGE NATIONAL (size and representation of characters)}:
\item \textbf{USAGE OBJECT REFERENCE clause (amount of storage allocated)}:
\item \textbf{USAGE PACKED-DECIMAL clause (computer storage allocation, alignment and representation of data)}:
\item \textbf{USAGE POINTER clause (alignment, size, representation, and range of values)}:
\item \textbf{USAGE PROGRAM-POINTER clause (alignment, size, and representation of data; and allowable languages)}:
\item \textbf{USE statement (action taken following execution of the USE procedure when I-O status value indicates a fatal exception condition)}:
\item \textbf{User-defined words (whether extended letters may be specified in user-defined words externalized to the operating environment)}:
\item \textbf{Variable-length data items (actual time when the resources used are freed)}:
\item \textbf{WRITE statement (mnemonic-name-1)}:
\item \textbf{WRITE statement (page advance when mnemonic-name-1 specified)}:
\end{enumerate}

\section{Optional language element list}

\begin{enumerate}
\item \textbf{ACCEPT and DISPLAY screen handling}: Complete support is claimed with the exception of OCCURS items.
\item \textbf{ARITHMETIC IS STANDARD}: No support is claimed.
\item \textbf{Dynamic capacity tables}: The syntax is recognised, but no functionality is claimed.
\item \textbf{DYNAMIC LENGTH elementary items}: No support is claimed.
\item \textbf{Extended letters}: No support is claimed.
\item \textbf{File sharing and record locking}: Support is claimed, but the level of support is processor-dependent. % TO-DO: Check.
\item \textbf{FORMAT and SELECT WHEN file handling}: No support is claimed.
\item \textbf{Locale support and related functions}: The syntax is recognised, but no functionality is claimed.  % TO-DO: Check.
\item \textbf{Object orientation}: No support is claimed.
\item \textbf{Report writer}: Complete support is claimed.
\item \textbf{RESUME statement}: No support is claimed.
\item \textbf{REWRITE FILE and WRITE FILE}: Complete support is claimed.
\item \textbf{VALIDATE}: No support is claimed.
\end{enumerate}

% TO-DO \section{Missing (not optional) language element list}

\section{Non-standard extension list}

Many extensions found in other compilers.  % TO-DO: Check at least IBMs, ACUCOBOL and MF list, copy parts that match.
Some own extensions.  % TO-DO: ...

\paragraph{Note: Flagging syntax extensions}

You can flag many syntax extensions when compiling with \texttt{ -std=cobol2014 } or one of the other strict COBOL syntax definitions.

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "grammar.tex"
%%% End:
