技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

メインフレームのプリンターで使われる制御コードの概要

メインフレームのシステムでは、プリンターを用いて帳票やハガキを印刷することが多いです。
この際、プリンターに読み込ませるためのバイナリの制御コードを用いて、文字の形式や改行・改ページ等をコントロールします。
プリンターに読み込ませるファイルには制御コードが埋め込まれており、制御コードの意味がわかっていないとバイナリエディタやダンプ結果を通してファイルを見る際に困ることがあります。
(出力される帳票やハガキを見ることができれば良いのですが、印刷には費用や時間を要するので、手軽に見ることはできません)
 
制御コードで代表的なものは、「シフトアウト・シフトイン」と、「改行指示」です。
 
「シフトアウト・シフトイン」は、1バイト文字の箇所と2バイト文字の箇所を明示するための制御コードであり、2バイト文字が始まる直前にシフトアウト文字を入れ、2バイト文字が終わった直後にシフトイン文字を入れます。
(2バイト文字の前後にシフトアウト・シフトインを入れないと、その箇所が1バイト文字として扱われ、文字化けします)
以下は、文字コードにEBCDIK/KEISを使用する場合の例です。

f:id:akira2kun:20201212165445j:plain
 
「改行指示」は、その名の通り改行を示す制御コードです。
プリンターに読み込ませるファイルは基本的にバイナリなのでテキストエディタで開いても改行されませんが、改行指示の制御コードを探して、そのコードを通常用いられる改行コード(CRLF等)に置換することで、テキストエディタで開いた時になんとなく内容を読み取れるようになります。
 
その他、「改ページ指示」「文字の大きさ指定」「バーコード印字」等の制御コードが存在します。
どのような制御コードが存在するのか、制御コードとして具体的にどのようなコードを指定すれば良いのか、はプリンターごとに決まりがあり、その資料も基本的には社外に持ち出せないので、具体的なことは記事中に書くことができません。
しかし、そのようなコードが存在するということを知っているだけでもテストが容易になりますし、もし知る必要があれば現場の有識者に質問して教えてもらうと良いでしょう。