導入
メインフレームのPL/I開発において、プリプロセッサ(マクロ機能)はコードの柔軟性を高める強力な武器です。しかし、プリプロセッサ文(%で始まる文)の中に記述したコメントは、展開後のソースコードには残りません。本記事では、この「消えるコメント」を単なる注釈と捉えず、設計意図をコードに埋め込むための戦略的な活用法と、将来的な資産移行を見据えた管理の重要性について解説します。
基礎知識
PL/Iにおけるプリプロセッサとは、コンパイルの第1段階でソースコードをスキャンし、マクロの展開や条件付きコンパイルを行う機能です。ここで記述する `/ … /` は、プリプロセッサが解析を行う際に「意味のない文字列」として読み飛ばされます。
重要なのは、このコメントがコンパイル後の実行モジュールには一切含まれないという点です。つまり、運用担当者が展開後のリストファイルだけを追っても、その定義が「なぜその値なのか」という背景を読み取ることはできません。これは、保守フェーズにおいて非常に大きな「情報の断絶」を招く原因となります。
実装/解決策
プリプロセッサ文内のコメントは、単なるメモではなく「メタ情報」として扱います。特に、計算式やビジネスロジックの定数定義においては、その根拠となる法改正日や仕様書番号を明記することが推奨されます。
プリプロセッサ行が長くなる場合は、改行コードを用いて可読性を確保しつつ、役割を明確化しましょう。
サンプルプログラム
以下は、消費税率や閾値を管理するマクロの記述例です。このように記述することで、後任者がソースを見た際に「なぜこの値なのか」を即座に判断できます。
/ マクロ定義例:ビジネスルールのメタ情報を埋め込む /
%DCL VAT_RATE CHAR;
%DCL LIMIT_VAL FIXED;
/ 2023年10月のインボイス対応に伴う税率設定 /
%REPLACE VAT_RATE BY ‘0.10’;
/
システム閾値:月次バッチ処理の最適化のため設定
※詳細は設計書P.45「バッチ負荷制御」を参照のこと
/
%REPLACE LIMIT_VAL BY 99999;
応用・注意点
現場で最も陥りやすいのは、移行時(マイグレーション)のトラブルです。
既存システムのソースコードを解析して新言語へ書き換える際、多くの自動解析ツールは「展開後のソース(プリプロセス済み)」のみを対象とします。この場合、プリプロセッサ内に書かれた貴重な設計意図や根拠は全て脱落します。
もし現在、将来的なシステム刷新を視野に入れているのであれば、以下の運用ルールを徹底してください。
・ルール1:プリプロセッサ内のコメントには、ビジネスロジックの根拠を記述する。
・ルール2:ソースコード解析を行う際は、必ず「プリプロセス前のオリジナルソース」を対象に含める。
・ルール3:展開後のソースしか存在しない古い資産については、早急にドキュメントとして設計意図を回収する。
「内密のメモ」は、コードを永続させるための鍵となります。適切なコメント管理を意識し、保守性の高いメインフレーム開発を目指しましょう。

コメント