Download - IMS DB PRESENTATION ver 1.1
1
IMS - DBIMS - DB
2
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
3
SESSION 1SESSION 1
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS
4
IMS GENERAL CONCEPTSIMS 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
5
B3
A2
D1B2
A1
C1
ROOT SEGMENT (PARENT)
SEGMENT OCCURRNCES
TWIN SEGMENTSDEPENDENT SEGMENTS
-- Level 1
-- Level 2B1
HIERARCHICAL STRUCTURE
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS
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
Continued ...Continued ...
6
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 GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
7
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 GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
8
ROOT A SEGMENT WITHOUT PARENT
PARENTA SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS
DIRECTLY UNDER IT
CHILDA SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER
SEGMENT
DEPENDENTALL SEGMENTS UNDER A PARTICULAR SEGMENT OF THE
DATABASE
TWINALL OCCURRENCES (2 OR MORE) OF A SEGMENT TYPE
UNDER A PARENT
SIBLINGS OCCURRENCES OF DIFFERENT SEGMENT TYPES UNDER A PARENT
TYPES OF SEGMENTS
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
9
2 4
1
3
5 76 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 - 1EXERCISE - 1
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
10
DATABASE RECORDDATABASE RECORD
ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT SEGMENTS
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
11
HOW MANY DATABASE RECORDS?
EXERCISE-2EXERCISE-2
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
12
IMS DATABASE LIMITATIONSIMS DATABASE LIMITATIONS
IMS SUPPORTS
15 LEVELS
255 SEGMENTS
1000 FIELDS
NO LIMITATION ON NUMBER OF SEGMENT OCCURRENCES.
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
13
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 ENVIRONMENTIMS ENVIRONMENT
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS
App Prog
DL/I DC
TerminalDatabase
DB PCBinterface
I/O PCBinterface
Continued ...Continued ...
14
MODES OF PROCESSING
BATCH DL/I MODE
MPP MODE
BMP MODE
IMS ENVIRONMENTIMS ENVIRONMENT
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS
MPP
ONLINE
DL/I
BATCH
BMP
Continued ...Continued ...
15
BATCH DL/IBATCH DL/I
TRUE BATCH PROCESSING
NO DATA COMMUNICATION SERVICES ARE USED
DATABASES ACCESSED MUST BE OFFLINE
MPP (MESSAGE PROCESSING PROGRAM)MPP (MESSAGE PROCESSING PROGRAM)
TRUE ONLINE PROCESSING
TRANSACTION ARE ENTERED AT TERMINAL AND STORED IN MESSAGE QUEUE
DATABASES ACCESSED MUST BE ONLINE
IMS ENVIRONMENTIMS ENVIRONMENT
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
16
BMP (BATCH MESSAGE PROCESSING)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
IMS ENVIRONMENTIMS ENVIRONMENT
IMS GENERAL CONCEPTSIMS GENERAL CONCEPTS Continued ...Continued ...
17
SESSION 2SESSION 2
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
18
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
DATABASE DESCRIPTION (DBD)DATABASE DESCRIPTION (DBD)
DEFINES THE LAYOUT OF THE DATABASE
DATABASE ADMINISTRATOR DEFINES LAYOUT USING DBDGEN MACRO
PROGRAM SPECIFICATION BLOCK (PSB)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
19
STATEMENTS IN DBD MACROSTATEMENTS IN DBD MACRO
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
DATADATA BASEBASE DESCRIPTIONDESCRIPTION (DBD)(DBD)
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
Continued ...Continued ...
20
SAMPLE DBDGENSAMPLE 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
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS Continued ...Continued ...
21
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
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
DATATYPESDATATYPES USEDUSED ININ DBDGENDBDGEN
Continued ...Continued ...
22
CAN WE DEFINE OVERLAPPING FIELDS?
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS Continued ...Continued ...
23
PROGRAMPROGRAM SPECIFICATIONSPECIFICATION BLOCKBLOCK (PSB)(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
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS Continued ...Continued ...
24
A
B C
D E
DATABASEDATABASE PCBPCB
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
PCB GIVES LOGICAL VIEW OF A DATABASE
PORTION OF DATABASE THAT THE PROGRAM PROCESSES IS CALLED
APPLICATION DATA STRUCTURE
A
C
E
Continued ...Continued ...
25
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
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
SAMPLESAMPLE PSBGENPSBGEN
Continued ...Continued ...
26
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
PROCOPTS IN PSB DEFINES SECURITY LEVEL FOR THE PROGRAM
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS Continued ...Continued ...
27
DBD1 DBD3DBD2
PCB1 PCB2
PCB3 PCB4
DL/I CONTROL BLOCKSDL/I CONTROL BLOCKS
APPLICATION PROGRAM CAN HAVE MULTIPLE VIEWS OF A DATABASE BY
USING SEPARATE PCBS FOR A SINGLE DATABASE
PSBPSB
Continued ...Continued ...
28
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 BLOCKSDL/I CONTROL BLOCKS Continued ...Continued ...
29
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 BLOCKSDL/I CONTROL BLOCKS Continued ...Continued ...
30
SESSION 3SESSION 3
SEGMENT SEARCH ARGUMENTSEGMENT SEARCH ARGUMENT
31
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 ARGUMENTSEGMENT SEARCH ARGUMENT
32
WHAT IS THE SIGNIFICANCE OF MAX 15 SSA?
SEGMENT SEARCH ARGUMENTSEGMENT SEARCH ARGUMENT Continued ...Continued ...
33
UNQUALIFIEDUNQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT TYPE
QUALIFIEDQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE
MORE EFFICIENT THAN UNQUALIFIED SSA
TYPESTYPES OFOF SSASSSAS
SEGMENT SEARCH ARGUMENTSEGMENT SEARCH ARGUMENT Continued ...Continued ...
34
WORKING-STORAGE-SECTIONWORKING-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
UNQUALIFIEDUNQUALIFIED SSASSA
H I S T O R Y *
H I S T O R Y
-
SEGMENT SEARCH ARGUMENTSEGMENT SEARCH ARGUMENT Continued ...Continued ...
35
WORKING-STORAGE-SECTIONWORKING-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.
QUALIFIEDQUALIFIED SSASSA
SEGMENT SEARCH ARGUMENTSEGMENT SEARCH ARGUMENT Continued ...Continued ...
36
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 ARGUMENTSEGMENT SEARCH ARGUMENT Continued ...Continued ...
37
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 CODESCOMMAND CODES
SEGMENT SEARCH ARGUMENTSEGMENT SEARCH ARGUMENT Continued ...Continued ...
38
SESSION 4SESSION 4
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS
39
IN A COBOL-IMS PROGRAM. THE FIRST SECTION TO CONTAIN ANY IMS RELATED
COMPONENTS IS THE WORKING STORAGE SECTION
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISIONFILE SECTIONWORKING STORAGE SECTIONLINKAGE SECTION
PROCEDURE DIVISION
FUNCTION CODES
I/O AREA
SEGMENT SEARCH ARGUMENTS
PCB MASKS
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS
DATADATA DIVISIONDIVISION
40
FUNCTIONFUNCTION CODESCODES
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 UNIQUEGN - GET NEXTGNP - GET NEXT WITHIN PARENTGHU - GET HOLD UNIQUEGHN - GET HOLD NEXTGHNP - GET HOLD NEXT WITHIN PARENTDLET - DELETEREPL - REPLACEISRT - INSERTXRST - EXTENDED RESTARTCHKP - CHECKPOINT
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS Continued ...Continued ...
41
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
INPUT/OUTPUTINPUT/OUTPUT AREAAREA
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS Continued ...Continued ...
42
USED IN LINKAGE SECTION
LINKAGELINKAGE SECTIONSECTION
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
THETHE PCBPCB MASKMASK
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS Continued ...Continued ...
43
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
THETHE PCBPCB MASKMASK
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS Continued ...Continued ...
44
PROCEDUREPROCEDURE DIVISIONDIVISION.
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.
PROCEDUREPROCEDURE DIVISIONDIVISION
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS Continued ...Continued ...
45
COBOL BASICS FOR IMSCOBOL BASICS FOR IMS
RUN JCL
DL/I
APPLICATIONPROGRAM
IMSDATABASE
PROGRAM NAME
PSB NAME
CB
LT
DL
I
DL
ITC
BL
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
Continued ...Continued ...
46
SESSION 5SESSION 5
DL/I CALLSDL/I CALLS
47
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 CALLSDL/I RETRIEVAL CALLS
DL/I CALLSDL/I CALLS
48
GET UNIQUEGET UNIQUE
CALL ‘CBLTDLI’ USING ‘GU ‘, PCB-MASK,
SEGMENT-IO-AREASEGMENTA*-(AKEY=1)SEGMENTB*-(BKEY=2)SEGMENTD*-(DKEY=6)
AFTER THE CALL SEGMENTD WITH DKEY=6 WILL BE IN SEGMENT-IO-AREA
1
6
5
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEY DKEY FKEY
EXERCISEEXERCISE: WRITE A GU TO RETRIEVE FKEY=10
DL/I CALLSDL/I CALLS Continued ...Continued ...
49
WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA?
DL/I CALLSDL/I CALLS Continued ...Continued ...
50
GETGET NEXTNEXT
RETREIVALRETREIVAL SEQUENCESEQUENCE
TOP TO BOTTOM
FRONT TO BACK
LEFT TO RIGHT
1
6
5
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEYDKEY FKEY
GK
GA
DL/I CALLSDL/I CALLS Continued ...Continued ...
51
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
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEYDKEY
FKEY
EXERCISEEXERCISE: WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER EKEY=8 IS RETRIEVED
DL/I CALLSDL/I CALLS Continued ...Continued ...
52
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
GET NEXT WITHIN PARENTGET NEXT WITHIN PARENT
1
6
5
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEYDKEY
FKEY
DL/I CALLSDL/I CALLS Continued ...Continued ...
53
WHAT WILL BE THE OUTPUT IF GNP IS DONE 4 MORE TIMES IN
PREVIOUS EXAMPLE?
DL/I CALLSDL/I CALLS Continued ...Continued ...
54
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 CALLS EXERCISEPATH CALLS EXERCISE
1
6
5
117
104
2 8
3 9
BKEY
EKEY
CKEYDKEY
FKEY
DL/I CALLSDL/I CALLS Continued ...Continued ...
55
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)GET HOLD CALLS (GHU/GHN/GHNP)
Continued ...Continued ...DL/I CALLSDL/I CALLS
56
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
DELETE/REPLACE CALLSDELETE/REPLACE CALLS
Continued ...Continued ...DL/I CALLSDL/I CALLS
57
CALL ‘CBLTDLI’ USING ‘GHU ‘, LS-PCB-MASK, WS-SEGMENT-IO-AREA
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
CALL ‘CBLTDLI’ USING ‘DLET’, LS-PCB-MASK
DELETE CALLDELETE CALL
WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SEGMENTA*D(AKEY=1)?
Continued ...Continued ...DL/I CALLSDL/I CALLS
1
6
5
117
104
2 8
3 9
BKEY
EKEY
CKEYDKEY
58
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
REPLACE (REPL)REPLACE (REPL)
Continued ...Continued ...DL/I CALLSDL/I CALLS
59
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
Continued ...Continued ...DL/I CALLSDL/I CALLS
1
6
5
117
104
2 8
3 9
BKEY
EKEY
CKEYDKEY
FKEY
60
TWO MODES OF INSERTTWO MODES OF INSERT
LOAD MODE - FOR INITIAL LOADING OF DATABASE
UPDATE MODE - ADD TO EXISTING DATABASE
LOAD MODELOAD 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)INSERT (ISRT)
Continued ...Continued ...DL/I CALLSDL/I CALLS
61
UPDATE MODEUPDATE 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 CODESCOMMAND CODES
“F” OR “L” - OVERRIDES INSERT RULE
“D” - INSERT PATH OF SEGMENTS
Continued ...Continued ...DL/I CALLSDL/I CALLS
INSERT (ISRT)INSERT (ISRT)
62
99
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
Continued ...Continued ...DL/I CALLSDL/I CALLS
1
6
5
117
104
2 8
3 9
BKEY
EKEY
CKEYDKEY
FKEY
63
SOME COMMON STATUS CODESSOME COMMON STATUS CODES
DL/I CALLSDL/I CALLS Continued ...Continued ...
STATUS CODE DESCRIPTION
SPACES SUCCESSFUL CALL
CALL TYPES
ALL CALLS
AC CALL HAS SSA WITH A HIERARCHICAL ERROR ALL GET CALLSISRT
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 CALLSISRT
DA SEQUENCE FIELD IS CHANGED REPL
DJ CALL IS NOT PRECEDED BY A SUCCESSFUL GET HOLD CALL
DLETREPL
GA A HIGHER LEVEL SEGMENT IS RETRIEVED IN SEQUENTIAL PROCESSING
GN, GNP
64
SOME COMMON STATUS CODESSOME COMMON STATUS CODES
DL/I CALLSDL/I CALLS Continued ...Continued ...
STATUS CODE DESCRIPTION
GE SPECIFIED SEGMENT NOT FOUND
CALL TYPES
ALL GET CALLSISRT
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
65
SESSION 6SESSION 6
COMMAND CODESCOMMAND CODES
66
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
COMMAND CODESCOMMAND CODES
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
67
SOME COMMAND CODESSOME COMMAND CODES
COMMAND CODESCOMMAND 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
Continued ...Continued ...
68
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”
COMMANDCOMMAND CODE “D”CODE “D”
COMMAND CODESCOMMAND CODES Continued ...Continued ...
69
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
COMMANDCOMMAND CODE “D”CODE “D”
COMMAND CODESCOMMAND CODES Continued ...Continued ...
70
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
PATH CALLS EXAMPLEPATH CALLS EXAMPLE
1
6
5
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEYDKEY
FKEY
Continued ...Continued ...COMMAND CODESCOMMAND CODES
71
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
COMMAND CODE “F”COMMAND CODE “F”
COMMAND CODESCOMMAND CODES
4
3
1
2
SEGMENTA
SEGMENTBSEGMENTC
Continued ...Continued ...
72
COMMAND CODE “L”COMMAND CODE “L”
COMMAND CODESCOMMAND CODES
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
4
3
1
2
SEGMENTA
SEGMENTBSEGMENTC
Continued ...Continued ...
73
COMMAND CODE “N”COMMAND CODE “N”
COMMAND CODESCOMMAND CODES
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
Continued ...Continued ...
74
COMMAND CODESCOMMAND CODES
COMMAND CODE “P”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*PSEGMENTC
WILL RETRIEVE SEGMENTC TO I/O AREA BUT PARENTAGE WILL BE SET TO SEGMENTA
Continued ...Continued ...
3
1
2
SEGMENTA
SEGMENTBSEGMENTC
75
SESSION 7SESSION 7
DL/I CALL EXERCISEDL/I CALL EXERCISE
76
COURSE# TITLE DESCRIPN
COURSE# TITLE DATE LOCATION FORMAT
EMPNUM NAME GRADEEMPNUM NAME
COURSE
PREREQ OFFERING
TEACHER STUDENT
Continued ...Continued ...DL/I CALL EXERCISEDL/I CALL EXERCISE
77
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
Continued ...Continued ...DL/I CALL EXERCISEDL/I CALL EXERCISE
78
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”
Continued ...Continued ...DL/I CALL EXERCISEDL/I CALL EXERCISE
79
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
Continued ...Continued ...DL/I CALL EXERCISEDL/I CALL EXERCISE
80
SESSION 8
DATABASE ACCESS METHODS
81
DL/I PROVIDES TWO BASIC DATABASE ORGANIZATIONS
HIERARCHICAL SEQUENTIALHIERARCHICAL SEQUENTIAL (HS)
HIERARCHICAL DIRECTHIERARCHICAL DIRECT (HD)
IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
Database OrganizationDatabase Organization Access MethodsAccess 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
82
HSAM / SHSAMHSAM / 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
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
83
HSAM SEGMENT STORAGE IN DATABASEHSAM SEGMENT STORAGE IN DATABASE
‘‘00’ -’FF’00’ -’FF’ ‘‘00’00’ SEGMENT DATA SEGMENT DATA
Segment Identifier
Delete byte
HSAM DBDGENHSAM DBDGEN
DBD NAME=EXHSAM,ACCESS=HSAM
DATASET DD1=EXHSAMI,DD2=EXHSAMO,DEVICE=3380,RECORD=(512,512)
SEGM FIELD=…………….
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
84
HISAM / SHISAMHISAM / 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
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
85
HISAM SEGMENT STORAGE IN DATABASEHISAM SEGMENT STORAGE IN DATABASE
‘‘00’ -’FF’00’ -’FF’ ‘‘00’00’ SEGMENT DATA SEGMENT DATA
Segment Identifier
Delete byte
HISAM DBDGENHISAM DBDGEN
DBD NAME=EXHISAM,ACCESS=(HISAM,VSAM)
DATASET DD1=HISAMPR,OVFLW=HISAMOV,DEVICE=3380,RECORD=(512,512)
SEGM FIELD=…………….
RBARBA
4 Byte RBA
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
86
HDAMHDAM
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
‘‘00’ -’FF’00’ -’FF’ ‘‘00’00’ SEGMENT DATA SEGMENT DATA
Segment Identifier
Delete byte
POINTERSPOINTERS
HDAM SEGMENT STORAGE IN DATABASEHDAM SEGMENT STORAGE IN DATABASE
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
87
HDAM DBDGENHDAM 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
…….
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
88
HIDAMHIDAM
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 DBDGENHIDAM 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
…….
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
89
GSAMGSAM
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
Continued ...Continued ...IMS DATABASE ACCESS METHODSIMS DATABASE ACCESS METHODS
90
SESSION 9
MULTIPLE PROCESSING
91
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
MULTIPLE PROCESSINGMULTIPLE PROCESSING
92
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
Continued ...Continued ...MULTIPLE PROCESSINGMULTIPLE PROCESSING
93
EXAMPLEEXAMPLE
CALLS GN SEGMENTB, GN SEGMENTC, GN SEGMENTB, GN SEGMENTC
A1
B11 C11
B12
B13
C12
C13
A2
B21
B22
C21
C22
Continued ...Continued ...MULTIPLE PROCESSINGMULTIPLE PROCESSING
94
SESSION 10
SECONDARY INDEXING
95
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
SECONDARY INDEXINGSECONDARY INDEXING
96
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
SECONDARY INDEXINGSECONDARY INDEXING
97
Customer
Ship-to
Buyer Receivable
Payment Adjustment Line Item
Pointer Invoice No
Indexed DatabaseIndexed Database Secondary Index DBSecondary Index DB
Index
Source Segment
Index
Target Segment
Index pointer segment
Prefix | Data
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
98
Customer
Ship-to
Buyer
Receivable
Payment Adjustment Line Item
SECONDARY DATA STRUCTURESECONDARY DATA STRUCTURE
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
99
Customer
Ship-to
Buyer Receivable
Payment Adjustment Line Item
Pointer Invoice No
Indexed DatabaseIndexed Database Secondary Index DBSecondary Index DB
Index
Source Segment
Index
Target Segment
Index pointer segment
Prefix | Data
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
100
COURSE# TITLE DESCRIPN
COURSE# TITLE DATE LOCATION FORMAT
EMPNUM NAME GRADEEMPNUM NAME
COURSE
PREREQ OFFERING
TEACHER STUDENT
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
101
INDEXING THE ROOT ON A FIELD NOT THE SEQUENCE FIELD
MAINDBD MACRO
DBD NAME=EDUCPDBDSEGM NAME=COURSE,BYTES=256FIELD NAME=(COURSE#,SEQ),BYTE3,START=1FIELD NAME=TITLE,BYTES=33,START=4LCHILD NAME=(TPTR,TXDBD),POINTER=INDXXDFLD NAME=XTITLE,SRCH=TITLE
INDEX DBD MACRO
DBD NAME=TXDBD,ACCESS=INDEXSEGM NAME=TPTR,BYTES=33FIELD NAME=(TITLE,SEQ),BYTES=33,START=1LCHILD NAME=(COURSE,EDUCPDBD),INDEX=XTITLE
PSB MACRO
PCB TYPE=DB,DBDNAME=EDUCPDBD,KEYLEN=15PROCOPT=G,PROCSEQ=TXDBD
SENSEG NAME=COURSESENSEG NAME=OFFERING,PARENT=COURSESENSEG NAME=STUDENT,PARENT=OFFERING
SYNTAX: GU COURSE (XTITLE=‘DYNAMICS’)
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
102
WHAT HAPPENS IF “PROCSEQ=TXDBD” IS NOT USED?WHAT HAPPENS IF “PROCSEQ=TXDBD” IS NOT USED?
DL/I BY DEFAULT USES PRIMARY PROCESSING SEQUENCE
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
103
INDEXING THE ROOT ON A FIELD IN THE DEPENDENT
MAINDBD MACRO
DBD NAME=EDUCPDBDSEGM NAME=COURSE,BYTES=256FIELD NAME=(COURSE#,SEQ),BYTE3,START=1FIELD NAME=TITLE,BYTES=33,START=4LCHILD NAME=(LPTR,LXDBD),POINTER=INDXXDFLD NAME=XLOC,SRCH=LOCATION,SEGMENT=OFFERING
INDEX DBD MACRO
DBD NAME=LXDBD,ACCESS=INDEXSEGM NAME=LPTR,BYTES=..FIELD NAME=(LOCATION,SEQ),BYTES=….LCHILD NAME=(COURSE,EDUCPDBD),INDEX=XLOC
SYNTAX: GU COURSE (XLOC=‘CHENNAI’)
Continued ...Continued ...SECONDARY INDEXINGSECONDARY INDEXING
104
SESSION 11SESSION 11
LOGICAL RELATIONSHIPSLOGICAL RELATIONSHIPS
105
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 RELATIONSHIPSUNIDIRECTIONAL LOGICAL RELATIONSHIP BIDIRECTIONAL PHYSICALLY PAIRED LOGICAL RELATIONSHIPBIDIRECTIONAL VIRTUALLY PAIRED LOGICAL RELATIONSHIP
LOGICAL RELATIONSHIPSLOGICAL RELATIONSHIPS
106
DETAIL
ORDER
SHIPMENT
PART
STOCK
PART Database
ORDER Database
Physical Parent
of DETAIL
Logical Parent
of DETAIL
Physical Children
of ORDER
Logical Children
of PART
Logical Relationship
Continued ...Continued ...LOGICAL RELATIONSHIPSLOGICAL RELATIONSHIPS
107
DETAIL
ORDER
SHIPMENT
PART /ORDERPART /ORDER
Logical Database
ORDER/PARTORDER/PART
Logical Database
PART
STOCK
STOCK
PART
ORDERDETAIL
SHIPMENT
Continued ...Continued ...LOGICAL RELATIONSHIPSLOGICAL RELATIONSHIPS
108
SESSION 12
DB RECOVERY / RESTART
109
WHY?WHY?
TO RESTORE A DATABASE AFTER ITS PARTIAL DESTRUCTION
WHEN?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
DATABASE RECOVERYDATABASE RECOVERY
110
HOW?HOW?
ONLINEONLINE RECOVERYRECOVERY PROCESSPROCESS
IMS DOES DYNAMIC BACKOUT USING THE LOG INFORMATION FOR DL/I
PROGRAMSFOR BMP PROGRAMS UPDATES ARE AUTOMATICALLY BACKED OUT TO
THE LAST CHECKPOINT
BATCHBATCH RECOVERYRECOVERY PROCESSPROCESS
FORWARD RECOVERY
BACKWARD RECOVERY / BATCH BACK OUT
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
111
UTILITIES FOR RECOVERYUTILITIES FOR RECOVERY
DFSUDMP0DFSUDMP0: DATABASE IMAGE COPY UTILITY FOR CREATION OF IMAGE COPIES OF DATABASES
DFSUCUM0DFSUCUM0:DATABASE CHANGE ACCUMULATION UTILITY FOR ACCUMULATION OF DATABASE CHANGES FROM DL/I LOG TAPES SINCE THE LAST COMPLETE IMAGE COPY
DFSURDB0DFSURDB0: DATABASE RECOVERY UTILITY FOR RESTORATION OF THE DATABASE, USING A PRIOR DATABASE IMAGE COPY AND THE ACCUMULATED CHANGES FROM DL/I LOG TAPES
DFSBBO00DFSBBO00: DATABASE BACK OUT UTILITY FOR REMOVAL OF CHANGES MADE TO DATABASES BY A SPECIFIC APPLICATION PROGRAM
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
112
DATABASE RECOVERY CONTROL (DBRC)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.
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
113
FORWARD RECOVERYFORWARD 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 DATASETSLOG DATASETS
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
114
BACKWARDBACKWARD RECOVERYRECOVERY
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
INPUTSINPUTSLOG DATASETSDATABASES WHOSE UPDATES ARE TO BACKED OUTCHECKPOINT ID
WARNING: DO NOT USE CHECKPOINT ID WHILE BACKING OUT BMP. IT TAKES BY DEFAULT THE LAST CHECKPOINT ISSUED.
OUTPUTSOUTPUTSBACKED OUT DATABASESLOG DATASETS
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
115
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) //*
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
116
CHECKPOINTCHECKPOINT CALLCALL (CHKP)(CHKP)
CHECKPOINT RESTART IS USED DURING BACKWARD RECOVERY
CHECKPOINT COMMITS PROGRAMS UPDATES TO THE DATABASE AND LOGS THE UPDATES
TWO TYPES OF CHECKPOINTS
•BASICBASIC CHECKPOINTCHECKPOINT
–STORES JUST CHECKPINT ID ( 8 BYTES STORED IN IO-AREA)
–SYNTAX: CALL ‘CBLTDLI’ USING WS-CHKP, IO-PCB, IO-AREA
•SYMBOLICSYMBOLIC CHECKPOINTCHECKPOINT
–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…
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
117
RESTARTRESTART CALL(XRST)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…
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
118
FACTORS TO BE CONSIDERED FOR CHKP & XRST CALLSFACTORS 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
Continued ...Continued ...DATABASE RECOVERYDATABASE RECOVERY
119
SESSION 13
EFFICIENT PROGRAMMING TIPS
120
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
PROGRAMMING TIPSPROGRAMMING TIPS
121
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
PROGRAMMING TIPSPROGRAMMING TIPS Continued ...Continued ...
122
SESSION 14
COMMON IMS ABENDS
123
U0047U0047
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
COMMON IMS ABENDSCOMMON IMS ABENDS
124
U0456U0456
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
COMMON IMS ABENDSCOMMON IMS ABENDS
125
U0476U0476
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
COMMON IMS ABENDSCOMMON IMS ABENDS
126
U0852U0852
DESCRIPTION
THE SEGMENT CODE RETURNED IS NOT VALID FOR THE DATABASE
SOLUTION
ANALYZE THE DATABASE. IF THERE IS AN INVALID POINTER, RECOVER THE DATABASE.
COMMON IMS ABENDSCOMMON IMS ABENDS
127
U3303U3303
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
COMMON IMS ABENDSCOMMON IMS ABENDS