APL was developed to providehigh-level language data access and manipulation functions to support GM's CADANCE interactivecomputer graphics system. It was designed to integrate withPL/I.[2][3]
The underlying database is assumed to follow thenetwork model. GM's first database manager was implemented vialinked lists, but in 1977 the "Virtual Associative Access Manager" {VAAM) was developed to usevirtual storage and implementing entity relationships as arrays.[1]: p.86 APL was later ported to theMCTS operating system.
APL consists of six statements,CREATE,INSERT,FIND,FOR EACH,REMOVE, andDELETE,[1]: p.85 and miscellaneous functions such as counting the number of members in a set, determining the length or type of an entity, or locating an entity by name.[1]: p.95
Create is a synonym for Allocate. It causes storage to be allocated for a based variable. A file or set where the data is to be allocated may be specified.
Delete is a synonym for Free. Delete frees a based variable and optionally removes it from all sets of which it is a member.
Find locates an entity that is a member of a set or container based on specified conditions. An optionalELSE clause is executed if no entities are found.
For Each heads a group of statements to be executed for all entities or sets matching a specified condition.
Insert inserts an entity into a specified set. Optionally, the placement of the new entity relative to other elements of the set may be specified.
Let sets a locator variable to reference a specified set.
APL statements were initially implemented asPL/I preprocessor macros, which translated into calls to the database manager. Later GM'sApple PL/I dialect supported APL directly in the language.