📜  COBOL-数据类型

📅  最后修改于: 2020-11-22 16:44:18             🧑  作者: Mango


数据分区用于定义程序中使用的变量。要描述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) 

等级编号

级别编号用于指定记录中的数据级别。它们用于区分基本项目和组项目。可以将基本项目分组在一起以创建分组项目。

Sr.No. Level Number & Description
1

01

Record description entry

2

02 to 49

Group and Elementary items

3

66

Rename Clause items

4

77

Items which cannot be sub-divided

5

88

Condition name entry

  • 基本项目无法进一步划分。级别编号,数据名称,图片子句和值子句(可选)用于描述基本项目。

  • 组项目由一个或多个基本项目组成。级别编号,数据名称和值子句(可选)用于描述组项目。组级别号始终为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

图片条款

Picture子句用于定义以下项目-

  • 数据类型可以是数字,字母或字母数字。数字类型仅由数字0到9组成。字母类型由字母A到Z和空格组成。字母数字类型由数字,字母和特殊字符。

  • 符号可以与数字数据一起使用。它可以是+或–。

  • 小数点位置可以与数字数据一起使用。假定位置是小数点的位置,不包含在数据中。

  • 长度定义数据项使用的字节数。

Picture子句中使用的符号-

Sr.No. Symbol & Description
1

9

Numeric

2

A

Alphabetic

3

X

Alphanumeric

4

V

Implicit Decimal

5

S

Sign

6

P

Assumed Decimal

以下示例显示了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