COBOL程序设计.ppt
《COBOL程序设计.ppt》由会员分享,可在线阅读,更多相关《COBOL程序设计.ppt(89页珍藏版)》请在三一办公上搜索。
1、第四章 数据部之一,软件学院代飞2011.秋,4.1 概述,1、数据部的作用数据部(DATA DIVISION)是整个COBOL程序中唯一描述数据的部分。凡是在程序中涉及的全部数据(输入数据、输出数据以及中间数据),都要在数据部中加以说明描述两种数据:孤立数据项组合,组合数据项数据是相互关联的,也就是说存在内在联系这是COBOL程序数据的最大特点,程序过程部中出现的所有数据项都应当在数据部中对它们的属性进行说明。包括:(1)每一个数据项的类型(是数值型或字符型),它们在内存中的存储形式。它们的长度(占多少字节)。(2)数据项间的相互关系。有的数据项之间有从属关系例如一个组合项包括若干个初等项。
2、哪些数据项是文件记录中的一部分?哪些数据项与文件无关,即不从属于记录。(3)描述记录与文件的关系,即内存中的输入输出记录区是与哪一个文件有关联(4)文件的属性。由多个记录组成一个“物理块”,一个记录包含多少个字节?文件有无标号记录等。,2、数据的层次和层号COBOL中把有从属关系的数据用层次(level)关系来描述。数据的层次结构是:文件记录组合项初等项。逻辑上不能再细分的项,称为初等项(亦称基本项Elementary item)。包含苦干个初等项的项称组合项(Group item)。数据项的最高层次是记录(Record)。在一个记录中可以分为若干层次。,如有一“工人的每周工时记录”,其数据关
3、系如下:TIME-RECORD是记录名,WEEKS-END-DATA和HOURS-WORKED 是组合项,我们在数据部中按照以下方式来表示:01 TIME-RECORD.03 NAME PIC X(20).03 WORKER-NUMBER PIC 9(6).03 WEEKS-END-DATE.05 MONTH PIC 99.05 DAYY PIC 99.05 YEAR PIC 99.03 HOURS-WORKED.06 REGULAR PIC 99.06 OVERTIME PIC 99.,层次规定如下:(1)用来描述数据的层次结构的层号从01开始,到49,即可用的层号为0149。记录的层次最高
4、,定为01层号(2)从属项的层号比其上属项的层号高。即层号小的组合项包含层号大的数据项(组合项或初等项)。层号不必要求连续。(3)如果几个数据项都从属于同一组合项但互不从属,则这几个数据项应具有相同的层号,3、数据部的结构 数据部中通常用到的有以下几个节:(一)文件节(FILE SECTION)用来描述程序中用到的输入文件和输出文件及其记录中各数据项的属性。(二)工作单元节(WORKING-STORAGE SECTION)用来描述程序中用到的中间数据项。(三)联接节(LINKAGE SECTION)用来描述与调用程序间发生数据传递的数据项。(四)报表节(REPORT SECTION)为了完成报
5、表编制功能,此节用来规定欲输出的报表的“体裁”,设计各报表栏的打印形式和方法等。后面两个部分将在以后介绍。,4.2 文件节(FILE SECTION),1、文件节的作用程序中每一个输入或输出文件都要在文件节中加以描述。(1)文件名(内部文件名)和文件属性。(2)文件中包括的记录的名字。(3)每个记录中数据的层次关系。(4)记录中各数据项的数据形式和占内存的大小。,DATA DIVISION.FILE SECTION.FD ACCOUNTS-RECEIVABLE(文件名)LABEL RECORD IS STANDARD.DATA RECORD IS RECEIVABLE.01 RECEIVBLE
6、.(记录名)02 ACCOUNT PIC 9(6).02 FILLER PIC X(3).02 AMOUNT PIC 9(6).02 NAME PIC X(65).,2、文件描述文件描述从FD(FILE DESCRIPTION)开始。FD后面跟文件名。此文件名为程序中使用的内部文件名LABEL RECORD IS STANDARD表示“标号记录是标准”的。COBOL处理的磁盘磁带文件一般都有标号,故需要如此声明对于卡片文件、打印文件等没有标号的文件则应写成:LABEL RECORD IS OMITTEDDATA RECORD IS RECEIVABLE.表示文件中包含的记录名(RECEIVAB
7、LE)。这一项可以省略,3、记录描述记录描述由01层号开头,后跟记录名:01 RECEIVABLE.注意本行末尾的句点在数据部的文件节要描述出记录的层次关系以及描述每个初等项的类型和长度如果记录下面不再分项,则如下表示01 RECEIVABLE PIC X(80).,4、数据项描述在每一个初等项的名字后跟一个PIC子句,用来描述数据的类型和长度。例如:ACCOUNT PIC 9(6).数值型,6位FILLER PIC X(3).字符型,3个字符AMOUNT PIC 9(6).数值型,6位 NAME PIC X(65).字符型,65个字符,5、文件节的书写格式FD从A区开始,01层必须从A区开始
8、,其他层号可以从A区也可以从B区开始。最好按照层次关系写成缩进形式:FD 01 A02 B 03 C,6 举例(例4.1),4.3 字型子句(PIC子句),PIC是Picture的缩写,用来描述每一个初等数据项:数据项的类型(数值、字符、字母);数值型的数据是否包含正负号、小数点数据项占多大的内存域是否需要按打印的要求准备相关字符($、+、-、*),例如01 A.02 A1 PIC 9999.02 A2 PIC AAAA.02 A3 PIC XXXX.A是记录名,下属三个初等项。A1是数值型,A2是字母型,A3是字符型。分别由四位构成。,1、数值型数据的描述,(一)”9”描述符表示在该位置上可
9、以放入一个09之间的数字。01 A PIC 999.表示A可以放入000999之间任一个三位数。999可以记为9(3),注意:1、在数值型的数据中只能放09之间的数字,不能放空格.2、用”9”描述符只能表示整数,如果输入小数,则被略去MOVE 1.25 TO A3、如果送入一个负号,则负号被略去MOVE-1.5 TO A,(二)”V”描述符指出在数值数据结构中隐含的小数点位置03 M PIC 999V99.表示M共5位,可以放09的数字。前三位与后两位之间有一个隐含的小数点。注意:这个小数点不占内存,而是由编译器处理的。MOVE 215.63 TO M,MOVE 1215.637 TO M注意
10、,M只能存放5个数字,那么,该语句执行过后M的值是215.63。更多的例子如下:,说明(1)V在描述符的最后,相当于没有小数点(2)一个数据的描述符中只能出现一个V(3)运算时,按隐含的小数点位置对准进行运算例如(4)显示时,只将内存中各字节的信息显示,小数点不会显示出来。如果想显示小数点,使用后面介绍的编辑型数据,(三)P描述符当数值很大,后面有若干0,可以使用P描述符。如:1000000000(10亿)01 A PIC 9999999999使用P,表示为01 A PIC 9PPPPPPPPP或01 A PIC 9P(9)其在内存中只保存一位数字9,另外9个P不占内存字节。但,运算的时候,其
11、相当于9109,当数值很小的时候,如0.000023,可以如下描述:01 B PIC PPPP99 或 P(4)99。表示在两个数字前,还有4个0。注意,4个0前是小数点和一个前导0。如图:则B的值为0.000023,注意:(1)P必须出现在全部“9”之前或全部“9”之后,如99P99的写法是错误的。P表示小数时,有小数点和前导0。(2)用“P”时,则小数点的位置已经确定。V和P不能相矛盾。如:PPV99是错误的PP99和VPP99=等价(3)如果“9”之后有n个P,表示内存中的数应乘以10n。如果在“9”之前有n个P,则应乘以10-(n+k),其中k为9的个数。,举例:,(4)显示或打印的时
12、候,P并不打印(和V相似),上表中AMOUNT如果直接输出的话就是1802.(5)P描述符在商业上不常用,主要用于科技计算。但是请注意,COBOL语言本身主要不是用于科学计算。,(四)S描述符负号如何表示?需要一个“S”描述符,如:02 D PIC S99.可以将一个正的或负的数存放在D中,如:MOVE-12 TO D.注意:如上描述的数据D只有二位,S不计入数据项长度。系统可以在内存中,D数据项的最后一个字节中,放入一个标志位,表示此数是负数。,例如:上表中表示隐含的小数点位置,4表示对于C这种描述的数据项,在4所在的字节里面,放入一个负号标记。表示整个数值是负的,即表示-1112.34在最
13、后一个字节中放入某个信息,一般是将此字节的前四位1111改为1101(D)表示“负”,1100(C)表示“正”,“F”1111表示无符号。-EBCDIC,注意(1)S必须是最左边的一个描述符(2)在内存中,S不占位,在运算时,S起作用。输出的时候,按内存实际信息输出,符号不会显示出来。例如:在IBM Z900中,-12的输出是1K,2 字母型数据的描述,字母型数据项用A描述符,在这种类型的数据项中只允许存放字母和空格(注意和后面字符型的区别)。例如:02 T PIC AAAA.表示T中可以放入4个字母MOVE ABCD TO T则内存中内容如右图,T,3 字符型数据的描述,字符型数据的规定:由
14、任意的COBOL字符组成的数据,称为字符型数据。该类型不是数值类型,不能用于计算03 A PIC X(3).,MOVE YES TO A.,MOVE N1 TO A.,说明:(1)字符型数据可以用X描述,也可以用9和A来描述。如对于COBOL-85八个字符,可以如下描述:02 R3 PIC X(8).02 R3 PIC A(5)X9(2).,可以看出:当混合使用描述符9,A或X时,数据必定为字符型的,譬如用99X99,A99,AXA等描述的都是字符型的数据项。数值型数据的描述只能用9,V,S,P描述符。字符型数据的描述中可以用9,A,X。(2)字母型数据既可以用A描述,也可用X。字母型的作用是
15、当某一数据项中全为字母的时候,可以保证数据的正确。将非字母的数据送入字母型会出错。,(3)字符型数据中可以放数字,如:02 K PIC X(3).02 M PIC 9(3).MOVE 123 TO K.MOVE 123 TO M.注意,K和M中都是123,但是其含义不同,M是123这个值,而M只是123这三个字符MOVE 123 TO K.MOVE 1A3 TO M注意:字符型数据不能用于计算,例43 在数据部中描述职工工资记录。设职工工资数据存放在一个磁盘文件中,假定该文件的内部文件名为INPUT-FILE,记录名为GZQD-R(以汉语拼音表示的“工资清单”,“R”是记录的缩写)。每个职工的
16、工资清单为一个记录,它包括职工编号、姓名、基本工资、附加工资、副食补助、洗理费、托儿费、房租、互助金、病串假扣除等项。,4 编辑型描述符,大家观察如下例子:02 H PIC 999PPP.02 Q PIC 9(6).MOVE 135000 TO H.MOVE 1 TO Q.DISPLAY H.DISPLAY Q.结果是什么样子?,135000001,这是你想要的吗?,$99.20 123,456,789 等显示方式如何实现?编辑型描述符:COBOL专门有一种形式的数据项,它不是作计算用的,而是只作为输出数值数据时增加或改变某些所需的符号,起“编辑”的作用,用于显示,注意:编辑型数据项(例如上面
17、的B)仅仅是为了输出的需要,没有其它作用,它不能用来运算。,编辑描述符:(一)插入小数点“.”,用“.”描述符例如:01 H PIC 99V99.01 Q PIC 99.99.PROCEDURE DIVISION.S.MOVE 12.34 TO H.MOVE H TO Q.DISPLAY H.DISPLAY Q.,123412.34,01 H PIC 999v99.01 Q PIC 9.9.PROCEDURE DIVISION.S.MOVE 112.50 TO H.MOVE H TO Q.DISPLAY H.DISPLAY Q.,112502.5,(二)插入逗号“,”作分位号,用“,”描述符例
18、如:01 H PIC 9(6)V99.01 Q PIC 999,999.99.PROCEDURE DIVISION.S.MOVE 123456.78 TO H.MOVE H TO Q.DISPLAY H.DISPLAY Q.,12345678123,456.78,(三)插入零,用“0”描述符例如:WORKING-STORAGE SECTION.01 H PIC 999PPPP.01 Q PIC 9990000.PROCEDURE DIVISION.S.MOVE 123 TO H.MOVE H TO Q.DISPLAY H.DISPLAY Q.,1231230000,(四)插入空格,用“B”描述
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- COBOL 程序设计
链接地址:https://www.31ppt.com/p-4849721.html