Sie sind auf Seite 1von 132

2/6/2009 03:00 PM 1

IMS Database Manager


Sreesanth Narath
CSC

IMS Database Manager 2/6/2009 3:00 PM 2
IMS Overview
DL/I Control Blocks
IMS DB Programming
Segment Search Arguments
DL/I Calls
IMS Jobs
Advanced Programming

IMS Database Manager
Agenda
2/6/2009 03:00 PM 3
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 4

IMS - INFORMATION MANAGEMENT SYSTEM
DEVELOPED IN 1968 BY IBM
DATA LANGUAGE-I (DL/I) WAS DEVELOPED AS A INTERFACE
BETWEEN APPLICATION CODE AND DATA IN IMS DATABASE


IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 5
Product Features
A MATURE PRODUCT FROM IBM
OVER 40 YEARS IN THE MARKET
MOST CRITICAL CORPORATE DATA UNDER IMS
TWO SEPARATE STRATEGIC PRODUCTS
IMS DB MANAGER
IMS TRANSACTION MANAGER
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 6
IMS Components
PRIMARY PRODUCTS
IMS/DB - DATABASE MANAGEMENT, LOGGING & RECOVERY
IMS/TM - INTERACTIVE ONLINE FUNCTIONS, TRANSACTION
DRIVEN

PRODUCT INSTALLATIONS
DBCTL
DCCTL
DB/DC

IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 7
MVS
CALL DATA
APPLICATION
PROGRAM
DL/I
LOG
INPUT /
OUTPUT
DATA
BASE
DL/I ENVIRONMENT
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 8
IMS Batch Environment
Execution via JCL.
Each job in an address space.
Uses DBCTL
Programs address space contains a copy of DL/I modules.
Programs added without having to modify the IMS system definition.
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 9
IMS On-line Environment
High volume, rapid response transaction processing.
DBDC or DCCTL.
IMS is a started task of MVS.
IMS system definition must include information about all programs and
resources under the control of IMS.
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 10
IMS Dependent Regions
DL/I Region

MPP Regions

BMP Regions
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 11
MODES OF PROCESSING
BATCH DL/I MODE
MPP MODE
BMP MODE

IMS REGIONS
MPP
ONLINE
DL/I
BATCH
BMP
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 12
BATCH DL/I
TRUE BATCH PROCESSING
NO DATA COMMUNICATION SERVICES ARE USED
DATABASES ACCESSED MUST BE OFFLINE


MPP (MESSAGE PROCESSING PROGRAM)
TRUE ONLINE PROCESSING
TRANSACTION ARE ENTERED AT TERMINAL AND STORED IN
MESSAGE QUEUE
DATABASES ACCESSED MUST BE ONLINE

IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 13
BMP (BATCH MESSAGE PROCESSING)

1. TRANSACTION ORIENTED:
CAN READ & WRITE TO ONLINE MESSAGE QUEUES
CAN PROCESS ONLINE FILES AND DATABASES

2. BATCH ORIENTED:
CAN ONLY READ MESSAGE QUEUES
ACCESS ONLINE DATABASES IN BATCH MODE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 14
SEGMENT OCCURRNCES
TWIN SEGMENTS
SIBLING SEGMENTS
-- Level 1
-- Level 2
B3
A2
D1
B2
A1
C1
ROOT SEGMENT (PARENT)
B1
HIERARCHICAL STRUCTURE
FOLLOWS INVERTED TREE STRUCTURE
EACH BOX IN THE HIERARCHY REPRESENTS
A SEGMENT
ROOT SEGMENT WILL BE ON TOP
EACH SEGMENT (EXCEPT ROOT SEGMENT)
IS DIRECTLY DEPENDENT ON ONLY ONE
SEGMENT
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 15
SEGMENT IS THE SMALLEST INFORMATION THAT DL/I CAN FETCH
EACH SEGMENT WILL HAVE UNIQUE 8 CHARACTER (MAX) NAME
SEGMENTS ARE MADE UP OF 1 OR MORE FIELDS
FIELD IS THE SMALLEST UNIT THAT DL/I CAN HANDLE
EACH FIELD WILL HAVE MAX 8 CHARACTER NAME
SEGMENT TYPE vs SEGMENT OCCURRENCE
SEGMENT OCCURRENCE IS A PARTICULAR INSTANCE OF A
SEGMENT TYPE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 16
TWO TYPES OF FIELDS
KEY FIELDS
SEARCH FIELDS
KEY FIELD IS USED TO SEQUENCE DATABASE AND IT CAN NOT
BE CHANGED
BOTH TYPES OF FIELDS CAN BE USED TO SEARCH DATABASE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 17
ROOT A SEGMENT WITHOUT PARENT
PARENT
A SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS
DIRECTLY UNDER IT

CHILD
A SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER
SEGMENT
DEPENDENT
ALL SEGMENTS UNDER A PARTICULAR SEGMENT OF THE
DATABASE
TWIN
ALL OCCURRENCES (2 OR MORE) OF A SEGMENT TYPE
UNDER A PARENT
SIBLINGS
OCCURRENCES OF DIFFERENT SEGMENT TYPES UNDER
A PARENT
TYPES OF SEGMENTS
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 18
1
6
5
11
7
10 4
2 8
3 9
A
B
E
C
D
F
Continued ...
IMS Overview
Segment Sequencing
Numbering From
Top to Bottom
Front to Back
Left to Right
IMS Database Manager 2/6/2009 3:00 PM 19
2 4
1
3
5 7 6 8 9
1. WHICH SEGMENTS ARE DEPENDENT ON SEGMENT 4?
2. WHICH SEGMENTS ARE CHILD SEGMENTS OF SEGMENT 1?
3. WHICH SEGMENTS ARE DEPENDENT SEGMENTS OF SEGMENT 1?
4. HOW MANY LEVELS?
EXERCISE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 20
DATABASE RECORD

ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT
SEGMENTS
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 21
HOW MANY DATABASE RECORDS?
EXERCISE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 22
IMS DATABASE LIMITATIONS

IMS SUPPORTS
15 LEVELS
255 SEGMENTS
1000 FIELDS

NO LIMITATION ON NUMBER OF SEGMENT OCCURRENCES.
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 23

DL/I FORMS BRIDGE BETWEEN
APPLICATION PROGRAM AND IMS
DATABASE

DL/I IS DATABASE MANAGER. IT
CONSISTS OF IMS PROGRAM
MODULES THAT RUN EXTERNAL TO
APPLICATION PROGRAM

DL/I ALLOWS SEQUENTIAL OR
RANDOM PROCESSING OF DATABASE
IMS ENVIRONMENT
App Prog
DL/I
DC
Terminal
Database
DB PCB
interface
I/O PCB
interface
IMS Overview
2/6/2009 03:00 PM 24
DL/I Control
Blocks
IMS Database Manager 2/6/2009 3:00 PM 25
DATABASE DESCRIPTION (DBD)
DEFINES THE LAYOUT OF THE DATABASE
DATABASE ADMINISTRATOR DEFINES LAYOUT USING DBDGEN
MACRO


PROGRAM SPECIFICATION BLOCK (PSB)
DEFINES THE PROGRAMS VIEW OF THE DATABASE AND APPLICATION
PROGRAMS ACCESS AUTHORITY TO DATABASE
DATABASE ADMINISTRATOR / PROGRAMMER DEFINES THIS USING
PSBGEN MACRO
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 26
STATEMENTS IN DBD MACRO
DATA BASE DESCRIPTION (DBD)
STATEMENT DESCRIPTION
DBD SPECIFIES DATABASE NAME, ACCESS METHOD
DATASET SPECIFIES DD NAME TO BE USED IN JCL
SEGM SPECIFIES SEGMENT NAME,SEGMENT LENGTH, PARENT
FIELD

SPECIFIES FIELD NAME, LENGTH, STARTING POSITION
IDENTIFIES A FIELD AS KEY OR SEARCH FIELD
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 27
SAMPLE DBDGEN

PRINT NOGEN
DBD NAME=VENDOR,ACCESS=HDAM
DATASET DD1=VEND,DEVICE=3380
SEGM NAME=VENSEG,PARENT=0,BYTES=100
FIELD NAME=(VENCODE,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM NAME=ITEMSEG,PARENT=VENSEG,BYTES=5
FIELD NAME=(ITEMCODE,SEQ,U),BYTES=5,START=1,TYPE=C
SEGM NAME=LOCNSEG,PARENT=ITEMSEG,BYTES=9
FIELD NAME=(LOCNCODE,SEQ),BYTES=3,START=1,TYPE=C
FIELD NAME=ORDDATE,BYTES=6,START=4,TYPE=C
DBDGEN
FINISH
END
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 28
DATATYPES USED IN DBDGEN
TYPE DESCRIPTION
C Character (Default)
COBOL PICTURE
X
P Packed Decimal COMP-3
Z Zoned Decimal S9
H Half Word Binary 9(4) COMP
F Full Word Binary 9(8) COMP
X Hexadecimal X----
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 29
CAN WE DEFINE OVERLAPPING FIELDS?

DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 30
PROGRAM SPECIFICATION BLOCK (PSB)

MADE UP OF ONE OR MORE PROGRAM COMMUNICATION
BLOCKS (PCBs)
DB PCB - DEFINES PROGRAMS VIEW OF A IMS DATABASE
WHENEVER A DATABASE VIEW DEFINED BY THE PCB IS
ACCESSED BY A CALL, THE RESULTS OF CALL ARE PASSED
THROUGH THE PCB TO PROGRAM
PSB IS GENERATED BY PSBGEN MACRO
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 31
A
B C
D E
DATABASE PCB
PCB GIVES LOGICAL VIEW OF A DATABASE
PORTION OF DATABASE THAT THE PROGRAM PROCESSES IS
CALLED APPLICATION DATA STRUCTURE
A
C
E
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 32
PRINT NOGEN
PCB TYPE=DB,DBDNAME=VENDOR,KEYLEN=15,PROCOPT=LS
SENSEG NAME=VENSEG,PARENT=0
SENSEG NAME=ITEMSEG,PARENT=VENSEG
SENFLD NAME=ITEMNO
SENFLD NAME = ITEMNAME
PSBGEN PSBNAME=KAB000B,LANG=COBOL,CMPAT=Y
END

KEYLEN IS THE LENGTH OF CONCATENATED KEY


SAMPLE PSBGEN
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 33
PROCOPTS IN PSB DEFINES SECURITY LEVEL FOR THE PROGRAM
DL/I Control Blocks
PROCOPT Description
G Get or Read
R Replace
I Insert
D Delete
A All Options (GRID)
L / LS Initial Load
K Access only Key of Segments
O Used with G to indicate Hold call is not allowed
P Path Call
IMS Database Manager 2/6/2009 3:00 PM 34
DBD1 DBD3 DBD2
PCB1 PCB2
PCB3 PCB4
APPLICATION PROGRAM CAN HAVE MULTIPLE VIEWS OF A
DATABASE BY USING SEPARATE PCBS FOR A SINGLE DATABASE
PSB
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 35
PRINT NOGEN
PCB TYPE=DB,DBDNAME=VENDOR,KEYLEN=15
SENSEG NAME=VENSEG,PROCOPT=G
SENSEG NAME=ITEMSEG,PARENT=VENSEG,PROCOPT=R
SENSEG NAME=LOCNSEG,PARENT=ITEMSEG,PROCOPT=A
PSBGEN
END
1. LIST THE SEGMENTS THAT MAY BE UPDATED USING THIS PSB
2. LIST THE SEGMENTS THAT CANNOT BE UPDATED
3. GIVE THE VALID PROCOPT TO BE CODED FOR ADDING AND
REPLACING RECORDS IN LOCATION SEGMENT
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 36
EMPDATA
WORKDATA DEPTDATA BENDATA
BASED ON THE ABOVE VIEW OF DATABASE FILL IN THE MISSING PIECES
OF PCB
PCB TYPE=DB,DBDNAME=EMPDB,KEYLEN=16,PROCOPT=G
SENSEG NAME=_________________,PARENT=_____________________
SENSEG NAME=_________________,PARENT=_____________________
SENSEG NAME=_________________,PARENT=_____________________
SENSEG NAME=_________________,PARENT=_____________________
PSBGEN LANG=COBOL,PSBNAME=EMPPSBY
END
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 37
DL/I Control Blocks
DBD
ACB
PSB
Access Control Block (ACB)
Controls Access to Database
ACBGEN builds control blocks by getting information from DBD and PSB
2/6/2009 03:00 PM 38
IMS DB
Programming
IMS Database Manager 2/6/2009 3:00 PM 39
IMS Call
IMS DB Programming
Example :-
CALL CBLTDLI USING GU
VEDNOR-DB-PCB
ITEM-SEG-IO-AREA
VENDOR-SEG-SSA
ITEM-SEG-SAA
IMS Database Manager 2/6/2009 3:00 PM 40
APPLICATION PROGRAM COMPONENTS
IMS DB Programming
Segment To/From Database
Return Info From DL/I
I/O Area
PCB Mask
DL/I Modules
DL/I
Program Entry
Calls to DL/I
Retrieve
Insert
Delete
Replace
Processing
Termination
Program Logic
Data Area
IMS Database Manager 2/6/2009 3:00 PM 41
IDENTIFICATION DIVISION

ENVIRONMENT DIVISION

DATA DIVISION
FILE SECTION
WORKING STORAGE SECTION
LINKAGE SECTION



PROCEDURE DIVISION
FUNCTION CODES

I/O AREA

SEGMENT SEARCH ARGUMENTS
PCB MASKS
DATA DIVISION
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 42
FUNCTION CODES

A FUNCTION CODE IS A 4 BYTE CODE TO TELL DL/I WHAT KIND OF CALL THE
PROGRAM IS MAKING
SOME VALID FUNCTION CODES ARE
GU - GET UNIQUE
GN - GET NEXT
GNP - GET NEXT WITHIN PARENT
GHU - GET HOLD UNIQUE
GHN - GET HOLD NEXT
GHNP - GET HOLD NEXT WITHIN PARENT
DLET - DELETE
REPL - REPLACE
ISRT - INSERT
XRST - RESTART
CHKP - CHECKPOINT
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 43
A RECORD DESCRIPTION IN THE WORKING STORAGE SECTION WHICH HOLDS
DATABASE SEGMENTS DATA
IS USED BY DL/I TO PASS SEGMENTS TO THE PROGRAM
CAN BE USED BY PROGRAMMER TO ADD OR REPLACE SEGMENT DATA
MUST BE EQUAL TO OR GREATER THAN THE LENGTH OF THE LONGEST
SEGMENT TO BE USED BY THE PROGRAM
IN CASES WHERE MULTIPLE SEGMENTS OF A HIERARCHY ARE UPDATED OR
RETRIEVED, THE I/O AREA MUST BE LARGE ENOUGH TO HOLD THE LARGEST
CONCATENATION OF THESE SEGMENTS
INPUT/OUTPUT AREA
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 44
USED IN LINKAGE SECTION

LINKAGE SECTION
01 DB-PCB-1.
03 DBD-NAME PIC X(8).
03 SEG-LEVEL PIC X(2).
03 STATUS-CODE PIC X(2).
03 PROC-OPTIONS PIC X(4).
03 IMS-RESERVED PIC S9(5) COMP.
03 SEG-NAME PIC X(8).
03 KEY-LEN PIC S9(5) COMP.
03 NUMBER-OF-SENEGS PIC S9(5) COMP.
03 KEY-FEEDBACK PIC X(??). <= length depends on segment key


THE PCB MASK
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 45
THERE SHOULD BE ATLEAST ONE PCB FOR EACH DATABASE USED

STATUS CODE OF PCB MASK EXPLAINS WHETHER A CALL IS SUCCESSFUL
OR NOT

THE SEQUENCE IN WHICH PCB MASKS ARE DEFINED IN LINKAGE SECTION
NEED NOT BE SAME AS THAT IN PSB

THE PCB MASK
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 46
PROCEDURE DIVISION.
ENTRY DLITCBL USING DB-PCB-1,
DB-PCB-2, Sequence should match that of
:::::::::::: PSB Macro
::::::::::::
::::::::::::
CALL CBLTDLI USING WS-FUNCTION-CODE,
DB-PCB-MASK,
IO-AREA,
SSA-1, SSA-2, SSA-3, . Optional
::::::::::
::::::::::
GOBACK.

PROCEDURE DIVISION
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 47
IMS ENTRY LINKAGE
IMS DB Programming
Transfers control from DL/I to the program.
Sets addressability to the PCBs
PCB listing in the ENTRY statement should be in the same
sequence as they appear in the PSB of the program
IMS Database Manager 2/6/2009 3:00 PM 48
PCB DATABASE RELATIONSHIP
IMS DB Programming
Call DL/I , ...., PCB1, ....
Call DL/I , ...., PCB2, .....
Database
B
Database
A
PCB 2
PCB 1
DBDB DBDA
PSB
Program
2/6/2009 03:00 PM 49
Segment
Search
Arguments
IMS Database Manager 2/6/2009 3:00 PM 50
STANDARD IMS CALL TO ACCESS ANY DATABASE

CALL CBLTDLI USING FUNCTION CODE,
DB-PCB,
I-O AREA,
SSA-1,
SSA-2,



Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 51
THE SSA IS AN AREA IN WORKING STORAGE USED TO IDENTIFY THE
SEGMENT TO WHICH ACCESS IS REQUIRED
IT IS AN OPTIONAL DL/I CALL PARAMETER THAT QUALIFIES A CALL BY
SPECIFIYING A PARTICULAR SEGMENT TYPE OR OCCURRENCE

WHEN SPECIFIED IN A DL/I CALL
THE SSA ALWAYS FOLLOWS I/O PARAMETER
THERE MAY BE 1 TO 15 SSAs IN A CALL STATEMENT
THE SSAs MUST APPEAR IN HIERARCHICAL ORDER BY SEGMENT TYPE
THE SSA CONTAINS INFORMATION TO OBTAIN THE REQUIRED SEGMENT.
THE INFORMATION COULD BY SEGMENT NAME OR SEGMENT NAME &
SEGMENT KEY OR SEGMENT NAME & SEARCH FIELD

Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 52
WHAT IS THE SIGNIFICANCE OF MAX 15 SSA?

Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 53
UNQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT TYPE

QUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE
MORE EFFICIENT THAN UNQUALIFIED SSA


TYPES OF SSAS
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 54
UNQUALIFIED SSA
Segment Search Arguments
Segment Name b
8 1
IMS Database Manager 2/6/2009 3:00 PM 55
WORKING-STORAGE-SECTION.
..
01 HISTORY-SSA.
05 SEGMENT-NAME PIC X(8) VALUE HISTORY .
05 FILLER PIC X(1) VALUE SPACE.

Blank in 9th position or * in 9
th
position - in position 10 and a blank in position 11
UNQUALIFIED SSA
H I S T O R Y *
H I S T O R Y
-
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 56
QUALIFIED SSA
Segment Search Arguments
Segment Name (
8 1
Field Name op
8 2
Comparative Value )

n 1
Identifies a specific segment occurrence.
IMS Database Manager 2/6/2009 3:00 PM 57
OPERATORS USED IN QUALIFIED SSA
OPERATOR SYMBOLS
Equal to EQ, = , =
Not Equal to NE, =, =
Less than LT, < , <
Less than or Equal to LE, <=, =<
Greater than GT, > , >
Greater than or Equal to GE, >=, =>
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 58
WORKING-STORAGE-SECTION.
..
01 SSA-EMPLOYEE.
03 SEGMENT-NAME PIC X(8) VALUE EMPLOYEE
03 COMMAND-CODE PIC X(2) VALUE *-.
03 BEGIN-QUALIFY PIC X(1) VALUE (.
03 KEY-NAME PIC X(8) VALUE EMPKEY .
03 OPERATOR PIC X(2) VALUE =.
03 KEY-VALUE PIC X(12) .
03 END-QUALIFY PIC X(1) VALUE ).
PROCEDURE DIVISION.
..
MOVE 123456789000 TO KEY-VALUE.
CALL CBLTDLI USING GU,
EMP-PCB,
EMPDATA-IO-AREA,
SSA-EMPLOYEE.
QUALIFIED SSA
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 59
COMMAND CODES INCREASE THE FUNCTIONALITY OF IMS CALLS
COMMAND CODES ARE DESIGNATED BY AN ASTERISK * FOLLOWED BY
CHARACTERS

NOTE: Detailed description of Command codes will be covered in Session
COMMAND CODES

COMMAND CODES
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 60
COMMAND CODES
Segment Search Arguments
Concatenates the keyfields C
Overrides the default parentage P
Negates the replace function for the specified segment level
following a path retrieval call
N
Path Call; allows retrieval or insertion of multiple segments in a
hierarchic path with a single call
D
Retrieve the last occurrence of the segment type

L
Retrieve the first occurrence of the segment type
F
Command Codes Description
IMS Database Manager 2/6/2009 3:00 PM 61
COMMAND CODE F
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:
A batch process reduces the rate of interest of the first loan if the customer has more than 5
active loans

WITHOUT COMMAND CODE WITH COMMAND CODE

- ISSUE GN CALLS FOR
LOANDETL SEGMENT
WITH QUALIFIED CUSTOMER
SSA AND UNUQALIFIED
LOANDETL SSA UNTIL END
OF DATABASE OR 5 LOANS
ARE FOUND

-ISSUE A SEPARATE GHU CALL
TO GET THE FIRST LOAN
SEGMENT

-UPDATE THE INTREST RATE
AND ISSUE REPL CALL TO
LOANDETL SEGMENT

- ISSUE GHN CALLS FOR
LOANDETL SEGMENT
WITH QUALIFIED CUSTOMER
SSA AND UNUQALIFIED
LOANDETL SSA UNTIL END
OF DATABASE OR 5 LOANS
ARE FOUND

-USE THE SAME GN CALL WITH
*F POPULATED IN THE FIELD
FOR COMMAND CODE IN SSA

- UPDATE THE INTREST RATE
AND ISSUE REPL CALL TO
LOANDETL SEGMENT
SSA
01 CUSTOMER-SSA-QUAL
05 FILLER X(23) VALUE CUSTOMER(CUSTID = 12345)

01 LOANDETL-SSA-UNQUAL
05 FILLER X(11) VALUE LOANDETL*F
IMS Database Manager 2/6/2009 3:00 PM 62
COMMAND CODE L
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:
Get the latest Loan Details of a particular customer

WITHOUT COMMAND CODE WITH COMMAND CODE


- ISSUE GN CALLS FOR
LOANDETL SEGMENT
WITH QUALIFIED CUSTOMER
SSA AND UNUQALIFIED
LOANDETL SSA UNTIL END
OF DATABASE

- ISSUE JUST ONE GN CALL FOR
LOANDETL SEGMENT
WITH QUALIFIED CUSTOMER
SSA AND *L POPULATED IN
THE FIELD FOR COMMAND
CODE IN UNQUALIFIED
LOANDETL SSA

SSA
01 CUSTOMER-SSA-QUAL
05 FILLER X(23) VALUE CUSTOMER(CUSTID = 12345)

01 LOANDETL-SSA-UNQUAL
05 FILLER X(11) VALUE LOANDETL*L
IMS Database Manager 2/6/2009 3:00 PM 63
COMMAND CODE D
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:
Get the Customer info and latest Loan Details of all Customers

WITHOUT COMMAND CODE WITH COMMAND CODE

- ISSUE A GN CALL FOR
CUSTOMER SEGMENT
USING UNQUALIFIED SSA

- ISSUE GN CALLS FOR
LOANDETL SEGMENT
WITH QUALIFIED CUSTOMER
SSA AND UNUQALIFIED
LOANDETL SSA UNTIL END
OF DATABASE

- CONTINUE WITH STEP 1 AND
STEP 2 UNTILL END OF
DATABASE OCCURS IN STEP1


-ISSUE GN CALLS WITH *D
COMMAND CODE IN
UNQUALIFIED CUSTOMER
SSA AND UNQUALIFIED
LOANDETL SSA *L COMMAND
CODE UNTILL END OF
DATABASE

SSA
01 CUSTOMER-SSA-UNQUAL
05 FILLER X(11) VALUE CUSTOMER*D

01 LOANDETL-SSA-UNQUAL
05 FILLER X(11) VALUE LOANDETL*L
IMS Database Manager 2/6/2009 3:00 PM 64
COMMAND CODE N
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:
Reduce the interest rate if the age of the customer is more than 65

WITHOUT COMMAND CODE WITH COMMAND CODE

- ISSUE A GN CALL FOR
CUSTOMER SEGMENT
USING UNQUALIFIED SSA

- IF THE AGE OF CUSTOMER
IS MORE THAN 65, ISSUE A
GHN CALL FOR LOANDETL
SEGMENT WITH UNUQALIFIED
LOANDETL SSA

- UPDATE THE INTEREST RATE
AND ISSUE A REPLACE CALL

- ISSUE A GHN CALL
WITH *DN COMMAND CODE IN
UNQUALIFIED CUSTOMER SSA
AND UNQUALIFIED
LOANDETL SSA

- IF THE AGE OF CUSTOMER
AGE OF CUSTOMER IS MORE
THAN 65, UPDATE THE
INTEREST RATE AND ISSUE
A REPLACE CALL


SSA
01 CUSTOMER-SSA-UNQUAL
05 FILLER X(11) VALUE CUSTOMER*DN

01 LOANDETL-SSA-UNQUAL
05 FILLER X(11) VALUE LOANDETL
IMS Database Manager 2/6/2009 3:00 PM 65
COMMAND CODE P
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:
Get the all the Loan Details for a particular Customer

WITHOUT COMMAND CODE WITH COMMAND CODE

- ISSUE A GU/GN CALL FOR
CUSTOMER SEGMENT
USING QUALIFIED SSA

- ISSUE GNP CALLS FOR
LOANDETL SEGMENT WITH
UNUQALIFIED LOANDETL
SSA UNTIL END OF DATABASE




- ISSUE A GN CALL FOR
LOANDETL SEGMENT
USING QUALIFIED CUSTOMER
SSA WITH *P COMMAND CODE
AND UNQUALIFIED
LOANDETL SSA

- ISSUE GNP CALLS FOR
LOANDETL SEGMENT WITH
UNUQALIFIED LOANDETL
SSA UNTIL END OF DATABASE


SSA
01 CUSTOMER-SSA-QUAL
05 FILLER X(23) VALUE CUSTOMER*P(CUSTID = 12345)

01 LOANDETL-SSA-UNQUAL
05 FILLER X(11) VALUE LOANDETL
IMS Database Manager 2/6/2009 3:00 PM 66
COMMAND CODE C
Segment Search Arguments
SUPPLIER
Supplier Database
ITEMS
Requirement:
Get the Item Price details for Item Code = AB100 for Supplier Code = 12345

WITHOUT COMMAND CODE WITH COMMAND CODE

- ISSUE A GU CALL FOR ITEM SEGMENT
USING QUALIFIED SUPPLIER SEGMENT
SSA AND QUALIFIED ITEMS SEGMENT
SSA
SSA
01 SUPPLIER-SSA-QUAL
05 FILLER X(11) VALUE
SUPPLIER(SUPLRID = 12345)

01 ITEMS-SSA-QUAL
05 FILLER X(11) VALUE
ITEMS (ITEMCODE =AB100)

- ISSUE A GU CALL FOR ITEM SEGMENT
USING QUALIFIED SSA FOR ITEMS
SEGMENT WITH *C COMMAND CODE
AND CONCATENATED KEYFIELDS

SSA
01 ITEMS-SSA-QUAL
05 FILLER X(11) VALUE
ITEMS *C(ITEMCODE =12345AB100)
IMS Database Manager 2/6/2009 3:00 PM 67
BOOLEAN OPERATIONS IN SSA
Segment Search Arguments
USED TO FURTHER RESTRICT THE SEARCH
CAN BE SEARCHED WITH MORE THAN ONE CONDITION OR MORE THAN ONE
FIELDS
CODED IN THE SAME QUALIFIED SSA
IMS Database Manager 2/6/2009 3:00 PM 68
BOOLEAN OPERATIONS IN SSA
Segment Search Arguments
01 SSA-ITEMSEG-QUAL-B.
03 SEGMENT-NAME PIC X(8) VALUE ITEMSEG
03 COMMAND-CODE PIC X(2) VALUE *-.
03 BEGIN-QUALIFY PIC X(1) VALUE (.
03 KEY-NAME1 PIC X(8) VALUE ITEMNO .
03 KEY-OPER1 PIC X(2) VALUE >.
03 KEY-VALUE1 PIC X(5).
03 BOOLEAN-FILLER PIC X(1) VALUE &
03 KEY-NAME2 PIC X(8) VALUE ITEMNO .
03 KEY-OPER2 PIC X(2) VALUE <.
03 KEY-VALUE2 PIC X(5).
03 END-QUALIFY PIC X(1) VALUE ).
ITEMSEG *-(ITEMNO > 50000&ITEMNO < 60000)
Example -1
IMS Database Manager 2/6/2009 3:00 PM 69
BOOLEAN OPERATIONS IN SSA
Segment Search Arguments
01 SSA-EMPLOYEE-QUAL-B.
03 SEGMENT-NAME PIC X(8) VALUE EMPDATA
03 COMMAND-CODE PIC X(2) VALUE *-.
03 BEGIN-QUALIFY PIC X(1) VALUE (.
03 KEY-NAME1 PIC X(8) VALUE EMPDEPT .
03 KEY-OPER1 PIC X(2) VALUE EQ.
03 KEY-VALUE1 PIC X(10).
03 BOOLEAN-FILLER PIC X(1) VALUE &
03 KEY-NAME2 PIC X(8) VALUE EMPSTAT .
03 KEY-OPER2 PIC X(2) VALUE NE.
03 KEY-VALUE2 PIC X(10).
03 END-QUALIFY PIC X(1) VALUE ).
EMPDATA *-(EMPDEPT EQ FINANCE &EMPSTAT NE RETIRED )
Example -2
2/6/2009 03:00 PM 70
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 71
ONE OF THE FOLLOWING FUNCTIONS WILL BE USED IN A RETRIEVAL DL/I CALL
GU - GET UNIQUE
GN - GET NEXT
GNP - GET NEXT WITHIN PARENT


WHEN A RETRIEVAL IS DONE WITH AN INTENT TO UPDATE OR DELETE RECORDS, THE
ABOVE FUNCTION CODES WILL BE PREFIXED WITH HOLD
GHU - GET HOLD UNIQUE
GHN - GET HOLD NEXT
GHNP - GET HOLD NEXT WITHIN PARENT

DL/I RETRIEVAL CALLS
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 72
GET UNIQUE

CALL CBLTDLI USING GU , PCB-MASK,
SEGMENT-IO-AREA
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
SEGMENTD*-(DKEY=6)

AFTER THE CALL SEGMENTD WITH DKEY=6 WILL BE IN SEGMENT-IO-AREA
1
6
5
11
7
10 4
2 8
3 9
AKEY
BKEY
EKEY
CKEY
DKEY FKEY
EXERCISE: WRITE A GU TO RETRIEVE FKEY=10
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 73
WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA?
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 74
DL/I Calls
COMMON STATUS CODES FOR GU

SPACES - THE CALL IS SUCCESSFUL

GE - THE SEGMENT NOT FOUND
IMS Database Manager 2/6/2009 3:00 PM 75
GET NEXT


1
6
5
11
7
10 4
2 8
3 9
AKEY
BKEY
EKEY
CKEY
DKEY FKEY
GK
GA
DL/I Calls
CALL CBLTDLI USING GN
PCB-MASK,
SEG-IO-AREA,

IMS Database Manager 2/6/2009 3:00 PM 76
CALL CBLTDLI USING GN , PCB-MASK,
SEG-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTE*-(EKEY=8)

AFTER THE CALL SEGMENTE WITH EKEY=8 WILL BE IN PROGRAM I/O AREA
1
6
5
11 7
10 4
2 8
3 9
AKEY
BKEY
EKEY
CKEY
DKEY
FKEY
WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER EKEY=8 IS RETRIEVED?
EXERCISE
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 77
DL/I Calls
COMMON STATUS CODES FOR GN

SPACES - THE CALL IS SUCCESSFUL

GB - END OF DATABASE
IMS Database Manager 2/6/2009 3:00 PM 78
CALL CBLTDLI USING GU , LS-PCB-MASK, SEGMENT-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
CALL CBLTDLI USING GNP , LS-PCB-MASK, SEGMENT-IO-AREA

AFTER THE CALL SEGMENTC WITH CKEY=3 WILL BE IN SEGMENT-IO-AREA
GET NEXT WITHIN PARENT
1
6
5
11
7
10 4
2 8
3 9
AKEY
BKEY
EKEY
CKEY
DKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 79
WHAT WILL BE THE OUTPUT IF GNP IS DONE 4 MORE TIMES IN
PREVIOUS EXAMPLE?
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 80
DL/I Calls
COMMON STATUS CODES FOR GNP

SPACES - THE CALL IS SUCCESSFUL

GE - SEGMENT NOT FOUND / NO MORE SEGMENTS TO RETRIEVE
IMS Database Manager 2/6/2009 3:00 PM 81
CALL CBLTDLI USING GN , LS-PCB-MASK, WS-SEG-IO-AREA,
SEGMENTA*D(AKEY=1)
SEGMENTF*-(FKEY=10)

WHAT WILL BE THE RESULT AFTER SUCCESSFUL COMPLETION OF THE ABOVE CALL?
PATH CALL
1
6
5
11
7
10 4
2 8
3 9
BKEY
EKEY
CKEY
DKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 82
FUNCTIONS IDENTICAL TO GU/GN/GNP

INDICATES THE REQUESTED SEGMENT(S) MAY BE DELETED OR REPLACED FORCING IMS
TO PUT A LOCK ON THESE SEGMENTS WHICH WILL BE RELEASED ONLY AFTER ANOTHER
CALL BY SAME PCB

THIS ENSURES DATA INTEGRITY

GET HOLD CALLS (GHU/GHN/GHNP)
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 83
SEGMENTS MUST HAVE BEEN RETRIEVED WITH A GET HOLD CALL (GHU, GHN, GHNP)

NO INTERVENING CALLS BETWEEN GET HOLD CALL AND REPLACE/DELETE
CALLS

MULTIPLE REPLACE CALLS ALLOWED AFTER A GET HOLD CALL
DELETE/REPLACE CALLS
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 84
CALL CBLTDLI USING GHU , LS-PCB-MASK, SEGMENT-IO-AREA
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2).

CALL CBLTDLI USING DLET, LS-PCB-MASK
DELETE CALL
WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SEGMENTA*D(AKEY=1)?
1
6
5
11
7
10 4
2 8
3 9
BKEY
EKEY
CKEY
DKEY
AKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 85
UPDATE CONTENTS OF A SEGMENT

KEY FIELD MAY NOT BE ALTERED

SSAs ARE NOT USED NORMALLY

COMMAND CODES
D - TO REPLACE PATH OF SEGMENTS
N - TO EXCLUDE SEGMENTS FROM PATH

REPLACE (REPL)
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 86
CALL CBLTDLI USING GHU , LS-PCB-MASK, WS-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
SEGMENTC*-(CKEY=3)

Change contents of WS-IO-AREA

CALL CBLTDLI USING REPL, LS-PCB-MASK, WS-IO-AREA
----- WILL RESULT IN UPDATE OF SEGMENTC
1
6
5
11
7
10 4
2 8
3 9
BKEY
EKEY
CKEY
DKEY FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 87
DL/I Calls
COMMON STATUS CODES FOR REPL

SPACES - SUCCESSFUL REPLACE

DA - TRYING TO CHANGE KEY

DJ - NO PRECEDING GET HOLD CALL

RX - REPLACE RULE VIOLATION

IMS Database Manager 2/6/2009 3:00 PM 88
TWO MODES OF INSERT
LOAD MODE - FOR INITIAL LOADING OF DATABASE
UPDATE MODE - ADD TO EXISTING DATABASE

LOAD MODE:
FOR LOAD MODE PROCOPT = L or LS MUST BE SPECIFIED IN PSB
PROCOPT=L LOADS DATABASE BUT NOT NECESSARILY IN
SEQUENTIAL ORDER

INSERT (ISRT)
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 89
UPDATE MODE:
FOR UPDATE MODE PROCOPT=I or IS MUST BE SPECIFIED IN PSB
PROCOPT=I INSERTS SEGMENTS IN SEQ OR RANDOM ORDER
PROCOPT=IS ADDS NEW SEGMENTS ONLY IN ASCENDING ORDER

COMMAND CODES
F OR L - OVERRIDES INSERT RULE
D - INSERT PATH OF SEGMENTS

INSERT (ISRT)
Continued ...
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 90
99
MOVE DATA FOR SEGMENTE INTO WS-SEGMENT-IO-AREA WITH EKEY=99

CALL CBLTDLI USING ISRT, LS-PCB-MASK, SEGMENT-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTE

AFTER THE CALL SEGMENTE WITH EKEY=99 IS INSERTED
1
6
5
11
7
10 4
2 8
3 9
BKEY
EKEY
CKEY
DKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 91
DL/I Calls
COMMON STATUS CODES FOR ISRT

SPACES - ISRT CALL IS SUCCESSFUL

GE - PARENT SEGMENT NOT FOUND

II - DUPLICATE RECORD
IMS Database Manager 2/6/2009 3:00 PM 92
DL/I Calls
COMMAND CODES U & V
U AND V ARE USED TO PREVENT GN AND GNP CALLS FROM LEAVING THE
CURRENT POSITIONS

WHEN USED WITH UNQUALIFIED SSAs, THOSE GIVE THE EFFECTIVENESS OF
QUALIFIED SSAs
IMS Database Manager 2/6/2009 3:00 PM 93
DL/I Calls
COMMAND CODES U & V

ABC
Supplier Database
B1000
A1000
ORD3
ORD2
ORD1
ORD6
ORD5
ORD4
SUPPLIER
ITEMS
ORDERS
SSA
01 SUPPLIER-UNQUAL-SSA PIC X(09)
VALUE SUPPLIER
01 ITEMS-UNQUAL-SSA PIC X(09)
VALUE ITEMS
01 ORDERS-UNQUAL-SSA PIC X(09)
VALUE ORDERS
CALL CBLTDLI USING GN
SUPPLIER-DB-PCB,
ORDERS-IO-AREA
SUPPLIER-UNQUAL-SSA
ITEMS-UNQUAL-SSA
ORDERS-UNQUAL-SSA


WITHOUT COMMAND CODE U
SSA
01 SUPPLIER-UNQUAL-SSA PIC X(09)
VALUE SUPPLIER
01 ITEMS-UNQUAL-SSA PIC X(11)
VALUE ITEMS *U
01 ORDERS-UNQUAL-SSA PIC X(09)
VALUE ORDERS
WITH COMMAND CODE U
A1000
ORD1
A1000
ORD2
ORD1
A1000
ORD3
ORD2
ORD1
A1000
ORD4
ORD3
ORD2
ORD1
A1000
ORD5
ORD4
ORD3
ORD2
ORD1
A1000
ORD6
ORD5
ORD4
ORD3
ORD2
ORD1
A1000
B1000
ORD6
ORD5
ORD4
ORD3
ORD2
ORD1
A1000
B1000
ORD6
ORD5
ORD4
ORD3
ORD2
ORD1
A1000
IMS Database Manager 2/6/2009 3:00 PM 94
DL/I Calls
COMMAND CODES U & V

ABC
Supplier Database
B1000
A1000
ORD3
ORD2
ORD1
ORD6
ORD5
ORD4
SUPPLIER
ITEMS
ORDERS
SSA
01 SUPPLIER-UNQUAL-SSA PIC X(09)
VALUE SUPPLIER
01 ITEMS-UNQUAL-SSA PIC X(11)
VALUE ITEMS *U
01 ORDERS-UNQUAL-SSA PIC X(09)
VALUE ORDERS

CALL CBLTDLI USING GN
SUPPLIER-DB-PCB,
ORDERS-IO-AREA
SUPPLIER-UNQUAL-SSA
ITEMS-UNQUAL-SSA
ORDERS-UNQUAL-SSA


WITH COMMAND CODE U
SSA
01 SUPPLIER-UNQUAL-SSA PIC X(09)
VALUE SUPPLIER
01 ITEMS-UNQUAL-SSA PIC X(11)
VALUE ITEMS *V
01 ORDERS-UNQUAL-SSA PIC X(09)
VALUE ORDERS
WITH COMMAND CODE V
XYZ
A1000
ORD8
ORD7
2/6/2009 03:00 PM 95
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 96
RUN JCL
DL/I
APPLICATION
PROGRAM
IMS
DATABASE
PROGRAM NAME
PSB NAME
C
B
L
T
D
L
I


D
L
I
T
C
B
L

GOBACK
RUN JCL EXECUTES THE BATCH PROCESSOR
DFSRRC00 AND PASSES THE APPLICATION
PROGRAM NAME AND PSBNAME AS
PARAMETERS
ENTRY DLITCBL PASSES THE PCB ADDRESS TO
THE PROGRAM

CBLTDLI ACCEPTS PARAMETERS LIKE
FUNCTION CODE, I/O AREA AND SSA TO DO THE
NECESSARY DATABASE OPERATIONS AND
RETURNS DATA AND STATUS CODES
DESCRIBING THE SUCCESS OF THE CALL

GOBACK IN THE COBOL PROGRAM TAKES THE
CONTROL BACKTO DL/I WHICH PERFORMS IMS
FILES CLOSING AND TERMINATES THE BATCH
STEP. STOP RUN SHOULD NEVER BE USED AS
IT WILL NOT FREE RESOURCES
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 97
BMP JOB

//STEP050 EXEC PGM=DFSRRC00,REGION=1600K,
// PARM=(BMP,PROGNAME,PSBNAME,,,,,,,,,IMSID,,)
//RESLIB DD DSN=IMS.PROD.RESLIB,DISP=SHR
//SYSUDUMP DD SYSOUT=*
//SNAPDD DD SYSOUT=*
//IMS DD DSN=IMS.DBDLIB,DISP=SHR
// DD DSN=IMS.PSBLIB,DISP=SHR
//SYSOUT DD SYSOUT=*,DCB=BLKSIZE=133
//PRINT DD SYSOUT=*
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 98
DL/I JOB

//STEP050 EXEC PGM=DFSRRC00,REGION=1600K,
// PARM=(DLI,PROGNAME,PSBNAME,,,,,,,,,IMSID,,)
//RESLIB DD DSN=IMS.PROD.RESLIB,DISP=SHR
//SYSUDUMP DD SYSOUT=*
//SNAPDD DD SYSOUT=*
//IMS DD DSN=IMS.DBDLIB,DISP=SHR
// DD DSN=IMS.PSBLIB,DISP=SHR
//SYSOUT DD SYSOUT=*,DCB=BLKSIZE=133
//PRINT DD SYSOUT=*
//DDNAME1 DD DSN=IMS.DB1.FILENAME,DISP=SHR
//DDNAME2 DD DSN=IMS.DB2.FILENAME, DISP=SHR
//DDNAME3 DD DSN=IMS.DB3.FILENAME, DISP=SHR
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 99
DFSDDLTO JOB
//STEP050 EXEC PGM=DFSRRC00,REGION=1600K,
// PARM=(DL/I,DFSDDLTO,PSBNAME,,,,,,,,,IMSID,,)
//RESLIB DD DSN=IMS.PROD.RESLIB,DISP=SHR
//IMS DD DSN=IMS.DBDLIB,DISP=SHR
// DD DSN=IMS.PSBLIB,DISP=SHR
//SYSOUT DD SYSOUT=*,DCB=BLKSIZE=133
//PRINT DD SYSOUT=*
//EMPDD DD DSN=IMS.EMPDATA.FILE,DSN=SHR
//SYSIN DD *
S 1 1 1 1 1 EMPDATA
L GHU EMPLOYEE *DN(EMPLKEY =KRISHNA )
PROJECT (PROJKEY =E-DART )

L DLET
/*
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 100
DFSDDLTO JOB
PRINTING OPTIONS

//SYSIN DD *
S 1 1 1 1 1 EMPDATA
L GHU EMPLOYEE *N(EMPLKEY =KRISHNA )
PROJECT (PROJKEY =E-DART )

L DLET
/*
SEGMENT (1, b)
PCB (1, 2)
COMPARE (1, 2, b)
CALL (1, 2, b)
COMMENT (1, b)
b do not print, 1 print always, 2 print if compare unequal
IMS Jobs
2/6/2009 03:00 PM 101
Advanced
Programming
IMS Database Manager 2/6/2009 3:00 PM 102

ITS A TECHNIQUE OF SETTING DIFFERENT POINTERS TO THE SAME DATABASE

IT CAN BE DONE WITH EITHER MORE THAN ONE NORMAL PCBs OR A SINGLE MULTIPLE
POSITIONABLE PCB




Advanced Programming
MULTIPLE POSITIONING
IMS Database Manager 2/6/2009 3:00 PM 103
Advanced Programming
MULTIPLE POSITIONING WITH MORE THAN ONE NORMAL PCBs
PAY3
PAY2
PAY1
INV3
INV2
INV1
ABC
SUPPLIER
INVOICE
PAYMENT
PCB TYPE=DB,DBDNAME=SUPLRINF,KEYLEN=15,PROCOPT=G
SENSEG NAME=SUPPLIER,PARENT=0
SENSEG NAME=INVOICE,PARENT=SUPPLIER
SENSEG NAME=PAYMENT,PARENT=SUPPLIER

PCB TYPE=DB,DBDNAME=SUPLRINF,KEYLEN=15,PROCOPT=G
SENSEG NAME=SUPPLIER,PARENT=0
SENSEG NAME=INVOICE,PARENT=SUPPLIER
SENSEG NAME=PAYMENT,PARENT=SUPPLIER

PSB
CALL CBLTDLI USING GN
SUPLRINF-PCB-1
INVOICE-IO-AREA
SUPPLIER-QUAL-SSA
INVOICE-UNQUAL-SSA

CALL CBLTDLI USING GN
SUPLRINF-PCB-2
PAYMENT-IO-AREA
SUPPLIER-QUAL-SSA
PAYMENT-UNQUAL-SSA
PROGRAM
IMS Database Manager 2/6/2009 3:00 PM 104
Advanced Programming
MULTIPLE POSITIONING WITH A SINGLE PCB
PAY3
PAY2
PAY1
INV3
INV2
INV1
ABC
SUPPLIER
INVOICE
PAYMENT
CALL CBLTDLI USING GN
SUPLRINF-PCB-1
INVOICE-IO-AREA
SUPPLIER-QUAL-SSA
INVOICE-UNQUAL-SSA

CALL CBLTDLI USING GN
SUPLRINF-PCB-1
PAYMENT-IO-AREA
SUPPLIER-QUAL-SSA
PAYMENT-UNQUAL-SSA
PROGRAM
PCB TYPE=DB,DBDNAME=SUPLRINF,KEYLEN=15,
PROCOPT=G,POS=M
SENSEG NAME=SUPPLIER,PARENT=0
SENSEG NAME=INVOICE,PARENT=SUPPLIER
SENSEG NAME=PAYMENT,PARENT=SUPPLIER


PSB
IMS Database Manager 2/6/2009 3:00 PM 105
Advanced Programming
GSAM FILES
PCB TYPE=GSAM,NAME=GSAMINP,PROCOPT=GS

PCB TYPE=GSAM,NAME=GSAMOUT,PROCOPT=LS
PSB
DBD NAME=GSAMINP,ACCESS=GSAM
DATASET DD1=INFILE,RECFM=FB
DBDGEN
FINISH
END
DBD

NORMAL FLAT FILES OF FXIXED/VARIABLE BLOCK

GSAM FILES ARE NEEDED IN CASE FILE HANDLING IS PERFORMED BY IMS

IMS CAN READ SEQUENTIALLY FROM GSAM FILES (GN) AND INSERT INTO GSAM FILES
(ISRT)
IMS Database Manager 2/6/2009 3:00 PM 106

ITS A POINT IN THE EXECUTIN OF THE PROGRAM WHEN THE CHANGES MADE TO
DATABASES ARE MADE PERMANENT

ONCE CHECKPOINT IS ISSUED,CHANGES ARE NOT REVERSIBLE

TWO TYPES OF CHECKPOINTS
BASIC CHECKPOINT
SYMBOLIC CHECKPOINT




Advanced Programming
CHECKPOINT
IMS Database Manager 2/6/2009 3:00 PM 107
Advanced Programming
CHECKPOINT
BASIC CHECKPOINT
CALL 'CBLTDLI' USING CHKP
I-O-PCB
CHECK-POINT-RESTART-IO-AREA

CHECK-POINT-RESTART-IO-AREA CONTAINS THE CHECKPOINT ID FOLLOWED BY SOME DATA
IMS Database Manager 2/6/2009 3:00 PM 108
Advanced Programming
CHECKPOINT
SYMBOLIC CHECKPOINT
CALL 'CBLTDLI' USING CHKP
I-O-PCB
CHECK-POINT-RESTART-IO-LENGTH
CHECK-POINT-RESTART-IO-AREA
CHECK-POINT-RESTART-SAVE-LENGTH
CHECK-POINT-RESTART-SAVE-AREA.
CHECK-POINT-RESTART-IO-AREA CONTAINS THE CHECKPOINT ID FOLLOWED BY SOME DATA
UPTO SEVEN SAVE AREAS ALONG WITH THEIR LENGTHS CAN BE SPECIFIED
IMS Database Manager 2/6/2009 3:00 PM 109
Advanced Programming
RESTART
CALL 'CBLTDLI' USING XRST
I-O-PCB
CHECK-POINT-RESTART-IO-LENGTH
CHECK-POINT-RESTART-IO-AREA
CHECK-POINT-RESTART-SAVE-LENGTH
CHECK-POINT-RESTART-SAVE-AREA.
CHECK-POINT-RESTART-IO-AREA CONTAINS THE CHECKPOINT ID FOLLOWED BY SOME DATA
UPTO SEVEN SAVE AREAS ALONG WITH THEIR LENGTHS CAN BE SPECIFIED

FUNCTION XRST IS USED TO RESTART THE PROGRAM

IMS AUTOMATICALLY REPOSITIONS GSAM FILES TO LAST CHECKPOINT STATUS

ALL OTHER DATABASES SHOULD REPOSITIONED BY THE APPLICATION PROGRAM




IMS Database Manager 2/6/2009 3:00 PM 110
Advanced Programming
CHECKPOINT RESTART PROCEDURE
Issue XRST call
Check if CHKP-
XRST-AREA
is spaces
Process Records.
Increment count of
Records processed
Is record count
Greater than
checkpoint
Frequency?
Issue CHKP call.
Reset record count
to zero
Reposition the Non-
GSAM DBs using
Fields in SAVE-AREA
Move counters &
Current Key fields to
SAVE-AREA
YES NORMAL RUN
RESTART RUN
NO
NO
YES
IMS Database Manager 2/6/2009 3:00 PM 111
Advanced Programming
SECONDARY INDEXING

USED TO ACCESS DATA USING A PATH OTHER THAN THE HIERARCHIAL PATH OF THE
DATABASE

SECONDARY INDEXES ARE STORED IN A SEPARATE DATABASE

SECONDARY INDEX DATABASE CONTAINS A SET OF POINTERS MAPPED TO A TARGET
SEGMENT AND A SOURCE SEGMENT




IMS Database Manager 2/6/2009 3:00 PM 112
Advanced Programming
SECONDARY INDEXING
IMS Database Manager 2/6/2009 3:00 PM 113
Advanced Programming
SECONDARY INDEXING
IMS Database Manager 2/6/2009 3:00 PM 114
Advanced Programming
SECONDARY INDEXING
PRINT NOGEN
DBD NAME=COURSEDB,ACCESS=HIDAM
DATASET DD1=COURSEDD,DEVICE=3380
SEGM NAME=COURCE,PARENT=0,BYTES=100
FIELD NAME=(COURSECD,SEQ,U),BYTES=5,START=9,TYPE=C
FIELD NAME=COURSENM,BYTES=20,START=14,TYPE=C
LCHILD NAME=(STUDIXSG,STUDIXDB),PTR=INDX
XDFLD NAME=STUDINDX,SEGMENT=STUDENT,
SRCH=(STUDNTNM)
SEGM NAME=CLASS,PARENT=COURSE,BYTES=5
FIELD NAME=(CLASSCODE,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM NAME=INSTR,PARENT=CLASS,BYTES=100
SEGM NAME=STUDENT,PARENT=CLASS,BYTES=100
FIELD NAME=(STUDNTNO,SEQ,U),BYTES=10,START=1,TYPE=C
FIELD NAME=STUDNTNM,BYTES=20,START=11,TYPE=C
DBDGEN
FINISH
END
COURSE DATABASE
PRINT NOGEN
DBD NAME=STUDIXDB,ACCESS=INDEX
DATASET DD1=INDXDBDD,DEVICE=3380
SEGM NAME=STUDIXSG,PARENT=0,BYTES=25
LCHILD NAME=(COURSE,COURSEDB),INDEX=STUDINDX
FIELD NAME=INDXSTNM,BYTES=20,START=1,TYPE=C
FIELD NAME=INDXCSCD,BYTES=5,START=21,TYPE=C
DBDGEN
FINISH
END
INDEX DATABASE
IMS Database Manager 2/6/2009 3:00 PM 115
Advanced Programming
LOGICAL DATABASE
LOGICAL DATABSE PROVIDES A LOGICAL VIEW OF DATA
IT CREATES A VIEW OF DATA FROM MORE THAN ONE SEGMENTS
OF SAME DATABASE OR DIFFERENT
IT CAN BE USED TO CREATE A PATH BETWEEN SEGMENTS WHICH
ARE OTHERWISE UNRELATED
IMS Database Manager 2/6/2009 3:00 PM 116
Advanced Programming
LOGICAL DATABASE
PRINT NOGEN
DBD NAME=CRSLOGL,ACCESS=LOGICAL
DATASET DD1=CRSELGDD,DEVICE=3380
SEGM NAME=COURSELG,PARENT=0,SOURCE=(COURCE,COURSEDB)
SEGM NAME=PERSONS,PARENT=COURSELG,
SOURCE=((INSTR,COURSEDB),(STUDENT,COURSEDB))
DBDGEN
FINISH
END
LOGICAL DATABASE
IMS Database Manager 2/6/2009 3:00 PM 117

USE QUALIFIED SSAS WHEREVER POSSIBLE

ASSUMED SSAS SHOULD BE AVOIDED EVEN THOUGH DL/I CONSTRUCTS MISSING SSAS

MINIMIZE THE NUMBER OF DL/I CALLS BY USING COMMAND CODES

USE SEARCH FIELDS AND BOOLEAN OPERATIONS IN SSAs INSTEAD OF USING IF
STATEMENTS IN COBOL PROGRAM

TRY USING SECONDARY INDICES
Advanced Programming
PROGRAMING TIPS
IMS Database Manager 2/6/2009 3:00 PM 118
COMMON STATUS CODES
STATUS CODE DESCRIPTION
SPACES SUCCESSFUL CALL
CALL TYPES
ALL CALLS
AC

CALL HAS SSA WITH A HIERARCHICAL ERROR

ALL GET CALLS
ISRT
AI


ERROR WHILE OPENING DATABASE. COMMON CAUSE IS
LOADING A DATABASE WHICH IS NOT EMPTY OR DO
OTHER THAN LOAD PROCESSING ON EMPTY DATABASE
ALL CALLS


AJ CALL SPECIFIES AN INVALID SSA ALL CALLS
AK

FIELD NAMED IN A QUALIFIED SSA IS NOT CORRECT

ALL GET CALLS
ISRT
DA

SEQUENCE FIELD IS CHANGED

REPL

DJ

CALL IS NOT PRECEDED BY A SUCCESSFUL GET HOLD
CALL
DLET
REPL
GA

A HIGHER LEVEL SEGMENT IS RETRIEVED IN SEQUENTIAL
PROCESSING
GN, GNP

Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 119
COMMON STATUS CODES
STATUS CODE DESCRIPTION
GE

SPECIFIED SEGMENT NOT FOUND

CALL TYPES
ALL GET CALLS
ISRT
GK

A SEGMENT OF DIFFERENT TYPE, BUT AT THE SAME
LEVEL IS RETRIEVED DURING SEQUENTIAL PROCESSING
GN, GNP

GP PROPER PARENTAGE IS NOT IN EFFECT GNP
II DUPLICATE INSERT ISRT
GB

END OF DATA BASE WAS REACHED DURING SEQUENTIAL
RETRIEVAL
GN

VI INVALID LENGTH ERROR REPL, ISRT
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 120
U0047


DESCRIPTION
ONE OF THE DBPCBS IN THE PSB FAILED TO OBTAIN THE DATABASE AUTHORIZATION
THROUGH DBRC. USUALLY OCCURS WHEN DATABASE IS UP IN ONLINE OR DATABASE IS
USED IN UPDATE MODE BY ANOTHER PROGRAM.

SOLUTION
BRING DOWN THE DATABASE USING /DBR DB DATABASE NAME
WAIT TILL CONTENDING JOB COMPLETES AND RESTART THE JOB

Advanced Programming
COMMON IMS ABENDS
IMS Database Manager 2/6/2009 3:00 PM 121
U0456


DESCRIPTION
A DL/I BATCH REGION, BMP PROGRAM COULD NOT BE INITIATED BECAUSE THE PSB HAS
BEEN STOPPED OR LOCKED BY A COMMAND OR A PRIOR PROGRAM FAILURE

SOLUTION
ANALYZE WHY THE PSB IS LOCKED OR STOPPED. RESTART THE JOB AFTER THE PSB HAS
BEEN UNLOCKED

TO UNLOCK PSB FOR A BMP PROGRAM USE /START PROGRAM psbname COMMAND

Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 122
U0476


DESCRIPTION
A DL/I CALL DOES NOT INCLUDE A VALID PCB ADDRESS

PROBABLE CAUSES
PSB LANGUAGE TYPE SPECIFIED IS NOT SAME AS THAT OF APPLICATION PROGRAM
COBOL MAIN PROGRAM ENTERED AT PROCEDURE DIVISION INSTEAD OF DLITCBL
BECAUSE ENTRY DLITCBL NOT INCLUDED IN LKED

Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 123
U0844


DESCRIPTION
NO SPACE AVAILABLE IN THE DATABASE

SOLUTION
THE SIZE OF THE DATABASE MUST BE INCREASED BY ALLOCATIONG A LARGER PRIMARY
OR SECONDARY STORAGE.

Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 124
U3303


DESCRIPTION
APPLICATION PROGRAM TRIED TO USE A DATABASE THAT WAS NOT AVAILABLE FOR
ACCESS AND/OR UPDATE.

SOLUTION
CHECK THE STATUS OF DATABASE GIVEN IN DFS3303I MESSAGE USING
/DISPLAY DB database name
IF DATABASE IS DOWN START THE DATABASE USING THE COMMAND
/START DB database name
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 125
/DIS A
IMS COMMANDS
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 126
/DIS Q
Advanced Programming
IMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 127
/DIS TRAN transaction name
Advanced Programming
IMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 128
/DIS STATUS TRAN
Advanced Programming
IMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 129
/DIS PGM psb name
Advanced Programming
IMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 130
/DIS DB database name
Advanced Programming
IMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 131
/START
/START PGM
/START TRAN
/START DB
/START REGID
/STOP
/STOP PGM
/STOP TRAN
/STOP DB
/STOP REGID
Advanced Programming
IMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 132

Das könnte Ihnen auch gefallen