3.4.2 ファイルの状態と後処理
ジョブステップで必要とするファイルは,DD要素のDISP属性の指定に基づいて準備する。実際に処理されたファイルは,ジョブステップの終了時にDD要素のDISP属性の指定に基づいて後処理をする。
ジョブステップで必要とするファイルの準備および終了時のファイルの後処理をするために指定するDD要素のDISP属性の内容を次に示す。
-
ファイルの状態
NEW,RNW,OLD,SHR,またはMODパラメータ
-
ジョブステップ終了時のファイルの後処理
DELETE,KEEP,またはPASSパラメータ
(1) ファイルの状態の指定
準備するファイルの状態を指定する。
排他/共用制御の詳細については,「3.13 ジョブ単位のファイルおよびディレクトリに対する排他/共用制御機能」を参照のこと。
(a) NEWパラメータ
該当するジョブステップで新しく作成するファイルの場合に指定する。ファイルがすでにある場合はエラーとなる。一時ファイルの場合は,同一ファイル名を指定するとユニークな名称を付けて別のファイルを作成する。
(b) RNWパラメータ
同一ファイルがある場合,該当するファイルを再使用する(すでにあるファイルをいったん削除し,再度ファイルを割り当てる)。同一DD要素から成るジョブの再実行をDD要素の変更なしで可能とする。一時ファイルでRNWパラメータを指定した場合,NEWパラメータが仮定される。
また,指定したファイルシステム上に同一ファイル名を持つファイルがない場合は,NEWパラメータを指定した場合と同様に新規に領域を確保する。
RNWパラメータを指定する場合の注意事項を次に示す。
-
PASSによる情報をRNW指定して参照する(受け取る)ことはできない。
-
RNWパラメータで指定した同一ファイルがすでにある場合,該当するファイルを削除する。このため,ファイルを保護する目的としてRNWパラメータの指定は同一ジョブの再実行を前提とする必要がある。
-
ディレクトリに対して,RNWパラメータを指定すると,ジョブ実行時にエラーとなり,ジョブが終了する。
(c) OLDパラメータ
該当するジョブステップの開始以前にすでにあるファイルを指定する。このパラメータは,ファイルに対しての書き込み,またはファイル自身を削除する場合に指定する。
ジョブステップ開始前にファイルパスの存在の有無を確認するかどうかは,DD_EXISTCHECK_COBOLパラメータ,またはDD_EXISTCHECKパラメータの指定に従う。詳細については,「8. 設定ファイル」の「DD_EXISTCHECK_COBOL(DD要素に指定したファイルパスの存在確認要否を実施するための定義)」,または「DD_EXISTCHECK(DD要素に指定したファイルパスの存在確認要否を実施するための定義)」を参照のこと。
(d) SHRパラメータ
該当するジョブステップの開始以前にすでにあるファイルを指定する。このパラメータは,ファイルに対して参照だけする場合に指定する。
ジョブステップ開始前にファイルパスの存在の有無を確認するかどうかは,DD_EXISTCHECK_COBOLパラメータ,またはDD_EXISTCHECKパラメータの指定に従う。詳細については,「8. 設定ファイル」の「DD_EXISTCHECK_COBOL(DD要素に指定したファイルパスの存在確認要否を実施するための定義)」,または「DD_EXISTCHECK(DD要素に指定したファイルパスの存在確認要否を実施するための定義)」を参照のこと。
(e) MODパラメータ
同一ファイルがある場合,該当するファイルに対して追加書きをするときに指定する。実行するプログラムがファイル操作ユティリティ※,またはEXEC要素のLANG属性の値がCOBOLの場合に追加書きをする。それ以外の場合の書き込み動作は,ユーザプログラムに依存する。
また,指定したファイルシステム上に同一ファイル名を持つファイルがない場合に,新規ファイルを割り当てるかエラーにするかをDISPMOD_NOFILEパラメータで指定することができる。詳細については,「8. 設定ファイル」の「DISPMOD_NOFILE(DD要素のDISP属性にMODを指定したファイルが存在しない場合の処理の定義)」を参照のこと。
DD要素のTYPE属性の値がFILE,TEMP,またはGDGの場合だけ追加書きが有効である。
DD要素のTYPE属性の値がTEMPISAMである場合は,書き込み動作はユーザプログラムに依存する。
DD要素のTYPE属性の値がLIB,PREST,またはTEMPPRESTの場合は,SHRパラメータが指定されたものとして動作する。
DD要素のTYPE属性の値がDIRの場合は,ジョブ定義XMLファイル解析エラーとなる。
注※ ファイル操作ユティリティでは,bjexu_scopy,bjexu_ismut,およびbjexu_ismut64の場合に追加書きできる。このうちbjexu_scopyでは,DD要素にDISP="MOD"を指定したとき,MODとして処理するか,またはOLDとして処理するかを選択できる。詳細については,「3.18.7(1)(a)ファイルの複写」を参照のこと。
(2) ファイルの後処理の指定
ジョブステップ終了時のファイルの後処理を指定する。エラーが発生した場合は,原則ジョブ終了になるが,ファイル削除エラーの場合は,警告メッセージを出力してジョブを続行する。
なお,ファイル削除エラーが発生しても,ジョブステップのリターンコードの内容は変更されない。
(a) DELETEパラメータ
ファイルの存在を示す情報をファイルシステムから削除し,そのファイルが占有していたスペースを,ほかのファイルへ割り当て可能とする。
(b) KEEPパラメータ
後続のジョブステップまたはジョブで,そのファイルの削除を要求(DELETEパラメータ指定)するまで,そのままの状態で保存する。
(c) PASSパラメータ
PASSパラメータは一時ファイルでだけ指定できる。
ジョブ内のジョブステップ間で同一の一時ファイル名を使用する場合,PASSパラメータを指定することによって順次,後続ジョブステップへそのファイルを受け渡すことができる。ただし,ジョブステップが異常終了した場合,ファイルの後処理でPASSパラメータは指定できない。後続ジョブステップへパスしたファイルは,ジョブ終了時に削除する。
一時ファイルに対してDISP="SHR"またはDISP="OLD"で割り当てをする場合,先行ジョブステップで一時ファイルの作成を行い,PASSパラメータを指定したDDのパス情報を受け取れた場合だけ割り当てが可能となる。
一時ファイルに対してDISP="MOD"で割り当てをする場合,先行ジョブステップで一時ファイルを作成し,PASSパラメータを指定したDDのパス情報を受け取れたときは受け取ったパスの一時ファイルを割り当て,パス情報を受け取れなかったときは新規の一時ファイルを作成する。
一時ファイルの受け渡しをするには,DSN属性値を同一にする必要がある。ファイル名にはDSN属性の最後の"/"より後ろの文字列だけ使用するが,一時ファイルの受け渡しに使用する識別名には最後の"/"より前も考慮されるので,パス名全体が同一になるようにすること。一時ファイルの受け渡しをする場合,誤りの原因となるためDSN属性値にはファイル名だけを指定すること。
-
例1
-
ステップSTEP01のDD名DD1で作成した一時ファイルは,ステップSTEP02のDD名DD2で使用できる。
-
ステップSTEP01のDD名DD1とステップSTEP02のDD名DD2で,TYPE=TEMP,DSN属性に同一のファイル名を指定する必要がある。
-
先行ステップであるステップSTEP01のDD名DD1では,一時ファイルを作成する必要がある。作成した一時ファイルを後続ステップで使用できるようにするためには,DISP属性の第2パラメータでPASSを指定する必要がある。PASSを指定しなかった場合,後続ステップで一時ファイルを使用できない。
-
後続ステップであるステップSTEP02のDD名DD2では,DISPの第1パラメータで,OLD,SHR,またはMODを指定する必要がある。NEW,RNWを指定した場合,先行ステップであるステップSTEP01のDD名DD1で作成した一時ファイルを使用できない。別の一時ファイルの新規作成となる。
-
-
例2
同一のDSN属性で,PASS指定した一時ファイルが複数ある場合
-
同一のDSN属性で,複数の一時ファイルを作成し,PASS指定することは,誤りの原因となるため,使用してはならない。
-
例では,ジョブステップSTEP01のDD名DD1とジョブステップSTEP02のDD名DD2で,同一のDSN属性"temp01"で一時ファイルが作成され,DISP属性の第2パラメータでPASSが指定されている。
-
同一のDSN属性"temp01"であっても,ジョブステップSTEP01のDD名DD1とジョブステップSTEP02のDD名DD2の一時ファイルは,異なる一時ファイルとなる。
-
ジョブステップSTEP03のDD名DD3は,ジョブステップSTEP01のDD名DD1で作成した一時ファイルを使用する。
-
ジョブステップSTEP04のDD名DD4は,ジョブステップSTEP03のDD名DD3のDISP属性でDELETEの指定が行われ削除されているため,ジョブステップSTEP02のDD名DD2で作成した一時ファイルを使用する。
-
-
例3
例2でジョブステップSTEP03のDD名DD3で,DISP属性でPASSを指定した場合
-
ジョブステップSTEP04のDD名DD4は,ジョブステップSTEP01のDD名DD1で作成した一時ファイルを使用する。
-
同一のDSN属性で,PASS指定された一時ファイルが複数ある場合,先に作成した一時ファイルから順に使用する。
-
例2,例3で示すように,同一のDSN属性で,PASS指定された一時ファイルが複数ある状況は,PASS指定の有無で,後続のジョブステップが使用する一時ファイルが異なる。誤りの原因となるので,同一のDSN属性である複数の一時ファイルを使用しないこと。
-
(d) ファイル割り当て処理中にエラーが発生した場合の後処理の指定
バッチジョブ実行システムでは,ファイルをDD要素に指定して割り当て,または割り当てたファイルの割り当てを解除する場合,DISP属性値の指定に従って処理する。
ジョブステップの割り当て処理中にエラーが発生し,割り当てたファイルの後処理をする場合,デフォルト状態(または設定ファイルのパラメータDD_DEALLOC_ON_ALLOCERRにOPT1を指定した場合)は,表3-7に従って処理する。
ジョブステップ開始以前に存在するファイルをDISP属性値の指定に関係なくKEEPで保存する運用をする場合,DD_DEALLOC_ON_ALLOCERRにOPT2 を指定することで表3-8に示す動作にできる。
ファイル割り当て処理中にエラーが発生した場合の後処理方法を,デフォルト状態またはDD_DEALLOC_ON_ALLOCERRパラメータにOPT1を指定している場合の動作を表3-7に,OPT2を指定している場合の動作を表3-8に示す。なお,表3-7と表3-8で異なる部分については下線で示す。
対象ファイル |
エラーが発生した時点でそのジョブステップで割り当て済みのDD要素の場合 |
エラーが発生した時点ではそのジョブステップで未割り当てのDD要素の場合 |
---|---|---|
一時ファイル |
DISP属性の第2パラメータがPASSの場合はジョブ終了時に削除し,PASS以外の場合はジョブステップ終了時に削除する。 |
そのジョブステップ開始前の状態のままとする。 |
恒久ファイル |
|
|
ディレクトリ |
恒久ファイルの処理と同様。※ |
|
世代ファイル |
|
対象ファイル |
エラーが発生した時点でそのジョブステップで割り当て済みのDD要素の場合 |
エラーが発生した時点ではそのジョブステップで未割り当てのDD要素の場合 |
---|---|---|
一時ファイル |
DISP属性の第2パラメータがPASSの場合はジョブ終了時に削除し,PASS以外の場合はジョブステップ終了時に削除する。 |
そのジョブステップ開始前の状態のままとする。 |
恒久ファイル |
|
|
ディレクトリ |
恒久ファイルの処理と同様。※ |
|
世代ファイル |
|
(3) ファイルの状態と後処理の指定省略
ファイルの状態と後処理を指定するDD要素のDISP属性またはDISP属性内のパラメータの一部を省略した場合,システムは次に示す処理をする。
(a) ファイルの状態のパラメータを省略した場合
NEWパラメータを仮定した処理をする。
(b) ファイルの後処理の第2パラメータを省略した場合
ファイルの状態によって,後処理を次に示すように仮定する。
-
SHR,OLD,MODパラメータ指定の場合
KEEPパラメータを仮定した後処理をする。
一時ファイルおよび一時ISAMファイルの場合は,PASSパラメータを仮定した後処理をする。
-
NEW,RNWパラメータ指定の場合
DELETEパラメータを仮定した後処理をする。
(c) ファイルの後処理の第3パラメータを省略した場合
第2パラメータと同じ値を仮定する。
(d) DISP属性を省略した場合
TYPE属性値がFILE,TEMP,TEMPISAM,GDGおよびDIRの場合,DISP="NEW,DELETE,DELETE"が仮定され,TYPE属性値がLIB,PREST,およびTEMPPRESTの場合,DISP="SHR,KEEP,KEEP"が仮定される。