📜  COMP 和 COMP3 的区别

📅  最后修改于: 2022-05-13 01:54:20.343000             🧑  作者: Mango

COMP 和 COMP3 的区别

计算机在内部以不止一种形式存储数据。 Cobol 语言方便程序员根据需要指定数据的内部表示。 Cobol 中有两种可用的内部形式:

  1. 展示 -
    它是数据的默认内部表示。可以使用 DISPLAY 内部表示指定任何类型的数据。
  2. 计算 –
    只能使用 COMPUTATIONAL 内部表示指定数字数据。 COMPUTATIONAL 表示有多种类型,如 COMP、COMP-1、COMP-2、COMP-3 等。

USAGE 子句用于指定内部表示的类型。您可以为 USAGE 子句使用任何级别编号,但 66 或 88 除外。

Syntax:
        USAGE IS {COMPUTATIONAL/COMP/DISPLAY}.

1. 比较:
使用条款仅适用于数字数据项。它纯粹以二进制形式表示数据。并且可以根据数据的大小以半字或全字存储数据。我们在数据声明时只能使用 9 和 S:

  • 9 用于存储声明的整型变量。
  • S 用于存储符号。

2. COMP3:
使用条款仅适用于数字数据项。它以压缩十进制形式存储数据。无论我们是否在 PIC 子句中使用了 S,它都使用最右边的一位来存储符号。十六进制数 C 和 F 在最右位存储正号,D 在最右位存储负号。我们可以在数据声明时在 PIC 子句中使用 9、S 和 V。

V 用于在数据项中的特定位置存储小数点。

COMP 和 COMP3 的区别:

COMP

COMP3

It represents the data in pure binary form.It represents the data in packed decimal form.
We can use only 9 and S in PIC Clause.We can use 9 , S , V in PIC Clause.
COMP usage stores the data in half word or in full word, depending on the size of the data.COMP3 usage stores 1 digit in half byte (i.e. 4 bits) and a separate 1 bit is reserved for the sign, which is stored at the right side of the data.

The memory to be occupied by the data according to the length is predefined i.e. :

  • 9(01) – 9(04) : 16 bits (2 bytes)
  • 9(05) – 9(09) :  32 bits (4 bytes)
  • S9(10) – S9(18) :  64 bits (8 bytes)

The memory to be occupied by the data is defined by the following formula:

  • (length of variable + 1)/2 bytes.

Example : The memory occupied by S9(3) is:

(3+1)/2 i.e. 2 bytes.

COMP does not occupy extra space to store sign. In COMP3 sign in compulsorily stored at right side and thus it occupies an extra space.
Example:
        02 CompVariable PIC 9 USAGE IS COMP.
        02 CompVariable1 PIC S9(5) USAGE IS COMP.
Example:
        02 Variable PIC 9 USAGE IS COMP3.
        02 Variable1 PIC S9(10) USAGE IS COMP3.
        02 Variable2 PIC S9V99 USAGE IS COMP3.