，其名稱來自於英語 Common Business Oriented Language 的縮寫，可譯為通用商業語言或面向常規業務型語言 常規商業資訊處理語言，它屬於編譯語言，是最早的高階程式語言之一，也是最早實施標準化的計算機語言之一。COBOL 主要應用於商業資料處理領域，此間大量的資料通常以檔案的形式儲存在磁碟上，它提供強大的檔案處理功能，對各種型別的資料進行收集、儲存、傳送、分類、排序、計算及列印報表、輸出影像。 歷史 1959 年 5 月，美國國防部委託葛麗絲霍普博士領導一個委員會，制定了 COBOL 語言的標準。和其他 5 位程式設計師，在紐約曼哈頓的封閉兩週，開發完成了 COBOL 的大部分設計。COBOL 最早是以葛麗絲霍普開發的語言為範本。 COBOL 於 1961 年由公佈。正式發布於 1960 年 4 月，稱為 COBOL－60，現在最新的版本是 COBOL－2023。1963 年，美國國家標準學會進行了標準化，但是 ANSI 標準很少被遵循，故而 COBOL 程式只是部分可移植的。 遺留 經過多年來的不斷修改、豐富完善和標準化，COBOL 已發展為多種版本的龐大語言。COBOL 在財會工作、統計報表、計劃編制、情報檢索、人事管理等資料管理及商業資料處理領域，都曾有著廣泛的應用。COBOL 多年來被視為過時的語言，但是目前仍有使用 COBOL 的金融業核心系統在執行中，除了舊有系統太龐大修改不易外，COBOL 平臺的穩定性也是它生命一直超過預期延續的重要原因。 在 2019 新型冠狀病毒疫情影響下，美國政府因為需處理大量失業救助，使得 COBOL 編寫的老舊系統頻繁出現故障，需要同樣上年紀、甚至已退休的老年 COBOL 程式設計師來協助維護，所以 COBOL 的創始團隊在網上公開教程和學習資源，讓年輕程式設計師學習 COBOL 來協助這些程式設計師維護系統，同時也緊急招募 COBOL 程式設計師來協助維護。 特點 COBOL 是一種面向資料處理的、面向檔案的、面向過程的高階程式語言，是一種功能很強而又極為冗長的語言。COBOL 語法與英文很接近，即使是不懂程式設計的人也能看懂程式碼。僅提供了加、減、乘、除及乘方這五種簡單的算術運算，因而不適於進行科學計算。COBOL 適合於具有迴圈處理週期的環境（例如列印工資支票）以及資料操縱量相當大的環境。 程式結構 COBOL 程式由 4 部（DIVISION）組成：IDENTIFICATION DIVISION（標識部）、ENVIRONMENT DIVISION（環境部）、DATA DIVISION（資料部）、 PROCEDURE DIVISION（過程部），而每個部又由若干節（SECTION）組成。 IDENTIFICATION DIVISION 「PROGRAMID」（程式識別 ID）、「AUTHOR」（作者名）、「DATEWRITTEN」（編寫日期），這些並不直接影響程式的執行，而是程式的註釋 資訊。程式註釋可以採用任何語言書寫，COBOL 編譯器可以接受。 ENVIRONMENT DIVISION 用於記載程式可以被執行的計算機環境。ENVIRONMENT DIVISION 部包括 CONFIGURATION SECTION 環境節和 INPUTOUTPUT SECTION 輸入輸出節。 DATA DIVISION 用於定義和宣告程式所要使用的變數及其他資料。程式要使用的全部變數和資料必須在這裡定義。DATA DIVISION 部主要包含 FILE SECTION 和 WORKINGSTORAGE SECTION 節。 如果程式要透過引數接收資料，那麼使用 LINKAGE SECTION 來宣告。 COBOL 的資料種類 COBOL 程式的資料，主要有以下 3 種： 變數（Variables） 常量（Literals） 表意常量（FigurativeConstants）：使用有特定意思的多個詞組合成一個常量的代名詞。好處是便於編碼人員識別。比如：HIGHVALUES、LOWVALUES 等可以表達一定意思的名稱作為常量代名詞。 COBOL 變數型別 COBOL 的基本變數型別，有以下三種： 數值型（Numeric） 英文字元型（AlphaNumeric） 英文字串型（Alphabetic） PROCEDURE DIVISION 用於容納程式的實際處理程式碼。需要傳入引數時，採用 PROCEDURE DIVISION USING 引數名 ，引數名 的方式。 因為前 3 個 DIVISION 都是註釋，卻又必須，只到第 4 個 DIVISION「PROCEDURE DIVISION」才真正涉及程式程式碼，這樣的繁瑣規定使得 COBOL 被批評為太過冗長。但是，基於這樣的 4 個 DIVISION 的明確記述等的嚴格形式，COBOL 也被公認是可讀性強的語言。另外，COBOL 的保留字數量龐大，字數過長的保留字太多是 COBOL 的特徵之一。 Hello world 例子程式碼 Hello world 用 COBOL 寫為： IDENTIFICATION DIVISION PROGRAMID helloworld PROCEDURE DIVISION DISPLAY Hello world 現在著名的 Hello World 程式例子，於 1978 年在《C 程式語言》書中最初問世的那個時代，在主機上類似的 COBOL 程式可以透過來提交，並很有可能使用打孔卡閱讀器和 80 列打孔卡。下面列出的具有空 DATA DIVISION 的程式碼，曾使用 GNULinux 和執行 38J 的 Hercules 模擬器測試過。這段寫於 2015 年的 JCL，是從 Hercules 教程和 Jay Moseley 保管的樣例派生而來。為了保持那個時代的 COBOL 程式，HELLO WORLD 用全部大寫字母顯示。 COBUCLG JOB 001COBOL BASE TEST 00010000 CLASSAMSGCLASSAMSGLEVEL11 00020000 BASETEST EXEC COBUCLG 00030000 COBSYSIN DD 00040000 00000 VALIDATION OF BASE COBOL INSTALL 00050000 01000 IDENTIFICATION DIVISION 00060000 01100 PROGRAMID HELLO 00070000 02000 ENVIRONMENT DIVISION 00080000 02100 CONFIGURATION SECTION 00090000 02110 SOURCECOMPUTER GNULINUX 00100000 02120 OBJECTCOMPUTER HERCULES 00110000 02200 SPECIALNAMES 00120000 02210 CONSOLE IS CONSL 00130000 03000 DATA DIVISION 00140000 04000 PROCEDURE DIVISION 00150000 04100 00MAIN 00160000 04110 DISPLAY HELLO WORLD UPON CONSL 00170000 04900 STOP RUN 00180000 LKEDSYSLIB DD DSNAMESYS1COBLIBDISPSHR 00190000 DD DSNAMESYS1LINKLIBDISPSHR 00200000 GOSYSPRINT DD SYSOUTA 00210000 00220000 在提交了這段 JCL 之後，MVS 控制檯顯示： 195248 JOB 3 HASP100 COBUCLG ON READER1 COBOL BASE TEST 195248 JOB 3 IEF677I WARNING MESSAGE S FOR JOB COBUCLG ISSUED 195248 JOB 3 HASP373 COBUCLG STARTED INIT 1 CLASS A SYS BSP1 195248 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING 195248 JOB 3 IEC130I SYSLIB DD STATEMENT MISSING 195248 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING 195248 JOB 3 IEFACTRT Stepname Procstep Program Retcode 195248 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC 0000 195248 JOB 3 COBUCLG BASETEST LKED IEWL RC 0000 195248 JOB 3 HELLO WORLD 195248 JOB 3 COBUCLG BASETEST GO PGMDD RC 0000 195248 JOB 3 HASP395 COBUCLG ENDED 為了效果對上述列出的第 10 行加以高亮，這個高亮不是實際的控制檯輸出。 有關的編譯器列表生成了超過四頁的技術細節和作業執行資訊，針對這 14 行 COBOL 的單一一行輸出。 註釋 參考文獻 Category 程式設計語言 Category1959 年面世