日本語DECprint Supervisor V1.2 for OpenVMS (以下,DCPS V1.2)での重要な変更点を次に掲げます。これらの内容はV1.3/1.3A にもあてはまります。
日本語DECprint Supervisor V1.2のインストールの手順は次のとおりです。
詳細は『 日本語DECprint Supervisor for OpenVMS インストレーション・ガイド』を参照してください。
$ STOP/QUEUE/NEXT <queue-name> または $ STOP/QUEUE/RESET <queue-name>
$ DELETE SYS$SPECIFIC:[SYSEXE]DCPS$*.EXE;* $ DELETE SYS$SPECIFIC:[SYSLIB]DCPS$*.EXE;* $ DELETE SYS$SPECIFIC:[SYSLIB]TRN$*.EXE;*
インストレーション・プロシージャは次のチェックを行うようになりました。
すべてのDCPSプリント・キューは,新しいバージョンのDCPSをインストールするまえに停止しておくことをお奨めします。 停止しない場合は次のいくつかの問題が発生する可能性があります。
インストレーション検証プロシージャ(IVP)も強化されました。これにより, テストされたDCPSのバージョンを正確に報告できます。ただし,次の場合には報告されるバージョンがインストールしたDCPS のバージョンと異なることがあります。
%DCPS-F-FILERR, Error openning processor file for IVP queue: -DCPS-F-FILERR, DKA300$:[SYS0.][SYSEXE]DCPS$SMB.EXE;15 -DCPS-F-FILERR, IVP has failed. See Releae Notes for details.
ここで掲げた例以外にも,IVPはテストしたDCPSのバージョンがインストールしたDCPS のバージョンと異なっていても,インストレーションの正常終了を報告します。 インストレーションとIVPの問題は次の点に注意することによって防ぐことができます。
バージョン1.2より日本語DECprint Supervisorプロセスは,マルチストリーム・シンビオント・プロセスとして稼動できるようになりました。 マルチストリーム・シンビオント・ プロセスとして,1つのDCPSプロセスは複数のDCPS実行キューを稼動させることができます。 新しいDCPSプロセスは DCPSプリント・キューがスタートするたびにスタートするわけではなく, 現在あるすべてのプロセスが, サポートできる上限数までキュー(ストリーム)をサポートしている時に限り, 新たに新規のプロセスをスタートします。この「1つのプロセスがサポートする上限キュー数」は, 論理名DCPS$MAX_STREAMSによってプロセスのスタート時に決められます。
日本語DECprint Supervisor V1.2は, 1つのシンビオント・プロセスごとに最大32個の実行キューをサポートするように設定できます。 この論理名を設定しないと,DCPSプロセスはただ1つしか実行キューをサポートしません。 論理名DCPS$MAX_ STREAMSによってDCPSシンビオント・プロセスごとにどれだけの実行キューをサポートするのかを指定します。 この値を指定するには, DCPS$STARTUP.COMファイルの中に次のように記述します(テンプレート・ ファイルはDCPS$STARTUP.TEMPLATE)。次の例でxはサポートすべきキューの数を指定します。
$ DEFINE/SYSTEM/EXECTIVE DCPS$MAX_STREAMS x
このDCPS$STARTUP.COMファイルを実行し,キューをDCPSマルチストリーム・ プロセスとしてスタートしてください。
DCPSプロセスは,対応するすべてのキューが停止したときのみ停止します。
DCPS V1.1はそれ以前のバージョンに比較してかなり多くの量のメモリを使用していました。 多くのキューが同一システム上でスタートした場合, これは重大な問題になる可能性がありました。DCPS V1.2ではこの問題を, ピーク時の必要メモリ量を減らすことと,マルチストリームで実行できるようにすることで解決しました。
またDCPS V1.1からはDCPSの様々な機能を実装するためにDECthreadsを使用しています。DECthreads を使用するプロセスは実行できるスレッドがないか定期的に判断します。 ジョブが1つも印刷されていない時でも,実行できるスレッドがないかどうかを確かめるためDCPS プロセスは動作します。 システム上に多くのDCPSキューが存在する場合は,すべてのプロセスのスケジューリングと定期的な動作が非常に大きくCPU 時間を消費する可能性があります。 この問題は,DCPSをマルチストリーム・プロセスとして実行し, 稼動させなければならないシンビオント・プロセスの数を削減することによって解決できます。 また,DCPSシンビオント・プロセスは定期的に実行されるため, メモリからスワップアウトされません。
1つのDCPSシンビオント・プロセスが扱うべきキューの上限数を決める要因には次のようなものがあります。
OpenVMSキュー・マネージャはシンビオント・プロセスを作る時期と終了する時期を制御します。 一般的に既存のすべてのDCPSシンビオント・プロセスに空きストリームがない場合には新しいシンビオント・ プロセスが作られます。 前述のとおり,各プロセスがサポートする上限ストリーム(キュー) 数は,論理名DCPS$MAX_STREAMSによってプロセスのスタート時に決められます。 シンビオント・プロセスは,そのプロセスがサポートするすべてのプロセスが停止した時に終了します。
あるDCPSシンビオント・プロセスがサポートする一群のキューは,キューがスタートした順序によって決まります。
日本語DECprint Supervisor V1.2から,キューのプロセスID を識別する論理名(DCPS$<queue-name>_PID)が定義されるようになりました。 この論理名は,特定のプロセスによってサポートされる1つまたはそれ以上のキュー決定するために使われます。 すなわち, この論理名の値が等しいキューは,同じシンビオント・プロセスで制御されていることになります。
例: $ SHOW LOG DCPS$*_PID/SYSTEM "DCPS$NTXJ_PID" = "20201F07" "DCPS$OKI_PID" = "20201F07"
あまりないことですが,同一のプロセスが複数のキューをサポートすることから, 同じプロセスがサポートする別のキューの影響で問題が発生することがあります。 問題を特定するためには,そのキューだけをチェックしたのでは不十分です。 そのプロセスがサポートするすべてのキューを検査しなければなりません。
DCPSキューを停止する場合は,STOP/QUEUEコマンドを使用します。STOP /IDコマンドでシンビオント・プロセスを停止すると,そのプロセスがサポートする他のすべてのキューも停止してしまいます。
日本語DECprint Supervisor for OpenVMSをマルチストリーム・ プロセスで実行しているユーザ・サイトでは,Queue Manager Remedial Updateをインストールしなければなりません。これは次のオペレーティング・ システムに対応します。
アップデートの入手については弊社までお問い合せください。Queue Manager Remedial Update Kitは次のものからなります。
本キットには次のイメージが含まれています。
本アップデートでは,マルチストリーム・シンビオントが稼動されているとき,START/QUEUE コマンドがある状況でハングする問題を解決しています。 添付のリリース・ノートでは,このアップデートで解決されたすべての問題を解説しています。 これらの変更を有効にするには,インストール後にシステムをリブートします。
このアップデートをインストールしていないシステムでは次の問題が起こる場合があります。 すなわち,マルチストリーム・プロセスで動作中のキューをSTOP/QUEUE/RESET < queue-name>のコマンドで停止し,直後にSTART/QUEUE < queue-name> コマンドでスタートさせた場合,スタート・ コマンドはハングする可能性があります。さらに,次のOPCOMメッセージがときおり表示されます。
%DCPS-F-STREAMUSE, Request 4 for Stream Id x ignored. Not consistant with symbiont state
この状態から復帰するには,Ctrl/Yを入力しDCLプロンプトに戻り,再度STOP/QUEUE/RESET コマンドを入力します。次にキューを再スタートします。 この問題を防ぐために,本アップデートをインストールしてください。
AppleTalkプリンタ名がマルチナショナル文字(例えば,アクセント文字) を含んでいると,DCPSは正しくこれを処理することができず,AppleTalk ネットワーク上からプリンタを捜すことができませんでした。 /ON修飾子に指定する文字はDECMCS 文字セットを使います。これらの文字はAppleTalk ネットワーク上で使用できるように Macintosh文字セットに変換する必要がありました。 バージョン1.2ではこの変換が行なわれます。
マルチナショナル文字を使用すると,セパレータ・ページの底部に表示されるプリンタ名が誤った文字セットで表示されます。
PrintServerに印刷中に(DCc) Circuit connect failureと表示されて印刷要求に反応がなくなる場合がありました。 これはDELETE/ENTRYコマンドに指定したジョブ番号が100 かそれ以上の値である場合に起こることがありました。 本バージョンとPrintServer Software V5.1の組み合せでは,このエラーは起こりません。
従来のバージョンでは,PrintServerプリンタに多くのリソース( 例えば,フォントやプロローグ)がダウンロードされている場合には印刷できませんでした。 このエラーは,本バージョンがインストールされ, かつPrintServer SoftwareがV5.1 にアップデートされていれば起りません。
従来のバージョンでは,シリアル・デバイスに割り当てられたシステム・ リソースが解放されるまでには最大4分の遅延時間がありました。これは印刷出力中にSTOP/QUEUE/RESET コマンドが発行されて,かつ,このときコミュニケーション障害が起こった場合に発生しました。 このような遅延が起こると, 停止後すみやかに再スタートできませんでした。本バージョンでは, コミュニケーションに問題が発生した場合でも,より素早くシステム・ リソースを解放し,かつプリント・キューは停止後すぐに再スタートできます。
従来のバージョンでは,ジョブ名に ] を含むプリンタからのメッセージを正しく処理することができず, 無限ループになりました。これはAppleTalk ネットワーク上のプリンタへ印刷する際に注意する必要がありました。 本バージョンではこの問題は解決されています。
セットアップ・モジュールがPostScriptの場合は,フォームの /SETUP 修飾子に指定したモジュールはプリント・ ジョブの始めに1度だけプリンタに送られます。 ジョブが複数のファイルを含んでいる場合,または複数のコピーを指定した場合, このモジュールの内容は,最初のファイルには反映されても, 後続のファイルには反映されないことがありました。これは, 次のファイルが新しい用紙から印刷されるように,PostScriptのオペレータnewsheet をファイルの間に挿入したためです。本バージョンでは, newsheetを実行する前にPostScriptコンテキストをいったんセーブし, newsheetを実行したあとでリストアしています。
従来のバージョンのDCPSでは,シリアル接続のプリンタに出力する場合, プリンタのPostScriptインタプリタを制御するため,同期シーケンスを送信していました。 この方法は,すべてがDCPSであるような環境ではうまく動作していましたが, プリンタがマルチホスト環境で共有されている場合に問題を生じることがありました。DECserver や他のネットワーク・ターミナル・ サーバを介して接続されたプリンタは,DCPSキュー,LATSYMキュー, あるいはUNIXホストの間で共有されることがありますが,LATSYMやUNIX ホストからの送信されたジョブは,DCPSのジョブ同期シーケンスによって誤ってキャンセルされることがありました。 これは,すべてのページを印刷し終える前にLATSYM シンビオントまたはUNIXプリント・デーモンがプリンタとの接続を切った場合に起りました。
PostScriptプリンタが印刷中またはビジー状態を報告している時にこの動作を防ぐために, デフォルトの同期シーケンスが変更されました。通常の環境で正常なPostScript ドキュメントを印刷する場合にはこの変更による外面的な変化はありません。
エラーの発生したPostScriptジョブを他のキューからジョブを発行することによってアボートさせるというDCPS の従来の機能を使いたい場合は,次の論理名を定義して旧機能のかわりとすることができます。
$ DEFINE/SYSTEM/EXECTIVE _$ DCPS$<queue-name>_INTERRUPT_WHEN_BUSY "1"
論理名DCPS$<queue-name>_INTERRUPT_NO_SYMCを定義すると,DCPS シンビオントはシリアル接続プリンタで通常の同期シーケンスを使用しません。 これはネットワーク・インタフェース・カード(NIC)でのLATプロトコルを使用するプリンタを含みます。 他のプロトコルで接続されたプリンタを使用する場合には, 影響はありません。この論理名により,従来バージョンで発生した問題を回避することができます。
次のタイプのプリンタや構成の場合,DCPSを稼動しているホストにはこのキュー論理名を定義することをお奨めします。
DCPSがシリアル接続のプリンタへジョブを出力する際には,PostScriptインタプリタと同期をとってからスタートさせます。 これはインタプリタのコマンド受け取りを確実にするためです。 しかし,PostScriptプリンタには同期制御文字を認識できない状態があるものがあります。 特に,HP PCL のような別のプリンタ言語をサポートするプリンタでは,ある状況の場合に正しく反応しない場合があります。 例えば,DEClaser3500がPS/PCL走査モードにある場合,DCPS がCTRL/T文字をシリアル・ポートに送った時,誤ってPCL モードにスイッチしてしまった場合がこれにあたります。この場合, プリンタはPostScriptモードではなくなっており反応しないため,プリント・ ジョブはスタートしません(ジョブは starting 状態でスタックされます) 。
論理名DCPS$<queue-name>_INTERRUPT_NO_SYMCはDCPSに,指定したキューの同期シーケンスを行わないように指示します。 この機能は, PS/PCL走査モードになっているDEClaser3500等のプリンタをDCPSが制御する場合に有用です。
プリント・キューの同期を無効にするには次のコマンドを使用します。
$ DEFINE/SYSTEM/EXECTIVE DCPS$<queue-name>_NO_SYNC "1"
同期の手順がない場合でも最近のほとんどのシリアル接続プリンタでは問題は起こりません。 これは,これらのプリンタではフロー制御が使われ, インタプリタがデータ受け取りをできない状態ではデータの送出を止めるからです。 しかし,プリンタはちょっとしたミスでミス印刷を行ったりジョブが消えてしまうことがあります。 ボー・レート,ストップ・ビット等の通信パラメータが正しく設定されてない場合などにこれらが起ります。 構成によりますが,プリンタ・データ・ケーブルが抜けたりプリンタの電源がオフになってもプリンタ・ ジョブがなくなる可能性があります。
論理名NO_SYMCによって,HP製PostScriptレベル2カートリッジつきのHPモデルIIID プリンタへ出力する際の問題は解決されます。これらのカートリッジには既知の問題があり, ホストに送る状態メッセージが壊れていました。 これによって,DCPSが同期シーケンスを使用しようとした時,ジョブは starting 状態でスタックされていました。
前述のリストにあるプリンタや同期シーケンスに問題があることがわかっているプリンタ以外には, この論理名を使用しないことをお奨めします。
ある状況下では,DCPS V1.1は次のメッセージを表示して終了します。
%DCPS-F-UNSEF, insufficient event flags
この問題はLAT接続のプリンタに複数のホストが同時に接続しようとしたときに発生します。 この問題は本バージョンで解決しました。
DCPSプリント・キューは次に示すすべての条件がそろったときハングします( シンビオント・プロセスは終了しません)。
復帰するには,ジョブを削除( DELETE/ENTRY )するか,キューを停止( STOP/QUEUE/RESET )します。
本バージョンのPCLトランスレータは,ファイルが両面印刷のエスケープ・ シーケンスを含んでいる場合でも,PostScriptレベル2プリンタで正しく印刷されるPostScript コードを生成します。
日本語DECprint Supervisor V1.1でPrintServerプリンタへジョブを出力し, リモート・ コンソールからアボートした場合,ジョブは再びキューイングされました。 日本語DECprint Supervisor V1.2ではこの問題は解決され, ジョブは削除されます。
日本語DECprint Supervisor V1.1では,複数の装置制御モジュールが存在し, かつDCPS$DEVCTL.TLBがライブラリ検索リストの先頭になく, さらにキャッシュがイネーブルの場合,シンビオントはエラーを出力します。 エラー・メッセージには,要求された装置制御モジュールが見つからず, キューを停止したと出力されます。この問題は日本語DECprint Supervisor V1.2 で解決されました。
日本語DECprint Supervisor V1.1よりDCPS$EXECUTION_QUEUE.COM に指定するデバイス名としてのP2は,31文字を越えた場合論理名になります。 日本語DECprint Supervisor V1.2ではデバイス名は39文字までは論理名として扱われません。 これは /ON 修飾子に指定できるの最大サイズです。
日本語DECprint Supervisor V1.2はこの他に次のような変更が加えられています。
%SYSTEM-E-EXQUOTA, process quota exceeded
エラーが発生した場合はSYSGENパラメータのMAXBUFの値を増やしてください。
以下の節では,日本語DECprint Supervisor V1.2の制限事項を記述します。
AppleTalkネットワーク・ソフトウェアが起動するまえに,AppleTalk 接続を使ったキューをスタートさせると, キューがスタートすることがありますが正しく機能しません。 これはDCPSがマルチストリーム・シンビオントとして稼動しており, かつ同じプロセスでもう1つのプリント・キューが稼動している場合に起ります。AppleTalk を使用する最初のプリント・ キューは次のエラーで停止し,キューはスタートしません。
%DCPS-W-ATK_FOR_VMS, Error connecting to AppleTalk for VMS driver
ただし,さらに別のキューがAppleTalk接続を使って同じプロセスでスタートしていた場合, エラーは報告されません。 これらのキューはスタートしますが,ジョブは"Starting"状態でキューに止まったままになります。 この問題を防止するために,DCPSプリント・キューを起動するまえにAppleTalk ネットワーク・ ソフトウェアを起動しておきます。
日本語DECprint Supervisor V1.1より,キューのスタート時に実行される機能は, 接続形態に関わらず同一のものになるように変更されました。 特にキューのスタート時にはプリンタへの接続は行われなくなりました。 これはキューがスタートしない可能性を最小限にするためです。 システムがブート中にキューがスタートした場合,エラーや遅延が起こってはならないため, このことは特に重要です。この変更は, 主にシステムに直接接続されたプリンタの場合に影響があります(TTAn またはTXAn装置)。従来のDCPSのバージョンではキューの起動時に直接接続のプリンタに接続を試み, プリンタの電源が入っているか確認することができました。 現在ではプリンタと接続の状態はジョブが印刷されるまでわかりません。
PostScriptのprintername の値にマルチナショナル文字が含まれている場合, セパレータ・ページの底部に印刷されるプリンタ名は誤った文字セットで表示されます。
次の表は業界標準のページサイズ/用紙サイズの名称と,DCPSで使用される用語との対応関係です。 業界標準の名称をPRINTコマンドで指定することもできますが, トレーラ・ページにはDCPSの用語で指定された用紙サイズの名称が印刷されます。
業界標準 DCPS用語 Com10 Business_envelope Monarch 7_envelope Statement Halfletter
日本語DECprint Supervisor V1.2以前のANSI トランスレータはA4用紙へのランドスケープ・モードで66行出力する場合に問題がありました。 サポートされているプリンタのなかにはA4 用紙への印刷可能領域が平均的な印刷領域より少し狭くなっているものがあります。 これらのプリンタでは,66行目の内容が失われてしまうか, 切れてしまいました。これはプリント・パラメータがPAGE_SIZE=A4, PAGE_ORIENTATION=LANDSCAPEのときに発生します。
日本語DECprint Supervisor V1.2に添付されるANSI トランスレータはA4用紙へのランドスケープ・モードでの印刷で66 行目も正しく出力できます。これを行うためにANSIトランスレータは使用するフォント(SGR 15) の縦方向のスペーシングを変更し,A4用紙の最大印刷可能領域の値を修正しました。 従来のトランスレータの出力結果の方を使いたい場合,DCPS キュー論理名を次の例のように定義します。
$ DEFINE/SYSTEM DCPS$<queue-name>_OLD_ANSI_PAGE_SIZES TRUE
なお,漢字ANSIトランスレータでは,この修正は行なわれていません。もし, 漢字トランスレータ使用時に,66行目が正常に印刷されない場合は, FULL_A4_LANDSCAPEのレイアップ定義ファイルを使用して印刷してください。