Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【JP1/AJS】待ち合わせ条件の設定方法|PREWAITUSEの確認・有効化から実行例まで

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

JP1/AJS3の「待ち合わせ条件」を使うと、別のジョブネットやジョブの終了を待ってから処理を開始できます。

例えば、

JOBNET_A
毎日 01:30開始
    ↓
正常終了
    ↓
JOBNET_Bを開始

という制御を、A側を変更せずB側の設定だけで実現できます。

ただし、待ち合わせ条件を使うには、まず環境設定パラメーター PREWAITUSE が有効になっている必要があります。

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

PREWAITUSEを確認する

Windowsの場合は、まず次を確認します。

jbsgetcnf -c JP1AJSMANAGER | findstr /I PREWAITUSE

次のように表示されれば有効です。

"PREWAITUSE"="yes"

何も表示されない場合は、明示設定されていない可能性があります。

PREWAITUSE のデフォルトは no です。no の場合でもView上で待ち合わせ条件を定義できますが、実行すると待ち合わせ条件付きユニットは異常終了します。

PREWAITUSEを有効にする

例としてスケジューラーサービス名を AJSROOT1 とします。

まずスケジューラーサービスを停止します。

jajs_spmd_stop -n jajs_schd -F AJSROOT1

物理ホストの場合は、

jajs_config -k "[JP1_DEFAULT\JP1AJSMANAGER\AJSROOT1]" "PREWAITUSE"="yes"

を設定します。

論理ホストの場合は JP1_DEFAULT の部分を論理ホスト名に変更します。

設定後、スケジューラーサービスを起動します。

jajs_spmd -n jajs_schd -F AJSROOT1

最後に、

jbsgetcnf -c JP1AJSMANAGER | findstr /I PREWAITUSE

yes になっていることを確認します。

公式手順でも、スケジューラーサービスを停止して設定変更し、その後起動する流れになっています。

※本番環境では、スケジューラーサービス停止によるジョブへの影響を確認してから実施してください。

待ち合わせ条件の設定例

次の構成を例にします。

JOBNET_A
毎日 01:30開始

JOBNET_B
毎日 01:29開始

BをAより1分早く開始予定にして、Bの先頭ジョブにAを待つ条件を設定します。

JOBNET_B
└─ JOB_B1
   待ち合わせ対象:JOBNET_A

さらに、

待ち合わせる世代がない場合
→ 実行を開始しない

にします。

これでBの対応世代が起動した時点でAの世代がまだ存在しなくても、Aを待つ動作になります。

実際の動き

例えばAが45秒で終了するとします。

01:29
JOBNET_B開始
↓
JOB_B1はAの終了待ち

01:30
JOBNET_A開始

01:30:45
JOBNET_A正常終了
↓
待ち合わせ成立
↓
JOB_B1開始

Bを01:31などAの後ろの固定時刻にすると、Aが早く終わっても01:31まで待つことになります。

BをAより少し前に起動して待ち状態にしておけば、A終了後できるだけ早くBを開始できます。

起動条件は必要?

今回のように、

A終了
↓
B実行

だけを実現したい場合、A・Bともに「起動条件を使用する」は不要です。

待ち合わせ条件と起動条件は別機能です。

なお、起動条件を使用するジョブネットに待ち合わせ条件を設定したり、待ち合わせ対象にしたりする場合は、

PREWAITEXTEND=condition

が必要です。

同じスケジューラーサービス内で使う

待ち合わせ条件付きユニットと待ち合わせ対象ユニットは、

同じスケジューラーサービス配下

にある必要があります。

例えば、

AJSROOT1
├─ JOBGROUP_A
│  └─ JOBNET_A
└─ JOBGROUP_B
   └─ JOBNET_B

のようにジョブグループが違っていても、両方が AJSROOT1 配下なら利用できます。

待ち合わせ状態を確認する

実行中の状態は、JP1/AJS3 – Viewの、

待ち合わせ条件の状態一覧

で確認できます。

また、コマンドでは、

ajsshow -xw /JOBGROUP/JOBNET_B

で待ち合わせ状態を確認できます。

正常な状態なら、

Bの先頭ジョブ
→ 待ち合わせ未完了

A正常終了
→ 待ち合わせ完了
→ B開始

となります。

うまく動かない場合

待ち合わせ条件を付けると異常終了する場合は、まず、

jbsgetcnf -c JP1AJSMANAGER | findstr /I PREWAITUSE

を確認します。

PREWAITUSE=no または未設定なら、待ち合わせ条件を定義できても実行時に異常終了します。

一方、異常終了はしないもののAを待たずBが進む場合は、

待ち合わせる世代がない場合
→ 実行を開始しない

になっているか確認します。

また、Viewの「待ち合わせ条件の状態一覧」で、対象のA世代がすでに「完了」と認識されていないかも確認します。

まとめ

待ち合わせ条件を使う場合は、まず、

PREWAITUSE=yes

を確認します。

基本構成は、

JOBNET_A
01:30

JOBNET_B
01:29
↓
Bの先頭ジョブでAを待つ
↓
A正常終了
↓
B開始

です。

Aを変更せず、B側だけで依存関係を追加したい場合に便利な機能です。

なお、

起動条件を使用するジョブネット

を待ち合わせ対象にする場合は、通常の PREWAITUSE=yes に加えて PREWAITEXTEND=condition も確認してください。

タイトルとURLをコピーしました