1.はじめに
メインフレームのシステムや、それをリプレースしたシステムと連携する場合、WindowsやLinux、Macのような一般的なPCでは用いないコードを使用することがあります。
その最も代表的な例は、メインフレーム向けの文字コード体系である「EBCDIC」です。
「EBCDIC」はメインフレームのベンダー毎に独自の拡張が行われていることがあり、呼び名も異なる場合があります。
(例えば、日立系のメインフレームでは、「EBCDIK/KEIS」と呼ばれます)
「EBCDIC」のコード表は、ベンダーや有志の方々が公開しています。以下のように、Wikipediaにも書かれています。
https://ja.wikipedia.org/wiki/EBCDIC
しかし、上記のコード表を読んでも、意図がわからないコードが入り込むことがあります。
そのコードの例の一つが、プリンターの制御用のコードです。
メインフレームのシステムでは、プリンターを用いて帳票やハガキを印刷することが多いです。
この際、プリンターに読み込ませるためのバイナリの制御コードを用いて、文字の形式や改行・改ページ等をコントロールします。
プリンターに読み込ませるファイルには制御コードが埋め込まれており、制御コードの意味がわかっていないとバイナリエディタやダンプ結果を通してファイルを見る際に困ることがあります。
(出力される帳票やハガキを見ることができれば良いのですが、印刷には費用や時間を要するので、手軽に見ることはできません)
プリンターの制御コードで代表的なものは、「シフトアウト・シフトイン」と「改行指示」です。
この記事では、これらの例をもう少し詳しく見ていきます。
2.プリンターの制御コードの例
(1)シフトアウト・シフトイン
「シフトアウト・シフトイン」は、1バイト文字の箇所と2バイト文字の箇所を明示するための制御コードであり、2バイト文字が始まる直前にシフトアウト文字を入れ、2バイト文字が終わった直後にシフトイン文字を入れます。
(2バイト文字の前後にシフトアウト・シフトインを入れないと、その箇所が1バイト文字として扱われ、文字化けします)
以下は、文字コードにEBCDIK/KEISを使用する場合の例です。

(2)改行指示
「改行指示」は、その名の通り改行を示す制御コードです。
プリンターに読み込ませるファイルは基本的にバイナリなのでテキストエディタで開いても改行されませんが、改行指示の制御コードを探して、そのコードを通常用いられる改行コード(CRLF等)に置換することで、テキストエディタで開いた時になんとなく内容を読み取れるようになります。
(3)その他
その他、「改ページ指示」「文字の大きさ指定」「バーコード印字」等の制御コードが存在します。
どのような制御コードが存在するのか、制御コードとして具体的にどのようなコードを指定すれば良いのか、はプリンターごとに決まりがあり、その資料も基本的には社外に持ち出せないので、具体的なことは記事中に書くことができません。
しかし、そのようなコードが存在するということを知っているだけでもテストが容易になりますし、もし知る必要があれば、プリンターの説明書を読むか、職場の有識者に質問して教えてもらうかすると良いでしょう。
3.おわりに
Javaの実務では、このように、馴染みが少ないシステムのことを知る必要がある場合があります。その際に、どのようなコードが入っているかということに興味を持つと、理解が深まります。
これは、Javaの学習にも言えることであり、弊社の書籍でも、メモリにどのようなコードが入っているのかのイメージをわかりやすく説明した箇所があります。
株式会社サイゼントでは、即戦力のJavaプログラマーを育てるための書籍「絶対にJavaプログラマーになりたい人へ」をKindleで販売しています。
同じく、Spring Frameworkについてきめ細かく解説した別冊も販売中です。
また、上記の書籍をテキストとして用いたプログラミングスクール「サイゼントアカデミー」も開校しています。
このスクールは、受託開発事業・SES事業である弊社が、新入社員向けの研修で培ったノウハウを詰め込んだものです。
ご興味がある方は、上記画像から個別ページにアクセスしてみてください!
コメント