ロック状態 とは、オブジェクトの用途、 およびそのオブジェクトが共用されるかどうかを識別するものです。
オブジェクトは、その使用目的 (読み取りまたは更新)、 および共用 (複数のジョブによる同時使用) が可能かどうかに基づいて割り振られます。 ファイルおよびメンバーは必ず *SHRRD で割り振られ、 ファイル・データはロック状態で指定されたロック・レベルで割り振られます。 ロック状態には、次の 5 種類があります (パラメーター値を括弧に入れて示してあります)。
次の表は、オブジェクトに対する有効なロック状態の組み合わせを示しています。
| あるジョブのロック状態: | 別のジョブのロック状態: |
|---|---|
| *EXCL | なし |
| *EXCLRD | *SHRRD |
| *SHRUPD | *SHRUPD または *SHRRD |
| *SHRNUP | *SHRNUP または *SHRRD |
| *SHRRD | *EXCLRD、*SHRUPD、*SHRNUP、または *SHRRD |
ほとんどのオブジェクト・タイプに対して、5 つすべてのロック状態 (*EXCL、*EXCLRD、*SHRUPD、*SHRNUP、および *SHRRD) を指定することができます。 ただし、 このことはすべてのオブジェクト・タイプに当てはまるわけではありません。 次の表には、5 つすべてのロック状態を指定することのできないオブジェクト・タイプが、 そのオブジェクト・タイプに有効なロック状態とともにリストされています。
| オブジェクト・タイプ | *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 パラメーターを使用して、 ユーザーのプログラムがファイルの割り振りを待つ時間 (タイムアウトが起こるまでの待機時間) を指定することもできます。