始めの言葉

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

2016年2月28日日曜日

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

5400 シリーズのライン・プリンターで、Telnet5250E 接続ができるようになると、小型のプリンターでも同様に接続できるようにして欲しいというお客様の要望が出てきました。そこで、5400 シリーズのLAN カードを元にして開発されたのが、"5400エミュレーター"です。シリアル・インパクト・プリンターの中でも、ほとんどが、AS/400 から PCOMM プリンター・セッション経由の印刷に使用されていた、5577 や 5579 用として発売されました。
5400エミュレーター本体

Telnet5250E 接続の双方向通信の機能を満たすために、プリンターと 5400 エミュレーターを接続するパラレル・インターフェイスでは、プリンターの状態を把握できる"コンバージド・インターフェイス・モード"を活用しています。
5577-W02/V02 や 5579-L02 以降のモデルでは、5400エミュレーター用の 5V の電源を供給するための、コネクターがプリンター側に用意されましたので、5400エミュレーター用に1つ追加で電源コンセントを用意する必要がなくなりました。
 5400エミュレーターは、OS/400 から送信されてくるSCSコマンドを受信し、5577 形式のコマンドに変換します。これによって、PCOMM プリンター・セッション経由の印刷ではPCOMMの変換機能が制約としていた、バーコード・コマンドや3倍以上の文字拡大の指定コマンドが、5579/5577 シリーズでも、5400 シリーズ同様に使えるようになったわけです。
5400エミュレーター装着

その結果、同じ帳票を印刷するために、印刷枚数や要求される処理時間によって、5400 シリーズから 5577 シリーズまで、機種を選択する範囲が広がったのは、5400エミュレーターの大きなメリットと言えるかと思います。
更に、5400エミュレーターでは、5400 シリーズが、当時は対応していなかった、Telnet5250E と LPR の自動切換え機能に対応していましたので、AS/400 からの印刷と、Windows からの印刷を自動切換えで行なうこともできました。なお、この機能は、後に、5400 シリーズでも対応しています。

その後、今度は、インパクト・プリンターだけでなく、レーザー・プリンターでも同様に、Telnet5250E 接続できるようにして欲しいというご要望が上がってきました。
しかし、レーザー・プリンターのパラレル・インターフェイスでは"コンバージド・モード"を持っていません。そこで、それでもプリンターの状況を把握できるように、5400エミュレーター側で対応し、名前も、5400エミュレーターIIと変更しました。
5400エミュレーターIIでは、初期設定の際に、使用するプリンターがインパクト・プリンターか、レーザー・プリンターかを指定します。それに応じて、他の設定メニューが変わってきます。
5400エミュレーターIIと、レーザー・プリンターの組み合わせのお話は長くなりますので、次回にします。

2016年2月23日火曜日

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

IBMの独自規約だった"SNA(System Network Architecture)"に基づくことにより、Twinax接続では可能だった、スプール印刷の保留や取り消しを、"TCP/IP"の世界で実現する"Telnet5250E"では、どのようにして実現しているのでしょうか?
考え方は簡単で、OS/400 が、印刷データを700バイト程度の大きさの単位に切ってプリンターに送信し、プリンターはそのデータを印刷完了すると、完了通知("Ack"と呼びます。Acknowledgement)を OS/400 に返信します。それを受けて、OS/400 は後続の印刷データを700バイト程度の大きさに切って、プリンターに送信するというやり取りを繰り返すというものです。
"繰り返し印刷とポートの設定"の回でお話したように、"LPR"印刷では、OS/400 は、印刷データを一塊にまとめてプリンターに送信しますので、印刷途中で保留したり、取り消したりできなかったのに対し、"Telnet5250E"での印刷では、印刷データを細かく分けてプリンターに送信するため、途中で止めたりする操作が可能になった訳です。
併せて、プリンターはデータを受信するだけではなく、用紙切れや用紙ジャムといったエラー状態を、OS/400 側に通知する機能も持たせています。ただし、初めてプリンターを接続して自動構成によって装置記述ができた時に、デフォルトでは"印刷装置エラー・メッセージ"は、"*INFO"になります。そのため、エラー・メッセージに対して何か応答してから印刷再開させようとするには、この値を"*INQ"に変更する必要があります。
"Twinax"接続と同様の操作性とは言え、"Twinax"接続では、OS/400 からプリンターに接続、あるいは切断しに行くのに対して、"Telnet5250E"接続では、逆にプリンターから、OS/400 に接続・切断しに行くことから、例えば"5400"シリーズのライン・プリンターでは、次のような初期設定メニューを設けています。
5400シリーズ・ラインアップ

1. パワーオン自動印刷
デフォルトでは、"5分"という値にセットされています。これは、プリンターが、OS/400 と接続できていない時に、5分間隔で接続を試みるという意味です。例えば、プリンターの電源は入っているが、AS/400 が起動中で、TCP/IP サービスも立ち上がっていないという状態では、プリンターから"Telnet5250E"接続しに行っても、接続できません。そのような場合、5分間隔で接続を試みることを繰り返すことによって、自動的に接続状態に変わります。

2. ホスト接続監視
デフォルトでは、"はい(する)"になっています。これは定期的に、プリンターから AS/400 に対して ping コマンドを発行して、ネットワークの切断が発生していないかどうかをチェックするという意味です。もし、接続が切れていれば( ping の返信が無ければ)、一定時間後に再度 ping コマンドを発行して接続を確認することを繰り返します。

Twinax 接続の時には、印刷データは、AS/400 との言わば専用線上を流れていて、安定した通信でした。それが、TCP/IP 接続に変わると、他の様々なデータとネットワーク上に共存するようになることや、ルーターやハブ(スイッチ)などの機器を経由することで、Twinax 接続よりも不安定な通信になります。例えば、次のような事例がありました

<現象1>
遠隔地の 5400 プリンターにおいて、100ページ程度の帳票を印刷後に接続が切れる。数ページの印刷では切れない。プリンターの電源を入れ直すと接続する。
<調査>
プリンターから、ping コマンドを定期的に発行して、AS/400 が稼動中であることを確認しているが、ネットワーク容量に比較して通信量が大きいと、ping コマンドの返信がタイム・アウトになる。そのため、プリンターは AS/400 が非稼動状態と判断して接続を切るという現象が発生していることが判明した。
<対策>
"ホスト接続監視"を"いいえ(しない)"に変更して解決した。

<現象2> 
IP電話を導入後、印刷できなくなった。
<調査>
IP電話のために、ルーターのMTU設定でパケットを細分化していた。(1,450→360 バイト
そのため、印刷データも細分化されてしまい、それを受信したプリンター側で再構成できなくなった。
<対策>
OS/400 上で、プリンターのIPアドレスに対して、"MTU 自動調整"を"*YES"に変更して解決。

2016年2月13日土曜日

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

"Telnet5250E"接続の特徴は、次のとおりです。
  1. "Twinax"接続と同様の操作性を維持しています。具体的には、印刷中のスプールの"保留"、"取り消し"操作が可能です。プリンター・セッション経由の印刷では、OS/400 から見ると、PC 上のプリンター・セッションが仮想的なプリンターとなっています。PC が印刷データを受信する速度は、プリンターに比べて圧倒的に速く、また受信可能なデータ量も圧倒的に大きいため、スプールを解放した後、印刷中に"保留"したり、"取り消し"することはできません。"HPT機能"を使ったLAN 直結印刷の場合でも、原理は片方向印刷である"LPR"印刷ですから、OS/400 が印刷データを変換して送信し始めたら、やはり、"保留"も、"取り消し"もできません。
  2. OS/400 との接続構成は、"自動構成"です。プリンターの初期設定メニューの中で、接続先の OS/400 の "IP アドレス"と、"デバイス名"を設定すると、初めの接続時に、プリンターから OS/400 に対して接続しに行き、その"デバイス名"の装置記述を自動的に OS/400 上に登録します。なお、"Twinax接続"では、プリンターに設定したアドレス番号に対して、OS/400から接続しに行きますが、"Telnet5250E"接続では、プリンターから OS/400に対して接続しに行く点は、逆です。従って、プリンターの電源を切って、OS/400 プリンター間の"Telnet5250E"セッションを切断する時も、プリンターから OS/400 に対して切断しに行くことになります。(5400 シリーズでは、電源スイッチを切った際の電圧の低下を検知して、OS/400 に対して"Telnet5250E"セッションの切断要求信号を自動的に発信するようにできていますので、ユーザーはセッションの切断を意識することなく、電源を切ることができます。一方、5577 シリーズ本体の"Telnet5250E"接続機能では、予め操作パネルのスイッチを使って、セッションの切断要求信号を発信してから、電源スイッチを切るようになっています。)
  3. "Twinax"接続の時と同様、文字コードは"EBCDIC"のまま、制御コマンドも"SCS形式"のままです。その結果、バーコード・コマンドや罫線コマンドはそのままコマンドとしてプリンターに送信され、プリンターの内部で、バーコードや罫線のイメージを作って印刷します。そのため、データ・サイズが大きくなることはありませんので、罫線の多い帳票でも印刷速度を低下させることもありません。また、プリンター・セッション経由の印刷や"HPT機能"を使ったLAN 直結印刷では発生する制御コマンドの変換機能に起因する制限(バーコード・コマンドや大きな倍数の文字拡大、OCR-Bフォント等の半角フォントの指定が無効になる)もありません。
5400エミュレーターIIのTelnet5250設定Web画面
ただし、"Twinax"接続と異なるため、注意が必要なのは、"外字"の取り扱いです。"AS/400からの印刷 基礎編-3"でお話ししたように、"Telnet5250E"接続では、OS/400 は、外字も標準の文字と同様に、プリンターに内蔵されていると仮定して、文字コードを送ってくるだけです。そのため、外字の文字コードと文字イメージは、予めプリンターに記憶させておくことが必要になります。そのためのコマンドが、"LODPPW"コマンドです。使用可能な外字の数は、4,370 文字になります。

次回は、"Telnet5250E"接続の簡単な原理と使用事例をお話します。

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 の特徴や注意点をお話します。