COBOLは、他のプログラミング言語とは異なる特有の構文とスタイルを持ちますが、その明確で直感的な構造により、多くのエンタープライズアプリケーションで広く利用されています。この章では、COBOLの変数とデータタイプ、基本プログラム構造、そして制御構造について詳しく解説します。これにより、読者はCOBOLの基礎的な構文とプログラムの流れを理解し、シンプルなプログラムを作成できるようになります。
2.1 変数とデータタイプ: COBOLでのデータ管理方法
COBOLプログラムでは、変数やデータの管理が非常に重要です。COBOLの変数定義は他の言語と少し異なり、特定の構造に基づいて行われます。COBOLでは、データを「データ・ディビジョン」(DATA DIVISION)で定義し、「ワーキング・ストレージ・セクション」(WORKING-STORAGE SECTION)で変数を宣言します。変数のデータタイプは、COBOLのデータ項目定義に基づいて設定します。
2.1.1 データ項目のレベル番号
COBOLでは、変数の階層構造をレベル番号で表現します。レベル番号とは、変数の階層関係を示す番号です。主に次のような番号が使用されます:
- 01:トップレベルのデータ項目。これらは他の項目を含むことができます。
- 77:独立したデータ項目。階層構造を持たない単一の変数を定義するために使用されます。
- 02~49:01レベルの中に含まれる階層データを定義する際に使用します。
例として、銀行口座情報を格納する構造を定義してみましょう。
01 CUSTOMER-INFO.
05 CUSTOMER-ID PIC 9(5).
05 CUSTOMER-NAME PIC A(30).
05 CUSTOMER-BALANCE PIC 9(9)V99.
77 ACCOUNT-STATUS PIC X(1) VALUE 'A'.
ここでは、CUSTOMER-INFO
が01レベルのデータ項目であり、内部にCUSTOMER-ID
、CUSTOMER-NAME
、CUSTOMER-BALANCE
が含まれています。また、ACCOUNT-STATUS
は77レベルであり、単一のデータ項目です。
2.1.2 データタイプとPICTURE句
COBOLのデータ項目には、データタイプを定義するための「PICTURE句」(略してPIC句)を使用します。PICTURE句は、データのフォーマットや桁数を指定するもので、数値型や文字型のデータを表現できます。
- 数値型(PIC 9):数値を表すときは「9」を使用します。例えば、
PIC 9(5)
は5桁の数値データを示します。 - 小数点型(V):小数点以下の桁数を表すために「V」を使います。例えば、
PIC 9(7)V99
は整数部分7桁、小数部分2桁の数値を表します。 - 文字型(PIC X):文字データを表す場合は「X」を使います。例えば、
PIC X(10)
は10文字の文字列を表します。 - 英字型(PIC A):アルファベットのみを表す場合に「A」を使います。例えば、
PIC A(20)
は20文字のアルファベット文字列を表します。
例:
77 STUDENT-ID PIC 9(8) VALUE 12345678.
77 STUDENT-NAME PIC A(30) VALUE 'JOHN DOE'.
77 STUDENT-GPA PIC 9V99 VALUE 3.75.
2.1.3 初期値の設定(VALUE句)
COBOLの変数には、初期値を設定するために「VALUE句」を使用できます。VALUE句を用いると、変数が初期化される際の値を指定できます。
77 DEFAULT-CITY PIC X(20) VALUE 'TOKYO'.
77 INITIAL-AGE PIC 9(2) VALUE 25.
2.2 基本のプログラム構造: COBOLプログラムの各セクションの役割
COBOLプログラムは、複数のセクションに分かれています。主に次の4つのディビジョン(DIVISION)から成り立ちます。
- IDENTIFICATION DIVISION:プログラムの名前やバージョンなどを記述します。
- ENVIRONMENT DIVISION:プログラムが実行される環境について設定を記述します。
- DATA DIVISION:プログラムで使用する変数を宣言します。
- PROCEDURE DIVISION:実際の処理内容(手続き)を記述します。
2.2.1 IDENTIFICATION DIVISION
IDENTIFICATION DIVISIONは、COBOLプログラムの名前や作成者などの基本情報を記述するためのセクションです。このセクションは必須であり、プログラム名を指定します。
IDENTIFICATION DIVISION.
PROGRAM-ID. BANK-TRANSACTION.
AUTHOR. JANE DOE.
2.2.2 ENVIRONMENT DIVISION
ENVIRONMENT DIVISIONは、プログラムがどのような環境で動作するかを設定するセクションです。ファイルの入力や出力の設定を行う際に使用します。
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE ASSIGN TO 'customer.txt'.
2.2.3 DATA DIVISION
DATA DIVISIONは、変数やファイルなどのデータを宣言するセクションです。このセクションの中で、WORKING-STORAGE SECTIONを使用して変数を定義します。
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUSTOMER-ID PIC 9(5).
01 CUSTOMER-NAME PIC A(30).
2.2.4 PROCEDURE DIVISION
PROCEDURE DIVISIONは、プログラムの実行手順を記述するセクションです。ここで、COBOLプログラムの主な処理内容を書きます。
PROCEDURE DIVISION.
DISPLAY 'ENTER CUSTOMER ID:'.
ACCEPT CUSTOMER-ID.
DISPLAY 'CUSTOMER ID IS:' CUSTOMER-ID.
STOP RUN.
2.3 制御構造: IF文、PERFORM(ループ)、GO TOなどの使い方
COBOLには、プログラムの実行の流れを制御するためのさまざまな構文が用意されています。ここでは、条件分岐、ループ、ジャンプ構造について詳しく説明します。
2.3.1 IF文
COBOLでは、IF文を使用して条件分岐を行います。IF文を使うと、条件に基づいて異なる処理を行うことができます。
IF CUSTOMER-BALANCE > 0
DISPLAY 'POSITIVE BALANCE'.
ELSE
DISPLAY 'NEGATIVE OR ZERO BALANCE'.
END-IF.
2.3.2 PERFORM(ループ構造)
PERFORM文を使用して、一定の回数や条件に基づいてループを行うことができます。
- 固定回数ループ:
PERFORM TIMES 5
DISPLAY 'PROCESSING...'
END-PERFORM.
- 条件付きループ:
PERFORM UNTIL CUSTOMER-BALANCE > 1000
DISPLAY 'ADD BALANCE'
ADD 100 TO CUSTOMER-BALANCE
END-PERFORM.
2.3.3 GO TO(ジャンプ構造)
COBOLでは、特定の処理に直接ジャンプするためにGO TO文を使用しますが、一般的には使用を避けることが推奨されています。プログラムの可読性が低下する可能性があるためです。
IF CUSTOMER-BALANCE < 0
GO TO ERROR-HANDLING.
初心者におすすめ!プログラミングスクールのススメ
未経験でも気軽に!サブスク型プログラミングスクール【Freeks】
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学の挫折率、驚きの87.5%!
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
有料と無料、スクールの違いは?
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
- 受講条件が異なる
- 学べるスキルやカリキュラム内容が異なる
- 就職や転職のサポート内容が異なる
どちらが自分に合っているか、よく考えて選ぶのが大事です。
サブスク型プログラミングスクール『FREEKS(フリークス)』に注目!
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
- 未経験者向けのわかりやすいカリキュラム
- 経験豊富なエンジニアのサポート
- オンラインで自分のペースで学習可能
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
終了後は副業もサポート!
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓