Beruflich Dokumente
Kultur Dokumente
TERMINOLOGY
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 is the smallest information that dl/I can fetch Segment occurrence is a particular instance of a segment type
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
TYPES OF SEGMENTS
ROOT PARENT A SEGMENT WITHOUT PARENT A SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS DIRECTLY UNDER IT A SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER CHILD 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
DEPENDENT
TWIN
SIBLINGS
DATABASE RECORD
ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT SEGMENTS
IMS ENVIRONMENT
DL/I FORMS BRIDGE BETWEEN APPLICATION PROGRAM AND IMS DATABASE DB PCB interface
App Prog
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
IMS ENVIRONMENT
MODES OF PROCESSING BATCH DL/I MODE MPP MODE BMP MODE
ONLINE
BATCH
MPP
BMP
DL/I
IMS ENVIRONMENT
BATCH DL/I TRUE BATCH PROCESSING NO DATA COMMUNICATION SERVICES ARE USED DATABASES ACCESSED MUST BE OFFLINE
MPP (MESSAGE PROCESSING PROGRAM) TRUE ONLINE PROCESSING TRANSACTION ARE ENTERED AT TERMINAL AND STORED IN MESSAGE QUEUE DATABASES ACCESSED MUST BE ONLINE
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
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
DESCRIPTION SPECIFIES DATABASE NAME, ACCESS METHOD SPECIFIES DD NAME TO BE USED IN JCL, DISK TYPE SPECIFIES SEGMENT NAME,SEGMENT LENGTH, PARENT SPECIFIES FIELD NAME, LENGTH, STARTING POSITION IDENTIFIES A FIELD AS KEY OR SEARCH FIELD
TYPE C P
Z
H F
Zoned Decimal
Half Word Binary Full Word Binary
S9
9(4) COMP 9(8) COMP
NOGEN
PCB
TYPE=DB,DBDNAME=VENDOR,KEYLEN=15,PROCOPT=LS
END
KEYLEN IS THE LENGTH OF CONCATENATED KEY
G
I R D A L LS K O P
Get or Read
Insert
Replace
Delete All Options (G, I, R, D) Initial Load Sequential Initial Load Access only Key of segment Used with G to Indicate that Hold is not allowed Path Calls
PCB3
PCB4
DBD1
DBD2
DBD3
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
QUALIFIED SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE MORE EFFICIENT THAN UNQUALIFIED SSA
..
01 HISTORY-SSA. 05 05 SEGMENT-NAME PIC X(8) VALUE HISTORY . FILLER PIC X(1) VALUE SPACE.
H I S T O R Y
H I S T O R Y * -
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, >=, =>
SSA
PCB MASKS
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
THE SEQUENCE IN WHICH PCB MASKS ARE DEFINED IN LINKAGE SECTION NEED NOT BE SAME AS THAT IN PSBGEN MACRO
PROCEDURE DIVISION. ENTRY DLITCBL USING DB-PCB-1, DB-PCB-2. <= Sequence should match that of :::::::::::: Macro PSB
::::::::::::
CALL CBLTDLI USING WS-PARM-COUNT, WS-FUNCTION-CODE, DB-PCB-MASK, <= Optional
IO-AREA,
SSA-1, SSA-2, SSA-3, . :::::::::: ::::::::::
GOBACK.
RUN JCL
DL/I
IMS DATABASE
DLITCBL
GOBACK
CBLTDLI
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
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
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
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 AKEY 1
EKEY
7 2
11
BKEY
6 4 3 5 9 10
CKEY
DKEY
FKEY
DL/I CALLS
GET NEXT
RETREIVAL SEQUENCE
TOP TO BOTTOM FRONT TO BACK LEFT TO RIGHT
11 1
AKEY
7 2
EKEY
BKEY
GA
6 4 3 GK 5 9 10
CKEY
DKEY
FKEY
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
AKEY
7 2
11
EKEY
BKEY
6 4 3 5 9 10
CKEY
DKEY
FKEY
DL/I CALLS
GET NEXT WITHIN PARENT
CALL CBLTDLI USING GN , LS-PCB-MASK, SEGMENT-IO-AREA, SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
CALL CBLTDLI USING GNP , LS-PCB-MASK, SEGMENT-IO-AREA AFTER THE CALL SEGMENTC WITH CKEY=3 WILL BE IN SEGMENT-IO-AREA
1
AKEY
7 2
11
EKEY
BKEY
6
4 3 5 9
10
CKEY
DKEY
FKEY
DL/I CALLS
GET HOLD CALLS (GHU/GHN/GHNP)
FUNCTIONS IDENTICAL TO GU/GN/GNP
DL/I CALLS
DELETE/REPLACE CALLS
MUST HAVE BEEN OBTAINED WITH A GET HOLD CALL (GHU, GHN, GHNP)
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
7 2
11
EKEY
BKEY
6
4 3 5 9
10
CKEY
DKEY
DL/I CALLS
REPLACE (REPL)
UPDATE CONTENTS OF A SEGMENT KEY FIELD MAY NOT BE ALTERED SSAs ARE NOT USED NORMALLY COMMAND CODES D - TO REPLACE PATH OF SEGMENTS N - TO EXCLUDE SEGMENTS FROM PATH STATUS CODES DA - TRYING TO CHANGE KEY DJ - NO PRECEDING GET HOLD CALL RX - REPLACE RULE VIOLATION
DL/I CALLS
CALL CBLTDLI USING GHU , LS-PCB-MASK, WS-IO-AREA, SEGMENTA*-(AKEY=1) SEGMENTB*-(BKEY=2) SEGMENTC*-(CKEY=3)
7 2
11
EKEY
BKEY
6
4 3 5 9
10
CKEY
DKEY
FKEY
DL/I CALLS
INSERT (ISRT)
TWO MODES OF INSERT
LOAD MODE
UPDATE MODE LOAD MODE:
PSB
PROCOPT=L LOADS DATABASE BUT NOT NECESSARILY IN SEQUENTIAL ORDER
DL/I CALLS
INSERT (ISRT)
UPDATE MODE:
DL/I CALLS
MOVE DATA FOR SEGMENTE INTO WS-SEGMENT-IO-AREA WITH EKEY=99 CALL AREA, CBLTDLI USING ISRT, LS-PCB-MASK, WS-SEGMENT-IO-
SEGMENTA*-(AKEY=1)
SEGMENTE AFTER THE CALL SEGMENTE WITH EKEY=99 IS INSERTED
1 99 7 2 11
EKEY
BKEY
6
10
CKEY
DKEY
FKEY
DL/I CALLS
SOME COMMON STATUS CODES
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 ALL GET CALLS ISRT ALL CALLS
AJ AK DA DJ GA
ALL CALLS ALL GET CALLS ISRT REPL DLET REPL GN, GNP
DL/I CALLS
SOME COMMON STATUS CODES
STATUS CODE GB
CALL TYPES GN
GE GK GP
II
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
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
PROGRAMMING TIPS
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
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
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
APPLICATION PROGRAM TRIED TO USE A DATABASE THAT WAS NOT AVAILABLE FOR ACCESS AND/OR UPDATE. DFS3303I MESSAGE ACCOMPANIES THIS ABEND
SOLUTION