始めの言葉

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

2015年3月22日日曜日

文字コードの話 - 文字化けはなぜ起きるか?

基礎を掘り下げて考えて行くと、大きなテーマの一つとして「文字コード」に行きつきます。
AS/400に限らず、どんなコンピューターの世界では、情報を正しく伝えるという基礎中の基礎と言える目的を実現するために、様々な仕組みが考え出されました。
その中でも、文字コードは大きな要素となっていますので、これを正しく理解しておく必要があると思います。
IBMのAS/400や大型のメインフレームでは、文字コードは、EBCDIC(エビシディック)と呼ばれる文字コード体系で決まっています。一方で、Windowsの世界では、文字コードはShift-JIS(シフトジス)や、Unicode(ユニコード)で、文字コードが決まっています。
この両者の違いが、文字化けの原因と言ってもよいのではないでしょうか?
そもそもコンピューターの世界は、英数文字だけで始まったわけで、そのため文字コードもSBCS(Single Byte Character Set)だけでした。しかもアルファベットも大文字だけでした。
そこへ、少しでも日本語を表現するために、カタカナだったら文字数が限られていてSBCSの範囲に収まると考えられて、空いている文字コードにカタカナが当てはめられました。
しかし、同時にその文字コードにアルファベットの小文字も当てはめられたのが、混乱の原因になってしまったと言えます。
これでは、カタカナとアルファベットの小文字は、共存できないということになります。
下の左側の表は、小文字を追加しただけの13219というIDの古い文字セット(ただし、漢字やひらがなのためのDBCS(Double Byte Character Set)も含んでいます)です。例えば"A"の文字コードは"C1"、"9"のコードは"F9"と読みます。
右側の表は、左の表の空いている文字コードに、カタカナを当てはめた"5035"という文字セットです。これによって半角カタカナと小文字は共存できるようになります。
そして、元々小文字を持ったセットに対してカタカナを追加したので「英小文字拡張」という呼び方をします。これの逆(カタカナが先で、後から空いた場所に小文字を追加した文字セットを「カナ拡張」と呼び、IDは"5026"になります。)
次回へ続く
英語小文字を追加したCCSID13219
空いた場所に半角カタカナを追加したCCSID5035

2015年3月16日月曜日

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

「投資対効果」の内、「投資」は、帳票ソリューションのライセンス料金や、その保守費用が該当します。また、併せてレーザー・プリンターや複合機を新規に購入する場合には、それらの費用も含まれます。
一方、「効果」には何が考えられるでしょうか?
  • プリンターの維持費。保守料金を比較すると、インパクト方式のプリンターよりもレーザー・プリンターや複合機の方が一般的に安価です。逆に、トナー代は、インク・リボン代よりも通常は高価です。
  • 用紙の費用。事前印刷のある複写伝票よりも、A4サイズの普通紙の方が圧倒的に安価です。また、前者は在庫を切らすことがないように発注の管理が重要ですから、そのための人件費やスペース代は普通紙の場合よりも費用が掛かっているはずです。
  • その他、請求書等のPDF化によって、郵送からメール送信やFAX送信に切り替えれば、印刷代、封入の手間、郵送費を削減できます。また、副次的な効果として、人出作業が無くなることによって、封入のミスや送り間違い等の人為的なミスを無くすことが可能になります。
  • また、バインダーに綴じて保管していた伝票の写しを、PDF化によって電子保存するように変更すれば、スペースの削減だけでなく、後の検索の手間が大幅に削減できます。
カット紙化を考える際に、課題になるのが、カラー対応です。複写伝票の事前印刷(罫線や固定文字)は、色付きで印刷されていて、しかも伝票の種類で色が決まっているケースが多いようです。その伝票がカット紙化される場合に、罫線や固定文字も「黒」で印刷されると、それまでよりも伝票が見辛くなったという、現場のユーザーからのクレームの元になりかねません。
一方、カット紙の印刷では、コスト面だけではなく、プリンターの印字位置の精度の仕様からも、カット紙に「事前印刷する」というのは、現実的ではありません。
かと言って、白紙にカラー印刷する時のトナー代を考えると、二の足を踏まれる方も多いと思います。そこで、中間的な解決策としては、次の方法が考えられると思います。
  • 色付きの用紙にモノクロ印刷する。->カット紙自体に、元の伝票の印刷と似た色の用紙を使用します。この場合、何種類かの用紙を1台のプリンターで印刷するには、用紙トレイと用紙の色の関係を、管理する必要が出てきます。
  • 罫線のみ、角印のみカラー印刷する。->カラーの面積が少なければ、トナー代の上昇分も少ないと考えれば、如何でしょうか?
どのような方法を採るにしても、基本は、運用を変更して印刷量を減らすことが、効果の最大化に繋がるのは、間違いないと言えます。

2015年3月1日日曜日

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

いわゆる「帳票ソリューション」を使った出力は、2000年ころを境に増えてきた方法と思います。その主な特徴は、以下のようになります。
  1. プリンターに対する制約が、ほとんど無い。Windowsドライバーを持つプリンターなら印刷可能です。
  2. 印刷だけではなく、PDF化が可能となるため、メール送信、FAX送信、電子保管など多くの出力方式が使えるようになります。
  3. 帳票設計の機能によって、帳票の表現力が圧倒的に向上します。例えば、文字や罫線の配置も、行や桁の制限が無くなり、自由になります。また、カラー出力は、これ以外には不可能と言って良いでしょう。
帳票ソリューションは、大きく分けると、Windowsサーバー上で稼働するタイプと、AS/400上で稼働するタイプの2種類に分かれます。
前者は、AS/400上のスプールをWindowsサーバーに受信する -> 設計しておいた帳票フォーマットと重ね合わせる -> Winodwsドライバーを使って印刷する、若しくはPDF生成するという処理の流れになります。このタイプは製品の種類が多いのですが、AS/400のユーザーの多くはWindowsサーバーを立てることを好まない方が多いように思います。
一方、後者は、帳票設計はWindowsの上で行いますが、それを使った印刷やPDF化は、AS/400上で実行します。当ブログの右サイドのリンク先にあるMapping Suiteは、このタイプです。
それぞれのタイプの得失は、次のように考えられます。
  • 単にサーバーを別に立てるかどうか以外に、後者は、ユーザーが持っているRPGやCLのスキルを活用できます。
  • PDF生成等の処理に、前者はWindowsサーバーのCPUを使用しますが、後者はAS/400のCPUを使用します。負荷の分散という観点から考えると、前者が有利と言えます。
また、AS/400と直結プリンターの印刷や、プリンター・セッション経由の印刷と比べると、PDFにしてもWindowsドライバーを使った印刷にしても、データ・サイズは大きくなります。そのため、これらのタイプの出力に切り替える時には、ある程度、ネットワーク容量に配慮する必要はあると思います。
帳票ソリューションの導入には、費用が掛かりますので、次回では、その投資対効果の考え方についてお話しします。

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に従ってドライバーに印刷データを渡し、ドライバーは印刷イメージを生成してプリンターに送信します。

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

2015年2月7日土曜日

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

5400ライン・プリンターをTelnet5250E接続で使用され始めた頃、次のような問題を経験しました。
5400-F06プリンター

  1. あるお客様で、毎週月曜の午前中だけ、プリンターが途中で何度も止まりながら印刷するという現象でした。実は、このお客様では、NOTESのサーバーが東京にあるのですが、月曜の午前中は大阪の営業部が会議のため、東京のNOTESサーバーにアクセスが集中していたということが分かりました。
  2. 他のあるお客様では、社内向けの内線電話をIP電話に切り替えたところ、プリンターが間欠的に止まりながら印刷するようになったということがありました。
社内ネットワークの容量をピークに合わせるのも現実的ではないので、これらのケースの対処方法としては、ルーターの帯域制御を使った、データによる優先順位の設定の見直しになりました。例えば、端末画面の表示やIP電話の優先順位は高く、逆に、インターネットの閲覧の優先順位は低くといったような具合です。
その後は、ネットワークの速度も容量も大きくなってきたためか、そのようなお問い合わせをいただくことは無くなりました。また、ライン・プリンターだけでなく、5577系のドット・プリンターや、小型レーザー・プリンターをTelnet5250Eで接続できるようにする5400エミュレーターIIという製品も出てきましたが、それと並行して、ライン・プリンターやドット・プリンターといったインパクト・プリンターの使用が減ってきたのも事実です。
次回は、プリンター・セッション経由の印刷について、お話します。

2015年2月2日月曜日

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

TCP/IPが普及してくると、AS/400とプリンターの接続も、TCP/IPでTwinax接続と同様の操作性を求められることになります。
TCP/IPでの接続が、Twinax接続と大きく異なるのは、IBMが独自で決めた規格ではないという点です。RFC(Request for Comments) というインターネット上の公開された場所で定義されたもので、特にTelnet5250Eは、AS/400の端末の表示画面用のプロトコルTelnet5250をプリンター用に拡張したもので、RFC2877の中に記載されています。(この事実だけででも、時代の流れを感じますね。)
同じTelnetでも、端末表示と印刷で大きく異なる要件は、プリンターのエラーをAS/400側に通知する等の「双方向通信」 にあります。
そのため、技術面では、Twinax接続とは次のような違いがあります。
  1. AS/400とプリンターの間は、プリンターから接続に行きます。(Twinaxの場合は、逆)
  2. ユーザー定義文字(いわゆる外字)も通常の文字と同じように、文字コードだけがプリンターに送信されてきますので、プリンター側に予め、文字コードと文字イメージを保管しておく必要があります。
【余談】外字の取り扱いに関しては、Twinax接続は親切にできていて、外字は文字コードと24x24ドットの文字イメージが、一緒にプリンターに送信されてきます。そのため、ユーザーは外字の有無を一切気にする必要はありませんでした。プリンターは、送信された文字コードと文字イメージを一時的に記憶します。そのため、同じ外字の2度目以降の印刷では、文字コードだけが送信され、データ量を最小限に抑えられます。
(電源を切ると、プリンターに記憶した外字の情報は消去されます。)

そして、LAN上を印刷データが流れるということは、メールやインターネットの閲覧等々、様々なデータと混在して流れることを意味しますので、Twianx接続では意識する必要の無かった、ネットワークのトラフィックも考慮することが、避けられなくなりました。
次回では、そのネットワークのトラフィックとの関係で経験した、Telnetでの印刷で発生するようになった問題と対処方法をお知らせします。