4.1.5 オフライン中のDAMファイルのアクセス(オフラインの業務をするUAPからの操作)
バッチ環境ではDAMファイルの内容を出力できます。オフラインでオープンした物理ファイルは,処理を終了したら必ずクローズさせてください。なお,オフラインで使用する関数は,オンライン(SUP,SPP,MHP)では使用できません。使用した場合の動作は保証できません。
(1) DAMファイルにアクセスするときの名称
物理ファイルを,割り当てたときに設定した物理ファイル名を設定したdc_dam_iopen関数【CBLDCDMB('OPEN')】でオープンします。物理ファイルをオープンしたときにファイル記述子がリターンされます。ファイル記述子は,オープンしてからクローズするまでの処理で使うので,UAP内で保持しておいてください。
オープン以降の処理(ブロックの入力,出力)は,このファイル記述子を関数に設定してアクセスします。物理ファイルのクローズもファイル記述子を設定したdc_dam_iclose関数【CBLDCDMB('CLOS')】でクローズします。
(2) ブロックの入力と出力
dc_dam_iopen関数でオープンした物理ファイルのブロックを入出力するときは,次に示す2種類の方法があります。
-
ファイルの先頭から順番に入出力する場合
ブロックを入力する場合はdc_dam_get関数【CBLDCDMB('GET ')】,ブロックを出力する場合はdc_dam_put関数【CBLDCDMB('PUT ')】を呼び出します。このとき,物理ファイルをオープンしたあとに,UAPの処理で入力と出力を混在できません。いったん物理ファイルをクローズしてからにしてください。
-
任意のブロックを入出力する場合は,dc_dam_iopen関数にOVERWRITEを設定して物理ファイルをオープンしてください。そのほかの関数を呼び出して物理ファイルをオープンした場合は,任意のブロックを入出力できません。
任意のブロックを入出力には,2種類の方法があります。この2種類の方法は混在できません。どちらかの方法でブロックを入出力してください。
複数ブロックを一括入出力する指定は,ファイルの先頭から順番に入出力する場合だけ有効です。
(4) ブロックの初期作成と再作成
入力したブロックを物理ファイルに出力するときに,出力するブロック以降にある残りの領域を,ヌル文字で埋めるかどうかを設定できます。出力するブロック以降の残りの領域をヌル文字で埋めるときはINITIALIZEを設定します。ヌル文字でクリアしないときは,OVERWRITEを設定します。OVERWRITEを設定した場合には,任意のブロックの入出力ができます。このとき,出力したブロック以降の領域は更新されないでそのまま残ります。
残りのブロックをヌル文字で埋めるかどうかは,dc_dam_iopen関数の引数で指定します。この指定は,dc_dam_put関数でブロックを出力してdc_dam_iclose関数でクローズしたときに有効です。dc_dam_iclose関数を呼び出さないでUAPを終了した場合は,残りのブロックをヌル文字で埋めません。ヌル文字で埋める場合は,必ずdc_dam_iclose関数を呼び出してください。
オフライン中のDAMファイルのアクセス手順を次の図に示します。
|