始めの言葉

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

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 モード" に切り替わってから、後続のデータを処理するようになり、その結果、文字化けは解消されました。

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月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ファイルにコンパイルする必要がありますが、その方法は次回にお話します。