COBOL

（），其名称来自于英语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部（codice_1）组成：codice_2.（标识部）、codice_3.（环境部）、codice_4.（数据部）、
codice_5.（过程部），而每个部又由若干节（codice_6）组成。
IDENTIFICATION DIVISION..
「codice_7」（程序识别ID）、「codice_8」（作者名）、「codice_9」（编写日期），这些并不直接影响程序的执行，而是程序的注释
信息。程序注释可以采用任何语言书写，COBOL编译器可以接受。
ENVIRONMENT DIVISION..
用于记载程序可以被运行的计算机环境。“codice_3.”部包括“codice_11”环境节和“codice_12”输入输出节。
DATA DIVISION..
用于定义和声明程序所要使用的变量及其他数据。程序要使用的全部变量和数据必须在这里定义。“codice_4.”部主要包含“codice_14.”和“codice_15.”节。
如果程序要通过参数接收数据，那么使用“codice_16”来声明。
COBOL的数据种类.
COBOL程序的数据，主要有以下3种：
COBOL变量类型.
COBOL的基本变量类型，有以下三种：
PROCEDURE DIVISION.
用于容纳程序的实际处理代码。需要传入参数时，采用“codice_17引数名[，参数名...]”的方式。
因为前3个DIVISION都是注释，却又必须，只到第4个DIVISION「codice_5」才真正涉及程序代码，这样的繁琐规定使得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_4的代码，曾使用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 * 00040000
 00000* VALIDATION OF BASE COBOL INSTALL 00050000
 01000 IDENTIFICATION DIVISION. 00060000
 01100 PROGRAM-ID. 'HELLO'. 00070000
 02000 ENVIRONMENT DIVISION. 00080000
 02100 CONFIGURATION SECTION. 00090000
 02110 SOURCE-COMPUTER. GNULINUX. 00100000
 02120 OBJECT-COMPUTER. HERCULES. 00110000
 02200 SPECIAL-NAMES. 00120000
 02210 CONSOLE IS CONSL. 00130000
 03000 DATA DIVISION. 00140000
 04000 PROCEDURE DIVISION. 00150000
 04100 00-MAIN. 00160000
 04110 DISPLAY 'HELLO, WORLD' UPON CONSL. 00170000
 04900 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 TEST
 19.52.48 JOB 3 IEF677I WARNING MESSAGE(S) FOR JOB COBUCLG ISSUED
 19.52.48 JOB 3 $HASP373 COBUCLG STARTED - INIT 1 - CLASS A - SYS BSP1
 19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING
 19.52.48 JOB 3 IEC130I SYSLIB DD STATEMENT MISSING
 19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING
 19.52.48 JOB 3 IEFACTRT - Stepname Procstep Program Retcode
 19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000
 19.52.48 JOB 3 COBUCLG BASETEST LKED IEWL RC= 0000
 19.52.48 JOB 3 +HELLO, WORLD
 19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000
 19.52.48 JOB 3 $HASP395 COBUCLG ENDED
为了效果对上述列出的第10行加以高亮，这个高亮不是实际的控制台输出。
有关的编译器列表生成了超过四页的技术细节和作业运行信息，针对这14行COBOL的单一一行输出。