COBOL 教程.docx
- 文档编号:22906729
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:22
- 大小:49.42KB
COBOL 教程.docx
《COBOL 教程.docx》由会员分享,可在线阅读,更多相关《COBOL 教程.docx(22页珍藏版)》请在冰豆网上搜索。
COBOL教程
COBOL教程
COBOL教程
COBOL教程--
Tag:
COBOL教程
CHAPTER1COBOL概述
CHAPTER2过程部初步
CHAPTER3标识部和环境部
CHAPTER4数据部之一
CHAPTER5过程部之二
CHAPTER6过程部之三
CHAPTER7各部之间的关系及程序举例
CHAPTER8联机及批量程序的一些差异
CHAPTER9COBOL编程规范
CHAPTER1COBOL概述
COBOL是CommonBusinessOrientedLanguage的缩写。
它不仅是商业数据处理的理想语言,
而且广泛用于数据管理领域,因此COBOL语言也被称为“用于管理的语言”。
一。
COBOL语言的特点
最适于数据处理领域:
算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。
二。
COBOL的组成部分:
1。
标识部(IDENTIFICATIONDIVISION):
用于标识程序名。
2。
环境部(ENVIRONMENTDIVISION):
用于说明程序运行的环境。
3。
数据部(DATADIVISION):
用于说明程序中涉及的所有数据。
4。
过程部(PROCEDUREDIVISION):
是程序的核心部分,它决定计算机应进行什么操作。
程序举例:
三。
最简单的COBOL
COL1---67812---7273---80
IDENTIFICATIONDIVISION。
PROGRAM-ID。
PSAMPLE1。
ENVIRONMENTDIVISION。
DATADIVISION。
PROCEUREDIVISION。
DISPLAY‘THISISACOBOLPROGRAM.’
STOPRUN。
四。
COBOL源程序的书写格式:
第1至6列为“标号区”。
第7列为“续行标志区”
第8至此11列,称为“A区”。
程序中有些内容如部头,节头,段头,层号01,层号77及文件
描述符FD等应从A区开始写。
第12至此72列,称为“B区”。
写程序中的正文部分。
如过程部中的句子只能从B区开始写。
第73至80列,称为“注释区”。
五。
COBOL字符集包括:
数字0---9,字母A---Z,a---z,专用字符:
+-*/=,.;‘()<>$及空格。
属于系统字符集而不属于COBOL字符集的字符只能出现在COBOL程序中的字符串里。
六。
常量:
COBOL常量分为数值常量(如100,-29),非数值常量(如
‘ABC’)和表意常量(如ZERO,SPACE,HIGH-VALUE,LOW-VALUE,QUOTE,ALL常量)。
所处理的数据的特点七。
COBOL
层次的概念:
数据间存在的从属关系。
文件的概念:
多个记录可以组成一个文件。
记录的概念:
具有一定层次关系的一组数据项的最大集合,它是内存中具有独立逻辑含义的最大存取项,具有最高层次。
CHAPTER2过程部初步-----最基本的过程部语句
一。
输入输出语句。
1。
ACCEPT语句:
直接从终端键盘或系统指定的输入设备上输入数据。
ACCEPT标识符[FROM助忆名]
注:
A。
标识符(identifier)指的是能唯一地标识一个数据项的数据名,不能唯一地标识一个
数据项的数据名不是标识符。
标识符可以是组合项。
B。
在ACCEPT语句中如不写FROM部分,如ACCEPTA,则表示从系统隐含指定的
设备上读入一个数据给A。
如果不想从指定的设备上输入,则要用FROM选项,
这时“助忆名”需要在环境部中事先说明和那种外部设备相联系。
如:
ENVIRONMENTDIVISION。
(环境部)
CONFIGRATIONSECTION。
(配置节)
SPECIAL-NAMES。
(专用名段)
CONSOLEISABC
如在过程部中有ACCEPTTFROMABC。
则表示要从控制台接收数据2。
DISPLAY语句:
从计算机内存中输出到某一指定的输出设备上。
DISPLAY{标识符1,常量1}[标识符2,常量2]。
。
。
[UPON助忆名]
(标识符和助忆名的说明同上)
ACCEPT语句和DISPLAY语句不必定义文件适用于少量的数据输入输出。
3。
READ语句:
COBOL语言中数据的输入输出主要是通过对外部文件的读写进行的。
READ语句就是从外部文件上读入数据输出到程序中的数据项中。
在程序中用到的所有文件都需要在环境部中指定程序中用到的文件名与实际外部文件的联系。
数据部也要对文件加以描述。
指定数据结构各数据项所占的内存单元长度以及数据形式。
COBOL的存取是以文件为对象以记录为单位的。
READ语句的最简单的格式为:
READ文件名
ENVIRONMENTDIVISION。
INPUT-OUTPUTSECTION。
FILE-CONTROL。
SELECTIN-FILLEASSIGNTO外部文件名。
为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即‘输入文件纪录区’。
每一个输入文件都有相应的‘输入文件纪录区’,与之一一对应。
亦即在数据部中描述文件的数据结构。
3。
READ语句:
假设IN-FILE文件每一记录中包含的内容为:
产品代码,产品数量,产品单价,生产日期。
设某一记录的具体数据
如下:
00100100000100019990322
prodcodequantitypriceyear
monday
如果我们希望读入该记录并对各数据项进行处理,则需要在‘输入纪录区’中划分出各数据项,以便存放相应的数据。
定义输入纪录区以及划分记录区中各数据项的工作是由数据部来完成的。
下面我们简单介绍数据部定义记录区方法,针对上面输入数据的特点,我们可以在数据部中对记录区作如下描述:
DATADIVISION。
FDIN-FILELABLERECORDISSTANDARD。
01IN-RECORD。
(定义记录区名为IN-RECORD)
02PROD-CODEPIC9(4)。
02PROD-QUANTITYPIC9(5)。
02PROD-PRICEPIC9(6)。
02MANU-DATE。
(生产日期为一组合项)
05DATE-CCYYPIC9(4)。
05DATE-MMPIC9
(2)。
05DATE-DDPIC9
(2)。
其中,FD即FILEDESCRIPTION,表示从该行起是‘文件描述体’。
LABLERECORDISSTANDARD:
所有的磁盘文件和磁带文件都必须写明此句。
01层定义‘输入纪录区’的名字为IN-RECORD,由于01层属于FD描述体,因此也就指定了IN-RECORD和IN-FILE的关系。
亦即从IN-FILE读入的数据存放在IN-RECORD记录区中。
这样,在执行一次READ语句后,文件中一个记录的数据便输入到内存记录区,按排列顺序分别送到记录区中各数据项中。
注意文件的各记录中的数据是不分数据项的,只是按一定的顺序把数据存放在各字节中。
所以数据部对记录区中各数据项的描述应该与文件的记录中各数据排列次序和长度相一致。
READ语句的一般形式:
READ文件名RECORD[INTO标识符][ATEND执行语句],例如:
READIN-FILEINTOTEMP-RECORDATENDSTOPRUN该语句
除了将读到的数据传送到IN-RECORD之外,还传送到TEMP-RECORD中。
在遇到文件尾时,程序结束运行。
4。
WRITE语句:
将内存中的数据输出到外部设备,主要是由WRITE语句来完成的。
WRITE语句的最简单的格式为:
WRITE记录名(注意WRITE语句的操作对象是记录,所以是‘记录名’而不是‘文件名’)
与输入文件相似输出文件也要在环境部中指定所对应的实际存在的外部文件:
ENVIRONMENTDIVISION。
INPUT-OUTPUTSECTION。
FILE-CONTROL。
SELECTOUT-FILLEASSIGNTO打印机名。
也要在数据部中定义输出记录区:
DATADIVISION。
FDOUT-FILELABLERECORDISOMITTED。
01OUT-RECORD。
02PROD-CODEPIC9(4)。
02PROD-QUANTITYPIC9(5)。
02PROD-PRICEPIC9(6)。
02MANU-DATE
05DATE-CCYYPIC9(4)。
05DATE-MMPIC9
(2)。
05DATE-DDPIC9
(2)。
LABLERECORDISOMITTED:
凡输出设备是打印机的都必须写明此句。
如输出
设备是磁盘,则仍用LABLERECORDISSTANDARD。
01层定义‘输出纪录区’的名字为OUT-RECORD,由于01层属于FD描述体,因此也就指定了
OUT-RECORD和OUT-FILE的关系。
在用WRITE语句输出一个记录之前,应向输出记录区传送数据。
如已将数据传送到上述各数据项中,则在执行WRITEOUT-RECORD语句后,则记录区中的数据通过打印机打印出来。
WRITE语句的一般形式:
标识符2LINE
BEFORE整数LINES
WRITE记录名[FROM标识符
1]AFTERADVANCING助忆名
PAGE5。
OPEN语句:
程序中如果需要读写文件,则该文件必须先用OPEN语句打开,系统在执行READ,WRITE以前先检查该文件是否已在规定的外部设备上准备就绪。
OPEN语句的一般格式为:
INPUT文件名1[,文件名2]。
。
。
OPENOUTPUT文件名3[,文件名4]。
。
。
。
。
。
6。
CLOSE语句:
当对一个文件的读或写的操作已完成,就应关闭该文件。
CLOSE语句的一般格式为:
CLOSE文件名1[,文件名2]。
。
。
COBOL通过2位长度的文件状态字(FILE-STATUS)来表示文件的操作结果是否成功,常见的文件状态值及意义:
二。
算数运算语句
1。
ADD语句:
格式1:
ADD标识符1,标识符2。
。
。
TO标识符m[,标识符n]。
。
。
常量1,常量2
格式2:
ADD标识符1,标识符2,标识符3
常量1,常量2,常量3
。
。
。
GIVING标识符m[,标识符n]。
。
。
2。
SUBTRACT语句:
格式1:
SUBTRACT标识符1,标识符2。
。
。
FROM标识符m[,标识符n]。
。
。
常量1,常量2
格式2:
SUBTRACT标识符1,标识符
2。
。
。
FROM标识符
常量1,常量2常量
GIVING标识符n[,标识符p]。
。
。
3。
MULTIPLY语句:
格式1:
MULTIPLY标识符1BY标识符2[,标识符3]。
。
。
常量1,
格式2:
MULTIPLY标识符1BY标识符2GIVING标识符3[,标识符4]。
。
。
常量1,常量2
4。
DIVIDE语句:
格式1:
DIVIDE标识符1INTO标识符2[,标识符3]。
。
。
常量1
格式2:
DIVIDE标识符1INTO标识符2GIVING标识符3[,标识符4]。
。
。
常量1BY常量2
注意:
DIVIDEAINTOB是指B/A?
B
DIVIDEAINTOBGIVINGC是指B/A?
C
DIVIDEABYBGIVINGC是指A/B?
C
5。
COMPUTE语句:
COMPUTE标识符1[,标识符2]。
。
。
=算术表达式
运算的优先级由高到低顺序为:
(),正负号,**,*或/,+或-
如:
C=3,D=5,E=2,F=1则:
COMPUTA,B=-(C+D)*2/E**3-F=-3
三。
传送语句(MOVE)
MOVE语句用来实现内存中数据的传送(而不是内存和外设之间的传送)。
MOVE语句的一般格式为:
MOVE标识符1TO标识符2[,标识符3]。
。
。
常量1
MOVE语句的传送规则:
1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送。
2,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对
齐处理。
3,对字母或字符数据(非数值型数据)的传送,按左对齐处理。
4,初等项和组合项之间可以相互传送。
关于各类数据之间的传送规则将在第五章中介绍。
四。
转移语句(GOTO)
当需要使程序改变正常执行的顺序时,可以使用无条件转移语句GOTO。
其一般格式为:
格式1:
GOTO过程名
格式2:
GOTO过程名1[,过程名2]。
。
过程名nDEPENDINGON标识符
注意:
只能转移到段或节的开头,不能转移到段或节的当中某一语句。
段名或节名为过程名。
五。
条件语句(IF)
当需要根据给出的某些条件是否满足来决定应执行哪一部分语句时,可以使用条件语句IF。
其一般格式为:
IF条件语句组1ELSE语句组1[END-IF]
NEXTSENTENCEN
EXTSENTENCE
COBOL关系运算符:
ISGREATERTHAN(>)
ISLESSTHAN(<)
ISEQUALTO(=)
NOTGREATERTHAN(NOT>)(<=)
NOTLESSTHAN(NOT<)(>=)
NOTEQUALTO(NOT=)注意:
句点在IF语句中的特殊作用。
如:
IFA>0
DISPLAYA。
ADDATOTOTAL。
DISPLAYTOTAL。
与IFA>0
DISPLAYA
ADDATOTOTAL。
DISPLAYTOTAL。
就不同。
为避免出现问题应该使用显式终止符(END-IF,END-PERFORM等)代替隐式终
止符(句点“。
”)
六。
停止语句(STOP)
其一般格式为:
STOPRUN
常量
STOPRUN执行后,程序停止运行,停止后不能再接着运行,如需
要,可重新运行一次。
STOP常量,表示程序暂时挂起不往下执行,显示出此常量。
七。
返回语句(GOBACK)
停止运行,将控制权返回给上一级。
可用本语句代替STOP语句。
子程
序必须用GOBACK而
不能用STOP:
因为STOP停止的是一个RUNUNIT(运行单元)。
CHAPTER2过程部初步-----最基本的过程部语句
一。
标识部(IDENTIFICATIONDIVISION)
IDENTIFICATIONDIVISION.
PROGRAM-ID.程序名。
[AUTHOR。
作者名。
]
[INSTALLATION。
计算机设置场所。
]
[DATE-WRITTEN。
源程序编写日期。
]
[DATE-COMPILED。
源程序编译日期。
]
[SECURITY。
保密程度。
]
二。
环境部(ENVIRONMENTDIVISION)
ENVIRONMENTDIVISION.
CONFIGRATIONSECTION。
SOURCE-COMPUTER。
源计算机名。
OBJECT-COMPUTER。
目标计算机名。
[SPECIAL-NAMES。
专用名描述项。
]
[INPUT-OUTPUTSECTION。
FILE-CONTROL。
{文件控制描述体}。
。
。
[I-O-CONTROL。
输入输出控制描述体]]1。
CONFIGRATIONSECTION。
专有名段的一般格式:
SPECIAL-NAMES。
[DICIMAL-POINTISCOMMA。
]
[CURRENCYSIGNIS非数值常量。
]
[专用名IS助忆名。
]2。
INPUT-OUTPUTSECTION。
INPUT-OUTPUTSECTION包括两个段,即:
FILE-CONTROL和I-O-CONTROL。
FILE-CONTROL段是为文件分配外部文件。
I-O-CONTROL段的作用是可以指定目标程序运行时,几个文件共用一个内存区,以省内存。
在此暂不作介绍。
FILE-CONTROL段的主要功能是给程序中使用的文件命名。
指出存放该文件的外部设备及其它有关文件控制的信息。
对文件的描述是由SELECT子句实现的。
FILE-CONTROL段的一般格式:
INPUT-OUTPUTSECTION。
FILE-CONTROL。
SELECT文件名ASSIGNTO外部文件名
[ORGANIZAIONIS„](SEQUENCIAL,INDEXED,
RELATIVE)
[ACCESSMODEIS„](SEQUENCIAL,RANDOM,DYNAMIC)
[RECORDKEYIS„]
[FILESTATUSIS„]
CHAPTER4数据部之一
一。
数据部概述。
1。
数据部的作用是定义数据项属性,描述数据结构。
所有在过程部中出现的数据项都必须在数据部中对它们的属性进行说明。
包括数据项的类型,数据项间的关系,记录与文件的关系,文件的属性。
2。
数据的层次和层号:
COBOL中把有从属关系的数据用层次(level)关系来描述。
数据的层次结构是:
记录--》组合项--》初等项。
如,在前面READ语句
IN-FILE文件具有如下结构:
中定义的
01IN-RECORD。
02PROD-CODEPIC9(4)。
02PROD-QUANTITYPIC9(5)。
02PROD-PRICEPIC9(6)。
02MANU-DATE。
05DATE-CCYYPIC9(4)。
05DATE-MMPIC9
(2)。
05DATE-DDPIC9
(2)。
层次规定如下:
(1)用来描述数据的层次结构的层号从01到49。
记录的层次最高,定为01层号。
(2)从属项的层号比其下属项的层号高。
层号不必要求连续。
(3)从属于同一组合项但不互相从属的数据项具有相同的层号。
3。
数据部的结构:
数据部中通常用到的有以下几个节:
(1)FILESECTION:
描述程序中用到的输入输出文件及其记录中各数据项的属性。
(2)WORKING-STORAGESECTION:
描述程序中用到的中间数据项。
(3)LINKAGESECTION:
描述与调用程序间发生数据传递的数据项。
(4)REPORTSECTION:
为了完成报表编制功能,此节用来规定欲输出的报表的
‘体裁’,设计各报表栏的打印形式和方法等。
二。
文件节。
1。
文件节的作用:
程序中每一个输入或输出文件都要在文件节中加以描述。
内容包括:
文件名和文件属性;文件中包括的记录名字;每个记录中数据的层次关系;记录中各数据项的数据形式和占内存的大小。
最简单的文件描述体的一般格式为:
2。
文件描述:
FD文件名
LABLERECORDISSTANDARD
RECORDSAREOMITTED
DATARECORDIS数据名
RECORDSARE
3。
记录描述:
记录描述体由01层号开始,后跟记录名。
如果记录本身就是一个初等项,则在记录名后描述记录长度;否则,数据名后跟句点,下面定义记录的数据结构。
如:
DATADIVISION。
FILESECTION。
FDIN-FILE
LABLERECORDISSTANDARD。
DATARECORDISIN-FILE-RECORD。
01IN-FILE-RECORDPICX(80)。
DATADIVISION。
FILESECTION。
FDIN-FILE
LABLERECORDISSTANDARD。
DATARECORDISIN-FILE-RECORD。
01IN-FILE-RECORDPICX(80)。
或(01IN-FILE-RECORD。
05DATEPIC9(8)。
05PROD-CODEPIC9(4)。
05PROD-PRICEPIC9(6)。
)4。
数据项描述:
在每一个初等项的名字后跟一个PIC子句。
用它来描述数据的类型和长度。
PIC子句在下面详细说明。
5。
文件节的书写格式:
FD从A区开始书写,01层号也从A区开始,其它层号可以从A区也可以从B区开始。
为了看起来层次分明,最好从B区开始。
三。
PIC子句。
PIC即PICTURE的缩写。
PIC子句用来描述每一个初等项。
它说明:
(1)数据项是什么类型。
(2)数据项占多大内存域。
(3)是否需要按打印的要求准备有关字符。
PIC子句的主要作用在于描述一个初等项的一般特征
和编辑要求。
1。
数值型数据的描述:
‘9’描述符:
表示该位置上可以放入一个0~9之间的数字。
因此:
01APIC999。
或
01APIC9(3)。
表示A可以存放000~999之间的一个三位数。
有几个9表示有几位数。
注意:
(1)在数值型数据项中只能放数字不能放空格。
(2)用‘9’描述符只能表示整数,如输入小数部分,则小数部分被舍弃。
(3)如送入一个负数,则负号被舍弃。
‘V’描述符:
指出在数值数据结构中隐含的小数点的位置。
小数点不占内存单元。
如:
03MPIC9(3)V9
(2)。
注意:
(1)V在描述符的最后,则等于无小数点。
(2)一个数据的描述符中只能出现一个V。
(3)进行数据传送或运算时,按隐含的小数点位置对准进行传送或运算。
(4)V表示的小数点只在传送或运算时起作用,不能被显示或打印出来。
‘S’描述符:
如果想在数据项中放入一个带符号的数,可以用‘S’描述符。
如:
03MPICS9(3)V9
(2)。
注意:
(1)S描述符必须是最左边的一个描述符。
(2)在内存中,S不占位数,在传送或运算时起作用。
2。
字母型数据的描述:
字母型数据项用A描述符,在这种类型的数据项中只允许存放字母或空格。
3。
字符型数据的描述:
由任意的COBOL字符组成的数据,称为字符型数据,它是非数值型的,不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- COBOL 教程