COBOL 数据类型
数据部(Data Division)是用来定义程序中使用的变量。为了描述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级数
级数是用于指定记录中的数据级别。它们用于区分基本项和组项。基本项可以组合在一起创建组项。
级数 | 描述 |
---|---|
01 | 记录描述条目 |
02至49 | 组项和基本项 |
66 | 重命子句项 |
77 | 不能被细分项 |
88 | 条件名称条目 |
Elementary items基本项目 不能进一步细分。级数,数据名称,图片子句和值子句(可选)用于描述基本项。
Group items组项目 由一个或多个基本项组成。级数,数据名称和值子句(可选)用于描述组项。组级数始终为01。
例
下面的示例演示Elementary items和Group items:
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和空格组成。字母数字类型由数字,字母和特殊字符组成。
符号:可以与数字数据一起使用。它可以是+或-。
小数点位置:可与数字数据一起使用。假设位置是小数点的位置,而不包括在数据中。
长度:定义数据项使用的字节数。
在图片子句中使用的符号:
符号 | 描述 |
---|---|
9 | 数字 |
A | 字母 |
X | 字母数字 |
V | 隐式小数 |
S | 符号 |
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值子句
值子句是一个可选子句,用于初始化数据项。该值可以是数字文字,字母数字文字,或象征常数。它可以与组项和基本项一起使用。
例
下面的例子显示值子句的使用:
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