($title_img_alt)

こちらからの投稿は、先頭に表示されているコメントへの返信になります。
ファイルをロックせずにロック状態を調べる方法 AS400 初心者 さん [ 2月10日(金) 10時54分 ]
CLのプログラムであるファイルのロック状態を見て
続きの処理の実行をするかどうかを分岐させたいと考えています。

ALCOBJだと、ファイルのロック状況を確認後にロックされていなければ
ファイルをロックしてしまうと聞きました。
ファイルをロックせずにロック状況のみをCL内で調べる方法はありますでしょ
うか?
RE:ファイルをロックせずにロック状態を調べる方法 IKD さん [ 2月11日(土) 9時26分 ]
ALCOBJ は、レコードをロックしますがロックに成功すれば
DLCOBJ で解除してしまえばよいだけです。


             ALCOBJ     OBJ((QTRFIL/SHOHIN *FILE *SHRUPD)) WAIT(0) 
             MONMSG     MSGID(CPF1085) EXEC(DO)                    
             SNDPGMMSG  MSG(' 他で使用中です。 ')                  
             GOTO       LCKEND                                     
             ENDDO                                                 
             DLCOBJ     OBJ((QTRFIL/SHOHIN *FILE *SHRUPD))         
             SNDPGMMSG  MSG(' レコード・ロックはありません。 ')    
LCKEND:   

CHKRCDLCK コマンド(パラメータなし)を使えばこの現在のジョブにレコード・ロックが
あるかどうか調べることができますが特定のファイルのレコード・ロックを調べることは
できません。

APi: QDBRJBRL は

   CALL       PGM(QDBRJBRL) PARM(&RCVVAR &RCVLEN +
              'RJBL0100' &JOBINFO &APIERR) 

のようにして ジョブを &JOBINFO に指定してレコード・ロックを &RCVVAR に戻すことが
できますが、これも特定のファイルのレコード・ロックを調べる目的では使用できません。

やはり一般的には ALCOBJ で成功すればレコード・ロックはなかった、
失敗すればどこか他でレコード・ロックされていると判断するのが一番、簡単です。
どこでロックされているかは WRKOBJLCK で調べることになります。
RE:ファイルをロックせずにロック状態を調べる方法 AS400 初心者 さん [ 2月13日(月) 14時32分 ]
IKD様、コメントありがとうございます。

実はそのロック状態を調べて処理を行うという処理が
1分単位に動く可能性がある処理になります。

処理自体は一瞬で終わるのですが、1分単位で一日に何度も動く可能性のある
処理になりまして、短い時間でもファイルロックされてしまいますと
他の更新系の処理を行うところで影響が出るのはと思い
ファイルロックせずにロック状態を調べる方法がないかを質問させていただき
ました。

通常はALCOBJでファイルロックを判断するということで了解いたしました。
ありがとうございました。

お名前

パスワード

メールアドレス

タイトル

ホームページ

アドレス

項目