语言元素

下表列出了 Enterprise COBOL 与 COBOL for Linux® on x86 编译器 之间不同的语言元素,并在可能的情况下提供有关如何处理 COBOL for Linux on x86 程序中的此类差异的建议。

在 Enterprise COBOL 中有效的许多 COBOL 子句和短语是经过语法检查的,但不会影响 COBOL for Linux on x86 程序的执行。 这些子句和短语应该对您下载的现有应用程序影响最小。 COBOL for Linux on x86 识别大多数 Enterprise COBOL 语言语法,即使该语法没有功能影响也是如此。

表 1. Enterprise COBOL for z/OSCOBOL for Linux on x86 之间的语言差异
语言元素 COBOL for Linux on x86 实现或限制
ACCEPT statement 如果 Enterprise COBOL 程序期望 ddname 作为 ACCEPT 语句的目标,请使用值设置为相应文件名的等效环境变量来定义这些目标。 在 COBOL for Linux on x86中, environment-name 和关联的环境变量值 (如果设置) 确定文件标识。
APPLY WRITE-ONLY 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
ASSIGN 子句 COBOL for Linux on x86 使用不同的语法并基于 assignment-name映射到系统文件名。 ASSIGN. . .USING data-name 在 Enterprise COBOL 中不受支持。
BLOCK CONTAINS 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
CALL statement COBOL for Linux on x86中不支持文件名作为 CALL 参数。
CLOSE statement 以下短语是 COBOL for Linux on x86中的 语法已检查,但对程序的执行没有影响 : FOR REMOVALWITH NO REWINDUNIT/REEL。 避免在计划可移植的程序中使用这些短语。
CODE-SET 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
DATA RECORDS 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
DISPLAY statement 如果 Enterprise COBOL 程序期望 ddname 作为 DISPLAY 语句的目标,请使用值设置为相应文件名的等效环境变量来定义这些目标。 在 COBOL for Linux on x86中, environment-name 和关联的环境变量值 (如果设置) 确定文件标识。
DYNAMIC LENGTH 子句 COBOL for Linux on x86中当前不支持动态长度基本项。
文件状态 data-name-1 文件状态 9x 的某些值和含义在 Enterprise COBOL 中与在 COBOL for Linux on x86中不同。
文件状态 data-name-8 格式和值因平台和文件系统而异。
INDEX 数据项 在 Enterprise COBOL 中, INDEX 数据项隐式定义为 4 字节。 在使用 ADDR(32)编译的 COBOL for Linux on x86 程序中,其大小为 4 字节; 使用 ADDR(64)时,其大小为 8 字节。

INVOKE 语句

COBOL for Linux on x86 不支持编写面向对象的程序,创建 COBOL 或 Java 类的对象实例或调用 COBOL 或 Java 类中定义的方法。

JSON GENERATEJSON PARSE 语句 COBOL for Linux on x86中当前不支持 JSON。
LABEL RECORDS 子句 短语 LABEL RECORD IS 数据名USE. . .AFTER. . .LABEL PROCEDUREGO TO MORE-LABELSCOBOL for Linux on x86中为 语法已检查,但对程序的执行没有影响如果使用这些短语中的任何一个,那么将发出警告。 在运行时不会调用用户标签声明。 无法移植依赖于 z/OS® QSAM 支持的用户标签处理的程序。
MULTIPLE FILE TAPE COBOL for Linux on x86中的 已检查语法,但对程序的执行没有影响 。 在 Linux 工作站上,所有文件都被视为单卷文件。
OBJECT REFERENCE 数据项 OBJECT REFERENCE 数据项在 COBOL for Linux on x86中不受支持。
OPEN statement 以下短语是 COBOL for Linux on x86中的 语法已检查,但对程序的执行没有影响 : REVERSEDWITH NO REWIND
PASSWORD 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
POINTERPROCEDURE-POINTERFUNCTION-POINTER 数据项 在 Enterprise COBOL 中, POINTERFUNCTION-POINTER 数据项隐式定义为 4 字节,因为 专用寄存器 ADDRESS OF; PROCEDURE-POINTER 数据项隐式定义为 8 字节。 在使用 ADDR(32)编译的 COBOL for Linux on x86 程序中,每个项的大小为 4 字节; 使用 ADDR(64)时,其大小为 8 字节。
READ. . .PREVIOUS 仅在 COBOL for Linux on x86 中,允许您以 DYNAMIC 访问方式读取相对或索引文件的先前记录
RECORD CONTAINS 子句 接受 RECORD CONTAINS N CHARACTERS 子句,但有一个例外: RECORD CONTAINS 0 CHARACTERSCOBOL for Linux on x86中为 语法已检查,但对程序的执行没有影响
RECORDING MODE 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响 表示相对文件,已建立索引的文件和行顺序文件。 RECORDING MODE U 已检查 语法,但对顺序文件的程序 的执行没有任何影响。
RERUN 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
RESERVE 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
SAME AREA 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
SAME SORT 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
SHIFT-INSHIFT-OUT 专用寄存器 如果 COBOL for Linux on x86 编译器迂到这些寄存器,那么它将发出 E 级消息,除非 CHAR(EBCDIC) 编译器选项生效。
SORT-CONTROL 专用寄存器 此专用寄存器的 隐式定义和 内容在主机和工作站 COBOL 之间有所不同。
SORT-CORE-SIZE 专用寄存器 此专用寄存器的内容在主机和工作站 COBOL 之间有所不同。
SORT-FILE-SIZE 专用寄存器 COBOL for Linux on x86中的 已检查语法,但对程序的执行没有影响 。 不使用此专用寄存器中的值。
SORT-MESSAGE 专用寄存器 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
SORT-MODE-SIZE 专用寄存器 COBOL for Linux on x86中的 已检查语法,但对程序的执行没有影响 。 不使用此专用寄存器中的值。
SORT MERGE AREA 子句 COBOL for Linux on x86 中的 已检查语法,但对程序的执行没有影响
START. . . COBOL for Linux on x86中,允许以下关系运算符: IS LESS THANIS <IS NOT GREATER THANIS NOT >IS LESS THAN OR EQUAL TOIS <=
STOP RUN COBOL for Linux on x86 多线程程序中不受支持; 可在多线程程序中替换为对 C exit () 函数的调用
USAGE 子句和 "U" PICTURE 符号的 UTF-8 短语 UTF-8 数据类和 UTF-8 数据类别当前在 COBOL for Linux on x86中不受支持。
WRITE statement COBOL for Linux on x86中,如果使用环境名称 C01C12S01S05来指定 WRITE. . .ADVANCING ,那么将高级一行。
XML PARSE statement 在使用仅主机选项 XMLPARSE(XMLSS)编译的 Enterprise COBOL 程序中,可用于名称空间处理的其他语法 ( ENCODING 短语和 RETURNING NATIONAL 短语) 和专用寄存器不可用于 COBOL for Linux on x86
平台环境已知的名称 以下名称以不同方式标识: program-nametext-namelibrary-nameassignment-nameSORT-CONTROL 专用寄存器中的文件名, 基底名称DISPLAYACCEPT 目标标识以及依赖于系统的名称。