PDF変換装置の作成または削除

11. PDF印刷装置の作成(CRTDEVPDF)

【説明】

CVTSPLFコマンドを使えば印刷スプールを個別にPDF変換することができますので
ユーザーCLPの中に CVTSPLFコマンドを組み込んでおけば個別にPDF変換することができます。

PDF変換の別の方法としてあるOUTQ に投入された印刷スプールは
すべて PDF変換するように することもできます。
ある OUTQ に投入されたスプールをすべて PDF変換するためには
PDF変換するための 印刷ドライバーが必要となります。
ここでは、そのPDF変換ドライバーが搭載されたPDF印刷装置の作成方法を紹介します。
PDF印刷装置とはすなわちPDFドライバーを
ユーザー指定のドライバーとして 指定されている印刷装置のことです。

PDF印刷装置を作成は CRTDEVPRT (印刷装置記述の作成)と同じように
PDF出力用の印刷装置を作成するためのコマンドです。

PDF印刷装置は *LAN クラスのタイプ 3812 の型式 1 の装置として作成されます。
(これ以外の指定は無効です。)
PDF印刷装置は後でくわしく説明しますが PDFドライバの指定によって
通常の印刷装置ではない、PDF印刷装置を作成することができます。

印刷装置名は任意の名前を命名することができます。
PDF印刷装置をプリンタと、どのように関連づけるかによって命名は異なってきます。

PDFの属性の設定

どのようなPDFを生成するのかPDFの属性をいくつか指定することができます。

ページ・サイズ
ページ・サイズ
*SPLF スプールの属性に任せます。
印字内容が用紙1ページに満たない場合には、
用紙中央に中央寄せされて印字されます。
*A4, *A5 A4または A5サイズを指定します。
*LETTER レター・サイズを指定します。
*LEGAL リーガル・サイズを指定します。
ページ・サイズに*SPLFを指定すると、
印字内容が用紙中央に中央寄せされて印字されます。
中央寄せではなく上詰めで印字したい場合は、
*SPLFの代わりに、*A4など、具体的な用紙を指定して下さい。
用紙方向
*LANDSCAPE 横方向
*PORTRAIT 縦方向
フォント
識別コード 次のフォントを指定することができます。
(使用可能なフォントの種類は予告なく変更されます。)
  • MSゴシック
  • MS明朝
  • HGゴシック
  • HG明朝
ポイント・サイズ 1-999, *NONE
指定の範囲の任意のフォント・サイズを指定することができます。

PDF の宛先の設定

またここで作成しようとするPDF印刷装置は
プリンターに印刷を指示するために使われることを目的とはしていません。
( プリンターにPDFを出力して印刷したい場合は
LPR印刷装置のプリンター型式または *PDFパラメータでPDF を指定すると
プリンターにPDFを出力して印刷することができます。)

A. OUTQ によって転送先が一意的に指定される。
ある OUTQ に投入された印刷スプールはすべて同じ転送先
(相手先アドレス, ユーザー, フォルダー)に転送する。
転送先は、PDF印刷装置記述の「リモート・ロケーション」に設定します。
B. 印刷スプール別に転送先指定する
印刷スプール個別に転送先を指定します。
この場合はPDF印刷装置のリモート・ロケーション・パラメータは
空にします。
転送先は、各印刷スプール・ファイルのスプール属性「ユーザー定義データ」に設定します。

によって作成する方法は若干、異なります。
A. の場合は出力するプリンタが決定している場合であり、
リモート・ロケーション・パラメータに転送先を指定します。
従って PDF印刷装置名も転送先が想起できるような名前がよいでしょう。
(例えば、名古屋工場のPCサーバーへ転送するのであれば NAGOYA と命名する。)

B. の場合はリモート・ロケーションは空にします。
PDFドライバーはリモート・ロケーションが空であれば
各スプール・ファイルの「ユーザー定義データ」から転送先を読み取ります。

送信された宛先のIPアドレスには FTPサーバー・デーモンが待機していることが必要です。

B. のためのPDF印刷装置はひとつあれば十分です。
従って Spoolライターの導入当初に PDFDEV という名前の装置をひとつ作っておいてください。

対話式適用業務の実行PCへのPDF転送

対話式適用業務でスプールを出力している場合、
対話式適用業務を実行しているPCのHDD内に直接PDFを転送することも出来ます。

この機能を使用するには、5250エミュレータとして、
  • IBM Personal Communications (PCOMM)
  • 弊社製品 AutoWeb
のいずれかを使用している必要があります。

PDのHDD内に直接PDFを転送するには、転送先のIPアドレスとして、特殊値 127.0.0.1 を指定します。

転送先のIPアドレスとして 127.0.0.1 が指定されると、PDF印刷装置は以下の動作を行います。

  • スプール・ファイルのジョブ名を表示装置名と見なし、
    その表示装置のIPアドレスを自動取得します。
  • 表示装置のIPアドレスに対してFTP通信を行い、PDFファイルを転送します。

転送先となるPCには、Windows の FTPサーバー が予め起動されている必要があります。
Vista以降のWindowsには、FTPサーバーが標準で搭載されています。
FTPサーバー の起動については「クライアントPCの設定」を参照してください。
また、必要であれば、セキュリティ・ソフトの設定を変更し、
IBM iからのFTP接続を許可するように設定して下さい。

装置名
(DEVD)
10桁以内の英文字より始また装置名を指定します。
装置クラス
(DEVCLS)
必ず「*LAN」を指定してください。
装置タイプ
(TYPE)
必ず「3812」を指定してください。
装置型式
(MODEL)
必ず「1」を指定してください。
LAN 接続機構
(LANATTACH)
必ず「*USRDFN」と指定してください。
ポート番号
(PORT)
必ず「1」を指定してください。
フォント
(FONT)
フォントの大きさを指定します。初期値は「11」です。
印刷装置エラー・メッセージ
(PRTERRMSG)
印刷エラーのメッセージのタイプを指定します。
*INFO または *INQ を指定することができます。
メッセージ待ち行列
(MSGQ)
印刷に関するメッセージの報告先を指定します。
省略値 : *SYSOPR は QSYSOPR にメッセージを送信します。
パリティーのタイプ
(PARITY)
必ず「*NONE」を指定してください。
停止ビット
(STOPBITS)
必ず「1」を指定してください。
ホスト印刷の変換
(TRANSFORM)
i5/OS の HPT変換を実行するかどうかを指示します。
必ず「*NO」を指定してください。i5/OS のHPT変換は使用しません。
リモート・ロケーション
(RMTLOCNAME)
出力先をOUTQ毎に設定する場合は、
出力先のFTPサーバーのIPアドレスを指定してください。
出力先をスプール毎に設定する場合は、 このパラメータは空にします。

このPDF印刷装置をクライアントPCに転送させることを
目的とする場合は「127.0.0.1」と指定してください。

リモート・アドレスを登録するときは リモート・ロケーションの
IPアドレスだけを入力して実行キーを押すと続けて
  • 遠隔ユーザー名
  • 送付先ディレクトリー
  • 出力ストリーム・ファイル
の値を入力することができるようになります。

または リモート・ロケーションの値に : (コロン)で区切って
次のように連続した値を入力することもできます。
(リモートIPアドレス):(送付先ユーザー名):
(送付先のディレクトリー名):(送付先ファイル名)
の順序で登録します。

【例】 このPDFドライバーで送付先 : 192.168.1.8 のユーザー: QTR に
          ディレクトリー : /temp にファイル名+(本日の日付)+(現在の時刻) の
          ファイルとして送付する。
192.168.1.8:QTR:/temp:%SPLF%DATE&TIME.PDF
ここでのディレクトリー名やファイル名を省略することもできます。
【例】 192.168.1.8/QTR

遠隔ユーザー名
(RMTUSER)
20桁以内の転送先のユーザー名を指定します。
前述のリモート・ロケーション(相手先IPアドレス)と、
この遠隔ユーザー名との組み合わせは予め、
ユーティリティー・メニューの
「31. 遠隔ユーザーの処理」(WRKRMTUSR)
によって事前に登録されていなければなりません。
送付先ディレクトリー
(DIR)
送付先のディレクトリー名(255)を指定します。
【例】 /MYPATH
(相手先が Windowsであっても \ ではなく / を使って表現してください。)
出力ストリーム・ファイル
(TOSTMF)
送付先に作成するPDFのファイル名([例] MYDATA.PDF) を指定します。
省略値の名前は *GEN であり、*GEN が指定されると
【例】A68BF.PDF
のようにPDF名が乱数発生によって自動生成されます。
予約語 %USER, %JOB, ... などによって自動生成することができます。
詳しくは下記を参照してください。
ユーザー 定義 ドライバー・プログラム
(USRDRVPGM)
PDFドライバーとしてライブラリー SPOOLWTR の
PDFDVR を指定してください。
テキスト ' 記述 '
(TEXT)
50文字以内のテキストを記述してください。

印刷スプール個別の宛先の設定

PDF印刷装置のリモート・ロケーション(RMTLOCNAME)パラメータ、
つまり宛先を空にして作成した場合は
PDFドライバーは各印刷スプール個別に送付先が指定されているものと解釈して
スプールの宛先を調べてその宛先に送付を試みます。

ユーザーは 宛先が空である場合は
ユーザーの責任において次のように印刷スプールに宛先を登録するようにしてください。

印刷スプール毎の宛先の登録の方法

印刷スプールのユーザー定義データに

(宛先IPアドレス(15A)):(ユーザー名(20A)):(送付先ディレクトリー(255A)):(出力ストリーム・ファイル(32A))

として登録します。
具体的な方法としては

【例】 TESTSPLF : サンプルCLP
------------------------------------------------------------------------------------------------------------------
0001.00              PGM                                                        
0002.00 /*-------------------------------------------------------------------*/ 
0003.00 /*   TESTSPLF  :  印刷スプール個別の配布先の指定                     */ 
0004.00 /*                                                                   */ 
0005.00 /*   2015/09/02  作成                                                */ 
0006.00 /*-------------------------------------------------------------------*/ 
0007.00              DCL        VAR(&RMTUSER) TYPE(*CHAR) LEN(20) +             
0008.00                           VALUE('QUATTRO             ')                 
0009.00              DCL        VAR(&RMTADDR) TYPE(*CHAR) LEN(15) +             
0010.00                           VALUE('192.168.1.43   ')                      
0011.00              DCL        VAR(&DIR) TYPE(*CHAR) LEN(255) +                
0012.00                           VALUE('/MYPATH/MYDIR')                        
0013.00              DCL        VAR(&TOSTMF) TYPE(*CHAR) LEN(32) +              
0014.00                           VALUE('*GEN                            ')     
0015.00              DCL        VAR(&USRDFNDTA) TYPE(*CHAR) LEN(255)            
0016.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(132)                  
0017.00              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)                  
0018.00              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)                  
0019.00              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)               
0020.00              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)               
0021.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))        
0022.00                                                                        
0023.00              CHGVAR     VAR(&USRDFNDTA) VALUE(&RMTADDR *TCAT ':' +     
0024.00                           *CAT &RMTUSER *TCAT ':' *CAT &DIR *TCAT +    
0025.00                           ':' *CAT &TOSTMF)                            
0026.00              OVRPRTF    FILE(*PRTF) USRDFNDTA(&USRDFNDTA) +            
0027.00                           OVRSCOPE(*JOB)                               
0028.00              CALL       PGM(MYLIB/MYPGM)                               
0029.00              DLTOVR     FILE(*PRTF) LVL(*JOB)                          
0030.00              RETURN                                                    
0031.00                                                                        
0032.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +            
0033.00                           MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +  
0034.00                           MSGFLIB(&MSGFLIB)                            
0035.00  SNDMSG:     IF         COND(&MSGID *EQ ' ') THEN(DO)                  
0036.00              SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) +    
0037.00                           MSGTYPE(*ESCAPE)                             
0038.00              ENDDO                                                     
0039.00              ELSE       CMD(DO)                                        
0040.00              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +           
0041.00                           MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) +            
0042.00                           MSGTYPE(*ESCAPE)
0043.00              ENDDO                        
0044.00              ENDPGM                       
------------------------------------------------------------------------------------------------------------------
【解説】
0023.00              CHGVAR     VAR(&USRDFNDTA) VALUE(&RMTADDR *TCAT ':' +     
0024.00                           *CAT &RMTUSER *TCAT ':' *CAT &DIR *TCAT +    
0025.00                           ':' *CAT &TOSTMF) 

によって &USRDFNDTA = &RMTADDR : &RMTUSER : &DIR : &TOSTMF
を作成しています。出力ストリーム・ファイル名が *GEN と指定された場合は
PDFドライバーはファイル名を自動生成します。( xxxxx20150830.PDF )
次に

0026.00              OVRPRTF    FILE(*PRTF) USRDFNDTA(&USRDFNDTA) +            
0027.00                           OVRSCOPE(*JOB)

によって印刷スプールが作成されると
印刷スプールのユーザー定義データに &USRDFNDTA が書き込まれます。
OVRPRTF FILE(*PRTF) とは、すべての印刷スプールに対して有効に働く一時変更です。
OVRPRTF FILE(QPRINT) とのように明示的に指定しても構いません。

出力ストリーム・ファイル名の自動生成

出力ストリーム・ファイル名は *GEN を指定すれば
乱数発生による自動生成による名前が命名されますが、
さらに次のような予約語による名前生成機能を持っています。

スプール・ファイル名 ( %SPLF ) %SPLF という文字列を印刷スプールのスプール・ファイルの名前に
置き換えます。
ユーザー名 ( %USER ) %USER という文字列を印刷スプールのユーザー名に置き換えます。
ジョブ名 ( %JOB ) %JOB という文字列を印刷スプールのジョプ名に置き換えます。
スプール番号 ( %SPLNO ) %SPLNO という文字列を印刷スプールのスプール番号に置き換えます。
日付 ( %DATE ) %DATE という文字列を印刷スプールの8桁日付に置き換えられます。
( 今日の日付ではありません。)
時刻 ( %TIME ) %TIME という文字列を8桁の印刷スプールの時刻に置き換えます。
(現在の時刻ではありません。)
連続番号の自動発生 %01d 〜 %09d という文字列を自動発生の連続番号に置換えます。
【例】%03d は 3桁の数字での自動発生の連続番号として、
001, 002, 003, ... のように自動生成します。
【例】
予約語指定例 説明 出力されるPDF名
%SPLF%02D.PDF スプール・ファイル名の後ろに
2桁の連続番号を付与した名前の
PDFを作成します。
QSYSPRT01.PDF, QSYSPRT02.PDF, ...
%SPLF_%DATE%TIME.PDF スプール・ファイル名の後ろに
日付と時刻を付与した名前の
PDFを作成します。
QPQUPRFIL_20161129143500.PDF, ....

12. 装置記述の表示(DSPDEVD)

【解説】

「11. PDF 印刷装置の作成」によってPDF印刷装置が正しく作成されたかどうかを
このオプションによって確認することができます。

なお「11. PDF 印刷装置の作成」(CRTDEVPDF) で装置を作成すれば、
同時に同じ名前のOUTQ も作成されます。
これは CRTDEVPDF のコマンド内で実行されるCRTDEVPRT による機能です。

装置を削除する必要場合は関連するOUTQの削除も必要です。
ただし OUTQ を削除するには OUTQ 内のスプールをすべてクリアーしなければなりません。

DSPDEVD の様子

リモート・ロケーションが空(スプール毎に宛先を指定)以外の場合には
リモート・ロケーションには

(転送先IPアドレス):(遠隔ユーザー名):(送付先ディレクトリー):(出力ストリーム・ファイル)

が表示されます。

PDF用紙のサイズおよび用紙の方向はユーザー定義オプションとして表示されます。

13. PDF 印刷装置のオンへの構成変更(WRKCFGSTS)

【解説】

PDF印刷装置を初めて作成したときだけは装置をオンに変更する必要があります。
一度、オンにすれば以降は IPL時に自動的にオンに構成変更されます。
この操作は最初に PDF印刷装置をオンにしたときのためだけのものです。

オプション「 1= オンへの構成変更」を使って構成をオンに変更してください。

14. PDF 印刷装置の削除(DLTDEVD)

【解説】

PDF 印刷装置(DEVD)を削除するために使用します。

PDF印刷装置を削除すると、それに対応する同じ名前のOUTQ も削除されます。
ただし OUTQ に印刷スプール・ファイルが残っていると削除することはできません。
したがってこのコマンドの実行前には対応する
OUTQの中の印刷スプールをすべてクリアーしておいてください。