COBOL語言
COBOL語言
COBOL語言,是一種面向過程的高級程序設計語言,主要用於數據處理,是目前國際上應用最廣泛的一種高級語言。COBOL是英文Common Business-Oriented Language的縮寫,原意是面向商業的通用語言。它採用 300多個英語單詞作為保留字,以一種接近於英語書面語言的形式來描述數據特性和數據處理過程,因而便於理解和學習。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 COBOL-72隻有8個功能模塊,ISO COBOL-78則擴充到12個功能模塊(見表)。COBOL最小的子集應包括核心、表處理和順序存取等模塊。
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(給出)是輔助用的保留字,說明被處理對象之間的關係。上述程序的意義為:從終端上接受操作員用鍵盤輸入的商品數量值,然後將數量乘以單價得出總價,最後在顯示屏幕上顯示總價。
1、標識部(IDENTIFICATIONDIVISION):用於標識程序名。
2、環境部(ENVIRONMENTDIVISION):用於說明程序運行的環境。
3、數據部(DATADIVISION):用於說明程序中涉及的所有數據。
4、過程部(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列,稱為”註釋區”。
COL1—67812—7273—80
IDENTIFICATIONDIVISION。
PROGRAM-ID。PSAMPLE1。
ENVIRONMENTDIVISION。
DATADIVISION。
PROCEUREDIVISION。
DISPLAY’THISISACOBOLPROGRAM.’
STOPRUN。
層次的概念:數據間存在的從屬關係。
文件的概念:多個記錄可以組成一個文件。
記錄的概念:具有一定層次關係的一組數據項的最大集合,它是內存中具有獨立邏輯含義的最大存取項,具有最高層次。