COBOL-プログラム構造

COBOLプログラム構造は、次の画像に示すように分割で構成されています。

これらの部門の簡単な紹介を以下に示します-

  • Sectionsプログラムロジックの論理的な細分化です。セクションは段落のコレクションです。

  • Paragraphsセクションまたは部門の下位区分です。これは、ユーザー定義または事前定義された名前の後にピリオドが続き、0個以上の文/エントリで構成されます。

  • Sentences1つ以上のステートメントの組み合わせです。文は手順部にのみ表示されます。文はピリオドで終わる必要があります。

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

部門

COBOLプログラムは、4つの部門で構成されています。

識別課

これは、すべてのCOBOLプログラムの最初で唯一の必須の除算です。プログラマーとコンパイラーは、この区分を使用してプログラムを識別します。この部門では、PROGRAM-IDが唯一の必須段落です。PROGRAM-IDは、1〜30文字で構成できるプログラム名を指定します。

次の例を使用してみてください Live Demo オンラインオプション。

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'Welcome to Tutorialspoint'.
STOP RUN.

以下は JCL 上記のCOBOLプログラムを実行します。

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

上記のプログラムをコンパイルして実行すると、次の結果が得られます-

Welcome to Tutorialspoint

環境課

環境分割は、プログラムへの入力ファイルと出力ファイルを指定するために使用されます。それは2つのセクションで構成されています-

  • Configuration sectionプログラムが作成および実行されるシステムに関する情報を提供します。それは2つの段落で構成されています-

    • ソースコンピュータ-プログラムのコンパイルに使用されるシステム。

    • オブジェクトコンピュータ-プログラムの実行に使用されるシステム。

  • Input-Output sectionプログラムで使用されるファイルに関する情報を提供します。それは2つの段落で構成されています-

    • ファイル制御-プログラムで使用される外部データセットの情報を提供します。

    • IO制御-プログラムで使用されるファイルの情報を提供します。

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.

データ部門

データ除算は、プログラムで使用される変数を定義するために使用されます。それは4つのセクションで構成されています-

  • File section ファイルのレコード構造を定義するために使用されます。

  • Working-Storage section プログラムで使用される一時変数とファイル構造を宣言するために使用されます。

  • Local-Storage section作業ストレージセクションに似ています。唯一の違いは、プログラムが実行を開始するたびに変数が割り当てられ、初期化されることです。

  • Linkage section 外部プログラムから受信したデータ名を説明するために使用されます。

COBOL Program

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 上記のCOBOLプログラムを実行するには、次のようにします。

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

手続き課

プロシージャ分割は、プログラムのロジックを含めるために使用されます。これは、データ分割で定義された変数を使用する実行可能ステートメントで構成されます。この部門では、段落名とセクション名はユーザー定義です。

手続き部には少なくとも1つのステートメントが必要です。この部門での実行を終了する最後のステートメントは、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.

JCL 上記のCOBOLプログラムを実行するには-

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

上記のプログラムをコンパイルして実行すると、次の結果が得られます-

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