COBOL语言是一种面向过程的高级程序设计语言,主要用于数据处理,是国际上应用最广泛的一种高级语言。COBOL是英文Common Business-Oriented Language的缩写,原意是面向商业的通用语言。它采用 300多个英语单词作为保留字,以一种接近于英语书面语言的形式来描述数据特性和数据处理过程,因而便于理解和学习。COBOL语言是专门为企业管理而设计的高级语言,可用于统计报表、财务会计、计划编制、作业调度、情报检索和人事管理等方面。

COBOL 发展史

50年代中期电子计算机开始用于商业和企业的事务处理,而事务处理与科学计算不同,数据繁多而运算简单,它只需要一定的运算能力,但对数据结构的描述和大批量数据的分析处理方面则要求有很强的功能。

  • 1956年在美国富兰克林学会召开的高级语言学术讨论会上提出FLOWMATIC语言,并在UNIVAC Ⅰ型计算机上实现。这是第一个面向数据处理的语言,它为COBOL的诞生创造了良好的条件。

  • 1959年5月美国国防部召开专门会议,讨论建立通用商业语言的要求和可能性,确定了这种语言的基本设计思想和应具有的特点。会后成立数据系统语言委员会(CODASYL),其中有一个短期工作委员会专门负责COBOL语言的开发。

  • 1959年9月提出初稿,1960年4月正式公布第一个COBOL文本,称为COBOL-60。经过进一步扩充和完善,又出现了COBOL-61和扩展COBOL-61。

  • 1965年出现COBOL-65。1968年被美国国家标准化协会(ANSI)批准为标准文本,即ANSICOBOL X3.23-1968,简称COBOL-68。

  • 1972年国际标准化组织 (ISO)把此文本推荐为国际标准,即ISO COBOL-72,并被美国、英国、法国、日本和苏联等21个会员国所承认。

  • 1974年美国国家标准化协会对COBOL-68作了修改补充,公布了新文本ANSI COBOLX3.23-1974。

  • 1978年被国际标准化组织推荐为国际标准文本,即ISO COBOL-78。计算机制造商均以ISO COBOL-72或ISO COBOL-78作为设计软件的依据,几乎在所有的大、中、小型计算机上都配有COBOL语言,微型计算机则采用COBOL的一个子集。中国引进COBOL语言后还增加了汉字处理功能。

COBOL语言的主要特点是 :

  • 面向文件。COBOL语言是一种典型的按文件系统方式进行数据处理的语言。文件(如档案、帐册等)是事务数据处理的基础。COBOL程序将处理对象按一定方式组织成文件,记录在计算机的外部设备上。它通过对数据层次结构的描述,说明同一文件中数据项之间的联系,因而可在数据的任一层次进行检索和处理。

  • 接近英语自然语言。COBOL语言中大量采用普通英语词汇和句型,如描述性子句接近英语主表结构,操作性语句接近英语的祈使句。例如,把A和B两个数据项的内容相加,就写成ADD A TOB。因此COBOL程序看起来很像一篇用英语写的文章,学过英语的人很容易看懂。

  • 通用性强。在COBOL程序中数据、运行环境和处理过程是分别单独描述的。它通过定义记忆名,使处理过程的描述中不直接涉及使用的外部设备的名字。因此,只要对设备描述和记忆名定义作少量的修改,即可将一个COBOL程序移植到另一台计算机上运行。

  • 功能模块化。在标准COBOL文本中实现功能模块化,它对每一种功能模块的特性、语义及限制作了严格的规定。编译系统的设计者可根据需要和系统规模选用全部或部分功能模块。模块本身又进一步分为一级和二级,高一级模块包含了低一级模块的全部功能。选用模块的多少并不影响语言的基本结构。ISO COBO L-72只有8个功能模块,ISO COBOL-78则扩充到12个功能模块(见表)。COBOL最小的子集应包括核心、表处理和顺序存取等模块。

程序结构图为COBOL源程序的逻辑结构图。每个 COBOL语言程序都是按部、节、段和体几个层次构成的。每个程序由标识部、设备部、数据部、过程部等四个部组成。

标识部提供标识该程序的信息,如程序名、日期、程序员的姓名等。

设备部又称环境部,它提供有关该程序运行环境即计算机主机和外部设备方面的信息。它是程序中唯一描述计算机硬件的部分。COBOL程序规定把这一部分单独分出来,借以提高程序的通用性,把一个COBOL程序从一台计算机移到另一台不同的计算机去时只须修改这一部分内容便可执行。

数据部描述作为处理对象的数据文件、记录、数据项的结构和特性。

例子下面是一个记录描述的例子:

01RECORD-1

02NAMEPICTUREISX(20)

02SEX PICTUREISA

02BIRTHDAY

03YEAR-BPICTUREIS9999

03MONTH-B PICTUREIS99

03DAY-B PICTUREIS99

这一记录由三项组成:NAME(姓名)是不超过20个字符的字符串,由X(20)说明;SEX(性别)是一个字母,由A说明,程序中可用M表示男性而用F表示女性;BIRTHDAY(出生日期)是一组合项,由3个表示年、月、日的更基本的项组成。各数据项的层次结构由层号表示,例中的01,02,03就是表示数据项在记录中的层次。这种表示方法很便于程序员描述管理、财会等领域中常见的有结构的数据。

过程部描述数据处理的步骤。数据从外部传入计算机主存储器称为输入;从主存储器将数据传出称为输出;数据在主存储器内从一个存储区传到另一个存储区称为传送;对数据进行加、减、乘、除运算称算术运算。这些都是数据处理的基本操作,程序由一系列描述基本操作的语句组成。如果程序执行中需要根据某个条件是否满足来决定它的后继处理步骤,称为转移控制,由控制语句来描述。每个COBOL语句包含一个英语动词,用以指明该语句操作的性质。动词后面随有若干操作对象的信息和描述操作的补充信息。下面是一段COBOL过程部的程序:

ACCEPTQUANTITY

MULTIPLYQUANTITYBYPRICEGIVING

TOTAL-PRICE

DISPLAYTOTAL-PRICE

ACCEPT(接收)、MULTIPLY(乘)、DISPLAY(显示)是三个英语动词。QUANTITY(数量)、PRICE(单价)、TOTAL-PRICE(总价)是变量的名称,代表被处理的对象。BY(被......)、GIVING(给出)是辅助用的保留字,说明被处理对象之间的关系。上述程序的意义为:从终端上接受操作员用键盘输入的商品数量值,然后将数量乘以单价得出总价,最后在显示屏幕上显示总价。

COBOL组成

  • 标识部(IDENTIFICATIONDIVISION):用于标识程序名。

  • 环境部(ENVIRONMENTDIVISION):用于说明程序运行的环境。

  • 数据部(DATADIVISION):用于说明程序中涉及的所有数据。

  • 过程部(PROCEDUREDIVISION):是程序的核心部分,它决定计算机应进行什么操作。

字符集

数字0—9,字母A—Z,a—z,专用字符:+-*/=,.;’()<>$及空格。属于系统字符集而不属于COBOL字符集的字符只能出现在COBOL程序中的字符串里。

常量

COBOL常量分为数值常量(如100,-29),非数值常量(如’ABC’)和表意常量(如ZERO,SPACE,HIGH-VALUE,LOW-VALUE,QUOTE,ALL常量)。

书写格式

第1至6列为”标号区”。第7列为”续行标志区”

第8至此11列,称为”A区”。程序中有些内容如部头,节头,段头,层号01,层号77及文件描述符FD等应从A区开始写。

第12至此72列,称为”B区”。写程序中的正文部分。如过程部中的句子只能从B区开始写。

第73至80列,称为”注释区”。