# ZOPL

ZOPL is a programming language created by Geac Computer Corporation in the early 1970s for use on their mainframe computer systems used in libraries and banking institutions. It had similarities to C and Pascal. It also was in many respects similar to (and, perhaps, derived from) BCPL.
ZOPL stood for "Version Z, Our Programming Language".

## Language constructs

ZOPL was a fairly low-level programming language, with some interesting and unusual features. Variable could be declared as DCL or BDCL types. DCL variables started at the top of memory, location 0. BDCL started further down the memory stack. There was no concept of other types, such as integer or character. In effect you were declaring an area of memory with a name. For example, if you declared:
DCL Fred (10)
DCL Alice (20)
then you had declared two lumps of memory, Fred and Alice. Fred starts at memory location 0 and has 10 bytes of memory (each byte of 8 bits). Alice started at position 9 and has 20 bytes of memory. You could put data into Fred by assigning Fred a value. But you could also do so using the address of Fred, using an offset if required. So $Fred+3 would be at address 2 in memory (i.e. the 3rd word in memory). You could put information into Alice in the same way, but also by using Fred with an offset greater than 9 – because Alice starts immediately after Fred. There was nothing to stop you from putting data into Alice by referencing Fred with a suitable offset.
Similarly, variables passed as parameters to functions or subroutines were actually being passed as addresses. You could retrieve data from Fred or Alice by using the contents of an address (|$Fred+3, for example).
It was a very versatile language, though one had to be careful in its use, for obvious reasons.

## Later use

ZOPL is still in use at CGI Group (formerly known as RealTime Datapro), who ported it to VAX/VMS and Unix in the 1980s, and to Windows in 1998. by 2010 it had been ported to run on Windows XP/2000/2003 and Red Hat Linux. The RTM (formerly ZUG) language compiler and runtime framework are written in ZOPL.
Outside of CGI, ZOPL has not been in general use since the late 1980s, although there is still one known working system where it is found embedded in programs written in the KARL programming language.

## Not to be confused with ...

Psion used their own language called OPL, which was nothing like Geac's OPL. Geac did, however, at a later date use Psion Organiser devices in conjunction with their library management systems, which is where a long-standing confusion may have originated. They used the Psion Organiser hand-held devices because these used the same microprocessor that was used in the Epson device used previously. The Organiser could be used with a barcode reader, used for scanning the barcodes on books and on borrowers' library cards. However, at the time that the Organiser was being evaluated for use in mobile libraries it could not read Codabar – which was the barcode format used by Geac. Geac had developed the machine code for the Epson computer, which was therefore compatible with the Organiser barcode reader, and supplied the code to Psion to use - which resulted in the Psion barcode reader being able to read Codabar, and also Plessey barcodes.