COBOL数据类型

Sai*_*sha 15 cobol

我对COBOL数据类型感到困惑.像在许多采访中一样,要求解释COMP-3和COMP之间的区别......具体的区别是什么?COBOL中使用模式的含义是什么?它与数据类型有什么关系?

谢谢和问候,Manasi Kulkarni

Nea*_*alB 17

USAGE在COBOL中描述了如何使用数据项.USAGE的一些例子是:

  • 显示.这标识了可以在终端或报告上打印的项目.这可能是也可能不是数字(例如可以是文本值).DISPLAY项目的描述由PICture子句给出.例如: PIC 9(5) USAGE DISPLAY描述可以显示(打印)的5位数字.通常会USAGE DISPLAY被遗弃,因为如果遗漏则暗示.
  • 指数.这标识了用作表(OCCURS)索引的项.
  • COMPsomething表示数据项将用于算术运算(即它是某种类型的数字).

有各种类型的数字项.两种最常用的数字数据类型是:

  • COMPUTATIONAL或COMP.这相当于BINARY
  • COMPUTATIONAL-3或COMP-3.这相当于PACKED-DECIMAL

COMP(BINARY)数据项通常是对表示整数值的数据项执行计算的最有效方式.

COMP-3(PACKED-DECIMAL)数据项在COBOL中使用,因为它们保持固定的小数点数.所有计算都会产生具有规定小数点数的结果.这在会计类型操作中特别有用.浮点数使得小数点变量后面的位数(例如小数点可以"浮动"),这不是通常表示财务操作的方式.

您可以在此处找到IBM Enterprise COBOL的完整计算项目列表

许多程序员在使用COBOL时遇到的问题之一是理解COMP项目非常适合进行数学运算,但在通过MOVE语句将其转换为DISPLAYable项目之前无法显示(打印).如果将COMP项目移动到报表或屏幕上,它将无法很好地呈现.需要先将其移动到DISPLAY项目中.

您可能想要进一步研究的另一件事是在COBOL中定义变量时PICture和USAGE之间的关系.以下是 利默里克大学非常好的COBOL入门教程的链接.

  • @Manasi 对于 IBM Enterprise COBOL,有 5 个不同的 COMPUTATIONAL 项,COMP-1 到 COMP-5。我在我的原始帖子中提供了一个指向描述这些内容的 IBM 手册的链接 - 您应该查看它。请注意,某些计算类型有多个名称(例如 COMP/BINARY 和 COMP-3/PACKED-DECIMAL)。每个 COBOL 供应商都支持一组类似的 COMP-x 项(供应商在舍入、精度和截断的处理方式上可能存在差异)。一些供应商(例如 RM)提供了 COMP-6 项目。COMP-5 是一种具有 2、4 或 9 字节存储空间的本地二进制格式。 (2认同)

dan*_*n04 15

COBOL实际上只有两种数据类型:数字和字符串.

COBOL记录中每个字段的布局由PICTURE(通常是缩写的PIC)子句精确指定.最常见的是:

  • PIC X对于字符串. PIC X(100)表示一个100字节的字符串.
  • PIC 9对于数字,可选择带S(符号)或V(隐含小数点).例如,PIC S9(7)V99表示隐含小数点左侧7位数字和右侧2位数的带符号数字.

数字字段可以有一个USAGE子句来优化其存储.最常见的USAGEs为DISPLAY,COMPCOMP-3.

DISPLAY将每个数字存储为一个字符.例如,PIC 9(4) VALUE 123将数字存储为字符串"0123".并将其PIC 9(4)V99 VALUE 123.45存储为"012345".请注意,实际上并未存储小数点.

这是一种效率低下的格式,因为它需要8位来表示每个数字.但它通过使用最后一个字节的一半来存储符号,确实对签名数字进行了"优化".通常,EBCDIC数字都具有F的高nybble,因此0123是F0 F1 F2 F3.但-0123是F0 F1 F2 D3 ; D表示否定.C表示正数,F表示无符号(即正数).(类似格式用于COBOL的ASCII版本,但不是标准化的.)

COMP-3是二进制编码的十进制,尾随符号为nybble. PIC 9(3) COMP-3 VALUE 123成为两个字节12 3F.

COMP或者BINARY是本地二进制格式,就像short,intlong在C.


小智 5

至于决定使用哪种数据类型,它可能会变得非常复杂 - 但是 - 一组简单的准则是:

显示和编辑区域小数只能用于在报告或系统输出中显示数字。将 COMP 和 COMP-3 字段移至“显示/编辑”字段,然后再将其放入报告或系统输出中。

COMP - 具有最快的整数计算速度

COMP-3 (打包十进制)- 当应保留小数位置时应使用。

COMP 和 COMP-3 字段可以在计算中一起使用。编译器将确定哪种字段类型将(在幕后)转换为单个通用数字数据类型 -基于规则