fbpx
维基百科

COBOL

COBOL/ˈkbɒl/),其名稱來自於通用商業語言[2](英語:Common Business Oriented Language,又譯為面向常規業務型語言/常規商業信息處理語言)的縮寫,是最早的高階程式語言、以及是世界上最早實施標準化計算機語言之一。屬於編譯語言

COBOL
编程范型过程式编程, 指令式編程, 面向对象程序设计
設計者Howard Bromberg, Howard Discount, Vernon Reeves, Jean E. Sammet英语Jean E. Sammet, William Selden, Gertrude Tierney
實作者CODASYL英语CODASYL, 美國國家標準協會, 國際標準化組織
发行时间1959年,​64年前​(1959
目前版本
型態系統強弱型別, 類型系統
文件扩展名.cbl, .cob, .cpy
主要實作產品
GnuCOBOL, IBM COBOL英语IBM COBOL, Micro Focus Visual COBOL
衍生副語言
ACUCOBOL-GT, COBOL-IT, COBOL/2, DEC COBOL-10, DEC VAX COBOL, DOSVS COBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL/400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL, isCOBOL, Micro Focus COBOL, Microsoft COBOL, Realia COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys MCP COBOL85, Unix COBOL X/Open, Visual COBOL, Wang VS COBOL

历史

1959年5月,美國國防部委託葛麗絲·霍普(Grace Murray Hopper)博士領導一個委員會,制定了COBOL語言的標準[查证请求],並於1961年由美國數據系統語言協會公布。正式發布於1960年4月,稱為Cobol-60,現在最新的版本是Cobol-2002。COBOL最早是以葛麗絲·霍普開發的FLOW-MATIC英语FLOW-MATIC語言為範本。值得注意的是,葛麗絲·霍普並不是發明COBOL的六人組成員之一。1959 年,在紐約曼哈頓的雪梨荷蘭酒店,Jean E. Sammet英语Jean E. Sammet 和其他 5 位程序員閉關兩週,幾乎是無晝夜地開發,完成了 COBOL 的大部分設計。[3]

1963年,美國國家標準學會进行了标准化,但是ANSI标准很少被遵循;因此,COBOL程序只是部分可移植的。

重要性

经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语言,在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。

COBOL主要是应用于金融和会计行业等非常重要的商业数据处理领域,即使 COBOL 多年來被視為過時的語言,但是目前大多數的金融業核心系統仍多半使用COBOL,除了舊有系統太龐大修改不易外,COBOL 平台的穩定性也是它生命一直超過預期延續的重要原因。

2019新型冠狀病毒疫情影响下,美国政府因為需處理大量失業給付,使得COBOL编写的老旧系统頻繁出现故障,需要同样上年纪、甚至已退休的老年COBOL程序员来協助维护,所以COBOL的创始团队在网上公开教程和学习资源,让年轻程序员学习COBOL来协助这些程序员维护系統,同时也紧急招募COBOL程序员来协助维护。[4]

特点

COBOL是一種面向數據處理的、面向文件的、面向過程POL)的高級編程語言,是一種功能很強而又極為冗長的語言。

COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行收集、存儲、傳送、分類、排序、計算及打印報表、輸出圖像是它的強項。

COBOL语法与英文很接近,即使不懂电脑的人也能看懂程序。

強大的文件處理功能,大量的數據通常以文件的形式存儲在磁盤上。

仅提供了加、减、乘、除及乘方这五种简单的算术运算,因而不适于进行科学计算

未来的COBOL将支持XMLWeb时代的新技术。

程序结构

COBOL程序由4部(DIVISION)组成:IDENTIFICATION DIVISION.(标识部)、ENVIRONMENT DIVISION.(环境部)、DATA DIVISION.(数据部)、 PROCEDURE DIVISION.(过程部),而每个部又由若干节(SECTION)组成。

IDENTIFICATION DIVISION.

「PROGRAM-ID」(程序識別ID)、「AUTHOR」(作者名)、「DATE-WRITTEN」(編寫日期),這些並不直接影響程序的執行,而是程序的註釋 信息。程序註釋可以採用任何語言書寫,COBOL編譯器可以接受。

ENVIRONMENT DIVISION.

用于记载程序可以被运行的计算机环境。“ENVIRONMENT DIVISION.”部包括“CONFIGURATION SECTION”环境节和“INPUT-OUTPUT SECTION”输入输出节。

DATA DIVISION.

用于定义和声明程序所要使用的变量及其他数据。程序要使用的全部变量和数据必须在这里定义。“DATA DIVISION.”部主要包含“FILE SECTION.”和“WORKING-STORAGE SECTION.”节。

如果程序要通过参数接收数据,那么使用“LINKAGE SECTION”来声明。

COBOL的数据种类

COBOL程序的数据,主要有以下3种:

  • 变量(Variables)
  • 常量(Literals)
  • 表意常量(FigurativeConstants):使用有特定意思的多个词组合成一个常量的代名词。好处是便于编码人员识别。比如:HIGH-VALUES、LOW-VALUES等可以表达一定意思的名称作为常量代名词。

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.   PROGRAM-ID. hello-world.   PROCEDURE DIVISION.   DISPLAY "Hello, world!"   . 

现在著名的Hello, World!程序例子,于1978年在《C编程语言》书中最初问世的那个时代,在主机上类似的COBOL程序可以通过JCL英语Job Control Language来提交,并很有可能使用打孔卡阅读器和80列打孔卡。下面列出的具有空DATA DIVISION的代码,曾使用GNU/Linux和运行MVS英语MVS 3.8J的System/370英语IBM System/370 Hercules模拟器测试过。这段写于2015年的JCL,是从Hercules教程和Jay Moseley保管的样例派生而来[5]。为了保持那个时代的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的单一一行输出。

参考文献

  1. ^ http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=51416.
  2. ^ 國家教育研究院 學術名詞COBOL. [2017-06-08]. (原始内容于2017-08-05). 
  3. ^ . [2017-06-08]. (原始内容存档于2017-06-21). 
  4. ^ 大型主機疫情期用量飆高,美數個州急徵COBOL人才. iThome. [2020-04-15]. (原始内容于2020-04-17) (中文(繁體)). 
  5. ^ Moseley, Jay. . 17 January 2015 [19 July 2015]. (原始内容存档于2015-07-22). 

cobol, 此條目可参照外語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 其名稱來自於通用商業語言, 英語, common, business, oriented. 此條目可参照外語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 COBOL ˈ k oʊ b ɒ l 其名稱來自於通用商業語言 2 英語 Common Business Oriented Language 又譯為面向常規業務型語言 常規商業信息處理語言 的縮寫 是最早的高階程式語言 以及是世界上最早實施標準化的計算機語言之一 屬於編譯語言 COBOL编程范型过程式编程 指令式編程 面向对象程序设计設計者Howard Bromberg Howard Discount Vernon Reeves Jean E Sammet 英语 Jean E Sammet William Selden Gertrude Tierney實作者CODASYL 英语 CODASYL 美國國家標準協會 國際標準化組織发行时间1959年 64年前 1959 目前版本2019 1 型態系統強弱型別 類型系統文件扩展名 cbl cob cpy主要實作產品GnuCOBOL IBM COBOL 英语 IBM COBOL Micro Focus Visual COBOL衍生副語言ACUCOBOL GT COBOL IT COBOL 2 DEC COBOL 10 DEC VAX COBOL DOSVS COBOL Fujitsu COBOL Hitachi COBOL2002 HP3000 COBOL II IBM COBOL SAA IBM COBOL 400 IBM COBOL II IBM Enterprise COBOL IBM ILE COBOL IBM OS VS COBOL ICL COBOL isCOBOL Micro Focus COBOL Microsoft COBOL Realia COBOL Ryan McFarland RM COBOL Ryan McFarland RM COBOL 85 Tandem NonStop COBOL85 Tandem NonStop SCOBOL UNIVAC COBOL Unisys MCP COBOL74 Unisys MCP COBOL85 Unix COBOL X Open Visual COBOL Wang VS COBOL維基教科書中有關COBOL的文本 目录 1 历史 2 重要性 3 特点 4 程序结构 4 1 IDENTIFICATION DIVISION 4 2 ENVIRONMENT DIVISION 4 3 DATA DIVISION 4 3 1 COBOL的数据种类 4 3 2 COBOL变量类型 4 4 PROCEDURE DIVISION 5 Hello world例子代码 6 参考文献历史 编辑1959年5月 美國國防部委託葛麗絲 霍普 Grace Murray Hopper 博士領導一個委員會 制定了COBOL語言的標準 查证请求 並於1961年由美國數據系統語言協會公布 正式發布於1960年4月 稱為Cobol 60 現在最新的版本是Cobol 2002 COBOL最早是以葛麗絲 霍普開發的FLOW MATIC 英语 FLOW MATIC 語言為範本 值得注意的是 葛麗絲 霍普並不是發明COBOL的六人組成員之一 1959 年 在紐約曼哈頓的雪梨荷蘭酒店 Jean E Sammet 英语 Jean E Sammet 和其他 5 位程序員閉關兩週 幾乎是無晝夜地開發 完成了 COBOL 的大部分設計 3 1963年 美國國家標準學會进行了标准化 但是ANSI标准很少被遵循 因此 COBOL程序只是部分可移植的 重要性 编辑此章節的中立性有争议 加上此模板的編輯者需在討論頁說明此章節中立性有爭議的原因 以便讓各編輯者討論和改善 此條目需要补充更多来源 2010年12月19日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 COBOL 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 经过40多年的不断修改 丰富完善和标准化 COBOL已发展为多种版本的庞大语言 在财会工作 统计报表 计划编制 情报检索 人事管理等数据管理及商业数据处理领域 都有着广泛的应用 COBOL主要是应用于金融和会计行业等非常重要的商业数据处理领域 即使 COBOL 多年來被視為過時的語言 但是目前大多數的金融業核心系統仍多半使用COBOL 除了舊有系統太龐大修改不易外 COBOL 平台的穩定性也是它生命一直超過預期延續的重要原因 在2019新型冠狀病毒疫情影响下 美国政府因為需處理大量失業給付 使得COBOL编写的老旧系统頻繁出现故障 需要同样上年纪 甚至已退休的老年COBOL程序员来協助维护 所以COBOL的创始团队在网上公开教程和学习资源 让年轻程序员学习COBOL来协助这些程序员维护系統 同时也紧急招募COBOL程序员来协助维护 4 特点 编辑COBOL是一種面向數據處理的 面向文件的 面向過程 POL 的高級編程語言 是一種功能很強而又極為冗長的語言 COBOL适合于具有循环处理周期的环境 例如打印工资支票 以及数据操纵量相当大的环境 COBOL主要应用于商业数据处理领域 对各种类型的数据进行收集 存儲 傳送 分類 排序 計算及打印報表 輸出圖像是它的強項 COBOL语法与英文很接近 即使不懂电脑的人也能看懂程序 強大的文件處理功能 大量的數據通常以文件的形式存儲在磁盤上 仅提供了加 减 乘 除及乘方这五种简单的算术运算 因而不适于进行科学计算 未来的COBOL将支持XML等Web时代的新技术 程序结构 编辑COBOL程序由4部 DIVISION 组成 IDENTIFICATION DIVISION 标识部 ENVIRONMENT DIVISION 环境部 DATA DIVISION 数据部 PROCEDURE DIVISION 过程部 而每个部又由若干节 SECTION 组成 IDENTIFICATION DIVISION 编辑 PROGRAM ID 程序識別ID AUTHOR 作者名 DATE WRITTEN 編寫日期 這些並不直接影響程序的執行 而是程序的註釋 信息 程序註釋可以採用任何語言書寫 COBOL編譯器可以接受 ENVIRONMENT DIVISION 编辑 用于记载程序可以被运行的计算机环境 ENVIRONMENT DIVISION 部包括 CONFIGURATION SECTION 环境节和 INPUT OUTPUT SECTION 输入输出节 DATA DIVISION 编辑 用于定义和声明程序所要使用的变量及其他数据 程序要使用的全部变量和数据必须在这里定义 DATA DIVISION 部主要包含 FILE SECTION 和 WORKING STORAGE SECTION 节 如果程序要通过参数接收数据 那么使用 LINKAGE SECTION 来声明 COBOL的数据种类 编辑 COBOL程序的数据 主要有以下3种 变量 Variables 常量 Literals 表意常量 FigurativeConstants 使用有特定意思的多个词组合成一个常量的代名词 好处是便于编码人员识别 比如 HIGH VALUES LOW VALUES等可以表达一定意思的名称作为常量代名词 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 PROGRAM ID hello world PROCEDURE DIVISION DISPLAY Hello world 现在著名的Hello World 程序例子 于1978年在 C编程语言 书中最初问世的那个时代 在主机上类似的COBOL程序可以通过JCL 英语 Job Control Language 来提交 并很有可能使用打孔卡阅读器和80列打孔卡 下面列出的具有空DATA DIVISION的代码 曾使用GNU Linux和运行MVS 英语 MVS 3 8J的System 370 英语 IBM System 370 Hercules模拟器测试过 这段写于2015年的JCL 是从Hercules教程和Jay Moseley保管的样例派生而来 5 为了保持那个时代的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的单一一行输出 参考文献 编辑 http www iso org iso home store catalogue ics catalogue detail ics htm csnumber 51416 國家教育研究院 學術名詞COBOL 2017 06 08 原始内容存档于2017 08 05 又走了一位大牛 COBOL 語言的聯合設計者離世 2017 06 08 原始内容存档于2017 06 21 大型主機疫情期用量飆高 美數個州急徵COBOL人才 iThome 2020 04 15 原始内容存档于2020 04 17 中文 繁體 Moseley Jay COBOL Compiler from MVT 17 January 2015 19 July 2015 原始内容存档于2015 07 22 取自 https zh wikipedia org w index php title COBOL amp oldid 76411301, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。