📜  COBOL – 数据类型

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

COBOL – 数据类型

数据类型是程序员的分类,用于告诉编译器/解释器如何在程序中使用数据。例如,定义为数字的学生的卷号只有在提供其他值而不是数字时才会将输入作为数字,它将在程序内部引发异常终止。

SymbolShort Description

Description

Value example  
9NumericInclude Digits 0 to 9Phone_number: 9898989898
AAlphabeticInclude only Letter A to A/a-zName:   GeekForGeeks
XAlphanumericInclude both digits and lettersGift_voucher:  ABZ445
SSignedInclude integers value Balance:  -458 
PAssumed DecimalUsed to find value on the left or right side of the decimalAssumed_dec:  

示例程序:我们将使用该程序来解释本文的概念。

Cobol
IDENTIFICATION DIVISION.
       PROGRAM-ID. YOUR-PROGRAM-NAME.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
        
           01 GROUP01.
            02 PHONE_NUMBER            PIC 9(10) VALUE 7845955477.
            02 ST_NAME                 PIC A(20) VALUE 'GeekForGeeks'.
             
           01 GIFTVOUCHER              PIC X(6) VALUE 'ABZ445'.
           01 BALANCE                  PIC S9(3) VALUE -458.
           01 ASSUMED_DEC              PIC P9(2) VALUE 23.458.
       PROCEDURE DIVISION.
       MAIN-PROCEDURE.
            DISPLAY GROUP01
            DISPLAY GIFTVOUCHER
            DISPLAY BALANCE
            DISPLAY ASSUMED_DEC
             
            STOP RUN.


说明:要理解数据类型的概念,我们需要了解使用的基本术语。

  • 数据名称
  • 层数
  • 图片条款
  • 价值条款

1.数据名称

数据名称就像程序中使用的用户定义变量,将用于在其中保存不同的值,并且必须仅包含数字(0-9)、字母(AZ)、减号和连字符(-),a数据名称不能使用 MOVE、COMPUTE 等保留字。

Some Valid data names:

 PHONE_NUMBER
 ST_NAME
 WS-POS1
 BOOK
 
Invalid data names:
 
MOVE          : it is reserved keyword
COMPUTE          : it is reserved keyword    
$VAR          : $ char not allowed
100              : only number not allowed

2. 层数

级别编号是介于 01 和 49 之间的一位或两位整数,或三个特殊级别编号之一:66、77 或 88。以下级别编号用于构造记录:

  • 组项:组项由一个或多个基本项组成,在下面的示例中 GROUP01 是一个组项。
  • 基本项目:它是一个单独定义的项目,在上面的例子中 PHONE_NUMBER 是一个基本项目。
Level NumberDescriptionType
01Record Description or Title for GroupGeneral Level Number
02 to 49For Group/Elementary items
66Rename Clause ItemsSpecial Level Number
77Fixed cannot be subdivided to declare an elementary item
88Condition name entry (mainly used for flag purposes)

例子:

DATA DIVISION.
WORKING-STORAGE SECTION.


   01 GROUP01.                                                        /*GROUP ELEMENT*/ 
   02 PHONE_NUMBER            PIC 9(10) VALUE 7845955477.            /*ELEMENTARY ELEMENT*/
   02 ST_NAME                 PIC A(20) VALUE 'GeekForGeeks'.        /*ELEMENTARY ELEMENT*/
   02 GIFTVOUCHER              PIC X(6) VALUE 'ABZ445'.
   02 BALANCE                  PIC S9(3) VALUE 458.
   
  66 WS-VAR2 RENAMES PHONE_NUMBER THROUGH ST_NAMES                   /*RENAME ELEMENT*/   
  
  77  ASSUMED_DEC              PIC P9(2) VALUE 23.458.                      /*INDEPENDENT ELEMENT*/
  
   01 WS-GENDER                 PIC X(01).                             /*CONDITIONAL ELEMENT*/
   88 WS-MALE                   VALUE "M". 
   88 WS-FEMALE                   VALUE "F".

3. 图片条款

在上面的代码中,不同的数据类型变量,如 PHONE_NUMBER、ST_NAME、GIFT VOUCHER 是在 Picture 子句(也称为 PIC)的帮助下定义的,有 5 个符号(9、A、X、S、P)可以在帮助下使用已经解释过的图片子句。

例子:

4. 价值条款

它用于初始化上述代码中的数据项示例 PHONE_NUMBER 的默认值为 785955477,在 value 子句的帮助下定义。使用 value 子句是可选的。

当我们编译并执行上述代码时,它会显示使用 Values 子句定义的值

例子: