COBOL入門
COBOL(Common Business Oriented Languageの略称)は、米国で編み出された事務処理向けの高級言語です。COBOLは1959年9月に誕生してから60年以上が経過しており、非常に長い歴史と実績を併せ持っています。
当時には、すでにCOBOL以外の高級言語にFORTRANやLIPSが使われていました。FORTRANは科学技術計算用として、LIPSは人工知能の研究や開発に利用されていましたが、どちらも事務処理系のプログラムには向いておらず、事務処理で利用できるプログラムのニーズに応えて作られたのがCOBOLでした。
COBOLは自然言語の文法に近く、理解しやすいこともあり、プログラミングの入門用に適していたことから、一気に利用者が世界中に広まりました。現在でも政府系や金融系の基幹システムとして、一般企業の勘定系システムなどで活躍しています。
COBOLの特徴
COBOLについて知るために、まずCOBOLの特徴を理解しておきましょう。日本にCOBOLが上陸したのは1963年のことで、1965年に富士通がCOBOLの最初のコンパイラを発表しました。その後、すべての汎用機にCOBOLのコンパイラが搭載されています。では、COBOLの主な特徴について見ていきましょう。
1.自然言語に近い文法によってプログラミングができるため、習得が比較的容易 2.単純なシーケンシャルファイル(順ファイル)から相対ファイルや索引ファイルまでさまざまなファイルを扱える 3.大量データの読み書き、マージや並び替えなどを高速で処理できる 4.事務処理に必要な定型帳票類の作成、印刷などが行える 5.データを10進数で表現することができ、金額などのデータの確認が容易に行える 6.メインフレーム以外にも、Windows・Mac・LinuxなどさまざまなOSで利用でき、移植性が高い 7.歴史があり、堅牢性や信頼性に優れ、大規模システムの開発によく利用される
COBOLの4つのDIVISION
COBOLは、次の4つの部(DIVISION)から構成されます。
IDENTIFICATION DIVISION(見出し部)は必ず記述しなければなりませんが、見出し部以外は省略することができます。DIVISIONの中には節(SECTION)や段落がありますが、慣れてくれば定型パターンや類似プログラムを利用して楽にコーディングができます。
IDENTIFICATION DIVISION(見出し部)
COBOLプログラムの識別を行うのが見出し部です。見出し部には節(SECTION)がありません。ここにはPROGRAM-ID(プログラム名)などを記述します。
(例)
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. ABC001. 000030 AUTHOR. Taro Engineer. 000040 DATE-WRITTEN. 2022/01/01. 000050 DATE-COMPILED. 2022/01/02.
ENVIRONMENT DIVISION(環境部)
プログラムを動かすコンピュータ名、環境変数などの情報の定義を行うCONFIGURATION SECTION(構成節)と、プログラムファイルを使用する場合に記述するINPUT-OUTPUT SECTION(入出力節)などを記述します。
(例)
000060 ENVIRONMENT DIVISION. 000070 CONFIGURATION SECTION. 000080 SOURCE-COMPUTER. SOURCECOMPUTER. 000090 OBJECT-COMPUTER. XYZ-088. 000100 INPUT-OUTPUT SECTION. 000110 FILE-CONTROL. 000120 SELECT IN-FILE ASSIGN TO ID-01 000130 ORGANIZATION IS LINE SEQUENTIAL. 000140 SELECT OUT-FILE ASSIGN TO OD-01 000150 ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION(データ部)
FILE SECTION(ファイル節)、WORKNG-STORAGE SECTION(作業場所節)、LINKAGE SECTION(連絡節)、COMMUNICATION SECTION(通信節)などで構成されています。ここでは、プログラムで使用する入出力ファイルレイアウト・データ項目・外部プログラムインターフェースなどの定義を行います。
(例)
000160 DATA DIVISION. 000170 FILE SECTION. 000180 FD IN-FILE. 000190 01 IN-RECORD. 000200 03 IN-SYAIN-CODE PIC 9(6). 000210 03 IN-SYAIN-NAME PIC X(30). 000220 03 IN-SYOHIN-SYOZOKU PIC 9(4). 000230 WORKING-STORAGE SECTION. 000240 77 WRK-COUNT PIC 9(2).
PROCEDURE DIVISION(手続き部)
プログラムの処理内容を記述します。他の部とは違い、規定の節や段落はありません。
(例)
000250 PROCEDURE DIVISION. 000260 PERFORM INIT-PROC. 000270* 000280 PERFORM MAIN-PROC. 000290* 000300 STOP RUN. 000310* 000320 INIT-PROC SECTION. 000330 MOVE ZERO TO WRK-COUNT. 000340* 000350 OPEN INPUT IN-FILE. 000360* 000370 PERFORM INFILE-READ-PROC. 000380 INIT-PROC-EXIT. 000390* 000400 EXIT.
COBOLのコーディングルール(書き方)
COBOLには厳格なコーディングのルールがあります。ルールから外れると、コンパイルエラーが多発し、そのエラー潰しに時間を要することになりますので、ルールは厳格に守るようにしてください。 COBOLでは1行は80文字以内と決められており、80文字を以下の5つの領域に分けた書き方をしていきます。
▪一連番号領域 先頭6文字は行番号を6桁の数字で記述します。自動採番される場合もあり、コーディング時に特に意識をする必要はありません。
▪標識領域 先頭から7文字目に「*」を入れることで、コメント行として利用できます。記述内容の説明などに使います。他、「/」でソースコード印刷の際に改ページ行であることを示すことができます。ここに「-」を入れると、前行から継続している意味となります。
▪A領域 先頭から8〜11文字目までの領域で、DIVISION(部)、SECTION(節)や段落の見出し、データ項目のレベル番号などを領域先頭から記述します。
▪B領域 B領域はメイン領域とも言える場所で、先頭から12〜72文字目までの領域です。それぞれの段落を構成する文、命令文などを記述します。ピリオドもこの範囲内で収まるようにします。
▪見出し領域 先頭から73〜80文字目までの領域で、翻訳対象外の領域です。ここにはプログラムの主に修正日、修正者名などをメモ的に記述を行います。この領域までコーディングを行ってしまうと、コンパイルエラーの原因となるので注意が必要です。
COBOL入門に関するおすすめの書籍やサイト
ここまでCOBOLの基本について解説しましたが、実際に学び、自らコーディングをしてみないと理解は難しいでしょう。以下に、おすすめのCOBOL入門関係の書籍やサイトをご紹介します。
おすすめの書籍
プログラミング入門 COBOL―情報処理技術者テキスト 情報処理技術者受験者向けのテキストです。情報処理技術者試験では2019年を最後にCOBOLが廃止されましたが、COBOLの入門本として長らく人気を集めた定番書です。図解を多用しており、分かりやすいと定評があります。サンプルプログラムを利用して実践的な知識が身に付きます。
・日本情報処理開発協会【監修】 ・浅井 宗海【編・著】 ・川上 るり子【著】 ・サイズB5版 ・ページ数230
COBOL入門サイト
COBOLは歴史がある反面、意外にもオンラインの学習サイトは多くはありません。その中から、おすすめのサイトを1つご紹介します。
COBOLプログラミング入門 COBOLのプログラミングを初めて学ぶ方に、分かりやすく図解を取り入れて解説しているCOBOLの入門サイトです。
コーディング結果の確認
実際にサンプルプログラムや練習問題の結果を確認したい場合があります。ご自身のパソコンにオープンソースのCOBOLを利用して開発環境を構築する方法もありますが、書いたコードをすぐに実行して結果を確認できるサイトがありますので、紹介しておきます。
ネット上にある簡単なプログラム(サンプルプログラム)をコピペして試すこともできます。このサイトは他にC・C++・Java・Ruby・Python・PHPなどの言語にも対応していますので、COBOL以外の言語を学んでいる方も活用できます。
【参考】:paiza.io
COBOLの将来性
COBOLは60年以上の歴史を持ち、官公庁や金融関係を中心にして多くの企業で利用されている言語であり、膨大なシステムが現在も稼働しています。それらのメンテナンスだけでも多くのCOBOLエンジニアが必要ですが、政府提唱のDX化の動きによって、COBOLで構築されたシステムのオープン系へのリプレイス、再構築の動きも目立ち始めました。
こうしたことから、COBOLに対する需要は今後も期待でき、COBOLエンジニアの将来性は高いと考えられるでしょう。この記事でCOBOLに興味が湧いた方は、ぜひ第2言語としてCOBOLの習得を目指してみてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから