出力処理

本書は、出力の概念および処理方法について説明します。

1. 概要

出力処理では、ジョブの実行中に作成されたSYSOUTスプール・データセットをジョブの終了後にプリンターで出力処理する段階です。

OpenFrameでのプリンター出力は、物理的なプリンターを直接稼働させるのではなく、外部プリンター・ソリューションにプリントするデータと、プリントに使用されるリソース情報(FORMS、FLASH、PSIZEなど)を送信することを意味します。外部プリンター・ソリューションにデータと情報を送信するために、OpenFrame環境設定のprintサブジェクトのPRINTnセクションのCOMMAND,DRIVER_PATHキーのVALUE項目に必要なコマンドと共有ライブラリ・パスを設定します。

2. 出力

ジョブの実行が終了したら、作成されたスプール・データセットは出力処理されます。

出力は、JCLのFD文に宣言されたSOUTおよびその他の出力関連のオペランドによって決まります。

3. 出力処理

ジョブの実行が終了したら、スプール・データセットは出力単位でOUTPUTQに登録されます。登録された出力は、ofrpmsvrによってスケジューリングされ、プリント処理(外部プリンター・ソリューションの呼び出し)されます。ofrpmsvrは、OUTPUTQから出力状態を確認し、OpenFrame環境設定のprintサブジェクトのPRINTnセクションのCLASSキーのVALUE項目と出力クラスとを比較してスケジューリングし、出力後処理(OUTPUT DISPOSITION)に従って処理します。

3.1. 出力状態

OUTPUTQに登録された出力状態情報です。出力状態は、ofrpmsvrによる処理中に変更されます。

以下は、出力状態の種類です。

出力状態 説明

Unable

出力が作成されるときの初期状態でスケジューリングされずにOUTPUTQで待機している状態です。

Ready

OUTPUTQから取り出され、スケジューリングされる前の状態です。

Print

スケジューリングされ、PRINTERnまたはインターナル・リーダーに移動された状態です。

Hold

出力後処理がLEAVEの場合、出力処理後にOUTPUTQで待機している状態です。

Cancel

ユーザーによって出力処理がキャンセルされた状態です。

Error

PRINTERnまたはインターナル・リーダーに移動されたジョブにエラーが発生した状態です。

ジョブの実行中に登録される出力は、U(Unable)状態です。ofrpmsvrは、OUTPUTQを定期的にスキャンして、U(Unable)またはR(Ready)状態の出力を取り出してR(Ready)状態に更新し、ジョブをスケジューリングします。その後、ofrpmsvrは、出力処理をプリンターに転送してP(Print)状態に更新します。出力後処理が「LEAVE」の場合、正常処理後の状態はH(Hold)に変更され、OUTPUTQで待機することになります。

出力処理中にtjesmgrを使用して出力を「PURGE」に変更した場合は出力状態が C(Cancel)に変更され、プリンター処理中にエラーが発生した場合は、E(Error)に更新されます。

3.2. 出力クラス

出力に割り当てられた1バイトの文字で、A~Z、0~9が使用されます。出力クラスは、JCL SOUT文で指定します。

以下は、SYSPRINT FDの出力クラスを「B」に指定した例です。

\ FD SYSPRINT=DA,SOUT=B,FORM=AAA

3.3. 出力後処理(OUTPUT DISPOSITION)

出力後処理は、正常終了時の出力後処理(Normal Disposition)と異常終了時の出力後処理(Abnormal Disposition)に分けられます。

以下の図は、出力後処理のプロセスを示しています。

figure 5 1
出力後処理のプロセス

以下は、後処理の値についての説明です。

説明

WRITE

出力がスケジューリングおよび印刷されます。正常に処理されると、出力は削除されます。

HOLD

リリースされるまでスケジューリングされずにOUTPUTQで待機します。その後リリースされると、WRITEに変更されます。

KEEP

WRITEと同様に出力がスケジューリングおよび印刷されます。正常に処理されると、LEAVEに変更されます。

LEAVE

リリースされるまでOUTPUTQで待機します。その後リリースされると、KEEPに変更されます。

PURGE

OUTPUTQから削除します。

以下は、出力後処理を指定する方法です。

  1. 出力クラスに応じて環境設定に設定された値で指定されます。

    設定ファイルは、OpenFrame環境設定のtjesサブジェクトのOUTCLASSセクションでクラスに応じて出力後処理が定義されます。

    OUTCLASSがAの出力は「(WRITE、WRITE)」に指定され、OUTCLASSがBの出力は「(HOLD、PURGE)」に指定されます。出力クラスに対応する後処理の値がOUTCLASSセクションに定義されていない場合は、デフォルト値として「(PURGE、PURGE)」が使用されます。

    $ ofconfig list -n NODE1 -s tjes -sec OUTCLASS
    
    ===================================================================================
      SUBJECT   |     SECTION      |         KEY         |            VALUE
    ===================================================================================
        tjes    |     OUTCLASS     |          A          |         WRITE,WRITE
                |                  |          B          |         HOLD,PURGE
    ===================================================================================
  2. 印刷される出力は、出力後処理の値がWRITEの場合、出力クラス情報をOpenFrame環境設定のprintサブジェクトのPRINTERnセクションに設定されたクラス情報と比較し、情報が一致する場合は印刷されます。PRINTERnセクションに登録されたクラス情報にSYSOUTの出力クラスが含まれている場合、ofrpmsvrは、PRINTERnセクションに設定されたコマンドと共有ライブラリを使用して外部プリンター・ソリューションにデータとプリント・リソース情報を送信します。

PRINTERnセクションには最大9台のプリンターを指定することができ、それぞれCLASSCOMMANDDRIVER_PATHをキーとして指定できます。

CLASSキーには、対応するプリンターで処理できる出力クラスを値として指定します。SOUTに指定された出力クラスと一致するクラスが記述されていない場合、出力処理は実行されません。

COMMANDキーには、外部プリンター・ソリューションに渡すコマンドを値として指定します。

DRIVER_PATHキーには、外部プリンター・ソリューションとのインターフェースのためにOpenFrameが提供する共有ライブラリのパスを値として指定します。現在、OpenFrameでは、libbspprt.soとliblrsprt.soの2つの共有ライブラリをサポートしています。

libbspprt.soでは、出力に関する情報を含むoutputid.ccとoutputid.ecという2つのテキスト・ファイルを作成します。各ファイルに出力される情報は、JCL SOUTで宣言されたFD文でオペランドとして指定することができます。出力情報は以下のとおりで、OpenFrame XSPがサポートしていない項目は出力されません。各出力項目のJCL指定方法については、XSP版のOpenFrame Batch『ジョブ制御言語文法書』を参照してください。

ファイル 出力情報

*.ec

STORE:
CLS={出力クラス}
PATTERN=99
PROGRAMN={プログラム名}
INPUT_COUNT=1
INPUT1:
INPUT={出力パス}
RID_COUNT=1
INPUT_RID1:
RID={[プログラム名 |ジョブ名][code][overlayname][出力クラス]}

*.cc

CHANGE:
RI_COUNT=1
RI1:
RID={[プログラム名 |ジョブ名][code][overlayname][出力クラス]}
JOB="{ジョブ名}"
STEP="{ステップ名}"
JOBNO="{ジョブID}"
LPCI={form lpci} | STD1
OG={出力グループ名}
OVERLAYNAME={overlayname}
CODE={form code} / 0000
NOTE="{note}"
SHEETSIZE={forms form size}
LANDSCAPE=
PRINTMODE="{PORTRAIT | LANDSCAPE| forms format}"
CLISTN="{clist名}"
CLISTCMD="{BATCH | clistコマンド}"
DDN="{FD名}"
DSNAME="{データセット名}"
TERMINAL="{terminal}"
SIDE="{forms side}"
FILE="{データセット名}"
LU_NAME="{LU名}"
RI1_DI1:
DIST=ALL
SSET=01
COPY="{copies}" | 1

liblrsprt.soでもlibbspprt.soと同様に、outputid.ccとoutputid.ecという2つのテキスト・ファイルを作成しますが、各ファイルに出力される情報はlibbspprt.soの出力情報とは異なります。また、libbspprt.soと同じくJCL SOUTで宣言されたFD文のオペランドとして指定します。出力情報は以下のとおりで、OpenFrame XSPがサポートしていない項目は出力されません。各出力項目のJCL指定方法については、XSP版のOpenFrame Batch『ジョブ制御言語文法書』を参照してください。

ファイル 出力情報

*.ec

STORE:
CLS={出力クラス}
PATTERN={forms}
PROGRAMN=
INPUT_COUNT=1
INPUT1:
INPUT={出力パス}
RID_COUNT=1
INPUT1_RID1:
RID={ライター名} | 999999999999999999999999
OUTPUT:
CHARS={chars value[,chars value][,chars value][,chars value]}
WRITER={ライター名}
BURST={burst}

*.cc

CHANGE:
RI_COUNT=1
RI1:
RID={ライター名} | 999999999999999999999999
CODE=A | M | F | 0 | 1 | 2
JOB='{ジョブ名}'
STEP='{ステップ名}'
DD='{FD名}'
JOBNO='{ジョブID}'
MAXLL={レコード長}
COPIES={copies} | 1
LU_NAME="{LU名}"