オブジェクトのロック状態

ロック状態 とは、オブジェクトの用途、 およびそのオブジェクトが共用されるかどうかを識別するものです。

オブジェクトは、その使用目的 (読み取りまたは更新)、 および共用 (複数のジョブによる同時使用) が可能かどうかに基づいて割り振られます。 ファイルおよびメンバーは必ず *SHRRD で割り振られ、 ファイル・データはロック状態で指定されたロック・レベルで割り振られます。 ロック状態には、次の 5 種類があります (パラメーター値を括弧に入れて示してあります)。

注: ライブラリーの割り振りは、 そのライブラリー内のオブジェクトに対して実行できる操作を制限するものではありません。 すなわち、 あるジョブによりライブラリーが読み取り可能占有ロック状態または更新共用ロック状態になった場合には、 他のジョブはそのライブラリーにオブジェクトを入れたり、 そのライブラリーからオブジェクトを除去したりすることはできません。 ただし、この場合でも他のジョブはライブラリー内のオブジェクトを更新することができます。

次の表は、オブジェクトに対する有効なロック状態の組み合わせを示しています。

表 1. 有効なロック状態の組み合わせ
あるジョブのロック状態: 別のジョブのロック状態:
*EXCL なし
*EXCLRD *SHRRD
*SHRUPD *SHRUPD または *SHRRD
*SHRNUP *SHRNUP または *SHRRD
*SHRRD *EXCLRD、*SHRUPD、*SHRNUP、または *SHRRD

ほとんどのオブジェクト・タイプに対して、5 つすべてのロック状態 (*EXCL、*EXCLRD、*SHRUPD、*SHRNUP、および *SHRRD) を指定することができます。 ただし、 このことはすべてのオブジェクト・タイプに当てはまるわけではありません。 次の表には、5 つすべてのロック状態を指定することのできないオブジェクト・タイプが、 そのオブジェクト・タイプに有効なロック状態とともにリストされています。

表 2. 特定のオブジェクト・タイプについて有効なロック状態
オブジェクト・タイプ *EXCL *EXCLRD *SHRUPD *SHRNUP *SHRRD
装置記述   x      
ライブラリー   x x x x
メッセージ待ち行列 x       x
パネル・グループ x x      
プログラム x x     x
サブシステム記述 x        

ロック状態にないオブジェクト、 または特定のロック状態を要求していないオブジェクトに対して DLCOBJ コマンドを発行した場合でも、 エラーとはなりません。

オブジェクトのロック状態は、次の例に示すように、変更することができます。

注: コーディング例を使用すると、コードに関するライセンス情報および特記事項の条件に同意したものとみなされます。
PGM
ALCOBJ  OBJ((FILEX *FILE *EXCL)) WAIT(0)
CALL PGMA
ALCOBJ  OBJ((FILEX *FILE *EXCLRD))
DLCOBJ  OBJ((FILEX *FILE *EXCL))
CALL PGMB
DLCOBJ  OBJ((FILEX *FILE *EXCLRD))
ENDPGM

ファイル FILEX は、PGMA に占有として割り振られますが、PGMB に対しては読み取り可能占有として割り振られます。

ファイル内のデータ・レコードを割り振るためには、レコード・ロックを使用することができます。 ファイル作成 (CRTF) コマンドの WAITFILE パラメーターを使用して、 ユーザーのプログラムがファイルの割り振りを待つ時間 (タイムアウトが起こるまでの待機時間) を指定することもできます。