COBOL
COBOL(CommonBusinessOrientedLanguage)是数据处理领域最为广泛的程序设计语言,是第一个广泛使用的高级编程语言。在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,美国的一些计算机用户于1959年组织设计了专用于商务处理的计算机语言COBOL,并于1961年美国数据系统语言协会公布。经不断修改、丰富完善和标准化,目前COBOL已发展为多种版本。
中文名:COBOL语言
外文名:COBOL
全称:CommonBusinessOrientedLanguage
领域:数据处理
属性:程序设计语言
开发时间:1959年
面世时间:1961
开发国家:美国
开发公司:RearAdmiralGraceHopper公司
开发*:格雷斯·霍波(G.Hopper)博士
1、发展历程
COBOL(CommonBusinessOrientedLanguage)是第一个广泛使用的高级编程语言。在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,1959年5月,五角大楼委托格雷斯·霍波(G.Hopper)博士领导一个委员会并由RearAdmiralGraceHopper公司主持开发,并于1961年由美国数据系统语言协会公布。经不断修改、丰富完善和标准化,已发展为多种版本。
COBOL重视数据项和输入/输出记录的处理,对具有大量数据的文件提供了简单的处理方式。从名字可以看出,它主要用于解决商业和企业管理等领域的大量数据处理问题,又称为企业管理语言、数据处理语言等。Cobol语言的研制始于50年代末,当时计算机的生产已进入第二代,计算机应用领域开始从数值计算扩大到数据处理。商业和企业事务管理中需要进行处理的数据量急剧增加,迫切需要有适用于这个领域的程序设计语言,以提高编制程序的质量和速度。Cobol语言就是在这种社会背景下应运而生的。也就是说,Cobol已经年过半百了。Cobol正式发布于1960年4月,称为Cobol-60。现在最新的版本应该是Cobol-2002了,而且还在不断改进中,未来的Cobol将支持XML等Web时代的新技术。换言之,Cobol还将继续发展与应用,但与C语言或FORTRAN语言相比,COBOL的数值运算、逻辑运算能力比较弱。
1959年,美国国防部召开了一个有*机关、企业、计算机厂商参加的会议,大家认为有必要设计一种数据处理专用的语言,这就是著名的数据系统语言会议CODASYL(CongferenceonDataSystemsLanguages)。1959年12月出现了第一个COBOL语言文本,并于1960年4月正式发表,因此也被称为COBOL-60。1968年美国国家标准委员会ANSI又通过了新的标准ANSICOBOLX.3.23-1968。1972年国际标准化组织ISO将其作为ISOCOBOL-72。1974年ANSI对COBOL-68作出了修订扩充,形成了ANSICOBOLX3.23-1974,随后1978年ISO采用其形成ISOCOBOL-78Monday,2004-09-06ANG="ZH-CN">又提出了ANSIX3.23-85,增加了很多结构化程序设计的内容,ISO标准ISO1989:1985也采用了该标准。COBOL标准还在不断地改进和完善,最新的标准COBOL2002主体已经于2002年12月出版,其他部分还在不断地完善之中,具体内容请参考NCITS和COBOLStandards。
2、语言特点
COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。
COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。
COBOL语法与英文很接近,即使不懂电脑的人也能看懂程序。
强大的文件处理功能,大量的数据通常以文件的形式存储在磁盘上。
科学计算。
未来的COBOL将支持XML等Web时代的新技术。
3、重要性
经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语言,在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。
COBOL的重要性可以用这句话来描述:世界上70%的数据都是用COBOL语言处理的,并且90%的ATM事务处理用的都是COBOL语言。每天在线处理的COBOL事务有300亿次。500强中有492家(包括全部的100强)使用了COBOL语言,目前在COBOL方面的投资已经超过3万亿美元,,据称用COBOL书写的程序超过了2000亿行,并且以每年大约50亿行代码的速度在增长。
由于COBOL在商业领域的雄厚基础,而且COBOL主要是应用于银行、金融和会计行业等非常重要的商业数据处理领域。所以,即使对于具有相当经验的IT公司来说,重新编写COBOL语言的可靠的应用软件也是不实际或是从商业角度上并不可行的,而且还要花上很长的时间,只要大型机存在,COBOL就不会消失,即使是对电脑界产生巨大影响的“千年虫”(Y2K)也没有改变COBOL的命运。
4、商业语言
COBOL(面向商业的通用语言,又称为企业管理语言、数据处理语言等,CommonBusinessOrientedLanguage)是最早的高级编程语言之一,是世界上第一个商用语言。由COBOL之母GraceHopper以Flow-Matic为基础开发创建。
COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。
COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。COBOL语法与英文很接近,即使不懂电脑的人也能看懂程序。强大的文件处理功能,大量的数据通常以文件的形式存储在磁盘上。未来的COBOL将支持XML等Web时代的新技术。
5、应用领域
作为一种元老级的高级编程语言,COBOL拥有庞大的用户群和代码,据称用COBOL书写的程序超过了2000亿行。另有调查发现世界上目前使用的商业应用软件之中的百分之七十是用COBOL代码编写的,并且以每年大约五十亿行代码的速度在增长。看来,历史赋予了COBOL语言特殊的使命。另外,只要大型机存在,其上就还要运行COBOL程序,而且很多资深的程序员已经习惯于COBOL,加入大型机环境的新程序员(例如我)也不得不开始使用COBOL。其实COBOL也有自身的一些优点,比如它对数据的显示格式有较强的控制。另外,我想最重要的是,即使对于具有相当经验的IT公司来说,重新编写可靠的应用软件也是不实际或是从商业角度上并不可行的,而且还要花上很长的时间。
如上介绍,Cobol主要是应用在商业数据处理领域。其中占最大百分比的是银行、金融和会计行业,其次是ComputerVAR/Retail/Consulting行业,这是美国的调查资料。Cobol在中国的应用应该也差不多。(或更少)
6、编辑器
由于COBOL最初是用于主机系统,所以它和主机系统联系得非常紧密。主流的主机系统,例如IBM的大型机、中型机等都配备了相应的COBOL编译程序,例如VSCOBOLII等。微机的广泛使用也对主机编程产生了一定的影响,比如它拥有漂亮的图形界面,不少编译器厂家也推出了微机平台上的COBOL编译器产品,其中比较著名的有FujitsuPowerCOBOL,AcuCobol等。网上有一个FujitsuCOBOLV3,其编程界面类似于微机上常见的VisualBasic、VisualC等,不仅提供了GUI界面,也内置了许多常见的控件,当然其功能比起VB、VC还是差了不少,有兴趣者可以下载去试用一下。另外,还有一个COBOL编辑器叫BlueMorphoIDE/闪蝶IDE,支持大型机平台上COBOL,JCL,SQL,PL1,CICS代码的在线编辑。除IDE编辑功能外,还支持COBOL代码分析,COBOL系统业务逻抽取和COBOL代码规范质量检测等功能。
在Windows上开发的人都应该觉得很幸运,它那友好的界面就实在能改善开发者的心情,提高开发的效率。想想在DOS和UNIX等下面的黑屏环境,工作的心情实在好不起来。要是跟踪一段代码,简陋的调试环境真让人却步。主机环境既然不那么友好,调试环境也就可以想象了。当然了,如果舍得花钱,还是能买到凑合的调试环境的。即使没有那么多的投资,CICS也算是一个不错的东西,毕竟它还支持对其自己命令的调试。
7、程序结构
COBOL程序由4部(DIVISION)组成:
IDENTIFICATIONDIVISION.(标识部)
主要用来指定源程序名字,也可以写入其他用作备忘的某些信息(如日期、作者等)。
ENVIRONMENTDIVISION.(环境部)
主要用于指出程序中用到的数据文件名与计算机系统的设备的对应关系,即把某一文件名与一个外部设备联系起来。
DATADIVISION.(数据部)
程序中所用到的全部数据(包括输入输出的数据和中间数据)都应在数据部中说明它们的类型和所占内存情况。
PROCEDUREDIVISION.(过程部)
用来给出程序要执行的指令,使计算机产生相应的操作,例如进行数学运算。
备注:
部(Division)一部可包括若干节
节(Section)一节可包含若干段
段(Paragraph)一段可包含若干句子
句子(Sentence)一个句子可包含若干语句
语句(Statement)制定计算机完成一定的操作
子句(Clause)制定完成某一方面的功能
8、程序举例
IDENTIFICATIONDIVISION.标识部
PROGRAM-ID.SAMPLE4.
AUTHOR.QXLU(WISTRONDALIAN).
DATE-WRITTEN.04-07-07.
DATE-COMPILED.04-07-07.
*
ENVIRONMENTDIVISION.环境部
*
DATADIVISION.数据部
WORKING-STORAGESECTION.
01APICX(4).PIC子句进行数据定义
01BPICX(4).
01CPICX(4).
01DPICX(8).
*
PROCEDUREDIVISION.过程部
*
MOVE'FGH'TOA.赋值给A
MOVE'KLM'TOB.
MOVE'XYZ'TOC.
MOVESPACETOD.
STRINGA,B,CDELIMITEDBYSPACEINTOD
ONOVERFLOWDISPLAY'OVERFLOW'.
DISPLAY'A='A.打印命令
DISPLAY'B='B.
DISPLAY'C='C.
DISPLAY'D='D.
STOPRUN.程序结束标识
显示如下:
OVERFLOW
A=FGH
B=KLM
C=XYZ
D=FGHKLMXY
9、常见问题解析
COBOL问题一
请务必在每次输入/输出(I/O)操作后,检查文件状态。如果错误很严重,操作系统会中断并异常终止你的程序。否则,如果程序在I/O之后收到控制,程序需要知道发生了什么事情才能做出适当的反应。
COBOL问题二
COBOL编译器可以处理大量优化,并完成一些开发工具无法执行或做得不好的检查。但编译有时需要花费很长时间。一些应用程序无法通过严谨的优化、语法检查和语义审查中获得性能提升,但对于处理大数据或在线交易的应用程序来说,这类附加步骤是十分有必要的。
COBOl问题三
ARCH与TUNE曾经是IBMLanguageEnvironment(LE)编译器专门针对C++编程语言的编辑器选项。IBM将其从LE优化开放到COBOL与PL/I,所以你现在可以在COBOL应用程序代码上使用ARCH与TUNE了。
COBOL问题四
针对旧COBOL程序有两种选择,但没有一个是完全无痛的。根据技能、时限与底层代码,可以手动重写COBOL到C/C++遗留代码,并自动转换或重新将遗留系统迁移到新平台。
COBOL问题五
目前没有好的方法只替换COPYDDS语句中的部分字符--或者替换已有的“前缀”。要让名字相同,需要对两个文件使用相同COPYDDS语句。如果记录格式结构有所不同,可能会希望通过源成员复制一份文件,并通过编辑器修改前缀字符,例如EntryUtility(SEU)。使用修改后的COPY成员,而不是COPYDDS成员。
COBOL问题六
你需要重新熟悉COBOL基础。跳转到指定行数然后输入'IP?'可以显示所有行提示符类型。点击F1后再点击F2会显示每个提示符的帮助描述。诸如IBM的RationalDeveloper工具有助于我进行可视化开发,还有报表开发工具可以自己更高效简单的开展编码工作。另外,如果你长期使用AS/400,可以尝试一些不会拖慢程序性能的技术和代码。
推荐阅读