| 日本-日本語 | 
      
  | 
  
      
  | 
  
| 
 | 
     
OpenVMS マニュアル | 
    
  
  | 
    
     
日本語HP DECprint Supervisor for OpenVMS
 | 
    
    
  
| 目次 | 索引 | 
装置制御ライブラリには,PostScriptプログラムをデバッグするのに役立つエラー・ハンドラが登録されています。エラー・ハンドラは出力の最後のページを印刷するとともに,エラーを特定するための情報も提供します。
 エラー・ハンドラは通常のプリント・ジョブに自動的に組み込まれるわけではありません(システム管理者がこの省略時の設定を変更した場合を除きます)。したがって,次の方法でエラー・ハンドラを明示的に起動しなければなりません。
 
 
![]()
17.1 プリント・ジョブへのエラー・ハンドラの組み込み
![]()
$ PRINT /SETUP=LPS$ERRORHANDLER file-name  | 
エラー・ハンドラは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 を参照)。また,次の情報も出力します。
現在の変換マトリックス
カラー(currentgray の値)
現在の位置
線幅
線端の形状
線の結合部の形状
平滑さ
結合部の限度
破線のパターン
PostScriptコードでエラーを検出した場合には,ファイルを作成したアプリケーションを変更するか,またはアプリケーション・プログラマに問題を通知しなければなりません。
![]()
17.5 PostScriptデータの出力形式
![]()
PostScriptデータは,通常はPostScriptソース・ファイルに記述されたとおりに表現されますが,エラー・ハンドラがPostScriptデータを特別に表現することもあります。
--array-- 通常の配列の場合
--proc-- 実行可能配列の場合
--packedarray-- パックされた配列の場合
--packedproc-- パックされた実行可能配列の場合
PostScript言語は,エラー・ハンドラでは認識できない新しいデータ・フォーマットを含むように拡張できます。認識できないフォーマットのデータは2つの引用符と認識できないデータ・フォーマットの名前として表現されます。
 PostScriptストリームのどこでエラーが発生したかを正確に判断することは困難であり,不可能な場合もあります。これは,実行スタックがコンテキストをユニークに識別できない可能性があるからです。この場合には,診断情報をPostScriptファイルに追加することができます。たとえば,エラーが showpage 
定義に関連しているように思われる場合には,次に示すようにPostScriptコードを変更します。
 
 
![]()
17.6 エラー発生箇所の判定
![]()
/myshowpage 
   { 
   (At the top of my showpage\n) print flush 
   % some PostScript code 
   (Just before real showpage call\n) print flush 
   showpage 
   } def 
 | 
| 目次 | 索引 | 
      
  | 
  ||||||||