前のページ|次のページ

LOCKステートメント

既存のSASファイルに対する排他的ロックの取得、リスト出力、または解除を行います。

該当要素: 任意の場所
カテゴリ: プログラム制御
制限事項: 現在、他のSASセッションがアクセスしているSASファイルをロックすることはできません(排他的ロックされている、そのファイルが開かれているためロックできません)。
LOCKステートメントの構文は、シングルユーザー環境でも、クライアント/サーバー環境でも同じです。ただし、LOCKステートメントの機能によっては、クライアント/サーバー環境にのみ適用される場合があります。

構文

引数

libref

SASライブラリに関連付けられた名前を指定します。libref (ライブラリ参照名)には、有効なSAS名を指定する必要があります。librefがSASUSERまたはWORKの場合、それを指定する必要があります。

ヒント シングルユーザー環境では、LOCKステートメントを発行してライブラリを排他的にロックする必要はありません。マルチユーザー対応のSAS/SHARE Serverからアクセスするライブラリをロックする方法については、SAS/SHARE User's GuideのLOCKステートメントを参照してください。

member-name

ライブラリ参照名に関連付けられたSASライブラリのメンバを示す有効なSAS名を指定します。

制限事項 ロックを要求する前に、SASファイルを作成する必要があります。存在しないSASライブラリメンバをロックする方法については、SAS/SHARE User's Guideを参照してください。

member-type

ロック対象とするSASファイルの種類を指定します。たとえば、有効な値にはDATA、VIEW、CATALOG、MDDBなどがあります。デフォルトではDATAに設定されます。

entry-name

ロック対象のカタログエントリの名前を指定します。

ヒント シングルユーザー環境でLOCKステートメントを発行して個別のカタログエントリをロックした場合、カタログ全体がロックされます。通常、カタログエントリを排他的にロックするためにLOCKステートメントを発行するようなことはしません。マルチユーザー対応のSAS/SHARE Serverからアクセスするライブラリ内のカタログエントリをロックする方法については、SAS/SHARE User's GuideのLOCKステートメントを参照してください。

entry-type

ロック対象のカタログエントリの種類を指定します。

ヒント シングルユーザー環境でLOCKステートメントを発行して個別のカタログエントリをロックした場合、カタログ全体がロックされます。通常、カタログエントリを排他的にロックするためにLOCKステートメントを発行するようなことはしません。マルチユーザー対応のSAS/SHARE Serverからアクセスするライブラリ内のカタログエントリをロックする方法については、SAS/SHARE User's GuideのLOCKステートメントを参照してください。

LIST | QUERY | SHOW

特定のSASファイルに排他的ロックを設定したかどうかをSASログに書き込みます。

ヒント このオプションは、クライアント/サーバー環境ではさらに詳しい情報を提供します。クライアント/サーバー環境でこのオプションを使用するには、SAS/SHARE User's GuideのLOCKステートメントを参照してください。

CLEAR

SASセッションでLOCKステートメントを使用して取得した、特定のSASファイルに対するロックを解除します。

NOMSG

警告やエラーメッセージがSASログに出力されないように指定します。NOMSGでは、ロックが成功した、またはロックが解除された、と告げるノートを非表示にはしません。

操作 警告やエラーメッセージを非表示にするには、LOCKステートメントを実行する度にNOMSGを指定してください。
SASマクロ変数SYSLCKRCの戻り値は、NOMSGが指定されていても影響されません。
ヒント NOMSGは、ロックが利用可能になるまでLOCKステートメントをコードループでサブミットし続ける時に、排他的ロックが利用できないというエラーメッセージは毎回SASログに表示したいという場合に有効です。

詳細

概要情報

LOCKステートメントでは、すでに存在するSASファイルに対する排他的ロックの取得、リスト出力、または解除を実行できます。排他的ロックでは、ロックが解除されるまでは、現在のSASセッションでその他の操作によってファイルの読み込み、書き込み、またはロックを行うことはできなくなります。さらに、排他的ロックでは、ファイルが開いている場合、ロックによって確実に別のSASセッションがそのファイルにアクセスできないようにします。
LOCKステートメントの主な用途は、SASステートメント境界を越えてSASファイルの排他的制御を保持することです。ファイルの排他的制御を失わずに、ファイルに対して複数の操作を次々に実行することが望ましい場合もあります。ただし、DATAまたはPROCステップが実行を終了し、制御が次の操作に移ると、ファイルは閉じられ、同じデータ記憶域の場所へのアクセス権を持つ別のSASセッションによる処理が可能になります。排他的ロックが複数のSASセッションにわたって確実に保証されるるようにするには、SAS/SHAREを使用する必要があります。
排他的ロックを解除するには、CLEARオプションを使用します。また、データセットに対する排他的ロックは、DATASETSプロシジャのDELETEステートメントを使用してそのデータセットを削除すると解除されます。

LOCKステートメントのリターンコード

SASマクロ変数SYSLCKRCには、LOCKステートメントからのリターンコードが含まれます。次のアクションは、SYSLCKRCに0以外の値を挿入します。
  • ファイルをロックしようとしたが、ロックを取得できない(たとえば、ファイルが使用されている、またはファイルが他のSASセッションでロックされているなど)
  • LOCKステートメントにLISTオプションを指定してロックの一覧を表示する
  • LOCKステートメントにCLEARオプションを指定してユーザーが取得していないロックを解除する
SYSLCKRC SASマクロ変数の詳細については、SASマクロ言語: リファレンスを参照してください。

比較

  • SAS/SHAREを使用してる場合でも、LOCKステートメントを使用できます。ただし、LOCKステートメントの機能によっては、クライアント/サーバー環境にのみ適用される場合があります。
  • CNTLLEV=データセットオプションでは、SASデータセットへの共有更新アクセスを拒否するレベルを指定できます。

例: SASファイルをロックする

次のSASプログラムでは、SASデータセットのロックプロセスを説明します。LOCKステートメントを使用すると、ファイルに対して排他的アクセスが取得されるため、マルチステッププログラムに保護が提供されます。
libname mydata 'SAS-library';
lock mydata.census; 1
data mydata.census; 2
   modify mydata.census;
   (statements to remove obsolete observations)
run; 3
proc sort force data=mydata.census; 4
   by CrimeRate; 
run;
proc datasets library=mydata; 5
   modify census;
   index create CrimeRate;
quit;
lock mydata.census clear; 6
1 SASデータセットMyData.Censusに対して排他的アクセスを取得します。
2 MyData.Censusを開き、オブザベーションを削除します。更新中は、現在のSASセッションにおける他の操作や、他のSASセッションで、このファイルにアクセスすることはできません。
3 DATAステップの最後にファイルが閉じられます。現在のSASセッションにおいて他の操作でこのファイルにアクセスすることはできません。ただし、このファイルが再度開くまでは、別のSASセッションでアクセスできます。
4 MyData.Censusを開き、ファイルを並べ替えます。並べ替え中は、現在のSASセッションにおける他の操作や、他のSASセッションで、このファイルにアクセスすることはできません。プロシジャの最後に、ファイルが閉じられます。これは、現在のSASセッションにおいて他の操作でこのファイルにアクセスすることはできませんが、別のSASセッションでのアクセスはできることを意味します。
5 MyData.Censusを開き、インデックスを再構築します。現在のSASセッションにおける他の操作や、他のSASセッションで、このファイルにアクセスすることはできません。プロシジャの最後にファイルが閉じられます。
6 MyData.Censusに対する排他的ロックを解除します。

関連項目:

マルチユーザー対応のSAS/SHARE Serverからアクセスするライブラリのデータオブジェクトをロックする方法については、XisError: No pubcode in link data found for shrrefを参照してください。
データセットオプション:
XisError: No pubcode in link data found for ledsoptsref
前のページ|次のページ|ページの先頭へ