(1)レコード排他的ロックについて DB2/400データ・ベース・プログラミングの手引き SC88-5326-01 に記述があるはずですが、このマニュアルは最新ではないかもしれません。 レコード・レベルの排他的ロックは RPGプログラマーの手引きにも解説はあるはずですし RPG解説書の CHAIN や READ にも CHAIN(N) や READ(N) の解説もあるはずです。 レコード・レベルの排他的ロックの機能については、ほとんどのRPGプログラマーは ご存知であると思います。 これを意識しておかないと複数ユーザーからの同時更新について考慮することは できませんから。(2)ファイル・レベルの排他ロックの方法 確かにファイル・レベルで排他ロックを行いたい場合があります。 月次更新バッチ・プログラムの実行中に日次の入力を行われると 整合性が合わなくなってしまいます。 そこで月次更新のプログラムを実行中は他からの更新を禁じるようにする必要があります。 これを行うのが ALCOBJコマンドです。 ALCOBJ コマンドによって他から更新を行わないように、あるいはもっと強く 読取りさえ禁止させることができます。 ALCOBJ OBJ((&FILLIB/&FILE *FILE *SHRUPD)) MONMSG MSGID(CPF1000) EXEC(GOTO CMDLBL(ERROR)) : CALL PGM(CVTS36/PCKILL) DLCOBJ OBJ((&FILLIB/&FILE *FILE *SHRUPD)) [説明] ALCOBJ *SHRUPD で他からの更新プログラムの実行を抑制します。 もし ALCOBJ を実行するときは先に更新プログラムが実行中であれば MONMSG によって更新排他ロックができないことを監視します。 プログラムの実行が終われば DLCOBJ で排他ロックを解放して終了します。