Wednesday, March 14, 2007
Some summary notes on IDMS/R
IDMS/R is a network-like database that was popular in the 1980s and 1990s on IBM-style mainframes. At one time it belonged to Cullinane, and then to ADR (Applied Data Research) in Dallas (actually at the confluence of the North Central Expressway and LBJ I-635; I was there a couple of times), which also owned Datacomm DB and DC (which was more of an inverted list system). A precursor to IDMS on the Univac 1108/1110 was DMS-1100, which had the same architecture as early as the early 1970s.
A database record in IDMS is an entity and all of its associated entities. An example could be an instance of a single baseball team (the Washington Nationals aka Montreal Expos) , all of its players, its home and away schedules, its statistics, salaries, stadium, etc.
Network relationships are expressed with a concept called a SET, which can owners and members and can be navigated sequentially. Many-to-many relations (as in mathematics) are not allowed. Indexed sets are important for retrieval by generic key, random, or sequential processing.
Sets can contain mandatory or optional members, which can be disconnected or connected. A practical example could include whether a player remains active on a 25-player baseball team roster after spring training.
Databases are described in a Schema, coded in DDL (data definition language) which describes record (layouts) and usually relates them to sets. Other concepts are Area and LOCATION MODE, which may be direct, calc (with a key), via, or with a set. A Schema emphasizes the physical layout of the database, whereas a subschema stresse logical views that may be needed by one application (say, reporting baseball statistics) or group of programs.
Later versions of IDMS (since the mid 1990s) allow SQL. But navigation of a set, one record at a time, is common in Batch or simpler online programs and is conceptually similar to a DB2 cursor. Here is a reference to SQL in IDMS.
IDMS verbs include OBTAIN, MODIFY, and STORE.
ISMS can be run with VSAM files (that can be defined and manipulated with IDCAMS) or with IDMS physical files.
There are a variety of usage modes: Retrieval, Protected retrieval, exclusive retrieval, update, protected update, exclusive update. Locks can be implicit or explicit, and may be shared or exclusive. You can code a KEEP on the OBTAIN statement , or use a KEEP statement, to maintain a set relationship or to maintain a locking level.
IDMS batch programs may be run through a central version or in local mode. It used to be difficult to get some security packages to work in CV mode.
Common "error" codes include 307 (end of set, as when a set is processed like a DB2 cursor or flat file), and 326 (record not found). Another important code is 0966, when you try to update an area controlled by the Central Version while running in local mode (would not happen if files are de-allocated).
The on line environment is called ADS/Online or ADSO. This provides a simplified 4th Generation language for defining screens and user transactions, and is considerably faster to develop than conventional CICS command level programming. Some important concepts are Premap processing, Mapout and Mapin, and Response processing.
A run-unit is very much like a CICS task.
Here is a good short-answer quiz on IDMS, at this link, on Geekinterview, which appears to have some tests in other areas, too.