COBOL 程序結(jié)構(gòu)

2018-09-21 17:04 更新

COBOL程序結(jié)構(gòu)由部(division)組成,如下圖所示:

程序結(jié)構(gòu)

這些部簡(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  -----|
.

部(Division)

COBOL程序包括四個(gè)部。

標(biāo)識(shí)部(Identification Division)

這是每一個(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)境部(Environment Division)

環(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ù)部(Data Division)

數(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ò)程部(Procedure Division)

過(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
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)