# ジョブ実行

## 配信前ジョブ

配信要求および送信要求を受け付けた時点でジョブを起動することができます。

起動したジョブが正常終了（exitコード = 0）すると配信処理を開始します。異常終了すると配信処理を行いません。たとえば、配信要求および送信要求を受け付けた時点で、配信データを作成するユーザージョブを起動し、配信データが作成された時点で、その配信データを配信するという処理に使用することができます。

配信前ジョブ機能を使用するには配信管理情報の配信前ジョブIDにジョブ起動情報に登録されているジョブIDを設定してください。

## 配信後ジョブまたは集信後ジョブ

配信処理または集信処理が終了した時点で、ジョブを起動することができます。配信処理または集信処理が正常終了した場合と異常終了した場合で、異なるジョブを起動することができます。

配信処理または集信処理が正常終了した場合にジョブを起動するには、ジョブ起動情報に登録されているジョブIDを配信管理情報または集信管理情報の正常時ジョブIDに設定してください。

配信処理または集信処理が異常終了した場合にジョブを起動するには、ジョブ起動情報に登録されているジョブIDを配信管理情報または集信管理情報の異常時ジョブIDに設定してください。

配信後ジョブまたは集信後ジョブの実行結果が、配信後ジョブ実行履歴ファイルまたは集信後ジョブ実行履歴ファイルに書き込まれます。

## 環境変数への変換

配信前ジョブ、配信後ジョブ、および集信後ジョブを起動するとき、HULFTは起動ジョブに対して環境変数を付加します。付加する環境変数の一覧は以下のとおりです。

表2.1 環境変数一覧

変数名 | 変換規則 | 配信前 | 配信後 | 集信後
--- | --- | --- | --- | ---
$HOST | 配信ホスト名または集信ホスト名に変換する | － | ○ | ○
$FILEID | ファイルIDに変換する | ○ | ○ | ○
$DATE (*1) | 配信開始日または集信開始日に変換する（形式:YYMMDD） | － | ○ | ○
$TIME (*1) | 配信終了時間または集信終了時間に変換する（形式:HHMMSS） | － | ○ | ○
$COUNT | 配信したファイルまたは集信したファイルのレコード件数に変換する | － | ○ | ○
$FILENM | 配信ファイル名または集信ファイル名に変換する | ○ | ○ | ○
$STATUS | 配信完了コードまたは集信完了コード 完了コードは、以下を参照してください。 HULFT10 for Linux/AIX エラーコード・メッセージ : 完了コード | － | ○ | ○
$DETAIL | 配信詳細コードまたは集信詳細コード 詳細コードは、以下を参照してください。 HULFT10 for Linux/AIX エラーコード・メッセージ : 詳細コード | － | ○ | ○
$SDATE | 配信開始日または集信開始日に変換する（形式：YYMMDD）(*2) | － | ○ | ○
$EDATE | 配信終了日または集信終了日に変換する（形式：YYMMDD）(*2) | － | ○ | ○
$STIME | 配信開始時刻または集信開始時刻に変換する（形式:HHMMSS） | － | ○ | ○
$ETIME | 配信終了時刻または集信終了時刻に変換する（形式:HHMMSS） | － | ○ | ○
$SDATE2 | 配信開始日または集信開始日に変換する（形式：YYYYMMDD）(*3) | － | ○ | ○
$EDATE2 | 配信終了日または集信終了日に変換する（形式：YYYYMMDD）(*3) | － | ○ | ○
$MSG0 | メッセージ0に変換する | ○ | ○ | ○
$MSG1 | メッセージ1に変換する | ○ | ○ | ○
$MSG2 | メッセージ2に変換する | ○ | ○ | ○
$MSG3 | メッセージ3に変換する | ○ | ○ | ○
$MSG4 | メッセージ4に変換する | ○ | ○ | ○
$MSG5 | メッセージ5に変換する | ○ | ○ | ○
$MSGL0 | 拡張メッセージ0に変換する | ○ | ○ | ○
$MSGL1 | 拡張メッセージ1に変換する | ○ | ○ | ○

○ | : | 利用可能
－ | : | 利用不可

*1 | : | この環境変数は、下位バージョンとの互換のために残されています。「$SDATE」または「$ETIME」を使用することをお勧めします。
*2 | : | 配信後ジョブおよび集信後ジョブの日付の、年月日の順序は、YYMMDDの形式が適用されます。
*3 | : | 配信後ジョブおよび集信後ジョブの日付の、年月日の順序は、システム動作環境設定の日付形式（datefmt）で設定した形式が適用されます。

注意

- 集信管理情報の集信完了通知が“正常時ジョブ完了”の場合、「$EDATE」、「$EDATE2」、「$ETIME」、および「$TIME」は、ジョブの完了日時ではなく、転送の完了日時に変換されます。

- 配信前ジョブで利用できない環境変数を利用した場合、不定値が設定されます。

- 以下のいずれかの場合、「$FILENM」、「$MSG0」～「$MSG5」、および「$MSGL0」～「$MSGL1」の環境変数でファイル名やファイルパスに置き換えられる文字列は、半角英数字で指定してください。

  - 配信側ホストと集信側ホストでシステムロケールが異なる場合

  - HULFT Ver.8.1未満と通信する場合

  - HULFT7通信モードが“有効”な場合

また、ジョブ起動情報の起動ジョブの指定時に、上記の環境変数を起動シェルスクリプト内に指定すると、自動的に環境変数の値に置き換えアプリケーションを起動します。

【変換例】

  表2.2 変換例

  変換する項目 | 変換値
  --- | ---
  配信ホスト名 | HOST0001
  ファイルID | FILEID01
  配信開始日 | 20141221
  配信開始時刻 | 155400
  配信終了日 | 20141221
  配信終了時刻 | 160232
  配信レコード件数 | 12000
  配信ファイル名 | /hulft/rcv/fileid01.dat
  配信完了コード | 0
  配信詳細コード | 0

【スクリプト例】

      #! /usr/bin/sh
      echo $HOST $FILEID $SDATE2 $ETIME > user.log
      echo count=$COUNT status=$STATUS detail=$DETAIL >> user.log
      if [ $STATUS -eq 0 ]
      then
           echo $FILENM >>user.log
           cp $FILENM $FILENM.bak
      fi

【実行結果】

      HOST0001 FILEID01 20141221 155400
      count=12000 status=0 detail=0
      /hulft/rcv/fileid01.dat

## ジョブ実行時の留意点

ジョブが実行できない場合は、以下の内容を確認してください。

権限の確認

権限によってはジョブが起動されない場合があります。ジョブの実行権限については、「スーパーユーザー（root）以外での運用」を参照してください。

ジョブ起動情報の設定確認

起動ジョブの設定が正しいかどうか確認してください。

ジョブ記述の存在確認

起動ジョブに記述したコマンドなどが存在するかどうか確認してください。

コマンドの確認

ジョブ起動情報に登録されているコマンドをコマンドラインで実行し確認してください。

環境変数の設定確認

実行ジョブ内で使用する環境変数が定義されているか確認してください。未定義の場合、動作は環境に依存します。

標準出力または標準エラー出力を利用するジョブ

ジョブ内で標準出力または標準エラー出力を利用するコマンド（echoコマンド）を指定した場合、環境によってはジョブが異常終了する場合があります。

シェルスクリプトまたはコマンドの場所を確認

HULFTではネットワーク上にあるシェルスクリプトまたはコマンドをジョブとして実行することはサポートしていません。起動ジョブに設定されているシェルスクリプトまたはコマンドがローカルマシン上にあるかどうか確認してください。

注意

環境変数「$STARTTRANSFERID」および「$NEWTRANSFERID」は予約語に指定されているため、ジョブの中で使用することはできません。指定した場合は、ジョブが動作しません。