日本語Compaq DECprint Supervisor for OpenVMS
ユーザーズ・ガイド


前へ 次へ 目次 索引



第 17 章
デバッグのためのエラー・ハンドラの使用

装置制御ライブラリには,PostScriptプログラムをデバッグするのに役立つエラー・ハンドラが登録されています。エラー・ハンドラは出力の最後のページを印刷するとともに,エラーを特定するための情報も提供します。

17.1 プリント・ジョブへのエラー・ハンドラの組み込み

エラー・ハンドラは通常のプリント・ジョブに自動的に組み込まれるわけではありません(システム管理者がこの省略時の設定を変更した場合を除きます)。したがって,次の方法でエラー・ハンドラを明示的に起動しなければなりません。


$ PRINT/SETUP=LPS$ERRORHANDLER filename

エラー・ハンドラはPostScriptメッセージを返します。 第 18 章 に説明するように, /PARAMETERS=MESSAGES修飾子を使用すれば,これらのメッセージをファイルまたはプリンタに送信することができます。次の例を参照してください。


$ PRINT/QUEUE=PS40$A10/PARAMETERS=MESSAGES=KEEP FILE.PS

PostScriptアプリケーションを開発する場合には, 第 13 章 の説明に従って,エラー・ハンドラ・セットアップ・モジュールを含むようにフォームを定義することにより,エラー・ハンドラをより簡単に起動することができます。

17.2 エラー・ハンドラがPostScript環境に与える影響

エラー・ハンドラはユーザ・プログラムで変更された可能性のある定義を使用するのではなく,ディクショナリ systemdict からオペレータを参照します。

場合によっては,エラー・ハンドラがロードされるときに,プログラムが異なる動作を実行する可能性があります。たとえば,PostScriptサーバ・ループ・コンテキストの外部で exit オペレータを実行すると,エラー・ハンドラがロードされていない場合には, invalidexit エラーが発生します。しかし,エラー・ハンドラがロードされている場合には,プログラムは正しく終了し,エラーは発生しません。

17.3 エラー・ハンドラの例

例 17-1 に示すログ・ファイルの例は,次の PostScriptプログラムを対象にしています。


[/1st-level [/2nd-level [/3rd-level [/4th-level 56 ] ] ] (end)] 
/myproc { [ 8 8 ] 0 0 div setdash } def 
100 200 moveto 
myproc 

次のコマンドにはエラー・ハンドラが指定されており,ログ・ファイルが作成されます。


$ PRINT/PARAMETERS=MESSAGES=KEEP/SETUP=LPS$ERRORHANDLER filename

例 17-1 では,プログラムを実行したときにログ・ファイルに追加されるエラー・ハンドラからの出力を示しています。

例 17-1 エラー・ハンドラによって作成されるログ・ファイルの例

ERROR: undefinedresult (1)
OFFENDING COMMAND: div (2)
 
OPERAND STACK:  (3)
 
0 
0 
[ 8 8 ] 
[/1st-level [/2nd-level [/3rd-level  -array- ] ] (end) ] 
 
EXECUTION STACK: (4)
 
{ setdash } 
 
GRAPHICS STATE:  (5)
Current Matrix: [ 4.16667 0.0 0.0 -4.16667 0.0 3298.0 ] 
Color: 0.0 
Current position: x = 100.0, y = 200.0 
Line width: 1.0 
Line cap: 0 
Line join: 0 
Flatness: 1.0 
Miter limit: 10.0 
Dash pattern: [ ] 0.0 

ここに示したサンプル・ファイルの先頭に定義されている配列には,最初の要素としてその配列自体を示すポインタが含まれています。これは3レベルの深さに展開されます。配列の最も内部のバージョンは単に--array--として表現されます。

17.4 エラー・ハンドラからの出力の解読

エラーが発生した場合には,エラー・ハンドラは showpage コマンドを実行し,出力の最後のページを印刷します ( 例 17-1 を参照)。また,次の情報も出力します。

  1. エラーの名前

  2. エラーを生じたPostScriptオペレータ

  3. オペランド・スタックの内容
    エラー・ハンドラはスタックに入っている各オブジェクトの値を表示します。その場合,数値は10進数で表示します。配列のすべての要素,文字列,およびプロシージャは再帰的に表示されます。他のオブジェクトは別の方法で記述されます。たとえば,セーブ・オブジェクトの場合は--savelevel--が表示されます。
    最初に表示される項目はスタックの先頭のオブジェクトです。

  4. 実行スタックの内容
    実行スタックには,実行中のプロシージャの一部が示されています。先頭のオブジェクトは実行されつつあるオペレータとオペランドを含むプロシージャです。 2番目のオブジェクトは呼び出しプロシージャのまだ実行されていない部分です。

  5. グラフィック状態に関する情報:
    現在の変換マトリックス
    カラー(currentgray の値)
    現在の位置
    線幅
    線端の形状
    線の結合部の形状
    平滑さ
    結合部の限度
    破線のパターン

PostScriptコードでエラーを検出した場合には,ファイルを作成したアプリケーションを変更するか,またはアプリケーション・プログラマに問題を通知しなければなりません。

17.5 PostScriptデータの出力形式

PostScriptデータは,通常はPostScriptソース・ファイルに記述されたとおりに表現されますが,エラー・ハンドラがPostScriptデータを特別に表現することもあります。

PostScript言語は,エラー・ハンドラでは認識できない新しいデータ・フォーマットを含むように拡張できます。認識できないフォーマットのデータは2つの引用符と認識できないデータ・フォーマットの名前として表現されます。

17.6 エラー発生箇所の判定

PostScriptストリームのどこでエラーが発生したかを正確に判断することは困難であり,不可能な場合もあります。これは,実行スタックがコンテキストを一意的に識別できない可能性があるからです。この場合には,診断情報をPostScriptファイルに追加することができます。たとえば,エラーが showpage 定義に関連しているように思われる場合には,次に示すようにPostScriptコードを変更します。


/myshowpage 
   { 
   (At the top of my showpage\n) print flush 
   % some PostScript code 
   (Just before real showpage call\n) print flush 
   showpage 
   } def 


第 18 章
印刷に関する問題の解決

この章では, PostScriptプリンタで印刷するときに出力されるメッセージの解析方法と,発生する可能性のある問題の解決方法について説明します。問題を解決するために特権を必要とする場合には,システム管理者に連絡してください。

18.1 エラー・メッセージの表示と保存

プリント・ジョブに関する問題を検出し,問題を理解し,問題を解決するには,処理中のプリント・ジョブに関する情報を入手しなければなりません。次に,情報を収集する方法について説明します。

18.2 メッセージの解析

プリント・ジョブ・メッセージを解析することにより,プリント・ジョブに関する問題を解決し,より効率よくプリント・ジョブをキューに登録することができます。

まず,メッセージがどこから出力されたかを判断しなければなりません。一部のメッセージはプリンタのPostScriptコードから出力されます ( 第 18.2.1 項 を参照)。

また, DECprint Supervisor ソフトウェアからも多くのメッセージが出力されます。さらに,印刷中のファイルやOpenVMSシステムからメッセージが出力されることもあります( 第 18.2.2 項 を参照)。

PrintServerプリンタで印刷する場合には, PrintServer Supporting Host ソフトウェアからメッセージが出力されることもあります( 第 18.2.3 項 を参照)。

18.2.1 PostScriptエラー

PostScriptエラーは," offending command is name" という表現によって識別することができます。

PostScriptプリンタにはPostScriptインタプリタが含まれており, PostScriptコードをハードウェア機能に変換し,マーキング機能を通じてデータを物理ページに転送します。

多くのアプリケーションによってPostScriptファイルが作成され,また多くのプリンタで,それらのPostScriptファイルが印刷されています。しかし,ファイルとプリンタの間に完全に互換性があるとはかぎりません。

PostScriptの印刷に関する一部の問題は, 第 4.7 節 で説明する手法に従って解決することができます

アプリケーションでPostScript レベル 2ファイルが作成される場合には, PostScript レベル 2をサポートするプリンタが必要です。 PostScript レベル 1ファイルは, PostScript レベル 1プリンタとレベル 2プリンタの両方で印刷することができます

PostScriptエラーがPostScript以外のファイルを印刷することによって発生した場合には,そのファイルを作成したアプリケーションを変更しなければなりません。

仮想メモリ・エラー

すべての PostScript プリンタですべての PostScript イメージと文書を印刷できるわけではありません。使用しているプリンタのタイプに応じて,特定の PostScript ファイルがプリンタの仮想メモリの制限を超える場合と,超えない場合があります。これらのファイルを正しく印刷できるかどうかは,主に次の要素によって左右されます。

ファイルを印刷できず,次のエラー・メッセージが表示された場合には,プリント・ジョブはプリンタの仮想メモリの容量を超えています。


%DCPS-W-VMERROR, vmerror: PostScript virtual memory exhausted - 
offending command is string. 

次のいずれかの操作を実行することにより,問題を解決することができます。

18.2.2 DECprint Supervisorメッセージ

DECprint Supervisor ソフトウェアからのメッセージは, DCPSという接頭辞から始まります。これらのメッセージと,メッセージで問題が示されたときに実行しなければならない処置については, 付録 A を参照してください。

OpenVMSシステムでは,OpenVMS batch/printキューイング・システムを対象にしてキュー・マネージャが提供されます。プリント・ジョブが停止した場合や,キュー・マネージャによってプリント・ジョブが終了した場合には,ターミナルに OpenVMSメッセージが送信されます。PRINTコマンドに/NOTIFYを指定することにより,メッセージが通知されるように設定した場合には,OpenVMSキュー・マネージャと DECprint Supervisor ソフトウェアの両方からメッセージが出力されます。

18.2.3 PrintServer ソフトウェアに関する問題の解決

PrintServer ソフトウェアはPrintServerプリンタの管理機能を提供し,プリント・ジョブで問題が発生した場合に,そのことを示すメッセージを送信します。リモート・コンソール機能あるいはプリンタ・ステータス・モニタを使用すれば,プリンタの現在の状態を確認することができます。

18.2.4 PC あるいは Macintosh で作成されたファイルの問題

PC あるいは Macintosh アプリケーションで作成したファイルは,プリンタあるいは DCPS との互換性を持たない可能性があります。詳細については, 第 4.3 節 を参照してください。

18.3 オンライン・ヘルプの表示

PRINTパラメータに関するエラー・メッセージが出力された場合には, HELPコマンドを使用してパラメータ値が正しいかどうかを確認することができます。 PRINTパラメータに関するヘルプ情報は, HELP PRINT_PARAMETERコマンドを入力することにより表示することができます。

プリンタ固有の機能を制御するパラメータの場合には, HELPファイルは受け付けることができるパラメータを表示します。 HELP PRINT_PARAMETERの後にパラメータ名(たとえばINPUT_TRAY)を指定してください。続いて,プリンタ・モデルの名前を入力します。

たとえば,PrintServerプリンタの給紙トレイの値の一覧を表示するには,次のコマンドを入力します。


$ HELP PRINT_PARAMETER INPUT_TRAY PRINTSERVER


PRINT_Parameter 
 
  INPUT_TRAY 
 
    PrintServer_Printers 
 
 
           +-------------------------------------+ 
           | Input tray      |    PrintServer    | 
           | Values          | 20 | 32 | 40 | 17 | 
           +-------------------------------------+ 
           | MANUAL_FEED     |    |    |    | X* | 
           | NOMANUAL_FEED   |    |    |    | X* | 
           +-------------------------------------+ 
           | BOTTOM          |  X |  X |    |  X | 
           +-------------------------------------+ 
           | TOP             |  X |  X |  X |  X | 
           +-------------------------------------+ 
           | ENVELOPE_FEEDER |    |    |    |  X | 
           +-------------------------------------+ 
           | LCIT            |  X |  X |  X |  X | 
           +-------------------------------------+ 
           | MIDDLE          |  X |  X |  X |    | 
           +-------------------------------------+ 
 
              * With PrintServer Supporting Host V5.0 


前へ 次へ 目次 索引