COBOL - 数据类型
数据划分用于定义程序中使用的变量。 为了用 COBOL 描述数据,必须理解以下术语 −
- Data Name(数据名称)
- Level Number(级别编号)
- Picture Clause(图片子句)
- Value Clause(值子句)
01 TOTAL-STUDENTS PIC9(5) VALUE '125'. | | | | | | | | | | | | Level Number Data Name Picture Clause Value Clause
Data Name(数据名称)
数据名称必须在数据划分中定义,然后才能在过程划分中使用。 它们必须有一个用户定义的名称; 不能使用保留字。 数据名称引用了存储实际数据的内存位置。 它们可以是基本类型或团体类型。
示例
以下示例显示有效和无效的数据名称 −
Valid: WS-NAME TOTAL-STUDENTS A100 100B Invalid: MOVE (Reserved Words) COMPUTE (Reserved Words) 100 (No Alphabet) 100+B (+ is not allowed)
Level Number(级别编号)
级别编号用于指定记录中数据的级别。 它们用于区分基本项目和团体项目。 基本项目可以组合在一起以创建组项目。
序号 | 数据名称 & 描述 |
---|---|
1 |
01 记录描述条目 |
2 |
02 至 49 分组和基本项目 |
3 |
66 重命名子句项目 |
4 |
77 不可再分割的项目 |
5 |
88 条件名称输入 |
基本项目不能进一步划分。 级别编号、数据名称、图片子句和值子句(可选)用于描述基本项。
组项目由一个或多个基本项目组成。 级别编号、数据名称和值子句(可选)用于描述组项目。 组级别编号始终为 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 Clause(图片子句)
图片子句用于定义以下项目 −
数据类型可以是数字、字母或字母数字。 数字类型仅包含数字 0 到 9。字母类型包含字母 A 到 Z 和空格。 字母数字类型由数字、字母和特殊字符组成。
符号可与数字数据一起使用。 它可以是 + 或 –。
小数点位置可与数值数据一起使用。 假定位置为小数点位置,不包含在数据中。
长度定义数据项使用的字节数。
图片子句中使用的符号 −
序号 | 符号 & 描述 |
---|---|
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 Clause(值子句)
值子句是一个可选子句,用于初始化数据项。 这些值可以是数字文字、字母数字文字或图形常量。 它可以与团体项目和基本项目一起使用。
示例
以下示例显示了 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