Professional Documents
Culture Documents
page number 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 LOGICAL RELATIONSHIP
SESSION 9 DB RECOVERY/RESTART
SESSION 10 EFFICIENT PROGRAMMING TIPS
SESSION 11 COMMON IMS ABENDS
page number 2
SESSION 1
page number 3
IMS GENERAL CONCEPTS
page number 4
IMS GENERAL CONCEPTS
HIERARCHICAL STRUCTURE
SEGMENT OCCURRNCES
ROOT SEGMENT WILL BE ON TOP
B1
B2
C1 D1 SEGMENT
-- Level 2
DEPENDENT SEGMENTS
TWIN SEGMENTS
page number 5
IMS GENERAL CONCEPTS
page number 6
IMS GENERAL CONCEPTS
KEY FIELDS
SEARCH FIELDS
CHANGED
page number 7
IMS GENERAL CONCEPTS
TYPES OF SEGMENTS
page number 8
IMS GENERAL CONCEPTS
Continued ...
EXERCISE - 1
1
2 3 4
5 6 7 8 9
page number 9
IMS GENERAL CONCEPTS
Continued ...
DATABASE RECORD
page number 10
IMS GENERAL CONCEPTS
Continued ...
EXERCISE-2
page number 11
IMS GENERAL CONCEPTS
Continued ...
IMS SUPPORTS
15 LEVELS
255 SEGMENTS
1000 FIELDS
page number 12
IMS GENERAL CONCEPTS
Continued ...
IMS ENVIRONMENT
page number 13
IMS GENERAL CONCEPTS
Continued ...
IMS ENVIRONMENT
MODES OF PROCESSING
BATCH DL/I MODE
MPP MODE
BMP MODE
ONLINE BATCH
page number 14
IMS GENERAL CONCEPTS
Continued ...
IMS ENVIRONMENT
BATCH DL/I
TRUE BATCH PROCESSING
NO DATA COMMUNICATION SERVICES ARE USED
DATABASES ACCESSED MUST BE OFFLINE
page number 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
page number 16
SESSION 2
page number 17
DL/I CONTROL BLOCKS
page number 18
DL/I CONTROL BLOCKS
Continued ...
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
page number 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
page number 20
DL/I CONTROL BLOCKS
Continued ...
page number 21
DL/I CONTROL BLOCKS
Continued ...
page number 22
DL/I CONTROL BLOCKS
Continued ...
page number 23
DL/I CONTROL BLOCKS
Continued ...
A A
B C C
D E E
page number 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
page number 25
DL/I CONTROL BLOCKS
Continued ...
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
page number 26
DL/I CONTROL BLOCKS
Continued ...
PSB
PCB1 PCB2
PCB3 PCB4
page number 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
page number 28
DL/I CONTROL BLOCKS
Continued ...
EMPDATA
page number 29
SESSION 3
page number 30
SEGMENT SEARCH ARGUMENT
page number 31
ContinuedARGUMENT
SEGMENT SEARCH ...
page number 32
ContinuedARGUMENT
SEGMENT SEARCH ...
TYPES OF SSAS
UNQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT TYPE
QUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE
MORE EFFICIENT THAN UNQUALIFIED SSA
page number 33
ContinuedARGUMENT
SEGMENT SEARCH ...
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 * -
page number 34
ContinuedARGUMENT
SEGMENT SEARCH ...
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.
page number 35
ContinuedARGUMENT
SEGMENT SEARCH ...
OPERATOR SYMBOLS
Equal to ‘EQ’, ‘= ‘, ‘ =‘
page number 36
ContinuedARGUMENT
SEGMENT SEARCH ...
COMMAND CODES
page number 37
SESSION 4
page number 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
PROCEDURE DIVISION
page number 39
COBOL BASICS
ContinuedFOR
... IMS
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
page number 40
COBOL BASICS
ContinuedFOR
... IMS
INPUT/OUTPUT AREA
page number 41
COBOL BASICS
ContinuedFOR
... IMS
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
page number 42
COBOL BASICS
ContinuedFOR
... IMS
page number 43
COBOL BASICS
ContinuedFOR
... IMS
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.
page number 44
COBOL BASICS
ContinuedFOR
... IMS
CBLTDLI
page number 45
SESSION 5
DL/I CALLS
page number 46
DL/I CALLS
page number 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
page number 48
DL/I CALLS
Continued ...
page number 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
page number 50
DL/I CALLS
Continued ...
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
page number 51
DL/I CALLS
Continued ...
7 11 EKEY
2 BKEY 8
6
4 10
3 5 9
DKEY
CKEY FKEY
page number 52
DL/I CALLS
Continued ...
page number 53
DL/I CALLS
Continued ...
7 11 EKEY
2 BKEY 8
6
4 10
3 5 9
DKEY
CKEY FKEY
page number 54
DL/I CALLS
Continued ...
page number 55
DL/I CALLS
Continued ...
DELETE/REPLACE CALLS
MUST HAVE BEEN OBTAINED WITH A GET HOLD CALL (GHU, GHN, GHNP)
page number 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)?
page number 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
page number 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
page number 59
DL/I CALLS
Continued ...
INSERT (ISRT)
page number 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
page number 61
DL/I CALLS
Continued ...
99
11 EKEY
7
2 BKEY 8
6
4 10
3 5 9
DKEY
CKEY FKEY
page number 62
DL/I CALLS
Continued ...
SOME COMMON STATUS CODES
page number 63
DL/I CALLS
Continued ...
page number 64
SESSION 6
COMMAND CODES
page number 65
COMMAND CODES
H I S T O R Y * -
page number 66
COMMAND CODES
Continued ...
page number 67
COMMAND CODES
Continued ...
FOR PROGRAMS USING PATH CALLS PROCOPT IN PSB SHOULD HAVE “P” AS
ONE OF THE VALUES
page number 68
COMMAND CODES
Continued ...
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
page number 69
COMMAND CODES
Continued ...
7 11 EKEY
2 BKEY 8
6
4 10
3 5 9
DKEY
CKEY FKEY
page number 70
COMMAND CODES
Continued ...
•EXAMPLE:
SEGMENTB*F
1 SEGMENTA
2 3
SEGMENTC
SEGMENTB
page number 71
COMMAND CODES
Continued ...
•EXAMPLE:
SEGMENTC*L
1 SEGMENTA
2 3
SEGMENTC
SEGMENTB
page number 72
COMMAND CODES
Continued ...
page number 73
COMMAND CODES
Continued ...
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
page number 74
SESSION 7
page number 75
DL/I CALL EXERCISE
Continued ...
COURSE
COURSE# TITLE DESCRIPN
PREREQ OFFERING
COURSE# TITLE DATE LOCATION FORMAT
TEACHER STUDENT
EMPNUM NAME EMPNUM NAME GRADE
page number 76
DL/I CALL EXERCISE
Continued ...
page number 77
DL/I CALL EXERCISE
Continued ...
page number 78
DL/I CALL EXERCISE
Continued ...
11. GET THE TEACHER OF THE FIRST OFFERING ATTENDED BY STUDENT 222222
page number 79
SESSION 8
LOGICAL RELATIONSHIPS
page number 80
LOGICAL RELATIONSHIPS
page number 81
LOGICAL Continued ...
RELATIONSHIPS
Logical Relationship
page number 82
LOGICAL Continued ...
RELATIONSHIPS
PART ORDER
SHIPMENT STOCK
page number 83
SESSION 9
DB RECOVERY / RESTART
page number 84
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
page number 85
DATABASE RECOVERY
Continued ...
HOW?
page number 86
DATABASE RECOVERY
Continued ...
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
page number 87
DATABASE RECOVERY
Continued ...
DBRC INCLUDES THE IMS FUNCTIONS WHICH PROVIDE IMS SYSTEM AND
DATABASE INTEGRITY AND RESTART CAPABILITY.
page number 88
DATABASE RECOVERY
Continued ...
FORWARD RECOVERY
CHANGES MADE TO DATABASE SINCE THE LAST IMAGE COPY ARE APPLIED
ON THE RESTORED DATABASE BY USING
CHANGE ACCUMULATION DATASETS
LOG DATASETS
page number 89
DATABASE RECOVERY
Continued ...
BACKWARD RECOVERY
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
page number 90
DATABASE RECOVERY
Continued ...
page number 91
DATABASE RECOVERY
Continued ...
page number 92
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…
page number 93
DATABASE RECOVERY
Continued ...
page number 94
SESSION 10
page number 95
PROGRAMMING TIPS
INSTEAD OF USING GET CALL PRECEDING A ISRT CALL USE ISRT WITH
APPROPRIATE SSA
page number 96
Continued ... TIPS
PROGRAMMING
USE CHECKPOINT/RESTART
page number 97
SESSION 11
page number 98
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
page number 99
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
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
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.
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