# unlock-group command

The unlock-group command in the DM account
clears group locks.

This is capable of clearing all types of group locks or
specific types of locks, such as: update group locks, retrieval group
locks, or locks on file control blocks.

Group locks provide
a means of assuring data reliability by preventing two processes from
attempting to update the same group at the same time.

Many processes
within the system set group locks. For example, the save processor locks a group while it is being saved.

The read statements (in BASIC) that have a locking form set *item* locks only while working with an item. This
means that two processes can access items in the same group, provided
they do not attempt to update the same item. This is in contrast to
early releases, which only set group locks on read statements. The locked clause in the read statements allow a graceful means of dealing with
the situation of attempting to access a locked item. The program can
take a special path name and indicate to the operator that they should
try again later.

## Syntax

```
unlock-group {.}fid{-{.}end.fid} {(options)}
```

## Parameter(s)

| fid{-end.fid} | Used only when the FID is specified in options string. The FID is implied as a decimal number unless it is preceded by a period, in which case it is considered to be a hexadecimal reference. | |
| --- | --- | --- |
| options | f | Releases group locks placed on file control blocks only. |
| i | Suppresses the Group 'x' released message. | |
| o | Releases read-only locks only. | |
| r | Releases retrieval group locks only. | |
| u | Releases update group locks only. | |
CAUTION: When a process attempts to access a
group that is locked, the screen freezes and starts *beeping*. Usually, there is only a brief wait until the group is unlocked,
at which time the terminal stops beeping and is granted access to
the group. Before using this command, the user should use list-locks and where to locate the cause
of any deadlocked situation. Usually such problems can be fixed by
logging off or issuing an end to the offending
process. The use of `unlock-group` on groups which
are being actively updated can cause file inconsistency errors.

## Example(s)

Unlocks the group at (decimal)
FID 15000.

```
unlock-group 15000
```
Unlocks the group at (hexadecimal) FID 3A98 (15000 in
decimal).

```
unlock-group .3A98
```
Unlocks FCBs only.

```
unlock-group (f
```
Unlocks groups between (and including decimal) FIDs 15010
through 15020.

```
unlock-group 15010-15020
```

## See also

- [clear-basic-locks macro](https://d3codex.com/tcl/clear-basic-locks-macro/)
- [clear-locks command](https://d3codex.com/tcl/clear-locks-command/)
- [list-lockq command](https://d3codex.com/tcl/list-lockq-command/)
- [Locking scheme](https://d3codex.com/definitions/locking-scheme/)
- [matread statement](https://d3codex.com/pickbasic-flashbasic/matread-statement/)
- [release statement](https://d3codex.com/pickbasic-flashbasic/release-statement/)
- [unlock-item command](https://d3codex.com/tcl/unlock-item-command/)
- [what command](https://d3codex.com/tcl/what-command/)
- [where command](https://d3codex.com/tcl/where-command/)

---
Source: https://d3codex.com/tcl/unlock-group-command/ - part of the D3Codex reference.
