ジョブログを見ていると、こんなメッセージに出くわすことが良くある。
メッセージ. . : 印刷装置PRT01が見つからない。
原因−−印刷装置が見つかりません。回復手順−−印刷装置を作成(CRTDEVPRT
マンド)するか,あるいは印刷装置名が正しくない場合には,印刷装置名を変更
てからコマンドをやり直してください。
上記のメッセージへの対策を V7R3 環境で試してみました。
何でこのメッセージが出るの
5250 画面からプログラム実行している場合
例えば、下記の条件が重なっている
- サインオンしたユーザープロファイルの省略時の印刷装置が
*WRKSTN
。 - サインオン中に使っている表示装置の記述の中で
PRTDEV(*SYSVAL) OUTQ(*DEV)
が指定されている。表示装置、とはWRKDEVD
の画面で、タイプが5555
と表示されるやつ - システム値
QPRTDEV
にPRT01
が指定されている。
PRT01 に出力されてしまうまでの流れの例
- サインオンしたユーザープロファイルの中で
*WRKSTN
が指定されているので装置記述 (DEVD) を見に行く。 - 装置記述の中で
OUTQ(*DEV)
が指定されているのでPRTDEV
を見に行く。 -
PRTDEV(*SYSVAL)
が指定されているのでQPRTDEV
を見に行く。という流れになる。
対策
-
WRKUSRPRF
で省略時の印刷装置を変更するか、WRKDEVD
のOUTQ
か、PRTDEV
を変更すれば、PRT01
以外に変更できます。 - システム全体のデフォルト値を変更する権限のある人なら、
QPRTDEV
そのものを変更してしまうという必殺技もあり。 - 表示装置がたくさん存在する場合は、
WRKDEVD
で変更するのは大変。WRKDEVD
での変更は、5250 画面で操作する表示装置がDSP01
だけ、とかごく少数しかない場合向き。 - もちろんのことですが、
PRT01
を用意するという対策もあります。物理的なプリンタを用意するにはお金がかかるので仮想装置*VRT
として作ってしまうのが楽です。下記はその2つの例です。CRTDEVPRT DEVD(PRT01) DEVCLS(*VRT) TYPE(5553) MODEL(B01) IGCFEAT(2424J2)
CRTDEVPRT DEVD(PRT01) DEVCLS(*VRT) TYPE(5583) MODEL(200) IGCFEAT(2424J2)
バッチプログラムとして実行している場合
さらにジョブ記述 (JOBD) が関わります。
- ジョブ記述の中でも、表示装置の記述と同じく
PRTDEV
とOUTQ
が指定できます。- 装置記述では使用できなかった、
*WRKSTN
と*USRPRF
がジョブ記述では使えます。
- 装置記述では使用できなかった、
- ジョブ記述のなかで
USER
という項目もあって、特定のユーザープロファイル名を書くことも、*RQD
としてジョブをリクエストしたユーザーとすることもできます。
PRT01 に出力されてしまうまでの流れの例。
5250画面の場合に比べ、流れが一段階長くなる感じです。
- ジョブ記述に
USER(とあるユーザー) PRTDEV(*USRPRF)
が指定されているので「とあるユーザー」のユーザープロファイルを見に行く。 - ユーザープロファイルの中で
*WRKSTN
が指定されているので装置記述 (DEVD) を見に行く。 - 装置記述の中で
OUTQ(*DEV)
が指定されているのでPRTDEV
を見に行く。 -
PRTDEV(*SYSVAL)
が指定されているのでQPRTDEV
を見に行く。という流れになる。
対策
- ジョブ記述で
OUTQ
を変える。 - ジョブ記述で
OUTQ(*DEV)
にするならPRTDEV
を変える。 - 上記のほか、5250画面の場合も参照してください。