版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-COBOL語(yǔ)言

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶(hù)提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

簡(jiǎn)介

COBOL語(yǔ)言,是一種面向過(guò)程的高級(jí)程序設(shè)計(jì)語(yǔ)言,主要用于數(shù)據(jù)處理,是目前國(guó)際上應(yīng)用最廣泛的一種高級(jí)語(yǔ)言。COBOL是英文Common Business-Oriented Language的縮寫(xiě),原意是面向商業(yè)的通用語(yǔ)言。它采用 300多個(gè)英語(yǔ)單詞作為保留字,以一種接近于英語(yǔ)書(shū)面語(yǔ)言的形式來(lái)描述數(shù)據(jù)特性和數(shù)據(jù)處理過(guò)程,因而便于理解和學(xué)習(xí)。COBOL語(yǔ)言是專(zhuān)門(mén)為企業(yè)管理而設(shè)計(jì)的高級(jí)語(yǔ)言,可用于統(tǒng)計(jì)報(bào)表、財(cái)務(wù)會(huì)計(jì)、計(jì)劃編制、作業(yè)調(diào)度、情報(bào)檢索和人事管理等方面。

發(fā)展50年代中期電子計(jì)算機(jī)開(kāi)始用于商業(yè)和企業(yè)的事務(wù)處理,而事務(wù)處理與科學(xué)計(jì)算不同,數(shù)據(jù)繁多而運(yùn)算簡(jiǎn)單,它只需要一定的運(yùn)算能力,但對(duì)數(shù)據(jù)結(jié)構(gòu)的描述和大批量數(shù)據(jù)的分析處理方面則要求有很強(qiáng)的功能1。

1956年在美國(guó)富蘭克林學(xué)會(huì)召開(kāi)的高級(jí)語(yǔ)言學(xué)術(shù)討論會(huì)上提出FLOWMATIC語(yǔ)言,并在UNIVAC Ⅰ型計(jì)算機(jī)上實(shí)現(xiàn)。這是第一個(gè)面向數(shù)據(jù)處理的語(yǔ)言,它為COBOL的誕生創(chuàng)造了良好的條件。

1959年5月美國(guó)國(guó)防部召開(kāi)專(zhuān)門(mén)會(huì)議,討論建立通用商業(yè)語(yǔ)言的要求和可能性,確定了這種語(yǔ)言的基本設(shè)計(jì)思想和應(yīng)具有的特點(diǎn)。會(huì)后成立數(shù)據(jù)系統(tǒng)語(yǔ)言委員會(huì)(CODASYL),其中有一個(gè)短期工作委員會(huì)專(zhuān)門(mén)負(fù)責(zé)COBOL語(yǔ)言的開(kāi)發(fā)。

1959年9月提出初稿,1960年4月正式公布第一個(gè)COBOL文本,稱(chēng)為COBOL-60。經(jīng)過(guò)進(jìn)一步擴(kuò)充和完善,又出現(xiàn)了COBOL-61和擴(kuò)展COBOL-61。

1965年出現(xiàn)COBOL-65。1968年被美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)批準(zhǔn)為標(biāo)準(zhǔn)文本,即ANSICOBOL X3.23-1968,簡(jiǎn)稱(chēng)COBOL-68。

1972年國(guó)際標(biāo)準(zhǔn)化組織 (ISO)把此文本推薦為國(guó)際標(biāo)準(zhǔn),即ISO COBOL-72,并被美國(guó)、英國(guó)、法國(guó)、日本和蘇聯(lián)等21個(gè)會(huì)員國(guó)所承認(rèn)。

1974年美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)對(duì)COBOL-68作了修改補(bǔ)充,公布了新文本ANSI COBOLX3.23-1974。

1978年被國(guó)際標(biāo)準(zhǔn)化組織推薦為國(guó)際標(biāo)準(zhǔn)文本,即ISO COBOL-78?,F(xiàn)在計(jì)算機(jī)制造商均以ISO COBOL-72或ISO COBOL-78作為設(shè)計(jì)軟件的依據(jù),幾乎在所有的大、中、小型計(jì)算機(jī)上都配有COBOL語(yǔ)言,微型計(jì)算機(jī)則采用COBOL的一個(gè)子集。中國(guó)引進(jìn)COBOL語(yǔ)言后還增加了漢字處理功能。

特點(diǎn)COBOL語(yǔ)言的主要特點(diǎn)是1:

面向文件。COBOL語(yǔ)言是一種典型的按文件系統(tǒng)方式進(jìn)行數(shù)據(jù)處理的語(yǔ)言。文件(如檔案、帳冊(cè)等)是事務(wù)數(shù)據(jù)處理的基礎(chǔ)。COBOL程序?qū)⑻幚韺?duì)象按一定方式組織成文件,記錄在計(jì)算機(jī)的外部設(shè)備上。它通過(guò)對(duì)數(shù)據(jù)層次結(jié)構(gòu)的描述,說(shuō)明同一文件中數(shù)據(jù)項(xiàng)之間的聯(lián)系,因而可在數(shù)據(jù)的任一層次進(jìn)行檢索和處理。

接近英語(yǔ)自然語(yǔ)言。COBOL語(yǔ)言中大量采用普通英語(yǔ)詞匯和句型,如描述性子句接近英語(yǔ)主表結(jié)構(gòu),操作性語(yǔ)句接近英語(yǔ)的祈使句。例如,把A和B兩個(gè)數(shù)據(jù)項(xiàng)的內(nèi)容相加,就寫(xiě)成ADD A TOB。因此COBOL程序看起來(lái)很像一篇用英語(yǔ)寫(xiě)的文章,學(xué)過(guò)英語(yǔ)的人很容易看懂。

通用性強(qiáng)。在COBOL程序中數(shù)據(jù)、運(yùn)行環(huán)境和處理過(guò)程是分別單獨(dú)描述的。它通過(guò)定義記憶名,使處理過(guò)程的描述中不直接涉及使用的外部設(shè)備的名字。因此,只要對(duì)設(shè)備描述和記憶名定義作少量的修改,即可將一個(gè)COBOL程序移植到另一臺(tái)計(jì)算機(jī)上運(yùn)行。

功能模塊化。在標(biāo)準(zhǔn)COBOL文本中實(shí)現(xiàn)功能模塊化,它對(duì)每一種功能模塊的特性、語(yǔ)義及限制作了嚴(yán)格的規(guī)定。編譯系統(tǒng)的設(shè)計(jì)者可根據(jù)需要和系統(tǒng)規(guī)模選用全部或部分功能模塊。模塊本身又進(jìn)一步分為一級(jí)和二級(jí),高一級(jí)模塊包含了低一級(jí)模塊的全部功能。選用模塊的多少并不影響語(yǔ)言的基本結(jié)構(gòu)。ISO COBO L-72只有8個(gè)功能模塊,ISO COBOL-78則擴(kuò)充到12個(gè)功能模塊(見(jiàn)表)。COBOL最小的子集應(yīng)包括核心、表處理和順序存取等模塊。

程序結(jié)構(gòu)圖為COBOL源程序的邏輯結(jié)構(gòu)圖。每個(gè) COBOL語(yǔ)言程序都是按部、節(jié)、段和體幾個(gè)層次構(gòu)成的。每個(gè)程序由標(biāo)識(shí)部、設(shè)備部、數(shù)據(jù)部、過(guò)程部等四個(gè)部組成。

標(biāo)識(shí)部提供標(biāo)識(shí)該程序的信息,如程序名、日期、程序員的姓名等。

設(shè)備部又稱(chēng)環(huán)境部,它提供有關(guān)該程序運(yùn)行環(huán)境即計(jì)算機(jī)主機(jī)和外部設(shè)備方面的信息。它是程序中唯一描述計(jì)算機(jī)硬件的部分。COBOL程序規(guī)定把這一部分單獨(dú)分出來(lái),借以提高程序的通用性,把一個(gè)COBOL程序從一臺(tái)計(jì)算機(jī)移到另一臺(tái)不同的計(jì)算機(jī)去時(shí)只須修改這一部分內(nèi)容便可執(zhí)行。

數(shù)據(jù)部描述作為處理對(duì)象的數(shù)據(jù)文件、記錄、數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和特性。例子下面是一個(gè)記錄描述的例子:

01RECORD-1

02NAMEPICTUREISX(20)

02SEX PICTUREISA

02BIRTHDAY

03YEAR-BPICTUREIS9999

03MONTH-B PICTUREIS99

03DAY-B PICTUREIS99

這一記錄由三項(xiàng)組成:NAME(姓名)是不超過(guò)20個(gè)字符的字符串,由X(20)說(shuō)明;SEX(性別)是一個(gè)字母,由A說(shuō)明,程序中可用M表示男性而用F表示女性;BIRTHDAY(出生日期)是一組合項(xiàng),由3個(gè)表示年、月、日的更基本的項(xiàng)組成。各數(shù)據(jù)項(xiàng)的層次結(jié)構(gòu)由層號(hào)表示,例中的01,02,03就是表示數(shù)據(jù)項(xiàng)在記錄中的層次。這種表示方法很便于程序員描述管理、財(cái)會(huì)等領(lǐng)域中常見(jiàn)的有結(jié)構(gòu)的數(shù)據(jù)。

過(guò)程部描述數(shù)據(jù)處理的步驟。數(shù)據(jù)從外部傳入計(jì)算機(jī)主存儲(chǔ)器稱(chēng)為輸入;從主存儲(chǔ)器將數(shù)據(jù)傳出稱(chēng)為輸出;數(shù)據(jù)在主存儲(chǔ)器內(nèi)從一個(gè)存儲(chǔ)區(qū)傳到另一個(gè)存儲(chǔ)區(qū)稱(chēng)為傳送;對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除運(yùn)算稱(chēng)算術(shù)運(yùn)算。這些都是數(shù)據(jù)處理的基本操作,程序由一系列描述基本操作的語(yǔ)句組成。如果程序執(zhí)行中需要根據(jù)某個(gè)條件是否滿(mǎn)足來(lái)決定它的后繼處理步驟,稱(chēng)為轉(zhuǎn)移控制,由控制語(yǔ)句來(lái)描述。每個(gè)COBOL語(yǔ)句包含一個(gè)英語(yǔ)動(dòng)詞,用以指明該語(yǔ)句操作的性質(zhì)。動(dòng)詞后面隨有若干操作對(duì)象的信息和描述操作的補(bǔ)充信息。下面是一段COBOL過(guò)程部的程序:

ACCEPTQUANTITY

MULTIPLYQUANTITYBYPRICEGIVING

TOTAL-PRICE

DISPLAYTOTAL-PRICE

ACCEPT(接收)、MULTIPLY(乘)、DISPLAY(顯示)是三個(gè)英語(yǔ)動(dòng)詞。QUANTITY(數(shù)量)、PRICE(單價(jià))、TOTAL-PRICE(總價(jià))是變量的名稱(chēng),代表被處理的對(duì)象。BY(被......)、GIVING(給出)是輔助用的保留字,說(shuō)明被處理對(duì)象之間的關(guān)系。上述程序的意義為:從終端上接受操作員用鍵盤(pán)輸入的商品數(shù)量值,然后將數(shù)量乘以單價(jià)得出總價(jià),最后在顯示屏幕上顯示總價(jià)。

組成標(biāo)識(shí)部(IDENTIFICATIONDIVISION):用于標(biāo)識(shí)程序名。

環(huán)境部(ENVIRONMENTDIVISION):用于說(shuō)明程序運(yùn)行的環(huán)境。

數(shù)據(jù)部(DATADIVISION):用于說(shuō)明程序中涉及的所有數(shù)據(jù)。

過(guò)程部(PROCEDUREDIVISION):是程序的核心部分,它決定計(jì)算機(jī)應(yīng)進(jìn)行什么操作。

字符集數(shù)字0—9,字母A—Z,a—z,專(zhuān)用字符:+-*/=,.;’()$及空格。屬于系統(tǒng)字符集而不屬于COBOL字符集的字符只能出現(xiàn)在COBOL程序中的字符串里。

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

書(shū)寫(xiě)格式第1至6列為”標(biāo)號(hào)區(qū)”。第7列為”續(xù)行標(biāo)志區(qū)”
第8至此11列,稱(chēng)為”A區(qū)”。程序中有些內(nèi)容如部頭,節(jié)頭,段頭,層號(hào)01,層號(hào)77及文件描述符FD等應(yīng)從A區(qū)開(kāi)始寫(xiě)。
第12至此72列,稱(chēng)為”B區(qū)”。寫(xiě)程序中的正文部分。如過(guò)程部中的句子只能從B區(qū)開(kāi)始寫(xiě)。
第73至80列,稱(chēng)為”注釋區(qū)”。

數(shù)據(jù)特點(diǎn)層次的概念:數(shù)據(jù)間存在的從屬關(guān)系。

文件的概念:多個(gè)記錄可以組成一個(gè)文件。

記錄的概念:具有一定層次關(guān)系的一組數(shù)據(jù)項(xiàng)的最大集合,它是內(nèi)存中具有獨(dú)立邏輯含義的最大存取項(xiàng),具有最高層次。