加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

COBOL数据布局分析

发布时间:2023-09-14 13:10:40 所属栏目:教程 来源:
导读:COBOL布局是每个字段的使用及其中存在的值的描述.以下是COBOL中使用的数据描述条目 :

重新定义条款
重命名条款
使用条款
copybooks

重新定义条款
redefines子句用于定义具有不同数据描述的存储.如果不同时
COBOL布局是每个字段的使用及其中存在的值的描述.以下是COBOL中使用的数据描述条目 :

重新定义条款
重命名条款
使用条款
copybooks

重新定义条款
redefines子句用于定义具有不同数据描述的存储.如果不同时使用一个或多个数据项,则可以将相同的存储用于另一个数据项.因此,相同的存储可以用不同的数据项引用.

语法
以下是redefines子句的语法 :
01 WS-OLD PIC X(10).
01 WS-NEW1 redefineS WS-OLD PIC 9(8).
01 WS-NEW2 redefineS WS-OLD PIC A(10).
以下是使用参数的详细信息 :
WS-OLD是重新定义的项目
WS-NEW1和WS-NEW2是重新定义项目
级别数量重新定义的项目和重新定义的项目必须相同,并且不能是66或88级别的数字.不要将VALUE子句与重新定义项一起使用.在"文件"部分中,不要使用带有01级别编号的redefines子句.重新定义定义必须是您要重新定义的下一个数据描述.重新定义的项目将始终与重新定义的项目具有相同的值.

示例
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
 
DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-DATE1 VALUE '20140831'.
   10 WS-YEAR PIC X(4).
   10 WS-MONTH PIC X(2).
   10 WS-DATE PIC X(2).
   05 WS-DATE2 redefineS WS-DATE1 PIC 9(8).
 
PROCEDURE DIVISION.
   disPLAY "WS-DATE1 : "WS-DATE1.
   disPLAY "WS-DATE2 : "WS-DATE2.
 
STOP RUN.
JCL 执行上述COBOL程序 :
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC pgm = HELLO

当您编译并执行上述程序时,它会产生以下结果 :
WS-DATE1 : 20140831
WS-DATE2 : 20140831

重命名条款
Renames子句用于为现有数据项指定不同的名称.它用于重新分组数据名称并为其指定新名称.新数据名称可以跨组或基本项重命名.级别号66保留用于重命名.

以下是Renames子句的语法 :
01 WS-OLD.
10 WS-A PIC 9(12).
10 WS-B PIC X(20).
10 WS-C PIC A(25).
10 WS-D PIC X(12).
66 WS-NEW RENAMES WS-A THRU WS-C.
只能在同一级别重命名.在上面的示例中,WS-A,WS-B和WS-C处于同一级别.重命名定义必须是您要重命名的下一个数据描述.不要将重命名与01,77或66级别号码一起使用.用于重命名的数据名称必须按顺序排列.带有出现子句的数据项无法重命名.

示例
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
 
DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-NUM.
   10 WS-NUM1 PIC 9(2) VALUE 20.
   10 WS-NUM2 PIC 9(2) VALUE 56.
   05 WS-CHAR.
   10 WS-CHAR1 PIC X(2) VALUE 'AA'.
   10 WS-CHAR2 PIC X(2) VALUE 'BB'.
   66 WS-RENAME RENAMES WS-NUM2 THRU WS-CHAR2.
 
PROCEDURE DIVISION.
   disPLAY "WS-RENAME : " WS-RENAME.
   
STOP RUN.
JCL 执行上述COBOL程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC pgm = HELLO

当您编译并执行上述程序时,它会产生以下结果 :
WS-RENAME : 56AABB

使用条款
Usage子句指定存储格式数据的操作系统.它不能与级别号66或88一起使用.如果在组上指定了usage子句,则所有基本项都将具有相同的用法子句. Usage子句提供的不同选项如下 :

显示
数据项以ASCII格式存储,每个字符占用1个字节.它是默认用法.

以下示例计算所需的字节数和减去;

01 WS-NUM PIC S9(5)V9(3) USAGE IS disPLAY.
It requires 8 bytes as sign and decimal doesn't require any byte.
 
01 WS-NUM PIC 9(5) USAGE IS disPLAY.
It requires 5 bytes as sign.
computationAL/COMP
数据项以二进制格式存储.这里,数据项必须是整数.

以下示例计算所需的字节数和减去;
01 WS-NUM PIC S9(n) USAGE IS COMP.
If 'n' = 1 to 4, it takes 2 bytes.
If 'n' = 5 to 9, it takes 4 bytes.
If 'n' = 10 to 18, it takes 8 bytes.

COMP-1
数据项类似于Real或Float,表示为单精度浮点数.在内部,数据以十六进制格式存储. COMP-1不接受PIC条款.这里1个字等于4个字节.

COMP-2
数据项类似于Long或Double,表示为双精度浮点数.在内部,数据以十六进制格式存储. COMP-2未指定PIC子句.这里2个字等于8个字节.

COMP-3
数据项以压缩十进制格式存储.每个数字占用半个字节(1个半字节),符号存储在最右边的半字节.

以下示例计算所需的字节数和减去;

01 WS-NUM PIC 9(n) USAGE IS COMP.
Number of bytes = n/2 (If n is even)
Number of bytes = n/2 + 1(If n is odd, consider only integer part)
 
01 WS-NUM PIC 9(4) USAGE IS COMP-3 VALUE 21.
It requires 2 bytes of storage as each digit occupies half a byte.
 
01 WS-NUM PIC 9(5) USAGE IS COMP-3 VALUE 21.
It requires 3 bytes of storage as each digit occupies half a byte.

copybooks
COBOL副本是一组定义数据结构的代码.如果在许多程序中使用特定的数据结构,那么我们可以使用副本而不是再次编写相同的数据结构.我们使用copY语句在程序中包含一本字帖. copY语句用于WorkingStorage部分.

以下示例包含COBOL程序内的副本和减号;

DATA DIVISION.
WORKING-STORAGE SECTION.
copY ABC.
这里ABC是副本名称. ABC副本中的以下数据项可以在程序中使用.

01 WS-DESCRIPTION.
   05 WS-NUM.
      10 WS-NUM1 PIC 9(2) VALUE 20.
      10 WS-NUM2 PIC 9(2) VALUE 56.
   05 WS-CHAR.
      10 WS-CHAR1 PIC X(2) VALUE 'AA'.
      10 WS-CHAR2 PIC X(2) VALUE 'BB'.

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章