C4-COBOL 数据类型

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 itemsGroup 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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cobol程序在执行时,如果出现了非法操作或者使用了无效的存储区域,就会导致程序终止并返回一个异常码,其中最常见的异常码之一就是S0C4。 S0C4异常码表示了程序执行过程中的存储保护异常。这通常是由于程序在访问某个存储区域时出现了错误,可能是由于以下几种情况导致的: 1. 空指针引用:程序试图使用一个未初始化的指针或者指向空地址的指针。这通常是由于程序员未正确初始化指针或者未对指针进行空指针检查而导致的。 2. 数组越界访问:程序试图访问一个数组中超出有效索引范围的元素。这通常是由于程序员在使用数组时未正确控制循环变量从而导致的。 3. 未初始化的变量:程序试图使用一个未初始化的变量。这通常是由于程序员未正确初始化变量而导致的。 当出现S0C4异常时,系统会在程序终止前生成一个错误报告,其中包含了导致异常的语句和相关的存储区域信息。程序员可以通过查看错误报告来定位和修复异常引发的原因。 为了避免S0C4异常的发生,程序员在编写Cobol程序时应该注意以下几点: 1. 初始化指针和变量:使用指针和变量之前应该先进行初始化操作,确保指针不为空指针,变量有有效的初值。 2. 数组访问的范围:在使用数组时,应该确保循环变量的范围在有效的索引范围内,避免越界访问。 3. 错误处理机制:合理使用条件语句和错误处理机制,在可能出现异常的地方进行错误检查和处理,避免异常情况的发生。 总之,通过合理的程序设计和良好的编码习惯,可以减少Cobol程序出现S0C4异常的概率,提高程序的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值