Cobol-program-structure
COBOL-プログラム構造
COBOLプログラム構造は、次の画像に示すように部門で構成されています-
これらの部門の簡単な紹介を以下に示します-
- *セクション*は、プログラムロジックの論理的な下位区分です。 セクションは段落の集まりです。
- *段落*は、セクションまたは部門の下位区分です。 これは、ユーザー定義または事前定義の名前の後にピリオドが続き、ゼロ個以上の文/エントリで構成されます。
- *文*は、1つ以上のステートメントの組み合わせです。 文は、手続き部にのみ表示されます。 文はピリオドで終わる必要があります。
- Statements は、何らかの処理を実行する意味のあるCOBOLステートメントです。
- *文字*は階層の最下位であり、分割できません。
次の例では、上記の用語を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 finddevguides'.
STOP RUN.
上記のCOBOLプログラムを実行する JCL を以下に示します。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
Welcome to finddevguides
環境課
環境区分は、プログラムへの入力ファイルと出力ファイルを指定するために使用されます。 それは2つのセクションで構成されています-
- *構成セクション*は、プログラムが作成および実行されるシステムに関する情報を提供します。 それは2つの段落で構成されています-
- ソースコンピューター-プログラムのコンパイルに使用されるシステム。
- オブジェクトコンピューター-プログラムの実行に使用されるシステム。
- *入出力セクション*は、プログラムで使用されるファイルに関する情報を提供します。 それは2つの段落で構成されています-
- ファイル制御-プログラムで使用される外部データセットの情報を提供します。
- 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.
データ部
データ分割は、プログラムで使用される変数を定義するために使用されます。 それは4つのセクションで構成されています-
- *ファイルセクション*は、ファイルのレコード構造を定義するために使用されます。
- * Working-Storageセクション*は、プログラムで使用される一時変数とファイル構造を宣言するために使用されます。
- *ローカルストレージセクション*は、ワーキングストレージセクションに似ています。 唯一の違いは、プログラムが実行を開始するたびに変数が割り当てられて初期化されることです。
- *リンケージセクション*は、外部プログラムから受信したデータ名を記述するために使用されます。
- 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
手続き部
手続き部は、プログラムのロジックを含めるために使用されます。 データ部で定義された変数を使用した実行可能ステートメントで構成されます。 この部門では、段落名とセクション名はユーザー定義です。
手続き部には少なくとも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 'finddevguides' 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 : finddevguides
My ID is : 12345