You are on page 1of 127

IMS - DB

1
SESSION 1 IMS GENERAL CONCEPTS
SESSION 2 DL/I CONTROL BLOCKS
SESSION 3 SEGMENT SEARCH ARGUMENTS (SSAs)
SESSION 4 COBOL BASICS FOR IMS
SESSION 5 DL/I CALLS
SESSION 6 COMMAND CODES
SESSION 7 DL/I CALLS EXERCISE
SESSION 8 DATABASE ACCESS METHODS
SESSION 9 MULTIPLE PROCESSING
SESSION 10 SECONDARY INDEXING
SESSION 11 LOGICAL RELATIONSHIP
SESSION 12 DB RECOVERY/RESTART
SESSION 13 EFFICIENT PROGRAMMING TIPS
SESSION 14 COMMON IMS ABENDS
2
SESSION 1

IMS GENERAL CONCEPTS

3
IMS GENERAL CONCEPTS

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

4
IMS GENERAL CONCEPTS Continued ...

HIERARCHICAL STRUCTURE

ROOT SEGMENT (PARENT)

FOLLOWS INVERTED TREE STRUCTURE


A2 -- Level 1
A1 EACH BOX IN THE HIERARCHY REPRESENTS
A SEGMENT

SEGMENT OCCURRNCES
ROOT SEGMENT WILL BE ON TOP

EACH SEGMENT (EXCEPT ROOT SEGMENT)


B3
IS DIRECTLY DEPENDENT ON ONLY ONE

B1
B2
C1 D1 SEGMENT
-- Level 2

DEPENDENT SEGMENTS
TWIN SEGMENTS

5
IMS GENERAL CONCEPTS Continued ...

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

6
IMS GENERAL CONCEPTS Continued ...

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

7
IMS GENERAL CONCEPTS Continued ...

TYPES OF SEGMENTS

ROOT A SEGMENT WITHOUT PARENT


A SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS
PARENT
DIRECTLY UNDER IT
A SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER
CHILD
SEGMENT

ALL SEGMENTS UNDER A PARTICULAR SEGMENT OF THE


DEPENDENT
DATABASE
ALL OCCURRENCES (2 OR MORE) OF A SEGMENT TYPE
TWIN
UNDER A PARENT
OCCURRENCES OF DIFFERENT SEGMENT TYPES UNDER
SIBLINGS A PARENT

8
IMS GENERAL CONCEPTS Continued ...

EXERCISE - 1
1

2 3 4

5 6 7 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?

9
IMS GENERAL CONCEPTS Continued ...

DATABASE RECORD

ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT


SEGMENTS

10
IMS GENERAL CONCEPTS Continued ...

EXERCISE-2

HOW MANY DATABASE RECORDS?

11
IMS GENERAL CONCEPTS Continued ...

IMS DATABASE LIMITATIONS

IMS SUPPORTS
15 LEVELS
255 SEGMENTS
1000 FIELDS

NO LIMITATION ON NUMBER OF SEGMENT OCCURRENCES.

12
IMS GENERAL CONCEPTS Continued ...

IMS ENVIRONMENT

DL/I FORMS BRIDGE BETWEEN App Prog


APPLICATION PROGRAM AND IMS
DATABASE

DB PCB I/O PCB


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

DL/I ALLOWS SEQUENTIAL OR


RANDOM PROCESSING OF DATABASE
Database Terminal

13
IMS GENERAL CONCEPTS Continued ...

IMS ENVIRONMENT

MODES OF PROCESSING
BATCH DL/I MODE
MPP MODE
BMP MODE

ONLINE BATCH

MPP BMP DL/I

14
IMS GENERAL CONCEPTS Continued ...

IMS ENVIRONMENT

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

15
IMS GENERAL CONCEPTS Continued ...

IMS ENVIRONMENT
BMP (BATCH MESSAGE PROCESSING)

TWO TYPES

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

16
SESSION 2

DL/I CONTROL BLOCKS

17
DL/I CONTROL BLOCKS

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

18
DL/I CONTROL BLOCKS Continued ...

DATA BASE DESCRIPTION (DBD)

STATEMENTS IN DBD MACRO

STATEMENT DESCRIPTION
DBD SPECIFIES DATABASE NAME, ACCESS METHOD
DATASET SPECIFIES DD NAME TO BE USED IN JCL, DISK TYPE
SEGM SPECIFIES SEGMENT NAME,SEGMENT LENGTH, PARENT
FIELD SPECIFIES FIELD NAME, LENGTH, STARTING POSITION
IDENTIFIES A FIELD AS KEY OR SEARCH FIELD

19
DL/I CONTROL BLOCKS Continued ...

SAMPLE DBDGEN

PRINT NOGEN
DBD NAME=VENDOR,ACCESS=HDAM
DATASET DD1=VEND,DEVICE=3380
SEGM NAME=VENSEG,PARENT=0,BYTES=10
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

20
DL/I CONTROL BLOCKS Continued ...

DATATYPES USED IN DBDGEN

TYPE DESCRIPTION COBOL PICTURE


C Character (Default) X
P Packed Decimal COMP-3
Z Zoned Decimal S9
H Half Word Binary 9(4) COMP
F Full Word Binary 9(8) COMP

21
DL/I CONTROL BLOCKS Continued ...

CAN WE DEFINE OVERLAPPING FIELDS?

22
DL/I CONTROL BLOCKS Continued ...

PROGRAM SPECIFICATION BLOCK (PSB)

MADE UP OF ONE OR MORE PROGRAM COMMUNICATION BLOCKS (PCBs)

DB PCB - DEFINES PROGRAM’S 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

23
DL/I CONTROL BLOCKS Continued ...

PCB GIVES LOGICAL VIEW OF A DATABASE

PORTION OF DATABASE THAT THE PROGRAM PROCESSES IS CALLED


APPLICATION DATA STRUCTURE
DATABASE PCB

A A

B C C

D E E

24
DL/I CONTROL BLOCKS Continued ...

SAMPLE PSBGEN

PRINT NOGEN
PCB TYPE=DB,DBDNAME=VENDOR,KEYLEN=15,PROCOPT=LS
SENSEG NAME=VENSEG
SENSEG NAME=ITEMSEG,PARENT=VENSEG
PSBGEN
END

• KEYLEN IS THE LENGTH OF CONCATENATED KEY

25
DL/I CONTROL BLOCKS Continued ...

PROCOPTS IN PSB DEFINES SECURITY LEVEL FOR THE PROGRAM

PROCOPT DESCRIPTION
G Get or Read
I Insert
R Replace
D Delete
A All Options (G, I, R, D)
L Initial Load
LS Sequential Initial Load
K Access only Key of segment
O Used with G to Indicate that Hold is not allowed
P Path Calls

26
DL/I CONTROL BLOCKS Continued ...

APPLICATION PROGRAM CAN HAVE MULTIPLE VIEWS OF A DATABASE BY


USING SEPARATE PCBS FOR A SINGLE DATABASE

PSB
PCB1 PCB2

PCB3 PCB4

DBD1 DBD2 DBD3

27
DL/I CONTROL BLOCKS Continued ...

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

28
DL/I CONTROL BLOCKS Continued ...

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

29
SESSION 3

SEGMENT SEARCH ARGUMENT

30
SEGMENT SEARCH ARGUMENT

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

31
SEGMENT SEARCH ARGUMENT Continued ...

WHAT IS THE SIGNIFICANCE OF MAX 15 SSA?

32
SEGMENT SEARCH ARGUMENT Continued ...

TYPES OF SSAS

UNQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT TYPE

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

33
SEGMENT SEARCH ARGUMENT Continued ...

UNQUALIFIED SSA
WORKING-STORAGE-SECTION.
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 9th position ‘-‘ in position 10 and a blank in position 11

H I S T O R Y

H I S T O R Y * -

34
SEGMENT SEARCH ARGUMENT Continued ...

QUALIFIED SSA

WORKING-STORAGE-SECTION.
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 FUNC-CODE, PCB-MASK-1, IO-AREA, SSA-EMPLOYEE.

35
SEGMENT SEARCH ARGUMENT Continued ...

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’, ‘>=‘, ‘=>’

36
SEGMENT SEARCH ARGUMENT Continued ...

COMMAND CODES

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”

37
SESSION 4

COBOL BASICS FOR IMS

38
COBOL BASICS FOR IMS

DATA DIVISION
IN A COBOL-IMS PROGRAM. THE FIRST SECTION TO CONTAIN ANY IMS RELATED
COMPONENTS IS THE WORKING STORAGE SECTION

IDENTIFICATION DIVISION FUNCTION CODES

ENVIRONMENT DIVISION I/O AREA

DATA DIVISION SEGMENT SEARCH ARGUMENTS


FILE SECTION
WORKING STORAGE SECTION PCB MASKS
LINKAGE SECTION

PROCEDURE DIVISION

39
COBOL BASICS FOR IMS Continued ...

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 - EXTENDED RESTART
CHKP - CHECKPOINT

40
COBOL BASICS FOR IMS Continued ...

INPUT/OUTPUT AREA

IS A STANDARD RECORD DESCRIPTION IN THE WORKING STORAGE SECTION


WHICH HOLDS DATABASE SEGMENTS FOR MANIPULATION

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

41
COBOL BASICS FOR IMS Continued ...

THE PCB MASK

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 NUM-SENS-SEGS PIC S9(5) COMP.
03 KEY-FEEDBACK PIC X(??). <= length depends on segment key

42
COBOL BASICS FOR IMS Continued ...

THE PCB MASK

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 PSBGEN MACRO

43
COBOL BASICS FOR IMS Continued ...

PROCEDURE DIVISION
PROCEDURE DIVISION.
DIVISION
ENTRY ‘DLITCBL’ USING DB-PCB-1, DB-PCB-2. <= Sequence should match that of
:::::::::::: PSB Macro
::::::::::::
CALL ‘CBLTDLI’ USING WS-PARM-COUNT, <= Optional
WS-FUNCTION-CODE,
DB-PCB-MASK,
IO-AREA,
SSA-1, SSA-2, SSA-3, ….
::::::::::
::::::::::
GOBACK.
44
COBOL BASICS FOR IMS Continued ...

RUN JCL EXECUTES THE BATCH PROCESSOR


DFSRRC00 AND PASSES THE APPLICATION
RUN JCL PROGRAM NAME AND PSBNAME AS
PARAMETERS
ENTRY DLITCBL PASSES THE PCB ADDRESS
PROGRAM NAME TO THE PROGRAM
PSB NAME

CBLTDLI ACCEPTS PARAMETERS LIKE


FUNCTION CODE, I/O AREA AND SSA TO DO
DL/I IMS THE NECESSARY DATABASE OPERATIONS
DATABASE AND RETURNS DATA AND STATUS CODES
DESCRIBING THE SUCCESS OF THE CALL
DLITCBL

CBLTDLI

GOBACK 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
APPLICATION
AS IT WILL NOT FREE RESOURCES
PROGRAM

45
SESSION 5

DL/I CALLS

46
DL/I CALLS

DL/I RETRIEVAL CALLS

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

47
DL/I CALLS Continued ...

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 AKEY

EKEY
11
7
BKEY
2 8

6
4 10
3 5 9
CKEY DKEY FKEY
EXERCISE: WRITE A GU TO RETRIEVE FKEY=10
48
DL/I CALLS Continued ...

WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA?

49
DL/I CALLS Continued ...

GET NEXT
RETREIVAL SEQUENCE
TOP TO BOTTOM
AKEY
FRONT TO BACK 1

LEFT TO RIGHT

7 11 EKEY
2 BKEY 8
GA

6
4 10
3 5 9
GK
DKEY FKEY
CKEY

50
DL/I CALLS Continued ...

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 AKEY

7 11 EKEY
2 BKEY 8

6
4 10
3 5 9 FKEY
DKEY
CKEY
EXERCISE: WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER EKEY=8 IS RETRIEVED
51
DL/I CALLS Continued ...

GET NEXT WITHIN PARENT


CALL ‘CBLTDLI’ USING ‘GN ’, 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
AKEY
1

7 11 EKEY
2 BKEY 8

6
4 10
3 5 9
DKEY
CKEY FKEY

52
DL/I CALLS Continued ...

WHAT WILL BE THE OUTPUT IF GNP IS DONE 4 MORE TIMES IN


PREVIOUS EXAMPLE?

53
DL/I CALLS Continued ...

PATH CALLS EXERCISE

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?
1

7 11 EKEY
2 BKEY 8

6
4 10
3 5 9
DKEY
CKEY FKEY

54
DL/I CALLS Continued ...

GET HOLD CALLS (GHU/GHN/GHNP)

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

55
DL/I CALLS Continued ...

DELETE/REPLACE CALLS

MUST HAVE BEEN OBTAINED WITH A GET HOLD CALL (GHU, GHN, GHNP)

NO INTERVENING CALLS BETWEEN GET HOLD CALL AND REPLACE/DELETE


CALLS

MULTIPLE REPLACE ALLOWED AFTER GET HOLD

56
DL/I CALLS Continued ...

DELETE CALL
CALL ‘CBLTDLI’ USING ‘GHU ‘, LS-PCB-MASK, WS-SEGMENT-IO-AREA
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
CALL ‘CBLTDLI’ USING ‘DLET’, LS-PCB-MASK
1

7 11 EKEY
2 BKEY 8

6
4 10
3 5 9
DKEY
CKEY
WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SEGMENTA*D(AKEY=1)?

57
DL/I CALLS Continued ...

REPLACE (REPL)
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
STATUS CODES
DA - TRYING TO CHANGE KEY
DJ - NO PRECEDING GET HOLD CALL
RX - REPLACE RULE VIOLATION

58
DL/I CALLS Continued ...

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

11 EKEY
7
2 BKEY 8

6
4 10
3 5 9
DKEY
CKEY FKEY
59
DL/I CALLS Continued ...

INSERT (ISRT)

TWO MODES OF INSERT


LOAD MODE - FOR INITIAL LOADING OF DATABASE
UPDATE MODE - ADD TO EXISTING DATABASE
LOAD MODE:
MODE
FOR LOAD MODE PROCOPT = L or LS MUST BE SPECIFIED IN PSB
PROCOPT=L LOADS DATABASE BUT NOT NECESSARILY IN
SEQUENTIAL ORDER

60
DL/I CALLS Continued ...

INSERT (ISRT)

UPDATE MODE:
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

61
DL/I CALLS Continued ...

MOVE DATA FOR SEGMENTE INTO WS-SEGMENT-IO-AREA WITH EKEY=99


CALL ‘CBLTDLI’ USING ‘ISRT’, LS-PCB-MASK, WS-SEGMENT-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTE
AFTER THE CALL SEGMENTE WITH EKEY=99 IS INSERTED

99
11 EKEY
7
2 BKEY 8

6
4 10
3 5 9
DKEY
CKEY FKEY
62
DL/I CALLS Continued ...

SOME COMMON STATUS CODES

STATUS CODE DESCRIPTION CALL TYPES

SPACES SUCCESSFUL CALL ALL CALLS


AC CALL HAS SSA WITH A HIERARCHICAL ERROR ALL GET CALLS
ISRT
AI ERROR WHILE OPENING DATABASE. COMMON CAUSE IS ALL CALLS
LOADING A DATABASE WHICH IS NOT EMPTY OR DO
OTHER THAN LOAD PROCESSING ON EMPTY DATABASE
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 DLET


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

63
DL/I CALLS Continued ...

SOME COMMON STATUS CODES

STATUS CODE DESCRIPTION CALL TYPES

GB END OF DATA BASE WAS REACHED DURING SEQUENTIAL GN


RETRIEVAL
GE SPECIFIED SEGMENT NOT FOUND ALL GET CALLS
ISRT
GK A SEGMENT OF DIFFERENT TYPE, BUT AT THE SAME GN, GNP
LEVEL IS RETRIEVED DURING SEQUENTIAL PROCESSING
GP PROPER PARENTAGE IS NOT IN EFFECT GNP
II DUPLICATE INSERT ISRT

64
SESSION 6

COMMAND CODES

65
COMMAND CODES

ONE OR MORE COMMAND CODES CAN BE USED IN SSA

EACH COMMAND CODE IS REPRESENTED BY A SINGLE CHARACTER


FOLLOWING AN ASTERISK AFTER SEGMENT NAME

H I S T O R Y * -

DL/I CONSIDERS ALL CHARACTERS FOLLOWING ‘*’ TO BE COMMAND


CODES TILL IT ENCOUNTERS A BLANK OR ‘(‘

RESULTS IN MINIMIZING THE NUMBER OF CALLS AND HENCE IMPROVE


PROGRAM EFFICIENCY

66
COMMAND CODES Continued ...

SOME COMMAND CODES

COMMAND CODE DESCRIPTION


D RETRIEVE A PATH
F FIRST OCCURRENCE OF SEGMENT TYPE
L LAST OCCURRENCE OF SEGMENT TYPE
U MAINTAIN CURRENT POSITION AT THIS LEVEL
V MAINTAIN CURRENT POSITION AT THIS AND HIGHER LEVELS
N DO NOT REPLACE THIS SEGMENT
C USE A CONCATENATED KEY
P ESTABLISH PARENTAGE AT THIS LEVEL
- NULL/IGNORE

67
COMMAND CODES Continued ...

COMMAND CODE “D”

REQUESTS DL/I TO USE PATH CALLS

ALLOWS ENTIRE PATH IN SEGMENT HIERARCHY TO BE RETRIEVED IN ONE


SINGLE CALL

FOR PROGRAMS USING PATH CALLS PROCOPT IN PSB SHOULD HAVE “P” AS
ONE OF THE VALUES

DL/I DOES NOT RETRIEVE SEGMENTS IF THE CORRESPONDING SSA DOES


NOT HAVE PATH COMMAND CODE “D”

68
COMMAND CODES Continued ...

COMMAND CODE “D”

SEGMENT IN THE LAST SSA WILL ALWAYS BE RETRIEVED EVEN IF SSA DOES
NOT HAVE COMMAND CODE “D”

FOR ISRT CALLS COMMAND CODE “D” DESIGNATES THE FIRST SEGMENT TO
BE INSERTED

FOR ISRT CALLS SSAS FOR LOWER LEVEL SEGMENTS NEED NOT HAVE “D”
COMMAND CODE, “D” COMMAND CODE IS PROPAGATED TO ALL SPECIFIED
SEGMENTS AUTOMATICALLY

I/O AREA USED SHOULD BE BIG ENOUGH TO ACCOMMODATE ALL SEGMENTS


IN PATH

69
COMMAND CODES Continued ...

PATH CALLS EXAMPLE

CALL ‘CBLTDLI’ USING ‘GN ‘, LS-PCB-MASK, WS-SEG-IO-AREA,


SEGMENTA*D(AKEY=1)
SEGMENTB*D(BKEY=2)
SEGMENTD*-(DKEY=5)
AFTER THE CALL SEGMENTS #1, #2 & #5 WILL BE RETURNED IN I/O AREA
AKEY
1

7 11 EKEY
2 BKEY 8

6
4 10
3 5 9
DKEY
CKEY FKEY

70
COMMAND CODES Continued ...

COMMAND CODE “F”

CALL PROCESSES FIRST OCCURRENCE OF THE SEGMENT TYPE

•EXAMPLE:

SEGMENT 2 CAN BE RETRIEVED AFTER SEGMENT 4 BY USING

CALL ‘CBLTDLI’ USING ‘GNP ‘ LS-PCB-MASK, WS-SEG-IO-AREA,

SEGMENTB*F

1 SEGMENTA

2 3
SEGMENTC
SEGMENTB

71
COMMAND CODES Continued ...

COMMAND CODE “L”

CALL PROCESSES LAST OCCURRENCE OF THE SEGMENT TYPE

•EXAMPLE:

SEGMENT 4 CAN BE RETRIEVED AFTER SEGMENT 2 BY USING

CALL ‘CBLTDLI’ USING ‘GNP ‘ LS-PCB-MASK, WS-SEG-IO-AREA,

SEGMENTC*L

1 SEGMENTA

2 3
SEGMENTC
SEGMENTB

72
COMMAND CODES Continued ...

COMMAND CODE “N”

USED IN REPL CALLS FOLLOWING PATH CALLS

IF ANY SEGMENT RETRIEVED DURING PATH CALL NEED NOT BE REPLACED


COMMAND CODE “N” IS USED IN SSA OF THAT SEGMENT

73
COMMAND CODES Continued ...

COMMAND CODE “P”

IS USED TO SET PARENTAGE TO A SPECIFIC SEGMENT IN THE HIERARCHY


USED IN SSAS

EXAMPLE:
CALL ‘CBLTDLI’ USING ‘GU ‘ LS-PCB-MASK, WS-IO-AREA
SEGMENTA*P
SEGMENTC
WILL RETRIEVE SEGMENTC TO I/O AREA BUT PARENTAGE WILL BE SET TO
SEGMENTA

1 SEGMENTA

2 3
SEGMENTC
SEGMENTB
74
SESSION 7

DL/I CALL EXERCISE

75
DL/I CALL EXERCISE Continued ...

COURSE
COURSE# TITLE DESCRIPN

PREREQ OFFERING
COURSE# TITLE DATE LOCATION FORMAT

TEACHER STUDENT
EMPNUM NAME EMPNUM NAME GRADE

76
DL/I CALL EXERCISE Continued ...

GIVE SYNTAX OF DL/I CALLS FOR THE FOLLOWING SCENARIOS


1. GET THE FIRST OFFERING OCCURRENCE WHERE THE LOCATION IS
“CHENNAI”

2. GET ALL STUDENT OCCURENCES FOR THE OFFERING FOUND IN 1

3. GET ONLY STUDENT OCCURENCES WITH GRADE OF “A”

4. SEQUENTIAL READ OF ALL SEGMENTS IN THE DATABASE

77
DL/I CALL EXERCISE Continued ...

5. GET ALL STUDENTS WITH GRADE OF “A” IN COURSE “IMS”

6. ADD A STUDENT OCCURRENCE FOR THE COURSE “IMS” OFFERED ON DATE


“3/26/02”

7. DELETE THE OFFERING OF COURSE “XYZ” ON 26 March, 2002

8. CHANGE THE LOCATION OF COURSE “IMS” OFFERED ON “3/26/02” TO


“MUMBAI”

78
DL/I CALL EXERCISE Continued ...

9. GET THE FIRST OFFERING OCCURRENCE WHERE THE LOCATION IS


“CHENNAI”, TOGETHER WITH ITS PARENT COURSE OCCURRENCE

10. INSERT A NEW COURSE “ABC” TOGETHER WITH AN OFFERING AT CHENNAI


ON 26 March 2002, FOR WHICH TEACHER IS EMPLOYEE NUMBER 12345

11. GET THE TEACHER OF THE FIRST OFFERING ATTENDED BY STUDENT 222222

79
SESSION 8

DATABASE ACCESS METHODS

80
IMS DATABASE ACCESS METHODS

DL/I PROVIDES TWO BASIC DATABASE ORGANIZATIONS


HIERARCHICAL SEQUENTIAL (HS)
HIERARCHICAL DIRECT (HD)

Database Organization Access Methods


HS HSAM - Hierarchical Sequential Access Method
HISAM - Hierarchical Indexed Sequential Access Method
SHSAM - Simple HSAM
SHISAM - Simple HISAM
HD HDAM - Hierarchical Direct Access Method
HIDAM - Hierarchical Indexed Direct Access Method

DL/I PROVIDES GSAM(Generalized Sequential Access Method) TO


ACCESS NORMAL SEQUENTIAL DATASETS

81
IMS DATABASE ACCESS METHODS Continued ...

HSAM / SHSAM
SEGMENTS OF A DATABASE RECORD ARE STORED IN SEQUENTIAL
ORDER
VERY EFFICIENT FOR SEQUENTIAL PROCESSING
NEW SEGMENTS CAN NOT BE INSERTED. DATABASE HAS TO BE
UNLOADED AND LOADED AGAIN.
ONCE DATABASE IS LOADED ONLY GET OPERATIONS ARE VALID (GU,
GN , GNP, NOT “GET HOLD”)
ISRT CALL IS VALID ONLY WHILE LOADING NEW DATABASE
REPL AND DLET ARE NOT ALLOWED
SHSAM IS A SUBSET OF HSAM AND CONTAINS ONLY ROOT SEGMENTS
ONLY HSAM/SHSAM DATABASES CAN BE STORED ON A TAPE
SEGMENTS CAN NOT SPAN OVER RECORDS

82
IMS DATABASE ACCESS METHODS Continued ...

HSAM SEGMENT STORAGE IN DATABASE

Delete byte

‘00’ -’FF’ ‘00’ SEGMENT DATA

Segment
Identifier

HSAM DBDGEN

DBD NAME=EXHSAM,ACCESS=HSAM
DATASET DD1=EXHSAMI,DD2=EXHSAMO,DEVICE=3380,RECORD=(512,512)
SEGM FIELD=…………….

83
IMS DATABASE ACCESS METHODS Continued ...

HISAM / SHISAM
SIMILAR TO HSAM AND IN ADDITION INDEX IS ADDED FOR DIRECT
ACCESS TO ROOT SEGMENT
VERY EFFICIENT FOR SEQUENTIAL AND FAIRLY GOOD FOR RANDOM
PROCESSING
HISAM DATABASE REQUIRES TWO SEPARATE DATASETS
PRIMARY DATASET
OVERFLOW DATASET
OVERFLOW DATASET IS NOT REQUIRED FOR SHISAM
SEGMENTS CAN BE DELETED
PREFERABLE IF DATABASE HAS ROOT SEGMENTS ONLY

84
IMS DATABASE ACCESS METHODS Continued ...

HISAM SEGMENT STORAGE IN DATABASE

4 Byte RBA Delete byte

RBA ‘00’ -’FF’ ‘00’ SEGMENT DATA

Segment
Identifier

HISAM DBDGEN

DBD NAME=EXHISAM,ACCESS=(HISAM,VSAM)
DATASET DD1=HISAMPR,OVFLW=HISAMOV,DEVICE=3380,RECORD=(512,512)
SEGM FIELD=…………….

85
IMS DATABASE ACCESS METHODS Continued ...

HDAM
DIRECT ADDRESS POINTERS TO RELATED SEGMENTS ARE STORED
ALONG WITH SEGMENTS
VERY EFFICIENT FOR RANDOM PROCESSING BUT NOT FOR
SEQUENTIAL PROCESSING
ROOT SEGMENTS ARE STORED ACCORDING TO SOME RANDOMIZING
SCHEME

HDAM SEGMENT STORAGE IN DATABASE


Delete byte

‘00’ -’FF’ ‘00’ POINTERS SEGMENT DATA

Segment
Identifier

86
IMS DATABASE ACCESS METHODS Continued ...

HDAM DBDGEN

DBD NAME=EXHDAM,ACCESS=(HDAM,VSAM),RMNAME=(DFSHDC10,,10)
DATASET DD1=EXHDAM,DEVICE=3380
SEGM NAME=SEG1,BYTES=48,POINTER=TWIN
FIELD …………….
SEGM NAME=SEG2,PARENT=((SEG1,SNGL)),BYTES=32,POINTER=TWIN
…….

87
IMS DATABASE ACCESS METHODS Continued ...

HIDAM
SIMILAR TO HDAM AND IN ADDITION INDEX TO ROOT SEGMENTS WILL
BE STORED
EFFICIENT FOR BOTH SEQUENTIAL AND RANDOM PROCESSING
MOST COMMON TYPE OF DATABASE ORGANIZATION

HIDAM DBDGEN

DBD NAME=EXHIDAM,ACCESS=(HIDAM,VSAM),RMNAME=(DFSHDC10,,10)
DATASET DD1=EXHIDAM,DEVICE=3380
SEGM NAME=SEG1,BYTES=48,POINTER=TWIN
FIELD …………….
SEGM NAME=SEG2,PARENT=((SEG1,SNGL)),BYTES=32,POINTER=TWIN
…….

88
IMS DATABASE ACCESS METHODS Continued ...

GSAM
COMPATIBLE WITH MVS DATASETS
NO HIERARCHY
CAN HAVE FIXED OR VARIABLE LENGTH RECORDS
NO DELETE OR REPLACE
INSERT ONLY AT THE END OF DATASET
GETS RECORDS SEQUENTIALLY
USUALLY USED WHEN CHECK/POINT RESTART IS USED

89
SESSION 9

MULTIPLE PROCESSING

90
MULTIPLE PROCESSING

MULTIPLE PROCESSING MEANS A PROGRAM CAN HAVE MORE THAN ONE


POSITION IN A SINGLE DATABASE AT THE SAME TIME

ESTABLISHED BY
MULTIPLE PCBS
MULTIPLE POSITIONING

MULTIPLE PCBS CAN BE DEFINED AND USED FOR A SINGLE DATABASE TO


ESTABLISH MULTIPLE POSITIONING HAS THE DRAWBACK OF IMPOSING
OVERHEAD DUE TO THE EXTRA PCBS THUS CAUSING INEFFICIENCY

91
MULTIPLE PROCESSING Continued ...

MULTIPLE POSITIONING LETS A PROGRAM MAINTAIN MORE THAN ONE


POSITION WITHIN A DATABASE USING A SINGLE PCB. THE PCB HAS TO BE
CODED SUITABLY IN ORDER TO ACHIEVE THIS (POS=M)

MULTIPLE POSITIONING IS MORE EFFICIENT THAN USING MULTIPLE PCBS


WHEREAS MULTIPLE PCBS OFFER MORE FLEXIBILITY

92
MULTIPLE PROCESSING Continued ...

EXAMPLE
CALLS GN SEGMENTB, GN SEGMENTC, GN SEGMENTB, GN SEGMENTC

A1 A2

C13
B13
B12 C12

B11 C11
C22
B22
B21 C21

93
SESSION 10

SECONDARY INDEXING

94
SECONDARY INDEXING

ALLOWS YOU TO ACCESS DB IN A SEQUENCE OTHER THAN PRIMARY


SEQUENCE

ALLOWS YOU TO ACCESS A SEGMENT WITHOUT SUPPLYING ITS


CONCATENATED KEY

THE SECONDARY INDEX ITSELF IS A DATABASE WITH ITS OWN DBD


DEFINITION

SECONDARY INDEX DATABASE CONTAINS POINTER TO TARGET SEGMENT


AND KEY VALUE OF SOURCE SEGMENT

95
SECONDARY INDEXING

SECONDARY INDEX DATABASE IS MAINTAINED AUTOMATICALLY BY DL/I


SECONDARY DATA STRUCTURES

NEED TO USE PROCSEQ OPTION IN PCB STATEMENT OF PSBGEN MACRO


ELSE DATABASE IS ACCESSED AS PER NORMAL HIERARCHY

DATABASE TO BE INDEXED MUST BE IN HISAM, HDAM, OR HIDAM, NOT IN


HSAM

LIMITATIONS: 32 SECONDARY INDICES ON ONE SEGMENT TYPE

1000 SECONDARY INDICES FOR A DATABASE

96
SECONDARY INDEXING Continued ...

Indexed Database Secondary Index DB


Prefix | Data
Customer Index pointer
Pointer Invoice No
segment
Index
Target Segment
Ship-to

Index
Source Segment
Buyer Receivable

Payment Adjustment Line Item

97
SECONDARY INDEXING Continued ...

SECONDARY DATA STRUCTURE

Receivable

Ship-to Payment Adjustment Line Item

Customer Buyer

98
SECONDARY INDEXING Continued ...

Indexed Database Secondary Index DB


Prefix | Data
Customer Index pointer
Index Pointer Invoice No
segment
Target Segment

Ship-to
Index
Source Segment
Buyer Receivable

Payment Adjustment Line Item

99
SECONDARY INDEXING Continued ...

COURSE
COURSE# TITLE DESCRIPN

PREREQ OFFERING
COURSE# TITLE DATE LOCATION FORMAT

TEACHER STUDENT
EMPNUM NAME EMPNUM NAME GRADE

100
SECONDARY INDEXING Continued ...

INDEXING THE ROOT ON A FIELD NOT THE SEQUENCE FIELD

MAINDBD MACRO INDEX DBD MACRO

DBD NAME=EDUCPDBD DBD NAME=TXDBD,ACCESS=INDEX


SEGM NAME=COURSE,BYTES=256 SEGM NAME=TPTR,BYTES=33
FIELD NAME=(COURSE#,SEQ),BYTE3,START=1 FIELD NAME=(TITLE,SEQ),BYTES=33,START=1
FIELD NAME=TITLE,BYTES=33,START=4 LCHILD NAME=(COURSE,EDUCPDBD),INDEX=XTITLE
LCHILD NAME=(TPTR,TXDBD),POINTER=INDX
XDFLD NAME=XTITLE,SRCH=TITLE

PSB MACRO

PCB TYPE=DB,DBDNAME=EDUCPDBD,KEYLEN=15
PROCOPT=G,PROCSEQ=TXDBD
SENSEG NAME=COURSE
SENSEG NAME=OFFERING,PARENT=COURSE
SENSEG NAME=STUDENT,PARENT=OFFERING

SYNTAX: GU COURSE (XTITLE=‘DYNAMICS’)

101
SECONDARY INDEXING Continued ...

WHAT HAPPENS IF “PROCSEQ=TXDBD” IS NOT USED?

DL/I BY DEFAULT USES PRIMARY PROCESSING


SEQUENCE

102
SECONDARY INDEXING Continued ...

INDEXING THE ROOT ON A FIELD IN THE DEPENDENT

MAINDBD MACRO INDEX DBD MACRO

DBD NAME=EDUCPDBD DBD NAME=LXDBD,ACCESS=INDEX


SEGM NAME=COURSE,BYTES=256 SEGM NAME=LPTR,BYTES=..
FIELD NAME=(COURSE#,SEQ),BYTE3,START=1 FIELD NAME=(LOCATION,SEQ),BYTES=….
FIELD NAME=TITLE,BYTES=33,START=4 LCHILD NAME=(COURSE,EDUCPDBD),INDEX=XLOC
LCHILD NAME=(LPTR,LXDBD),POINTER=INDX
XDFLD NAME=XLOC,SRCH=LOCATION,SEGMENT=OFFERING

SYNTAX: GU COURSE (XLOC=‘CHENNAI’)

103
SESSION 11

LOGICAL RELATIONSHIPS

104
LOGICAL RELATIONSHIPS

RELATIONSHIP BETWEEN TWO SEGMENTS IN TWO PHYSICALLY SEPARATE


DATABASES
CAN ALSO CONNECT TWO SEGMENTS WITHIN THE SAME DATABASE
ALLOWS APPLICATION TO HAVE DIRECT ACCESS FROM A SEGMENT IN ONE
PHYSICAL DATABASE TO A LOWER LEVEL SEGMENT IN ANOTHER PHYSICAL
DATABASE
RESULTS IN A NEW HIERARCHY- ONE THAT DOES NOT EXIST IN PHYSICAL
STORAGE BUT CAN BE PROCESSED BY APPLICATION PROGRAMS AS THOUGH
IT EXISTS
THREE TYPES OF LOGICAL RELATIONSHIPS
UNIDIRECTIONAL LOGICAL RELATIONSHIP
BIDIRECTIONAL PHYSICALLY PAIRED LOGICAL RELATIONSHIP
BIDIRECTIONAL VIRTUALLY PAIRED LOGICAL RELATIONSHIP

105
LOGICAL RELATIONSHIPS Continued ...

Logical Parent ORDER Database


PART Database
of DETAIL
Physical Parent
PART ORDER
of DETAIL

Logical Relationship

STOCK DETAIL SHIPMENT

Logical Children Physical Children


of PART of ORDER

106
LOGICAL RELATIONSHIPS Continued ...

PART /ORDER ORDER/PART


Logical Database Logical Database

PART ORDER

STOCK DETAIL ORDER DETAIL PART SHIPMENT

SHIPMENT STOCK

107
SESSION 12

DB RECOVERY / RESTART

108
DATABASE RECOVERY

WHY?
TO RESTORE A DATABASE AFTER ITS PARTIAL DESTRUCTION

WHEN?
A DLI BATCH UPDATE JOB FAILS AFTER MAKING AT LEAST ONE DATABASE
UPDATE
A FAILURE HAS OCCURRED ON A PHYSICAL DASD DEVICE
A FAILURE HAS OCCURRED IN A DATABASE RECOVERY UTILITY
A FAILURE OF DYNAMIC BACKOUT OR BATCH BACKOUT UTILITY HAS
OCCURRED
AN IMS ONLINE SYSTEM FAILURE AND EMERGENCY RESTART HAS NOT BEEN
COMPLETED

109
DATABASE RECOVERY Continued ...

HOW?

ONLINE RECOVERY PROCESS


IMS DOES DYNAMIC BACKOUT USING THE LOG INFORMATION FOR DL/I
PROGRAMS
FOR BMP PROGRAMS UPDATES ARE AUTOMATICALLY BACKED OUT TO
THE LAST CHECKPOINT

BATCH RECOVERY PROCESS


FORWARD RECOVERY
BACKWARD RECOVERY / BATCH BACK OUT

110
DATABASE RECOVERY Continued ...

UTILITIES FOR RECOVERY

DFSUDMP0:
DFSUDMP0
DATABASE IMAGE COPY UTILITY FOR CREATION OF IMAGE COPIES OF
DATABASES

DFSUCUM0:
DFSUCUM0
DATABASE CHANGE ACCUMULATION UTILITY FOR ACCUMULATION OF
DATABASE CHANGES FROM DL/I LOG TAPES SINCE THE LAST COMPLETE
IMAGE COPY

DFSURDB0:
DFSURDB0
DATABASE RECOVERY UTILITY FOR RESTORATION OF THE DATABASE,
USING A PRIOR DATABASE IMAGE COPY AND THE ACCUMULATED
CHANGES FROM DL/I LOG TAPES

DFSBBO00:
DFSBBO00
DATABASE BACK OUT UTILITY FOR REMOVAL OF CHANGES MADE TO
DATABASES BY A SPECIFIC APPLICATION PROGRAM

111
DATABASE RECOVERY Continued ...

DATABASE RECOVERY CONTROL (DBRC)

DBRC INCLUDES THE IMS FUNCTIONS WHICH PROVIDE IMS SYSTEM AND
DATABASE INTEGRITY AND RESTART CAPABILITY.

DBRC RECORDS INFO IN 3 RECON VSAM DATASETS

RECON CONTAINS FOLLOWING INFORMATION


LOG DATA SET INFORMATION
DATABASE DATA SET INFORMATION
ALLOCATION OF A DATABASE
UPDATE OF A DATABASE
IMAGE COPY OF A DATABASE
ABEND OF A SUBSYSTEM
RECOVERY OF A DATABASE
REORGANIZATION OF A DATABASE

DBRC AUTHORIZES OR REFUSES TO AUTHORIZE THE DATABASES


DEPENDING ON THE CURRENT AUTHORIZATIONS AND THE ACCESS INTENT
OF THE SUBSYSTEM.
112
DATABASE RECOVERY Continued ...

FORWARD RECOVERY

RESTORE MOST RECENT IMAGE COPY DATASET

CHANGES MADE TO DATABASE SINCE THE LAST IMAGE COPY ARE APPLIED
ON THE RESTORED DATABASE BY USING
CHANGE ACCUMULATION DATASETS
LOG DATASETS

113
DATABASE RECOVERY Continued ...

BACKWARD RECOVERY

USES BATCH BACKOUT UTILITY TO DO A FULL BACKOUT OR BACKOUT TO


ANY PRIOR CHECKPOINT
PSB USED IS SAME AS PSB OF THE PROGRAM WHOSE EFFECTS HAVE TO
BE BACKED OUT

INPUTS
LOG DATASETS
DATABASES WHOSE UPDATES ARE TO BACKED OUT
CHECKPOINT ID
WARNING: DO NOT USE CHECKPOINT ID WHILE BACKING OUT BMP. IT
TAKES BY DEFAULT THE LAST CHECKPOINT ISSUED.

OUTPUTS
BACKED OUT DATABASES
LOG DATASETS

114
DATABASE RECOVERY Continued ...

HOW DO YOU BACK OUT A NORMALLY TERMINATED PROGRAM?

BY GIVING DBRC=C IN THE JCL SHOWN BELOW

//STEP1 EXEC PGM=DFSRRC00,


// REGION=5632K,
// PARM=(DLI,&MBR,&PSB,,
// &SPIE&TEST&EXCPVR&RST,&PRLD,
// &SRCH,&CKPTID,&MON,,&FMTO,,&SWAP,
// &DBRC,&IRLM,&IRLMNM,&BKO)
//*

115
DATABASE RECOVERY Continued ...

CHECKPOINT CALL (CHKP)


CHECKPOINT RESTART IS USED DURING BACKWARD RECOVERY
CHECKPOINT COMMITS PROGRAMS UPDATES TO THE DATABASE AND LOGS
THE UPDATES
TWO TYPES OF CHECKPOINTS
•BASIC CHECKPOINT
–STORES JUST CHECKPINT ID ( 8 BYTES STORED IN IO-AREA)
–SYNTAX: CALL ‘CBLTDLI’ USING WS-CHKP, IO-PCB, IO-AREA
•SYMBOLIC CHECKPOINT
–STORES CRITICAL DATA APART FROM CHECKPOINT ID
–MUST USE XRST FOR RESTARTING
–SYNTAX: CALL ‘CBLTDLI’ USING WS-CHKP,
IO-PCB, IO-AREA-LEN, IO-AREA,
IO-AREA-LEN1, IO-AREA1…
116
DATABASE RECOVERY Continued ...

RESTART CALL(XRST)
USED TO RESTART A PROGRAM AFTER ABNORMAL TERMINATION
RESTART FROM
SPECIFIC CHECKPOINT ID
TIME/DATESTAMP
LAST CHECKPOINT (‘LAST’) - BMPs ONLY
MUST BE THE FIRST CALL IN THE PROGRAM
SYNTAX: CALL ‘CBLTDLI’ USING WS-XRST,
IO-PCB, IO-AREA-LEN, IO-AREA,
IO-AREA-LEN1, IO-AREA1…

117
DATABASE RECOVERY Continued ...

FACTORS TO BE CONSIDERED FOR CHKP & XRST CALLS


ALL FILES (INCLUDING SYSIN, SYSOUT) USED BY PROGRAM SHOULD BE DL/I
(GSAM) DATABASES OTHERWISE THERE WILL BE DUPLICATE DATA OR LOSS
OF DATA
GSAM OUTPUT FILES SHOULD USE DISP=(NEW,KEEP,KEEP) FOR INITIAL RUN
AND DISP=(OLD,KEEP,KEEP) FOR RESTARTS

118
SESSION 13

EFFICIENT PROGRAMMING TIPS

119
PROGRAMMING TIPS

INSTEAD OF USING GET CALL PRECEDING A ISRT CALL USE ISRT WITH
APPROPRIATE SSA

USE QUALIFIED SSAS WHEREVER POSSIBLE

IMPLIED SSAS SHOULD BE AVOIDED EVENTHOUGH DL/I CONSTRUCTS


MISSING SSAS

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

USE SEARCH FIELDS IN DL/I CALLS INSTEAD OF USING IF STATEMENTS IN


COBOL PROGRAM

120
PROGRAMMING TIPS Continued ...

TRY USING SECONDARY INDICES

DESIGN YOUR PROGRAM TO RUN IN BOTH BMP AND BATCH MODE

USE CHECKPOINT/RESTART

THERE IS ONLY A SMALL PERFORMANCE DIFFERENCE BETWEEN THE GET


AND GET HOLD CALLS. SO USE GET HOLD CALLS WHENEVER THERE IS A
CHANCE ( > 5%) OF SEGMENT UPDATE/DELETE

IT IS GOOD PRACTICE TO PROGRAM FOR EASY ADJUSTMENT OF


CHECKPOINT FREQUENCY

121
SESSION 14

COMMON IMS ABENDS

122
COMMON IMS ABENDS

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

123
COMMON IMS ABENDS

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

124
COMMON IMS ABENDS

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
• WRONG PCB WITH FEWER PCBS THAN EXPECTED IS USED

125
COMMON IMS ABENDS

U0852

DESCRIPTION
THE SEGMENT CODE RETURNED IS NOT VALID FOR THE DATABASE

SOLUTION
ANALYZE THE DATABASE. IF THERE IS AN INVALID POINTER, RECOVER THE
DATABASE.

126
COMMON IMS ABENDS

U3303

DESCRIPTION
APPLICATION PROGRAM TRIED TO USE A DATABASE THAT WAS NOT
AVAILABLE FOR ACCESS AND/OR UPDATE. DFS3303I MESSAGE ACCOMPANIES
THIS ABEND

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

127

You might also like