Vous êtes sur la page 1sur 14

IDMS at a Glance

Page 1 of 14

IDMS - A Network Database


IDMS is a network database. A network data model is regarded as an extension of hierarchical model. The principle difference between the two is that in a hierarchic model, a child is associated with only one type of parent record, whereas in a network model it can be associated with many types. A network database consists of records, which actually hold information as a set of links between records, which form relationships. IDMS (Integrated Data Management System) was developed by Cullinet Software Inc. It was enhanced and is currently supported by Computer Associates (CA). Initially IDMS was developed to run on IBM mainframes, however of late, versions for other environments have also been developed. IDMS centralizes the data used by an organization but does not prevent data from being arranged in different ways to suit different applications. All data records are treated as members of one cohesive storage facility, i.e. the database. The database contains a single definition for each data record. Records are connected in different logical groups called Sets, expressing various arrangements between records as required by applications. PAGE Database is subdivided into number of pages. Smallest unit of data transfer between auxiliary and main memory Page size is typically 2k or 4k bytes Record occurrences are stored in pages Each page has a unique page number Each record within the page has a unique line number

AREAS Pages in the database are grouped into areas Pages in an area are sequentially numbered Gaps in page numbers can occur between areas A page can belong to one and only one area All pages of an area are of the same size All record occurrences of one type reside in one area

FILES All areas of the database are stored in one or more files Entire database is mapped onto one file Each area is mapped onto a different file Many areas are mapped onto one file One area mapped onto many files PAGES, AREAS, FILES, RECORDS TYPE & OCCURRENCE

IDMS at a Glance

Page 2 of 14

Application programs use Record types and Record occurrences to handle data in IDMS. Record Type A Record type is the structural component that conveys the format in which records are stored. Record type is a generic group of similar record occurrences that would exist in the database. Record Occurrence A Record occurrence is the actual content of data that is stored; it can be thought as the substance of information stored in the database. Record occurrence is the basic addressable unit of data under IDMS database. Record occurrences are always related to a specific Record type, and reside in pages. Each record occurrence can be fixed or variable in length. A record occurrence is further subdivided into fields or data elements based on its structure. DBKEY & RECORD OCCURRENCE Database key or DBKEY is a unique identifier for each record occurrence within the database. DBKEY comprises of two components Page number and Line number within a page. DBKEY of a record occurrence does not change as long as the occurrence exists in the database. Each record occurrence has two components: Prefix and Data: The Prefix consists of pointers such as those pointing to the NEXT, PRIOR and OWNER record. Each pointer is in form of a DBKEY. The pointer refers to physical location of another record occurrence that is related to the one containing the pointer. The Data is the set of bytes that represents the record value; it may have some internal structure that is defined by the application developer. LOCATION MODE The assignment of record to a particular page in its area is determined by the location mode. CALC record stored on or near a page calculated by IDMS page calculation is based on symbolic key value retrieval of record based on symbolic key value hashing algorithm employed for retrieval IDMS converts symbolic key into record address can have duplicates clause as DF/DL/DN

VIA

IDMS at a Glance

Page 3 of 14

cluster member records with their respective owners minimize disk accesses needed to retrieve members groups records that are likely to be retrieved at the same time records on the same page or close to owner record

DIRECT record placed in user specified page used when storing records in physical sequential order

CURRENCIES Currencies are maintained in form of DBKEYS of most recently accessed records by application programs. The currencies enable application programs to position itself and move about record occurrences within the database. RUN UNIT most recently accessed record by the program

RECORD TYPE most recent record occurrence accessed for each record type

SET most recent record occurrence accessed in each set, either the owner or the member

AREA most recent record occurrence accessed in each area accessed by the program

SETS A Set expresses relationships or association between two record types, where one is the super ordinate and other is the sub ordinate. The super ordinate record type is called the OWNER record and the subordinate record type is called the MEMBER record. A set associates one owner record occurrence with one or more member record occurrences; it establishes a one-to-many relationship. A Set Type defines the structural components of a set, or the attributes of a set. A Set Occurrence comprises of an owner record occurrence along with its associated member record occurrences. There exists one set occurrence for each owner record occurrence.

IDMS at a Glance

Page 4 of 14

In case of a NULL set, an owner record may be the only one in the set occurrence if it does not have any associated member records. SETS A Set type consists of the following. Set Name unique name of the set

Set Mode type of linkage between the owner and member mode is either CHAIN or INDEX CHAIN implies embedded pointers to navigate INDEX implies using index to navigate

Set Linkage type of pointers used in member records NEXT: each member record points to the next in the set PRIOR: each member record points to the previous in the set OWNER: each member record points to its owner

Set Order specifies where a new record is to be placed during insertion FIRST: new record placed first in the set LAST: new record placed last in the set NEXT: new record placed next to the current record PRIOR: new record placed previous to the current record SORTED: new record placed based sort key value

SETS Set Membership Removal Options These are also known as Disconnect or Erase options Removal options are MANDATORY or OPTIONAL MANDATORY: member is disconnected only when erased OPTIONAL: member can be disconnected and can remain in the database

Storage Options These are also known as Connect options Storage options are MANUAL or AUTOMATIC

IDMS at a Glance

Page 5 of 14

AUTOMATIC: member automatically connected when created MANUAL: member not connected when created

SETS Membership Options MA - Mandatory Automatic this is default members automatically connected while insertion members disconnected while deletion

MM - Mandatory Manual owner not identified at the time of insertion of member hence member created but left isolated member connected when owner is identified

OA - Optional Automatic members automatically connected while creation need to disconnect and keep isolated from owner to be possibly connected to some other owner

OM - Optional Manual owner not identified at the time of insertion members connected when owner is identified members need to be disconnected and left isolated from owner to be connected to other owner

How to access a record based on symbolic key Syntax: Obtain calc <record name> Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. If DB-REC-NOT-FOUND .... Notes: Accesses record based on calc key value Calc key should be populated before statement is executed How to access records with duplicate symbolic key values Syntax: Obtain duplicate <record name>

IDMS at a Glance

Page 6 of 14

Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. .. Obtain duplicate DEPT. Notes: Accesses next record with duplicate calc key value Obtain calc should be done prior to Obtain duplicate cannot be executed for Duplicates Not Allowed option How to access a record based on Database key (DBKEY) Syntax: Obtain <record name> db-key is <database key> Example: Obtain DEPT db-key is WS-DBKEY. Notes: Accesses record based on database key value Database key comprises of page no., line no. Database key format is S9(8) COMP in Cobol Database key can be accessed by ACCEPT Having accessed a member record, how to access its owner record on a specific set Syntax: Obtain owner within <set name> Example: Move 0001 to EMP-CODE. Obtain calc EMP. ... Obtain owner within DEPT-EMP. Notes: Accesses owner record of a member record, on a specific set Having accessed an owner record, how to access its member records in various ways Syntax: Obtain [next/prior/first/last/<seq.no>] <record name> within <set name> Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. ... Obtain first EMP within DEPT-EMP.

IDMS at a Glance

Page 7 of 14

If DB-END-OF-SET ... Notes: Accesses member records of an owner record Access is on a specific set Seq.no can be a literal or a variable Seq.no is an integer assigned to records in a set at a given time Seq.no of a record/s can change when records are added/deleted in a set Obtain first/last/next/prior can fail, it results in END-OF-SET condition How to access all records of a record type in the area or in the database Syntax: Obtain [next/prior/first/last/<seq.no>] <record name> within <area name> Example: Obtain first EMP within DEPT-AREA. If DB-END-OF-SET ... Notes: Accesses records occurrences of a record type Possible to retrieve all record occurrences Undetermined order when records are retrieved

How to access records based on currencies that IDMS maintains Syntax: Obtain current <record name> Obtain current within <set name> Obtain current within <area name> Example: Obtain current DEPT. Obtain current within DEPT-EMP. Obtain current within DEPT-AREA. Notes: Accesses records based on record type, set and area currency Having accessed an owner record, how to access a member record based on sort key value Syntax: Obtain <record name> within <set name> using <sort field> Example: Move 0001 to DEPT-CODE.

IDMS at a Glance

Page 8 of 14

Obtain calc DEPT. Move John to EMP-NAME. Obtain EMP within DEPT-EMP using EMP-NAME. If DB-REC-NOT-FOUND ... Notes: Sort field should be populated before Obtain First record satisfying the value is accessed If record not found, next/prior currencies get updated as if the record was present at that position in the set Navigation & Refresh For any Obtain instruction, IDMS does the following Navigates the database to locate appropriate record Updates currencies Transfers record occurrence from database to record structure

Thus Obtain is broken up into two distinct operations, Database operations and refreshing record structure. Find is a DML statement that does only database operations, The syntax for Find is the same as Obtain Get is a DML statement that refreshes record structure based on currencies of record type, or the most recent record occurrence accessed through Find/Obtain. The syntax for Get is Get <record type> Thus Obtain is equivalent to Find followed by Get operation Having accessed a record, how to modify it

Syntax: Modify <record name> Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. ... ... Find current DEPT. Move 20 to DEPT-COUNT Modify DEPT

IDMS at a Glance

Page 9 of 14

Notes: Record should be accessed by Obtain before Modify Record should be populated before Modify Record should be current of run-unit before Modify Calc key should not be modified Modification of record in sorted set may be expensive How to create a record in the database Syntax: Store <record name> Example: Move 0001 to DEPT-CODE. Move Finance to DEPT-NAME. Move 120 to DEPT-COUNT. Store DEPT. Notes: Creates record in the database Connects stored record to owner in Automatic sets Owner records of those sets need to be made current Set currency needs to be established Calc key and sort field should be populated Having accessed a record, how to delete it Syntax: Erase <record name> Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. ... ... Find current DEPT. Erase DEPT Notes: Record should be made current of run-unit If record has any members in any set occurrence then it is not deleted Deletion is of the form RESTRICTED Delete a record, delete mandatory, disconnect optional Syntax: Erase <record name> Permanent Example:

IDMS at a Glance

Page 10 of 14

Move 0001 to DEPT-CODE. Obtain calc DEPT. ... ... Find current DEPT. Erase DEPT Permanent Notes: Record should be made current of run-unit Record is deleted Member records on Mandatory sets are deleted Member records on Optional sets are disconnected Deletes are Cascaded Deletion is of the form NULLIFY/CASCADE Delete a record, delete mandatory, delete/disconnect optional Syntax: Erase <record name> Selective Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. ... Find current DEPT. Erase DEPT Selective. Notes: Record should be made current of run-unit Record is deleted Member records on Mandatory sets are deleted If Members of Optional sets are also members on some other sets, then they are disconnected If Members of Optional set are not members of any other sets, then they are deleted Deletes are Cascaded Deletion is of the form Selective NULLIFY/CASCADE Delete a reord, all members, cascade deletes Syntax: Erase <record name> All Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. ... Find current DEPT. Erase DEPT All Notes: Record should be made current of run-unit Record is deleted

IDMS at a Glance

Page 11 of 14

All Member records on all sets are deleted Deletes are Cascaded Deletion is of the form CASCADE

Having accessed an owner record, how to detect an empty set occurrence of a specific set Syntax: If <set name> is empty If <set name> is not empty Example: Move 0001 to DEPT-CODE. Obtain calc DEPT. ... If DEPT-EMP is empty Move .... Notes: Checks the existence of member records in a set If is a DML statement, different from COBOL If Equivalent to Obtain/Find First failure or success Having accessed a member record, how to detect whether it is a part of set occurrence on a specific set Syntax: If <set name> member If not <set name> member Example: Move 0001 to EMP-CODE. Obtain calc EMP. ... If DEPT-EMP member Move .... Notes: Checks if a member records is connected to an owner record on a specific set Member record should be current of run-unit Relevant on Optional sets, where records can be disconnected Having accessed a member record, how to connect it to a set occurrence Syntax: Connect <record name> to <set name> Example: Move TRG to DEPT-CODE. Obtain calc DEPT. Move 0001 to EMP-CODE. Obtain calc EMP.

IDMS at a Glance

Page 12 of 14

... Connect EMP to DEPT-EMP. Notes: Connects a record occurrence to a set occurrence Record occurrence should be an isolated occurrence Owner record needs to be made current Needs membership option for Storage to be Manual Also relevant for Optional-Automatic membership Having accessed a member record, how to disconnect it from a set occurrence Syntax: Disconnect <record name> from <set name> Example: Move 0001 to EMP-CODE. Obtain calc EMP. ... Disconnect EMP from DEPT-EMP. Notes: Disconnects a record occurrence from a set occurrence Record occurrence would then be an isolated occurrence Needs membership option for Removal to be Optional How to access database keys (DBKEYS) of record occurrences Syntax: Accept <database key> from <record name> currency Accept <database key> from <set name> currency Accept <database key> from <area name> currency Accept <database key> from <set name> [next/prior/owner] currency Example: Move 0001 to EMP-CODE. Obtain calc EMP. Accept WS-EMP-DBKEY from EMP currency. Notes: Accesses database key for a record Storage format for database key is S9(8) COMP. Bind RUN-UNIT

IDMS at a Glance

Page 13 of 14

identifies IDMS communication block of program to DBMS identifies subschema to be loaded for run-unit enables program to sign on to database

Bind <record name> establishes addressability of record structure with DBMS tells DBMS the address of record in variable storage

Ready <area name> Usage Mode SHARED/PROTECTED/EXCLUSIVE RETRIEVAL/UPDATE requests access to database areas, and in turn records specifies modes of access of areas

RETRIEVAL: read only operations UPDATE: read and create/modify/delete SHARED: other run units can concurrently access PROTECTED: other run units cannot ready in UPDATE EXCLUSIVE: other run units cannot ready in ANY Finish terminates run-unit releases all resources associated with run-unit writes checkpoint to journal

AREA USAGE MODE (1)

(2)

(3) (4) (5)

(6)

SU SR PU PR EU ER (1) Shared Update (2) Shared Retrieval (3) Protected Update Y Y N Y Y Y Y N N N Y N N N N N Y N Y N N N N N N N N N N N N N N

(4) Protected Retrieval N (5) Exclusive Update N

(6) Exclusive Retrieval N Commit

IDMS at a Glance

Page 14 of 14

Commit requests IDMS to write checkpoint, makes changes to database permanent for the unit of work. Commit has two variations, i.e Commit and Commit All Commit releases all locks except implicit shared locks writes a checkpoint does not affect currencies

Commit All releases all locks writes a checkpoint nullifies currencies

Rollback Rollback requests IDMS recovery of unit of work, undoes the changes to database. Rollback has two variations, i.e. Rollback and Rollback Continue Rollback request recovery of unit of work terminates run unit Rollback Continue requests recovery of unit of work does not terminate run unit IDMS returns a 4 character error code after executing every DML statement. When DML statements are embedded in COBOL programs, IDMS returns error code in a variable called ERROR-STATUS, error code 0000 indicates that the DML statement has executed successfully.

The first two character of error code is the major code and the next two character the minor code, the following is a list of some of the major & minor codes.

Major Code 01 02 03 05 08 09 Minor code 06 07 09 26

DML Function Finish Erase Find/Obtain Get/Keep/Connect Modify Ready Interpretation No currency established for record/set/area End of set/area/index Area readied in incorrect usage mode record or index entry not found

Vous aimerez peut-être aussi