5.9.2 一時ファイルの割り当ておよび後処理をする
#-adsh_file_tempコマンドを使用して,ジョブ定義スクリプト内で一時的に使用するファイルを生成し,ファイルパスをシェル変数および環境変数に割り当てます。割り当てた一時ファイルはジョブ終了時には削除します。
- 〈この項の構成〉
(1) 一時ファイルの割り当て
ジョブ定義スクリプト内で一時的に使用するファイルを作成し,指定されたファイル環境変数定義名と同名のシェル変数および環境変数にファイルパスを割り当てます。
一時ファイルの割り当てには,次の2つの方法があります。
新規に一時ファイルを作成して割り当てる場合
既存の一時ファイルを割り当てる場合
(a) 新規に一時ファイルを作成して割り当てる場合
chk属性にcreateを指定します。作成するファイルは0バイトです。UNIXの場合,作成される一時ファイルのパーミッションは,ファイルの所有者(作成者)の部分だけumask値の指定に従い,グループおよびその他のユーザーのアクセス権限部分は常に0になります。Windowsの場合は権限の指定はありません。
ジョブステップ内で割り当てた一時ファイルを後続ジョブステップでも使用する場合は,一時ファイル識別名を指定しnormal属性にkeepを指定します。
ジョブステップ内で割り当てた一時ファイルを後続ジョブステップで使用しない場合または,ジョブステップ外に指定する場合は,normal属性にdelを指定します。
ジョブステップ外で一時ファイルを割り当てる場合,一時ファイル識別名の指定およびnormal属性にkeepの指定はできません。
(b) 既存の一時ファイルを割り当てる場合
chk属性にexistを指定し,先行ジョブステップで指定した一時ファイル識別名を指定します。
先行ジョブステップで作成していない一時ファイルおよび先行ジョブステップの後処理で削除した一時ファイルの識別名は指定できません。
割り当てた一時ファイルを後続のジョブステップで使用する場合は,normal属性にkeepを指定します。
割り当てた一時ファイルを後続のジョブステップで使用しない場合は,normal属性にdelを指定します。
(2) 一時ファイルの後処理
一時ファイルは,割り当てたジョブステップまたはジョブ終了時に後処理をします。後処理では,ファイルパスを設定したシェル変数および環境変数を設定前の値に戻します。また,ジョブステップまたはジョブの終了状態およびnormal属性の指定値に従って次に示す処理をします。
- ジョブステップおよびジョブが正常終了した場合
normal属性にkeepを指定した場合は,ジョブステップ終了時に一時ファイルを削除しません。normal属性にkeepを指定したあと,後続ジョブステップで一時ファイルを使用しない場合は,ジョブ終了時に削除します。
normal属性にdelを指定した場合は,ジョブステップ終了時またはジョブ終了時に一時ファイルを削除します。
- ジョブステップおよびジョブがエラー終了した場合
normal属性にkeepを指定した場合は,ジョブステップ終了時に一時ファイルを削除しないで,ジョブ終了時に一時ファイルを削除します。
normal属性にdelを指定した場合は,ジョブステップ終了時またはジョブ終了時に一時ファイルを削除します。
(3) 一時ファイルの名称
一時ファイルの名称は,WindowsとUNIXとで異なります。それぞれで作成するファイル名称を次に示します。
- Windowsの場合
システム固定の文字列「ASH」,ディレクトリ内で一意の名称から作成します。
ASH一意の名称.tmp
- UNIXの場合
一時ファイルであることを示す文字列「TEMP」,ジョブ名,一時ファイル識別名とディレクトリ内で一意の名称から作成します。
一時ファイル識別名を指定した場合の一時ファイル名
TEMP_ジョブ通し番号_ジョブ名_一時ファイル識別名_一意の名称
一時ファイル識別名を省略した場合の一時ファイル名
TEMP_ジョブ通し番号_ジョブ名_一意の名称
(4) 格納ディレクトリ
一時ファイルを作成するディレクトリは,環境設定パラメーターのTEMP_FILE_DIRパラメーターで指定します。環境設定パラメーターに指定がない場合は,TEMP_FILE_DIRパラメーターの仮定値となります。TEMP_FILE_DIRパラメーターの詳細については,「7. 環境ファイルで設定するパラメーター」の「TEMP_FILE_DIRパラメーター(一時ファイルディレクトリのパス名を定義する)」を参照してください。
(5) 一時ファイルの使用例
一時ファイルを割り当てた場合の使用例を次に示します。
ジョブステップ内で割り当てた一時ファイルを後続ジョブステップで使用しない場合,またはジョブステップ外で一時ファイルを割り当てる場合
#-adsh_file_temp TEMP1 -chk create -normal del echo "test" > ${TEMP1}
先行ジョブステップ内で作成した一時ファイルを後続ジョブステップで使用する場合
#-adsh_step_start STEP1 #-adsh_file_temp TEMP1 -id TEST1 -chk create -normal keep →1. echo "test1" > ${TEMP1} #-adsh_step_end #-adsh_step_start STEP2 #-adsh_file_temp TEMP2 -id TEST1 -chk exist -normal keep →2. echo "test2" >> ${TEMP2} #-adsh_step_end #-adsh_step_start STEP3 #-adsh_file_temp TEMP3 -id TEST2 -chk create -normal keep →3. echo "test3" >> ${TEMP3} #-adsh_step_end #-adsh_step_start STEP4 #-adsh_file_temp TEMP4 -id TEST1 -chk exist -normal del →4. echo "test4" >> ${TEMP4} #-adsh_step_end #-adsh_step_start STEP5 #-adsh_file_temp TEMP5 -id TEST2 -chk exist -normal del →5. echo "test5" >> ${TEMP5} #-adsh_step_end
後続ジョブステップで使用できる一時ファイルを作成し割り当てる。一時ファイル識別名にはTEST1を指定する。
1.で作成した一時ファイル(識別名:TEST1)を割り当てる。割り当てた一時ファイルは,後続ジョブステップで使用可能とする。
後続ジョブステップで使用できる一時ファイルを作成し割り当てる。一時ファイル識別名にはTEST2を指定する。
2.で使用した一時ファイル(識別名:TEST1)を割り当てる。割り当てた一時ファイルは,ジョブステップ(ジョブステップ名:STEP4)終了時に削除する。
3.で作成した一時ファイル(識別名:TEST2)を割り当てる。割り当てた一時ファイルは,ジョブステップ(ジョブステップ名:STEP5)終了時に削除する。
(6) プログラムの入力ファイルをジョブ定義スクリプトに記述するための一時ファイル利用方法
ユーザープログラムのパラメーターを一時ファイルに記述して標準入力とする場合,パラメーターをジョブ定義スクリプト内に直接記述して,一時ファイルを自動的に作成・削除できます。使用例を次に示します。
#-adsh_step_start #-adsh_file_temp SYSIN -id parmfile -chk create -normal keep cat << @@@ > ${SYSIN} -in /files/indata -out /files/outdata -work /tmp @@@ uap ${SYSIN} #-adsh_step_end
一時ファイルを作成し,そこにヒアドキュメントを用いてジョブ定義スクリプトに記述した複数行文字列を書き込みます。ユーザープログラムは一時ファイルを標準入力として実行し,実行完了後に一時ファイルを削除します。