集信ファイルの扱い
集信ファイルは、集信管理情報の集信形態および集信完了通知の設定値によって、ロック方法が異なります。
また、世代管理をする場合など、一時ファイルを作成する場合のロック方法についても説明します。
HULFT for Mainframe
集信ファイルを占有モードで割り当てます。
すでに、HULFTの集信ジョブにて集信ファイルが取得されている場合、集信ファイル使用時の扱いの設定により、解放されるまで待つか、集信処理がエラー終了します。
HULFT以外のジョブにて集信ファイルを共有モードまたは占有モードで取得されている場合、集信ファイルのリトライ回数および集信ファイルのリトライ間隔の設定に基づきリトライを行い、HULFTやHULFT以外のジョブがファイルを解放したときに割り当てを行います。
HULFT for IBMi
物理データファイルの場合
集信ファイルへロック状態「*EXCLRD」としてロックをオープン前にかけます。
登録モードの設定が“置き換え”の場合、またはチェックポイントからの再配信を要求されたがチェックポイントから集信が行えなかった場合、集信ファイルへ一時的にロック状態「*EXCL」としてロックをかけます。
すでに、HULFTやHULFT以外のジョブにて集信ファイルにロックがかかっている場合、集信ファイルロックリトライ回数および集信ファイルロック待ち時間の設定に基づき、ロックを行います。
保管ファイルの場合
集信ファイルへのロックをかけずにオープンします。オープンされたファイルのロック状態は、「*SHRNUP」となります。
すでに、HULFTやHULFT以外のジョブにて集信ファイルにロックがかかっている場合、集信ファイルロックリトライ回数および集信ファイルロック待ち時間の設定に基づき、オープンを行います。
HULFT for UNIX/LinuxまたはHULFT for NSK
ローカルファイルの場合
実ファイル名に対するHULFT独自のロックを集信ファイルオープン前にかけます。さらに、lockf()関数によるロックを集信ファイルオープン後にかけます。集信ファイルのクローズ(lockf()関数によるロックの解放)は、転送終了後すぐに行います。
実ファイル名に対するHULFT独自のロックの解放は、各種処理(履歴出力、正常時ジョブ、異常時ジョブ、またはCSV連携)終了後に行います。
すでに、HULFTやHULFT以外のプロセスにて集信ファイルにロックがかかっている場合は、集信オープンモードの設定により、そのロックが解放されるまで待つか、集信処理がエラー終了します。HULFT for NSKでは、lockf()関数、lockf64()関数の代わりに、fcntl()関数を使用しています。動作仕様はHULFT for UNIX/Linuxと同等です。
ネットワークファイルの場合
HULFTのネットワークファイルロックを集信ファイルオープン前にかけます。さらに、lockf()関数によるロックを集信ファイルオープン後にかけます。集信ファイルのクローズ(lockf()関数によるロックの解放)は、転送終了後すぐに行います。HULFTのネットワークファイルロックの解放は、各種処理(履歴出力、正常時ジョブ、異常時ジョブ、またはCSV連携)終了後に行います。すでに、HULFTやHULFT以外のプロセスにて集信ファイルにロックがかかっている場合は、集信オープンモードの設定により、そのロックが解放されるまで待つか、集信処理がエラー終了します。
ネットワークファイルは、HULFT8のEnterpriseグレードを導入している場合に使用できます。HULFT for NSKでは使用できません。
HULFT for Windows
ローカルファイルの場合
集信ファイルへミューテックスオブジェクトによるロックをかけた後、共有なしでオープンします。
すでに、HULFTやHULFT以外のプロセスにて集信ファイルにミューテックスオブジェクトによるロックがかかっている場合は、集信ファイルロック待機の設定により、そのロックが解放されるまで待つか、集信処理がエラー終了します。
HULFT以外のプロセスにて集信ファイルがオープンされている場合は、集信ファイルロックリトライ回数および集信ファイルロックリトライ間隔の設定に基づき、オープンを行います。
ネットワークファイルの場合
集信ファイルへミューテックスオブジェクトによるロックをかけた後、HULFTのネットワークファイルロックをかけます。その後、共有なしでオープンします。
すでに、HULFTやHULFT以外のプロセスによって集信ファイルにミューテックスオブジェクトによるロック、またはHULFTのネットワークファイルロックがかかっている場合は、集信ファイルロック待機の設定により、そのロックが解放されるまで待つか、集信処理がエラー終了します。
HULFT以外のプロセスによって集信ファイルがオープンされている場合は、集信ファイルロックリトライ回数および集信ファイルロックリトライ間隔の設定に基づいてオープンを行います。
ネットワークファイルは、HULFT8のServerグレードを導入している場合に使用できます。
(2) 「集信形態」が“複数集信”の場合
HULFT for Mainframe
集信一時ファイルを占有モードで割り当てます。
すでに、HULFTの集信ジョブにて集信一時ファイルが取得されている場合、「集信ファイル使用時の扱い」の設定により、解放されるまで待つか、集信処理がエラー終了します。
HULFT以外のジョブにて集信一時ファイルを共有モードまたは占有モードで取得されている場合、集信ファイルのリトライ回数および集信ファイルのリトライ間隔の設定に基づきリトライを行い、HULFTやHULFT以外のジョブがファイルを解放したときに割り当てを行います。
HULFT for IBMi
物理データファイルの場合
集信一時ファイルへのロックをかけずにオープンし、受信したデータを書き込みます。データ受信終了後、集信ファイルへロック状態「*EXCLRD」としてロックをオープン前にかけ、集信一時ファイルからの追加書きを行い、書き込み終了後、集信一時ファイルを削除します。
すでに、HULFTやHULFT以外のジョブにて集信ファイルにロックがかかっている場合、集信ファイルロックリトライ回数および集信ファイルロック待ち時間の設定に基づき、ロックを行います。
保管ファイルの場合
複数集信はできません。
HULFT for UNIX/LinuxまたはHULFT for NSK
ローカルファイルの場合
集信一時ファイルへlockf()関数によるロックをオープン後にかけ、受信したデータを書き込みます。データ受信終了後、実ファイル名に対するHULFT独自のロックを集信ファイルオープン前にかけ、さらにlockf()関数によるロックを集信ファイルオープン後にかけます。ロック後、集信一時ファイルからの追加書きを行い、書き込み終了後、集信一時ファイルを削除します。
集信ファイルのクローズ(lockf()関数によるロックの解放)は、転送終了後すぐに行い、HULFT独自のロックの解放は、各種処理(履歴出力、正常時ジョブ、異常時ジョブ、またはCSV連携)終了後に行います。
すでに、HULFTやHULFT以外のプロセスにて集信ファイルにロックがかかっている場合は、集信オープンモードの設定にかかわらず、そのロックが解放されるまで待ちます。HULFT for NSKでは、lockf()関数、lockf64()関数の代わりに、fcntl()関数を使用しています。動作仕様はHULFT for UNIX/Linuxと同等です。
ネットワークファイルの場合
集信一時ファイルへlockf()関数によるロックをオープン後にかけ、受信したデータを書き込みます。データ受信終了後、HULFTのネットワークファイルロックを集信ファイルオープン前にかけ、さらにlockf()関数によるロックを集信ファイルオープン後にかけます。ロック後、集信一時ファイルからの追加書きを行い、書き込み終了後、集信一時ファイルを削除します。
集信ファイルのクローズ(lockf()関数によるロックの解放)は、転送終了後すぐに行います。HULFTのネットワークファイルロックの解放は、各種処理(履歴出力、正常時ジョブ、異常時ジョブ、またはCSV連携)終了後に行います。
すでに、HULFTやHULFT以外のプロセスにて集信ファイルにロックがかかっている場合は、集信オープンモードの設定にかかわらず、そのロックが解放されるまで待ちます。
ネットワークファイルは、HULFT8のEnterpriseグレードを導入している場合に使用できます。HULFT for NSKでは使用できません。
HULFT for Windows
ローカルファイルの場合
集信一時ファイルへミューテックスオブジェクトによるロックをかけずに共有なしでオープンし、受信したデータを書き込みます。データ受信終了後、集信ファイルへミューテックスオブジェクトによるロックをかけ、共有なしでオープンし、集信一時ファイルからの追加書きを行います。書き込み終了後、集信一時ファイルを削除します。
すでに、HULFTやHULFT以外のプロセスにて集信一時ファイルが共有なしでオープンされている場合は、集信処理がエラー終了します。
また、HULFTやHULFT以外のプロセスにて集信ファイルにミューテックスオブジェクトによるロックがかかっている場合は、集信ファイルロック待機の設定により、そのロックが解放されるまで待つか、集信処理がエラー終了します。
HULFT以外のプロセスにて集信ファイルがオープンされている場合は、集信ファイルロックリトライ回数および集信ファイルロックリトライ間隔の設定に基づき、オープンを行います。
ネットワークファイルの場合
集信一時ファイルへロックをかけずに共有なしでオープンし、受信したデータを書き込みます。すでに、HULFTやHULFT以外のプロセスによって集信一時ファイルが共有なしでオープンされている場合は、集信処理がエラー終了します。
データ受信終了後、集信ファイルへミューテックスオブジェクトによるロックをかけ、続けてHULFTのネットワークファイルロックをかけます。その後、共有なしでオープンして、集信一時ファイルからの追加書きを行います。書き込み終了後、集信一時ファイルを削除します。
すでに、HULFTやHULFT以外のプロセスによって集信ファイルにロックがかかっている場合、または集信ファイルがオープンされている場合については、「(1) 「集信形態」が“単一集信”の場合」の説明を参照してください。
ネットワークファイルは、HULFT8のServerグレードを導入している場合に使用できます。
(3) 「世代管理」が“する”の場合
HULFT for Mainframe
「(1) 「集信形態」が“単一集信”の場合」と同様です。
ただし、占有モードを割り当てるファイル名は、世代管理番号を付与したファイル名ではなく、集信管理情報に登録されたファイル名を使用します。
HULFT for IBMi
物理データファイルの場合
集信一時ファイルへロック状態「*EXCLRD」としてロックをオープン前にかけ、受信データを書き込みます。データの集信の完了後、世代管理情報ファイルにロック状態「*SHRUPD」としてロックをかけて、ファイルをオープンします。その後、世代管理情報ファイル内のファイルIDが記録されているレコードへロックをかけ、世代管理番号を取得します。世代管理番号を取得後、世代管理情報ファイルへのロックを解放してから、集信一時ファイルのファイル名を世代管理番号を付与した集信ファイル名に変更します。最後に、ファイルIDが記録されているレコードを更新し、レコードへのロックを解放してから、世代管理情報ファイルをクローズします。
すでに、HULFTやHULFT以外のジョブにて集信一時ファイルまたは集信ファイルにロックがかかっている場合、集信ファイルロックリトライ回数および集信ファイルロック待ち時間の設定に基づき、ロックを行います。
すでに、HULFTやHULFT以外のジョブにて世代管理情報ファイルにロックがかかっている場合、システムファイルロックリトライ回数およびシステムファイルロック待ち時間の設定に基づき、ロックを行います。
保管ファイルの場合
集信一時ファイルへロックをかけずにオープンします。オープンされたファイルのロック状態は、「*SHRNUP」となります。データの集信の完了後、世代管理情報ファイルにロック状態「*SHRUPD」としてロックをかけて、ファイルをオープンします。その後、世代管理情報ファイル内のファイルIDが記録されているレコードへロックをかけ、世代管理番号を取得します。世代管理番号を取得後、世代管理情報ファイルへのロックを解放してから、集信一時ファイルのファイル名を世代管理番号を付与した集信ファイル名に変更します。最後に、ファイルIDが記録されているレコードを更新し、レコードへのロックを解放してから、世代管理情報ファイルをクローズします。
すでに、HULFTやHULFT以外のジョブにて集信一時ファイルまたは集信ファイルにロックがかかっている場合、集信ファイルロックリトライ回数および集信ファイルロック待ち時間の設定に基づき、オープンを行います。
すでに、HULFTやHULFT以外のジョブにて世代管理情報ファイルにロックがかかっている場合、システムファイルロックリトライ回数およびシステムファイルロック待ち時間の設定に基づき、ロックを行います。
HULFT for UNIX/LinuxまたはHULFT for NSK
ローカルファイルの場合
集信一時ファイルへlockf()関数によるロックをオープン後にかけ、受信データを書き込みます。データ受信終了後、世代管理情報ファイルへlockf()関数によるロックをオープン後にかけ、世代管理番号を取得します。集信一時ファイルを世代管理番号を付与した集信ファイル名に名前を変更し、世代管理情報ファイルへのロックを解放します。世代管理を行った場合、実ファイル名に対するHULFT独自のロック方式は使用しません。
すでに、HULFTやHULFT以外のプロセスにて世代管理情報ファイルにロックがかかっている場合は、そのロックが解放されるまで待ちます。HULFT for NSKでは、lockf()関数、lockf64()関数の代わりに、fcntl()関数を使用しています。動作仕様はHULFT for UNIX/Linuxと同等です。
ネットワークファイルの場合
HULFTのネットワークファイルロックを集信一時ファイルオープン前にかけます。
さらに、集信一時ファイルへlockf()関数によるロックをオープン後にかけ、受信データを書き込みます。データ受信終了後、世代管理情報ファイルへlockf()関数によるロックをオープン後にかけ、世代管理番号を取得します。集信一時ファイルを世代管理番号を付与した集信ファイル名に名前を変更し、世代管理情報ファイルへのロックを解放します。
すでに、HULFTやHULFT以外のプロセスにて世代管理情報ファイルにロックがかかっている場合は、そのロックが解放されるまで待ちます。
ネットワークファイルは、HULFT8のEnterpriseグレードを導入している場合に使用できます。HULFT for NSKでは使用できません。
HULFT for Windows
ローカルファイルの場合
集信一時ファイルへミューテックスオブジェクトによるロックをかけずに共有なしでオープンし、受信したデータを書き込みます。データ受信終了後、世代管理番号を取得します。集信一時ファイルを世代管理番号を付与した集信ファイル名に名前を変更します。
すでに、HULFTやHULFT以外のプロセスにて集信一時ファイルがオープンされている場合は、集信処理がエラー終了します。
また、HULFTやHULFT以外のプロセスにて世代番号を付与した集信ファイルがオープンされている場合は、集信処理がエラー終了します。
ネットワークファイルの場合
集信一時ファイルへHULFTネットワークファイルロックをかけた後に共有なしでオープンし、受信したデータを書き込みます。データ受信終了後、世代管理番号を取得します。集信一時ファイルを世代管理番号を付与した集信ファイル名に名前を変更します。
すでに、HULFTやHULFT以外のプロセスによって集信一時ファイルが共有なしでオープンされている場合は、集信処理がエラー終了します。
また、HULFTやHULFT以外のプロセスにて世代番号を付与した集信ファイルがオープンされている場合は、集信処理がエラー終了します。
すでに、HULFTやHULFT以外のプロセスによって集信ファイルにロックがかかっている場合、または集信ファイルがオープンされている場合については、「(1) 「集信形態」が“単一集信”の場合」の説明を参照してください。
ネットワークファイルは、HULFT8のServerグレードを導入している場合に使用できます。
(4) 「集信完了通知」が“正常時ジョブ完了”の場合
HULFT for Mainframe
「(1) 「集信形態」が“単一集信”の場合」と同様です。
HULFT for IBMi
物理データファイルの場合
集信完了通知の設定が“受信完了”の場合は、データ受信終了後にロックを解放しますが、“正常時ジョブ完了”の場合は、データ受信後の正常時ジョブへロックを引き継ぎ、正常時ジョブ終了後にロックを解放します。
保管ファイルの場合
集信完了通知の設定にかかわらず、データ受信終了後にロックを解放します。
HULFT for UNIX/LinuxまたはHULFT for NSK
ローカルファイルの場合
集信完了通知の設定が“受信完了”の場合、実ファイル名に対するHULFT独自のロックは、正常時ジョブの終了を待たずに解放します。“正常時ジョブ完了”の場合は、正常時ジョブの終了を待って解放します。
ネットワークファイルの場合
集信完了通知の設定が“受信完了”の場合、HULFTのネットワークファイルロックは、正常時ジョブの終了を待たずに解放します。“正常時ジョブ完了”の場合は、正常時ジョブの終了を待って解放します。
ネットワークファイルは、HULFT8のEnterpriseグレードを導入している場合に使用できます。HULFT for NSKでは使用できません。
HULFT for Windows
ローカルファイルの場合
集信完了通知の設定が“受信完了”の場合は、データ受信終了後にミューテックスオブジェクトによるロックを解放しますが、“正常時ジョブ完了”の場合は、データ受信終了後に集信ファイルをクローズし、正常時ジョブ終了後にミューテックスオブジェクトによるロックを解放します。
ネットワークファイルの場合
集信完了通知の設定が“受信完了”の場合は、データ受信終了後にミューテックスオブジェクトによるロックおよびネットワークファイルロックを解放します。“正常時ジョブ完了”の場合は、データ受信終了後に集信ファイルをクローズし、正常時ジョブ終了後にミューテックスオブジェクトによるロックおよびネットワークファイルロックを解放します。
ネットワークファイルは、HULFT8のServerグレードを導入している場合に使用できます。