始めの言葉

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

2018年4月14日土曜日

AS/400 プリンティングに求められるソリューション 第35回 - MVPを使ったPDFの自動印刷 - 1 -

前回までのお話で、Mapping を使って IFS 上に PDF ファイルを生成するところまで来ました。この後の処理としては、PDF ファイルをファイル・サーバーに FTP 送信して、電子保存するか、LAN 接続されたレーザー・プリンターや複合機に送信して印刷するかの 2 通りが考えられます。
電子保存のお話は、別の機会に譲るとして、印刷の方法に関しては、かつて、"連続用紙への印刷から、カット紙への印刷に移行する -第14回 PDFダイレクト印刷における印刷制御-"
から3回に渡ってお話していますので、こちらをご参照いただけますでしょうか。


また、印刷させるためのコマンドのパラメーターの一つである、出力先のプリンターを指定する OUTQ については 2 種類あって、どのように定義するかはそれぞれ、"HPT機能を使った印刷 - 簡単な双方向通信可能なOUTQを作る方式 -" の回と、"HPT機能を使った印刷 - リモートOUTQの作成 -"の回でお話しているので、そちらをご参照ください。

ただ、この時のプリンターには、"PDF ダイレクト印刷機能" か、"PCL モード" を持っているという前提条件がありました。そのような機能を持っていないプリンターへの自動印刷には、Mapping のオプション・ライセンスである "MVP(Mapping Virtual Printer)" を使用します。MVPを使った自動印刷については、"連続用紙への印刷から、カット紙への印刷に移行する -第14回 PDFダイレクト印刷における印刷制御-" の回でも簡単に触れていますが、ここでもう少し詳しくお話したいと思います。
"MVP"は、人が Windows 上で PDF ファイルを印刷する時に行う次の操作を自動的に行うものです。
ビューワーで PDF ファイルを開く。 -> ビューワーの印刷メニューから印刷するプリンター・ドライバーを指定して印刷する。
MVP を使用する場合、2 つのモードがあります。PC の画面上に次のような MVP の画面が表示される "GUI(Graphycal User Interface) モード" と、Windows のサービスとして稼動するので、何も表示されない "サービス・モード" です。
MVP GUI モードの画面例
 GUI モードの画面では、リスト表示された PDF ファイルを指定して、再印刷させたり、印刷するプリンターを変更させたりすることができます。そのような操作を行う可能性がある場合には、GUI モードがお勧めですし、PC 上で他の業務をも行っているので、MVP の画面が表示されない方が良いという場合には、サービス・モードがお勧めです。
サービス・モードで使用していても、MVP の画面を開くとて GUI モードに切り替わりますし、GUI モードの画面を閉じるとサービス・モードに戻るようになっています。

MVP を初めに設定する際には、GUI モードの画面を使用します。MVP にも MapDraw 同様にプリファレンスの画面があります。
MVP プリファレンスの画面
MVP を使用するには、ライセンス・キーが必要です。ライセンス・キーは、その上の欄にある "ID" を元に生成されます。そして、この "ID" は MVP をインストールした PC やサーバーのハードウェアの属性を元に決まります。そのため、もし PC を変更する場合には、新しい PC に先ず MVP をインストールしていただき、"ID" を確認してお知らせいただきます。その後、ライセンス・キーを発行して入力するという手順になります。
その上には、いくつかのチェック・ボックスがあります。MVP は受信した PDF を勝手に削除することはしませんので、だんだんと PDF ファイルが PC のHDD の領域を侵食し、PC の動きが遅くなるという現象が発生する可能性が出てきます。そのため、"起動時に印刷済みのスプール・ファイルを削除する" や、 "印刷後にスプール・ファイルを削除する" という設定メニューがあります。PC の再起動の間隔が長い場合には、後者の設定を行うことをお勧めします。なお、"LPD サーバーのポート" という項目があるので、選択できるように見えますが、実際にはデフォルトで指定されている "515" から変えないようにしてください。
次回は、プリンターの登録を行います。
 
 




2017年8月12日土曜日

AS/400 プリンティングに求められるソリューション 第3回

2002年のアンケート調査と、2010年のそれとを単純に比較はできませんが、それでも 8 年が経過したことによる変化は窺えます。

1. 帳票設計は、2002年では、90% 以上の会社では、APW も含めたコマンドのコーディングで行なっていました。
しかし、2010年では、その比率は 80% に下がって、新たに、帳票ソリューションを使う会社が出てきて、その比率が 16% となっています。

2. 今後の予想では、増強やプリンターの LAN 接続化も含めた現状維持派が、2002年では 50% 以上ありましたが、2010年では、44% に減っています。

3. 電子化や Web 対応等の手段によって印刷量を削減(廃止)する派は、2002年の 44% ですが、2010年では 47% と大きくは変化していません。

業務で使用しているアプリケーション・プログラムに大きく手を入れないで、帳票の電子化や、レーザー・プリンターへの移行(カット紙化)を実現するには、何らかの帳票ソリューションが必要になります。
つまり、罫線や固定文字が事前印刷された複写伝票への印刷を、電子帳票やレーザー・プリンターによるカット紙への印刷に移行するには、アプリケーション・プログラムから吐き出されるスプール・データに含まれていない、罫線やタイトル等の固定文字も印刷データに含める必要があり、それを実現するのが、帳票ソリューションの役割と言えます。
6P複写伝票のカット紙化例

逆に、白紙の応用用紙に、罫線や固定文字も含めた全ての印刷データをインパクト・プリンターで印刷しているのが現状であるならば、プリンター・セッション経由の印刷、もしくは HPT 機能を使った LAN 直接接続された PAGES レーザー・プリンターで、縮小印刷や両面印刷指定に移行すれば済んでしまいます。
連続用紙への印刷をそのままカット紙に縮小印刷

では、その帳票ソリューションを選択するたに当たって、何を選択基準とするかを、2010年にお聞きしています。

4. 最優先は価格であると約半分の方が回答しているのは、もっともと思いますが、次に重視するのは、OS/400 上で稼動するのか、WindowsServer の 上で稼動するかと言う点です。
約 20% が、稼動 OS を重視すると回答している割に、OS/400 上が良いか、WindowsServer 上が良いかをお聞きすると、"どちらでも良い"という回答が、44% にもなっています。
私自身は、統合サーバーである AS/400 の強みや、WindowsServer を立てた場合の管理コストを考えると、"OS/400" が 33% という数字は、意外に小さいと感じました。

ともあれ、2010年になると、ユーザーへのアンケートでも、私自身の日々の活動の中の実感としても、帳票ソリューションの存在が大きくなってきていたことは、確かと言えます。
そして、その背景には、明らかに、電子化や、メーカーに拘らないレーザー・プリンター化による"コスト削減"という、お客様の課題があることも確かと言えます。

初めてアンケートを取った 2002年から、2度目にとった 2010年までの間には、私にとって大きな変化がありました。それは、2007年6月の、インフォプリント・ソリューションズ社の設立です。
IBM は、PC 事業に続いて、プリンティング・システム事業を売却し、2007年から 3年間は株式会社リコーとの合弁会社として、インフォプリント・ソリューションズ社を設立したのでした。

発足当初、日本の社長が挙げた 3つの課題の1つが、「オープン環境の印刷において、何をご提案していくか」というものでした。それに対して、正にこの"帳票ソリューションの提供"が回答になっていくわけです。
背景として、ライン・プリンターやドット・プリンターが大きな比率を占めていたビジネス・モデルが通用しなくなっていく時代の変化に対応するために、印刷量を減らしたい、あるいは、メーカー縛りから脱却したいお客様に受け入れていただける、従来とは異なる新しいご提案ができないとならないという差し迫った状況にあるという認識がありました。
そして、自社製プリンターを選択していただける何の保証も無いオープン環境においては、独自の帳票ソリューションをご採用いただくことによって、お客様の印刷データの大元を押さえるという考え方にたどり着きました。
その切っ掛けは、新会社発足当初に行なわれたイベントでの製品デモでした。

2017年6月18日日曜日

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

プリンターを PAGES モードに切り替えるためのコマンドが、PAGES のコマンドの中にあります。それだけでは、PAGES モードに切り変わるためには、PAGES モードのコマンドを正しく処理して PAGES モードになる必要があるといった、ちょうど、鶏と卵の関係のようになってしまいます。
実際には、プリンターの処理機能の基礎となるレベルのマイクロコード(ファームウェア)が、プリンターがどのモードであっても、このコマンドを処理できるようにできているのだと思います。

コマンド自体は、Web 上で公開されている PCOMM や CA の 用の PDF ファイルをメモ帳で開くと、次のように記述されていることで、分かります。

/* エミュレーションモード設定  */
CDS EQU 1B 7E 12 00 01 11                       /* PAGES 選択     */

START_JOB=CDS INZ SEL SA4 FA4 SRO P10 LL6

CDS は、Change Data Stream を略して付けた名称と考えられます。
コマンドとしては、"1B 7E 12 00 01 11" であって、これは "5577 モード" への切り換えにもそのまま使用できます。
"START_JOB=" の直後にこのコマンドが記述されていることによって、プリンター・セッションから送信される印刷データの先頭で、プリンターを "PAGES モード"、若しくは "5577 モード" に切り替えて、その後の PAGES コマンドを正しく処理できるようにしている訳です。

Infoprint 1000J シリーズの基本モードである "RPCS モード" のプリンター・ドライバーでは、プロパティ画面のメニューの中で、"基本設定" -> "その他" と選択した次のような画面に "印刷後のエミュレーション" という設定項目があります。
RPCS モードのドライバーで元のエミュレーションに戻す設定

これを、上の画面のように"直前のエミュレーション"と設定しておくと、PAGES モードで印刷後、このドライバーを使って RPCS モードを使って印刷した場合には、プリンターを元のモード、つまり "PAGES モード"に戻すコマンドを、発行すると考えられます。
従って、"PAGES モード"での印刷から始まった場合には、この設定のみで問題無いかもしれませんが、必ずしもそうではないので、"PAGES モード"を使用するプリンター・セッション経由の印刷では、先頭で切り換え用のコマンドを発行する必要があるということです。

プリンター・セッション経由の印刷以外で、PAGES モードを使う印刷としては、OS/400 の HPT 機能を使った、LAN 直結印刷があります。
プリンター・セッション経由の印刷において、PAGES モード 設定のコマンドを使用することは、Infoprint 1000J シリーズの "PAGES 使用解説書"に記載されていることですが、HPT 機能を使った LAN 直結印刷についての記述はありませんでした。
ところが、実際には、1 台の Infoprint 1000J に対して、RPCS モードのドライバーを使った WindowsXP からの印刷と、HPT 機能を使った AS/400 からの LAN 直結印刷を行なっている中で、AS/400 からの印刷が、文字化けしてしまうという問題が発生したお客様がありました。

"RPCS モード"のドライバーで、"直前のエミュレーションに戻す"設定は行なったものの、問題は解決しません。プリンターが、OS/400 から送信されてくる "PAGES モード" の印刷データを正しく識別できず、"RPCS モード"の状態のまま処理してしまうため、文字化けとなってしまうのです。

PDF ファイルと同様に、印刷データの先頭に、"PAGES モード"への切り替えコマンドを埋め込むには、"WSCST ファイル"を編集します。
"WSCST ファイル"を変更する方法は、Web で公開されています。リンク先の 7 ページ目以降をご覧ください。
また、"PAGES モード" 用の"WSCST ファイル"のサンプルも、同じように公開されています。リンク先のテキスト・ファイルを開いてみると、その中に次のような箇所があることが、分かります。

    :INITPRT
      DATA ='1B7E010000'X                   /*初期化設定*/
            '1B7E0300013C'X                 /*行ピッチ設定6LPI */
            '1B7E02000132'X                 /*文字ピッチ設定10CPI */
            '1B7E5A000403AE0000'X.          /*コードページ変更942 */
 
ここが、プリンター・セッション用の PDF ファイルの中の "START_JOB=" 以降に該当します。
そこで、DATA = の次に、"PAGES モード"への切り替えコマンドを、次のように追加します。
 
    :INITPRT
      DATA ='1B7E12000111'X                 /* PAGES 選択*/
            '1B7E010000'X                   /*初期化設定*/ 
 
このお客様では、この "WSCST ファイル" を指定したリモート OUTQ を通して印刷データを送信することによって、プリンターが、先ず "PAGES モード" に切り替わってから、後続のデータを処理するようになり、その結果、文字化けは解消されました。

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 ドットの外字のダウンロード
- 内蔵アウトライン・フォントの使用
- ベクトル座標を使った図形の記述
- グラフィックの記述



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年4月10日日曜日

連続用紙への印刷から、カット紙への印刷に移行する -第5回 縮小して両面印刷する-

連続用紙からカット紙に移行する時に、両面印刷に変えると印刷枚数が半分となり、用紙コストを更に削減できます。しかし、連続用紙は用紙が繋がっているのに対して、カット紙は印刷後の用紙の取り扱いに注意しないと、用紙の順番がバラバラになってしまう危険性があります。
そこで、複合機や50枚/分以上の印刷速度を持つプリンターでは、オプションとして用意されている後処理機構を追加すると、印刷直後に自動的にステープル止めを行ない、用紙がバラバラになるのを防ぐことができます。
(もちろん、このオプションを使わなくても手動でステープル止めは可能ですが、手動では、それまでの間に用紙をバラバラにしてしまうリスクは残ります。)
両面印刷した後、左上隅の1箇所や、左辺の2箇所にステープル止めするとした場合、奇数ページは左余白を、偶数ページでは右余白を大きめに設定しておく必要があります。
左右の余白が異なる両面印刷のイメージ
今までお話した PCOMM プリンター・セッション経由の印刷や、HPT 機能を使った印刷、5400エミュレーターII を使った Telnet5250E 接続の印刷では、印刷データ全体に対して余白の値を設定することはできますが、奇数ページと偶数ページで余白の値を変えることはできません。そのため、左余白の値も右余白の値も、同じ大きめな値に設定することになります。
第3回 キャラクター・モードを使った縮小印刷指定でお話した、"キャラクター・モード"を使って奇数ページと偶数ページで異なる値の余白を設定するコマンドを、ページ毎に発行すれば実現できますが、そのためのプログラムは大変です。
しかし、前回ご紹介した"MappingSuite"を使えば、簡単に実現できます。
1. "MapDraw"で新規作成を指定する表示されるフォーマットの定義の画面で、"片面/両面"に"両面(短辺)"を、"片面""両面"に"Portrait"を、"フォーマット名"に"SHUKUSHOH2"を指定します。
MapDraw両面印刷用プロジェクトの定義
(他の値は前回と同じです。)
A4 横長で、短辺側を綴じる場合の設定です。長辺で綴じる場合には、"両面(長辺)"を指定します。










2. 両面の指定を行ったことにより、前面設計用の"DrawF""MapF"("F"は"Front"の意味)の他に、裏面設計用の"DrawB""MapB"("B"は"Back"の意味)の画面が選択できるようになります。また、どちらかの画面で、横132桁、縦66行のスプール・データを取り込むと、もう片方の画面でも、同じスプール・データが表示されます。
MapDraw両面毎に設計可能な画面














3. 次は前回と同様にして、縦66行のグループ、そしてその中に横132桁を指定したゾーンを作成します。ここでのポイントは、前面設計の画面(MapF)では、ゾーンの中の文字の配置は"左揃え"とすること、ゾーンの左端の位置を、奇数ページの左余白の値と合わせることです。
MapDraw前面の設計














4. そして、裏面設計の画面(MapB)では、同じ縦66行のグループの中に、横132桁ですが、文字の配置は"右揃え"とし、右余白の値を前面の左余白の値と同じ値に合わせたゾーンを作成します。
MapDraw裏面の設計














5. この設計をそれぞれ奇数ページと偶数ページに適用するために、条件付けを行ないます。"プロジェクト"タブの"プロジェクトのプロパティ"ボタンを押して表示される画面の"表面"タブの画面では、"Page""Page 1 of 2"と設定します。
MapDraw奇数ページ用の条件付け













6. "裏面"タブの画面では、"Page""Page 2 of 2"と設定します。
MapDraw偶数ページ用の条件付け

7. ここまでの設計の確認には、"マルチ・プレビュー"ボタンを押して、スプール・データのページをめくっていくと、奇数ページと偶数ページでそれぞれ左右余白が一致するかを確認します。
MapDrawマルチ・プレビュー

設計は以上になります。この後、プロジェクトの生成->プロジェクトの関連付け->MapDrawフォーマットの取り込みの手順は、今までお話したとおりです。
このような帳票設計ツールを使うことによって、コマンドの指定では困難な帳票の印刷が簡単に実現できることをご理解いただけたかと思います。

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年3月5日土曜日

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

ライン・プリンターに始まって、ドット・プリンターに広がった"Telnet5250E"ですが、次にはレーザー・プリンターにも対応して欲しいというご要望が出てきました。レーザー・プリンターの場合、次のような印刷の制御にも対応しないとなりません。
- 給紙トレイ(用紙サイズ)の指定
- 用紙方向(縦長/横長)の指定
- 縮小率の指定
- 印刷開始位置(上と左の余白)指定
PAGES モードを持ったレーザー・プリンターの場合は、1つの給紙トレイに対して、これらの値をセットで操作パネル上で初期設定しておけば、印刷の度に給紙トレイを選択することで、希望通りの印刷はできます。
しかし、AS/400 からの印刷では、毎回手動で設定を変更するという方法は現実的ではなく、例えば、"プリンター・セッション経由の印刷 第2回 - PDFファイルの編集 -"の回でお話したように、これらの値のセットに対応した"OUTQ"を選択するという方式の方が望まれます。
そのために、レーザー・プリンターにも対応した"5400エミュレーターII"では、初めに2つのデバイスが登録できるようになりました。
つまり、5400エミュレーターIIが持っている設定用の"Webページ"上で、給紙トレイや用紙方向などの上記の値をプル・ダウン・メニューやラジオ・ボタンを使って指定し、1つの"デバイス"として登録させると、その設定に応じて印刷できる OUTQ が、OS/400 上に自動構成されるという仕組みです。この"デバイス"というセットが、初めは2つでしたがその後3つまで登録できるようになりました。
これは、1台の5400エミュレーターIIにおいて、3つまでの"Telnet5250E"のセッションをOS/400 との間で張っているということを意味しています。
デバイス設定の画面
プリンター・セッション経由の印刷や、HPT機能を使った印刷では、PAGESのコマンドを理解して、ユーザーが自分でPDFやWSCSTを編集する必要がありましたが、5400エミュレーターIIでは、Webページ上で簡単に設定できますので、PAGESのコマンドを理解する必要はありません。5400エミュレーターIIの中で、設定に応じたPAGESコマンドを印刷データに付加してプリンターに送信している訳です。
ただ、少し難しいのは、余白の値の設定方法です。元の PAGES コマンドでは、1/1440インチ単位の値を16進数で指定することになっていますので、この画面でもその値を入力する必要があります。例えば、10mmに設定したい場合には、次のような計算になります。
10 / 25.4 = 0.3937 インチ -> 0.3937 x 1440 = 567 (567/1440インチ) -> 567を16進数に変換 -> 237
10ではなく、237をセットすることで、余白の値は10mmになります。

5400エミュレーターIIがレーザー・プリンター向けに発行するコマンドは、PAGES になりますので、対応するレーザー・プリンターは、PAGES モードを持ち、なおかつパラレル・インターフェイスを持ったモデルになります。InfoPrint1000J シリーズの初代のモデルである InfoPrint13xx シリーズでは良かったのですが、次の世代の InfoPrint17xx シリーズになると、パラレル・インターフェイスの形状がハーフ・ピッチ36ピンと呼ばれる小型のものになりました。その結果、5400エミュレーターIIを取り付けるには、プリンターに付属のハーフ・ピッチ/フル・ピッチ変換アダプターを介することになるのですが、そうすると、5400エミュレーターII自体の重みによって少し垂れ下がったような状態となり、接触不良を起こす場合が出てきたのは、残念なことでした。また、その後は、パラレル・インターフェイス自体が時代遅れとなったのか、PAGES モードを持った高速モデル SP8200 ではパラレル・インターフェイスが無いため、5400エミュレーターIIは使用できないことになったのも、時代の流れとは言え、寂しいものでした。


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年1月31日日曜日

HPT機能を使った印刷 - 追加情報 -

1. 印刷部数の指定
"HPT機能を使った印刷 - LAN 直結印刷の基本"の回で、印刷部数の指定は可能とお話したのですが、そのための設定を""HPT機能を使った印刷 - リモートOUTQの作成"の回でお話していなかったので、ここでお話しします。
印刷部数を指定できるようにするには、リモートOUTQを作成する時に指定するパラメーターの中で、宛先オプション"DESTOPT"に"XAIX"を指定する必要があります。
何故、その指定が必要なのかは分かりませんが、OS/400 の動きとしては、IBM Knowledge Center では次のように説明されています。

>XAIX を指定した場合、 リモート印刷装置書き出しプログラムは、プリンターへの接続を開き、 データ・ファイルと制御ファイルの複数コピーを送信します。
宛先オプション"DSTOPT"の指定

LPR 印刷では、データ・ファイルと制御ファイルのセットをプリンターに送信することを、以前にお話ししたことがあると思いますが、それを思い出してこの説明を読むと、指定された印刷部数の数だけ繰り返して、データ・ファイルと制御ファイルのセットをプリンターに送信すると読み取れます。
つまり、プリンターに対してコピー部数を指定するコマンドを送信するのではなく、コピー部数分だけ繰り返して同じ印刷データを送信するという意味になります。

2. HPT機能を使った印刷の3番目の指定方法
OS/400 上で印刷データ形式を変換する HPT 機能を使って、PC を介さずに LAN 直結印刷する方法には、実はもう一つ、"IPP"を使った OUTQ を使う方法です。"IPP"は、Internet Printing Protocol の略で、Microsfoft社が提唱する印刷データ送信方式です。提唱されてから何年も経ちますが、普及したと言えるところまでは行っていないようです。
TCP/IP の世界の印刷プロトコルの一つであり、最新のものなので、OS/400 でもサポートしているものと思います。OUTQ を作るには、装置記述を作り、装置タイプに"3812"を選択する点では、以前お話した SNMP を使用する方式と良く似ていますが、使用するポートが 631、6310 である点が大きく異なります。
最も大きな特徴は、"セキュア接続"と言った暗号化に対応した接続が可能なことだと思います。
自分自身では、かなり以前に、あるお客様のご要望でその設定を経験したことがあるのですが、詳細に関しては、機会を改めたいと思います。

次回からは、LAN 直結印刷の本命として、Telnet5250E接続のお話をしたいと思います。

2015年10月25日日曜日

バーコードの印刷方法 - 第1回 コマンドを使う -

前回、"バーコード"という言葉が出てきたので、今回は今までの話の流れから少し逸れますが、バーコードのお話をします。
"このプリンターでバーコードを印刷できますか?"というお問い合わせを、何度もいただくことがあります。AS/400から、プリンターにバーコードを印刷させるには、いくつもの方法があります。

1. プリンターが持っているバーコード印刷コマンドを送信する方法
これは、プリンターから見れば、バーコードを印刷するコマンドが送られてきて、それに従ってプリンターの内部でバーコードのイメージ(パターン)を作って印刷する方法です。
この方法には以下のメリットがあります。

1-1. 各バーの幅を、コマンドのパラメーターとして、個別に指定できることにより、読み取り率を向上させ易い点です。
特に、インク・リボンを使って印刷するインパクト方式のプリンターでは、細白バーは、実際に印刷される左右両側の黒バーに挟まれた、印刷されない線として表現されますので、1ドット幅にしか指定しないと、左右からのインクの滲みよって、1ドット幅以下の幅になってしまいます。そのため、バーコード・リーダーが読み取る時に、細白バーとして認識でき難くなるわけです。細白バーの幅を先ず2ドット以上と指定し、他のバーの幅をそれを元に決めていくことをお勧めしています。
1次元バーコードのパターン

1-2. 後で述べるユーザー定義文字や、シンボルの組み合わせと比べて、バー幅の修正が圧倒的に楽な点です。
これももちろん、読み 取り率向上につながりますが、コマンドのパラメーターとしてバー幅を指定することは、その値を変更するだけで、バーコードの読み取り率を向上させることが できます。ユーザー定義文字や、シンボルといった、バーコードのパターンを自分で設計する方式では、印刷結果の読み取りテストを行いながら、該当する全部のパターンを修正することになりますので、膨大な手間が掛かることになります。



1-3. OS/400上でバーコードを指定するツール(APW)が用意されている点です。
APW (Advanced Printer Writer) (正式には多機能漢字印刷ユーティリティー)は、世界標準のSCSコマンドに対して、日本独自に追加されたバーコード・コマンドを使い易く するために、日本独自で開発されたツールです。使用可能なバーコード・パラメーターの仕様は、次のサイトで公開されているマニュアルで確認できます。
http://www.ricoh.co.jp/pps/download/manual/other/apw_v3.html

1-4. ネットワークへの負荷が少なく、処理時間の短縮が期待できる点です。
印刷データの量としては、コマンドだけになりますので、ネットワーク上の負荷はその分、少なくなります。バーコードのイメージ(パターン)を生成するの は、プリンターの中のマイクロコードの処理になりますが、経験的には、その処理時間が全体の処理時間に影響することは無いと思います。
黒細バーのインクが滲んだ様子

以上のメリットに対して、次の点には注意が必要です。
- APWを使用する場合、次のバーコードは指定できません。
GS1-128(EAN128.コンビニ収納代行用のバーコード)と、QRコード(これは、正確にはバーコードではなく2次元コードになります。)。そのため、5577系のドット・プリンターや、5400ライン・プリンターはQRコードを印刷するコマンドを持っていますが、そのコマンドを送信するプログラムを作る必要があり、これがなかなか大変です。
- APWを使用する場合は、プリンターのモデルと接続方式が、限られています。
接続方式は、AS/400と直結するTwinax接続やLAN直結する"Telnet5250E"接続か、ホスト印刷変換機能を使用したLAN直結接続です。
前者のプリンターとしては、5400シリーズと、モデル名の最後2桁が"05"となっている5577シリーズ、若しくは5400エミュレーターを使って"Telnet5250E"接続した5577シリーズや、PAGESモードを持ったレーザー・プリンターになります。後者のプリンターは、PAGESモードを持ったレーザー・プリンターです。
- APWを使用する場合は、バーコードを印刷する場所は、毎ページ同じになります。

以上の制約を受けないために、APWは使用せずに、コマンドをプログラムの中に組み込む方法も採れますが、5577モードのバーコード・コマンドは16進コードでプログラムすることとなり、これもなかなか手が掛かります。そこで、コマンドを他のデータと同じ文字データ(テキスト・データ)として組み込む方法がありますので、それは次回お話します。

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月9日水曜日

HPT機能を使った印刷 - 簡単な双方向通信可能なOUTQを作る方式 -

前々回でお話ししたリモート OUTQ を作る方式は、単なる LPR 印刷なので、プリンターに対して印刷データを送信するだけの方式です。そのため、プリンターの電源が入っていなかったり、用紙切れが発生していても、それをエラーとして検知することはできません。今回、お話しする装置記述を作る方式では、TCP/IP の世界で定義された SNMP(Simple Netwrok Management Protocol)を使って、簡単なエラー状態を OS/400  が把握することができます。
注意 : 装置記述の作成は特殊権限が必要なので、ユーザーIDは、QSECOFR で行なってください。

1. 先ず、次の手順で装置記述を作ります。5250 端末画面で、"CRTDEVPRT"というコマンドを入力して F4 キーを押します。この画面で使用しているパラメーターは、次のようになります。
CRTDEVPRTを実行した画面-1
  • 装置記述 : 任意ですが、この名前はそのまま OUTQ の名前になります。(なお、ライブラリーは自動的に"QUSRSYS"になります。)
  • 装置クラス : "*LAN"が指定です。
  • 装置タイプ : "3812"が指定です。(余談ですが、3812 は1980年代中期に発表された英数データ用のページ・プリンターです。A4とレター・サイズの用紙に対応し、PCには"Proprinter"モードで接続し、他にホスト・システムにも接続可能なモデルでした。)
  • 装置形式 : "1"が指定です。

2. 実行キーを押して表示される画面で、"LAN接続機構"に"*IP"を指定してから実行キーを押すと、次の画面になります。パラメーターは次のように指定します。
CRTDEVPRTを実行した画面-2
  • ポート番号 : "9100"が指定です。
  • フォント 識別コード : "11"が指定です。
  • 用紙送り : 通常のカット紙用のレーザー・プリンターの場合は、"*AUTOCUT"が指定です。(連続用紙の場合は、"*CONT"になります。)
その下の"印刷装置エラー・メッセージ"が、デフォルトの"*INQ"の場合は、OS/400 にエラー・メッセージが通知され、メッセージ応答が求められます。"*INFO"に変更した場合は、エラー・メッセージが通知されるだけです。



3. パラメーターを入力したら、次ページの画面を表示します。"非活動タイマー"に"*SEC15"を指定してから実行キーを押すと、次の画面になります。
CRTDEVPRTを実行した画面-3
ここで重要なのが、"ホスト印刷の変換"です。"*YES"にすることで、OS/400 が印刷データを、その下の"メーカー・タイプ, 型式"で指定する形式の印刷データに変換して、接続先のプリンターに送信します。
"メーカー・タイプ, 型式"で F4 キーを押すと、前々回お話した、リモートOUTQ を作成する時と同じ選択肢が表示されます。
http://as400printhelp.blogspot.jp/2015/08/hpt-outq.html
ここでは、PAGES プリンター用として"*IBMPAGES300"を指定します。
なお、その下の"用紙入れ1、2"は給紙トレイ、"エンベロープ・ソース"は封筒用のトレイを意味しますが、まだ試してみたことがありません。

4. 次ページの画面ではパラメーターを次のように指定します。
CRTDEVPRTを実行した画面-4
  • リモート・ロケーション : プリンターのIPアドレスか、ホスト名を指定します。
  • システム・ドライバー・プログラム : これは"*IBMSNMPDRV"が指定です。この指定によって、OS/400 は、プリンターが"SNMP"の規格に従って把握している状態を知り、エラーの場合はエラー・メッセージを通知することになります。







5. 実行キーを押して装置記述が生成できたら、後は、"STRPRTWTR"コマンドを実行して OUTQ を使用可能な状態にします。

では、この OUTQ を使って印刷した場合、実際にエラーはどのように通知されるでしょうか ?
1. OUTQ "SP8200"のプリンターが、電源 OFF の場合
メッセージ : CPA3387 : (C R) 装置 SP8200 が使用できない
プリンターが電源OFFの場合

この後、プリンターの電源を入れて、"R"で応答すると、印刷可能になります。









2. OUTQ "SP8200"のプリンターが、用紙切れの場合
メッセージ : CPA405C : (C R) 装置 IP8200 の入力トレイに問題がある
プリンターが用紙切れの場合

この後、用紙を補給して、"R"で応答すると、印刷を再開します。
再開する開始ページを指定することはできませんが、プリンターの電源を切らない限り、プリンター内部のメモリーに保管されて印刷処理を待っているページから印刷再開しますので、問題は無いはずです。






3. OUTQ "SP8200"のプリンターが、用紙ジャムの場合
メッセージ : CPA404D : (C R) 装置 IP8200で用紙ジャムが起こった

この後、ジャムした用紙を取り除いてプリンターを印刷可能状態に戻して、"R"で応答すると、印刷を再開します。印刷開始ページを指定することはできませんが、プリンターの電源を切らない限り、プリンター内部のメモリーに保管されて印刷処理を待っているページから印刷再開しますので、問題は無いはずです。

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

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