COBOL - 数据类型

  • 简述

    数据除法用于定义程序中使用的变量。要在 COBOL 中描述数据,必须了解以下术语 -
    • 数据名称
    • 层数
    • 图片从句
    • 价值从句
    
    01            TOTAL-STUDENTS            PIC9(5)            VALUE '125'.
    |                    |                    |                    |
    |                    |                    |                    |
    |                    |                    |                    | 
    Level Number     Data Name           Picture Clause       Value Clause
    
  • 数据名称

    数据名称必须在数据部门中定义,然后才能在过程部门中使用。它们必须有一个用户定义的名称;不能使用保留字。数据名称引用存储实际数据的内存位置。它们可以是基本类型或组类型。

    例子

    以下示例显示了有效和无效的数据名称 -
    
    Valid:
       WS-NAME
       TOTAL-STUDENTS
       A100
       100B
    Invalid:
       MOVE            (Reserved Words)
       COMPUTE         (Reserved Words)
       100             (No Alphabet)
       100+B           (+ is not allowed) 
    
  • 层数

    级别编号用于指定记录中数据的级别。它们用于区分基本项和组项。可以将基本项目组合在一起以创建组项目。
    序号 级别编号和说明
    1
    01
    记录描述条目
    2
    02 to 49
    小组和基本项目
    3
    66
    重命名子句项目
    4
    77
    不能细分的项目
    5
    88
    条件名称输入
    • Elementary items不能进一步划分。级别编号、数据名称、图片子句和值子句(可选)用于描述基本项。
    • Group items由一个或多个基本项目组成。级别号、数据名称和值子句(可选)用于描述组项。组级别编号始终为 01。

    例子

    以下示例显示了组和基本项目 -
    
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 WS-NAME    PIC X(25).                               ---> ELEMENTARY ITEM 
    01 WS-CLASS   PIC 9(2)  VALUE  '10'.                   ---> ELEMENTARY ITEM
    01 WS-ADDRESS.                                         ---> GROUP ITEM   
       05 WS-HOUSE-NUMBER    PIC 9(3).                     ---> ELEMENTARY ITEM
       05 WS-STREET          PIC X(15).                    ---> ELEMENTARY ITEM
       05 WS-CITY            PIC X(15).                    ---> ELEMENTARY ITEM
       05 WS-COUNTRY         PIC X(15)  VALUE 'INDIA'.     ---> ELEMENTARY ITEM
    
  • 图片从句

    图片子句用于定义以下项目 -
    • Data type可以是数字、字母或字母数字。数字类型仅由数字 0 到 9 组成。字母类型由字母 A 到 Z 和空格组成。字母数字类型由数字、字母和特殊字符组成。
    • Sign可用于数值数据。它可以是 + 或 –。
    • Decimal point position可用于数值数据。假定位置是小数点的位置,不包含在数据中。
    • Length定义数据项使用的字节数。
    图片子句中使用的符号 -
    序号 符号和说明
    1
    9
    数字
    2
    A
    按字母顺序
    3
    X
    字母数字
    4
    V
    隐式十进制
    5
    S
    符号
    6
    P
    假定十进制

    例子

    以下示例显示了 PIC 子句的使用 -
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-NUM1 PIC S9(3)V9(2).
       01 WS-NUM2 PIC PPP999.
       01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.
       01 WS-NAME PIC A(6) VALUE 'ABCDEF'.
       01 WS-ID PIC X(5) VALUE "A121$".
    PROCEDURE DIVISION.
       DISPLAY "WS-NUM1 : "WS-NUM1.
       DISPLAY "WS-NUM2 : "WS-NUM2.
       DISPLAY "WS-NUM3 : "WS-NUM3.
       DISPLAY "WS-NAME : "WS-NAME.
       DISPLAY "WS-ID : "WS-ID.
    STOP RUN.
    
    JCL执行上述 COBOL 程序 -
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    WS-NUM1 : +000.00
    WS-NUM2 : .000000
    WS-NUM3 : -123.45
    WS-NAME : ABCDEF
    WS-ID : A121$
    
  • 价值从句

    Value 子句是一个可选子句,用于初始化数据项。这些值可以是数字文字、字母数字文字或图形常量。它可以与组和基本项目一起使用。

    例子

    以下示例显示了 VALUE 子句的使用 -
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-NUM1 PIC 99V9 VALUE IS 3.5.
       01 WS-NAME PIC A(6) VALUE 'ABCD'.
       01 WS-ID PIC 99 VALUE ZERO.
    PROCEDURE DIVISION.
       DISPLAY "WS-NUM1 : "WS-NUM1.
       DISPLAY "WS-NAME : "WS-NAME.
       DISPLAY "WS-ID   : "WS-ID.
    STOP RUN.
    
    JCL执行上述 COBOL 程序 -
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    WS-NUM1 : 03.5
    WS-NAME : ABCD
    WS-ID   : 00