5.9.3 プログラム出力データファイルの割り当てをする
ユーザープログラムの出力結果をシステム実行ログと同様に一元管理するため,JP1/Advanced Shellは実行結果の出力用ファイルを自動的に作成します。このファイルをプログラム出力データファイルといいます。
#-adsh_spoolfileコマンドを使用して,ユーザープログラムが実行結果の出力に使用するプログラム出力データファイルのファイルパスを自動生成し,シェル変数および環境変数に割り当てます。
(1) プログラム出力データファイルの割り当て
プログラム出力データファイルのファイルパスを自動生成し,指定されたファイル環境変数定義名と同名のシェル変数および環境変数に割り当てます。これらの変数は,ジョブステップまたはジョブ終了時に割り当て前の値に戻します。ファイルの実体は作成しません。
(2) プログラム出力データファイルの名称
プログラム出力データファイルの名称は,ジョブ名またはジョブステップ名や番号,#-adsh_spoolfileコマンドで指定されたファイル環境変数定義名などから,ジョブ定義スクリプト内のファイル定義ごとに一意の名称とします。
割り当てるプログラム出力データファイルの格納ディレクトリは,環境設定パラメーターのSPOOL_DIRパラメーターに指定されたスプールルートディレクトリ内の,ジョブごとのディレクトリとなります。環境設定パラメーターに指定がない場合は,スプールルートディレクトリはSPOOL_DIRパラメーターの仮定値となります。SPOOL_DIRパラメーターの詳細については,「7. 環境ファイルで設定するパラメーター」を参照してください。
プログラム出力データファイル名の形式を次に示します。Windowsの場合,次のファイル名の後ろに「.sysout」の拡張子が付きます。
-
ジョブステップ外で割り当てた場合
0000_ジョブ名_ファイル環境変数定義名通し番号_ファイル環境変数定義名
-
ジョブステップ内で割り当てた場合
ステップ番号_ステップ名_ファイル環境変数定義名通し番号_ファイル環境変数定義名
なお,ルートジョブの環境ファイルのSPOOLJOB_CHILDJOBパラメーターにMERGE(子孫ジョブのスプールジョブをルートジョブのスプールジョブにマージする)を指定して実行された子孫ジョブの場合は,次のファイル名になります。
-
ジョブステップ外で割り当てた場合
C子孫ジョブ起動順序通し番号_0000_ジョブ名_ファイル環境変数定義名通し番号_ファイル環境変数定義名
-
ジョブステップ内で割り当てた場合
C子孫ジョブ起動順序通し番号_ステップ番号_ステップ名_ファイル環境変数定義名通し番号_ファイル環境変数定義名
プログラム出力データファイル名の可変部分には次の内容が出力されます。
- ステップ番号
-
すべてのジョブステップの通し番号です。ステップ番号は4桁の10進数で,先頭ジョブステップのステップ番号は1です。
例: 0001,0034,4095
- ジョブ名
-
#-adsh_jobコマンドで指定したジョブ名です。可変長で,最大8バイトです。指定した文字列が8バイトを超える場合は,最初の8バイトをジョブ名とします。
- ステップ名
-
#-adsh_step_startコマンドで指定したジョブステップ名です。可変長で,最大8バイトです。指定した文字列が8バイトを超える場合は,最初の8バイトをジョブステップ名とします。
- ファイル環境変数定義名通し番号
-
ジョブステップ外で割り当てたプログラム出力データファイルの連番,または各ジョブステップ内で割り当てたプログラム出力データファイルの連番です。ファイル環境変数定義名通し番号は3桁の10進数です。ジョブステップ外および各ジョブステップ内で1から255の値になります。
例: 001,034,255
- ファイル環境変数定義名
-
#-adsh_spoolfileコマンドで指定したファイル環境変数定義名です。
- 子孫ジョブ起動順序通し番号
-
1個のルートジョブから起動された子孫ジョブの起動順序を示す連番です。7桁の10進数で,0000001から9999999までの値です。
(3) プログラム出力データファイルの使用例
次のジョブ定義スクリプトを実行した場合を例に,プログラム出力データファイルの作成結果を説明します。
#-adsh_job JOBSAMPLE001 #-adsh_spoolfile SYS001 →1. #-adsh_spoolfile SYS002 →2. echo "----- job01 --------" 1>&2 echo "SYS001" > $SYS001 echo "SYS002" > $SYS002 #-adsh_step_start STEP01 #-adsh_spoolfile SYS001 →3. #-adsh_spoolfile SYS002 →4. echo "----- Step001 --------" 1>&2 echo "SYS001" > $SYS001 echo "SYS002" > $SYS002 #-adsh_step_end #-adsh_spoolfile SYS001 →5. #-adsh_spoolfile SYS002 →6. echo "----- job02 --------" 1>&2 echo "SYS001" > $SYS001 echo "SYS002" > $SYS002 #-adsh_step_start STEP02 #-adsh_spoolfile SYS001 →7. #-adsh_spoolfile SYS002 →8. echo "----- Step002 --------" 1>&2 echo "SYS001" > $SYS001 echo "SYS002" > $SYS002 #-adsh_step_end #-adsh_spoolfile SYS001 →9. #-adsh_spoolfile SYS002 →10. echo "----- job03 --------" 1>&2 echo "SYS001" > $SYS001 echo "SYS002" > $SYS002
このジョブ定義スクリプトを実行した場合,右端に付加した番号に応じて,次のファイル名のプログラム出力データファイルが作成されます。
- Windowsの場合
1. 0000_JOBSAMPL_001_SYS001.sysout 2. 0000_JOBSAMPL_002_SYS002.sysout 3. 0001_STEP01_001_SYS001.sysout 4. 0001_STEP01_002_SYS002.sysout 5. 0000_JOBSAMPL_003_SYS001.sysout 6. 0000_JOBSAMPL_004_SYS002.sysout 7. 0002_STEP02_001_SYS001.sysout 8. 0002_STEP02_002_SYS002.sysout 9. 0000_JOBSAMPL_005_SYS001.sysout 10. 0000_JOBSAMPL_006_SYS002.sysout
- UNIXの場合
1. 0000_JOBSAMPL_001_SYS001 2. 0000_JOBSAMPL_002_SYS002 3. 0001_STEP01_001_SYS001 4. 0001_STEP01_002_SYS002 5. 0000_JOBSAMPL_003_SYS001 6. 0000_JOBSAMPL_004_SYS002 7. 0002_STEP02_001_SYS001 8. 0002_STEP02_002_SYS002 9. 0000_JOBSAMPL_005_SYS001 10. 0000_JOBSAMPL_006_SYS002