COBOL
?程范型
| ?程式?程
,
指令式編程
,
面向?象程序??
|
---|
設計者
| Howard Bromberg
,
Norman Discount
,
Vernon Reeves
,
珍·薩姆梅特
,
William Selden
,
Gertrude Tierney
|
---|
實作者
| 美國數據系統語言協會
,
美國國家標準協會
,
國際標準化組織
|
---|
?行??
| 1959年
,65年前
(
1959
)
|
---|
?前版本
| |
---|
型態系統
| ?弱型別
,
類型系統
|
---|
文件?展名
| .cbl
,
.cob
,
.cpy
|
---|
主要實作?品
|
---|
GnuCOBOL
,
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
(
),其名稱來自於
通用商業語言
[2]
(英語:
Common Business Oriented Language
,又譯?
面向常規業務型語言
/
常規商業信息處理語言
)的
縮寫
,是最早的高階程式語言、最早實施
標準化
的
計算機語言
之一。屬於
編譯語言
。
?史
[
??
]
1959年5月,
美國國防部
委託
葛麗絲·?普
博士領導一個委員會,制定了COBOL語言的標準
[3]
,?於1961年由
美國數據系統語言協會
公布。正式發布於1960年4月,稱?Cobol-60,現在最新的版本是Cobol-2002。COBOL最早是以葛麗絲·?普開發的
FLOW-MATIC
語言?範本。?得注意的是,葛麗絲·?普?不是發明COBOL的六人組成員之一。1959 年,在紐約曼哈頓的
雪梨荷?酒店
,
珍·薩姆梅特
和其他5位程序員
閉關
兩週,幾乎是無晝夜地開發,完成了 COBOL 的大部分設計。
[4]
1963年,
美國國家標準學會
?行了?准化,但是
ANSI
?准?少被遵循;因此,COBOL程序只是部分可移植的。
重要性
[
??
]
| 此章節的
中立性
有??。
加上此模板的編輯者需在
討論頁
說明此章節中立性有爭議的原因,以便讓各編輯者討論和改善。
|
| 此章節
需要提供
更多來源
,否則內容可能
無法?證
。
(
2010年12月19日
)
|
??40多年的不?修改、?富完善和?准化,COBOL已?展?多?版本的?大?言,在??工作、???表、???制、情??索、人事管理等?据管理及商??据?理?域,都有着?泛的?用。
COBOL主要是?用于金融和??行?等非常重要的商??据?理?域,?使 COBOL 多年來被視?過時的語言,但是目前大多數的金融業核心系統仍多半使用COBOL,除了舊有系統太龐大修改不易外,COBOL 平台的穩定性也是?生命一直超過預期延續的重要原因。
在
2019新型冠狀病毒疫情
影?下,美?政府因?需處理大量
失業給付
,使得COBOL??的老?系?頻繁出?故障,需要同?上年?、甚至已
退休
的老年COBOL程序??協助??,所以COBOL的?始??在?上公??程和???源,?年?程序???COBOL??助?些程序???系統,同?也?急招募COBOL程序???助??。
[5]
特点
[
??
]
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
?提交,??有可能使用
打孔?
??器和80列打孔?。下面列出的具有空
DATA DIVISION
的代?,曾使用GNU/Linux和?行
MVS
3.8J的
System/370
Hercules模?器
???。?段?于2015年的JCL,是?Hercules?程和Jay Moseley保管的?例派生而?
[6]
。?了保持那??代的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的?一一行?出。
?考文?
[
??
]