Beruflich Dokumente
Kultur Dokumente
SESSION 1 SESSION 2 SESSION 3 SESSION 4 SESSION 5 SESSION 6 SESSION 7 SESSION 8 SESSION 9 SESSION 10 SESSION 11 SESSION 12 SESSION 13 SESSION 14
IMS GENERAL CONCEPTS DL/I CONTROL BLOCKS SEGMENT SEARCH ARGUMENTS (SSAs) COBOL BASICS FOR IMS DL/I CALLS COMMAND CODES DL/I CALLS EXERCISE DATABASE ACCESS METHODS MULTIPLE PROCESSING SECONDARY INDEXING LOGICAL RELATIONSHIP DB RECOVERY/RESTART EFFICIENT PROGRAMMING TIPS COMMON IMS ABENDS
2
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
Continued ...
-- Level 1
EACH BOX IN THE HIERARCHY REPRESENTS A SEGMENT ROOT SEGMENT WILL BE ON TOP EACH SEGMENT (EXCEPT ROOT SEGMENT)
SEGMENT OCCURRNCES
B3 B1 B2 C1 D1
TWIN SEGMENTS
DEPENDENT SEGMENTS
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
Continued ...
Continued ...
A SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS DIRECTLY UNDER IT A SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER SEGMENT ALL SEGMENTS UNDER A PARTICULAR SEGMENT OF THE DATABASE ALL OCCURRENCES (2 OR MORE) OF A SEGMENT TYPE UNDER A PARENT OCCURRENCES OF DIFFERENT SEGMENT TYPES UNDER A PARENT
8
CHILD
DEPENDENT
TWIN SIBLINGS
Continued ...
2 BRANCH
3 ORDER
4 ITEM
5 PAYMENT
1. WHICH SEGMENTS ARE DEPENDENT ON SEGMENT 3? 2. WHICH SEGMENTS ARE CHILD SEGMENTS OF SEGMENT 1? 3. WHICH SEGMENTS ARE DEPENDENT SEGMENTS OF SEGMENT 1? 4. HOW MANY LEVELS?
Continued ...
ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT SEGMENTS
10
Continued ...
11
Continued ...
12
Continued ...
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
DL/I
DC
Database
Terminal
13
Continued ...
ONLINE
BATCH
MPP
BMP
DL/I
14
Continued ...
MPP (MESSAGE PROCESSING PROGRAM) TRUE ONLINE PROCESSING TRANSACTION ARE ENTERED AT TERMINAL AND STORED IN MESSAGE QUEUE DATABASES ACCESSED MUST BE ONLINE
15
Continued ...
1. TRANSACTION ORIENTED: CAN READ & WRITE TO ONLINE MESSAGE QUEUES CAN PROCESS ONLINE FILES AND DATABASES
2. BATCH ORIENTED: CAN ONLY READ MESSAGE QUEUES ACCESS ONLINE DATABASES IN BATCH MODE
16
17
DATABASE DESCRIPTION (DBD) DEFINES THE LAYOUT OF THE DATABASE DATABASE ADMINISTRATOR DEFINES LAYOUT USING DBDGEN MACRO
PROGRAM SPECIFICATION BLOCK (PSB) DEFINES THE PROGRAMS VIEW OF THE DATABASE AND APPLICATION PROGRAMS ACCESS AUTHORITY TO DATABASE DATABASE ADMINISTRATOR / PROGRAMMER DEFINES THIS USING PSBGEN MACRO
18
Continued ...
19
Continued ...
20
SEGM NAME=ORDER,PARENT=SUPPLIER,BYTES=52 FIELD NAME=(ORDRNUMB,SEQ,U),BYTES=6,START=1,TYPE=C FIELD NAME=BALAMT,BYTES=4,START=49,TYPE=P FIELD NAME=ORDRAMT,BYTES=4,START=45,TYPE=P SEGM NAME=ITEM,PARENT=ORDER,BYTES=15 FIELD NAME=(ITEMNUMB,SEQ,U),BYTES=4,START=1,TYPE=C SEGM NAME=PAYMENT,PARENT=ORDER,BYTES=30 FIELD NAME=(CHEQNUMB,SEQ,U),BYTES=6,START=1,TYPE=C FIELD NAME=AMOUNT,BYTES=4,START=7,TYPE=P FIELD NAME=AMOUNT,BYTES=4,START=7,TYPE=P DBDGEN FINISH END
21
Continued ...
TYPE C P Z H F
DESCRIPTION Character (Default) Packed Decimal Zoned Decimal Half Word Binary Full Word Binary
22
Continued ...
23
Continued ...
24
Continued ...
PORTION OF DATABASE THAT THE PROGRAM PROCESSES IS CALLED APPLICATION DATA STRUCTURE DATABASE 1 SUPPLIER
2 BRANCH
3 ORDER
4 ITEM
5 PAYMENT
25
PCBs
1 SUPPLIER 1 SUPPLIER
2 BRANCH
3 ORDER 2 BRANCH
4 ITEM
5 PAYMENT
1 SUPPLIER
1 SUPPLIER
3 ORDER
3 ORDER
4 ITEM
5 PAYMENT
26
Continued ...
PRINT ON NOGEN PCB TYPE=TP,MODIFY=YES,EXPRESS=YES PCB TYPE=DB,DBDNAME=SUPLRDBD,KEYLEN=18,PROCOPT=AP SENSEG NAME=SUPPLIER,PARENT=0 SENSEG NAME=BRANCH,PARENT=SUPPLIER SENSEG NAME=ORDER,PARENT=SUPPLIER SENSEG NAME=ITEM,PARENT=ORDER SENSEG NAME=PAYMENT,PARENT=ORDER PCB TYPE=DB,DBDNAME=SUPLRDBD,KEYLEN=18,PROCOPT=AP SENSEG NAME=SUPPLIER,PARENT=0 SENSEG NAME=BRANCH,PARENT=SUPPLIER
27
PCB TYPE=DB, DBDNAME=SUPLRDBD,KEYLEN=16,PROCOPT=AP SENSEG NAME=SUPPLIER,PARENT=0 SENSEG NAME=ORDER,PARENT=SUPPLIER SENSEG NAME=ITEM,PARENT=ORDER PCB TYPE=DB, DBDNAME=SUPLRDBD,KEYLEN=18,PROCOPT=AP SENSEG NAME=SUPPLIER,PARENT=0 SENSEG NAME=ORDER,PARENT=SUPPLIER SENSEG NAME=PAYMENT,PARENT=ORDER PSBGEN PSBNAME=SUPLRPSB,LANG=COBOL END
28
Continued ...
29
Continued ...
APPLICATION PROGRAM CAN HAVE MULTIPLE VIEWS OF A DATABASE BY USING SEPARATE PCBS FOR A SINGLE DATABASE PSB PCB1 PCB3 PCB2 PCB4
DBD1
DBD2
DBD3
30
Continued ...
PCB TYPE=DB,DBDNAME=SUPLRDBD,KEYLEN=16,PROCOPT=AP SENSEG NAME=SUPPLIER,PARENT=0 SENSEG NAME=ORDER,PARENT=SUPPLIER SENSEG NAME=ITEM,PARENT=ORDER PSBGEN PSBNAME=SUPLRPSB,LANG=COBOL 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
31
Continued ...
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
32
33
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
34
Continued ...
35
Continued ...
QUALIFIED SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE MORE EFFICIENT THAN UNQUALIFIED SSA
36
Continued ...
01 SUPPLIER-SSA. 05 FILLER PIC X(8) VALUE 'SUPPLIER'. 05 FILLER PIC XX VALUE '*-'. 05 BG-QUALIFY PIC X VALUE '('.
Blank in 9th position or * in 9th position - in position 10 and a blank in position 11
S U P P L I E R S U P P L I E R * 37
Continued ...
PIC X(8) VALUE 'SUPPLIER'. PIC XX VALUE '*-'. PIC X VALUE '('. PIC X(8) VALUE 'SUPLCODE'. PIC XX VALUE '= '. PIC X(6) VALUE SPACES. PIC X VALUE ')'.
..
SUPPLIER*-(SUPLCODE= S00001)
38
PROCEDURE DIVISION. .. MOVE S00001 TO SUPLCODE. CALL 'CBLTDLI' USING CALL-FUNC SUPPLIER-PCB SUPPLIER-IO-AREA SUPPLIER-SSA
equivalent to
MOVE S00001 TO SUPLCODE. CALL 'CBLTDLI' USING CALL-FUNC SUPPLIER-PCB SUPPLIER-IO-AREA SUPPLIER*-(SUPLCODE= S00001)
39
Continued ...
OPERATOR Equal to Not Equal to Less than Less than or Equal to Greater than Greater than or Equal to
SYMBOLS EQ, = , = NE, =, = LT, < , < LE, <=, =< GT, > , > GE, >=, =>
40
Continued ...
NOTE: Detailed description of Command codes will be covered in Session COMMAND CODES
41
42
IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION FILE SECTION WORKING STORAGE SECTION LINKAGE SECTION PROCEDURE DIVISION
43
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
44
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
45
Continued ...
01 PCB-PAYMENT. 05 DBN-PAYMENT 05 LEV-PAYMENT 05 STC-PAYMENT 05 PRO-PAYMENT 05 RES-PAYMENT 05 SGN-PAYMENT 05 LKF-PAYMENT 05 NOS-PAYMENT 05 KFB-PAYMENT
PIC X(8). PIC XX. PIC XX. PIC X(4). PIC S9(5) PIC X(8). PIC S9(5) PIC S9(5) PIC X(100).
Continued ...
THE SEQUENCE IN WHICH PCB MASKS ARE DEFINED IN LINKAGE SECTION NEED NOT BE SAME AS THAT IN PSBGEN MACRO
47
Continued ...
ENTRY DLITCBL USING SUPPLIER-PCB, ORDER-PCB,. <= Sequence should match that of PSB Macro :::::::::::: CALL CBLTDLI USING CALL-FUNC SUPPLIER-PCB PAYMENT-IO-AREA SUPPLIER-SSA ORDER-SSA PAYMENT-SSA :::::::::: GOBACK.
48
Continued ...
RUN JCL
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
DL/I
IMS DATABASE
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
DLITCBL
CBLTDLI
GOBACK
APPLICATION PROGRAM
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 49
50
DL/I CALLS
DL/I RETRIEVAL CALLS
ONE OF THE FOLLOWING FUNCTIONS WILL BE USED IN A RETRIEVAL DL/I CALL GU GN GNP - GET UNIQUE - GET NEXT - 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 GHN - GET HOLD UNIQUE - GET HOLD NEXT
DL/I CALLS
GET UNIQUE
CALL CBLTDLI USING
Continued ...
GU , PCB-MASK, SEGMENT-IO-AREA (SUPPLIER-SSA)--------------->SUPPLIER*-(SUPLCODE= S00001) (ORDER-SSA)------------------->ORDER *-(ORDRNUMB=O00001) (ITEM-SSA)----------------------->ITEM *-(ITEMNUMB=I003) AFTER THE CALL SEGMENTD WITH ITEMNUMB=I003 WILL BE IN SEGMENT-IO-AREA
S00001
SUPPLIER
BRANCH
HABIBULLAH CATHEDRAL O00001
ORDER PAYMENT
ITEM
I002 I001
I003 C12345
C12346
52
DL/I CALLS
Continued ...
53
DL/I CALLS
GET NEXT
RETREIVAL SEQUENCE TOP TO BOTTOM FRONT TO BACK LEFT TO RIGHT
7 2 11 1
Continued ...
AKEY
EKEY
BKEY
GA
4 GK
6 5 9
10
CKEY
DKEY
FKEY
54
DL/I CALLS
CALL CBLTDLI USING GN , SUPPLIER-PCB, ITEM-IO-AREA, (SUPPLIER-SSA)--------------->SUPPLIER*-(SUPLCODE= S00001) (ORDER-SSA)------------------->ORDER *-(ORDRNUMB=O00001) (ITEM-SSA)----------------------->ITEM *-(ITEMNUMB=I003)
Continued ...
AFTER THE CALL SEGMENTE WITH ITEMNUMB= I003 WILL BE IN PROGRAM I/O AREA
S00001
SUPPLIER
BRANCH
HABIBULLAH CATHEDRAL O00001
ORDER PAYMENT
ITEM
I002 I001
I003 C12345
C12346
EXERCISE: WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER ITEM=I003 IS
RETRIEVED 55
DL/I CALLS
GET NEXT WITHIN PARENT
CALL CBLTDLI USING GU , SUPPLIER-PCB, SEGMENT-IO-AREA, SUPPLIER*-(SUPLCODE=S00001) ORDER *-(ORDRNUMB=O00001)
Continued ...
CALL CBLTDLI USING GNP , SUPPLIER-PCB, SEGMENT-IO-AREA AFTER THE CALL ITEM WITH ITEMNUMB=I001 WILL BE RETRIEVED
S00001
SUPPLIER
BRANCH
HABIBULLAH CATHEDRAL O00002 O00001
ORDER
ITEM
I001
I002
C12345
C12346
PAYMENT
56
DL/I CALLS
Continued ...
WHAT WILL BE THE OUTPUT IF GNP IS DONE 4 MORE TIMES IN PREVIOUS EXAMPLE?
57
DL/I CALLS
PATH CALLS EXERCISE
CALL CBLTDLI USING GU ,SUPPLIER-PCB, WS-SEG-IO-AREA, SUPPLIER*D(SUPLCODE=S00001) ORDER *-(ORDRNUMB= O00001)
Continued ...
WHAT WILL BE THE RESULT AFTER SUCCESSFUL COMPLETION OF THE ABOVE CALL?
S00001
SUPPLIER
BRANCH
HABIBULLAH CATHEDRAL O00002 O00001
ORDER
ITEM
I001
I002
C12345
C12346
PAYMENT
58
DL/I CALLS
GET HOLD CALLS (GHU/GHN/GHNP)
FUNCTIONS IDENTICAL TO GU/GN/GNP
Continued ...
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
59
DL/I CALLS
DELETE/REPLACE CALLS
Continued ...
MUST HAVE BEEN OBTAINED WITH A GET HOLD CALL (GHU, GHN, GHNP)
60
DL/I CALLS
DELETE CALL
CALL CBLTDLI USING GHU ,SUPPLIER-PCB, SEGMENT-IO-AREA SUPPLIER*-(SUPLCODE=S00001) ORDER *-(ORDRNUMB=O00001)
SUPPLIER
Continued ...
BRANCH
HABIBULLAH CATHEDRAL O00002 O00001
ORDER
ITEM
I001
I002
C12346 C12345
PAYMENT
DL/I CALLS
REPLACE (REPL)
UPDATE CONTENTS OF A SEGMENT KEY FIELD SHOULD 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
Continued ...
62
DL/I CALLS
CALL CBLTDLI USING GHU ,SUPPLIER-PCB, ITEM-IO-AREA, SUPPLIER*-(SUPLCODE=S00001) ORDER *-(ORDRNUMB=O00001) ITEM *-(ITEMNUMB =I001) Change contents of ITEM-IO-AREA CALL CBLTDLI USING REPL, SUPPLIER-PCB, WS-IO-AREA WILL RESULT IN UPDATE OF I001
S00001 SUPPLIER
Continued ...
I001
I002
ITEM
63
DL/I CALLS
INSERT (ISRT)
TWO MODES OF INSERT LOAD MODE UPDATE MODE LOAD MODE: MODE - FOR INITIAL LOADING OF DATABASE - ADD TO EXISTING DATABASE
Continued ...
FOR LOAD MODE PROCOPT = L or LS MUST BE SPECIFIED IN PSB PROCOPT=L LOADS DATABASE BUT NOT NECESSARILY IN SEQUENTIAL ORDER
64
DL/I CALLS
INSERT (ISRT)
UPDATE MODE: MODE
Continued ...
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
65
DL/I CALLS
MOVE DATA FOR ITEM INTO ITEM-IO-AREA WITH ITEMNUMB=I003 CALL CBLTDLI USING ISRT,SUPPLIER-PCB, ITEM-IO-AREA, SUPPLIER*-(SUPLCODE=S00001) ORDER ITEM
S00001
Continued ...
*-(ORDRNUMB=O00001) *- ITEMNUMB=IOO3)
SUPPLIER
ITEM 66
DL/I CALLS
SOME COMMON STATUS CODES
STATUS CODE SPACES AC AI DESCRIPTION SUCCESSFUL CALL CALL HAS SSA WITH A HIERARCHICAL ERROR ERROR WHILE OPENING DATABASE. COMMON CAUSE IS LOADING A DATABASE WHICH IS NOT EMPTY OR DO OTHER THAN LOAD PROCESSING ON EMPTY DATABASE CALL SPECIFIES AN INVALID SSA FIELD NAMED IN A QUALIFIED SSA IS NOT CORRECT SEQUENCE FIELD IS CHANGED CALL IS NOT PRECEDED BY A SUCCESSFUL GET HOLD CALL A HIGHER LEVEL SEGMENT IS RETRIEVED IN SEQUENTIAL PROCESSING CALL TYPES ALL CALLS
Continued ...
AJ AK DA DJ GA
ALL CALLS ALL GET CALLS ISRT REPL DLET REPL GN, GNP
67
DL/I CALLS
SOME COMMON STATUS CODES
STATUS CODE GB GE GK GP II DESCRIPTION END OF DATA BASE WAS REACHED DURING SEQUENTIAL RETRIEVAL SPECIFIED SEGMENT NOT FOUND A SEGMENT OF DIFFERENT TYPE, BUT AT THE SAME LEVEL IS RETRIEVED DURING SEQUENTIAL PROCESSING PROPER PARENTAGE IS NOT IN EFFECT DUPLICATE INSERT CALL TYPES GN
Continued ...
68
69
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
S U P P L I E R *
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
70
COMMAND CODES
SOME COMMAND CODES
Continued ...
DESCRIPTION FIRST OCCURRENCE OF SEGMENT TYPE LAST OCCURRENCE OF SEGMENT TYPE MAINTAIN CURRENT POSITION AT THIS LEVEL MAINTAIN CURRENT POSITION AT THIS AND HIGHER LEVELS DO NOT REPLACE THIS SEGMENT USE A CONCATENATED KEY ESTABLISH PARENTAGE AT THIS LEVEL NULL/IGNORE
71
COMMAND CODES
COMMAND CODE D
REQUESTS DL/I TO USE PATH CALLS
Continued ...
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
72
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
73
COMMAND CODES
PATH CALLS EXAMPLE
CALL CBLTDLI USING GU , SUPPLIER-PCB, WS-SEG-IO-AREA, SUPPLIER*D(SUPLCODE=S00001) ORDER ITEM *D(ORDRNUMB=O00001) *-(ITEMNUMB=I002)
Continued ...
AFTER THE CALL SEGMENTS S00001, O00001 & I002 WILL BE RETURNED IN I/O AREA S00001 SUPPLIER
BRANCH HABIBULLAH CATHEDRAL O00002 O00001 ORDER
ITEM 74
COMMAND CODES
COMMAND CODE F
CALL PROCESSES FIRST OCCURRENCE OF THE SEGMENT TYPE EXAMPLE:
Continued ...
SEGMENT I001(ITEM) CAN BE RETRIEVED AFTER C12346(PAYMENT) BY USING CALL CBLTDLI USING GNP SUPPLIER-PCB, ITEM-IO-AREA, ITEM *F
O0001
ORDER
C12346
ITEM
PAYMENT
75
COMMAND CODES
COMMAND CODE L
CALL PROCESSES LAST OCCURRENCE OF THE SEGMENT TYPE EXAMPLE: SEGMENT CAN BE RETRIEVED AFTER SEGMENT 2 BY USING CALL CBLTDLI USING GNP SUPPLIER-PCB, PAYMENT-IO-AREA, PAYMENT*L
Continued ...
O00001
ORDER
C12346
ITEM
PAYMENT
76
COMMAND CODES
COMMAND CODE N
USED IN REPL CALLS FOLLOWING PATH CALLS
Continued ...
IF ANY SEGMENT RETRIEVED DURING PATH CALL NEED NOT BE REPLACED COMMAND CODE N IS USED IN SSA OF THAT SEGMENT
77
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 SUPPLIER-PCB, ORDER-IO-AREA SUPPLIER*P(SUPLCODE=S00001) ORDER *-(ORDRNUMB=O00001) WILL RETRIEVE ORDER SEGMENT TO I/O AREA BUT PARENTAGE WILL BE SET TO SUPPLIER
S00001
SUPPLIER
BRANCH
ORDER 78
79
Continued ...
80
Continued ...
81
Continued ...
6. ADD A STUDENT OCCURRENCE FOR THE COURSE IMS OFFERED ON DATE 3/26/02
82
Continued ...
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
83
SESSION 8
84
DL/I PROVIDES GSAM(Generalized Sequential Access Method) TO ACCESS NORMAL SEQUENTIAL DATASETS
85
Continued ...
86
Continued ...
00 -FF
00
SEGMENT DATA
Segment Identifier
HSAM DBDGEN
DBD NAME=EXHSAM,ACCESS=HSAM
87
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
88
Continued ...
RBA
00 -FF
00
SEGMENT DATA
Segment Identifier
HISAM DBDGEN
DBD NAME=EXHISAM,ACCESS=(HISAM,VSAM)
89
Continued ...
00 -FF
00
POINTERS
SEGMENT DATA
Segment Identifier 90
Continued ...
91
Continued ...
Continued ...
93
SESSION 9
MULTIPLE PROCESSING
94
MULTIPLE PROCESSING
MULTIPLE PROCESSING MEANS A PROGRAM CAN HAVE MORE THAN ONE POSITION IN A SINGLE DATABASE AT THE SAME TIME
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
95
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
96
MULTIPLE PROCESSING
EXAMPLE
CALLS GN SEGMENTB, GN SEGMENTC, GN SEGMENTB, GN SEGMENTC
A1 A2
Continued ...
C13
C22
97
SESSION 10
SECONDARY INDEXING
98
SECONDARY INDEXING
ALLOWS YOU TO ACCESS DB IN A SEQUENCE OTHER THAN PRIMARY SEQUENCE
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
99
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
100
SECONDARY INDEXING
Continued ...
Indexed Database
Customer
Payment
Adjustment
SECONDARY INDEXING
SECONDARY DATA STRUCTURE
Continued ...
Receivable
Ship-to
Payment
Adjustment
Line Item
Customer
Buyer
102
SECONDARY INDEXING
Continued ...
Indexed Database
Customer
Secondary Index DB
Prefix | Data Index Target Segment
Pointer Invoice No
Ship-to
Payment
Adjustment
SECONDARY INDEXING
COURSE COURSE# TITLE DESCRIPN
Continued ...
104
SECONDARY INDEXING
INDEXING THE ROOT ON A FIELD NOT THE SEQUENCE FIELD
MAINDBD MACRO
DBD SEGM FIELD FIELD LCHILD XDFLD NAME=EDUCPDBD NAME=COURSE,BYTES=256 NAME=(COURSE#,SEQ),BYTE3,START=1 NAME=TITLE,BYTES=33,START=4 NAME=(TPTR,TXDBD),POINTER=INDX NAME=XTITLE,SRCH=TITLE
Continued ...
PSB MACRO
PCB SENSEG SENSEG SENSEG TYPE=DB,DBDNAME=EDUCPDBD,KEYLEN=15 PROCOPT=G,PROCSEQ=TXDBD NAME=COURSE NAME=OFFERING,PARENT=COURSE NAME=STUDENT,PARENT=OFFERING
SYNTAX:
GU
COURSE (XTITLE=DYNAMICS)
105
SECONDARY INDEXING
Continued ...
WHAT HAPPENS IF PROCSEQ=TXDBD IS NOT USED? DL/I BY DEFAULT USES PRIMARY PROCESSING SEQUENCE
106
SECONDARY INDEXING
INDEXING THE ROOT ON A FIELD IN THE DEPENDENT
MAINDBD MACRO
DBD SEGM FIELD FIELD LCHILD XDFLD NAME=EDUCPDBD NAME=COURSE,BYTES=256 NAME=(COURSE#,SEQ),BYTE3,START=1 NAME=TITLE,BYTES=33,START=4 NAME=(LPTR,LXDBD),POINTER=INDX NAME=XLOC,SRCH=LOCATION,SEGMENT=OFFERING
Continued ...
SYNTAX:
GU
COURSE (XLOC=CHENNAI)
107
108
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
109
LOGICAL RELATIONSHIPS
Logical Parent PART Database PART Logical Relationship STOCK DETAIL SHIPMENT of DETAIL ORDER ORDER Database
Continued ...
110
LOGICAL RELATIONSHIPS
PART /ORDER
Logical Database PART
Continued ...
ORDER/PART
Logical Database ORDER
STOCK
DETAIL
ORDER
DETAIL
PART
SHIPMENT
SHIPMENT
STOCK
111
SESSION 12
DB RECOVERY / RESTART
112
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
113
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
114
DATABASE RECOVERY
UTILITIES FOR RECOVERY
DFSUDMP0: DFSUDMP0 DATABASE IMAGE COPY UTILITY FOR CREATION OF IMAGE COPIES OF DATABASES
Continued ...
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
115
DATABASE RECOVERY
Continued ...
FORWARD RECOVERY
RESTORE MOST RECENT IMAGE COPY DATASET CHANGES MADE TO DATABASE SINCE THE LAST IMAGE COPY ARE APPLIED ON THE RESTORED DATABASE BY USING CHANGE ACCUMULATION DATASETS LOG DATASETS
116
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 LOG DATASETS
117
DATABASE RECOVERY
CHECKPOINT CALL (CHKP)
CHECKPOINT RESTART IS USED DURING BACKWARD RECOVERY
Continued ...
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
118
DATABASE RECOVERY
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
Continued ...
119
DATABASE RECOVERY
FACTORS TO BE CONSIDERED FOR CHKP & XRST CALLS
Continued ...
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
120
SESSION 13
121
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
122
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
123
SESSION 14
124
125
126
127
128
129