3.4.7 プログラムへのファイル割り当て機能
- 〈この項の構成〉
(1) DD要素の書き方
ジョブステップで実行するプログラムが利用するファイルを,あとから自由に変更できるように,ファイル名をジョブ定義XMLファイルで指定できる。
ジョブ定義XMLファイルでは通常のファイルの場合は,次に示すように指定する。
<DD NAME="DD名" TYPE="FILE" DSN="ファイルのパス名"/>
DD要素には,TYPE属性値に通常ファイルであることを示す"FILE"を指定し,DSN属性値にファイルのパス名を指定する。
同じSTEP要素内で実行するCOBOL2002で作成したプログラムからは,NAME属性に対応した名称を指定することで,このファイルのパス名をアクセスできる。これによって,プログラムを修正することなく,ジョブ定義XMLファイルを変更するだけで,プログラムからアクセスするファイルを変更して割り当てることができる。
(a) DSN属性の指定方法
DSN属性の指定値および設定ファイルのパラメータの指定によってアクセスするパス名の扱いを次の表に示す。
DSN属性の値 |
パス名 |
---|---|
/[パス名/]ファイル名 |
絶対パスとして指定した絶対パスのファイルをアクセスする。 |
./[パス名/]ファイル名 |
プログラムが実行しているカレントディレクトリ(ワーキングディレクトリ)からの相対パスのファイルをアクセスする。 |
[パス名/]ファイル名 |
設定ファイルのPERMANENT_FILE_DIRで指定された特定のディレクトリからの相対パスのファイルをアクセスする。 |
${BJEX_DIR_任意名} [パス名/]ファイル名 |
設定ファイルのBJEX_DIR_任意名で指定されたパス名置換識別子を相対パスとしたファイルをアクセスする。 |
(2) DD要素をプログラムから使用する方法
ジョブ実行時にプログラムが入出力を行うファイルは,ジョブ定義XMLファイルのDD要素と対応づけができる。定義されたファイルのパス名は環境変数に設定されるため,プログラムから環境変数を参照してファイルを使用できる。
ジョブコントローラが設定する環境変数名は,DD要素のNAME属性に指定されたNAME値に文字列を付加した名称とする。付加する文字列は,EXEC要素に指定するプログラム言語によって異なる。環境変数の値を次の表に示す。
項目 |
プログラム言語 |
|
---|---|---|
COBOL |
指定なし |
|
EXEC要素の指定 |
<EXEC PGM="UAP1" LANG="COBOL" /> |
<EXEC PGM="UAP1" /> |
環境変数名 |
先頭に"CBL_"を付加したDD要素名("CBL_" + DD要素名)
|
先頭に"DDN_"を付加したDD要素名("DDN_" + DD要素名)
|
環境変数の値 |
DSN属性値 |
DSN属性値 |
DD要素の記述例を次に示す(恒久ファイル用ディレクトリなしの場合)。
<EXEC PGM="UAP1" /> <DD NAME="DD1" DSN="/home/file1" />
上記例の場合に設定される環境変数を次に示す。この場合,環境変数DDN_DD1を参照して,/home/file1のファイルを使用できる。
DDN_DD1=/home/file1
(3) 環境変数に設定される内容
環境変数に設定される内容を次の表に示す。
TYPE属性値 |
ファイル種別 |
環境変数に設定される内容 |
---|---|---|
FILE |
通常のファイル |
DSN属性で指定されたファイルのファイル名 |
DIR |
ディレクトリ |
DSN属性で指定されたディレクトリのディレクトリ名 |
GDG |
世代ファイル |
相対世代番号に対応するファイルのファイル名 |
TEMP |
一時ファイル |
ジョブコントローラプロセスが作成した一時ファイルのファイル名 |
TEMPISAM |
一時ISAMファイル |
ジョブコントローラプロセスが作成した一時ファイルのファイル名 |
DATA |
SYSINデータ |
ジョブコントローラプロセスが作成した一時ファイルのファイル名 |
DUMMY |
ダミーファイル |
|
SYSOUT |
SYSOUTデータファイル |
作成したスプールファイルのファイル名 |
LIB |
プログラム検索ディレクトリ |
|
PREST |
ジョブ間PRESTファイル |
ジョブコントローラプロセスが作成したジョブ間PRESTファイル名 |
TEMPPREST |
ジョブステップ間PRESTファイル |
ジョブコントローラプロセスが作成したジョブステップ間PRESTファイル名 |
(4) 環境変数名を任意の名称に設定する方法
ジョブコントローラが設定する環境変数名を,先頭に"DDN_"または"CBL_"を付加しない任意の名称とする場合,DD要素にRENAME属性を指定する。
COBOL2002の特殊な環境変数など,"DDN_"または"CBL_"で始まらない環境変数名を使用する場合は,RENAME属性を指定する。
RENAME属性を用いて,任意の環境変数名を指定する場合の記述例を次に示す。
<EXEC PGM="UAP1" /> <DD NAME="DD1" DSN="/home/file1" RENAME="ANYNAME" />
上記例の場合に設定される環境変数を次に示す。この場合,/home/file1のファイルを使用するための環境変数名は,"DDN_DD1"ではなく"ANYNAME"になる。
ANYNAME=/home/file1
RENAME属性を使用する場合の注意事項を次に示す。
-
同一のSTEP要素内では,RENAME属性の値が同じDD要素を複数指定しないこと。指定した場合,環境変数には後ろに指定したDD要素のファイルパスが設定される。
-
ファイル連結の場合,2番目以降のDD要素に指定したRENAME属性は無効になる。RENAME属性で環境変数名を変更する場合は,先頭のDD要素にRENAME属性を指定すること。
-
RENAME属性で指定した値を名称とする環境変数は,ジョブステップ終了時にジョブコントローラが削除する。したがって,RENAME属性に次に示す値を指定しないこと。
-
「3.21 環境変数」で示したバッチジョブ実行システムが使用する環境変数
-
ログインスクリプトで定義した環境変数など,ジョブコントローラ起動時にすでに設定されている環境変数
-
ジョブ定義XMLファイルのSETENV要素で指定した環境変数
-
ジョブステップで実行するユーザプログラムやシェルスクリプトの内部で使用する環境変数
-
-
JOBLIB DD要素およびSTEPLIB DD要素には,RENAME属性を指定しないこと。指定した場合,ジョブ定義XMLファイルの解析時にエラーとなる。
-
RENAME属性を使用した場合,そのDD要素で指定したFTYPE属性,RECFM属性,およびTRUNC属性は無効になる。また,DISP属性の第1パラメータに"MOD"(追加書き)を指定していても,ユーザプログラムからそのDD要素のファイルに対する書き込み方法はユーザプログラムの処理に依存する。
(5) ファイルの割り当て時に付与されるアクセス権限
バッチジョブ実行システムによって実行されるジョブの中でファイルが割り当てられる場合,次の原則でファイルへのアクセス権限が設定される。
(a) DD要素で割り当てるファイルとディレクトリ
ファイルのアクセス権限は,次のどれかに指定された権限値を持つファイルが割り当てられる。
-
ジョブ定義XMLファイル内のDD要素のFPERM属性またはPERMISSION要素
-
設定ファイルのPERMISSION_DIRパラメータおよびPERMISSION_FILEパラメータ
これらの情報を設定していない場合,バッチジョブ実行システムはファイルに対して権限0600を,ディレクトリに対して権限0700を仮定してファイルまたはディレクトリを割り当てる。
DD要素によってファイルまたはディレクトリが新規に割り当てられる場合,ユーザ環境のumask設定は無効であり,ジョブ定義XMLファイルまたは設定ファイルで指定された権限値がそのままアクセス権限として適用される。
(b) EXEC要素のPGM属性で指定したユーザアプリケーションが作成したファイルとディレクトリ
ユーザ環境のumaskに基づいてファイルが作成される。
(c) CDATA内に記述したシェルスクリプト内で作成したファイルとディレクトリ
ユーザ環境のumaskに基づいてファイルが作成される。