- IMS DB - Recovery
- IMS DB - Logical Database
- IMS DB - Secondary Indexing
- IMS DB - Data Manipulation
- IMS DB - Data Retrieval
- IMS DB - SSA
- IMS DB - PCB Mask
- IMS DB - DL/I Functions
- IMS DB - Cobol Basics
- IMS DB - Programming
- IMS DB - Control Blocks
- IMS DB - DL/I Processing
- IMS DB - DL/I Terminology
- IMS DB - Structure
- IMS DB - Overview
- IMS DB - Home
IMS DB Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
IMS DB - DL/I Functions
DL/I function is the first parameter that is used in a DL/I call. This function tells which operation is going to be performed on the IMS database by the IMS DL/I call. The syntax of DL/I function is as follows −
01 DLI-FUNCTIONS. 05 DLI-GU PIC X(4) VALUE GU . 05 DLI-GHU PIC X(4) VALUE GHU . 05 DLI-GN PIC X(4) VALUE GN . 05 DLI-GHN PIC X(4) VALUE GHN . 05 DLI-GNP PIC X(4) VALUE GNP . 05 DLI-GHNP PIC X(4) VALUE GHNP . 05 DLI-ISRT PIC X(4) VALUE ISRT . 05 DLI-DLET PIC X(4) VALUE DLET . 05 DLI-REPL PIC X(4) VALUE REPL . 05 DLI-CHKP PIC X(4) VALUE CHKP . 05 DLI-XRST PIC X(4) VALUE XRST . 05 DLI-PCB PIC X(4) VALUE PCB .
This syntax represents the following key points −
For this parameter, we can provide any four-character name as a storage field to store the function code.
DL/I function parameter is coded in the working storage section of the COBOL program.
For specifying the DL/I function, the programmer needs to code one of the 05 level data names such as DLI-GU in a DL/I call, since COBOL does not allow to code pterals on a CALL statement.
DL/I functions are spanided into three categories: Get, Update, and Other functions. Let us discuss each of them in detail.
Get Functions
Get functions are similar to the read operation supported by any programming language. Get function is used to fetch segments from an IMS DL/I database. The following Get functions are used in IMS DB −
Get Unique
Get Next
Get Next within Parent
Get Hold Unique
Get Hold Next
Get Hold Next within Parent
Let us consider the following IMS database structure to understand the DL/I function calls −
Get Unique
GU code is used for the Get Unique function. It works similar to the random read statement in COBOL. It is used to fetch a particular segment occurrence based on the field values. The field values can be provided using segment search arguments. The syntax of a GU call is as follows −
CALL CBLTDLI USING DLI-GU PCB Mask Segment I/O Area [Segment Search Arguments]
If you execute the above call statement by providing appropriate values for all parameters in the COBOL program, you can retrieve the segment in the segment I/O area from the database. In the above example, if you provide the field values of Library, Magazines, and Health, then you get the desired occurrence of the Health segment.
Get Next
GN code is used for the Get Next function. It works similar to the read next statement in COBOL. It is used to fetch segment occurrences in a sequence. The predefined pattern for accessing data segment occurrences is down the hierarchy, then left to right. The syntax of a GN call is as follows −
CALL CBLTDLI USING DLI-GN PCB Mask Segment I/O Area [Segment Search Arguments]
If you execute the above call statement by providing appropriate values for all parameters in the COBOL program, you can retrieve the segment occurrence in the segment I/O area from the database in a sequential order. In the above example, it starts with accessing the Library segment, then Books segment, and so on. We perform the GN call again and again, until we reach the segment occurrence we want.
Get Next within Parent
GNP code is used for Get Next within Parent. This function is used to retrieve segment occurrences in sequence subordinate to an estabpshed parent segment. The syntax of a GNP call is as follows −
CALL CBLTDLI USING DLI-GNP PCB Mask Segment I/O Area [Segment Search Arguments]
Get Hold Unique
GHU code is used for Get Hold Unique. Hold function specifies that we are going to update the segment after retrieval. The Get Hold Unique function corresponds to the Get Unique call. Given below is the syntax of a GHU call −
CALL CBLTDLI USING DLI-GHU PCB Mask Segment I/O Area [Segment Search Arguments]
Get Hold Next
GHN code is used for Get Hold Next. Hold function specifies that we are going to update the segment after retrieval. The Get Hold Next function corresponds to the Get Next call. Given below is the syntax of a GHN call −
CALL CBLTDLI USING DLI-GHN PCB Mask Segment I/O Area [Segment Search Arguments]
Get Hold Next within Parent
GHNP code is used for Get Hold Next within Parent. Hold function specifies that we are going to update the segment after retrieval. The Get Hold Next within Parent function corresponds to the Get Next within Parent call. Given below is the syntax of a GHNP call −
CALL CBLTDLI USING DLI-GHNP PCB Mask Segment I/O Area [Segment Search Arguments]
Update Functions
Update functions are similar to re-write or insert operations in any other programming language. Update functions are used to update segments in an IMS DL/I database. Before using the update function, there must be a successful call with Hold clause for the segment occurrence. The following Update functions are used in IMS DB −
Insert
Delete
Replace
Insert
ISRT code is used for the Insert function. The ISRT function is used to add a new segment to the database. It is used to change an existing database or load a new database. Given below is the syntax of an ISRT call −
CALL CBLTDLI USING DLI-ISRT PCB Mask Segment I/O Area [Segment Search Arguments]
Delete
DLET code is used for the Delete function. It is used to remove a segment from an IMS DL/I database. Given below is the syntax of a DLET call −
CALL CBLTDLI USING DLI-DLET PCB Mask Segment I/O Area [Segment Search Arguments]
Replace
REPL code is used for Get Hold Next within Parent. The Replace function is used to replace a segment in the IMS DL/I database. Given below is the syntax of an REPL call −
CALL CBLTDLI USING DLI-REPL PCB Mask Segment I/O Area [Segment Search Arguments]
Other Functions
The following other functions are used in IMS DL/I calls −
Checkpoint
Restart
PCB
Checkpoint
CHKP code is used for the Checkpoint function. It is used in the recovery features of IMS. Given below is the syntax of a CHKP call −
CALL CBLTDLI USING DLI-CHKP PCB Mask Segment I/O Area [Segment Search Arguments]
Restart
XRST code is used for the Restart function. It is used in the restart features of IMS. Given below is the syntax of an XRST call −
CALL CBLTDLI USING DLI-XRST PCB Mask Segment I/O Area [Segment Search Arguments]
PCB
PCB function is used in CICS programs in the IMS DL/I database. Given below is the syntax of a PCB call −
CALL CBLTDLI USING DLI-PCB PCB Mask Segment I/O Area [Segment Search Arguments]
You can find more details about these functions in the recovery chapter.
Advertisements