COBOL - 程式結構



COBOL 程式結構由以下影像所示的各個部分組成:

Program Structure

下面簡要介紹這些部分:

  • 節(Sections) 是程式邏輯的邏輯細分。一個節是由多個段落組成的。

  • 段落(Paragraphs) 是節或部分的細分。它是由使用者定義或預定義的名稱後跟句點組成,包含零個或多個語句/條目。

  • 語句(Sentences) 是一個或多個語句的組合。語句僅出現在過程部分。語句必須以句點結尾。

  • 語句(Statements) 是執行某些處理的具有意義的 COBOL 語句。

  • 字元(Characters) 是層次結構中最低的,不可分割。

您可以將上述術語與以下示例中的 COBOL 程式相關聯:

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  -----|
.

部分(Divisions)

COBOL 程式由四個部分組成。

標識部分(Identification Division)

它是每個 COBOL 程式的第一個也是唯一必須的部分。程式設計師和編譯器使用此部分來識別程式。在此部分中,PROGRAM-ID 是唯一必須的段落。PROGRAM-ID 指定程式名稱,該名稱可以包含 1 到 30 個字元。

嘗試使用線上的即時演示選項嘗試以下示例。

即時演示
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Welcome to Tutorialspoint'.
STOP RUN.

以下是執行上述 COBOL 程式的JCL

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

編譯並執行上述程式後,將產生以下結果:

Welcome to Tutorialspoint

環境部分(Environment Division)

環境部分用於向程式指定輸入和輸出檔案。它包含兩個節:

  • 配置節(Configuration section) 提供有關編寫和執行程式的系統的資訊。它包含兩個段落:

    • 源計算機 - 用於編譯程式的系統。

    • 目標計算機 - 用於執行程式的系統。

  • 輸入輸出節(Input-Output section) 提供有關程式中要使用的檔案的資訊。它包含兩個段落:

    • 檔案控制 - 提供程式中使用的外部資料集的資訊。

    • I/O 控制 - 提供程式中使用的檔案的資訊。

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.

資料部分(Data Division)

資料部分用於定義程式中使用的變數。它包含四個節:

  • 檔案節(File section) 用於定義檔案的記錄結構。

  • 工作儲存節(Working-Storage section) 用於宣告程式中使用的臨時變數和檔案結構。

  • 區域性儲存節(Local-Storage section) 與工作儲存節類似。唯一的區別是每次程式開始執行時都會分配和初始化變數。

  • 連線節(Linkage section) 用於描述從外部程式接收的資料名稱。

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.

執行上述 COBOL 程式的JCL如下:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//INPUT DD DSN = ABC.EFG.XYZ,DISP = SHR

編譯並執行上述程式後,將產生以下結果:

Executing COBOL program using JCL

過程部分(Procedure Division)

過程部分用於包含程式的邏輯。它使用資料部分中定義的變數包含可執行語句。在此部分中,段落和節名稱是使用者定義的。

過程部分中必須至少有一個語句。此部分中結束執行的最後一個語句是STOP RUN(用於呼叫程式)或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.

執行上述 COBOL 程式的JCL

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

編譯並執行上述程式後,將產生以下結果:

Hello World
My name is : TutorialsPoint
My ID is : 12345
廣告