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

[科普中國(guó)]-COBOL計(jì)算機(jī)方言

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

概述

COBOL(Common Business Oriented Language)語(yǔ)言是一種適合于商業(yè)及數(shù)據(jù)處理的程序設(shè)計(jì)語(yǔ)言。這種語(yǔ)言可使商業(yè)數(shù)據(jù)處理過(guò)程精確表達(dá)。在企業(yè)管理中,數(shù)值計(jì)算并不復(fù)雜,但數(shù)據(jù)處理信息量卻很大。為專門解決企業(yè)管理問(wèn)題,1959年,由美國(guó)的一些計(jì)算機(jī)用戶組織設(shè)計(jì)了專用于商務(wù)處理的計(jì)算機(jī)語(yǔ)言COBOL,并于1961年由美國(guó)數(shù)據(jù)系統(tǒng)語(yǔ)言協(xié)會(huì)公布。經(jīng)不斷修改、豐富完善和標(biāo)準(zhǔn)化,已發(fā)展為多種版本。

COBOL語(yǔ)言提供了三種強(qiáng)有力的文件處理功能(順序文件、隨機(jī)文件、索引文件)。大量數(shù)據(jù)一般作為文件的記錄存儲(chǔ)在磁盤上,而不是直接存放在內(nèi)存。COBOL語(yǔ)言僅提供了加、減、乘、除及乘方這5種運(yùn)算,沒有提供其他復(fù)雜的內(nèi)部函數(shù),因而COBOL語(yǔ)言不適于進(jìn)行科學(xué)計(jì)算。為便于輸入輸出,COBOL語(yǔ)言除提供方便的接收(ACCEPT),顯示(DISPLAY)語(yǔ)句外,還提供了三種字符串處理語(yǔ)句:合字符串(STRING),分字符串(UNSTRING)和字符串檢測(cè)(INSPET)語(yǔ)句。與一般高級(jí)語(yǔ)言不同,COBOL語(yǔ)言明確地規(guī)定任何源程序都必須包含標(biāo)識(shí)部、環(huán)境部、數(shù)據(jù)部和過(guò)程部。

COBOL語(yǔ)言使用了300多個(gè)英語(yǔ)保留字,大量采用普通英語(yǔ)詞匯和句型,COBOL程序通俗易懂,素有“英語(yǔ)語(yǔ)言”之稱。COBOL語(yǔ)言語(yǔ)法規(guī)則嚴(yán)格。用COBOL語(yǔ)言編寫的任一源程序,都由4個(gè)部組成:標(biāo)識(shí)部(Identification)描述程序、環(huán)境部(Environment)描述運(yùn)行程序的計(jì)算機(jī)系統(tǒng)、數(shù)據(jù)部(Data)描述程序中所有數(shù)據(jù)的格式、程序部(Procedure)是程序的主體。

COBOL程序結(jié)構(gòu)的“部”內(nèi)包含“節(jié)”,“節(jié)”內(nèi)包含“段”,段內(nèi)包含語(yǔ)句,語(yǔ)句由字或字符串組成,整個(gè)源程序像一棵由根到干,由干到枝,由枝到葉的樹,習(xí)慣上稱之為樹形結(jié)構(gòu)。

20世紀(jì)80年代后隨著數(shù)據(jù)庫(kù)的廣泛應(yīng)用,該語(yǔ)言使用面減少。目前COBOL語(yǔ)言主要應(yīng)用于情報(bào)檢索、商業(yè)數(shù)據(jù)處理等管理領(lǐng)域,銀行系統(tǒng)還較多采用COBOL語(yǔ)言開發(fā)。1

COBOL標(biāo)準(zhǔn)的發(fā)展1960年,美國(guó)計(jì)算機(jī)與商業(yè)設(shè)備制造商協(xié)會(huì)(CBEMA)成立了一個(gè)委員會(huì),叫做美國(guó)計(jì)算機(jī)與信息處理國(guó)家標(biāo)準(zhǔn)委員會(huì),簡(jiǎn)稱X3。X3委員會(huì)的分會(huì)X3.4編程語(yǔ)言分會(huì)建立了X3.4.4工作組“處理器規(guī)范與COBOL標(biāo)準(zhǔn)小組”。

X3.4.4(后更名為X3J4)小組負(fù)責(zé)建立COBOL標(biāo)準(zhǔn)。這個(gè)小組的第一次會(huì)議于1963年召開,由計(jì)算機(jī)制造商和用戶的代表參加。他們確定了小組的目標(biāo)是根據(jù)COBOL的CODASYL標(biāo)準(zhǔn)(1959年該委員會(huì)產(chǎn)生的最初COBOL標(biāo)準(zhǔn))定義COBOL國(guó)家標(biāo)準(zhǔn)。

1968年,美國(guó)標(biāo)準(zhǔn)協(xié)會(huì)(USASI)批準(zhǔn)了COBoL分會(huì)開發(fā)的標(biāo)準(zhǔn),發(fā)表號(hào)為X3.23—1968。這個(gè)文檔定義了COBOL包括內(nèi)核(Nucleus)和下列八個(gè)功能模塊:

·Table Handling(表格處理)

·Sequential Access(順序訪問(wèn))

·Random Access(隨機(jī)訪問(wèn))

·Random Processing(隨機(jī)處理)

·Sort(排序)

·Report Writer(報(bào)表寫入)

·Segmentation(分段)

·Library(庫(kù))

每個(gè)模塊分成最多三層,高層提供更多功能,低層提供高層的子集。COBOL的基本版本應(yīng)包括內(nèi)核、表格處理和順序訪問(wèn)模塊的低層功能。完全版本的COBOL應(yīng)包括所有模塊的高層功能。美國(guó)標(biāo)準(zhǔn)協(xié)會(huì)(USASI)于1966年由ASI更名為USASI,1969年更名為美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)。這個(gè)ANSI標(biāo)準(zhǔn)即著名的COBOLL一68。

1974年對(duì)標(biāo)準(zhǔn)進(jìn)行了修訂,8個(gè)功能處理模塊擴(kuò)充為11個(gè):

·Table Handling(表格處理)

·Sequential I/O(順序I/O)

·Relative I/O(相對(duì)I/O)

·Indexed I/O(索引I/O)

·Sort—Merge(排序/合并)

·Report Writer(報(bào)表寫入)

·Segmentation(分段)

·Library(庫(kù))

·Debug(調(diào)試)

·Inter.Program Communication(程序間通信)

·Communication(通信)

每個(gè)模塊包括兩層或三層。在9個(gè)模塊中,最低層為空集。每個(gè)低層都是高層的子集。對(duì)于COBOL-68,基本版本應(yīng)包括內(nèi)核、表格處理和順序I/O模塊的最低層。2

COBOL程序的組成對(duì)于COBOL程序的結(jié)構(gòu),大體上都得由四個(gè)部(DIVISION)組成:

(一)標(biāo)識(shí)部(IDENTIFIcATl0N DIVISION):標(biāo)識(shí)部用于對(duì)程序命名。還可以寫些備注性的內(nèi)容,如作者的姓名、編寫與編譯的日期等。

(二)設(shè)備部(ENVIRONMENT DIVISION):設(shè)備部是程序中描述計(jì)算機(jī)硬件的部分。并指出使用的主機(jī)和外圍設(shè)備。

(三)數(shù)據(jù)部(DATA DIVISION):數(shù)據(jù)部用來(lái)描述程序的數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)包括輸入、輸出及中間結(jié)果的數(shù)據(jù)。

(四)過(guò)程部(PROCEDURE DIV璐IoN):過(guò)程部是COBOL程序中最主要的一個(gè)部,它的任務(wù)是對(duì)數(shù)據(jù)進(jìn)行處理與計(jì)算。3

語(yǔ)法格式在大型機(jī)環(huán)境中,COBOL程序的每行代碼通常分為80列。對(duì)于列與列之間不同的范圍,其意義各不相同。列于列之問(wèn)不同的范圍及其意義分別如下。

第1~6列:序號(hào)區(qū)。

第7列:指示符區(qū)。

第8~11列:A區(qū)。

第12~72列:B區(qū)。

第73~80列:說(shuō)明區(qū)。

其中序號(hào)區(qū)中的內(nèi)容通常不作要求。指示符區(qū)通常為空或者包含字符“*”。當(dāng)包含“*”時(shí),表示該行為注釋行,用于書寫對(duì)程序的注釋信息。同時(shí),也可以在“*”后不添加任何注釋信息,以起到對(duì)程序代碼段分隔的作用,利于閱讀。A區(qū)中的內(nèi)容主要包括COBOL中的部、節(jié)、語(yǔ)句段的標(biāo)識(shí)符,以及01層數(shù)據(jù)層號(hào)等。B區(qū)中則主要包含過(guò)程部中的各條語(yǔ)句。說(shuō)明區(qū)用于對(duì)程序進(jìn)行注釋。

COBOL程序中用到的各類數(shù)據(jù)名稱主要由字母、數(shù)字以及中劃線組成。其中字母通常為大寫字母。中劃線不可作為數(shù)據(jù)名稱的開頭或結(jié)尾。數(shù)據(jù)名稱通常最多不應(yīng)超過(guò)30個(gè)字符,并且不可定義為程序關(guān)鍵字。

COBOL中的關(guān)鍵字主要為各種語(yǔ)句名、特殊數(shù)據(jù)名、象征常量名等。例如,以下為幾個(gè)常見的COBOL中的關(guān)鍵字:PIC、FILLER、OPEN、MOVE、PERFORM、SPACES。4