共通事務処理用言語(COBOL)は英語に似た高水準のコンパイル型プログラミング言語で、ビジネス・データ処理のニーズに合わせて開発されました。
COBOLは、最適な汎用性を考慮して設計されており、その冗長性により、プログラマーは、メインフレーム・コンピューターとオペレーティング・システム全体で機能する、読みやすく保守しやすいプログラミング言語を使用できます。実際、これは米国国家規格協会(ANSI)と国際標準化機構(ISO)が標準化した初期のプログラミング言語の1つでした。
COBOLの最大の強みの1つは、従来の多くのプログラミング言語には必ずしも備わっていない、大規模精度固定小数点計算を強力にサポートしている点です。この機能により、COBOLは他の言語と差別化され、多くの大手金融機関で採用される要因となりました。
COBOLはレガシー・システムとみなされていますが、多くの政府機関や民間組織では、財務、管理、ビジネス・アプリケーションの実行に引き続きCOBOLが使用されています。実際、COBOLの命令や手続きをプログラムに記述していく(新しい)オブジェクト指向言語の構成が、オンライン・バンキング・システム全体の40%以上の基盤として使用されています。1
また、対面でのクレジットカード取引の80%をサポートし、すべてのATM取引の95%を処理し、毎日30億ドル以上の商取引を生み出すシステムを支えています。1優れた安定性と処理能力により、企業が既存のアーキテクチャーでアプリケーションやプログラムを維持する上で重要な役割を果たし続けています。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
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 14では、ポータブル算術結果をIEEE 754データ型に置き換えるなどの変更が導入され、最新の標準であるCOBOL 2023では、現代のシステムとの相互運用性を向上させることに重点を置いた追加機能が提供されました。
COBOL言語のプログラムは、部、セクション、段落、センテンス、動詞、文字列で構成される階層構造を持ちます。COBOLシステム(4つの部で構成)の分割的な性質により、COBOL言語プログラム内での役割を明確に分離しています。
COBOLの部は次のとおりです。
見出し部はCOBOL言語プログラムの最初かつ必須の部です。この部は、プログラムに名前を割り当て、作成者、作成日、プログラムの目的の簡単な説明などのその他の識別情報を提供するためのものです。
COBOLプログラムは、見出し部内で機能させるためPROGRAM-IDパラグラフを必要とします。例:
環境部は、プログラムのランタイム環境を指定し、使用する入力リソースと出力リソースを定義します。環境部は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の英語に似た構文は自己文書化されており、ほとんど説明不要で、冗長性と読みやすさに重点が置かれています。この機能は、FORTRANなどの簡潔な言語とは一線を画しています。また、さまざまなデータ型(数値、英数字、編集されたデータなど)をサポートすることもできますが、プログラムを実行するにはいくつかの追加の構文コンポーネントに依存します。
センテンスは、ピリオドで完結する1つ以上のステートメントで構成されるCOBOLコードの行です。一方、ステートメントは、(特に ADD、START、DISPLAY、WRITEなどの動詞を使用して)ファイル処理およびデータ処理プロセスを調整する個別の命令のことです。
例えば、MOVEステートメントはシステムのメモリーのある部分から別の部分にデータを転送し、COMPUTEステートメントは算術演算を実行し、結果を変数として格納し、READステートメントは入力ファイルからレコードを取得します。
句はステートメントの構成要素であり、ステートメントの実行方法を変更または限定することができます。一例として、「PIC 9 (3)」のようなピクチャー句は、最大3桁の数値を格納できる数値変数を定義します。
COBOLの反復制御構造と条件付き制御構造により、システムはデータ・フローを制御できます。
例えば、IF ... ELSE構造はCOBOLで条件付きロジックを実装し、プログラムがシステム状態の評価に応じて異なるコード・ブロックを実行できるようにします。また、PERFORMステートメントは、他のプログラミング言語のループと同様に、段落またはセクションを指定された回数、または条件が満たされるまで実行します。
COBOLでは、メインプログラムまたは他のサブプログラムから展開されるサブプログラムを使用することで、モジュール・プログラミングを容易に行うことができます。内部サブプログラムは呼び出しプログラム)手続き部で記述)と同じソース・コード内で定義されますが、外部サブプログラムは個別にコンパイルされ、必要に応じてリンクされます。
COBOLを使ってプログラムを構築するプロセスは、組織の状況により異なります。ただし、いくつかの重要な手順を必要とする傾向が見られます。
プログラムの記述。 ソフトウェア・エンジニアが基本的な「Hello, world!」という文章を書きたい場合、たとえば、次のように記述します。
COBOL対応の統合開発環境(IDE)またはテキスト・エディターを使用すると、プロセスが簡単になります。
プログラムのコンパイル。他の高水準プログラミング言語と同様に、COBOLコードは実行前にコンパイルする必要があります。COBOLコンパイラー(GnuCOBOL、Micro Focus、 IBM® COBOL Compiler Family など)は、プログラムをマシン・コードに変換し、コンピューターのCPUが理解して実行できるようにします。
プログラムの実行。プログラムがコンパイルされると、プログラマーはそれをターゲット・システム上で実行できます。バグがないと仮定すると、プログラムは手続き部で定義されたデータ処理ロジックに従ってデータを処理します。実行プロセスでは通常、ファイルやデータベースからデータを読み取り、データの計算や変換を実行し、その結果をファイルやデータベースに書き込むことになります。
プログラムのデバッグ(必要な場合)。プログラムにエラーやバグがある場合、プログラマーはそれらを特定して修正する必要があります(これは デバッグ と呼ばれるプロセスです)。デバッグ・ツールとテクニックを利用することで、このプロセスを効率化できます。
COBOLは、現在ではより現代的な言語(Python、Java、JavaScriptなど)ほど人気がありませんが、かつては業務アプリケーションのコンピューター・プログラミングで最も広く使われていた言語でした。ただ、COBOLの開発は、特に銀行、保険会社、官公庁・自治体にとって、グローバルな技術インフラの機能的かつ重要な部分であり続けています。
COBOL言語プログラミングが長く選ばれ続けていることからも明らかなように、(COBOLプログラマーが比較的不足しているにもかかわらず1)それを使用することを選択した組織に、次のような無数のメリットをもたらします。
COBOLは、ミッションクリティカルなアプリケーションにおいて安定した信頼性の高いパフォーマンスを発揮することで知られています。COBOLで書かれたシステムは、稼働率が高く、障害もほとんど発生しない傾向があり、これは金融機関や政府サービスの継続的な運用にとって不可欠です。
開発者はコードベースに大きな変更を加えることなく、COBOLアプリケーションを拡張して増加するワークロードを処理できます。そのため、組織は頻繁に書き換えたり他の言語に移行したりしなくても、ビジネスに合わせてCOBOLベースのシステムを拡張できるのです。
COBOLは優れたファイル処理機能を提供します。複雑で大規模なトランザクション・データを処理し、シーケンシャル、インデックス、相対データ・ファイル処理を含む複数のファイル・アクセス・メソッドをサポートします。COBOLはプロセス自動化において堅牢性を備えているため、金融取引の処理、データベースの管理、レポートの生成などのバッチ処理ジョブに最適です。
IBM Powerは、IBM Powerプロセッサーをベースとしたサーバー製品ファミリーです。オペレーティング・システムとしてIBM AIX、IBM i、Linuxが稼働します。
IBM Cloudは、規制の多い業種・業務向けに設計されたエンタープライズ・クラウド・プラットフォームであり、オープンでAI対応のセキュアなハイブリッド・ソリューションです。
IBMのクラウド・コンサルティング・サービスで新しい機能を解き放ち、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略と専門家のパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。