COBOL程序結(jié)構(gòu)由部(division)組成,如下圖所示:
這些部簡(jiǎn)介如下:
Sections(節(jié))是程序邏輯的邏輯細(xì)分。節(jié)是段落的集合。
Paragraphs(段)是一個(gè)節(jié)或部的細(xì)分。它可以是用戶(hù)定義或預(yù)定義的名稱(chēng),后面跟一個(gè)句點(diǎn),由零個(gè)或多個(gè)句子/條目組成。
Sentences(句子)是一個(gè)或多個(gè)聲明的組合。句子只出現(xiàn)在過(guò)程部(Procedure division)。一個(gè)句子必須以句點(diǎn)結(jié)束。
Statements(語(yǔ)句)是有意義的COBOL語(yǔ)句,執(zhí)行一些進(jìn)程。
Characters(字符)是在層級(jí)中最低的,不可分割。
你可以通過(guò)以下示例將上述術(shù)語(yǔ)與COBOL程序聯(lián)系起來(lái):
PROCEDURE DIVISION. A0000-FIRST-PARA SECTION. FIRST-PARAGRAPH. ACCEPT WS-ID - Statement-1 -----| MOVE '10' TO WS-ID - Statement-2 |-- Sentence - 1 DISPLAY WS-ID - Statement-3 -----| .
COBOL程序包括四個(gè)部。
這是每一個(gè)COBOL程序的第一個(gè)也是唯一強(qiáng)制要求的部。程序員和編譯器使用這個(gè)部來(lái)識(shí)別該程序。在這個(gè)部中,PROGRAM-ID是唯一強(qiáng)制要求的段落。PROGRAM-ID指定的程序名可包含1至30個(gè)字符。
試試下面的例子。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY 'Welcome to Tutorialspoint'. STOP RUN.
下面是JCL執(zhí)行上面的COBOL程序。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)你編譯和執(zhí)行上面的程序時(shí),會(huì)產(chǎn)生以下結(jié)果:
Welcome to Tutorialspoint
環(huán)境部用于指定程序的輸入和輸出文件。它由兩個(gè)節(jié)組成:
配置節(jié)(Configuration section)可提供有關(guān)編寫(xiě)和執(zhí)行程序的系統(tǒng)信息。它由兩個(gè)段組成:
源計(jì)算機(jī)(source computer):用于編譯程序的系統(tǒng)。
對(duì)象計(jì)算機(jī)(object computer):用于執(zhí)行程序的系統(tǒng)。
輸入輸出節(jié)(Input-Output section)提供有關(guān)程序中要使用的文件的信息。它由兩個(gè)段組成:
文件控制(file control):提供在程序中使用的外部數(shù)據(jù)集的信息。
IO控制(I-O control):提供在程序中使用的文件的信息。
ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. XXX-ZOS. OBJECT-COMPUTER. XXX-ZOS. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILEN ASSIGN TO DDNAME ORGANIZATION IS SEQUENTIAL.
數(shù)據(jù)部用于定義程序中使用的變量。它由四個(gè)節(jié)組成:
文件節(jié)(File section)用于定義文件的記錄結(jié)構(gòu)。
工作存儲(chǔ)節(jié)(Working-Storage section)用于聲明程序中使用的臨時(shí)變量和文件結(jié)構(gòu)。
本地存儲(chǔ)節(jié)(Local-Storage section)是類(lèi)似于工作存儲(chǔ)節(jié)。唯一的區(qū)別是每次程序開(kāi)始執(zhí)行時(shí)都會(huì)分配和初始化變量。
連接節(jié)(Linkage section)用于描述從外部程序接收到的數(shù)據(jù)名稱(chēng)。
COBOL程序
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILEN ASSIGN TO INPUT. ORGANIZATION IS SEQUENTIAL. ACCESS IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILEN 01 NAME PIC A(25). WORKING-STORAGE SECTION. 01 WS-STUDENT PIC A(30). 01 WS-ID PIC 9(5). LOCAL-STORAGE SECTION. 01 LS-CLASS PIC 9(3). LINKAGE SECTION. 01 LS-ID PIC 9(5). PROCEDURE DIVISION. DISPLAY 'Executing COBOL program using JCL'. STOP RUN.
JCL執(zhí)行上述COBOL程序如下:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO //INPUT DD DSN=ABC.EFG.XYZ,DISP=SHR
當(dāng)你編譯和執(zhí)行上述程序時(shí),會(huì)產(chǎn)生以下結(jié)果:
Executing COBOL program using JCL
過(guò)程部用于包含該程序的邏輯。它由使用數(shù)據(jù)部定義的變量的可執(zhí)行語(yǔ)句組成。在這個(gè)部中,段和節(jié)的名稱(chēng)是用戶(hù)定義的。
在過(guò)程部中必須至少有一個(gè)語(yǔ)句。結(jié)束這個(gè)部的執(zhí)行的最后一條語(yǔ)句是在調(diào)用程序中使用的STOP RUN或者是在被調(diào)用程序中使用的EXIT PROGRAM。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NAME PIC A(30). 01 WS-ID PIC 9(5) VALUE '12345'. PROCEDURE DIVISION. A000-FIRST-PARA. DISPLAY 'Hello World'. MOVE 'TutorialsPoint' TO WS-NAME. DISPLAY "My name is : "WS-NAME. DISPLAY "My ID is : "WS-ID. STOP RUN.
JCL執(zhí)行上述COBOL程序:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)你編譯和執(zhí)行上面的程序時(shí),會(huì)產(chǎn)生以下結(jié)果:
Hello World My name is : TutorialsPoint My ID is : 12345
更多建議: