始めの言葉

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

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月14日金曜日

HPT機能を使った印刷 - LAN直結印刷の基本 -

5577 や PAGES モードを持った PC 用のプリンターに印刷させる方法には、前回までお話したプリンター・セッション経由の印刷の他に、OS/400 の HPT(Host Print Transform, ホスト印刷変換)機能を使った方法があります。これは、プリンター・セッションで行なう文字コード変換(5577 系の場合は、EBCDIC -> S-JIS)と、制御コード変換(5577 系の場合は、SCS -> 5577形式)を、OS/400自体が行なうものです。そのため、かつてOS/400のバージョンが、V3R7 や V4 の頃には、HPT機能を使用して印刷させようとすると、他の業務系のアプリケーションの実行速度に影響が出るため、実使用に耐えないといったケースもありました。しかし今では、AS/400 自体の処理能力が大幅に向上した結果、最早そのような事例を聞くこともありません。そうなると、プリンター・セッション経由の印刷と比較して、PC の電源が入っていないと印刷できないといった制約が無い点で、この印刷方法を採用されるユーザーも多いようです。ここで、先ず HPT機能を使った印刷の特徴や注意点を整理すると次のようになります。
  • リモートOUTQを使う方式と、デバイス・タイプに"3812"を指定して装置記述を作り、そのOUTQを使う方式の2種類があります。
  • プリンター・セッション経由の印刷と違って、どちらの方式でも自動構成ではありませんから、リモートOUTQや装置記述は手動で作る必要がありますし、ライターも初めは手動で起動する必要があります。
  • 前者の方式の原理は"LPR印刷"になりますので、エラーも含めたプリンターの状態は、OS/400 側に送信されず、単にスプールを印刷データに変換して、プリンターに送信するだけになります。
  • その際、設定によっては印刷部数の指定は可能ですが、ページ範囲の指定はできません。(IBM のサイトにあるツールを導入すると可能になるようですが、IBM による保証が無いことと、ツール自体が古いものなので、OS/400 の最近のバージョンでも使用可能かは、私もテストしたことが無い点にご注意ください。)
  • 後者の方式では、現在の多くのプリンターの LAN カードが持っている SNMP(Simple Network Management Protocol) というプロトコルを使って、OS/400 はプリンターの状態を把握します。その結果、プリンターの電源Off、用紙切れ、用紙ジャムといったエラー状態が OS/400 上にメッセージとして表示されます。ただし、"メッセージ応答"としての、ページ範囲を指定した再印刷はできません。これは、スプールがプリンターの制御コマンドを使った印刷データに変換されると、OS/400 はページの境目を認識できなくなるからです。つまり、ページ範囲を指定した再印刷が可能なのは、SCS形式のスプール・データを(変換せずに)直結されたプリンターで印刷する場合だけということを意味しています。
  • スプール・データの中の文字に外字があった場合、プリンター・セッション経由の印刷では、その PC に保管されている Windows外字のイメージをプリンターに送信して印刷します。しかし、HPT 機能を使った印刷では、OS/400 上の外字イメージを使用します。"OS/400 上の外字イメージ"とは、OS/400上で稼働する"CGU(Character Generation Utility)"という外字作成ツールを使って、外字用の文字コードに対して登録する、24x24ドットと、32x32ドットのドット・パターンです。24x24ドットのパターンは、5577 系のプリンターに印刷する場合、32x32ドットのパターンは PAGES モードのプリンターに印刷する場合に使用します。外字を使用するお客様の場合は、必ず24x24ドットのパターンは作成しますが、32x32ドットのパターンまでは作成していない場合がほとんどです。32x32ドット・パターンは、初めから作ることももちろんできますが、24x24ドット・パターンを元に変換するメニューが、"CGU"に用意されていますので、これを使っていったん作成し、その後、ドットの構成を修正して、より品質の良い外字のドット・パターンにすることができます。
次回以降で、OUTQを設定する具体的な方法をご説明していきます。

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"を標準でサポートしています。