COBOL
程序设计语言
COBOL(通用商业语言),全名英文Common Business-Oriented Language的缩写,是面向商业的高级程序设计语言,主要用于数据处理。它是最早的高阶程序设计语言之一,也是世界上最早实施标准化的计算机语言之一。COBOL是国际上应用最广泛的一种高级语言,主要应用于商业、金融和行政系统,如公司和政府部门。尽管近年来COBOL的应用逐渐减少,但许多大型金融机构仍在2006年底之前使用COBOL开发新的系统。 COBOL的设计始于1950年代,由CODASYL公司部分基于Grace Hopper设计的编程语言FLOW-MATIC。它是美国国防部为开发一种可移植的编程语言进行的一项努力的一部分。最初,它被视为临时解决方案,但国防部迅速强制要求计算机制造商提供它,导致其广泛采用。1968年,COBOL被标准化,并经过四次修订。现有标准为ISO/IEC 1989:2014。 COBOL的语句具有英语般的语法,旨在高度可读且自我说明。然而,它过于冗长,使用了300多个保留字。与现代简洁的语法(如y = x;)相比,COBOL具有更接近英语的语法(如MOVE x TO y)。 COBOL分为四个部分(识别、环境、数据和程序),每个部分都有严格的层次结构,包括 sections、paragraphs和sentences。由于缺乏大型标准库,标准规定了43个语句、87个函数和一个类。 尽管学术计算机科学家对商业应用并不感兴趣,且未参与COBOL的设计,但随着时间的推移,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语言的主要特点是:
1、面向文件。COBOL语言是一种典型的按文件系统方式进行数据处理的语言。文件(如档案、帐册等)是事务数据处理的基础。COBOL程序将处理对象按一定方式组织成文件,记录在计算机外部设备上。它通过对数据层次结构的描、述,说明同一文件中数据项之间的联系,因而可在数据的任一层次进行检索和处理。
2、接近英语自然语言。COBOL语言中大量采用普通英语词汇和句型,如描述性子句接近英语主表结构,操作性语句接近英语的祈使句。例如,把A和B两个数据项的内容相加,就写成ADD A TOB。因此COBOL程序看起来很像一篇用英语写的文章,学过英语的人很容易看懂。
3、通用性强。在COBOL程序中数据、运行环境和处理过程是分别单独描述的。它通过定义记忆名,使处理过程的描述中不直接涉及使用的外部设备的名字。因此,只要对设备描述和记忆名定义作少量的修改,即可将一个COBOL程序移植到另一台计算机上运行。
4、功能模块化。在标准COBOL文本中实现功能模块化,它对每一种功能模块的特性、语义及限制作了严格的规定。编译系统的设计者可根据需要和系统规模选用全部或部分功能模块。模块本身又进一步分为一级和二级,高一级模块包含了低一级模块的全部功能。选用模块的多少并不影响语言的基本结构。ISO COBOL-72只有8个功能模块,ISO COBOL-78则扩充到12个功能模块。COBOL最小的子集应包括核心、表处理和顺序存取等模块。
组成部分
每个COBOL语言程序都是按部、节、段和体几个层次构成的。每个程序由标识部、设备部、数据部、过程部等四个部组成。
1、标识部(IDENTIFICATIONDIVISION):用于刻画程序的标识性特征。
标识部提供标识该程序的信息,如程序名、日期、程序员的姓名等。
2、环境部(ENVIRONMENTDIVISION):用于刻画程序和计算机环境有关的成分。
设备部又称环境部,提供有关该程序运行环境即计算机主机和外部设备方面的信息。它是程序中唯一描述计算机硬件的部分。COBOL程序规定把这一部分单独分出来,借以提高程序的通用性,把一个COBOL程序从一台计算机移到另一台不同的计算机去时只须修改这一部分内容便可执行。
3、数据部(DATADIVISION):用于刻画数据(包括文件、记录、组项和初等项等)的定义的构成以及相关特征和属性。
下面是一个记录描述的例子:
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就是表示数据项在记录中的层次。这种表示方法很便于程序员描述管理、财会等领域中常见的有结构的数据。
4、过程部(PROCEDUREDIVISION):是程序的核心部分,它决定计算机应进行什么操作,用于刻画处理加工流程,采用节、段、语句的结构层次。
过程部描述数据处理的步骤。数据从外部传入计算机主存储器称为输入;从主存储器将数据传出称为输出;数据在主存储器内从一个存储区传到另一个存储区称为传送;对数据进行加、减、乘、除运算称算术运算。这些都是数据处理的基本操作,程序由一系列描述基本操作的语句组成。如果程序执行中需要根据某个条件是否满足来决定它的后继处理步骤,称为转移控制,由控制语句来描述。每个COBOL语句包含一个英语动词,用以指明该语句操作的性质。动词后面有若干操作对象的信息和描述操作的补充信息。下面是一段COBOL过程部的程序:
ACCEPTQUANTITY
MULTIPLYQUANTITYBYPRICEGIVING
DISPLAYTOTAL-PRICE
ACCEPT(接收)、MULTIPLY(乘)、DISPLAY(显示)是三个英语动词。QUANTITY(数量)、PRICE(单价)、TOTAL-PRICE(总价)是变量的名称,代表被处理的对象。BY(被......)、GIVING(给出)是辅助用的保留字,说明被处理对象之间的关系。上述程序的意义为:从终端上接受操作员用键盘输入的商品数量值,然后将数量乘以单价得出总价,最后在显示屏幕上显示总价。
字符集
数字0—9,字母A—Z,a—z,专用字符:+-*/=,.;’()\u003c\u003e
常量
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列,称为”注释区”。
程序举例
COL1—67812—7273—80
IDENTIFICATIONDIVISION。
PROGRAM-ID。PSAMPLE1。
ENVIRONMENTDIVISION。
DATADIVISION。
PROCEUREDIVISION。
DISPLAY’THISISACOBOLPROGRAM.’
STOPRUN。
数据特点
层次的概念:数据间存在的从属关系。
文件的概念:多个记录可以组成一个文件。
记录的概念:具有一定层次关系的一组数据项的最大集合,它是内存中具有独立逻辑含义的最大存取项,具有最高层次。
参考资料
目录
概述
简介
组成部分
字符集
常量
书写格式
程序举例
数据特点
参考资料