COBOL - 数据类型



数据部用于定义程序中使用的变量。要描述 COBOL 中的数据,必须了解以下术语:

  • 数据名
  • 级别号
  • PICTURE 子句
  • VALUE 子句
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 到 49

组项和基本项

3

66

重命名子句项

4

77

不能细分的项

5

88

条件名项

  • 基本项不能进一步细分。级别号、数据名、PICTURE 子句和 VALUE 子句(可选)用于描述基本项。

  • 组项包含一个或多个基本项。级别号、数据名和 VALUE 子句(可选)用于描述组项。组级别号始终为 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 子句

PICTURE 子句用于定义以下项:

  • 数据类型可以是数值型、字母型或字母数字型。数值型仅包含数字 0 到 9。字母型包含字母 A 到 Z 和空格。字母数字型包含数字、字母和特殊字符。

  • 符号可用于数值数据。它可以是 + 或 –。

  • 小数点位置可用于数值数据。假定位置是小数点的位置,不包含在数据中。

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

PICTURE 子句中使用的符号:

序号 符号和描述
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 子句是一个可选子句,用于初始化数据项。值可以是数值文字、字母数字文字或文字常量。它可以与组项和基本项一起使用。

示例

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