Page History
[ |../../index.htm#lansa/lock_object.htm]
現在地:
| Anchor | ||||
|---|---|---|---|---|
|
| Anchor | ||||
|---|---|---|---|---|
|
注意: 9.1 組み込み関数の規則 &<a href="bifcat4_09.htm"&>利用オプション&</a&>利用オプション
指定されたユーザー・オブジェクトにロックを試みて、失敗した場合はエラーを戻します。
引数
...
例
4つのユーザー・オブジェクト識別子を使用して、ユーザー・オブジェクトのロックを構築します。このロックは総称キーを使って解除できます。
DEFINE FIELD(#RETURN) TYPE(*CHAR) LENGTH(2) DEFINE FIELD(#STATE) TYPE(*CHAR) LENGTH(3) DEFINE FIELD(#CUSTNO) TYPE(*CHAR) LENGTH(6) ********** Lock Customers to be Updated USE BUILTIN(LOCK_OBJECT) WITH_ARGS('CUSTOMER' #STATE #CUSTNO '' '' 'FUNC') TO_GET(#RETURN) ********** Unlock ALL Customers for the STATE USE BUILTIN(UNLOCK_OBJECT) WITH_ARGS('CUSTOMER' #STATE 'ALL' '' '' 'FUNC') TO_GET(#RETURN)
この例では、顧客に関する、多くのユーザー・オブジェクトがロックされます。ロックされた「顧客」のすべては、同じ「状態」に属します。更新処理が完了したときに、このロックを解除することができます。各顧客に対してロックを個別に解除するのではなく、2番目のオブジェクト識別子に'ALL'を指定することで、状態に対してすべてのロックを総称的に解除することができます。
また、ユーザー・オブジェクトのロックを使用して、ファンクションが持つことのできる同時ユーザー数を制限することもできます。例えば、ユーザーのオーダー入力ファンクションを3人のユーザーに制限する場合、ユーザーに関連する3つのユーザー・オブジェクトを作成します。次に、オーダー入力ファンクションの先頭で、このユーザー・オブジェクトの1つに対してロックを取得します。使用できるものがなくなると、以下のようなメッセージを表示してファンクションを終了することができます。ロックが許可された場合、ファンクションの使用を許可します。ファンクションを終了するときにユーザー・オブジェクトのロック解除を忘れないようにしてください。または、ロック・レベルに'FUNC'を指定して、ファンクションが終了したときにロックが自動で解除されるようにしてください。一つのガイドとして以下の例を使用してください。
DEFINE FIELD(#RETURN) TYPE(*CHAR) LENGTH(2) ********** Attempt lock on 1st instance USE BUILTIN(LOCK_OBJECT) WITH_ARGS('ORDER_ENTRY' 'ORDER#1' '' '' '' 'FUNC') TO_GET(#RETURN) IF COND('#RETURN *EQ ER') ********** Attempt lock on 2nd instance USE BUILTIN(LOCK_OBJECT) WITH_ARGS('ORDER_ENTRY' 'ORDER#2' '' '' '' 'FUNC') TO_GET(#RETURN) IF COND('#RETURN *EQ ER') ********** Attempt lock on 3rd instance USE BUILTIN(LOCK_OBJECT) WITH_ARGS('ORDER_ENTRY' 'ORDER#3' '' '' '' 'FUNC') TO_GET(#RETURN) IF COND('#RETURN *EQ ER') ********** Cannot obtain any locks MESSAGE MSGTXT('No Order Entry sessions are Available') RETURN ENDIF ENDIF ENDIF ********** Protected processing ********** Unlock ALL Order Entry locks for this Function USE BUILTIN(UNLOCK_OBJECT) WITH_ARGS('ORDER_ENTRY' 'ALL' '' '' '' 'FUNC') TO_GET(#RETURN)
[ |../../index.htm#lansa/lock_object.htm]