例: ロックの作業 (Perl)

# この例では、エレメントのロックについて説明しますが、
# 他の CCVOBObjects のロックも同様の方法で機能します。
# またこの例では、Perl からのバリアント配列についても説明します。

use Win32::OLE;
use Win32::OLE::Variant;

# 最上位の ClearCase アプリケーション オブジェクトに接続します。
$cc = Win32::OLE->new('ClearCase.Application') or die "Could not create Application object¥n";

# 最上位のアプリケーション オブジェクトから CCElement オブジェクトを取得します。
my $elem = $cc->Element("m:¥¥carol_main¥¥caroltest¥¥testelem.c");

# ロックを免除するユーザーの配列 ("jo" および "caroly") を作成します。
my $exemptusers = Variant(VT_ARRAY|VT_BSTR, 2);
$exemptusers->Put(["jo", "caroly"]);

# エレメント上にロックを作成します。ただし、エレメントを不要にはしません。
$elem->CreateLock("locking from example script", false, $exemptusers);

# ロックに関するいくつかの情報を出力します。
# 注: 例ではエラー チェックを実行していませんが、実際にはエラー チェックを実行してください。
my $elemlock = $elem->Lock;
my $record = $elemlock->CreationRecord;

# Get the list of exempt users 
my $users = $elemlock->ExemptUsersStringArray;
my $strusers = "";
$first = 1;
for (@$users) {
if ($first == 0) {
$strusers = $strusers . ", " . $_;
} else {
$strusers = $_;
$first = 0;
}
}

# その他のロック情報を出力します。
print("Lock created by ", $record->UserLoginName, " at ", $record->Date,
" and has ", $elemlock->NumberOfExemptUsers, " exempt users: ",
$strusers);

# ここで、宣言した配列を使用して、免除ユーザーのリストを変更します。
my @names = ("bill", "eric", "caroly");
my $arr = Variant(VT_ARRAY|VT_BSTR, 3);
$arr->Put([$names]);
$elemlock->SetExemptUsersStringArray($arr);

# アンロックします。
$elemlock->Remove;