COBOL数据类型

数据分区是用来定义在该程序中使用的变量。为了描述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 条件名称项
  • 基本项目不能再分。级别数,数据名称,图片子句和值子句(可选)用于描述基本项目。
  • 分组项目由一个或多个基本项目。级别数,数据名称和值子句(可选)用于描述组项目。分组级别数总是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

图片子句

图片子句用来定义下列项目:

  • 数据类型可以是数字,字母或字母数字。数字只包含数字0到9字母组成的字母A到Z和空格。字母数字组成的数字,字母和特殊字符。
  • 标志可用于数字数据。它可以是+或 - 。
  • 小数点位置可用于数字数据。假定位置是小数点的位置和不包括在数据中。
  • 长度限定所使用的数据项的字节数。

在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

联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2022

备案号:京ICP备15003423号-3