数据分区是用来定义在该程序中使用的变量。为了描述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)
级别数是用来指定数据的记录中的级别。它们被用于基本事项和基件之间进行区分。基本项目可以分组以创建组的项目。
级别数 | 描述 |
---|---|
01 | 记录描述项 |
02 to 49 | 分组初级项目 |
66 | 重命名子句项目 |
77 | 项目不能被细分 |
88 | 条件名称项 |
例子
下面的例子展示了分组的基本事项:
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
图片子句用来定义下列项目:
在PIC子句中使用的符号
符号 | 描述 |
---|---|
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子句:
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