ホーム Topics COBOL COBOLとは
IBMのメインフレーム・アプリケーション・モダナイゼーション・ソリューションの詳細はこちら AI関連の最新情報の購読
ギア、ロボット・アーム、携帯電話の絵文字のコラージュの図

 

公開日:2024年4月19日
寄稿者:Chrystal R. China、Michael Goodwin

COBOLとは

共通事務処理用言語(COBOL)は、事務処理ニーズに合わせて特別に開発された、英語に似た高級コンパイル型プログラミング言語です。

COBOLは、最適な汎用性を考慮して設計されており、その冗長性により、プログラマーは、メインフレーム・コンピューターとオペレーティング・システム全体で機能する、読みやすく保守しやすいプログラミング言語を使用できます。実際、これは米国国家規格協会(ANSI)と国際標準化機構(ISO)が標準化した初期のプログラミング言語の1つでした。

COBOLはレガシー・システムとみなされていますが、多くの政府機関や民間組織では、財務、管理、ビジネス・アプリケーションの実行に引き続きCOBOLが使用されています。実際、COBOLの命令や手続きをプログラムに記述していく(新しい)オブジェクト指向言語の構成が、オンライン・バンキング・システム全体の40%以上の基盤として使用されています。1

また、対面でのクレジットカード取引の80%をサポートし、すべてのATM取引の95%を処理し、毎日30億ドル以上の商取引を生み出すシステムを支えています。1優れた安定性と処理能力により、企業が既存のアーキテクチャーでアプリケーションやプログラムを維持する上で重要な役割を果たし続けています。

デモを予約

IBM watsonx Code Assistant for Zの実際の動作をご覧ください。

関連コンテンツ

IBMニュースレターの購読

COBOL言語の歴史

COBOLは、1959 年に設立されたCODASYL(Conference on Data Systems Languages、データシステムズ言語協議会)と呼ばれる政府機関と企業組織のコンソーシアムによって開発されました。COBOLは、コンピューター・サイエンスの先駆者であるGrace Hopper博士が作成したプログラミング言語「FLOW-MATIC」から派生したもので、オペレーティング・システム(Linux、Windows、Unix、z/OSなど)とハードウェア環境全体で動作するプログラミング言語を推進する米国国防総省の取り組みの一環として開発されました。

COBOLプログラミング言語の最初のバージョンは1960年にリリースされました。COBOLプログラミング言語は当初、暫定的な対策として意図されていましたが、国防総省はすぐにその有用性に気づき、コンピューター製造業者にそれを提供するよう義務付けました。

COBOLは1968年に最終的にコンピューター言語として標準化され、その後COBOLプログラマーは COBOL-61、COBOL-68、COBOL-74、COBOL-85など、いくつかの改訂と近代化を実施しました。最新のCOBOL 2002では、オブジェクト指向機能やその他の高度なプログラミング・パラダイムを言語に導入することで、COBOLアプリケーションを最新のソフトウェア開発手法とより互換性のあるものにすることを目指しています。

COBOL言語のプログラム構成

COBOL言語のプログラムは、部、セクション、段落、センテンス、動詞、文字列で構成される階層構造を持ちます。COBOLシステム(4つの部で構成)の分割的な性質により、COBOL言語プログラム内での役割を明確に分離しています。

COBOLの部は次のとおりです。

見出し部

見出し部はCOBOL言語プログラムの最初かつ必須の部です。この部は、プログラムに名前を割り当て、作成者、作成日、プログラムの目的の簡単な説明などのその他の識別情報を提供するためのものです。

COBOLプログラムは、見出し部内で機能させるためPROGRAM-IDパラグラフを必要とします。例:

```

識別部。

PROGRAM-ID.YourProgramName

AUTHOR. 作成者名

DATE-WRITTEN. 年月日

COMMENT. プログラムに関する簡単な記述情報

環境部

環境部は、プログラムのランタイム環境を指定し、使用する入力リソースと出力リソースを定義します。環境部は2つのセクションに分かれています。

その名が示すとおり、CONFIGURATIONセクションでは、使用しているコンピューターやコンパイラーの機能など、システム構成に関する情報が提供されます。一方、コンパイラー・ツールの進歩により、通常は環境を推測して自動的に適応できる最新の COBOLシステムでは、CONFIGURATIONセクションはやや時代遅れになっています。

INPUT-OUTOUTセクションでは、プログラムが対話できるファイルと関連デバイスを指定します。これには、プログラム内のファイル名を外部ファイルにマッピングするFILE-CONTROL段落と、通常は入出力オペレーションの最適化またはシーケンス情報を含むI-O-CONTROL段落が含まれます。

データ部

データ部には、プログラムのすべての変数、ファイル、データ項目の定義が格納されます。環境部同様、データ部も細分化されています。

FILEセクションには、プログラムが読み書きするすべてのファイルがリストされます。ファイルの記述項目は各ファイルを定義し、ファイル内のレコードの構造を記述します。

WORKING-STORAGEセクションでは、カウンター、アキュムレーター、定数、IOファイルに関係のないその他のデータ・ストレージを含む、プログラムの実行全体を通じて値を維持する変数を定義します。

COBOLの後のイテレーションで導入されたLOCAL-STORAGEセクションは、プログラムまたはメソッドの展開時に割り当てられ、終了時に割り当て解除される変数を定義するため、ローカル・ストレージは再帰アルゴリズムやリエントラント・プログラムに特に役立ちます。

最後に、LINKAGEセクションでは、あるプログラムから別のプログラムに受け渡されるデータ項目を定義します。

手続き部

手続き部にはプログラムの実行可能コードが含まれており、可読性を高め、メンテナンスを容易にするためにコードをコード・ブロックに構造化する段落とセクションに分割されています。

追加コンポーネント

COBOLシステムの各部分にはセクションと段落を含めることができます。これらは人間の言語のセクションと段落に似ています。セクションは、1つ以上の段落を含む各部内の名前付きの論理的な下位区分であり、プログラム内で呼び出したり起動したりできるコードのモジュール単位として機能します。

段落は文の集まりであり、COBOL言語プログラム内で実行可能な最小単位であり、特定の機能を果たし、一意の名前で識別されます。段落内の各COBOLステートメントまたはセンテンスは、コードの実行方法を示す COBOL動詞(MOVE、DISPLAY、ADDなど)で始まります。

COBOL言語の最も基本的で分割不可能な単位は文字です。文字列は、セパレーターで区切られたCOBOLワード、リテラル、またはコメントエントリを形成する文字または連続した文字のシーケンスです。

COBOL構文

COBOLの英語に似た構文は自己文書化されており、ほとんど説明不要で、冗長性と読みやすさに重点が置かれています。この機能は、FORTRANなどの簡潔な言語とは一線を画しています。また、さまざまなデータ型(数値、英数字、編集されたデータなど)をサポートすることもできますが、プログラムを実行するにはいくつかの追加の構文コンポーネントに依存します。

センテンスとステートメント

センテンスは、ピリオドで完結する1つ以上のステートメントで構成されるCOBOLコードの行です。一方、ステートメントは、(特に ADD、START、DISPLAY、WRITEなどの動詞を使用して)ファイル処理およびデータ処理プロセスを調整する個別の命令のことです。

例えば、MOVEステートメントはシステムのメモリーのある部分から別の部分にデータを転送し、COMPUTEステートメントは算術演算を実行し、結果を変数として格納し、READステートメントは入力ファイルからレコードを取得します。

句はステートメントの構成要素であり、ステートメントの実行方法を変更または限定することができます。一例として、「PIC 9 (3)」のようなピクチャー句は、最大3桁の数値を格納できる数値変数を定義します。

制御構造

COBOLの反復制御構造と条件付き制御構造により、システムはデータ・フローを制御できます。

例えば、IF ... ELSE構造はCOBOLで条件付きロジックを実装し、プログラムがシステム状態の評価に応じて異なるコード・ブロックを実行できるようにします。また、PERFORMステートメントは、他のプログラミング言語のループと同様に、段落またはセクションを指定された回数、または条件が満たされるまで実行します。

サブプログラム

COBOLでは、メインプログラムまたは他のサブプログラムから展開されるサブプログラムを使用することで、モジュール・プログラミングを容易に行うことができます。内部サブプログラムは呼び出しプログラム)手続き部で記述)と同じソース・コード内で定義されますが、外部サブプログラムは個別にコンパイルされ、必要に応じてリンクされます。

COBOLプログラムの作成

COBOLを使用してプログラムを構築するプロセスは、組織の状況によって異なります。ただし、いくつかの重要な手順が必要になる傾向があります。

  • プログラムを書く。 例えば、ソフトウェア・エンジニアが基本的な「Hello, world!」というプログラムを作成したい場合、次のように記述します。

    ```

    見出し部。PROGRAM-ID. hello-world. PROCEDURE DIVISION. DISPLAY "Hello, world!"

    COBOL対応の統合開発環境(IDE)またはテキスト・エディターを使用すると、プロセスが簡単になります。

  • プログラムのコンパイル。他の高水準プログラミング言語と同様に、COBOL コードは実行前にコンパイルする必要があります。COBOLコンパイラー(GnuCOBOL、Micro Focus、IBM® COBOL Compiler Familyなど)は、プログラムをマシン・コードに変換し、コンピューターのCPUが理解して実行できるようにします。

  • プログラムの実行。プログラムがコンパイルされると、プログラマーはそれをターゲット・システム上で実行できます。バグがないと仮定すると、プログラムは手順部で定義されたデータ処理ロジックに従ってデータを処理します。実行プロセスでは通常、ファイルやデータベースからデータを読み取り、データの計算や変換を実行し、その結果をファイルやデータベースに書き込むことになります。

  • プログラムのデバッグ(必要な場合)。 プログラムにエラーやバグがある場合、プログラマーはそれらを特定して修正する必要があります(これはデバッグと呼ばれるプロセスです)。デバッグ・ツールとテクニックを利用することで、このプロセスを効率化できます。
COBOLプログラミングのメリット

より現代的な言語(Python、Java、JavaScriptなど)が普及しているにもかかわらず、かつてはCOBOL言語がビジネス・アプリケーションのコンピューター・プログラミングで最も広く使用されていました。現在でも、COBOL開発は、特に銀行、保険会社、政府機関にとって、グローバルな技術インフラストラクチャーの機能的かつ重要な部分であり続けています。

COBOL言語プログラミングが長く選ばれ続けていることからも明らかなように、(COBOLプログラマーが比較的不足しているにもかかわらず1)それを使用することを選択した組織に、次のような無数のメリットをもたらします。

安定性

COBOLは、ミッションクリティカルなアプリケーションにおいて安定した信頼性の高いパフォーマンスを発揮することで知られています。COBOLで書かれたシステムは、稼働率が高く、障害もほとんど発生しない傾向があり、これは金融機関や政府サービスの継続的な運用にとって不可欠です。

拡張性

開発者は、コードベースに大きな変更を加えることなく、COBOLアプリケーションを拡張して、増加するワークロードを処理できるため、組織は頻繁に書き換えたり他の言語に移行したりすることなく、ビジネスに合わせてCOBOLベースのシステムを拡張できます。

データ処理とファイル処理

COBOLは優れたファイル処理機能を提供します。複雑で大規模なトランザクション・データを処理し、シーケンシャル、インデックス、相対データ・ファイル処理を含む複数のファイル・アクセス・メソッドをサポートします。COBOLはプロセス自動化において堅牢性を備えているため、金融取引の処理、データベースの管理、レポートの生成などのバッチ処理ジョブに最適です。

相互運用性

今日のCOBOLシステムは、オブジェクト指向型のCOBOLと新しいプログラミング言語へのインターフェースの導入により、他の言語やテクノロジー(HTML、JSON、XML、生成 AI2など)と相互運用できます。オブジェクト指向により、COBOLアプリケーションのAmazon Web Services(AWS)、Microsoft Azure、IBM® Cloudなどの仮想および クラウド・サービス、SQL データベース、その他の最新のDevOpsインフラストラクチャーとの連携も容易になります。

関連ソリューション
IBM watsonx Code Assistant for Z

IBM® watsonx Code Assistant for Zは、メインフレーム・アプリケーションのモダナイゼーションを、従来の製品よりも低コスト、低リスクで加速できるように構築された、生成AIを活用した製品です。この製品は、アプリケーションの検出と分析、自動化されたコード・リファクタリング、COBOLからJavaへの変換を含む、エンドツーエンドのアプリケーション開発者ライフサイクルを提供します。

IBM watsonx Code Assistant for Zはこちら

IBM watsonx Code Assistant

IBM watsonx Code Assistantは、信頼、セキュリティー、コンプライアンスの原則を中核に据えながら、生成AIを活用して開発を加速します。開発者とITオペレーターは、アプリケーションのモダナイゼーションの取り組みを加速し、自動化を実現してIT環境を迅速に拡張することができます。

IBM watsonx Code Assistantはこちら

IBM COBOLコンパイラー・ファミリー

IBM COBOLコンパイラーは、IBM® z/OSIBM® AIXLinuxオペレーティング・システムをサポートします。プログラム開発の強化や既存のアプリケーションを活用するためのツールを入手できます。急速に変化する今日の市場に合わせて、アプリケーション開発プロセスを戦略的に位置付けることができます。

IBM Cobol Compiler Familyの詳細はこちら
参考情報 Code assistant for Zが生成AIをメインフレーム・アプリケーションのモダナイゼーションに導入

AIを活用してメインフレーム・アプリケーション・モダナイゼーションを加速させる方法について、IBMチームによるオンデマンド版ツアーをご覧ください。

生成AIでアプリケーションの最新化とITオートメーションを次のレベルに引き上げます

ハイブリッドクラウド管理プラットフォームに生成AI駆動型オートメーションを組み込むことで、企業が新しいテクノロジーを活用し、コスト削減と効率化を実現し、IT運用のパフォーマンスを向上させ、新しいサービスをより迅速に提供および拡張できるようにする方法について説明します。

CEOによる生成AIガイド

生成AIを導入する重要性と、現在および将来のビジネス・プラクティスへのメリットを解説します。

次のステップ

生成AIを活用して、メインフレーム・アプリケーションのモダナイゼーションを加速できます。 watsonx Code Assistant for Zのライブデモを予約いただくか、 IBMの製品スペシャリストにご相談ください。 

IBM watsonx Code Assistant for Zはこちら デモを予約
脚注

1 The World Depends on 60-Year-Old Code No One Knows Anymoreibm.com外部へのリンク)、PC Mag、2023年12月1日

2 Generative AI In Code Generationibm.com外部へのリンク)、Inc42 Media、2024年3月24日