プリンタのプログラム関連情報
- 1 プリンタのプログラム関連情報
-
プリンタのプログラム関連のうちデータ管理説明書に書いてある内容のさわり部分だけ書きます。詳しくは後のCOBOLの説明のところで書きます。
- 2 ページ管理(論理ページモードと物理ページモード)
-
COBOLなどの言語でプリンタに印刷するプログラムを書くとき、ページ毎に細かく印刷内容を制御しようとすると、ページ管理が必要になります。
ページを管理する場合にそのやり方を指定する方法として、論理ページモードと物理ページモードの2種類があります。
論理ページモードは、プログラムでページの始端終端や印字可能行数などのページの形式を指定するだけで、システム側が勝手に印字データの改行や改ページをしてくれるモードです。
物理ページモードは、改行や改ページも含めて細かくプログラマーが制御するモードです。改行ピッチを変更したり、プリンタ固有の機能を使用する場合なども物理ページモードにします。よくある失敗パターンが、簡単な論理ページモードで作り始めて、途中で仕様変更が発生して細かい制御が必要になり、物理ページモードで作り直しになるパターンです。
- 3 印刷用紙の指定
-
印刷する帳票の種類は多様なので、運用によっては印刷する都度印刷用紙を掛け替える必要があったりします。領収書や受発注の伝票とかいろいろありますよね。
印刷用紙を指定する方法としてメディアIDを使用する方法があります。
プログラム内でメディアIDをメディア識別名として指定しておいて、メディアIDが変わった段階で用紙交換のメッセージを表示させて、メッセージ内容に従って指定の用紙をプリンタにセット、リセットキーを押すことにより印刷を行う、という運用ができます。
- 4 書式オーバレイ機能
-
帳票を印刷するときに、罫線や見出しなど必ず印刷する部分をどのようにするかいくつかの方法があります。
一番最初に思いつく方法として、あらかじめ罫線や見出しなどが印刷された紙に印刷する方法があります。プログラム作成時に、罫線からずれないように上下左右に印字位置を微調整する必要があり結構面倒です。
無地の用紙に、印刷データと一緒に罫線や見出しなども印刷する方法もあります。1つのプログラム中でデータとフォーマット(フォーム)を混在させて記述することになるので、プログラムが複雑になります。
書式オーバレイ機能を利用するとデータとフォームを分離することができます。あらかじめフォームデータファイルに罫線や見出しなどの定型部分を記述しておき、プログラムにはデータの印刷処理だけ記述します。そしてプログラム実行時にデータとフォームを重ね合わせて印刷します。
フォームデータファイルは、書式オーバレイユーティリティ(#FORM)あるいは別売り製品のFORMS2で作成します。
書式オーバレイは、仮想デバイス(Virtual Device)モード、FORMSモード、ソフトウェアオーバレイモードの3種類のモードがあります。プリンタ毎に使えるモードが異なり、仕組みも全く異なります。このためプリンタを変更したら、フォームデータファイルも作り直しになることがよくあります。
- 5 プリンタ共用機能
-
プリンタ共用機能とは、複数のプログラムから同時に1台のプリンタを使用する機能です。普通はあるプログラムからプリンタに印刷しているときに、別のプログラムから印刷しようとすると、プリンタが使用中のエラーになります。もしプリンタビジースプールが有効であれば、ビジースプールに保存されるかもしれません。
プリンタ共用機能を使用すると、プリンタが使用中とならないため、複数の端末から1台のプリンタにページ単位で出力できます。
- 6 プリンタの制御符号
-
文字を印刷する程度なら大したことはないのですが、印字位置や用紙送り、改行ピッチ、書体、文字の大きさを細かく制御しようとしたり、独自にバーコード印字しようとしたりするとプリンタの制御符号をプリンタに送出する必要があります。
プリンタはどれも文字(や画像)を印刷するだけで同じように見えるかもしれません。しかし実は多種多様で非常に異なります。
NECのオフコンに接続できるプリンタも、実はNECが設計し作っていたプリンタもあれば、どこかのメーカーのOEM品であったりします。古いプリンタは新しい規格の制御符号には対応していないかもしれません。プリンタ自体にもホッパが付いているもの付いていないもの、シートガイドの有無、フィーダー有無、IDマーク印字/読み取り機構有無など、フォントが内蔵のプリンタ・・などにより、使える制御符号が異なります。プリンタ側にディップスイッチが付いており、その状態によりモードが変わるものもあります。ページプリンタ、ラインプリンタ、ドットインパクトプリンタ、レーザープリンタetc.同じプリンタでもオフコンにどのように接続しているのかで使える制御符号が変わったりもします。
全てのプリンタで、データ管理説明書に記載の制御符号がすべて使えるわけではないということに注意が必要です。
どこかのメーカーのプリンタを持ってきてNECのオフコンに取り付けても、NECのオフコンの制御符号がサポートされていない可能性もあります。
制御符号の種類 説 明 1バイト系制御コード 用紙送りや復帰動作などの基本的な制御を行う ESCシーケンス 主に改行ピッチ、タブなどの印字位置に関する制御を行う CEXシーケンス 日本語プリンタの機能に関する制御を行う
罫線、文字ピッチ、文字サイズ、文字間隔、文字回転、カラー指定、バーコードなどFSシーケンス カセット切り換え、網掛け等の特殊なシーケンスの為、一部の制御符号のみプログラムからの使用が可能 シンボリックシーケンス システムにてシンボリック→物理的な制御符号の変換を行い実現 基本はまずシンボリックシーケンスで実現できないか考えてみて、それができない場合は他の物理的な制御符号を使用します。 シンボリックシーケンスは、システムサブルーチン"CBLSYMPR"をCALLすることになります。それに対して他の制御符号はWRITE命令内に直接バイナリデータを記述することになるので、プログラム上非常に見にくいものになりやすいです。
10 A PIC X(05) VALUE ""3FE04F40A0"". 10 B PIC X(05) VALUE ""3FE04FE080"". 10 C PIC X(08) VALUE ""3F504F40674F40A0"". 〜 WRITE A TO LP-R. WRITE B TO LP-R. WRITE C TO LP-R.
のように書かれても、バイナリなので後で見たら何をやっているのかさっぱり、ということになりかねません。
個々の制御符号を説明しようとすると、データ管理説明書の説明を何ページにもわたって転記することになりかねないので、ここには書きません。NECの公式の説明書であるデータ管理説明書を見てください。