導入: なぜ今、行数と行長の意識が必要なのか
現場で長く保守に携わっていると、数十年前のソースコードに出くわすことは珍しくありません。特に「固定形式」で書かれた古いプログラムでは、1行72桁という物理的な制約が、コードの可読性やメンテナンス性に直結します。現代の「自由形式」では制限が緩和されていますが、むやみに長い行は、かえってコードの品質を下げます。本稿では、物理制限を理解し、保守性の高いコードを書くための指針を解説します。
基礎知識: 固定形式と自由形式の仕組み
COBOLのソース構造には、大きく分けて「固定形式(Fixed Format)」と「自由形式(Free Format)」の2種類があります。
固定形式: 1行が80桁で固定されており、そのうちプログラムとして有効なのは7桁目から72桁目までです(1-6桁目は行番号、73-80桁目は識別領域)。この72文字という制限は、パンチカード時代の名残であり、現代でも古いシステムを維持する上では「絶対的な壁」となります。
自由形式: COBOL 2002規格以降で導入されました。1行の長さはコンパイラに依存しますが、標準で255文字、製品によっては数千文字まで扱えます。ただし、行が長すぎると、ペアプログラミングやコードレビューの際に、横スクロールが発生し、視認性が著しく低下するという問題が生じます。
実装/解決策: 読みやすいコードのための「80桁ルール」
自由形式であっても、私はあえて「1行80桁以内」というルールを推奨します。これは、マルチウィンドウでの比較や、印刷時のレイアウト崩れを防ぐためです。また、論理的に一行が長くなりすぎる場合は、以下の工夫を行います。
1. 定数の切り出し: 長い文字列や複雑な計算式は、定数や一時変数に分解する。
2. 改行の活用: 自由形式では、カンマやスペースを適切に使うことで、命令を複数行に分割できます。
サンプルプログラム: 自由形式における可読性を考慮した記述例
以下は、自由形式で長い処理を分割して記述する例です。
> 自由形式における可読性の高い記述例
IDENTIFICATION DIVISION.
PROGRAM-ID. READABILITY-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-LONG-MESSAGE PIC X(100).
PROCEDURE DIVISION.
> 長い文字列を連結して記述し、見やすくする
MOVE “これは非常に長い文字列を扱うためのサンプルです。”
& “自由形式であっても、適切な改行を入れることで”
& “コードの可読性を維持することができます。”
TO WS-LONG-MESSAGE.
DISPLAY WS-LONG-MESSAGE.
STOP RUN.
応用・注意点: 現場で陥りやすいバグの回避策
現場で特に注意すべきは、「固定形式から自由形式への移行時」です。
・コピー句(COPY)の罠: 固定形式で書かれたコピー句を、自由形式のプログラムで読み込む際、桁あふれが発生してコンパイルエラーになることがあります。古い資産を流用する際は、必ず桁数を確認してください。
・物理行数の限界: プログラム全体が数万行を超えると、コンパイラの最適化に時間がかかるだけでなく、デバッグ時のメモリ負荷も増大します。機能ごとにプログラムを分割する「モジュール化」を徹底することが、行数制限を気にせず開発するための根本的な解決策です。
コードの行数や行長は、単なる物理的な制限ではなく、開発者の「相手(次に見るエンジニア)への配慮」です。常に読みやすさを優先する姿勢こそが、ベテランエンジニアの矜持と言えるでしょう。

コメント