Você está na página 1de 129

IMS - DB

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

SESSION 1
IMS GENERAL CONCEPTS

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

IMS GENERAL CONCEPTS

Continued ...

HIERARCHICAL STRUCTURE
ROOT SEGMENT (PARENT)

FOLLOWS INVERTED TREE STRUCTURE


A2

-- Level 1

A1

SEGMENT OCCURRNCES

EACH BOX IN THE HIERARCHY REPRESENTS


A SEGMENT
ROOT SEGMENT WILL BE ON TOP
EACH SEGMENT (EXCEPT ROOT SEGMENT)

B3
B1

B2

TWIN SEGMENTS

IS DIRECTLY DEPENDENT ON ONLY ONE


C1

D1

-- Level 2

SEGMENT

DEPENDENT SEGMENTS

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

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

IMS GENERAL CONCEPTS

Continued ...

TYPES OF SEGMENTS
ROOT
PARENT

CHILD

DEPENDENT

TWIN
SIBLINGS

A SEGMENT WITHOUT PARENT


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

IMS GENERAL CONCEPTS

Continued ...

EXERCISE - 1
1 SUPPLIER

3 ORDER

2 BRANCH

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?

IMS GENERAL CONCEPTS

Continued ...

DATABASE RECORD
ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT
SEGMENTS

10

IMS GENERAL CONCEPTS

Continued ...

EXERCISE-2

HOW MANY DATABASE RECORDS?

11

IMS GENERAL CONCEPTS

Continued ...

IMS DATABASE LIMITATIONS


IMS SUPPORTS
15 LEVELS
255 SEGMENTS
1000 FIELDS

NO LIMITATION ON NUMBER OF SEGMENT OCCURRENCES.

12

IMS GENERAL CONCEPTS

Continued ...

IMS ENVIRONMENT
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

App Prog

DB PCB
interface

I/O PCB
interface

DL/I

DC

Database

Terminal

DL/I ALLOWS SEQUENTIAL OR


RANDOM PROCESSING OF DATABASE

13

IMS GENERAL CONCEPTS

Continued ...

IMS ENVIRONMENT
MODES OF PROCESSING
BATCH DL/I MODE
MPP MODE
BMP MODE

ONLINE

MPP

BATCH

BMP

DL/I

14

IMS GENERAL CONCEPTS

Continued ...

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

15

IMS GENERAL CONCEPTS

Continued ...

IMS ENVIRONMENT
BMP (BATCH MESSAGE PROCESSING)
TWO TYPES

1. TRANSACTION ORIENTED:
CAN READ & WRITE TO ONLINE MESSAGE QUEUES
CAN PROCESS ONLINE FILES AND DATABASES

2. BATCH ORIENTED:
CAN ONLY READ MESSAGE QUEUES
ACCESS ONLINE DATABASES IN BATCH MODE

16

SESSION 2
DL/I CONTROL BLOCKS

17

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

18

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

19

DL/I CONTROL BLOCKS

Continued ...

SAMPLE DBDGEN
PRINT ON NOGEN
DBD NAME=SUPLRDBD,ACCESS=(HISAM,VSAM)
DATASET DD1=SUPPLR01,OVFLW=SUPPLR02,
DEVICE=3390,SIZE=(5120,1024)

SEGM NAME=SUPPLIER,PARENT=0,BYTES=38
FIELD NAME=(SUPLCODE,SEQ,U),BYTES=6,START=1,TYPE=C
FIELD NAME=SUPLNAME,BYTES=12,START=7,TYPE=C
SEGM NAME=BRANCH,PARENT=SUPPLIER,BYTES=38
FIELD NAME=(BRNAME,SEQ,M),BYTES=12,START=1,TYPE=C
FIELD NAME=BRLOCN,BYTES=6,START=33,TYPE=C
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

DL/I CONTROL BLOCKS

Continued ...

DATATYPES USED IN DBDGEN

TYPE

DESCRIPTION

COBOL PICTURE

Character (Default)

Packed Decimal

COMP-3

Zoned Decimal

S9

Half Word Binary

9(4) COMP

Full Word Binary

9(8) COMP

22

DL/I CONTROL BLOCKS

Continued ...

CAN WE DEFINE OVERLAPPING FIELDS?

23

DL/I CONTROL BLOCKS

Continued ...

PROGRAM SPECIFICATION BLOCK (PSB)


MADE UP OF ONE OR MORE PROGRAM COMMUNICATION BLOCKS (PCBs)
DB PCB - DEFINES PROGRAMS 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
1 SUPPLIER

2 BRANCH

3 ORDER

4 ITEM

5
PAYMENT

25

PCBs

1 SUPPLIER
1 SUPPLIER

3 ORDER

2 BRANCH

4 ITEM

1 SUPPLIER

5
PAYMENT

2 BRANCH

1 SUPPLIER

3 ORDER

4 ITEM

3 ORDER

5
PAYMENT
26

DL/I CONTROL BLOCKS

Continued ...

SAMPLE PSBGEN

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

DL/I CONTROL BLOCKS

Continued ...

PROCOPTS IN PSB DEFINES SECURITY LEVEL FOR THE PROGRAM


DESCRIPTION

PROCOPT
G

Get or Read

Insert

Replace

Delete

All Options (G, I, R, D)

Initial Load

LS

Sequential Initial Load

Access only Key of segment

Used with G to Indicate that Hold is not allowed

Path Calls
29

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

DBD1

PCB4

DBD2

DBD3

30

DL/I CONTROL BLOCKS

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

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=_____________________
SENSEG NAME=_________________,PARENT=_____________________
SENSEG NAME=_________________,PARENT=_____________________
SENSEG NAME=_________________,PARENT=_____________________
PSBGEN LANG=COBOL,PSBNAME=EMPPSBY
END
32

SESSION 3
SEGMENT SEARCH ARGUMENT

33

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

34

SEGMENT SEARCH ARGUMENT

Continued ...

WHAT IS THE SIGNIFICANCE OF MAX 15 SSA?

35

SEGMENT SEARCH ARGUMENT

Continued ...

TYPES OF SSAS
UNQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT TYPE

QUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE
MORE EFFICIENT THAN UNQUALIFIED SSA

36

SEGMENT SEARCH ARGUMENT

Continued ...

UNQUALIFIED SSA
WORKING-STORAGE-SECTION.
WORKING-STORAGE-SECTION
..

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

SEGMENT SEARCH ARGUMENT

Continued ...

QUALIFIED SSA
WORKING-STORAGE-SECTION.
WORKING-STORAGE-SECTION

01 SUPPLIER-SSA.
05 FILLER
05 FILLER
05 BG-QUALIFY
05 FILLER
05 FILLER
05 SUPLCODE
05 FILLER

PIC X(8)
PIC XX
PIC X
PIC X(8)
PIC XX
PIC X(6)
PIC X

VALUE 'SUPPLIER'.
VALUE '*-'.
VALUE '('.
VALUE 'SUPLCODE'.
VALUE '= '.
VALUE SPACES.
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

SEGMENT SEARCH ARGUMENT

Continued ...

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, >=, =>

40

SEGMENT SEARCH ARGUMENT

Continued ...

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

41

SESSION 4
COBOL BASICS FOR IMS

42

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

FUNCTION CODES

ENVIRONMENT DIVISION

I/O AREA

DATA DIVISION
FILE SECTION
WORKING STORAGE SECTION
LINKAGE SECTION

SEGMENT SEARCH ARGUMENTS


PCB MASKS

PROCEDURE DIVISION

43

COBOL BASICS FOR IMS

Continued ...

FUNCTION CODES
A FUNCTION CODE IS A 4 BYTE CODE TO TELL DL/I WHAT KIND OF CALL THE
PROGRAM IS MAKING
SOME VALID FUNCTION CODES ARE
GU
GET UNIQUE
GN
GET NEXT
GNP
GET NEXT WITHIN PARENT
GHU
GET HOLD UNIQUE
GHN
GET HOLD NEXT
GHNP
GET HOLD NEXT WITHIN PARENT
DLET
DELETE
REPL
REPLACE
ISRT
INSERT
XRST
EXTENDED RESTART
CHKP
CHECKPOINT

44

COBOL BASICS FOR IMS

Continued ...

INPUT/OUTPUT AREA
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

COBOL BASICS FOR IMS

Continued ...

THE PCB MASK


USED IN LINKAGE SECTION
LINKAGE SECTION

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).

COMP.
COMP.
COMP.
(Depends on the concatenated key)
46

COBOL BASICS FOR IMS

Continued ...

THE PCB MASK


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

47

COBOL BASICS FOR IMS

Continued ...

PROCEDURE DIVISION
PROCEDURE DIVISION.
DIVISION
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

COBOL BASICS FOR IMS

Continued ...

RUN JCL EXECUTES THE BATCH PROCESSOR


DFSRRC00 AND PASSES THE APPLICATION
PROGRAM NAME AND PSBNAME AS
PARAMETERS

RUN JCL

ENTRY DLITCBL PASSES THE PCB ADDRESS TO


THE PROGRAM

PROGRAM NAME
PSB NAME

IMS
DATABASE

CBLTDLI

GOBACK

DLITCBL

DL/I

APPLICATION
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
49

SESSION 5
DL/I CALLS

50

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


51

DL/I CALLS

Continued ...

GET UNIQUE
CALL CBLTDLI USING

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
SUPPLIER

S00001

BRANCH
HABIBULLAH
CATHEDRAL

ITEM

O00001

I002
I001

ORDER

I003

C12346

PAYMENT

C12345

EXERCISE: WRITE A GU TO RETRIEVE CHEQNUMB=C12346

52

DL/I CALLS

Continued ...

WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA?

53

DL/I CALLS

Continued ...

GET NEXT
RETREIVAL SEQUENCE
TOP TO BOTTOM
FRONT TO BACK

AKEY

LEFT TO RIGHT
EKEY

11

BKEY

GA

10

GK

CKEY

DKEY

FKEY

54

DL/I CALLS

Continued ...

CALL CBLTDLI USING

GN , SUPPLIER-PCB,
ITEM-IO-AREA,
(SUPPLIER-SSA)--------------->SUPPLIER*-(SUPLCODE= S00001)
(ORDER-SSA)------------------->ORDER *-(ORDRNUMB=O00001)
(ITEM-SSA)----------------------->ITEM
*-(ITEMNUMB=I003)
AFTER THE CALL SEGMENTE WITH ITEMNUMB= I003 WILL BE IN PROGRAM I/O
AREA
SUPPLIER

S00001

BRANCH
HABIBULLAH
CATHEDRAL

ITEM

ORDER

O00001

I002
I001

I003

C12346

PAYMENT

C12345

EXERCISE: WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER ITEM=I003 IS
RETRIEVED
55

DL/I CALLS

Continued ...

GET NEXT WITHIN PARENT


CALL CBLTDLI USING GU , SUPPLIER-PCB, SEGMENT-IO-AREA,
SUPPLIER*-(SUPLCODE=S00001)
ORDER

*-(ORDRNUMB=O00001)

CALL CBLTDLI USING GNP , SUPPLIER-PCB, SEGMENT-IO-AREA


AFTER THE CALL ITEM WITH ITEMNUMB=I001 WILL BE RETRIEVED
S00001

SUPPLIER

BRANCH
O00002

HABIBULLAH
CATHEDRAL

ITEM

I001

ORDER

O00001

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

Continued ...

PATH CALLS EXERCISE


CALL

CBLTDLI USING GU ,SUPPLIER-PCB, WS-SEG-IO-AREA,


SUPPLIER*D(SUPLCODE=S00001)
ORDER

*-(ORDRNUMB= O00001)

WHAT WILL BE THE RESULT AFTER SUCCESSFUL COMPLETION OF THE ABOVE


CALL?
S00001

SUPPLIER

BRANCH
O00002

HABIBULLAH
CATHEDRAL

ITEM

I001

ORDER

O00001

I002

C12345

C12346

PAYMENT

58

DL/I CALLS

Continued ...

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

59

DL/I CALLS

Continued ...

DELETE/REPLACE CALLS
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

60

DL/I CALLS

Continued ...

DELETE CALL
CALL CBLTDLI USING GHU ,SUPPLIER-PCB, SEGMENT-IO-AREA
SUPPLIER*-(SUPLCODE=S00001)
ORDER

*-(ORDRNUMB=O00001)

CALL CBLTDLI USING DLET, SUPPLIER-PCB


1

SUPPLIER

BRANCH
O00002

HABIBULLAH
CATHEDRAL

ORDER

O00001

PAYMENT

ITEM
I001

I002

C12346
C12345

WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SUPPLIER*D(SUPLCODE=S00001)


61

DL/I CALLS

Continued ...

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

62

DL/I CALLS

Continued ...

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

BRANCH
O00002

HABIBULLAH
CATHEDRAL

ORDER

O00001

I001

ITEM

I002

C12346
C12345
PAYMENT

63

DL/I CALLS

Continued ...

INSERT (ISRT)
TWO MODES OF INSERT
LOAD MODE

- FOR INITIAL LOADING OF DATABASE

UPDATE MODE

- ADD TO EXISTING DATABASE

LOAD MODE:
MODE
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

Continued ...

INSERT (ISRT)
UPDATE MODE:
MODE
FOR UPDATE MODE PROCOPT=I or IS MUST BE SPECIFIED IN PSB
PROCOPT=I INSERTS SEGMENTS IN SEQ OR RANDOM ORDER
PROCOPT=IS ADDS NEW SEGMENTS ONLY IN ASCENDING ORDER

COMMAND CODES
F OR L

- OVERRIDES INSERT RULE

- INSERT PATH OF SEGMENTS

65

DL/I CALLS

Continued ...

MOVE DATA FOR ITEM INTO ITEM-IO-AREA WITH ITEMNUMB=I003


CALL

CBLTDLI USING ISRT,SUPPLIER-PCB, ITEM-IO-AREA,

(SUPPLIER-SSA)

SUPPLIER*-(SUPLCODE=S00001)

(ORDER-SSA)

ORDER

*-(ORDRNUMB=O00001)

(ITEM-SSA)

ITEM

*- ITEMNUMB=IOO3)

AFTER THE CALL SEGMENTE WITH EKEY=99 IS INSERTED


S00001

SUPPLIER

BRANCH
O00002

HABIBULLAH
CATHEDRAL

ORDER

O00001

C12346
I003
I001

I002

C12345
PAYMENT

ITEM
66

DL/I CALLS

Continued ...

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

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

67

DL/I CALLS

Continued ...

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

68

SESSION 6
COMMAND CODES

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

Continued ...

SOME COMMAND CODES

COMMAND CODE

DESCRIPTION

RETRIEVE A PATH

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

Continued ...

COMMAND CODE D
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

72

COMMAND CODES

Continued ...

COMMAND CODE D
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

Continued ...

PATH CALLS EXAMPLE


CALL CBLTDLI USING GU , SUPPLIER-PCB, WS-SEG-IO-AREA,
SUPPLIER*D(SUPLCODE=S00001)
ORDER

*D(ORDRNUMB=O00001)

ITEM

*-(ITEMNUMB=I002)

AFTER THE CALL SEGMENTS S00001, O00001 & I002 WILL BE RETURNED IN I/O
AREA
S00001
SUPPLIER
BRANCH
O00002

HABIBULLAH
CATHEDRAL

ORDER

O00001

C12346
I003
I001

I002

C12345
PAYMENT

ITEM
74

COMMAND CODES

Continued ...

COMMAND CODE F
CALL PROCESSES FIRST OCCURRENCE OF THE SEGMENT TYPE
EXAMPLE:
SEGMENT I001(ITEM) CAN BE RETRIEVED AFTER C12346(PAYMENT) BY USING
CALL CBLTDLI USING GNP

SUPPLIER-PCB, ITEM-IO-AREA,
ITEM

O0001

*F

ORDER

C12346

I002
I001

C12345

ITEM

PAYMENT

75

COMMAND CODES

Continued ...

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

O00001

ORDER

C12346

I002
I001

C12345

ITEM

PAYMENT

76

COMMAND CODES

Continued ...

COMMAND CODE N
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

77

COMMAND CODES

Continued ...

COMMAND CODE P
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

O0002
CATHEDRAL

BRANCH

O00001

ORDER
78

SESSION 7
DL/I CALL EXERCISE

79

DL/I CALL EXERCISE

Continued ...

COURSE
COURSE#

TITLE

PREREQ
COURSE#

DESCRIPN

OFFERING
TITLE

DATE

TEACHER
EMPNUM

LOCATION

FORMAT

STUDENT
NAME

EMPNUM

NAME

GRADE

80

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

81

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

82

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 222222

83

SESSION 8

DATABASE ACCESS METHODS

84

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

85

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

86

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=.

87

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

88

IMS DATABASE ACCESS METHODS

Continued ...

HISAM SEGMENT STORAGE IN DATABASE


4 Byte RBA

RBA

00 -FF

Delete byte

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=.

89

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
90

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

91

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

.
92

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

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

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

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

Continued ...

EXAMPLE
CALLS

GN SEGMENTB, GN SEGMENTC, GN SEGMENTB, GN SEGMENTC


A1

A2

C13

B13
B12
B11

C12
C11
C22

B22
B21

C21

97

SESSION 10

SECONDARY INDEXING

98

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

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

Indexed Database

Continued ...

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
101

SECONDARY INDEXING

Continued ...

SECONDARY DATA STRUCTURE

Receivable

Ship-to

Customer

Payment

Adjustment

Line Item

Buyer

102

SECONDARY INDEXING

Indexed Database

Continued ...

Secondary Index DB
Prefix | Data

Customer

Index

Pointer Invoice No

Index pointer
segment

Target Segment

Ship-to

Index
Source Segment
Buyer

Receivable

Payment

Adjustment

Line Item
103

SECONDARY INDEXING

Continued ...

COURSE
COURSE#

TITLE

PREREQ
COURSE#

DESCRIPN

OFFERING
TITLE

DATE

TEACHER
EMPNUM

LOCATION

FORMAT

STUDENT
NAME

EMPNUM

NAME

GRADE

104

SECONDARY INDEXING

Continued ...

INDEXING THE ROOT ON A FIELD NOT THE SEQUENCE FIELD


MAINDBD MACRO

INDEX DBD MACRO

DBD
SEGM
FIELD
FIELD
LCHILD
XDFLD

DBD
SEGM
FIELD
LCHILD

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

NAME=TXDBD,ACCESS=INDEX
NAME=TPTR,BYTES=33
NAME=(TITLE,SEQ),BYTES=33,START=1
NAME=(COURSE,EDUCPDBD),INDEX=XTITLE

PSB MACRO
PCB

SYNTAX:

SENSEG
SENSEG
SENSEG

TYPE=DB,DBDNAME=EDUCPDBD,KEYLEN=15
PROCOPT=G,PROCSEQ=TXDBD
NAME=COURSE
NAME=OFFERING,PARENT=COURSE
NAME=STUDENT,PARENT=OFFERING

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

Continued ...

INDEXING THE ROOT ON A FIELD IN THE DEPENDENT


MAINDBD MACRO

INDEX DBD MACRO

DBD
SEGM
FIELD
FIELD
LCHILD
XDFLD

DBD
SEGM
FIELD
LCHILD

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

SYNTAX:

GU

NAME=LXDBD,ACCESS=INDEX
NAME=LPTR,BYTES=..
NAME=(LOCATION,SEQ),BYTES=.
NAME=(COURSE,EDUCPDBD),INDEX=XLOC

COURSE (XLOC=CHENNAI)
107

SESSION 11
LOGICAL RELATIONSHIPS

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

Continued ...

ORDER Database

of DETAIL

Physical Parent

PART

ORDER

of DETAIL

Logical Relationship
STOCK

DETAIL

SHIPMENT

Logical Children

Physical Children

of PART

of ORDER

110

LOGICAL RELATIONSHIPS
PART /ORDER

ORDER/PART

Logical Database

Logical Database

PART

STOCK

DETAIL

SHIPMENT

Continued ...

ORDER

ORDER

DETAIL

PART

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

Continued ...

UTILITIES FOR RECOVERY


DFSUDMP0:
DFSUDMP0
DATABASE IMAGE COPY UTILITY FOR CREATION OF IMAGE COPIES OF
DATABASES
DFSUCUM0:
DFSUCUM0
DATABASE CHANGE ACCUMULATION UTILITY FOR ACCUMULATION OF
DATABASE CHANGES FROM DL/I LOG TAPES SINCE THE LAST COMPLETE
IMAGE COPY
DFSURDB0:
DFSURDB0
DATABASE RECOVERY UTILITY FOR RESTORATION OF THE DATABASE,
USING A PRIOR DATABASE IMAGE COPY AND THE ACCUMULATED CHANGES
FROM DL/I LOG TAPES
DFSBBO00:
DFSBBO00
DATABASE BACK OUT UTILITY FOR REMOVAL OF CHANGES MADE TO
DATABASES BY A SPECIFIC APPLICATION PROGRAM
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

Continued ...

BACKWARD RECOVERY
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

Continued ...

CHECKPOINT CALL (CHKP)


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
118

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

119

DATABASE RECOVERY

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

120

SESSION 13

EFFICIENT PROGRAMMING TIPS

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

COMMON IMS ABENDS

124

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

125

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

126

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

127

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.

128

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

129

Você também pode gostar