COBOLのサブルーチンとは?初心者向けにやさしく解説!メリットと使い方も紹介
生徒
「先生、COBOLって大きなプログラムになると大変そうですよね。途中で混乱しちゃいそうです…」
先生
「とてもいい視点ですね。そこで役立つのが『サブルーチン』という仕組みなんです。」
生徒
「サブルーチン?なんだか難しそうな名前ですね。どんなものなんですか?」
先生
「サブルーチンは、よく使う処理をひとまとめにして、何度も呼び出せるようにする便利な仕組みなんです。たとえば“毎日する日課”のようなものだと思ってください。」
1. サブルーチンとは?
COBOL(コボル)におけるサブルーチンとは、ある処理をひとつの「かたまり」として分けておき、必要なときに呼び出して実行する仕組みのことです。プログラムが長くなっても、同じような処理を何度も書かずに済むため、コードが整理され、ミスも減りやすくなります。
パソコンやプログラミングに初めてふれる方にとって、いきなり難しい言葉に聞こえるかもしれませんが、サブルーチンの考え方はとても身近です。
たとえば「朝起きたら顔を洗う」「寝る前に歯をみがく」など、毎日くり返す行動は、何度も説明しなくても、同じように繰り返しますよね?サブルーチンは、まさにこの“決まった手順をまとめておく”というイメージです。
2. サブルーチンを使うメリット
COBOLでサブルーチンを使うと、次のようなメリットがあります。
- コードがスッキリする:何度も同じ処理を書く必要がなくなり、読みやすくなります。
- メンテナンスが簡単:1か所を修正するだけで、すべての呼び出しに反映されます。
- チーム開発に向いている:処理を分担しやすくなります。
- 再利用できる:別のプログラムでも使い回せる処理になります。
たとえば「おつりの計算」や「金額の合計」など、複数の場所で使う処理はサブルーチンにしておくことで、エラーが起こりにくく、修正もしやすくなります。
3. COBOLでのサブルーチンの基本的な使い方
COBOLでサブルーチンを使うには、CALL文を使います。これは、「あらかじめ作っておいた処理を呼び出す」という命令です。
実際のCOBOLコードを見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. MAINPROG.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC A(20).
PROCEDURE DIVISION.
DISPLAY "名前を入力してください:"
ACCEPT USER-NAME
CALL 'GREET-SUB' USING USER-NAME
STOP RUN.
上のプログラムでは、「GREET-SUB」というサブルーチンを呼び出しています。
では、次に呼び出される側(サブルーチン)を見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. GREET-SUB.
DATA DIVISION.
LINKAGE SECTION.
01 INPUT-NAME PIC A(20).
PROCEDURE DIVISION USING INPUT-NAME.
DISPLAY "こんにちは、" INPUT-NAME "さん!"
EXIT PROGRAM.
このように、サブルーチンではLINKAGE SECTION(リンクセクション)を使って、メインのプログラムから値(データ)を受け取ります。そしてUSINGという指定で、その値を使えるようにします。
実行結果の例:
名前を入力してください:
たなか
こんにちは、たなかさん!
このように、サブルーチンを使えば、名前を入力してあいさつするような処理を、簡単に分けて記述できます。
4. サブルーチンとモジュール化の違い
「サブルーチン」と似た言葉にモジュール化という言葉があります。
サブルーチンは1つの処理をひとまとめにする方法ですが、モジュール化はさらに広い意味をもち、サブルーチンを含む「機能ごとのかたまり」を作る考え方です。
たとえば、入金処理・出金処理・残高確認など、銀行のATMのような仕組みを作るとき、それぞれの処理をモジュールとして分けて、さらに中ではサブルーチンを使うことで、複雑なシステムでも整理して作ることができます。
5. サブルーチンを使う際の注意点
COBOLでサブルーチンを使う際には、いくつかのポイントを押さえておきましょう。
- サブルーチンで使う変数は
LINKAGE SECTIONに定義します。 - 呼び出し側と受け取る側で、データの型(PIC指定)が一致している必要があります。
- サブルーチンプログラムの最後には
EXIT PROGRAMを記述します。これはサブルーチンを終わらせて、呼び出し元に戻る命令です。
最初は少し難しく感じるかもしれませんが、実際に使ってみると「同じことを何度も書かなくていい」便利さをすぐに実感できるはずです。
6. サブルーチンを使う現場での活用例
実際のビジネスシーンでは、サブルーチンはさまざまな場面で活用されています。
- 帳票印刷の共通処理
- 顧客情報の整形処理
- エラーログの出力処理
たとえば、会社のシステムで請求書を作成する処理があったとします。この中で「日付の整形」「税率の計算」「合計金額の出力」などの処理をそれぞれサブルーチン化することで、プログラムがとても見通しよく整理されます。
まとめ
COBOLのサブルーチンは、複雑に見える業務プログラムを整理し、読みやすく維持しやすい構造へと導くための重要な仕組みです。とくにビジネス現場では入力処理、帳票作成、顧客データ整形、税計算など同じ処理を何度も繰り返す場面が多く、そのたびに同じコードを記述するのは非効率で、ミスの原因にもつながります。サブルーチンを取り入れることで、処理をひとつのまとまりとして分離し、必要なときに呼び出すようにすることができ、プログラム全体の見通しが一気に良くなります。また、ひとつの処理を別のプログラムでも再利用できるようになるため、修正時の負担が減り、保守性が飛躍的に高まる点も大きな魅力です。 サブルーチンは、CALL文を使って呼び出し、LINKAGE SECTIONとUSING句でデータを受け渡すという仕組みによって成り立っています。この構造を正しく理解することで、実務で頻繁に使われる「入力データの整形」「エラー時の共通処理」「検索条件の構築」なども無駄なく実装できるようになります。メインプログラムとサブルーチンの役割を明確に分けることは、複数人で行う開発や大規模プロジェクトにおいても欠かせない考え方であり、プログラムの品質や安全性にも大きく関わってきます。さらに、複数のサブルーチンを組み合わせれば、複雑な処理も機能ごとに整理され、全体の構造が理解しやすくなります。 このように、サブルーチンを使ったプログラムの構成は、処理の重複を防ぐだけでなく、チーム開発に向いた整理された構造をつくるうえで非常に役立ちます。現場では、帳票印刷や顧客整形処理、ログ記録など、どれも同じ処理が複数の場所で必要になりますが、サブルーチンとして共通化しておくことで、修正箇所の一元化が可能となり、より安定したプログラム運用につながります。ここでは、今回の内容を踏まえ、サブルーチンの基本構造をもう一度確認できるよう、シンプルな例をまとめて示します。
サンプルプログラム(まとめ用)
IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN-PROGRAM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-AGE PIC 9(3).
01 USER-NAME PIC A(20).
PROCEDURE DIVISION.
DISPLAY "お名前を入力してください:"
ACCEPT USER-NAME
DISPLAY "年齢を入力してください:"
ACCEPT USER-AGE
* あいさつサブルーチン呼び出し
CALL 'GREET-SUB' USING USER-NAME USER-AGE
* ログ記録処理サブルーチン呼び出し
CALL 'LOG-SUB' USING USER-NAME USER-AGE
STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. GREET-SUB.
DATA DIVISION.
LINKAGE SECTION.
01 IN-NAME PIC A(20).
01 IN-AGE PIC 9(3).
PROCEDURE DIVISION USING IN-NAME IN-AGE.
DISPLAY "こんにちは、" IN-NAME "さん。"
DISPLAY "あなたは " IN-AGE " 才ですね。"
EXIT PROGRAM.
IDENTIFICATION DIVISION.
PROGRAM-ID. LOG-SUB.
DATA DIVISION.
LINKAGE SECTION.
01 LOG-NAME PIC A(20).
01 LOG-AGE PIC 9(3).
PROCEDURE DIVISION USING LOG-NAME LOG-AGE.
DISPLAY "ログ記録: " LOG-NAME " さん(" LOG-AGE " 才)を登録しました。"
EXIT PROGRAM.
こうしたサブルーチンの組み合わせによって、メインプログラムの可読性が向上し、処理の役割分担がはっきりします。さらに、業務が複雑になるほど、サブルーチン化した部分が増えることで全体の保守がしやすくなるため、長期間運用されるCOBOLシステムでは特に重要な設計方法です。今後の学習では、より複雑なデータの受け渡しや、ファイル処理と組み合わせた高度なサブルーチン構造にも挑戦していくことで、さらに理解が深まっていくでしょう。
生徒
「先生、サブルーチンって“分けて使う”という考え方がすごく便利だと感じました!同じ処理を何度も書かなくていいのが嬉しいです。」
先生
「まさにそこが大きなポイントです。処理を整理しておくことで、ミスも減って、読みやすく維持しやすいプログラムになりますよ。」
生徒
「LINKAGE SECTIONやUSING句も最初は難しいと思ったけど、仕組みがわかると“なるほど”って感じでした!」
先生
「良い理解ですね。データの受け渡しができるようになると、サブルーチンはもっと役に立ちます。業務処理もどんどん整理できますよ。」
生徒
「帳票印刷とか顧客データ整形のような処理も、サブルーチンでまとめられるんですね!」
先生
「ええ、その通りです。業務用のCOBOLではサブルーチンは欠かせない存在なので、今日の理解はとても大切ですよ。」