3.4.5 一時ISAMファイル
一時ISAMファイルとは,索引順編成ファイル管理 ISAMによる索引順編成の一時ファイルである。キーを持つデータを処理する場合に,データの中間結果を一時的に格納するために利用する。
一時ISAMファイルはジョブ内で作成され,削除される暫定的なファイルである。ほかのジョブとの間で共用されることはない。このため,システム内で唯一になるように,システムによってユニークな名称が付けられる。
ジョブコントローラで作成する一時ISAMファイルは,主キーによるアクセスだけができる。
DD要素のTYPE属性にTEMPを指定した場合に作成される一時ファイルと同様に,ジョブ内のジョブステップ間で同一の一時ISAMファイル名を使用する場合,DISP属性にPASSパラメータを指定することによって,後続ジョブステップへその一時ISAMファイルを受け渡すことができる。
一時ISAMファイルを使用する場合,設定ファイルのISAMLIB_MODEパラメータに使用するISAMライブラリを指定する。
- 〈この項の構成〉
(1) 一時ISAMファイルの指定方法
一時ISAMファイルを使用する場合,DD要素のTYPE属性でTEMPISAMを指定する。DSN属性の指定は任意である。
一時ISAMファイルの作成時には一時ISAMファイルの属性を定義するために,次に示す属性を指定する必要がある。
-
ISKEY
キー長,キー位置,およびキー属性
-
ISRECFM
レコード種別(順編成固定長または可変長)
-
ISRECL
レコード長(レコード種別が可変長の場合は,最大レコード長および最小レコード長)
なお,ISKEY,ISRECFM,およびISRECL属性の指定はDISP属性の値にNEWパラメータを指定した場合に有効である。DISP属性の値がSHRまたはOLDパラメータの場合に指定したときは,ISKEY,ISRECFM,およびISRECL属性の指定は無効となる。ただし,属性値のチェックは行われる。
DISP属性の値にMODパラメータを指定した場合は,先行ジョブステップでDD要素のDISP属性の第2パラメータにPASSを指定した一時ISAMファイルがあれば,ISKEY,ISRECFM,およびISRECL属性の指定が有効となる。一時ISAMファイルがなければ,ISKEY,ISRECFM,およびISRECL属性の指定は無効となる。ただし,属性値のチェックは行われる。
- <例>DD名がSYSUT2のファイルを,一時ISAMファイルとして使用する場合
<DD NAME="SYSUT2" TYPE="TEMPISAM" DSN="WKDS" DISP="NEW,DELETE" ISRECFM="F" ISKEY="4,0,C" ISRECL="80" />
(2) 一時ISAMファイルを構成するファイル
ジョブコントローラで作成する一時ISAMファイルは,次に示すファイルから構成される。
-
キー定義ファイル(拡張子".KDF")
-
主キーファイル(拡張子".K01")
-
データファイル(拡張子".DRF")
(3) 一時ISAMファイルのファイル名
- 一時ISAMファイルのファイル名称は,システム内で唯一になるようにユニークな名称が付けられる。次に示すファイル名が生成される。
BJX※ユニークな名称.TMP
注※ "BJX"は固定である。
一時ISAMファイルを構成するファイル名は,上記の生成したファイル名称に拡張子が付けられる。一時ISAMファイルを構成するファイル名を次の表に示す。
構成ファイルの種類 |
構成ファイル名 |
---|---|
キー定義ファイル |
生成したファイル名称.KDF |
主キーファイル |
生成したファイル名称.K01 |
データファイル |
生成したファイル名称.DRF |
なお,ジョブコントローラが設定する環境変数「"CBL_"+DD要素名」,「"DDN_"+DD要素名」に格納されるパス名には,キー定義ファイル,主キーファイル,およびデータファイルの名称は設定されないで,拡張子を除いたファイル名が1つだけ設定される。
(4) 作成する一時ISAMファイルの定義内容
ジョブコントローラで作成する一時ISAMファイルでは,ISKEY,ISRECFM,およびISRECL属性で定義する情報以外は,次に示す表の内容で定義される。
一時ISAMファイルの定義情報 |
内容 |
---|---|
障害発生時のデータファイル内容保証 |
保証しない。 |
主キーのキー順序 |
昇順となる。 |
主キーの重複キー許可 |
認めない。 |
主キーの重複キー順序保証 |
保証する。 |
主キーの圧縮レベル |
圧縮なし。 |
主キーのスパース文字許可 |
認めない。 |
(5) 一時ISAMファイルを利用する場合の注意事項
-
DD要素のDISP属性値を指定しない場合,一時ISAMファイルを定義したジョブステップで新たにファイルを作成し,削除する(DISP属性の第1パラメータはNEW,第2,第3パラメータはDELETE)と見なされる。複数のジョブステップで使用する場合は,DISP属性の第2パラメータにPASSを指定する。
-
一時ISAMファイルは,設定ファイルのTEMP_FILE_DIRパラメータで指定したディレクトリに作成する。
-
DD要素のDISP属性の第2パラメータでKEEPを指定した場合,PASSが仮定される。
-
DD要素のDISP属性の第3パラメータでKEEPを指定した場合,DELETEが仮定される。
-
DD要素のDISP属性の第1パラメータでRNWを指定した場合,NEWが仮定される。
-
DD要素のDISP属性の第1パラメータでNEWまたはRNWを指定した場合,同一ファイル名を指定したときは,ユニークな名称を付けて別ファイルを作成する。
-
DD要素のDISP属性の第1パラメータでOLDまたはSHRを指定して割り当てできる一時ISAMファイルは,先行ジョブステップでDD要素のDISP属性の第2パラメータにPASSを指定した一時ISAMファイルだけである。
-
DD要素のDISP属性の第1パラメータでMODを指定した場合,先行ジョブステップでDD要素のDISP属性の第2パラメータにPASSを指定した一時ISAMファイルがあればその一時ファイルを割り当てるが,一時ISAMファイルがない場合は設定ファイルのDISPMOD_NOFILEパラメータの指定に従う。
-
一時ISAMファイルに対してファイルの連結指定(NAME属性が同一であるDD要素を連続して記述)をしないこと。
-
一時ISAMファイルに対するCOBOLプログラムの「OPEN OUTPUT」文の動作は,DD要素のDISP属性の指定内容に関係なく,追加書きとなる。レコードが格納されている一時ISAMファイルを再使用(レコードがない状態)したい場合は,次に示すどれかの対処をする必要がある。
-
COBOLプログラムで全レコードを削除する処理を追加する。
-
COBOLプログラムの実行時に次に示す環境変数のどちらかを指定する。
(i)環境変数CBLD_ファイル名にISAMDLを設定する。環境変数「CBLD_ファイル名」の「ファイル名」は,COBOLプログラムのSELECT句に指定したファイル名である。
(ii)環境変数CBLISAMDLにYESを指定する。
なお,上記のどちらかの環境変数を指定した場合,「OPEN OUTPUT」文の動作時に一時ISAMファイルが再作成(一時ISAMファイルを削除してから作成)される。
-
-
一時ISAMファイルを使用する場合,実行ユーザにWindowsのグローバルオブジェクトの作成権限を与えること。
-
一時ISAMファイルの名称はすべて大文字となる。
-
バッチジョブ実行システムは,一時ISAMファイルを構成するファイル名から拡張子(".KDF",".K01",".DRF")を除いたファイル(BJXユニークな名称.TMP)を作成する。このファイルは,バッチジョブ実行システムが一時ISAMファイルの名称を管理するために作成するものであり,一時ISAMファイルと同じ契機で作成・削除される。一時ISAMファイルを使用中にこのファイルを削除した場合,バッチジョブ実行システムはKAKC0165-Iメッセージを出力して処理を継続する。
-
バッチジョブ実行システムでは,ノーマルファイル形式のISAMファイルを扱い,ラージファイル形式のISAMファイルは作成できない。COBOL2002のユーザアプリケーションに対して渡せる一時ISAMファイルもノーマルファイル形式となる。