始めの言葉

「プリンターから印刷できて当たり前」と、ユーザーからもSIerからも軽視されがちなプリンターの世界ですが、実際にはお困りだったり、思ったような印刷結果が得られないまま我慢してお使いの皆様のために、今までの経験が役立てばと、このブログを立ち上げました。印刷の基本から、応用情報、問題の解決方法を情報発信すると共に、PDF化など、これからどうするかについても、ご相談に乗れれば幸いです。ご質問はコメントでお寄せください。
ラベル PDT の投稿を表示しています。 すべての投稿を表示
ラベル PDT の投稿を表示しています。 すべての投稿を表示

2017年6月11日日曜日

IBM 小型レーザー・プリンターの今まで -第14回- "PAGES"-8

2003年は、WindowsXP がリリースされた年です。この年、IBM は、小型レーザー・プリンターのシリーズとして、"Infoprint 1000 シリーズ"を発表しました。
Infoprint 1332
MFPオプション付き Infoprint 1352
これらの製品は、Lexmark 社製品から OEM 提供を受けたものと思われます。社内開発を断念し OEM 製品による製品シリーズの拡充に切り替えたと考えられ、個人的には残念だったことを覚えています。
国内向け製品も同じ方針に合わせて、日本版という意味で、"Infoprint 1000J シリーズ"と銘打って、A3 サイズ対応で、印刷速度の異なる 3 モデルを、同じ年に発表しています。
この時から、それまでの 4 桁のマシン・タイプと 3 桁のモデル名の他に、各モデルに対応する "Infoprint 1316J" とか "Infoprint 1356J"といった名前が付くようになりました。その結果、この 3 モデルの概要は、次のようになります。

モデル名 型式         印刷速度  最大用紙サイズ
1356J     5596-3M6  32 枚/分  A3
1336J     5596-3M4  28 枚/分  A3
1316J     5596-3M2  22 枚/分  A3

標準モデルでは、PAGES に対応していません。標準で対応しているのは、"RPCS" モードとあることから、リコー社からの OEM 製品であることが分かります。
付属のプリンター管理ツールにも、"Infoprint Navigator" とか "Infoprint Administrator" というように、"Infoprint" の名前が付けられています。
標準では、リコー社独自のプリンター制御言語 "RPDL" にも対応していますが、Windows からの印刷では、"RPCS" モードがお勧めとなっています。"RPCS" モードは、主にイメージ・データとして印刷データを生成し、解像度も 1,200DPI と高くなっている点では、"5589-L36" の時の専用モードと類似の位置づけ、考え方の印刷データ形式と言えると思います。
Infoprint13X6J 標準とフル・オプション付き

では、PAGES はどうなったのでしょうか ? PAGES モードは、遅れてオプションとして発表され、PAGES オプション付きのキッティング・モデルとしてのみ、提供されることになりました。
キッティング・モデルには、発注用に "M" の代わりに "P"が付いた型式(例えば、5596-3P6)が付けられましたが、このことにより、次のような制約が発生しました。

- 標準モデルを購入後、PAGES オプションが必要になっても後付けができない。
- 購入した製品に、PAGES オプションが付いているかは、プリンターの構成情報を印刷しないと分からない。つまり、"5596-3M6" というプリンターに、PAGES オプションが"キッティング"されているので、プリンターに貼られているシールには、"5596-3M6" としか記載されていないということです。

その結果、特約店やお客様では混乱が発生したことがあることは、否めません。

また、標準モデルでは、オプションも含めると、次のようなに多くの種類の印刷データ形式に対応していて、受信した印刷データを自動認識することもできました。
- RPCS
- RPDL
- PostScript3
- ESC/P
- PR201H
しかし、PAGES に対しては少し冷たく、自動認識できないことがありました。そのため、Windows からの "RPCS" モードを使った印刷と、PCOMM プリンター・セッションからの "PAGES" モードでの PDT 印刷が、1 台のプリンターに対して混在する場合、問題が発生することが、少なくありませんでした。その対策に関しては、次回、お話します。
 

2017年6月4日日曜日

IBM 小型レーザー・プリンターの今まで -第13回- "PAGES"-7

PC の OS の主流が、まだ、J-DOS や DOS/V だった頃には、ワープロや表計算、オンライン端末といったアプリケーションが、それ自身で印刷データを生成して、プリンターに送信してくるという仕組みでした。
一方、インパクト・プリンターと比べて、レーザー・プリンターは、縮小指定、用紙トレイ指定、用紙方向縦/横指定、4 辺の余白の指定等々、制御コマンドの種類が多いのですが、メーカー間で統一されたコマンドは、ありませんでした。
そうなると、各レーザー・プリンター・メーカーは、標準のプリンター制御コマンドを独自の規格で決めて、多くのアプリケーション・メーカーに対応していただくことで、競争力になると判断したわけです。そして、更に、他社が真似して同じコマンドに対応してきたとしても、その時には、自社が先行してコマンドを拡張しておくことで、自社の優位性が保たれるとも考えました。

その際に、インパクト・プリンターの実績のあった、IBM と EPSON 社は、インパクト・プリンターのコマンドを独自に拡張する方式で、それぞれ、PAGES、ESC/Page というレーザー・プリンター向けの規格を作りました。それ以外のレーザー・プリンター・メーカー、例えば、CANON 社は、LIPS という全くレーザー・プリンター独自の自社規格を決めて、多くのアプリケーション・メーカーのサポートを得ていました。
その中で、多くのプリンター・メーカーがターゲットにしたのが、IBM の AS/400 やメイン・フレームのシステム・ユーザーです。この市場は大きいと判断したのだと思います。
それらのシステムからの印刷を行なうためのアプリケーションは、3270PC であったり、5250PC ですが、それらは、5577 形式か、ESC/P 形式のコマンドしか送信しません。そこで、5577 のマニュアルに記載されているコマンドの説明や、それらアプリケーションからの印刷データを調べて、5577 互換 + 各社独自のレーザー・プリンター制御コマンドという組み合わせの、所謂「5577 エミュレーション・コマンド」(エミュレーションとは、真似という意味)を、レーザー・プリンターのオプションとして販売しました。
5577 コマンドに対する各社の拡張

しかし、その後、Windows の登場によって、印刷データの流れは大きく変化し、アプリケーションは印刷データの生成という作業から解放され、その分の仕事は、自社プリンター用のドライバーの開発として、プリンター・メーカーに移ったわけです。自社の規格を業界標準として競争力を維持するという戦略の下に、独自規格でコマンドを決めてきたことが、Windows の登場によって、自社の負担になってしまったという、皮肉な結果になっています。

そのような時代の変化の下で、AS/400 も含めたホスト・システムから、端末アプリケーションを介して、(PAGES も含めた)5577 互換のレーザー・プリンターへの印刷という図式も、いつの間にか崩れてきたようです。
つまり、一般の Windows アプリケーションと同様に、PCOMM プリンター・セッション経由の印刷も、最早、PDT 印刷ではなく、PDT を指定しないドライバー印刷で対応可能になってきているようです。
これは、PCOMM 側の改良や、プリンター・メーカーによるドライバーの改良の両方が寄与していると思います。

さて、そうなってくると、PAGES の必要性は、どこかに残っているのでしょうか ?
それは、次の 3 つのケースに絞られるかと思います。
1. OS/400 のHPT 機能を使った、AS/400 からの LAN 直結印刷の場合
2. AS/400 上のアプリケーションとして、PAGES コマンドをキャラクター・モードを使って送信する場合
3. AIX 等の UNIX 系のシステムからの文字印刷の場合

Windows のドライバー印刷では、印刷データは、アプリケーションとプリンター・ドライバーが、MS 明朝や、MS ゴシック等々の Windows に付属のフォントのイメージを使って、文字もイメージ・データと各ページのイメージをプリンターに送信してきます。
それに対して、"1" と "3" は、途中にWIndows を介しませんから、文字は文字コードとしてプリンターに送られ、プリンターが内蔵フォントを使って印刷イメージを生成します。
次の画面は、OS/400 V7R1 において、リモートOUTQの設定の画面ですが、コマンド変換するための選択肢である "MFRTYPMDL" にも、例えば "*IBMPAGES300" が準備されています。これは、前回までお話した、300DPI の解像度を持つ、ネットワーク・プリンター・シリーズの PAGES オプション用のものです。
MFRTYPMDL *IBMPAGES300

"2" は、文字通り、キャラクター = 文字としてプリンターを制御する PAGES コマンドをプリンターに届けないとなりませんから、プリンター・セッションでは、印刷データはイメージではなく、文字コードや制御コマンドとしてプリンターに送信する必要があります。
例えば、スプール・データの 1 ページ目は、A3 サイズの用紙に印刷するが、2 ページ目以降は、A4 サイズ用紙に印刷するといった業務の場合、データの先頭で、A3 サイズの用紙がセットされた用紙トレイを指定し、2 ページ目の先頭では、A4 サイズの用紙がセットされた用紙トレイを指定するコマンドを、印刷データの中に埋め込むことになり、このような場合に、キャラクター・モードが使用されます。
この業務を継続するために、PAGES モードを持ったプリンターを使い続けるという方法以外に、PAGES という一種の制約を外すことを検討するのであれば、Mapping Suite のようなソリューションの導入を検討されるのが良いと思います。

2017年4月16日日曜日

IBM 小型レーザー・プリンターの今まで -第7回- "PAGES"-1

PC(Personal Computer) の OS(Operating System) が、Windows と、iOS となった今から見れば、苦笑するようなことでしょうが、個人用のコンピューターという意味での PC が、IBM では "PS/55" だった時代には、レーザー・プリンターのメーカーが他社に比べて優位に立つには、自社独自仕様のコマンドの機能を、いかに多くのアプリケーション・ソフトウェアに対応してもらって、「業界標準」の地位を獲得するかにかかっていると考えられていたものです。
しかし、この考え方は、何もプリンターに限った話ではなく、当時は画期的だった OS、"OS/2" であれ、PC 自体であれ、あるいはゲーム機であれ、使えるアプリケーションの種類が多くないと、生き残ることができないという点では、共通のものではないでしょうか ?

IBM のプリンター開発の本部である Boulder(コロラド州) では、ちょうど、メイン・フレームや AS/400 から、直接プリンターにグラフィカルな印刷を行なうための "AFP(Advanced Function Printing -> 後に Presentation)"というアーキテクチャーを実現するための "IPDS" というコマンド体系を定義していました。
そこで、日本でもこれを元に "PAGES" という PC 向けのレーザー・プリンターのコマンド体系を定義しました。
"PAGES" を定義するに当たっては、先行して複数のアプリケーション・ソフトウェアが対応していた "5577" コマンドと互換であることは、当然の前提です。
これは、別の表現で言うと、"5587-G01" プリンターのオプションで対応した "3222" コマンド体系の拡張ということになります。

実際に、"PAGESコマンド解説書"の概要を見てみると、このコマンドは、次のように分類できることが分かります。

(1) 基本制御コマンド
"5577" コマンドと同じか、その拡張コマンド

(2)拡張制御コマンド
"PAGES" で追加されたコマンドで、"ESXコマンド" と "グラフィックス・コマンド" に分かれます。
"PAGES"コマンド体系
 しかし、現在でも使用されるコマンドは、PDT ファイルを使ったプリンター・セッション経由の印刷や、HPT(ホスト印刷変換)機能を使った、OS/400 からの直接印刷で使用されるコマンドに限られると言って良いのではないでしょうか ?
それらは、その使用目的から自然と、ページ全体に対する制御を行なうコマンドとなります。

1. PAGESモード設定
1B 7E 12 00 01 11

2. メディア座標原点(用紙回転)
1B 7E 50 00 01 00 => 用紙縦長
1B 7E 50 00 01 03 => 用紙横長

3. 用紙トレイ選択
1B 7E 46 00 05 00 00 nn 00 00
nn = 11 => A3 トレイ指定自動選択
nn = 13 => A4 トレイ指定自動選択
nn = 00 => 第 1 給紙カセット指定
nn = 01 => 前面トレイ指定
等々

4. 両面印刷指定
1B 7E 3B 00 04 00 00 nn 01
nn = 00 =>片面印刷指定
nn = 01 => 両面:長辺綴じ
nn = 02 => 両面:短辺綴じ

5. 縮小指定
1B 7E 51 00 01 nn
nn = 03 => 連続用紙サイズ(15x11 インチ) -> A4
nn = 02 => 連続用紙サイズ(15x11 インチ) -> B4
nn = 01 =.> 縦横 75%
等々

6. 余白設定
1B 7E 53 00 0A 00 X座標オフセット 00 Y座標オフセット 00 00

つまり、これらのコマンド以外のもの、例えば次のようなコマンドは、プリンター側に機能としては持たせたものの、アプリケーション・プログラムから使われることはほとんど無しに、Windows のプリンター・ドライバーを使った印刷の時代に変わってしまったということです。
- フォーム・オーバーレイ
- 32 x 32 ドットの外字のダウンロード
- 内蔵アウトライン・フォントの使用
- ベクトル座標を使った図形の記述
- グラフィックの記述



2017年2月12日日曜日

ライン・プリンターの全て - 第27回 - たまにいただくお問合せ-4

Q8. AS/400からの印刷に使用してきた"5400-006"を、"5400"の現行モデルに置き換えるに当たって、注意するべき点は何か。

A8. 現行の"5400-006"プリンター("ライン・プリンターの全て - 第4回- 日本語ライン・プリンターの歴史-4"参照)
をどのような方法で、AS/400と接続しているかを確認するよりも、新しい"5400"プリンターをどのように接続するかを考えることを優先した方が良いと思います。
接続方式の違いによって、メリットも注意点もそれぞれ異なりますので、それらをよく把握した上で、日々の業務に最適な接続方式を選択してください。

1. Telnet5250E による LAN 直結印刷
"5400"プリンターの標準的な接続方式です。
<<メリット>>
- AS/400 と LAN 直結になるので、プリンター・セッション経由の印刷と異なり、PC に依存することが無い。
- APW や プリンター・ファイルで指定したバーコード・コマンドや文字拡大、OCR-B フォント指定コマンドが、プリンター・セッション経由の印刷と異なり、全て有効となる。
- 高速モードや、超高速モードでの印刷であっても、バーコードのある行のみは、ドットを間引かずに印刷する通常速モードに自動的に切り替わって印刷するため、バーコードの読み取り精度を落とさない高速印刷が可能となる。
- 印刷中の保留や取り消し操作が、プリンター・セッション経由の印刷と異なり、AS/400 端末画面から可能となる。
- 用紙切れや用紙ジャムというエラー・メッセージが、プリンター・セッション経由の印刷と異なり、AS/400 端末画面に表示される。メッセージ応答として、印刷再開ページを指定することも可能となる。

<<注意点>>
- 外字を使用するには、予め"LODPPW"コマンドを使用して、プリンターにダウンロードしておく必要がある。(プリンターの電源を切った後でも保存される。)
- 接続先の AS/400 は1台(一つの IP アドレス)となる。接続先の AS/400(IP アドレス) を変更するには、"5400" の初期設定を変更し、再起動する必要がある。
- PC からの LAN 直結印刷(LPR ポート使用)とは、自動切換えが可能だが、"5400"プリンターのWeb ページ上で、初期設定を変更しておく必要がある。"ライン・プリンターの全て - 第11回- 日本語ライン・プリンターの初期設定-3" 参照

<<"5400-006"からの移行のための注意点>>
- Telnet5250E 接続では、OS/400 上の"自動構成"が可能です。使用していた"5400-006"のものと同じ OUTQ 名を継続して使用するには、既存の OUTQ や装置記述を、予め削除しておくと、新しい"5400"プリンターの"自動構成"がスムーズに行なえます。
- 初期設定の中の"半角文字セット"を"英数カナ文字"にするか、"英小文字"にするかで、半角カナ文字や、半角英小文字の文字化けに対応します。

2. PC 上のプリンター・セッション経由の印刷
複数の AS/400(LPAR) から自動切換えで印刷させるのに、適しています。
<<メリット>>
- PC 上に複数のプリンター・セッションを用意する、または、複数の PC 上にプリンター・セッションを用意することにより、複数の AS/400(複数の IP アドレス)からの印刷を、プリンターの設定を変更することなく、自動的に切り替えて行える。
- 外字は、プリンター・セッションを持つ PC のWindows外字を使用するので、プリンターに予め保存する操作が不要。
- AS/400 からの印刷の他に、PC 上の Windows アプリケーションからの印刷も、そのまま可能となる。

<<注意点>>
- PC を起動していないと、印刷できない。
- APW や DDS で指定したバーコードや、OCR-B フォント指定は無効になる。文字拡大指定にも制限がある。
- 印刷中の保留や取り消し操作はできない。
- 用紙切れや用紙ジャムというエラー・メッセージは、AS/400 端末画面に表示されない。
- 繰り返し印刷を防ぐために、プリンター・ドライバーのポート設定や、レジストリーの修正が必要になる。"繰り返し印刷の対策" 参照。


<<"5400-006"からの移行のための注意点>>
- もし、従来、"5400-006"が、プリンター・セッションを持つ PC と LAN 接続されていたのなら、"5400-006"と同じ IP アドレス を新しい"5400"プリンターに設定するだけで、移行は完了となります。(プリンター同士は互換性が高いので、ドライバーの入れ替えも不要です。)
- PC もプリンターと同時に新しくなるのであれば、PC 上では、
+ 5400 ドライバーの導入、設定("ライン・プリンターの全て - 第12回- 日本語ライン・プリンターのドライバー-1" 参照)
+ "標準 TCP/IP ポート"から"LPR ポート"への変更、それに対応したレジストリーの編集によるタイム・アウト値の変更
+ PDT ファイル、"ibm5577.pdt"を指定したプリンター・セッションの設定
以上が、必要です。
- 初期設定の中の"コードページ"を"932"にするか、"942"若しくは"943"にするかで、半角カナ文字や、半角英小文字の文字化けに対応します。

5400-006 プリンター外観

2016年8月14日日曜日

ライン・プリンターの全て - 第5回- 日本語ライン・プリンターの歴史-5

日本語ライン・プリンター・シリーズの中核となる中速モデルが、耐久性を向上した"5400-006"に代わって、一安心といったところでしたが、次の課題が新たに出てきました。
"5400-006"プリンターが発表された1998年の3年前は、Windows95が発売され、インターネットの普及が始まった年です。インターネットの普及に合わせて、企業の現場では、ネットワークは、IBM独自のTokenRing(トークン・リング)方式からEthernet(イーサネット)方式へ、プロトコルも、IBM独自の"SNA"から、"TCP/IP"へというように、メーカー独自規格から業界標準規格に移っていく傾向が始まりました。AS/400 の世界では、機器の接続が、"Twinax"接続から"ネットワーク"接続へ、徐々に移行していったわけです。AS/400 自体でも"Twinax"接続機構は、標準からオプションへと変わって行きます。

そうなると、ライン・プリンターの接続方式も"Twinax"接続ばかりではなく、PCOMM のプリンター・セッションを経由した方式が増えていきました。それは、プリンターに対して印刷データを生成して送信してくるのは、AS/400 ではなくなり、"ibm5577.pdt"というPDTファイルを参照して、5577 形式の印刷データを生成、送信するプリンター・セッションになることを意味します。

そのような状況の中で、お客様から問題として指摘され始めたのが、"Twinax 接続と比べて、プリンター・セッション経由では、罫線のある行の印刷が遅い。"という現象です。(因みに、ライン・プリンターで印刷が遅いというのは、印刷中に紙送りが止まることがあることを意味しています。)
プリンターの開発部門と一緒に原因を調べて判明したことは、次のとおりです。
  1. 罫線は縦24ドットのイメージ・データとして、プリンター・セッションから送られている。
  2. 実際に印刷する罫線は、縦2ドット程度の"黒イメージ"だったとしても、印刷データとしては、残りの縦22ドットの"白イメージ"もあるわけで、罫線の長さに比例して、印刷データ量が大きくなる。
  3. その印刷データを生成する PC 側の処理速度、ネットワークによる通信速度、受信したプリンター側での処理速度、全てに対して負担が大きくなって、印刷速度の低下を引き起こしている。(現在の PC の処理速度や、ネットワークの通信速度だったら考えられないことですが)
5577モード :2ドット幅の横罫線の印刷データ
しかし、プリンターの開発部門で対応できるのは、プリンター側での処理速度でしかありません。それでは効果を期待できませんので、対策として決まったのが、"Telnet5250E"接続の採用です。その狙いは、次の2点です。
  1. 標準のプロトコルとなっていく"TCP/IP"の規格の一部であって、Twinax接続とほぼ同じ操作性を実現できること。
  2. 罫線を引くためのコマンドが、AS/400 から発行されるSCS形式のコマンドとなるため、罫線の始点と終点を座標で指定する方式になる。そのため、罫線を印刷するためのデータ量の大幅な削減が期待できる。
SCSモード : 横罫線の印刷データ
"Telnet5250E"については、AS/400からの印刷 ~基礎編-3~をご参照ください。

"5400-006"プリンターでは、2000年に、LAN カードを Twinax カードとの選択オプションとして発表しました。新規発注分に対して選択できるだけでなく、使用中の"5400-006"プリンターに対しても、技術員による交換作業により、LAN 接続に変更できるようになっていました。
LAN カードは、プロトコルとして"Telnet5250E"だけでなく、"LPR"も初期設定で選択可能となっていました。"LPR"プロトコルに設定した場合には、"5577モード"か"ESC/P"モードに対応したプリンターとして使用できます。具体的には、Windowsが稼動するPCや、AIX が稼動するIBMワークステーション(RS6000)からの印刷にも使用できるということです。整理すると、Twinax接続の代わりにLAN カードを選択した場合、次の3種類の内1種類のプリンターとして使用できるということになりました。
  • AS/400 からTelnet5250Eを使った印刷(SCSコマンド)
  • PC や RS6000 からLPR/LPDを使った印刷(5577モード)
  • PC や RS6000 からLPR/LPDを使った印刷(ESC/Pモード)
実際に、この LAN カードを使った"Telnet5250E"によって、罫線による印刷速度の低下は解消しました。

2016年7月2日土曜日

QRコードの印刷方法 - 第1回 プリンターの持っているコマンドを使う -

2015年10月から連載した"バーコードの印刷方法"では、文字通り"バーコード"、つまり、バーを組み合わせた 1 次元コードを対象としたものでした。1 次元コードは、ほとんどが APW で指定できるという大きなメリットがありましたが、2 次元コード、国内で使用されている"QRコード"は、APW では対応されていません。そのため、AS/400上のアプリケーションから、"QRコード"付きの帳票を印刷するには、工夫が必要です。
QRコード印刷サンプル
"QRコード"は、製造業だけに限らず、様々な業種において、様々なアプリケーションに使用されています。最も大きな特徴は、格納できる文字数の多さと、文字に漢字などの2バイト文字にも対応していることと言えます。では、QRコードをプリンターで印刷するには、どうしたら良いでしょうか?

先ず、1 次元バーコードの時と同様に、プリンターの持っているコマンドをプリンターに送信し、プリンター内部で QRコードを作製して印刷する方式が考えられます。それには、どのような点に注意して、どのようにすれば良いでしょうか?
QRコードの"コマンド"と言いましたが、実は、QRコードを印刷するための"SCSコマンド"はありません。それが、APW で対応していないことの大きな理由となっています。逆に言うと、インパクト・プリンターなら、"5577モード"、レーザー・プリンターなら"PAGESモード"の中に、QRコードのコマンドがあるということです。

コマンドそのもののは、1次元コードのコマンドと同様に、
- 1B 7E 40(バーコード印字形式設定)コマンド
  によって、QRコードであること、QRコードの大きさを指定し、次に
- 1B 7E 42(バーコード印字)コマンド
  によって、印刷位置と格納するデータを指定するという構成です。
なお、QRコードの中に格納するデータの文字コードは、英数文字ならUS-ASCII、漢字ならShift-JISになります。
これらのコマンドやデータを、AS/400 上のアプリケーションからプリンターに送信できる接続方法と対応プリンターの組み合わせを整理すると、次のようになります。

1. PCOMM プリンター・セッション経由のPDT印刷
キャラクター・モードを使って、バーコード・コマンドをアプリケーション内に組み込みます。
インパクト・プリンターなら、5577系、レーザー・プリンターなら、PAGES系のプリンターは、キャラクター・モードにも、QRコードのコマンドにも対応していますので、使用可能です。
サンプル・コードをこちら(5577系, PAGES系)で公開していますので、ご参照ください。
しかし、5400系のライン・プリンターは、キャラクター・モードに対応していません。

2. HPT(ホスト印刷変換機能)を使った LAN 直結印刷
プリンター・セッション経由のPDT印刷と同様です。キャラクター・モードを使って、QRコード用のバーコード・コマンドをアプリケーションから発行するようにします。

3. Telnet5250Eを使った LAN 直結印刷
5400系のライン・プリンターでも、5577モードでは、QRコードを印刷するコマンドを持っていますが、5577系と異なり、キャラクター・モードに対応していませんから、同じ方法は使用できません。
しかし、Telnet5250E 接続の機能の中で、透過モードをサポートしていますので、これを使ってコマンドを送信するようにアプリケーションを組めば、通常の接続方法の下で、QRコードを印刷することができます。

ただ、以上のご説明でお分かりのように、プリンターにコマンドを送信してQRコードを印刷させるには、アプリケーションのプログラミングに大きな手間が掛かります。
そこで、次回は、プログラミングの手間の掛からない方法をご紹介します。

2016年3月21日月曜日

連続用紙への印刷から、カット紙への印刷に移行する -第2回 単純な縮小印刷-

連続用紙に印刷していたデータを、カット紙にそのまま縮小印刷する方法は、3つ考えられます。それぞれ設定方法が異なり、それに応じて運用する場合の操作方法が異なってきますので、どの方法を採用するかは、準備の手間と、エンド・ユーザーの意見を併せて検討して、決める必要があります。ここでは、カット紙を印刷するプリンターは、InfoPrint1000J等の、PAGESモードのプリンターを前提とします。
また、AS/400 からは、PCOMMのプリンター・セッションを使用したPDT印刷か、HPT機能を使用した LAN 直結印刷を想定しています。(5400エミュレーターIIを使用した Telnet5250E 接続の場合には、今までお話したように、5400エミュレーターIIで縮小設定を行うのが良いと思います。)
PAGES印刷条件の例

1. プリンターの初期設定で縮小印刷を指定する方法
これは、プリンターの"PAGES印刷条件"という初期設定メニューの中で、
- 用紙方向 : 縦/横
- 縮小率 : 連続用紙(15"x11")->A4/B4、縦横同じ比率で50%まで1%刻み
- 余白 : 長さを上下左右独立して指定
- 両面印刷 : する/しない、する場合には長辺綴じか短辺綴じの指定
といった各項目を、用紙トレイ毎に設定しておく方式です。
一度、操作パネル上で設定しておくだけで済みますので準備は簡単ですが、用紙トレイ毎にこれらの設定の組み合わせが異なる場合は、印刷する際に、別の方法で用紙トレイを指定しないとなりません。用紙トレイを指定するには、次にお話しする"2."や"3."の方法を採らざるを得ませんので、それであれば、縮小の指定も一緒に行う方が良いということになります。
そのように考えていくと、この方法は、用紙トレイの少ない場合にのみ有効な方法と言えると思いま
す。
もし、"2."や"3."の方法と併用したとしても、操作パネルでの初期設定は、プリンターの内部処理の優先順位が最も低くなっていますので、"2."や"3."の設定が有効となります。

2. PDT ファイルや、リモートOUTQの設定の中に縮小設定のコマンドを埋め込む方法
縮小設定や、余白の設定のための PAGES コマンドを、プリンター・セッション経由の場合は
プリンター・セッション経由の印刷 第2回 - PDFファイルの編集 -
の回でお話した方法で、HPT機能を使った LAN 直結印刷の場合には、
HPT機能を使った印刷 - WSCSTについて-
の回でお話した方法で埋め込むことで、指定することができます。
この場合、複数の設定の組み合わせ(縮小の比率や余白の値)があっても、1つ1つの設定の組み合わせに対応した OUTQ が作られることになりますので、ユーザーは、印刷先の OUTQ を切り替えることで、縮小の設定を切り替えて印刷するという運用を実現できます。
コマンドを埋め込む際の注意点は、
- 縮小率を指定するコマンドは、必ず、用紙トレイ指定のコマンドの後ろで指定すること
- バーコード・コマンドを使ったバーコード印刷のあるデータを縮小する際には、必ず、縦横同じ比率の縮小率を指定すること(連続用紙->A4/B4という縮小率の指定は、縦横の縮小率が異なるため、バーコードの位置や大きさが正しく印刷されません。)
この方法であれば、同じプリンターに対しても、ユーザーが印刷先に指定する OUTQ さえ正しく指定していれば、様々な種類の設定を切り替えて印刷させることができるというメリットがあります。

ユーザーによる OUTQ の切り替えも難しいような場合には、次の"キャラクター・モード"を使って、印刷データにコマンドを埋め込むという方法が有効になりますが、その説明は長くなりますので、次回に譲ります。
 

2016年2月6日土曜日

LAN 直結で双方向通信する印刷方式"Telnet5250E" - 第1回 -

1999年のiSUC(アイザック、1年に1回行なわれる AS/400 ユーザーの交流・情報交換会)で、"AS/400 印刷ガイド(中小型プリンター編)と称して行なったセッションの資料を読み返してみると、その中に"パフォーマンス・アップするには"というテーマのページがあります。そこでは、ライン・プリンターの"パフォーマンスが遅い現象"として、次の事例を記載しています。
  • <現象> AS/400 から、PC 経由で、罫線の多い帳票を印刷した時のパフォーマンスが、Twinax 接続時に比べて低下した。
  • <条件> PC の OS は、Windows95/98。PC とプリンターはパラレル接続。PDT印刷。
  • <対策> PC とプリンターの接続をパラレル接続から、LAN 接続に変更する。
  • <該当機種> "5400-006"、"5407-011"、"5417-011"
  • [解説] Twinax 接続の時には、罫線は、制御コード(コマンド)としてプリンターに送られてきます。しかし、PC経由の場合、PCOMM プリンター・セッションで、罫線はイメージ・データに変換されるため、データ量が非常に大きくなります。更に、Windows95/98 では、パラレル・インターフェイスでのデータ処理の優先順位は、他の処理に比べて低くなっています。そこで、優先順位が高いLANポート経由のデータ処理に変更することによって、パフォーマンスの向上が期待できます。
1999年iSUCセッション資料
今から見ると、ライン・プリンターの接続方式は、Twinax 接続だったこと、罫線がイメージ・データに変換されてデータ量が大きくなることが、印刷速度に影響すること、PC とプリンターの接続はパラレル・インターフェイスが標準だったこと、(ここには記載されていませんが)Windows95/98 では、LPR 印刷は標準機能ではサポートされていないため、何かLPR 印刷用のツールを導入する必要があったこと等、正に隔世の感があります。

当時、AS/400 側でも、IBM としての方針もあってと思いますが、Twinax 接続は標準ではサポートされず、徐々にオプションとなっていきました。そうなると、ライン・プリンターを中心とした、AS/400 直結型のプリンターも、LAN(実質的には、TCP/IP) 接続する必要性が高くなりました。その場合、Twinax 接続の世界で、ユーザーが永年慣れ親しんで、当たり前となっていた操作性を落とさずにLAN 接続に移行できることが求められます。その結果、ライン・プリンターを初めに採用されたのが、"Telnet5250E"です。
"Telnet5250"は、元々、TCP/IPの機能の一つとして、5250 端末の画面表示用に、IETF(The Internet Engineering Task Force)で決められた規格です。
https://www.ietf.org/rfc/rfc2877.txt 
Twinax 接続は、IBM が独自に決めた規格でしたが、Telnet の規格の決まった時代は、最早、規格を IBM が決めるのではなく、オープンな場で決める時代に変わったと言えるでしょう。
ただ、プリンターにはそのまま適用することはできません。何故なら、Twinax 接続では実現できていた
  • 用紙切れやジャム等のプリンターのエラー状態を OS/400 に通知する。
  • エラー・メッセージが表示された時に、"メッセージ応答"として、ページ範囲を指定して印刷再開する。
  • スプール送信中に、印刷の"保留"や"取り消し"を指定する。
  • もちろん、接続した時には、OS/400 上に装置記述が自動構成される。
といった機能も盛り込む必要があります。そのために拡張されたことを明示するために、プリンター用には、Telnet5250E(Enhancement)と呼んでいます。

ライン・プリンター"5400-006"用のオプション・カードを皮切りに、"5400"シリーズのライン・プリンターの各種モデル、連続用紙用のレーザー・プリンター"Infoprint 250(5300-025)"、小型のドット・プリンターや、PAGES モードを持つ小型レーザー・プリンター用のオプションである"5400エミュレーターII"等、AS/400 から印刷用に使用されるプリンターでは、Telnet5250E 接続となってきたわけです。
次回は、Telnet5250E の特徴や注意点をお話します。

2015年11月22日日曜日

バーコードの印刷方法 - 第2回 コマンドを使う、もう一別の方法 -

前回お話した"APW"のバーコード・パラメーターを使う方法は、対応できるプリンターの種類や接続方法の条件がありました。また、毎ページ同じ場所のデータを、毎ページ同じ場所に印刷するには良いのですが、それらがページ毎に変化する場合には、対応できません。
そこで、プログラミングが必要となる、手間の掛かる方法ですが、それらの制限を緩和できる方法を、今回はお話します。

1. "5400プリンター拡張コマンド(テキスト・コマンド)"を使用する
このコマンドの仕様は、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/download/manual/lineimpact/pages_command.html
考え方としては、通常のデータでは無いような3文字("!#%"か"!@&")の後に、「バーコード印刷」「バーコード設定」のコマンドを「文字データ」として、印刷データの中に組み込むと、プリンターがそれらを、文字ではなくコマンドと解釈してバーコードのイメージを生成して印刷するというものです。
インパクト・プリンターでのバーコード印刷サンプル
特徴は、次のとおりです。
- コマンドの構造が簡単であること
- コマンドを文字として入力しますので、スプールを表示した時に、そのまま文字として表示されることにより、後で確認し易いこと
- バーコードの他に、文字拡大、OCR-B フォント指定も指定できること

一方、注意点は
- 使用可能なプリンターは、5400 シリーズのライン・プリンター(モデル006、S06を除く)と、5400エミュレーターIIを使ってTelnet5250E接続した 5577 系とPAGES対応のプリンターになること

- 5400 プリンターや 5400 エミュレーターII の初期設定で、先頭の3文字を設定すること
- コマンドを記述した場所の影響で2行に跨ってしまうと、コマンドの中に「CR+LF」(復帰+改行)が含まれてしまうことになりますので、避けた方が良いこと(次の2つの方法にも共通)
- コマンドと言っても、印刷されない文字データという扱いですから、1ページの中の印刷する文字の無いところに配置すること(次の2つの方法にも共通)
- 特にバーコードを印刷するためのコマンドは、その後、改行することで実行されますから、最後に必ずLF(改行)を送信すること(次の2つの方法にも共通)

です。

2. "//LA// コマンド"を使用する
5557シリーズと、5577-H05/G05 プリンター単体の場合は、5557拡張制御コマンド"//n// コマンド"を使用できます。
バーコード用のコマンドは、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/download/pdf/5577g05h05_command_enlargement.pdf
http://www.ricoh.co.jp/pps/download/pdf/5577g05h05_command_notes.pdf
コマンドの考え方や使い方は、「1」のコマンドのものとさほど変わりません。
注意点も
- 使用可能なプリンターは、5557 シリーズと、5577 シリーズでも"H05""G05"モデルののドット・プリンターになること
- プリンターの初期設定で「プリンター・タイプ」を「5557モード」に変更すること
- コマンドの中に、何バイトのコマンドかを示す「カウント」を指定しますが、コマンド全体が2行に跨ることは避けること
です。

3. "キャラクター・モード"を使用する
"キャラクター・モード"は、IBM ブランド時代から、ドット・プリンターでも、PAGES モードのレーザー・プリンターでもサポートしてきた機能なので、上記の2つの方法よりも使用可能なプリンターの種類は多くなります。プリンターが解釈できるコマンドを、文字データとしてプリンターに送信するという基本的な考え方は同じで、異なる点は
- 先頭に付加する文字列は、”&$%$"か、"$?!#"の4文字であること
- プリンターが、コマンドやデータとして解釈する部分はその後に続く何バイトかを、4文字の後に2バイトの16進数で追加します。(2文字が1バイトです。この4文字は数に含めません。)
対応機種や実際のコーディングのサンプルは、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/support/techinfo/character_mode_jp.html
注意点は
- プリンターの初期設定で、先頭の4文字を設定する必要があること
- ライン・プリンターの5400シリーズでは、"5577モード"で使用する場合であっても、キャラクター・モードはサポートしていないこと
(従って、QRコード用のコマンドは、"5577モード"で持っていますが、下で述べる"透過モード"を使わないと、AS/400 からは送信できないということになります。)
他は、上の2つの方法と同様です。


以上の3つの方法は、文字データとして、PC 用のプリンターのコマンドをAS/400から送信し、プリンターの機能としてコマンドとして解釈し、処理する方法です。
そのため、プリンターのモデルによる制約がありますが、もう一つ別の方法として、16進コードで、PC 用のプリンターのコマンドを送信する"透過モード"という方法があります。
こちらの方が、PCOMM のプリンター・セッションの機能として、印刷データの中に16進コードで含まれたプリンター用のコマンドを、プリンターに対してコマンドとして送信する方式なので、プリンターのモデルやメーカーの制約は少なくなります。
しかし、16進で記述することになりますので、文字データして記述するよりも、ハードルは高くなると思います。
この方法に関しても、下記のサイトで詳しい情報を公開しています。
http://www.ricoh.co.jp/pps/support/techinfo/transparent_mode_jp.html

考え方は、キャラクター・モードと似たところがあって、先頭に"03"、そして送信するコマンドのバイト数を付加して、AS/400から送信すると、プリンター・セッションでは、"03"を外し、バイト数の値で指定された長さのコマンドをプリンターに送信するというものです。
従って、あくまでもプリンター・セッション経由、PDT印刷が前提となります。

どの方法にしても、プログラミングのスキルが必要になりますし、実際に印刷しながらの調整は必要になりますので、もっと効率の良い簡単な方法はないのか ? という疑問も出てきます。
そこで、次回は画面上でバーコードを大きさや場所を簡単に指定できるソリューションをご紹介します。



2015年9月22日火曜日

HPT機能を使った印刷 - コマンド変換機能の制約 -

PCOMM の PDT印刷では、PDT ファイルの定義に従って PCOMM のプリンター・セッションが、AS/400 から受信した印刷データの中の制御コードを、5577 形式や PAGES 形式に変換してプリンターに送信します。HPT 機能を使った LAN 直結印刷の場合も同様のコマンド変換を、OS/400 が行ないます。そのプログラムのソース・コードは共通という話を以前に聞いたこともあります。
ただ、実際には、両者の間には次のような違いがあります。

1. HPT 機能では、"AFP"プリンター用のデータを PAGES 形式に変換して、PAGES プリンターに印刷できますが、PCOMM 経由の印刷では対応していません。
"AFP"プリンターに関しては、AS/400 ユーザーのお客様では使用実績が多くないため、このブログでは触れませんので、ここで簡単にご紹介します。
InfoPrint4100


InfoPrint SP8200
"AFP(Advanced Function Presentation)"プリンターには、連続用紙対応の大型高速レーザー・プリンターや、カット紙対応の高速レーザー・プリンターがあります。高速印刷であることは、大量印刷を意味し、大量印刷であることは、ページ抜けや、重複ページの印刷の防止といった"印刷管理"機能を必要とす
ることを意味します。また、Windowsアプリケーションからの印刷のように自由な、文字の種類や大きさ、配置の印刷を、AS/400 から直接行なえるメリットがあります。
しかし、AS/400 にも対応する様々な"帳票ソリューション"(我がMapping Suiteもそうですが)が提供され、プリンターの状況監視も、TCP/IP の世界では"SNMP"プロトコルとそれに対応したツールが実現する今となっては、"AFP"の優位性も少なくなってしまったと言えるかもしれません。
リモートOUTQ の設定で、"メーカー・タイプ及び型式"に"*IBMPAGES300"を指定することで、印刷データが"AFP"プリンター用の場合は、OS/400 が、PAGES コマンドの中のイメージ送りコマンドに変換します。つまり、"AFP" のデータをイメージに変換して印刷する訳です。
この場合、LPR 印刷になりますから、本来の"AFP" プリンターで行なえたプリンターとの双方向通信による印刷管理はできません。プリンターの状態に関わりなく、印刷データを送信したら終了です。
2. "APW"やプリンター・ファイルで指定した次のパラメーターは、5577 形式や PAGES 形式への変換に制約があります。("APW"については、今後、機会を改めてご紹介します。)
  • "APW"のバーコード・パラメーター:PCOMM プリンター・セッションでは変換できません。HPT 機能を使った印刷では、"MRGAPW" の際の"DEVTYPE"に"*SCS"を指定し、HPT では "PAGES" モードへの変換を指定した場合のみ、変換されます。
  • 角丸付き罫線:PCOMM プリンター・セッション経由の場合は、"MRGAPW" の際の"DEVTYPE"に"*PAGES"を指定した場合のみ、HPT では "PAGES" モードへの変換を指定した場合のみ、変換されます。("DEVTYPE"は"*SCS"でも"*PAGES"でも共通)
  • 網掛け:PCOMM プリンター・セッション経由の場合は、"MRGAPW" の際の"DEVTYPE"に"*PAGES"を指定した場合のみ、HPT では "PAGES" モードへの変換を指定した場合のみ、変換されます。("DEVTYPE"は"*SCS"でも"*PAGES"でも共通)
  • 文字拡大(2 x 4 と 4 x 2): "DEVTYPE"で"*PAGES"を指定し、PCOMM プリンター・セッション経由の場合のみ変換されます。
  • 文字拡大(3 x 3):"DEVTYPE"で"*SCS"を指定し、HPT で "PAGES" モードへの変換を指定した場合のみ、変換されます。
  • 文字拡大(4 x 4):"DEVTYPE"で"*SCS"か"*PAGES"を指定し、HPT で "PAGES" モードへの変換を指定した場合のみ、変換されます。
上記以外の"APW"のパラメーターで通常使用されるものは、プリンター・セッション経由の印刷でも、HPT 機能を使った印刷でも変換されますので、コマンド変換で最も注意する必要のあるのは、バーコード・パラメーターになるのではないでしょうか ? 

2015年9月1日火曜日

HPT機能を使った印刷 - WSCSTについて-

"WSCST"(ワークステーション・カスタマズ・オブジェクト)とは、随分と長い名前ですが、OS/400 が印刷データを変換する時に参照するテーブル(対照表)のようなもので、ちょうど、プリンター・セッション経由(PDT 印刷)における PDF ファイルに相当するものです。PAGES モードのプリンター用のサンプルが、下記のサイトに、詳しい情報と共に掲載されていますので、ご参照ください。
http://www.ricoh.co.jp/pps/support/techinfo/dwgwscst_jp.html
PDF ファイルのように、使い方に合わせて編集するソース・ファイル
http://www.ricoh.co.jp/pps/download/txt/pages1_300.txt
の中をご覧いただくと、次のような箇所があります。
:INITPRT
      DATA ='1B7E010000'X                   /*初期化設定*/
            '1B7E0300013C'X                 /*行ピッチ設定6LPI */
            '1B7E02000132'X                 /*文字ピッチ設定10CPI */
            '1B7E5A000403AE0000'X.          /*コードページ変更942 */

この":INITPRT"で始まるこのブロックが、PDF ファイルの中の "START_JOB=" に該当します。
つまり、このサンプルでは、OS/400が変換した印刷データの先頭に、「初期化」「行ピッチ設定」「文字ピッチ設定」「「コードページ変更」コマンドを追加する指定となっています。
その他は、例えば
:ADDDRWTBL.
       :ADDDRWTBLE
           NUMBER = 3
           DATA = '1B7E4600050000030000'X.  /*用紙トレイ選択 第3*/
といったように、PRTF の中のドロワー(給紙トレイ)指定の各値を、PAGES モードのコマンドにどのように置き換えるかの指定だったり、
:ADDDRWTBLE
           NUMBER = 123                     /* B4縮小 縦*/
           DATA = '1B7E4600050000120000'X   /*用紙トレイ選択B4 */
                  '1B7E51000102'X           /*ページ様式設定 連→B4 */
                  '1B7E50000100'X           /*メディア座標原点 左上*/
                  '1B7E53000A00000000000000000000'X. /*論理原点 0, 0 */
といったように、ドロワーの値に"123"を指定すると、連続用紙サイズから B4 サイズに縮小し縦長に印刷する独自の設定を追加することができます。
もちろん、PRTF のパラメーターを活用できるようにまで WSCST を編集しなくても、":INITPRT" の中に指定のコマンドを追加するだけでも十分使用可能ですが、編集したテキスト形式のファイルをOS/400に送信して、CRTWSCST コマンドを使ってオブジェクトに変換しないとならない点が、PDF ファイルを PDT ファイルにコンパイルするよりも面倒かもしれません。
もっと簡単に使用するには、プリンターの初期設定(IP1000J PAGES モデルでは「PAGES 印刷条件」メニュー)で、縮小率や用紙方向を指定する方法でも良いわけです。

注意) IP1000J プリンター PAGES モデルでは、上記の":INITPRT" の指定では不十分で、実際に印刷させると、RPCS モードでのデータ・エラーが発生するという問題が発生しました。これは、プリンターが、PAGES モードに変換された印刷データを受信したにも関わらず、ドライバー印刷用の RPCS モードのデータと勘違いしてエラーになったのが、直接の原因です。そこで、印刷データの先頭にプリンターを PAGES モードに切り替えるコマンドを追加することで、この問題は回避できました。具体的には
:INITPRT
      DATA='1B7E12000111'X /* PAGES 選択     */
を追加しました。これはちょうど、PAGES 用の PDF ファイルの中の "START_JOB="の先頭にも
CDS EQU 1B 7E 12 00 01 11                       /* PAGES 選択     */
で定義された "CDS" があることと同じ原理です。

2015年8月26日水曜日

HPT機能を使った印刷 - リモートOUTQの作成 -

今回は、先ず、LPR 印刷に相当するリモートOUTQからの印刷のために、リモートOUTQを実際に画面を追いながら作っていきます。サンプルとして、OS/400 V7R1 上で、PAGES モードのレーザー・プリンターへの直接印刷用のリモートOUTQ を作ります。
CRTOUTQ初めの画面
リモート・システムと待ち行列の指定
  1. 5250 端末画面で、"CRTOUTQ"というコマンドを実行します。左の画面は"QUSRSYS"というライブラリーに、"IP1000J"というリモートOUTQを作成する場合のサンプル画面です。それらの指定は任意ですが、"リモート・システム"には、必ず"*INTNETADR"を入力して実行キーを押します。(F4 キーを押すと、"*INTNETADR"以外にも選択肢が表示されます。)
  2. そうすると、"リモート印刷装置待ち行列"欄以下が表示されますので、そこに、宛先プリンターのLANカード固有の値を入力します。画面の"lp"(半角小文字)は、通常、多くのレーザー・プリンターや複合機用に使用できるようです。(Windowsの場合の、Standard TCP/IPポートのパラメーターである「キュー名」が、これに該当します。)
  3. 次のページでは、"接続タイプ"には、必ず"*IP"を、"宛先タイプ"には、必ず"*OTHER"を指定します。"ホスト印刷の変換"はデフォルトの"*YES"になっていると思いますので、カーソルをここへ移動して実行キーを押すと、追加のパラメーターが表示されます。
  4. *IBMPAGES300を指定
  5. ここで、次に表示される"メーカー・タイプ及び型式"で、印刷データをどのプリンターのモードに変換するかを指定します。プリンター・セッション経由の印刷では、PDT の選択に該当するわけです。F4 キーを押すと実に多くの選択肢が表示されますが、ここでは、PAGES モードのプリンター用として、2番目の画面に出てくる"*IBMPAGES300"を選択します。
<参考情報>
  •  同じ画面に"*IBM5575"があります。5577 モードに変換するには、これを選択します。("*IBM5575AMOV"は、テストしたことがありません。)
  • PAGES と名前が付いた選択肢が他にもありますが、今までの実績では"*IBMPAGES300"がお勧めです。
  • 他に日本語の印刷に対応した選択肢としては、"*CANLIPS3"があり、これは CANON 社のレーザー・プリンター用ですが、これもテストはしたことがありません。
CANON LIP3用の指定
  • もう一つは、"*ESCPDBCS"です。これは、ESC/P モードのインパクト・プリンター用ですが、これもテストはしたことがありません。
  • インパクト・プリンター用としては、他に、NEC 社プリンター用として"*NECPCPR201"がありますが、今後の修正は無いことが IBM 社のサイトに記載されています。
  • ESC/P用の指定
  • PCL モードのレーザー・プリンター用として、"*HP"で始まる名前のものが多数あります。このモードで日本語を印刷するには、プリンターには日本語用の内蔵フォントがありませんので、OS/400 からフォント・イメージを持った印刷データを送信する必要があります。(HP 社のレーザー・プリンターは日本語内蔵フォントを持っているようですが。) しかし、OS/400 自身もそのままでは日本語フォントのイメージを持っていませんので、AFP プリンター用のフォント・ライセンスを購入(導入)していただき、そのフォントを使用するように指定する必要が出てきます。

2015年8月10日月曜日

プリンター・セッション経由の印刷 第5回 - PDT印刷の考え方 -

PAGESモードのプリンターを例に、PDT 印刷のお話をしてきましたが、PDT 印刷そのものに対する考え方をここで整理しておきたいと思います。
  1. PDFファイルの中の"START_JOB="の後ろに並べたコマンドが、AS/400からプリンター・セッションに送られてくる印刷データの先頭に付加されるとお話しました。それは、印刷結果の全体に対する制御しかできないということを意味しています。つまり、用紙トレイの指定とか、縮小率の設定とか、両面印刷か片面印刷かという制御は可能ですが、ある特定のデータをバーコードにして印刷するとか、ある特定の文字のみを横倍角で印刷するといった制御はできないということです。
  2. 同様に、プリンターの制御コード(コマンド)の使い方を正しく知った上で、それを 3 文字の英数字に置き換えて、"START_JOB="の後ろに並べる必要があるということです。例に使用した PAGES コマンドの場合、サンプルの PDFファイルでは、"START_JOB=" の後ろのコマンドの並び方は、"START_JOB=CDS INZ SEL SA4 FA4 SRO"となっています。細かく見ると、
    • 初めに"CDS"によって、プリンターを"PAGES"モードに設定する。
    • その後、"SA4"によってA4トレイを指定してから、"FA4"によって縮小率を指定し、"SRO"によって用紙方向を指定しています。これらの指定はこの順序で指定しないと、有効になりません。それはプリンターの内部制御との関係でそうなっているのですが、実際に試してみないと、なかなか分かり辛いところだと思います。
  3. "PAGES"は、IBM 時代に 5577 モードのコマンドとの互換性を考慮して、レーザー・プリンター独自の機能(トレイ指定、縮小等)をコマンドとして追加したものの総称ですが、レーザー・プリンターのメーカーには、PAGES 同様に 5577 モードのコマンドに各社独自の規格でレーザー・プリンターのコマンドを追加し、「5577エミュレーション」として販売している会社が多くあります。これらのレーザー・プリンターに対して PDT印刷を行なうには、PDT印刷の原理から考えると、次のようになるかと思います。
    • 基本となるPDFファイルには、「ibm5577.pdf」を使用する。
    • それに対して、そのプリンターの 5577 モードからの拡張コマンド(トレイ指定、縮小等)を BEGIN_MACROS の下で、3文字の英数文字に置き換え、それを"START_JOB="の後ろに追加する。
    • その際に、コマンドを並べる順番に注意が必要。
    • メーカーの拡張コマンドの仕様書を入手する。
  4.  別の機会にもう少し詳しくお話しますが、プリンター・メーカー間である程度共通の"PJL"コマンドがあります。PDT 印刷において、"PAGES"プリンターの場合、PAGES のコマンドでは持っていない機能を"PJL"コマンドを使った指定で補完することができます。次のサイトで公開されているマニュアルの26ページから説明されています。これも基本的な考え方は共通で、「PJL コマンドを正しく知る」ことと「英数 3 文字に PJL コマンドを置き換えて"START_JOB="の後ろに並べる。ただし、PJL コマンドは終了を明示する必要があるので、"END_JOB="の後ろにも、PJL コマンド終了を追加することが必須です。このマニュアルの例では、印刷された用紙にパンチ穴を開ける場合や、ステープル止めを行なうための記述が書かれています。パンチ穴を開ける場合は、用紙の長辺にするか短辺にするか、ステープル止めも、用紙の角にするか、長辺や短辺に2箇所止めるかといった指定も併せて行ないます。 http://www.ricoh.co.jp/pps/download/pdf/pagescard_g1797838_100506a.pdf
<余談>1980年代後半には、私はプリンターの開発部隊で、製品企画に携わっていました。この頃は、小型のデスクトップ型レーザー・プリンターが発売され始めた頃で、PS/55 用にもレーザー・プリンターが求められていました。当時のアプリケーションは、DOS や OS/2 上で稼働するもので、印刷のためには、プリンターの持っているコマンドをアプリケーション自身が直接生成して、プリンターに送信する方式しかありませんでした。一方、レーザー・プリンターを発売するメーカーはどこも、自社独自の制御コマンドを作って、それをアプリケーション・メーカーにサポートしていただき、その数を増やすことで、自社コマンド規格を業界標準に位置付けることを狙っていました。IBM 社内でも、自社OSやソフトである"J-DOS"や"OS/2"、"DOS文書(ワープロ)"や"MultiPlan(表計算)"、OS/2 用の"Smartシリーズ"は当然のこと、他社ソフトも含めた多くのアプリケーション・ソフトに PAGES をサポートしていただくことが、レーザー・プリンターの製品発表の条件とされ、企画担当者である私は、大分苦労した記憶があります。
しかし、そのような方式ではアプリケーション・メーカーの負担ばかりが大きく、その後、Windows が現れたことによって、アプリケーション・ソフトはWindowsにだけ対応すれば良くなりました。そして、今度はプリンター・メーカー側に、Windowsのバージョン・アップに対応して、自社規格のコマンドを使ったドライバーの開発を続けていかなくてはならないという負担が移った訳です。なお、ちなみに海外では、初めに小型レーザー・プリンターを発売した HP 社のコマンド"PCL(Printer Control Language)"が、見事に業界標準の位置を占めることに成功したため、日本のプリンター・メーカーも海外製品では、"PCL"を標準でサポートしています。

2015年7月28日火曜日

プリンター・セッション経由の印刷 第4回 - 追加の設定 -

前回の続きですが、印刷の度に、START_JOB= 以下に記述したコマンドを印刷データの先頭に送信するようにするには、プリンター・セッションのワークステーション・プロファイルの編集が必要です。具体的には次の手順になります。
ワークステーション・プロファイルをメモ帳で開く
  1. コンパイルして作成されたPDTファイルを指定したプリンター・セッションを、独自の名前を付けて保管します。保管されるファイルが、ワークステーション・プロファイルと呼ばれるもので、拡張子は、".ws"です。私のPC上のCA V6.0では、C:\Users\ログイン・ユーザー名\AppData\Roaming\IBM\Client Access\Emulator\private に保管されています。
  2. プリンター・セッションは一旦閉じてください。
  3. このファイルをメモ帳等のテキスト・エディターで開きます。開くと表示のような画面が現れますので、その中に[printers]と書かれた行を見つけます。
  4. その下の行に Use_Default=Y という1行を追加します。
  5. そのファイルを上書き保存して、プリンター・セッションを起動してください。
この1行を追加することによって、プリンター・セッションからの印刷データの先頭には、毎回、自分で設定したコマンドが追加されて、プリンターに送信されます。

他に注意が必要なケースは、1ページの行数が66行を越えるデータの場合です。PDFファイルに戻りますが、メモ帳で開くと、/* Session Parameters */の直下に"MAXIMUM_PAGE_LENGTH=066"という行があります。この行の値が、デフォルトの"66"のままの場合、1ページの中のデータの行数が67以上あると、66行目までしか印刷されません。もし 1 ページに 66 行以上の行数がある場合には、この値を大きくしてください。なお、改ページする行数は、あくまでもプリンター・ファイルで定義されているのであって、ここの値ではありませんから、1ページの行数を越える大き目の値にしておけば良いわけです。

また、今までのトラブル対応の経験の中で判明した、追加設定には次のものがあります。これらは当時のPCOMMやCAのバージョンにおいて有効だったものですが、その後のバージョンでも通用するかどうかは、確認していません。
  • 透過(ASCII Transparent)モードを使用する場合
いずれもう少し詳しくご紹介しますが、5577 モードや PAGES モードの PC プリンターに印刷する場合に、AS/400上のスプール・データの中に、5577 モードや PAGES モードのコマンドを16進コードで埋め込むことができます。これを「透過モード」と言いますが、プリンター・セッション経由で印刷する場合には、次の設定が必要です。
- プリンター・セッションのワークステーション・プロファイルの中の[printer]の下に、 ATRN=Y を1行追加して、プリンター・セッションを再起動します。
  • 新JISフォントを内蔵していない古いモデルのプリンターで、新JIS並びの文字で印刷する
2015年4月13日の投稿で申し上げたように、新JISと旧JISで文字コードが入れ替わった文字の組み合わせが29組あります。
http://as400printhelp.blogspot.jp/2015/04/jisjis.html
現在使用されているプリンターで、新JISに対応していないような古いものは無いと思いますが、もし、そのようなプリンターでも新JIS並びに合わせた文字で印刷するには、次の設定を行います。
- プリンター・セッションのワークステーション・プロファイルの中の[printer]の下に、 OldJIS=Y を1行追加して、プリンター・セッションを再起動します。

2015年7月21日火曜日

プリンター・セッション経由の印刷 第3回 - PDFファイルのコンパイル -

PDFファイルの編集が完了したら、既存の PDF ファイルとは別名で、同じ"Pdfpdf"というフォルダーの下に保存します。次はこれを PDT ファイルにコンパイルすることで、初めて PDT 印刷に使用できるようになります。手順は次のとおりです。
"PDT の選択"ボタン
1. プリンター・セッションの画面でプリンター設定画面を開きます。

2. "PDT ファイルの使用"欄にチェックを入れて、"PDT の選択"ボタンを押します。









"PDF の変換"ボタン

3. "PDT ファイルの選択"画面が表示されるので、"PDF の変換"ボタンを押します。









PDF から PDT への変換

4. "PDF ファイルから PDT ファイルへの変換"画面が表示されるので、"Pdfpdt"フォルダーに保管した PDF ファイル(ここではpages.pdf)を指定して、"変換"ボタンを押します。





正しく変換された場合


5. "PDF ファイル変換ユーティリティー"の画面上で、"テーブルは正しくコンパイルされました"というメッセージが表示されたら、"OK"ボタンを押します。も し、エラーが発生したら、編集した PDF ファイルを開いて、中のコマンドや記述のしかた(1バイトずつスペースを挟んで記述されているか等)をチェックしてください。
生成された PDF の選択



6. "PDT ファイルの選択"画面が自動的に表示されるので、コンパイルされた PDT ファイル(ここでは pages.pdt、PDF ファイルと同じファイル名で、拡張子が pdt になります。)を指定して"OK"ボタンを押します。

編集した PDF ファイルをコンパイルして PDT ファイルを作成し、PDT 印刷用に指定するのはここまでですが、実際にはこれだけでは不十分なケースが多くあります。ほとんどのレーザー・プリンターでは、AS/400 からの印刷だけではなく、Windows のアプリケーションからのドライバー印刷にも自動切換えで使用されます。また、AS/400 からの印刷でも、全てが同じ余白の設定や縮小率の設定では対応しきれないので、何種類かの設定に対応するための PDT ファイルを用意して、それら PDT ファイルに1対1で対応するプリンター・セッションを切り替えて印刷するケースも多くあります。
ところが、PDT 印刷の標準では、PDF ファイルの中で指定した、印刷データの先頭に付加するコマンド
START_JOB=CDS INZ SEL SA4 FA4 SRO P10 LL6
は、1回しか印刷データに付加されません。そのため、例えば、pages.pdt を使ったPDT 印刷の後、Windows ドライバー印刷を行って、プリンターが Windows ドライバー用のモードに変わってしまうと、次の AS/400 からの印刷では、プリンターは Windows ドライバー用のモード のままで切り替わらない可能性が出てきます。また、同じ AS/400 からの印刷でも他の設定で印刷すると、その設定のままの状態となっています。
そこで、印刷データの先頭に付加したコマンドを、毎回、プリンターに送信する必要が出てきます。


2015年7月15日水曜日

プリンター・セッション経由の印刷 第2回 - PDFファイルの編集 -

前回お話したPDTファイルは、プリンター・セッションのプログラムが使用するものなので、中身は読めませんが、元になるPDFファイルは、ユーザーが自分の使用目的に合わせて編集できるようになっています。インパクト・プリンターを使用している場合には、通常はそのままの状態で使用しますが、独自に編集する必要があるのは、次のような場合が考えられます。
  1. 1ページの行数が66行よりも多いデータを印刷する。
  2. 前トラクターと後ろトラクターにそれぞれ2種類の連続用紙をセットして、それを操作パネルのスイッチを使って手動で切り替える代わりに、OUTQを選択することで自動的に切り替える。
これらに対応するための方法は、基本的にレーザー・プリンター向けの編集方法と考え方は同じですから、この後はレーザー・プリンターを使用する際の編集方法に話を進めます。
レーザー・プリンターは、ページ・プリンターという呼び方もあるように、ページ単位で印刷処理します。つまり、プリンター内で1ページ分の印刷データが準備できてから印刷動作を開始します。その結果、インパクト・プリンターではできない
  • 縮小印刷
  • 用紙方向の縦長・横長指定
という機能がありますし、更にカット紙用のレーザー・プリンターでは
  • 用紙トレイ選択・排紙トレイ選択
  • 両面印刷(長辺綴じ・短辺綴じ指定)
  • 上下左右の余白設定
といった機能を持っていて、これらを組み合わせた設定をPDTファイルに組み込むことで、自動的に希望の印刷結果が得られるようになります。
では、早速、PAGESモードのプリンター用のPDFファイルを使ってご説明します。PAGESモード用のPDFファイルは、PCOMMやCA標準の ibm5585.pdf を元に作られたものが、下記のサイトで公開されています。
http://www.ricoh.co.jp/pps/download/utility/pdt_pdf.html
このファイルを PC にダウンロードして、メモ帳等のエディターで開きます。(ダブル・クリックするとAdobe Reader が起動してエラーが表示されますので、ご注意ください。)
上から順番に見ていくと、すぐに"BEGIN_MACROS"があります。
(/*と*/で挟まれた部分は、コメント・アウト、つまり説明用のテキストで、機能には関係しません。)
初めの"NUL EQU 00"は、このPDFファイルの中では、"NUL"という3文字は、16進コードのコマンド"00"を表わしているという定義になります。つまり、任意の英数3文字 EQU(Equal イコール)16進コードのコマンドという書き方で、コマンドを英数3文字に置き換えているわけです。更に先を見ると、PAGES独自のコマンドの例として、用紙方向横長指定として、SRO EQU 1B 7E 50 00 01 03 と書かれた行があります。これは、SRO は、16進コードのコマンド 1B 7E 50 00 01 03 を置き換えるという意味になります。
AS/400から送られる印刷データの先頭に、これらのコマンドを追加するための指定は、"BEGIN_MACROS"の先にある
/*                     Control Codes                                  */
の直下の START_JOB= の行で行います。デフォルトで記述されている
START_JOB=CDS INZ SEL P10 LL6
は、
CDS(Change Data Stream)プリンターをPAGESモードにセットする -> INZ(Initialize)初期化する -> SEL(Select)印刷可能状態にする -> P10 文字ピッチを10cpiにする ->LL6 行ピッチを6lpiにする
という順番でプリンターにコマンドを送ることを意味しています。そこで、この行を、その下にコメント・アウトされているサンプル
START_JOB=CDS INZ SEL SA4 FA4 SRO P10 LL6
に置き換えると、プリンターをPAGESモードに設定し(CDS)、A4用紙のトレイから給紙して(SA4)、連続帳票からA4への縮小(FA4)して、印刷する設定になります。
なお、細かい話ですが、PAGESの場合、トレイ指定コマンド(ここではSA4)と、縮小コマンド(ここではFA4)は、この順番で記述しないと指定が有効になりませんので、ご注意ください。
また、余白の設定を併せて行うとすると、少し難しくなります。MACROの中に「余白ヘッダー部」として"MRG"があります。これを使うのですが、これはヘッダー部だけ、つまり何ミリにするかという値が含まれていませんので、START_JOB=の後ろに組み込む時に MRG の後ろに値を追加する必要があります。
余白の値は、値(ミリ)をインチに換算した値 x 1440を16進数にした値を、1バイトずつスペースで区切って記述します。例えば、用紙方向横長で、上余白10mm、左余白15mmに設定するには
  1. 上余白の値の計算 10mm÷25.4mm/インチx1440 = 567 -> 16進に換算= 0237 
  2. 左余白の値の計算 15mm÷25.4mm/インチx1440 = 850 -> 16進に換算= 0352
  3. 用紙方向横長のMACROは SRO
  4. MRGの後ろに左余白、上余白の順で1バイトずつブランクを挟んで記述します。
START_JOB=CDS INZ SEL P10 LL6 FB4 SB4 SRO MRG 00 00 03 52 00 00 02 37 00 00
 

このコマンドで設定した余白の値は、プリンターの操作パネルから初期設定で指定した
余白の値の影響は受けません。

余白の値の定義

2015年7月8日水曜日

プリンター・セッション経由の印刷 第1回 - PDT印刷とは -

前回までのお話で、ポートの設定もできたので、次はいよいよ、プリンター・セッションのお話にしたいと思います。PCOMMやクライアント・アクセス(以降CA)、あるいはIBM製以外のエミュレーターでも考え方は同じで、プリンター・セッション経由の印刷には、
  • プリンター・セッションが印刷データを生成する方式
  • 一般的な Windows のアプリケーションと同様に、プリンター・セッションが、Windowsとデータのやり取りをして、プリンター・ドライバーが印刷データを生成する方式
の2種類の方法があります。前者はPCOMMやCAでは、「PDT印刷」と呼ばれています。PDT とは、Printer Definition Table の略で、5577 用の場合には、AS/400から送信されてくる文字コードをEBCDIC から Shift-JIS へ、制御コマンドは SCS形式から 5577形式へ変換するための参照テーブル(表)を意味しています。つまり、この表を参照しながら、プリンター・セッションがAS/400からの印刷データを 5577系のプリンターで印刷可能なデータ形式に変換する訳です。
PCOMMやCAには標準で用意されている PDT には、日本語対応のものは
  • 5577
  • ESC/P
  • PAGES
  • LIPS III
英語対応のものは
  • PPDS(IBMプロプリンター)
  • PCL
  • Basic ASCII
  • EPSON
 となっています。
標準添付されているPDTファイル
添付の画面は、CA V.6のフォルダーとファイルの構成ですが、"Pdfpdf"というフォルダーの中にこれらの PDT ファイルが用意されています。この中で、"PAGES"プリンター用に使用するのは、”ibm5585.pdt"です。"ibm5587.pdt"は古いバージョンで、これを指定すると正しい印刷結果が得られないことがありますので、ご注意ください。
"ibm5577b.pdt"に関しては、かつて、このPDTを指定すると、罫線印刷用の SCSコマンドを 5577 用の罫線コマンドに変換できたというお客様からの情報をお聞きしたことがありますが、PCOMMやCAのバージョンが変わると変換できなかったこともありましたので、現時点では"ibm5577.pdt"との違いは無いと思われます。

プリンター・セッションのPDT印刷の設定方法は、プリンター・セッションの画面で、「停止」ボタンを押して「作動可能」ランプを緑から黒に変えた後、「ファイル」->「プリンター設定」を選択して表示された画面(添付)で、「PDTファイルの使用」欄にチェックを入れます。そうすると、「PDTの選択」ボタンが使える状態に変わりますので、このボタンを押します。
プリンター設定画面

PDT選択画面

そうすると、左のような「PDTファイルの選択」画面が表示されますので、使用するプリンターに合わせたPDTファイルを指定して、保存します。
インパクト・プリンターを使用する場合には、通常はこの設定だけで終了ですが、レーザー・プリンターの場合には、「縮小」や「両面印刷」といったプリンター制御のための設定が必要になります。そのためには、「PDFファイル」を編集して、それをPDTファイルにコンパイルする必要がありますが、その方法は次回にお話します。

2015年4月20日月曜日

文字コードの話 - 更に続くJIS規格の変化

IBM選定文字
3 番目の表は、やはり557xシリーズ・プリンターの操作マニュアルの付録からの抜粋です。
これらの文字が「IBM選定文字」と言われる文字です。 xFA40の「ⅰ」から、xFA53「Ⅹ」までにローマ数字がありますし、「㈱」もxFA58に、「№」もxFA59にあります。
これらの文字は、前回の新JISで追加される以前からIBMの世界では存在していたこと、新JISでは別の文字コードで追加されたことがお分かりいただけると思います。
つまり、旧JISでは「㈱」はIBM選定文字の1つだったのですが、新JISでは2つ存在することになったのです。

ところで、1983年のJIS規格の変更は、IBMの社内規格とも言えるCCSIDには、どのように反映されたでしょうか?
AS/400や大型の汎用機の世界の文字コード(EBCDIC)では、文字コードの入れ替えは無く、文字コードの「追加」しかありません。
その結果、従来の文字セットに、「新JIS」で追加された文字を追加したのみのCCSID、"CCSID1399"と"CCSID1390"が新たに定義されました。"CCSID1399"と"CCID1390"の違いは、前者は日本語英小文字拡張(CCSID5035)に追加したもの、後者が日本語カナ拡張(CCSID5026)に追加したものの違いです。なお、AS/400の世界では、CCSID1399のみが使用できます。

更にその後、2004年にJISの規格が大幅に改訂され、文字のデザインの変更と文字数の増加が行われました。Windowsのバージョンでは、Windows Vistaに適用されました。詳しくは下記のサイトをご参照ください。
http://home.jeita.or.jp/page_file/20110512150627_F53ZCOuMhJ.pdf
4ページ目をご覧いただくと、文字のデザイン面では、略字だった漢字を元の正しい漢字に戻す変更であることが、お分かりいただけるかと思います。
この規格の変更とプリンターの関係はどうなっているでしょうか?
実は、557x系のドット・プリンターの内蔵フォントでは、このJIS2004の改訂は反映されていません。その結果、内蔵フォントを使うプリンター・セッション経由のPDT印刷では、印刷できない文字が出てくることになるはずですが、実際には印刷できていると思います。その理由は、プリンター・セッションが、JIS2004で追加された文字については、文字コードの代わりに、文字イメージ(Windowsフォント)をプリンターに送信しているからです。
では、Telnet5250Eを使った直結印刷ではどうでしょうか?
(次回に続く)

2015年2月22日日曜日

AS/400からの印刷 ~基礎編-6~

プリンター・セッション経由の最大のメリットは、前回も申し上げたように、「プリンターの選択肢が多い」ということです。
処理の流れとしては、先ずPC上のプリンター・セッションがAS/400から印刷データを受信し、PDT印刷ではPDTを参照してデータ変換を行い、Windowsのスプーラーから、プリンター・ドライバーで指定しているポートの指定先のプリンターに印刷データを送信するということになります。
その結果、注意点や制限としては、以下の点があります。
  • プリンター・セッションを立てたPCの電源が入っていないと印刷できない。(これは当然ですよね。)
  • 保留や取り消しといったスプールの管理はできません。(これは、AS/400から見た場合、プリンター・セッションが仮想プリンターとなること、そして、それがPCであるためプリンターと違って、スプール解放とほぼ同時に印刷データを受信してしまうためです。)
  • 同じ理由で、プリンターのエラーは、OS/400には通知されません。
  • PDT印刷の場合は、バーコード、3倍以上の文字拡大指定やOCR-Bフォント等半角文字の書体指定が無効になります。(これは、プリンター・セッションでのコマンド変換機能の制限です。)
  • 外字(正確にはユーザー定義文字)を印刷するには、プリンター・セッションを立てたPCのWindows外字に、それら外字を登録する必要があります。(これは、外字はWindows外字のイメージを使用するためです。)
 【余談】
Windowsのスプーラーは、プリンターの印刷速度に合わせて印刷データを送信します。AS/400からPCがデータを受信して変換する速度(速い)と、プリンターの印刷速度(遅い)の違いを吸収しているわけです。しかし、Windowsが、まだWindows95だった頃、プリンターのエラーがAS/400側に通知されるということで、ドライバーのプロパティで「印刷データをスプールせず、直接プリンターに送る」設定に変えて、使用するお客様がありました。
WindowsXPになっても、その設定に変えたところ、正しく印刷できなくなったというお問い合わせを何件かいただいたことがあります。実は、そのお問い合わせをいただいたことで、Windows95ではそのような使い方ができたのかと驚いたことを、今でも良く覚えています。
特にインパクト方式のプリンターでは、受信バッファーのメモリー・サイズは2行分程度しかありませんし、印刷速度はAS/400からのデータ送信速度に比べてかなり遅いわけですから、Windowsスプーラーの役割は非常に重要と言えます。

では、次回は、帳票ソリューションを使った印刷方式についてお話しします。

2015年2月14日土曜日

AS/400からの印刷 ~基礎編-5~

5577プリンター
5577プリンター 
「2」のプリンター・セッション経由の印刷が、今では最も一般的な方式のように思います。
その背景としては、前回までお話しした直結型のプリンターが、比較的高価であること、機種が限られていること、そしてインパクト方式のプリンターが中心となっているため、オフィスで多く使用される小型のレーザー・プリンターや、複合機(コピー、FAX、スキャナー、プリンター一体
型のタイプ)に印刷するために、選択されてきたということと思います。
かつての、プリンター・セッションの設定も、「PDT印刷」でないと縦罫線
InfoPrint1000J PAGESモデル
InfoPrint1000J PAGESモデル
が左右にずれてガタガタに印刷されるといった問題がありましたが、最近では「ドライバー印刷」でも問題なく印刷できるようになってきているようです。
直結型の印刷の場合、文字コードは「EBCDIC」形式、制御コードは「SCS形式」でプリンターに送られてくるので、プリンターも内蔵フォントをEBCDIC形式で、制御コードもSCS形式で持っている必要がありますが、プリンター・セッション経由の場合には、プリンター・セッションが文字コードや制御コードを使用するプリンター用に変換するわけです。

日本語の「PDT印刷」の場合には、変換先の制御コードが「5577形式」「ESC/P形式」「PAGES形式」「LIPS形式」等に限定されています。「PDT」とは「Printer Definition Table」の略で、変換元のSCS形式のコマンドと、変換先の5577形式等のコマンドの変換テーブルを意味しています。
文字コードも、EBCDICコードを、5577用のPDTの場合には、Shift-JISコードに変換します。
これは、プリンター・セッションの役割をOS/400自身が行う、HPT(ホスト印刷変換)印刷の場合も同じです。

一方で、ドライバー印刷の場合は、プリンター・セッションもExcelやWord等のWindowsアプリケーションと同じ動きになりますから、プリンター・セッションはWindowsのAPIに従ってドライバーに印刷データを渡し、ドライバーは印刷イメージを生成してプリンターに送信します。

これらの話は非常に奥が深く多岐に渡りますので、詳細は別の機会に譲るとして、次回はこの方式の得失についてお話しします。