한국   대만   중국   일본 
COBOL - ?基百科,自由的百科全? 跳?到?容

COBOL

本页使用了标题或全文手工转换
?基百科,自由的百科全?
COBOL
?程范型 ?程式?程 , 指令式編程 , 面向?象程序??
設計者 Howard Bromberg , Norman Discount , Vernon Reeves , 珍·薩姆梅特 英? Jean E. Sammet , William Selden , Gertrude Tierney
實作者 美國數據系統語言協會 英? CODASYL 美國國家標準協會 國際標準化組織
?行?? 1959年 ,​65年前 ​( 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

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

?史 [ ?? ]

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

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

重要性 [ ?? ]

??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 英? Job Control Language ?提交,??有可能使用 打孔? ??器和80列打孔?。下面列出的具有空 DATA DIVISION 的代?,曾使用GNU/Linux和?行 MVS 英? MVS 3.8J的 System/370 英? IBM 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的?一一行?出。

?考文? [ ?? ]

  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. ^ Early Meetings of the Conference on Data Systems Languages. IEEE Annals of the History of Computing. 1985, 7 (4): 316?325. S2CID 35625728 . doi:10.1109/MAHC.1985.10047 .  
  4. ^ 又走了一位大牛!COBOL 語言的聯合設計者離世 . [ 2017-06-08 ] . ( 原始?容 存?于2017-06-21).  
  5. ^ 大型主機疫情期用量?高,美數個州急徵COBOL人才 . iThome. [ 2020-04-15 ] . (原始?容 存? 于2020-04-17) (中文(繁體)) .  
  6. ^ Moseley, Jay. COBOL Compiler from MVT . 17 January 2015 [ 19 July 2015] . ( 原始?容 存?于2015-07-22).