Download presentation
Presentation is loading. Please wait.
1
IMS - 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 1 IMS GENERAL CONCEPTS
4
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
5
IMS GENERAL CONCEPTS HIERARCHICAL STRUCTURE Continued ...
ROOT SEGMENT (PARENT) 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 A2 -- Level 1 A1 SEGMENT OCCURRNCES B3 B2 B1 C1 D1 -- Level 2 DEPENDENT SEGMENTS TWIN SEGMENTS
6
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
7
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
8
IMS GENERAL CONCEPTS TYPES OF SEGMENTS Continued ... ROOT
A SEGMENT WITHOUT PARENT PARENT A SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS DIRECTLY UNDER IT CHILD A SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER SEGMENT DEPENDENT ALL SEGMENTS UNDER A PARTICULAR SEGMENT OF THE DATABASE TWIN ALL OCCURRENCES (2 OR MORE) OF A SEGMENT TYPE UNDER A PARENT SIBLINGS OCCURRENCES OF DIFFERENT SEGMENT TYPES UNDER A PARENT
9
IMS GENERAL CONCEPTS EXERCISE - 1 Continued ...
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? ANSWERS 1. SEGMENT 8 AND SEGMENT 9 ARE DEPENDENT OF SEGMENT 4 2. SEGMENTS 2, 3 & 4 ARE CHILD SEGMENTS 3. SEGMENTS 2, 3, 4, 5, 6, 7, 8, & 9 ARE DEPENDENTS 4. 3 LEVELS
10
IMS GENERAL CONCEPTS DATABASE RECORD Continued ...
ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT SEGMENTS
11
HOW MANY DATABASE RECORDS?
IMS GENERAL CONCEPTS Continued ... EXERCISE-2 3 DATABASE RECORDS HOW MANY DATABASE RECORDS?
12
IMS DATABASE LIMITATIONS
IMS GENERAL CONCEPTS Continued ... IMS DATABASE LIMITATIONS IMS SUPPORTS 15 LEVELS 255 SEGMENTS 1000 FIELDS NO LIMITATION ON NUMBER OF SEGMENT OCCURRENCES.
13
IMS GENERAL CONCEPTS IMS ENVIRONMENT Continued ...
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 App Prog DB PCB interface I/O PCB interface DL/I DC Database Terminal
14
IMS GENERAL CONCEPTS IMS ENVIRONMENT Continued ... MODES OF PROCESSING
BATCH DL/I MODE MPP MODE BMP MODE ONLINE BATCH MPP DL/I BMP
15
IMS GENERAL CONCEPTS IMS ENVIRONMENT Continued ... 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
16
IMS GENERAL CONCEPTS IMS ENVIRONMENT Continued ...
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
17
SESSION 2 DL/I CONTROL BLOCKS
18
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
19
DATA BASE DESCRIPTION (DBD)
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
20
DL/I CONTROL BLOCKS SAMPLE DBDGEN Continued ... 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
21
DATATYPES USED IN DBDGEN
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
22
DL/I CONTROL BLOCKS Continued ... CAN WE DEFINE OVERLAPPING FIELDS?
YES
23
PROGRAM SPECIFICATION BLOCK (PSB)
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
24
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
25
DL/I CONTROL BLOCKS SAMPLE PSBGEN Continued ... 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
26
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
27
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
28
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. ITEMSEG AND LOCNSEG CAN BE UPDATED 2. VENSEG CAN NOT BE UPDATED AS THE PROCOPT IS JUST READ (G) 3. GIR 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
29
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=_____________________ PSBGEN LANG=COBOL,PSBNAME=EMPPSBY END SENESG NAME=EMPDATA,PARENT=0 SENSEG NAME=WORKDATA,PARENT=EMPDATA SENSEG NAME=DEPTDATA,NAME=EMPDATA SENSEG NAME=BENDATA,NAME=EMPDATA
30
SEGMENT SEARCH ARGUMENT
SESSION 3 SEGMENT SEARCH ARGUMENT
31
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
32
SEGMENT SEARCH ARGUMENT WHAT IS THE SIGNIFICANCE OF MAX 15 SSA?
Continued ... SEGMENT SEARCH ARGUMENT WHAT IS THE SIGNIFICANCE OF MAX 15 SSA? YOU CAN HAVE 1 SSA FOR EACH LEVEL OF HIERARCHY. SINCE IMS HAS A LIMITATION OF 15 LEVELS AS MAXIMUM, WE CAN HAVE MAXIMUM OF 15 SSAS
33
SEGMENT SEARCH ARGUMENT
Continued ... SEGMENT SEARCH ARGUMENT TYPES OF SSAS UNQUALIFIED SEARCHES FOR A SPECIFIC SEGMENT TYPE QUALIFIED SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE MORE EFFICIENT THAN UNQUALIFIED SSA
34
SEGMENT SEARCH ARGUMENT
Continued ... SEGMENT SEARCH ARGUMENT UNQUALIFIED SSA 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 * -
35
SEGMENT SEARCH ARGUMENT
Continued ... SEGMENT SEARCH ARGUMENT QUALIFIED SSA 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 ‘ ’ TO KEY-VALUE. CALL ‘CBLTDLI’ USING FUNC-CODE, PCB-MASK-1, IO-AREA, SSA-EMPLOYEE.
36
SEGMENT SEARCH ARGUMENT
Continued ... SEGMENT SEARCH ARGUMENT 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’, ‘>=‘, ‘=>’
37
SEGMENT SEARCH ARGUMENT
Continued ... SEGMENT SEARCH ARGUMENT 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”
38
SESSION 4 COBOL BASICS FOR IMS
39
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 ENVIRONMENT DIVISION DATA DIVISION FILE SECTION WORKING STORAGE SECTION LINKAGE SECTION PROCEDURE DIVISION FUNCTION CODES I/O AREA SEGMENT SEARCH ARGUMENTS PCB MASKS
40
COBOL BASICS FOR IMS FUNCTION CODES Continued ...
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
41
COBOL BASICS FOR IMS INPUT/OUTPUT AREA Continued ...
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
42
COBOL BASICS FOR IMS THE PCB MASK Continued ...
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
43
COBOL BASICS FOR IMS THE PCB MASK Continued ...
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
44
COBOL BASICS FOR IMS PROCEDURE DIVISION Continued ...
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.
45
COBOL BASICS FOR IMS Continued ...
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 RUN JCL PROGRAM NAME PSB NAME DL/I IMS DATABASE DLITCBL CBLTDLI GOBACK APPLICATION PROGRAM
46
SESSION 5 DL/I CALLS
47
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
48
DL/I CALLS GET UNIQUE EXERCISE: WRITE A GU TO RETRIEVE FKEY=10
Continued ... DL/I CALLS 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 CALL ‘CBLTDLI’ USING ‘GU ‘, PCB-MASK, SEGMENT-IO-AREA, SEGMENTA*-(AKEY=1) SEGMENTE*-(EKEY=8) SEGMENTF*-(FKEY=10) 6 4 10 3 5 9 CKEY DKEY FKEY EXERCISE: WRITE A GU TO RETRIEVE FKEY=10
49
WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA?
Continued ... DL/I CALLS WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA? THE FIRST ROOT SEGMENT OCCURRENCE OF THE DATABASE WILL BE RETRIEVED IN SEGMENT I/O AREA
50
DL/I CALLS GET NEXT Continued ... RETREIVAL SEQUENCE TOP TO BOTTOM
FRONT TO BACK LEFT TO RIGHT AKEY 1 11 7 EKEY 2 8 BKEY GA 6 4 10 3 5 9 GK DKEY FKEY CKEY
51
AFTER THE CALL SEGMENTE WITH EKEY=8 WILL BE IN PROGRAM I/O AREA
Continued ... DL/I CALLS 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 8 BKEY YOU WILL GET END OF DATABASE STATUS CODE “GB” 6 4 10 3 5 9 FKEY DKEY CKEY EXERCISE: WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER EKEY=8 IS RETRIEVED
52
DL/I CALLS GET NEXT WITHIN PARENT Continued ...
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 11 7 EKEY 2 8 BKEY 6 4 10 3 5 9 DKEY CKEY FKEY
53
Continued ... DL/I CALLS WHAT WILL BE THE OUTPUT IF GNP IS DONE 4 MORE TIMES IN PREVIOUS EXAMPLE? WHEN THERE ARE NO MORE SEGMENTS WITHIN THE ESTABLISHED PARENTAGE, DL/I RETURNS A STATUS CODE OF ‘GE’. SO YOU WILL NEVER GET ‘GB’ STATUS CODE WITH GNP CALLS
54
DL/I CALLS PATH CALLS EXERCISE Continued ...
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 11 7 EKEY 2 8 BKEY DL/I WILL ASSUME UNQUALIFIED SSA FOR MISSING SEGMENTS IN THE HIERARCHY DURING RETRIEVE CALL. ONLY SEGMENTS 1 AND 10 WILL BE RETRIEVED INTO I/O AREA. WARNING: UNQUALIFIED CALLS ARE INEFFICIENT. 6 4 10 3 5 9 DKEY CKEY FKEY
55
GET HOLD CALLS (GHU/GHN/GHNP)
Continued ... DL/I CALLS 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
56
DL/I CALLS DELETE/REPLACE CALLS Continued ...
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
57
WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SEGMENTA*D(AKEY=1)?
Continued ... DL/I CALLS 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 11 7 EKEY 2 8 BKEY SEGMENT 1 AND ALL ITS DEPENDENTS WILL BE DELETED 6 4 10 3 5 9 DKEY CKEY WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SEGMENTA*D(AKEY=1)?
58
DL/I CALLS REPLACE (REPL) Continued ... 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
59
Continued ... DL/I CALLS CALL ‘CBLTDLI’ USING ‘GHU ‘, LS-PCB-MASK, WS-IO-AREA, SEGMENTA*-(AKEY=1) SEGMENTB*-(BKEY=2) SEGMENTC*-(CKEY=3) Change contents of WS-IO-AREA CALL ‘CBLTDLI USING ‘REPL’, LS-PCB-MASK, WS-IO-AREA WILL RESULT IN UPDATE OF SEGMENTC 1 11 7 EKEY 2 8 BKEY 6 4 10 3 5 9 DKEY CKEY FKEY
60
DL/I CALLS INSERT (ISRT) Continued ... TWO MODES OF INSERT
LOAD MODE - FOR INITIAL LOADING OF DATABASE UPDATE MODE - ADD TO EXISTING DATABASE LOAD MODE: FOR LOAD MODE PROCOPT = L or LS MUST BE SPECIFIED IN PSB PROCOPT=L LOADS DATABASE BUT NOT NECESSARILY IN SEQUENTIAL ORDER
61
DL/I CALLS INSERT (ISRT) Continued ... UPDATE MODE:
FOR UPDATE MODE PROCOPT=I or IS MUST BE SPECIFIED IN PSB PROCOPT=I INSERTS SEGMENTS IN SEQ OR RANDOM ORDER PROCOPT=IS ADDS NEW SEGMENTS ONLY IN ASCENDING ORDER COMMAND CODES “F” OR “L” - OVERRIDES INSERT RULE “D” - INSERT PATH OF SEGMENTS
62
Continued ... DL/I CALLS 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 1 99 11 7 EKEY 2 8 BKEY 6 4 10 3 5 9 DKEY CKEY FKEY
63
SOME COMMON STATUS CODES
Continued ... DL/I CALLS 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 LOADING A DATABASE WHICH IS NOT EMPTY OR DO OTHER THAN LOAD PROCESSING ON EMPTY DATABASE ALL CALLS AJ CALL SPECIFIES AN INVALID SSA ALL CALLS AK FIELD NAMED IN A QUALIFIED SSA IS NOT CORRECT ALL GET CALLS ISRT DA SEQUENCE FIELD IS CHANGED REPL CALL ‘CBLTDLI’ USING ‘GU ‘, PCB-MASK, SEGMENT-IO-AREA, SEGMENTA*-(AKEY=1) SEGMENTE*-(EKEY=8) SEGMENTF*-(FKEY=10) DJ CALL IS NOT PRECEDED BY A SUCCESSFUL GET HOLD CALL DLET REPL GA A HIGHER LEVEL SEGMENT IS RETRIEVED IN SEQUENTIAL PROCESSING GN, GNP
64
SOME COMMON STATUS CODES
Continued ... DL/I CALLS SOME COMMON STATUS CODES STATUS CODE DESCRIPTION CALL TYPES GB END OF DATA BASE WAS REACHED DURING SEQUENTIAL RETRIEVAL GN GE SPECIFIED SEGMENT NOT FOUND ALL GET CALLS ISRT GK A SEGMENT OF DIFFERENT TYPE, BUT AT THE SAME LEVEL IS RETRIEVED DURING SEQUENTIAL PROCESSING GN, GNP GP PROPER PARENTAGE IS NOT IN EFFECT GNP II DUPLICATE INSERT ISRT CALL ‘CBLTDLI’ USING ‘GU ‘, PCB-MASK, SEGMENT-IO-AREA, SEGMENTA*-(AKEY=1) SEGMENTE*-(EKEY=8) SEGMENTF*-(FKEY=10)
65
SESSION 6 COMMAND CODES
66
H I S T O R Y * - 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
67
COMMAND CODES SOME COMMAND CODES Continued ... 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
68
COMMAND CODES COMMAND CODE “D” Continued ...
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”
69
COMMAND CODES COMMAND CODE “D” 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 I/O AREA USED SHOULD BE BIG ENOUGH TO ACCOMMODATE ALL SEGMENTS IN PATH
70
COMMAND CODES PATH CALLS EXAMPLE Continued ...
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 11 7 EKEY 2 8 BKEY 6 4 10 3 5 9 DKEY CKEY FKEY
71
COMMAND CODES COMMAND CODE “F” Continued ...
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 4 2 3 SEGMENTC SEGMENTB
72
COMMAND CODES COMMAND CODE “L” Continued ...
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 4 2 3 SEGMENTC SEGMENTB
73
COMMAND CODES COMMAND CODE “N” Continued ...
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
74
COMMAND CODES COMMAND CODE “P” Continued ...
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
75
SESSION 7 DL/I CALL EXERCISE
76
DL/I CALL EXERCISE Continued ... COURSE COURSE# TITLE DESCRIPN PREREQ
OFFERING COURSE# TITLE DATE LOCATION FORMAT TEACHER STUDENT EMPNUM NAME EMPNUM NAME GRADE
77
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 1. GU COURSE OFFERING (LOCATION=‘CHENNAI’) 2. GU COURSE DO WHILE STATUS-CODE = ‘ ‘ GNP STUDENT END-DO 3. GU COURSE GNP STUDENT (GRADE=‘A’) 4. GU COURSE GN
78
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” 5. GU COURSE (TITLE=‘IMS’) DO WHILE STATUS-CODE = ‘ ‘ GNP STUDENT (GRADE=“A”) END-DO 6. Build STUDENT segment in I/O area ISRT COURSE (TITLE=‘IMS’) OFFERING (DATE=‘032602’) STUDENT 7. GHU COURSE (TITLE=‘XYZ’) DLET 8. GHU COURSE (TITLE=‘IMS’) change the location name from ‘CHENNAI’ to ‘MUMBAI’ REPL
79
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 9. GU COURSE*D OFFERING (LOCATION=‘CHENNAI’) 10. Build segments in I/O area ISRT COURSE*D OFFERING TEACHER NOTE: *D IS REQUIRED ONLY FOR FIRST SEGMENT 11. GU STUDENT (EMP#=222222) GN OFFERING*V TEACHER*F
80
DATABASE ACCESS METHODS
SESSION 8 DATABASE ACCESS METHODS
81
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
82
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
83
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=…………….
84
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
85
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=…………….
86
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
87
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 …….
88
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 …….
89
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
90
SESSION 9 MULTIPLE PROCESSING
91
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
92
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
93
MULTIPLE PROCESSING EXAMPLE Continued ...
CALLS GN SEGMENTB, GN SEGMENTC, GN SEGMENTB, GN SEGMENTC A1 A2 C13 B13 B12 C12 B11 C11 C22 B22 B21 C21
94
SESSION 10 SECONDARY INDEXING
95
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
96
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
97
SECONDARY INDEXING Continued ... Indexed Database Secondary Index DB
Prefix | Data Customer Pointer Invoice No Index pointer segment Index Target Segment Ship-to Index Source Segment Buyer Receivable Payment Adjustment Line Item
98
SECONDARY DATA STRUCTURE
Continued ... SECONDARY INDEXING SECONDARY DATA STRUCTURE Receivable Ship-to Payment Adjustment Line Item Customer Buyer
99
SECONDARY INDEXING Indexed Database Secondary Index DB Continued ...
Prefix | Data Customer Pointer Invoice No Index pointer segment Index Target Segment Ship-to Index Source Segment Buyer Receivable Payment Adjustment Line Item
100
SECONDARY INDEXING Continued ... COURSE COURSE# TITLE DESCRIPN PREREQ
OFFERING COURSE# TITLE DATE LOCATION FORMAT TEACHER STUDENT EMPNUM NAME EMPNUM NAME GRADE
101
SECONDARY INDEXING Continued ...
INDEXING THE ROOT ON A FIELD NOT THE SEQUENCE FIELD MAINDBD MACRO DBD NAME=EDUCPDBD SEGM NAME=COURSE,BYTES=256 FIELD NAME=(COURSE#,SEQ),BYTE3,START=1 FIELD NAME=TITLE,BYTES=33,START=4 LCHILD NAME=(TPTR,TXDBD),POINTER=INDX XDFLD NAME=XTITLE,SRCH=TITLE INDEX DBD MACRO DBD NAME=TXDBD,ACCESS=INDEX SEGM NAME=TPTR,BYTES=33 FIELD NAME=(TITLE,SEQ),BYTES=33,START=1 LCHILD NAME=(COURSE,EDUCPDBD),INDEX=XTITLE 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’)
102
SECONDARY INDEXING Continued ...
WHAT HAPPENS IF “PROCSEQ=TXDBD” IS NOT USED? DL/I BY DEFAULT USES PRIMARY PROCESSING SEQUENCE
103
SECONDARY INDEXING Continued ...
INDEXING THE ROOT ON A FIELD IN THE DEPENDENT MAINDBD MACRO DBD NAME=EDUCPDBD SEGM NAME=COURSE,BYTES=256 FIELD NAME=(COURSE#,SEQ),BYTE3,START=1 FIELD NAME=TITLE,BYTES=33,START=4 LCHILD NAME=(LPTR,LXDBD),POINTER=INDX XDFLD NAME=XLOC,SRCH=LOCATION,SEGMENT=OFFERING INDEX DBD MACRO DBD NAME=LXDBD,ACCESS=INDEX SEGM NAME=LPTR,BYTES=.. FIELD NAME=(LOCATION,SEQ),BYTES=…. LCHILD NAME=(COURSE,EDUCPDBD),INDEX=XLOC SYNTAX: GU COURSE (XLOC=‘CHENNAI’)
104
LOGICAL RELATIONSHIPS
SESSION 11 LOGICAL RELATIONSHIPS
105
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
106
LOGICAL RELATIONSHIPS
Continued ... LOGICAL RELATIONSHIPS ORDER Database Logical Parent of DETAIL PART Database Physical Parent of DETAIL PART ORDER Logical Relationship STOCK DETAIL SHIPMENT Logical Children of PART Physical Children of ORDER
107
LOGICAL RELATIONSHIPS
Continued ... LOGICAL RELATIONSHIPS PART /ORDER Logical Database ORDER/PART Logical Database PART ORDER STOCK DETAIL ORDER DETAIL PART SHIPMENT SHIPMENT STOCK
108
SESSION 12 DB RECOVERY / RESTART
109
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
110
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
111
DATABASE RECOVERY UTILITIES FOR RECOVERY Continued ... DFSUDMP0:
DATABASE IMAGE COPY UTILITY FOR CREATION OF IMAGE COPIES OF DATABASES DFSUCUM0: DATABASE CHANGE ACCUMULATION UTILITY FOR ACCUMULATION OF DATABASE CHANGES FROM DL/I LOG TAPES SINCE THE LAST COMPLETE IMAGE COPY 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: DATABASE BACK OUT UTILITY FOR REMOVAL OF CHANGES MADE TO DATABASES BY A SPECIFIC APPLICATION PROGRAM
112
DATABASE RECOVERY DATABASE RECOVERY CONTROL (DBRC) Continued ...
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.
113
DATABASE RECOVERY FORWARD RECOVERY Continued ...
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
114
DATABASE RECOVERY BACKWARD RECOVERY Continued ...
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
115
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) //*
116
DATABASE RECOVERY CHECKPOINT CALL (CHKP) Continued ...
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…
117
IO-PCB, IO-AREA-LEN, IO-AREA,
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…
118
DATABASE RECOVERY FACTORS TO BE CONSIDERED FOR CHKP & XRST CALLS
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
119
EFFICIENT PROGRAMMING TIPS
SESSION 13 EFFICIENT PROGRAMMING TIPS
120
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
121
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
122
SESSION 14 COMMON IMS ABENDS
123
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
124
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
125
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
126
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.
127
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
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.