【COBOL】基本関数15選!初心者向け完全ガイド

COBOLの基本関数15選を徹底解説するイメージCOBOL
この記事は約19分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事では、COBOLプログラミング言語の基本を初心者にも分かりやすく解説します。

COBOLは長い歴史を持ち、今日でも多くの業界で重要な役割を果たしています。

このガイドを通じて、COBOLの基本的な概念、主要な関数、そして実際のプログラミングの例を紹介し、読者がCOBOLの世界に足を踏み入れる手助けをします。

●COBOLとは

COBOL(Common Business-Oriented Language)は、1959年に開発されたビジネス向けのプログラミング言語です。

長年にわたり、特に金融業界や政府機関などで広く利用されてきました。その特徴は、英語に近い構文で書かれることです。

これにより、プログラミングに慣れていない人でも比較的簡単に理解しやすい言語となっています。

○COBOLの歴史と特徴

COBOLは、ビジネス用途に特化して設計された最初の数少ないプログラミング言語の一つです。

初期のコンピュータ技術が発展する過程で、より読みやすく、理解しやすいプログラムの必要性が高まりました。

COBOLはその要求に応える形で開発され、ビジネスプロセスにおける複雑な計算やデータ処理を効率的に行うことができるようになりました。

○なぜ今もCOBOLが重要なのか

多くの現代のプログラミング言語が登場したにも関わらず、COBOLは今もなお広く使用されています。

その理由は、多くの重要なビジネスシステムや銀行のシステムがCOBOLで書かれており、これらのシステムを完全に新しい技術に移行することは複雑でコストがかかるためです。

また、COBOLは堅牢で信頼性が高く、大量のデータを扱うビジネスにとって不可欠な特性を持っています。

このため、今日でもCOBOLのスキルは市場で非常に価値が高く、多くの企業がCOBOLプログラマーを求めています。

●COBOLの基本構文

COBOLの基本構文は、その読みやすさと理解しやすさから、ビジネスプログラミングの世界で長年にわたり愛用されています。

COBOLは、一連の明確な規則と構造に従っています。これにより、プログラムは整理され、保守が容易になります。

○プログラム構造の概要

COBOLプログラムは、特定のセクションとディビジョンに分かれています。

これらはプログラムの異なる部分を区別し、それぞれが特定の機能を担います。

一般的な構造は下記のようになります。

  1. 識別ディビジョン(IDENTIFICATION DIVISION):プログラム名や作成者などの基本情報を記述します。
  2. 環境ディビジョン(ENVIRONMENT DIVISION):プログラムが動作する環境に関する情報を提供します。
  3. データディビジョン(DATA DIVISION):プログラムで使用するすべての変数の宣言が含まれます。
  4. 手続きディビジョン(PROCEDURE DIVISION):プログラムの実際の処理やロジックが記述されます。

各ディビジョンはさらに細かいセクションに分けられ、特定の目的を果たします。

この構造はCOBOLの特徴的な部分であり、プログラムの読みやすさと整理を助けます。

○基本的な文法と規則

COBOLの文法は英語に似ており、直感的に理解しやすいです。

基本的な文法のルールには下記のようなものがあります。

  • コードは、列7から72までの領域に記述します。列6は特殊な目的に使用され、列1から5は行番号またはコメント用です。
  • COBOLは大文字と小文字を区別しません。
  • 文はピリオドで終了し、セミコロンはオプションです。
  • コメント行はアスタリスク (*) またはスラッシュ (/) で始めます。

COBOLでは、命令が一連の英語の文に似ているため、コードは非常に読みやすいです。

たとえば、基本的な加算命令は下記のようになります。

       ADD A TO B GIVING C.

このコードでは、変数AとBの値を加算し、結果を変数Cに格納します。

このような直感的な構文は、COBOLが初心者にも理解しやすい理由の一つです。

COBOLのプログラミングにおいては、これらの基本的な構文と規則を理解し、適切に適用することが重要です。

●COBOLのデータ型と変数

COBOLにおけるデータ型と変数は、プログラムの基礎を形成し、効率的なデータ処理を可能にします。

データ型は変数が格納できる情報の種類を定義し、変数はデータを操作する際の中心的な要素です。

○データ型の種類と使用方法

COBOLでは主に下記のデータ型が使用されます。

  1. 数値型(Numeric):整数や小数点数を扱うためのデータ型です。数値計算や金額処理に用いられます。
  2. アルファベット型(Alphabetic):文字のみを格納できるデータ型で、主にテキストデータの処理に使用されます。
  3. アルファヌメリック型(Alphanumeric):文字と数字を含むデータを格納できるデータ型で、最も汎用的に使われます。

これらのデータ型は、プログラム内で変数を宣言する際に指定されます。

例えば、数値を格納する変数を宣言する場合、下記のように記述します。

       01  変数名  PIC 9(5).

この例では、5桁の数値を格納できる変数が定義されています。

○変数の宣言と初期化

COBOLで変数を宣言するには、データディビジョン(DATA DIVISION)内に変数の型、名称、および構造を記述します。

初期化は、変数に初期値を設定することで、プログラム実行時に予期せぬエラーを防ぎます。

変数宣言の一般的な形式は下記の通りです。

       01  変数名.
           05  サブ変数名1  PIC X(10) VALUE '初期値'.
           05  サブ変数名2  PIC 9(5) VALUE ZERO.

この例では、アルファベット型のサブ変数と数値型のサブ変数が宣言され、それぞれに初期値が設定されています。

VALUE句を使って初期値を設定することで、プログラムの予測可能性と安定性が向上します。

●COBOLの基本関数15選

COBOLでは、多くの基本的な関数が提供されており、これらは日常のプログラミング作業を容易にし、効率を高めます。

ここでは、特に重要とされる15の関数を取り上げ、その使い方とサンプルコードを通じて解説します。

○関数1:ADD (加算)

加算は、数値を合計する基本的な演算です。

COBOLではADDステートメントを使用して加算を行います。

例えば、二つの数値を合計して別の変数に格納する場合、下記のように記述します。

       ADD 数値1, 数値2 GIVING 結果.

このコードは、数値1と数値2を加算し、その結果を変数「結果」に格納します。

簡潔な構文により、読みやすく、理解しやすいコードが実現されます。

○関数2:SUBTRACT (減算)

減算は、一つの数値から別の数値を引く操作です。

COBOLではSUBTRACTステートメントを使います。

例えば、ある数値から別の数値を引いて結果を得るには、下記のように記述します。

       SUBTRACT 数値1 FROM 数値2 GIVING 結果.

このコードは、数値2から数値1を引き、その結果を変数「結果」に格納します。このような明確な表現は、COBOLがビジネスアプリケーションに適している理由の一つです。

○関数3:MULTIPLY (乗算)

乗算は、数値同士を掛け合わせる基本的な演算です。

COBOLではMULTIPLYステートメントを使用して乗算を行います。

例えば、二つの数値を掛け合わせて別の変数に結果を格納する場合、下記のように記述することができます。

       MULTIPLY 数値1 BY 数値2 GIVING 結果.

このコードは、数値1と数値2を掛け合わせ、その結果を変数「結果」に格納します。

乗算は、特に金融計算や統計処理において重要な役割を果たします。

○関数4:DIVIDE (除算)方法

除算は、一つの数値を別の数値で割る操作です。

COBOLではDIVIDEステートメントを用いて除算を実行します。

例えば、ある数値を別の数値で割って結果を得るには、下記のように記述します。

       DIVIDE 数値1 INTO 数値2 GIVING 結果.

このコードでは、数値1を数値2で割り、その商を変数「結果」に格納します。

除算は、予算の計算や単位変換など、様々なビジネスロジックの実装に不可欠です。

○関数5:COMPUTE (複合計算)

COMPUTEはCOBOLの強力な機能であり、複数の数学的演算を一つのステートメントで行うことができます。

この関数は、加算、減算、乗算、除算を組み合わせた複雑な計算を簡潔に記述するのに使用されます。

例えば、複数の演算を含む式を計算して結果を変数に格納する場合、下記のように記述します。

       COMPUTE 結果 = (数値1 + 数値2) * 数値3 / 数値4.

このコードは、数値1と数値2を加算し、その結果に数値3を掛け、最終的に数値4で割った結果を変数「結果」に格納します。

COMPUTEステートメントは、COBOLプログラミングにおいて効率的なコード記述を可能にします。

○関数6:IF (条件分岐)

条件分岐はプログラミングにおいて基本的な要素であり、COBOLではIFステートメントを使用して実行されます。

IFステートメントは、特定の条件が真(True)かどうかをテストし、それに基づいて異なるアクションを実行します。

例えば、ある条件が真の場合に特定の処理を行いたい場合、下記のように記述します。

       IF 条件 THEN
           処理1.
       ELSE
           処理2.
       END-IF.

このコードは、「条件」が真であれば「処理1」を実行し、そうでなければ「処理2」を実行します。

IFステートメントは、プログラムの流れを制御し、より複雑なロジックを実装するのに不可欠です。

○関数7:PERFORM (ループ)

COBOLにおけるPERFORMステートメントは、指定された回数または条件が満たされるまで特定のセクションのコードを繰り返し実行するために使用されます。

これは、同じ処理を複数回行う場合に非常に有効です。

例えば、特定の処理を10回繰り返すには、下記のように記述します。

       PERFORM 処理 VARYING カウンタ FROM 1 BY 1 UNTIL カウンタ > 10.

このコードは、変数「カウンタ」が1から始まり、10を超えるまで「処理」を繰り返します。

PERFORMは、ループ内での複雑な操作や条件分岐を簡潔に表現するのに役立ちます。

○関数8:READ (ファイル読み込み)

ファイル読み込みには、COBOLのREADステートメントが使用されます。

これは、ファイルからデータを読み取り、プログラム内の変数に格納するために使われます。

例えば、ファイルからレコードを読み込むには、下記のように記述します。

       READ ファイル名 INTO 変数.

このコードは、指定された「ファイル名」から一つのレコードを読み込み、それを変数「変数」に格納します。

READステートメントは、特にデータベースやファイルシステムとのやり取りにおいて重要な役割を果たします。

○関数9:WRITE (ファイル書き込み)

COBOLでのファイル書き込みにはWRITEステートメントが使用されます。

このステートメントは、プログラム内のデータを外部ファイルに出力する際に重要です。

例えば、ある変数の内容をファイルに書き込む場合、下記のように記述します。

       WRITE レコード名 FROM 変数.

このコードは、変数「変数」の内容をファイルのレコード「レコード名」に書き込みます。

WRITE操作は、報告書の生成やデータのエクスポートなど、多くの業務プロセスで用いられます。

○関数10:OPEN (ファイルオープン)

ファイル操作を行う前に、COBOLではOPENステートメントを用いてファイルを開く必要があります。

これにより、読み込みや書き込みのためのファイルへのアクセスが可能になります。

例えば、読み取り用と書き込み用に異なるファイルを開く場合、下記のように記述できます。

       OPEN INPUT 入力ファイル名
       OPEN OUTPUT 出力ファイル名.

このコードは、一つのファイルを読み取り用(INPUT)、もう一つを書き込み用(OUTPUT)として開きます。

OPENステートメントは、ファイル操作の最初のステップとして非常に重要です。

○関数11:CLOSE (ファイルクローズ)

COBOLにおけるCLOSEステートメントは、ファイル処理の終了時に使用され、開いているファイルを閉じます。

これにより、データが正しく保存され、リソースが解放されます。

例えば、ファイルを閉じる際には下記のように記述します。

       CLOSE ファイル名.

このコードはファイル「ファイル名」を閉じ、そのファイルに関連するリソースを解放します。

ファイル処理において、CLOSEステートメントの正しい使用はデータの整合性を保つために非常に重要です。

○関数12:MOVE (データ移動)

COBOLのMOVEステートメントは、一つの変数から別の変数へデータを移動するのに使われます。

これにより、データの再配置や値の更新が容易になります。

例えば、ある変数から別の変数に値を移動する場合、下記のように記述します。

       MOVE 変数1 TO 変数2.

このコードは変数「変数1」の内容を変数「変数2」に移動します。

MOVEステートメントは、変数間のデータの転送において基本的かつ強力なツールです。

○関数13:STRING (文字列操作)

COBOLのSTRING関数は、複数の文字列や変数を一つの連続した文字列に結合するのに使用されます。

この関数は特に、異なるデータ要素を一つのフィールドにまとめる際に便利です。

例として、下記のようなコードが考えられます:

       STRING 変数1 変数2 DELIMITED BY SIZE
       INTO 結合変数.

このコードは「変数1」と「変数2」の内容を結合し、「結合変数」に格納します。

DELIMITED BY SIZEは、結合する変数の長さに基づいて結合を制御するオプションです。

○関数14:UNSTRING (文字列分解)

UNSTRING関数は、STRING関数とは逆に、一つの文字列を複数の成分に分解するために使用されます。

この関数は、特定の区切り文字や位置を基準に文字列を分割し、個別の変数に格納するのに役立ちます。

例えば下記のようなコードが使われます。

       UNSTRING 統合変数 DELIMITED BY ","
       INTO 変数A 変数B.

このコードは「統合変数」に含まれる文字列をコンマで分割し、「変数A」と「変数B」に分割された内容をそれぞれ格納します。

これにより、大きな文字列から必要な情報を効率的に抽出することができます。

○関数15:INSPECT (データ検査)

COBOLにおけるINSPECT関数は、特定の文字列内の特定の文字や文字列の出現回数をカウントしたり、文字列内の文字を他の文字に置換するために使用されます。

この関数は、データの検証やデータ整形に非常に有用です。

例えば、ある文字列内の特定の文字の数をカウントする場合、下記のようなコードが使用されることがあります。

       INSPECT 対象文字列 TALLYING カウント変数 FOR ALL '特定文字'.

このコードは「対象文字列」内に存在する「特定文字」の数を「カウント変数」に格納します。

また、文字列内の特定の文字を他の文字に置換する場合は、次のように記述します。

       INSPECT 対象文字列 REPLACING ALL '置換対象文字' BY '新しい文字'.

このコードは「対象文字列」内の全ての「置換対象文字」を「新しい文字」に置換します。

INSPECT関数は、データの整合性を保つためや、特定のパターンや条件に基づいてデータを操作する際に非常に便利です。

この関数を使用することで、COBOLプログラマはより効率的にデータを管理し、操作することが可能になります。

●COBOLプログラミングの応用例

COBOL言語は、ビジネス処理や金融システムにおいて重要な役割を果たしています。

ここでは、COBOLプログラミングのいくつかの応用例を見ていきます。

○データベース操作

COBOLは、データベース操作において非常に強力です。

金融機関や企業の顧客情報、取引記録、在庫管理など、大量のデータを扱うシステムでよく利用されています。

COBOLプログラムは、SQLと組み合わせてデータベースのクエリ、更新、削除などの操作を行うことができます。

これにより、複雑なビジネスロジックとデータ処理が可能になります。

       EXEC SQL
           SELECT 名前, アドレス FROM 顧客テーブル
           WHERE 顧客ID = :顧客ID
       END-EXEC.

このコードは、指定された顧客IDに基づいて顧客の名前とアドレスをデータベースから取得します。

○ファイル処理

COBOLはファイル処理にも適しています。

特に、固定長や可変長のレコードを含む複雑なファイルフォーマットの処理に優れています。

バッチ処理、レポート生成、データ変換など、様々な業務で役立ちます。

       OPEN INPUT 顧客ファイル
       READ 顧客ファイル INTO 顧客レコード
       CLOSE 顧客ファイル

このコードは、顧客ファイルを開き、レコードを読み込んで、ファイルを閉じます。

○レポート生成

COBOLは、レポート生成にも用いられます。

例えば、営業データからの売上レポートや給与計算レポートなど、企業の重要な意思決定に役立つ情報を提供します。

COBOLのフォーマット機能を使って、整形された出力を生成することが可能です。

       WRITE 印刷行 FROM 売上レポート AFTER ADVANCING 2 LINES.

このコードは、売上レポートを整形して印刷します。

●注意点と対処法

COBOLプログラミングでは、特有の注意点があり、それらを理解し対処することが重要です。

ここでは、COBOL開発における一般的な問題とその解決策をいくつか紹介します。

○よくあるエラーとその対処法

COBOLプログラミングにおいては、構文エラーや実行時エラーがよく発生します。

これらのエラーの多くは、文法の不正確さやデータ型の不整合から生じます。

例えば、数値演算に文字列を使用したり、予期せぬデータタイプを受け取ることがあります。

これらの問題を解決するには、コードの厳密なレビューと、適切なデータ型の使用が不可欠です。

また、エラーハンドリングを適切に行い、問題が発生した際に迅速に対応できるようにすることも重要です。

       IF NOT 数値項目 IS NUMERIC
           DISPLAY "エラー: 数値項目は数値でなければなりません"
       END-IF

このコードは、数値項目が数値であるかどうかをチェックし、数値でない場合にエラーメッセージを表示します。

○プログラミング時のベストプラクティス

COBOLプログラミングを効果的に行うためには、ベストプラクティスの遵守が推奨されます。

これには、コードの可読性を高めるための整然としたインデント、意味のある変数名の使用、コメントの積極的な活用などが含まれます。

また、複雑なロジックを小さなサブルーチンに分割することで、保守性と再利用性を高めることができます。

さらに、テスト駆動開発や連続的なリファクタリングを行うことにより、コードの品質を一貫して向上させることが可能です。

       PERFORM VARYING カウンタ FROM 1 BY 1 UNTIL カウンタ > 10
           DISPLAY "ループ回数:" カウンタ
       END-PERFORM

このコードは、10回のループを実行し、各ループの回数を表示します。

明確な変数名とシンプルなロジックが可読性を高めています。

●カスタマイズ方法

COBOLのプログラムをカスタマイズする方法は多岐にわたります。

特定のニーズに合わせて既存のCOBOLプログラムを調整することで、より効率的かつ効果的なプログラムを開発することができます。

○COBOLプログラムのカスタマイズ例

例えば、企業の特定のビジネスロジックに合わせて、COBOLプログラム内の計算式やデータ処理ロジックをカスタマイズすることが考えられます。

また、既存のレガシーシステムに新しい機能を追加する場合、既存のコードに新しいサブルーチンやモジュールを組み込むことも重要です。

カスタマイズの際には、プログラムの構造を理解し、変更による影響を最小限に抑えることが不可欠です。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CUSTOMIZE-EXAMPLE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 SALES-TOTAL PIC 9(8)V99 VALUE ZEROS.
       PROCEDURE DIVISION.
       BEGIN.
           COMPUTE SALES-TOTAL = SALES-TOTAL + (SALES-AMOUNT * SALES-RATE).
           DISPLAY "更新された売上合計: " SALES-TOTAL.
       END PROGRAM CUSTOMIZE-EXAMPLE.

このコードは、売上総額を計算し、更新後の合計を表示するカスタマイズされたプログラムの一例です。

○拡張機能と組み込み方法

COBOLプログラムに拡張機能を組み込むには、外部ライブラリやAPIの利用が効果的です。

例えば、データベース操作のための外部ライブラリを使用することで、COBOLプログラムから直接データベースにアクセスし、データの読み書きを行うことができます。

また、ウェブサービスとの連携を可能にするAPIの組み込みにより、COBOLプログラムを現代的なシステムと統合することも可能です。

これらの組み込みは、プログラムの機能を大幅に拡張し、利便性を高めることに貢献します。

       CALL "EXTERNAL-LIBRARY" USING DATABASE-PARAMETERS.
       PERFORM DATABASE-OPERATIONS.
       CALL "WEB-SERVICE-API" USING API-PARAMETERS.
       PERFORM API-OPERATIONS.

このコードは、外部ライブラリとAPIを呼び出し、それらを用いてデータベース操作やAPI操作を行う流れを表しています。

まとめ

この記事では、COBOLの基本関数15選について詳細に解説しました。

ADD、SUBTRACT、MULTIPLY、DIVIDE、COMPUTE、IF、PERFORM、READ、WRITE、OPEN、CLOSE、MOVE、STRING、UNSTRING、INSPECTなど、各関数の特徴、使用方法、および具体的なサンプルコードを提供しました。

これらの関数は、COBOLプログラミングにおける基礎であり、日々の業務処理から複雑なデータハンドリングまで、様々なシナリオで活用できます。

COBOLは、多くの企業システムや金融機関で今もなお広く使用されており、この言語を理解し、効果的に使用することは、多くのITプロフェッショナルにとって価値あるスキルです。

本記事がCOBOLの基本的な理解を深め、実際のプログラミング作業に役立つことを願っています。