Superlock Release Notes

Superlock Release Notes


Version 3.1

Superlock is a program to call the lock manager from DCL. It allows the user to synchronize commands in command procedures in the same way that the $ENQ/$DEQ system services synchronize program code. It does this by acquiring and releasing locks in Supervisor mode (hence the name). Supervisor mode locks remain granted after image rundown, and are only released either by explicit calls to Superlock, or when the process runs down.


2023-11-17 The information in this document is subject to change without notice and should not be construed as a commitment by anyone.

The software described in this document is provided as is. No guarantee is made to the suitability, reliability, security, usefulness, performance or good taste of this software.

No liability is accepted for any use or misuse of the product. Availability: Superlock may be distributed provided no alteration is made to the copyright notice in this documentation or in program sources. All rights are reserved.

Copyright ©2023 Tom Wade


Chapter 1
Release Notes for V3.0 & V3.1

1.1 V3.1

There is only one functional change for V3.1: support for OpenVMS X86. This was tested on V9.2.

1.2 Functional Enhancements for V3.0

1.2.1 Support for Extended Lock Value Block

Superlock now supports the extended size for the Lock Value Block. Prior to OpenVMS 8.2, the lock value block was limited to 16 bytes. With OpenVMS 8.2, the size of the lock value block defaults to 16 bytes, but can be extended to 64 bytes using the LCK$M_XVALBLK bit in the $ENQ system service. Superlock implements this with an /EXTEND qualifier to the LOCK command.

1.2.2 Support for Reporting Blocking Processes

When a lock can't be granted, Superlock now allows you to obtain a list of processes that are blocking the lock. This information is returned in DCL symbols if the /REPORT qualifier is specified.

1.2.3 Editing of Lock Value Block symbol

When copying a lock value block to or from the DCL symbol referenced in a /VALUE qualifier, Superlock now provides the /PAD and /TRIM qualifiers for additional formatting in respect to padding or trimming nulls or spaces.

1.2.4 Support for Timeout on Lock Request

A new qualifier /TIMEOUT allows you to specify a timeout value for lock requests. If the timeout period expires without the lock's being granted, Superlock will exit with the DCL status SS$_TIMEOUT.

1.2.5 Optional returning of Immediate Lock Grant

Superlock now provides access to the LCK$M_SYNCSTS flag for the $ENQ system service. This bit is set with the /SYNC qualifier. If the lock can be granted immediately, Superlock returns an alternative status SS$_SYNCH, otherwise it returns SS$_NORMAL.

1.2.6 Release of Sublocks

With Superlock 3.0, you can now release all sublocks of a parent lock by the use of the /SUBLOCK qualifier in combination with /RELEASE. Prior versions required you to release them individually.

1.2.7 Optional Suppression of some Error Messages

Superlock provides a /NOLOG qualifier to suppress the reporting of certain DCL errors, allowing you to test for and process such conditions in the surrounding DCL code, without presenting the error messages to the user.

1.3 Bug Fixes

1.3.1 Bug in String Comparison

Fixed a bug in the string comparison routine, which would cause Superlock to fail with an error message with a /WRITE /ALLOW=READ qualifier combination.