COBOLのインデントとレイアウトの基本!可読性を高めるコーディング規約
生徒
「COBOLのプログラムを見せてもらったんですけど、行の始まりにたくさん空白があったり、書き出しの位置が決まっていたりして、なんだか窮屈そうですね。もっと自由に書いちゃダメなんですか?」
先生
「その『決まった位置から書く』というのが、実はCOBOLで一番大切なルールなんです。これをレイアウトやインデントと呼びます。」
生徒
「自由に書いたほうが楽な気がしますが、どうしてわざわざ揃える必要があるんでしょう?」
先生
「プログラムは書く時間よりも、後から読み返す時間のほうがずっと長いからです。みんなで同じルールを守れば、パッと見ただけで内容が理解できるようになりますよ。詳しく解説していきましょう!」
1. インデントとレイアウトとは?
COBOLにおけるレイアウトとは、プログラムの1行の中で「どこに何を書くか」という配置のことです。また、インデント(字下げ)とは、行の始まりに空白を入れて、文章のまとまりを見やすく段段にすることを指します。
パソコンを触ったことがない方に例えると、「原稿用紙の書き方」にとても似ています。名前はここ、本文の書き出しは1マス空ける、といった決まりがあるからこそ、誰が読んでも読みやすい文章になりますよね。COBOLも同じで、特に「固定形式」という伝統的な書き方では、何文字目から何を書くかが厳格に決まっています。
このルールを守ることで、プログラムの可読性(かどくせい)、つまり「読みやすさ」が劇的に向上します。読みやすいプログラムは間違いを見つけやすく、後から直すのも簡単になるため、お仕事でプログラミングをする上では最も基礎的なスキルとなります。
2. なぜレイアウトの統一が重要なのか
プログラミングは一人で行うものではありません。特に大きな企業のシステムでは、何十人、何百人という人が同じプログラムを触ります。もし全員が好き勝手な位置から文字を書き始めたら、中身が複雑に絡み合った「スパゲッティのようなコード」になってしまいます。
レイアウトを統一するメリットは以下の通りです。
- 一目で構造がわかる:どこからどこまでがひとまとまりの処理なのか、段差を見るだけで直感的に理解できます。
- ミスを減らせる:書き出し位置を間違えると、コンピューターが「これはプログラムではない」と勘違いしてエラーを出してくれます。
- 引き継ぎが楽になる:10年前に書かれたプログラムでも、ルールが同じなら今の私たちがすぐに内容を理解できます。
COBOLは他の新しい言語と違い、昔のパンチカード(穴を開けた紙)で命令を出していた時代の名残があるため、この「位置のルール」が特に厳格なのです。
3. A領域とB領域という不思議なルール
COBOLのレイアウトを語る上で欠かせないのが、領域(りょういき)の考え方です。プログラムの1行の中で、文字を書く場所によって役割が決まっています。
- 1文字目から6文字目:行番号などを入れる場所です。
- 7文字目:「見出し領域」と呼ばれ、ここに「*(アスタリスク)」を書くと、その行はメモ(コメント)になります。
- 8文字目から11文字目:A領域と呼ばれます。大きな見出しなどを書く場所です。
- 12文字目から72文字目:B領域と呼ばれます。具体的な命令を詳しく書く場所です。
このように、文字を書く「列」に名前がついているのがCOBOLの特徴です。初心者のうちは、「まずは12文字目(B領域)から命令を書くんだな」と覚えるところからスタートしましょう。
4. 条件分岐で見やすさを実感しよう
それでは、インデント(字下げ)を正しく使ったプログラムの例を見てみましょう。ここでは、テストの点数によってメッセージを変える処理を書きます。IF文の中身を少し右にずらすことで、どこが条件に当てはまった時の処理なのかが分かりやすくなります。
*--- A領域から書き始める見出し
PROCEDURE DIVISION.
*--- B領域(12文字目以降)から命令を書く
IF SCORE >= 80 THEN
*------- インデント(さらに4文字下げる)
DISPLAY "素晴らしい!合格です。"
ELSE
DISPLAY "もう少し頑張りましょう。"
END-IF.
STOP RUN.
実行結果は以下のようになります(SCOREが80点以上の場合)。
素晴らしい!合格です。
もしすべての行を左端に揃えて書いてしまうと、どこが条件の範囲内なのかを探すのがとても大変になります。段差をつけることで、脳が自然と情報のまとまりを認識できるようになるのです。
5. データ定義を綺麗に並べるコツ
プログラムの中で使う「箱(変数)」を準備する場所でも、レイアウトの統一は効果を発揮します。COBOLでは「レベル番号」という数字を使ってデータの階層を作りますが、この数字や名前、そして種類(形式)を縦に綺麗に並べることが推奨されます。
DATA DIVISION.
WORKING-STORAGE SECTION.
*--- 項目名やPICの位置を縦に揃えると見やすい
01 CUSTOMER-INFO.
05 CUST-ID PIC 9(05) VALUE 12345.
05 CUST-NAME PIC X(20) VALUE "田中 太郎".
05 CUST-AGE PIC 9(03) VALUE 030.
実行結果は以下のようになります。
(定義部分のため画面への出力はありません)
このように、「PIC」という文字の位置を縦に揃えるだけで、表形式のように見やすくなります。パソコンの操作に慣れていない方でも、エクセルや方眼紙に項目を埋めていくような感覚で整列させると、プロっぽい綺麗なコードになります。
6. 繰り返し処理における段落の作り方
同じ作業を何度も繰り返す処理でも、レイアウトのルールが活躍します。繰り返しの範囲を明確にするために、中身の処理を一段下げて書くのが一般的です。以下のプログラムは、挨拶を3回繰り返す例です。
PROCEDURE DIVISION.
DISPLAY "カウントを開始します。"
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
*------- 繰り返したい内容を一段下げる
DISPLAY "こんにちは!" I "回目です。"
END-PERFORM.
STOP RUN.
実行結果は以下のようになります。
カウントを開始します。
こんにちは!1回目です。
こんにちは!2回目です。
こんにちは!3回目です。
この「PERFORM」から「END-PERFORM」までがセットであり、その中の「DISPLAY」が繰り返される主役であることが、見た目だけで分かりますね。これがレイアウト統一の力です。
7. 専門用語のやさしい解説
記事の中で出てきた難しい言葉をおさらいしましょう。
- 可視化(かしか):目に見えないプログラムの構造を、インデントなどを使って目に見える形に整えることです。
- コメントアウト:7文字目に「*」を打って、その行をコンピューターに無視させること。メモ書きに便利です。
- 固定形式(こていけいしき):今回説明したような、何文字目から書くかが決まっている古いけれど標準的な書き方のことです。
- 保守(ほしゅ):作ったプログラムを長く使い続けるために、点検したり直したりすることです。
8. 文字列の編集とレイアウト
文字と文字を繋げるような処理でも、命令語と対象となるデータの位置関係を整理して書くのが規約の基本です。バラバラに書くのではなく、意味の切れ目で改行し、高さを合わせるようにしましょう。
PROCEDURE DIVISION.
*--- 繋げる項目を縦に並べて読みやすくする
STRING "愛知県"
"名古屋市"
"中区"
DELIMITED BY SIZE
INTO ADDRESS-FULL.
DISPLAY "住所: " ADDRESS-FULL.
STOP RUN.
実行結果は以下のようになります。
住所: 愛知県名古屋市中区
長い住所や文章を扱うとき、このように縦に並べることで、何と何を繋げようとしているのかが一目瞭然になります。これも立派なレイアウトの工夫です。
9. 初心者が陥りやすいレイアウトの罠
COBOLの学習を始めたばかりの方がよくやってしまうのが、「全角スペース」をインデントに使ってしまうことです。プログラムの世界では、見た目が同じ空白でも、半角スペースと全角スペースは全くの別物です。
全角スペースを入れてしまうと、コンピューターは「理解できない文字が入っている!」と怒ってエラーを出してしまいます。インデントを入れるときは、必ず半角の状態でキーボードの「スペースキー」や「Tab(タブ)キー」を使うようにしましょう。この点に気をつけるだけで、エラーの原因の半分くらいは解消されるはずです。
10. 読みやすいコードは最高の思いやり
最後に、なぜここまでレイアウトにこだわるのかを考えてみましょう。それは、将来そのプログラムを読む「未来の自分」や「職場の仲間」への思いやりだからです。プログラミングの技術は日々進化しますが、「読みやすいものを書く」というマナーはいつの時代も変わりません。
最初から完璧に覚えるのは大変ですが、「まずは行の始まりを揃える」「見出しと中身を分ける」といった簡単なことから意識してみてください。美しく整ったプログラムが書けるようになれば、あなたも立派なCOBOLプログラマーの仲間入りです。ルールを味方につけて、楽しく学習を続けていきましょう!