COBOL

的縮寫，是最早的高階程式語言、以及是世界上最早實施標準化的計算機語言之一。屬於編譯語言。歷史.1959年5月，美國國防部委託葛麗絲·霍普博士領導一個委員會，制定了COBOL語言的標準，並於1961年由#重定向 公佈。正式發布於1960年4月，稱為Cobol－60，現在最新的版本是Cobol－2002。COBOL最早是以葛麗絲·霍普開發的語言為範本。值得注意的是，葛麗絲·霍普並不是發明COBOL的六人組成員之一。1959 年，在紐約曼哈頓的#重定向 ，#重定向 和其他5位程式設計師閉關兩週，幾乎是無晝夜地開發，完成了 COBOL 的大部分設計。1963年，美國國家標準學會進行了標準化，但是ANSI標準很少被遵循；因此，COBOL程式只是部分可移植的。重要性.經過40多年的不斷修改、豐富完善和標準化，COBOL已發展為多種版本的龐大語言，在財會工作、統計報表、計劃編制、情報檢索、人事管理等資料管理及商業資料處理領域，都有著廣泛的應用。COBOL主要是應用於金融和會計行業等非常重要的商業資料處理領域，即使 COBOL 多年來被視為過時的語言，但是目前大多數的金融業核心系統仍多半使用COBOL，除了舊有系統太龐大修改不易外，COBOL 平臺的穩定性也是它生命一直超過預期延續的重要原因。在2019新型冠狀病毒疫情影響下，美國政府因為需處理大量失業給付，使得COBOL編寫的老舊系統頻繁出現故障，需要同樣上年紀、甚至已退休的老年COBOL程式設計師來協助維護，所以COBOL的創始團隊在網上公開教程和學習資源，讓年輕程式設計師學習COBOL來協助這些程式設計師維護系統，同時也緊急招募COBOL程式設計師來協助維護。特點.COBOL是一種面向資料處理的、面向檔案的、面向過程的高階程式語言，是一種功能很強而又極為冗長的語言。COBOL適合於具有迴圈處理週期的環境以及資料操縱量相當大的環境。COBOL主要應用於商業資料處理領域，對各種型別的資料進行收集、儲存、傳送、分類、排序、計算及列印報表、輸出影象是它的強項。COBOL語法與英文很接近，即使不懂電腦的人也能看懂程式。強大的檔案處理功能，大量的資料通常以檔案的形式儲存在磁碟上。僅提供了加、減、乘、除及乘方這五種簡單的算術運算，因而不適於進行科學計算。未來的COBOL將支援XML等Web時代的新技術。程式結構.COBOL程式由4部、PROCEDURE DIVISION.組成。IDENTIFICATION DIVISION..「PROGRAM-ID」，這些並不直接影響程式的執行，而是程式的註釋資訊。程式註釋可以採用任何語言書寫，COBOL編譯器可以接受。ENVIRONMENT DIVISION..用於記載程式可以被執行的計算機環境。“ENVIRONMENT DIVISION.”部包括“CONFIGURATION SECTION”環境節和“INPUT-OUTPUT SECTION”輸入輸出節。DATA DIVISION..用於定義和宣告程式所要使用的變數及其他資料。程式要使用的全部變數和資料必須在這裡定義。“DATA DIVISION.”部主要包含“FILE SECTION.”和“WORKING-STORAGE SECTION.”節。如果程式要透過引數接收資料，那麼使用“LINKAGE SECTION”來宣告。COBOL的資料種類.COBOL程式的資料，主要有以下3種：COBOL變數型別.COBOL的基本變數型別，有以下三種：PROCEDURE DIVISION.用於容納程式的實際處理程式碼。需要傳入引數時，採用“PROCEDURE DIVISION USING引數名[，引數名...]”的方式。因為前3個DIVISION都是註釋，卻又必須，只到第4個DIVISION「PROCEDURE DIVISION」才真正涉及程式程式碼，這樣的繁瑣規定使得COBOL被批評為太過冗長。但是，基於這樣的4個DIVISION的明確記述等的嚴格形式，COBOL也被公認是可讀性強的語言。另外，COBOL的保留字數量龐大，字數過長的保留字太多是COBOL的特徵之一。Hello world例子程式碼.Hello world用COBOL寫為：IDENTIFICATION DIVISION.PROGRAM-ID. hello-world.PROCEDURE DIVISION.DISPLAY "Hello, world!"現在著名的Hello, World!程式例子，於1978年在《C程式語言》書中最初問世的那個時代，在主機上類似的COBOL程式可以透過來提交，並很有可能使用打孔卡閱讀器和80列打孔卡。下面列出的具有空codice_1的程式碼，曾使用GNU/Linux和執行 3.8J的 Hercules模擬器測試過。這段寫於2015年的JCL，是從Hercules教程和Jay Moseley保管的樣例派生而來。為了保持那個時代的COBOL程式，HELLO, WORLD用全部大寫字母顯示。//COBUCLG JOB (001),'COBOL BASE TEST', 00010000// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) 00020000//BASETEST EXEC COBUCLG 00030000//COB.SYSIN DD * 0004000000000* VALIDATION OF BASE COBOL INSTALL 0005000001000 IDENTIFICATION DIVISION. 0006000001100 PROGRAM-ID. 'HELLO'. 0007000002000 ENVIRONMENT DIVISION. 0008000002100 CONFIGURATION SECTION. 0009000002110 SOURCE-COMPUTER. GNULINUX. 0010000002120 OBJECT-COMPUTER. HERCULES. 0011000002200 SPECIAL-NAMES. 0012000002210 CONSOLE IS CONSL. 0013000003000 DATA DIVISION. 0014000004000 PROCEDURE DIVISION. 0015000004100 00-MAIN. 0016000004110 DISPLAY 'HELLO, WORLD' UPON CONSL. 0017000004900 STOP RUN. 00180000//LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR 00190000// DD DSNAME=SYS1.LINKLIB,DISP=SHR 00200000//GO.SYSPRINT DD SYSOUT=A 00210000// 00220000在提交了這段JCL之後，MVS控制檯顯示：19.52.48 JOB 3 $HASP100 COBUCLG ON READER1 COBOL BASE TEST19.52.48 JOB 3 IEF677I WARNING MESSAGE(S) FOR JOB COBUCLG ISSUED19.52.48 JOB 3 $HASP373 COBUCLG STARTED - INIT 1 - CLASS A - SYS BSP119.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING19.52.48 JOB 3 IEC130I SYSLIB DD STATEMENT MISSING19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING19.52.48 JOB 3 IEFACTRT - Stepname Procstep Program Retcode19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 000019.52.48 JOB 3 COBUCLG BASETEST LKED IEWL RC= 000019.52.48 JOB 3 +HELLO, WORLD19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 000019.52.48 JOB 3 $HASP395 COBUCLG ENDED為了效果對上述列出的第10行加以高亮，這個高亮不是實際的控制檯輸出。有關的編譯器列表生成了超過四頁的技術細節和作業執行資訊，針對這14行COBOL的單一一行輸出。