COBOL(中文名:通用商業(yè)語言),是英文Common Business-Oriented Language的縮寫,原意是面向商業(yè)的通用語言,COBOL是一種面向過程的高級(jí)程序設(shè)計(jì)語言,主要用于數(shù)據(jù)處理,是國際上應(yīng)用最廣泛的一種高級(jí)語言,由數(shù)據(jù)系統(tǒng)語言會(huì)議(CODASYL)推出。
1959年12月,數(shù)據(jù)系統(tǒng)語言會(huì)議提出初稿,1960年4月,正式公布第一個(gè)COBOL文本,稱為COBOL-60。經(jīng)過進(jìn)一步擴(kuò)充和完善,又出現(xiàn)了COBOL-61和擴(kuò)展COBOL-61。1965年,出現(xiàn)COBOL-65。1972年,國際標(biāo)準(zhǔn)化組織 (ISO)把ISO COBOL-72推薦為國際標(biāo)準(zhǔn),并被美國、英國、法國、日本和蘇聯(lián)等21個(gè)會(huì)員國所承認(rèn)。1978年,ANSI COBOLX3.23-1974被國際標(biāo)準(zhǔn)化組織推薦為國際標(biāo)準(zhǔn)文本。2002年,COBOL 2002版本推出,通過引入面向?qū)ο筇匦院推渌冗M(jìn)的編程范式,使COBOL應(yīng)用程序與現(xiàn)代軟件開發(fā)實(shí)踐更加兼容。COBOL采用300多個(gè)英語單詞作為保留字,以一種接近于英語書面語言的形式來描述數(shù)據(jù)特性和數(shù)據(jù)處理過程,因而便于理解和學(xué)習(xí)。COBOL是專門為企業(yè)管理而設(shè)計(jì)的高級(jí)語言,可用于統(tǒng)計(jì)報(bào)表、財(cái)務(wù)、會(huì)計(jì)、計(jì)劃編制、作業(yè)調(diào)度、情報(bào)檢索和人事管理等方面。
COBOL程序具有層次結(jié)構(gòu),包含部(divisions)、節(jié)(sections)、段(paragraphs)、語句(sentences)、動(dòng)詞(verbs)和字符串(character strings)。COBOL系統(tǒng)的分部特性(由四個(gè)部組成)使得COBOL程序內(nèi)能夠?qū)崿F(xiàn)關(guān)注點(diǎn)的清晰分離。
發(fā)展歷史
1956年在美國富蘭克林學(xué)會(huì)召開的高級(jí)語言學(xué)術(shù)討論會(huì)上提出FLOWMATIC語言,并在UNIVAC Ⅰ型計(jì)算機(jī)上實(shí)現(xiàn)。這是第一個(gè)面向數(shù)據(jù)處理的語言,它為COBOL的誕生創(chuàng)造了良好的條件。
1959年5月,美國國防部召開專門會(huì)議,討論建立通用商業(yè)語言的要求和可能性,確定了這種語言的基本設(shè)計(jì)思想和應(yīng)具有的特點(diǎn)。會(huì)后成立數(shù)據(jù)系統(tǒng)語言委員會(huì)(CODASYL),其中有一個(gè)短期工作委員會(huì)專門負(fù)責(zé)COBOL的開發(fā)。1959年9月,提出初稿,1960年4月,正式公布第一個(gè)COBOL文本,稱為COBOL-60。經(jīng)過進(jìn)一步擴(kuò)充和完善,又出現(xiàn)了COBOL-61和擴(kuò)展COBOL-61。
1965年,出現(xiàn)COBOL-65。1968年,被美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)批準(zhǔn)為標(biāo)準(zhǔn)文本,即ANSICOBOL X3.23-1968,簡稱COBOL-68。1972年,國際標(biāo)準(zhǔn)化組織 (ISO)把此文本推薦為國際標(biāo)準(zhǔn),即ISO COBOL-72,并被美國、英國、法國、日本和蘇聯(lián)等21個(gè)會(huì)員國所承認(rèn)。1974年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)對(duì)COBOL-68作了修改補(bǔ)充,公布了新文本ANSI COBOLX3.23-1974。
1978年,ANSI COBOLX3.23-1974被國際標(biāo)準(zhǔn)化組織推薦為國際標(biāo)準(zhǔn)文本,即ISO COBOL-78。計(jì)算機(jī)制造商均以ISO COBOL-72或ISO COBOL-78作為設(shè)計(jì)軟件的依據(jù),幾乎在所有的大、中、小型計(jì)算機(jī)上都配有COBOL,微型計(jì)算機(jī)則采用COBOL的一個(gè)子集。中國引進(jìn)COBOL后還增加了漢字處理功能。
2002年,COBOL 2002版本推出,通過引入面向?qū)ο筇匦院推渌冗M(jìn)的編程范式,使COBOL應(yīng)用程序與現(xiàn)代軟件開發(fā)實(shí)踐更加兼容。
主要特點(diǎn)
數(shù)據(jù)處理專長
COBOL專為數(shù)據(jù)密集型領(lǐng)域設(shè)計(jì),其典型應(yīng)用場景涵蓋企業(yè)資源管理(ERP)、供應(yīng)鏈系統(tǒng)、財(cái)務(wù)報(bào)表生成及商業(yè)智能分析等領(lǐng)域。該語言針對(duì)數(shù)據(jù)處理特性進(jìn)行了深度優(yōu)化:
這種設(shè)計(jì)哲學(xué)使COBOL在需要處理海量事務(wù)數(shù)據(jù)(如每日百萬級(jí)銀行交易)的商業(yè)環(huán)境中表現(xiàn)卓越,其運(yùn)算模塊雖包含基礎(chǔ)算術(shù)功能,但更強(qiáng)調(diào)數(shù)據(jù)流轉(zhuǎn)效率而非計(jì)算復(fù)雜度。
英語語法友好性
COBOL采用類自然語言的編程范式,其語法設(shè)計(jì)遵循英語表達(dá)習(xí)慣:
典型代碼示例:
這種設(shè)計(jì)使非專業(yè)程序員(如財(cái)務(wù)分析師)也能快速理解程序邏輯,符合"代碼即文檔"的編程理念。
跨平臺(tái)兼容性
作為ANSI/ISO標(biāo)準(zhǔn)化語言(ISO/IEC 1989),COBOL具備:
這使得企業(yè)核心系統(tǒng)(如核心銀行系統(tǒng))可在不同硬件架構(gòu)間平滑遷移,典型遷移項(xiàng)目周期較其他語言縮短30-50%。
模塊化程序結(jié)構(gòu)
COBOL強(qiáng)制實(shí)施分層架構(gòu)設(shè)計(jì),程序結(jié)構(gòu)包含:
這種嚴(yán)格的結(jié)構(gòu)化要求雖增加初期開發(fā)成本,但帶來顯著維護(hù)優(yōu)勢:
實(shí)現(xiàn)效率與局限
COBOL的嚴(yán)謹(jǐn)性導(dǎo)致:
盡管如此,其在關(guān)鍵業(yè)務(wù)系統(tǒng)的統(tǒng)治地位依然穩(wěn)固:全球70%的ATM交易、80%的企業(yè)核心業(yè)務(wù)系統(tǒng)仍依賴COBOL運(yùn)行,每日處理價(jià)值數(shù)萬億美元的商業(yè)交易。這種持久生命力源于其設(shè)計(jì)初衷與商業(yè)計(jì)算需求的完美契合,以及在金融、保險(xiǎn)等強(qiáng)監(jiān)管領(lǐng)域的不可替代性。
語言組成
總體結(jié)構(gòu)
COBOL程序具有層次結(jié)構(gòu),包含部(divisions)、節(jié)(sections)、段(paragraphs)、語句(sentences)、動(dòng)詞(verbs)和字符串(character strings)。COBOL系統(tǒng)的分部特性(由四個(gè)部組成)使得COBOL程序內(nèi)能夠?qū)崿F(xiàn)關(guān)注點(diǎn)的清晰分離。
主要部分
標(biāo)識(shí)部
標(biāo)識(shí)部是COBOL程序的第一個(gè)部,且為必選部。它為程序賦予名稱,并提供其他標(biāo)識(shí)信息,如作者、編寫日期和程序目的的簡要描述。
COBOL程序在標(biāo)識(shí)部中需要一個(gè)PROGRAM - ID段才能正常運(yùn)行。例如:
環(huán)境部
環(huán)境部指定程序的運(yùn)行時(shí)環(huán)境,并定義其將使用的輸入和輸出資源。它細(xì)分為兩個(gè)節(jié)。
不出所料,配置節(jié)提供系統(tǒng)配置信息,包括所使用的計(jì)算機(jī)和編譯器特性。然而,由于編譯器工具的進(jìn)步,在現(xiàn)代COBOL系統(tǒng)中,配置節(jié)已有些過時(shí),現(xiàn)代系統(tǒng)通常能夠推斷并自動(dòng)適應(yīng)其環(huán)境。
輸入 - 輸出節(jié)指定程序可以與之交互的文件和相關(guān)設(shè)備。它包括FILE - CONTROL段(將程序內(nèi)的文件名映射到外部文件)和I - O - CONTROL段(通常包含輸入 - 輸出操作的優(yōu)化或排序信息)。
數(shù)據(jù)部
數(shù)據(jù)部包含程序的所有變量、文件和常量定義。與環(huán)境部一樣,數(shù)據(jù)部也進(jìn)行細(xì)分。
文件節(jié)列出程序?qū)闹凶x取或?qū)懭肫渲械拿總€(gè)文件。文件描述條目定義每個(gè)文件,并描述文件中記錄的結(jié)構(gòu)。
工作存儲(chǔ)節(jié)定義在程序運(yùn)行期間保持其值的變量,包括計(jì)數(shù)器、累加器、常量以及與I - O文件無關(guān)的任何其他數(shù)據(jù)存儲(chǔ)。
在COBOL的后續(xù)版本中引入的本地存儲(chǔ)節(jié)定義在程序或方法部署時(shí)分配、在終止時(shí)釋放的變量,這使得本地存儲(chǔ)對(duì)于遞歸算法和可重入程序特別有用。
最后,連接節(jié)定義從一個(gè)程序傳遞到另一個(gè)程序的數(shù)據(jù)項(xiàng)。
過程部
過程部包含程序的可執(zhí)行代碼,該代碼被劃分為段和節(jié),將代碼組織成代碼塊,以提高可讀性和便于維護(hù)。
其他組件
COBOL系統(tǒng)的每個(gè)部都可以包含節(jié)和段,它們類似于人類語言中的節(jié)和段。節(jié)是每個(gè)部中具有名稱的邏輯細(xì)分,包含一個(gè)或多個(gè)段;它們作為可在程序中調(diào)用或調(diào)用的模塊化代碼單元。
段是語句(COBOL程序中最小的可執(zhí)行單元)的集合,這些語句具有特定功能,并通過唯一名稱進(jìn)行標(biāo)識(shí)。段中的每個(gè)COBOL語句都以一個(gè)COBOL動(dòng)詞(如MOVE、DISPLAY和ADD)開頭,該動(dòng)詞指示代碼的運(yùn)行方式。
COBOL最基本且不可分割的單位是字符。字符串是字符或連續(xù)字符序列,它們形成COBOL單詞、字面量或注釋項(xiàng),由分隔符分隔。
語言語法
COBOL類似英語的語法具有自文檔化和近乎自解釋的特點(diǎn),強(qiáng)調(diào)冗長和可讀性。這一特性使其區(qū)別于像Fortran這樣更簡潔的語言。它還可以支持幾種不同的數(shù)據(jù)類型(例如,數(shù)字、字母數(shù)字和編輯數(shù)據(jù)),但執(zhí)行程序需要依賴一些額外的語法組件。
語句和聲明
語句是COBOL代碼行,由一個(gè)或多個(gè)以句號(hào)結(jié)尾的聲明組成。聲明是個(gè)別指令,通過使用動(dòng)詞(如ADD、START、DISPLAY和WRITE等)來協(xié)調(diào)文件處理和數(shù)據(jù)處理過程。
例如,MOVE聲明將數(shù)據(jù)從系統(tǒng)內(nèi)存的一部分傳輸?shù)搅硪徊糠郑籆OMPUTE聲明執(zhí)行算術(shù)運(yùn)算并將結(jié)果存儲(chǔ)為變量;READ聲明從輸入文件中檢索記錄。
從句
從句是聲明的組件,可以修改或限定聲明的執(zhí)行方式。例如,像“PIC 9(3)”這樣的圖片從句定義一個(gè)可以容納最多三位數(shù)字的數(shù)值變量。
控制結(jié)構(gòu)
COBOL中的迭代和條件控制結(jié)構(gòu)使系統(tǒng)能夠控制數(shù)據(jù)流。
例如,IF ... ELSE結(jié)構(gòu)在COBOL中實(shí)現(xiàn)條件邏輯,以便程序可以根據(jù)系統(tǒng)條件的評(píng)估執(zhí)行不同的代碼塊。PERFORM語句執(zhí)行指定次數(shù)的段或節(jié),或者直到滿足某個(gè)條件為止,類似于其他編程語言中的循環(huán)。
子程序
COBOL可以通過使用子程序來促進(jìn)模塊化編程,子程序可以從主程序或其他子程序中調(diào)用。內(nèi)部子程序在與調(diào)用程序相同的源代碼中定義(寫在過程部中),而外部子程序則單獨(dú)編譯并根據(jù)需要鏈接。
構(gòu)建流程
構(gòu)建COBOL程序的過程因組織情況而異,但通常涉及幾個(gè)關(guān)鍵步驟。
編寫程序
例如,如果一名軟件工程師想要編寫基本的“Hello, world!”程序,他們會(huì)編寫如下代碼:
使用與COBOL兼容的集成開發(fā)環(huán)境(IDE)或文本編輯器可以幫助完成此過程。
編譯程序
與其他高級(jí)編程語言一樣,COBOL代碼在執(zhí)行之前必須進(jìn)行編譯。COBOL編譯器(如GnuCOBOL、Micro Focus和IBM? COBOL編譯器系列)將程序轉(zhuǎn)換為機(jī)器代碼,以便計(jì)算機(jī)的CPU能夠理解和執(zhí)行它。
執(zhí)行程序
程序編譯完成后,程序員可以在目標(biāo)系統(tǒng)上執(zhí)行它。假設(shè)沒有錯(cuò)誤,程序?qū)⒆裱^程部中定義的數(shù)據(jù)處理邏輯來處理數(shù)據(jù)。執(zhí)行過程通常包括從文件和數(shù)據(jù)庫中讀取數(shù)據(jù)、執(zhí)行數(shù)據(jù)計(jì)算或轉(zhuǎn)換,然后將結(jié)果寫入文件或數(shù)據(jù)庫。
調(diào)試程序
如果程序中存在任何錯(cuò)誤或漏洞,程序員需要識(shí)別并修復(fù)它們(這一過程稱為調(diào)試)。依靠調(diào)試工具和技術(shù)可以簡化這一過程。
語言優(yōu)勢
COBOL曾經(jīng)是商業(yè)應(yīng)用計(jì)算機(jī)編程中使用最廣泛的語言。COBOL開發(fā)仍然是全球技術(shù)基礎(chǔ)設(shè)施中功能性和關(guān)鍵性的一部分,特別是對(duì)于銀行機(jī)構(gòu)、保險(xiǎn)公司和政府機(jī)構(gòu)而言。COBOL編程可以為選擇使用它的組織(盡管相對(duì)缺乏COBOL程序員)帶來諸多好處,包括:
穩(wěn)定性
COBOL以其在關(guān)鍵任務(wù)應(yīng)用中的穩(wěn)定、可靠性能而聞名。用COBOL編寫的系統(tǒng)通常具有高可用性且故障很少,這對(duì)金融機(jī)構(gòu)和政府服務(wù)的持續(xù)運(yùn)營至關(guān)重要。
可擴(kuò)展性
開發(fā)人員可以擴(kuò)展COBOL應(yīng)用程序以處理不斷增加的工作負(fù)載,而無需對(duì)代碼庫進(jìn)行重大更改,這使組織能夠隨著業(yè)務(wù)的發(fā)展而擴(kuò)展其基于COBOL的系統(tǒng),而無需頻繁重寫或遷移到其他語言。
數(shù)據(jù)處理和文件處理
COBOL提供了出色的文件處理能力。它可以處理復(fù)雜的大規(guī)模交易數(shù)據(jù),并支持多種文件訪問方法,包括順序、索引和相對(duì)數(shù)據(jù)文件處理。COBOL在流程自動(dòng)化方面的穩(wěn)健性使其非常適合批處理作業(yè),如處理金融交易、管理數(shù)據(jù)庫和生成報(bào)告。
互操作性
COBOL系統(tǒng)可以與其他語言和技術(shù)(如HTML、JSON、XML和生成式AI)互操作,這是由于引入了面向?qū)ο蟮腃OBOL和與新編程語言的接口。面向?qū)ο筮€促進(jìn)了COBOL應(yīng)用程序與虛擬和云服務(wù)(如亞馬遜network service(AWS)、Microsoft Azure和IBM Cloud?)、SQL數(shù)據(jù)庫和其他現(xiàn)代DevOps基礎(chǔ)設(shè)施的集成。
語言應(yīng)用
COBOL支持80%的面對(duì)面信用卡交易,處理95%的ATM交易,并為每天產(chǎn)生超過30億美元交易量的系統(tǒng)提供支持。
相關(guān)事件
2023年中旬,IBM推出了Watsonx Code Assistant for Z工具,旨在幫助維護(hù)人員將IBM Z大型機(jī)上的COBOL程序轉(zhuǎn)換為更流行的Java語言,從而加速“大型機(jī)”的退役過程。
2025年3月,IBM對(duì)旗下AI編程助手Watsonx Code Assistant for Z進(jìn)行更新,新增“讀代碼、寫注釋”功能,能夠通過一系列實(shí)時(shí)注釋幫助維護(hù)人員理解大型機(jī)所用的COBOL,便于他們維護(hù)這些“上古代碼”。IBM定于2025年6月全面推出Watsonx Code Assistant for Z工具,并預(yù)告用戶屆時(shí)還將能夠在本地終端上部署Watsonx Code Assistant for Z環(huán)境,無需將COBOL代碼現(xiàn)有上傳到云端即可將相關(guān)語言轉(zhuǎn)換為帶有注釋的Java代碼,便于在一些不便接入網(wǎng)絡(luò)的場合使用相關(guān)特性。
參考資料 >
什么是 COBOL?.ibm.2025-04-01
2020年9月17日(星期四)最新招聘信息.微信公眾號(hào).2025-04-01
可為“上古”COBOL 語言提供注釋,IBM 更新 AI 編程助手 Watsonx Code Assistant for Z.IT之家.2025-04-01