home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 21
/
CD_ASCQ_21_040595.iso
/
dos
/
prg
/
pas
/
nwtp06
/
tstlrl.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-03-01
|
3KB
|
75 lines
Program TstLRL;
{ Example for the nwLock unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk }
{ Tests the following nwLock calls: (Logical Record Locking)
LogLocalRecord
LockLogicalrecordSet
ReleaseLogicalRecord
ClearLogicalRecordSet
}
Uses nwLock; { using this unit will automatically set the locmode to 1 }
Var RecordName:string;
TimeOutTicks:word;
begin
TimeOutTicks:=360; {wait 20 seconds before locking process times out}
writeln('TSTLRL: Test of logical record locking.');
writeln(' -Start the exe on 2 or more workstations & enjoy the effect.');
writeln;
writeln('Suppose we want to perform a transaction on a file, where:');
writeln('-we want to update (read&write) Records # 123, 678 and 056.');
writeln;
writeln('To do this, this program uses logical record locking in the following manner:');
writeln('-It locks records #123,678 and 056 in Exclusive mode.');
writeln(' (denying all attempts at locking by other stations.');
{ Put the names of records-to-be-EXCLUSIVELY-locked in the 'logged record set' }
RecordName:='#123';
IF NOT LogLogicalRecord(RecordName,LD_LOG,0)
then writeln('LogRecord failed. Error# ',nwLock.result);
{ Note: The recordnames used have no linkage whatsover with physical
records. They form a logical representation of a physical record.
All processes involved in locking processes on the same data must
use the same naming convention }
RecordName:='#678';
IF NOT LogLogicalRecord(RecordName,LD_LOG,0)
then writeln('LogRecord failed. Error# ',nwLock.result);
RecordName:='#056';
IF NOT LogLogicalRecord(RecordName,LD_LOG,0)
then writeln('LogRecord failed. Error# ',nwLock.result);
{ Lock all records that are currently stored in the 'logged record set' }
writeln('Attempting to place locks on records.. ');
IF NOT LockLogicalRecordSet(LD_LOCK,TimeoutTicks)
then writeln('LockLogicalRecordSet (after TimeOut=20 sec) failed. Error# ',nwLock.result);
if nwlock.result=0 { locking of records was successful }
then begin
{ ---Update records, change records, etc.--- }
{ Readln to simulate update }
writeln('Now ''processing'' locked records. Press RETURN to release locks.');
readln;
{ Suppose we're done with record #123, but still need the other record
-unlock 1 record; keep record in log }
IF NOT ReleaseLogicalRecord('#123')
then writeln('ReleaseLogicalRecord Failed. Error# ',nwLock.result);
writeln('Now ''processing'' still locked records');
end;
{ unlock all records; clear 'logged record set' }
IF NOT ClearLogicalRecordSet
then writeln('ClearLogicalRecordSet Failed. Error# ',nwLock.result);
end.