COBOLで保守性の高いコーディングを書くコツ!初心者でもわかる長く使えるプログラムの作り方
生徒
「先生、COBOLのプログラムって何十年も動いてるって聞きました。本当にそんなに長く使えるんですか?」
先生
「そうなんですよ。銀行や保険のシステムでは、COBOLのプログラムが何十年も動き続けています。」
生徒
「そんなに長く動くなら、後から修正するのも大変そうですね……」
先生
「その通り。だからこそ、“保守性の高いコーディング”が大切なんです。今日は、その書き方を一緒に学んでいきましょう。」
1. 保守性とは?COBOLにおける「長持ちするコード」の考え方
「保守性(ほしゅせい)」とは、プログラムをあとから修正したり改善したりしやすいことを意味します。COBOLでは、一度作ったプログラムが10年、20年と使われ続けることもあります。そのため、将来の誰かが読んでも理解できるように書くことが大切です。
たとえば、あなたが日記をつけるときに、手書きでぐちゃぐちゃに書いたら、後で自分でも読めなくなることがありますよね。COBOLでも同じで、「自分だけがわかる書き方」では後から直すのが難しくなります。
2. 保守性を高めるための基本ルール
COBOLで保守しやすいプログラムを書くためには、いくつかの基本的な考え方があります。どれも難しくありませんが、続けて意識することが大事です。
(1)わかりやすい変数名を使う
変数名は、「何のデータを入れているのか」がすぐわかるようにするのがポイントです。たとえば、社員の年齢を扱うなら、AGEという名前にします。
01 EMPLOYEE-AGE PIC 9(3).
01 EMPLOYEE-NAME PIC A(30).
これなら、どのデータがどんな意味を持つかがすぐに理解できます。
(2)コメントで処理の目的を説明する
コメントは、プログラムの「メモ書き」です。COBOLでは、行頭にアスタリスク(*)をつけてコメントを書けます。
* 年齢が20歳以上なら「成人」と表示する
IF EMPLOYEE-AGE >= 20
DISPLAY "成人です。"
END-IF
コメントは、処理の内容ではなく「目的」を書くのがポイントです。「なぜこの処理をしているのか?」がわかるように書きましょう。
(3)インデントで見やすく整理する
インデントとは、行の先頭にスペースを入れて、構造をそろえることです。COBOLは段階構造がはっきりしているので、きれいに並べると読みやすくなります。
IF EMPLOYEE-AGE >= 60
DISPLAY "定年対象です。"
ELSE
DISPLAY "まだ働けます。"
END-IF
このようにそろっていると、どこからどこまでが条件の範囲なのかがすぐに分かります。
3. 処理を分けて整理する(段階的な構造)
COBOLの保守性を高めるもう一つの大事な考え方は、「処理を小分けにする」ことです。1つの段落(パラグラフ)やセクションに、たくさんの処理を書いてしまうと、あとで修正するときに影響範囲が分かりにくくなります。
処理を目的ごとにわけて、読みやすく整理しましょう。
MAIN-PROCESS.
PERFORM CHECK-AGE.
PERFORM DISPLAY-RESULT.
STOP RUN.
CHECK-AGE.
IF EMPLOYEE-AGE >= 20
MOVE "成人" TO AGE-STATUS
ELSE
MOVE "未成年" TO AGE-STATUS
END-IF.
DISPLAY-RESULT.
DISPLAY AGE-STATUS.
このように「チェック」「表示」などの処理を分けることで、あとから追加や修正がしやすくなります。
4. 同じ処理は繰り返し書かない
プログラムの中で、同じ処理を何度も書いていると、後で修正が必要になったときに、全部を直さなければなりません。保守性を高めるには、「同じ処理は1か所にまとめて呼び出す」ことが大切です。
CALL "CALC-TAX" USING PRICE TAX-AMOUNT.
このように共通の処理を外にまとめておけば、変更があっても1つ直すだけで済みます。これを「再利用性(さいりようせい)」が高いコードと言います。
5. 数値や文字を直接書かない(マジックナンバーを避ける)
COBOLでは、数値や文字を直接書くと、あとで意味が分かりづらくなります。たとえば、次のようなコードを見てみましょう。
IF EMPLOYEE-AGE >= 65
DISPLAY "定年です。"
END-IF
この「65」という数字が何を意味するのか、すぐに分かりません。これを変数として定義すれば、意味が明確になります。
77 RETIREMENT-AGE VALUE 65.
IF EMPLOYEE-AGE >= RETIREMENT-AGE
DISPLAY "定年です。"
END-IF
こうしておくと、将来「定年が60歳に変更」になった場合も、変数の値を変えるだけで済みます。
6. 保守性を高めるための心構え
最後に、COBOLで長く使えるプログラムを書くための考え方を紹介します。
- 「自分が書いたコードを1年後の自分が読む」と思って書く
- 「他の人が読む」ことを意識して、説明を丁寧にする
- 変更しやすいように、構造をシンプルに保つ
- テストしやすいように、処理を分割する
COBOLの世界では、「読みやすいコード=保守しやすいコード」と言われます。つまり、短く書くよりも「わかりやすく書く」ことが正解なのです。