導入:なぜ今、重ね打ちが必要なのか?
現代の帳票出力はPDFやExcelが主流ですが、未だにレガシーなシステムではドットインパクトプリンタを用いた印刷が求められる現場があります。そんな中で、限られた表現力しかない帳票制御において「LINE PLUS 0」は、文字に太さを持たせたり、簡易的なアンダーラインを引いたりするための、ベテランの知恵が詰まった重要なテクニックです。
基礎知識:LINE句の役割
COBOLのレポートライター機能において、LINE句は「次の出力位置」を制御します。通常、「LINE PLUS 1」と書けば1行改行し、「LINE NUMBER 10」と書けば10行目へ移動します。ここで重要なのが「PLUS 0」です。これは「改行せずに、現在の行位置を維持したまま次のフィールドを出力する」という指示になります。この機能を応用することで、同じ座標に対して複数の文字を重ねて出力することが可能になります。
実装:重ね打ちによる強調表現
実装の考え方は非常にシンプルです。まずベースとなる文字を出力し、続いて少しだけズレた位置、あるいは全く同じ座標に対して、同一の文字や装飾用の記号を出力します。これにより、太字のような視覚効果や、枠線などの装飾を作成できます。
サンプルプログラム:太字風出力とアンダーライン
以下に、同じ行に文字を重ねるサンプルコードを示します。
01 REPORT-LINE.
05 LINE PLUS 1.
10 COLUMN 1 PIC X(10) VALUE “ABCDE”.
- 一旦出力した後、同じ行に重ねて印字を行う
10 COLUMN 1 PIC X(10) LINE PLUS 0 VALUE “ABCDE”.
- 1列ずらして重ねることで太字のような効果を出す
10 COLUMN 2 PIC X(10) LINE PLUS 0 VALUE “ABCDE”.
- アンダーラインを重ね打ちで表現する
10 COLUMN 1 PIC X(10) LINE PLUS 0 VALUE “—–“.
応用・注意点:現場でのトラブル回避
このテクニックを使う際には、いくつか注意が必要です。
1. プリンタの仕様確認
現在お使いのプリンタが、インクジェットやレーザープリンタの場合、物理的な「重ね打ち」は行われず、最後に印字したデータで上書きされてしまうことがあります。ドットインパクトプリンタ特有の「物理的に重ねて叩く」動作を前提としているため、出力デバイスが対応しているか必ず確認してください。
2. 位置ズレの回避
COLUMN指定を誤ると、文字が重ならずに隣に表示されてしまい、帳票のレイアウトが崩れる原因になります。「PLUS 0」を使う際は、必ずCOLUMNの位置を厳密に計算しましょう。
3. メンテナンス性
現代の保守担当者から見ると「なぜ同じ場所に何度も印字しているのか?」と混乱を招く可能性があります。ソースコードには「※重ね打ちによる太字強調」といったコメントを必ず残し、意図を明確にしておくことが、ベテランとしての配慮です。
古き良き技術ですが、工夫次第で帳票の視認性は大きく向上します。ぜひ、現場のニーズに合わせて活用してみてください。

コメント