Вы находитесь на странице: 1из 111

IMS Data Base Programming (IMS/DB)

1 DL/I Concepts
 Objectives

- Student will

Be able to use DL/I terminology to describe a hierarchical data base Know how the COBOL structure for a data base segment is described

1 DL/I Concepts
 IMS/VS

Information Management System / Virtual Storage


 Data

base management system that supports the application program while processing data bases in batch or on-line environments.

1 DL/I Concepts
 Data

Base Advantages

Increased data independence by application programs Reduced data redundancy Improved data security

1 DL/I Concepts
 The

Hierarchical Structure
PART NO

SUPPLIER

LOCATION

ASSEMBLY

SHIPMENT

PRICE

1 DL/I Concepts
 DL/I

Terminology
PART NO

SUPPLIER

LOCATION

ASSEMBLY

SHIPMENT 2 1

PRICE 2 1 6

1 DL/I Concepts
 The
05 05 05

COBOL Structure
PIC X(06). unique key PIC X(20). search PIC 9(06). search

01 PARTNO-SEGMENT. PART-NUMBER PART-NAME PART-DATE

01 SUPPLIER-SEGMENT. 05 05 05 SUPPLIER-NUMBER SUPPLIER-CONTACT-PHONE SUPPLIER-CONTACT-NAME PIC X(06). unique key PIC X(10). PIC X(30). search

01 SHIPMENT-SEGMENT. 05 05 05 SHIPMENT-BOM SHIPMENT-DATE SHIPMENT-DELIVERY-DATE PIC X(10). unique key PIC 9(06). search PIC 9(06). 7

1 DL/I Concepts
 The

COBOL Structure (continued)


unique key PIC 9(02). PIC 9(03) PIC 9(04). search

01 LOCATION-SEGMENT. 05 LOCATION-NUMBER. 10 LOCATION-LEVEL 10 LOCATION-BIN-NUMBER 05 LOCATION-QUANTITY 01 PRICE-SEGMENT. 05 PRICE-TYPE 05 PRICE-AMOUNT 05 PRICE-DATE 01 ASSEMBLY-SEGMENT. 05 ASSEMBLY-NUMBER 05 ASSEMBLY-NAME PIC X(06). unique key PIC X(20). search 8 PIC X(01). unique key PIC S9(04)V999. PIC 9(06).

2 IMS Control Blocks


 Objectives

- Student will

Be able to read a DBD Be able to code a PSB Understand how IMS uses the control blocks and JCL together Know where DL/I fits into the application program

2 IMS Control Blocks


 DBD

- Data Base Definition - Function


Defines the physical storage organization Defines the data set information Defines the hierarchical structure Defines the segment relationships Defines the segment layouts Defines the key and search field within the segments Defines any logical relationships Defines any secondary indices Describes the information needed to create a data base
10

2 IMS Control Blocks


 DBD

- Data Base Definition - Macros

DBD DATASET SEGM LCHILD FIELD XDFLD

11

2 IMS Control Blocks


 The

Hierarchical Structure with Keys


PARTNO Key = PARTNUM 32 LTH = 6

SUPPLIER 46 Key = SUPNUM LTH = 6 SHIPMENT 22

LOCATION 09 Key = LOCNUM LTH = 5 PRICE Key = SHIPBOM LTH = 10 15

ASSEMBLY 26 Key = ASYNUM LTH = 6

Key = PRICETYP LTH = 1 12

2 IMS Control Blocks


 DBD
DBD DATASET SEGM FIELD FIELD FIELD SEGM FIELD FIELD SEGM FIELD FIELD SEGM FIELD SEGM FIELD FIELD SEGM FIELD FIELD DBDGEN FINISH END NAME=PARTNODB,ACCESS=(HISAM,VSAM) NAME=PARTNO,BYTES=32,PARENT=0 NAME=(PARTNUM,SEQ,U),BYTES=6,START=1,TYPE=C NAME=PARTNAME,BYTES=20,START=7 NAME=PARTDATE,BYTES=6,START=27 NAME=SUPPLIER,BYTES=46,PARENT=PARTNO NAME=(SUPNUM,SEQ,U),BYTES=6,START=1 NAME=SUPCONT,BYTES=30,START=17 NAME=SHIPMENT,BYTES=22,PARENT=SUPPLIER NAME=(SHIPBOM,SEQ,U),BYTES=10,START=1 NAME=SHIPDATE,BYTES=6,START=11 NAME=PRICE,BYTES=14,PARENT=SUPPLIER NAME=(PRICETYP,SEQ,U),BYTES=1,START=1 NAME=LOCATION,BYTES=9,PARENT=PARTNO NAME=(LOCNUM,SEQ,U),BYTES=5,START=1 NAME=LOCQTY,BYTES=4,START=6 NAME=ASSEMBLY,BYTES=26,PARENT=PARTNO NAME=(ASYNUM,SEQ,U),BYTES=6,START=1 NAME=ASYNAME,BYTES=20,START=2

- Data Base Definition


DD1=PARTNODB,OVFLW= PARTOV,DEVICE=3380,BLOCK=6000

13

2 IMS Control Blocks


 PSB

- Program Specification Block

 Describes

the logical structure of one or more data bases to the application program  Defines segment sensitivity for each data base  Defines the processing options for the segments  The PSB is made up of PCBs (program communication blocks)

14

2 IMS Control Blocks


 PSB

- Program Specification Block Macros


PCB SENSEG SENFLD PSBGEN

15

2 IMS Control Blocks


 PSB

- Program Specification Block PCB Macro


PCB TYPE=DB, DBDNAME=PARTNODB, PROCOPT=A, KEYLEN=6

16

2 IMS Control Blocks


 PSB

- Program Specification Block SENSEG Macro


SENSEG NAME=PARTNO, PARENT=0, PROCOPT=G

17

2 IMS Control Blocks


 PSB

- Program Specification Block SENFLD Macro


SENSEG NAME=LOCATION,PARENT=PARTNO SENFLD NAME=LOCQTY,START=6, REPLACE=NO

18

2 IMS Control Blocks


 PSB

- Program Specification Block PSBGEN Macro


PSBGEN LANG=COBOL,PSBNAME=TESTPSB1

19

2 IMS Control Blocks


 PSB

- Program Specification Block Example


PCB SENSEG SENSEG SENSEG PSBGEN END TYPE=DB,NAME=PARTS,KEYLEN=100,PROCOPT=GO NAME=PARTNO,PARENT=0,PROCOPT=O NAME=SUPPLIER,PARENT=PARTNO NAME=SHIPMENT,PARENT=SUPPLIER,PROCOPT=A LANG=COBOL,PSBNAME=PARTS001

20

2 IMS Control Blocks


 ACB

- Application Control Block

DBD LIBRARY ACB LIBRARY

PSB LIBRARY

21

2 IMS Control Blocks


 How
//STEP1

the Control Blocks Work Together


PGM=DFSRRC00,PARM=DLI,PGMNAME,PSBNAME,BUF,,,,,MON DSN=IMSVS.RESLIB,DISP=SHR DSN=IMSVS.PGMLIB,DISP=SHR DSN=IMSVS.RESLIB,DISP=SHR DSN=IMSVS.PSBLIB,DISP=SHR DSN=IMSVS.DBDLIB,DISP=SHR DSN=IMSVS.PROGRM1.IMSLOG, UNIT=TAPE,DISP=(NEW,CATLG,CATLG) DUMMY,DCB=(LRECL=2044,BLKSIZE=2048)

EXEC

//STEPLIB DD // DD

//DFSRESLB DD //IMS // DD DD

//IEFRDER DD // //IMSMON DD

//SYSUDUMP DD SYSOUT=A //DFSVSAMP DD DSN=IMVS.DFSVSAMP(PROGRAM1),DISP=SHR //PARTS //PARTSOV DD DSN=IMS.VSAM.PARTS,DISP=OLD DD DSN=IMS.VSAM.PARTSOV,DISP=OLD 22

2 IMS Control Blocks


 DL/I

and the Application Program


OPERATING SYSTEM

DL/I Your Address Space or Region

DATA BASE

DBD

PSB

APPLICATION PROGRAM

23

2 IMS Control Blocks


 DL/I
01 PCB-MASK. 05 DBDNAME 05 LEVEL-NUMBER 05 STATUS-CODE 05 PROC-OPTIONS 05 JCB-ADDRESS 05 SEGMENT-NAME 05 KEY-LENGTH 05 NO-SEGMENTS 05 KEY-FEEDBACK PROCEDURE DIVISION USING PCB-MASK. 24 PIC X(08). PIC XX. PIC XX. PICX(04). PIC X(04). PIC X(08). PIC S9(5) COMP. PIC S9(5) COMP. PIC X(50).

and the Application Program

LINKAGE SECTION.

2 IMS Control Blocks


 Quiz

1 & Quiz 2

25

3 The IMS/DB COBOL Program


 Objectives

- Student will

Learn the structure of a DL/I call Learn where the IMS pieces fit into an application program Understand the structure of the SSA and the purpose of each part of the SSA Know the value of standard includes

26

3 The IMS/DB COBOL Program


 Program

Structure

IDENTIFICATION DIVISION. PROGRAM-ID. TEST001 ENVIRONMENT DIVISION. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. COPY PARTS. COPY PARTS-SSA. COPY FUNCODES. LINKAGE SECTION. COPY PARTS-PCB-MASK. PROCEDURE DIVISION USING PARTS-PCB-MASK. 7500-READ-PARTS. SET UP IMS CALL ISSUE IMS CALL CHECK STATUS CODE

27

3 The IMS/DB COBOL Program


 DL/I
CALL

Call Structure
USING FUNCTION PCB-MASK SEGMENT-IO-AREA SSA-1 . SSA-?

CBLTDLI

28

3 The IMS/DB COBOL Program


 SSA

- Segment Search Argument


8 bytes 3 1 8 2 1 - 255 1

SEGMENT NAME COMMAND CODES OPEN PARENTHESIS ( SEGMENT FIELD NAME RELATIONAL OPERATOR COMPARATIVE VALUE CLOSE PARENTHESIS )

29

3 The IMS/DB COBOL Program


 Copy

Books or Standard Includes

Segment Search Argument Segment Description Function Codes PCB Descriptions Status Codes IMS Operators

30

3 The IMS/DB COBOL Program


 Homework

Assignment

draw a diagram of the test IMS databases using the DBD information provided

31

4 IMS Retrieval Calls


 Objectives

- Student will

Be able to code efficient retrieval calls Understand how each type of SSA functions Be introduced to the concepts of data base position and parentage

32

4 IMS Retrieval Calls


 GU
004444 002130 001100

- Get Unique - Fully Qualified SSA


01 PARTNO-QSSA. 05 F PIC X(19) VALUE PARTNO *--(PARTNUM. PIC X(02) PIC X(06) PIC X(01) TO PARTNO-KEY TO PARTNO-OPER VALUE EQ. VALUE ZERO. VALUE ). 05 PARTNO-OPER 05 PARTNO-KEY 05 F

POLLAK LUCAS

MOVE 002130 MOVE EQ

CALL CBLTDLI USING GU-FUNCTION PARTS-PCB-MASK

1996/04/30 1996/01/15 1995/09/01

PARTNO-SEGMENT PARTNO-QSSA IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine.

33

4 IMS Retrieval Calls


 GU
004444 002130 001100

- Multiple Fully Qualified SSAs


MOVE 002130 MOVE EQ MOVE LUCAS MOVE EQ TO PARTNO-KEY TO PARTNO-OPER TO SUPPLIER-KEY TO SUPPLIER-OPER

CALL CBLTDLI USING GU-FUNCTION

POLLAK LUCAS

PARTS-PCB-MASK SUPPLIER-SEGMENT PARTNO-QSSA SUPPLIER-QSSA

1996/04/30 1996/01/15 1995/09/01

IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine.

34

4 IMS Retrieval Calls


 GU
004444 002130 001100

- Unqualified SSA
01 PARTNO-USSA PIC X(09) VALUE PARTNO. CALL CBLTDLI USING GU-FUNCTION PARTS-PCB-MASK PARTNO-SEGMENT

POLLAK LUCAS

PARTNO-USSA IF PARTS-PCB-STATUS = bb CONTINUE ELSE

1996/04/30 1996/01/15 1995/09/01

PERFORM error-routine.

35

4 IMS Retrieval Calls


 GU
004444 002130 001100

- Multiple Unqualified SSAs


01 PARTNO-USSA 01 SUPPLIER-USSA 01 SHIPMENT-USSA PIC X(09) PIC X(09) PIC X(09) VALUE PARTNO. VALUE SUPPLIER. VALUE SHIPMENT.

CALL CBLTDLI USING GU-FUNCTION

POLLAK LUCAS

PARTS-PCB-MASK SHIPMENT-SEGMENT PARTNO-USSA SUPPLIER-USSA

1996/04/30 1996/01/15 1995/09/01

SHIPMENT-USSA IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine.

36

4 IMS Retrieval Calls


 GU
004444 002130 001100

- Missing SSAs
CALL CBLTDLI USING GU-FUNCTION PARTS-PCB-MASK SHIPMENT-SEGMENT SUPPLIER-USSA

POLLAK LUCAS

SHIPMENT-USSA IF PARTS-PCB-STATUS = bb CONTINUE ELSE

1996/04/30 1996/01/15 1995/09/01

PERFORM error-routine.

37

4 IMS Retrieval Calls


 GU
004444 002130 001100

- No SSAs
CALL CBLTDLI USING GU-FUNCTION PARTS-PCB-MASK PARTNO-SEGMENT IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

CONTINUE ELSE PERFORM error-routine.

1996/04/30 1996/01/15 1995/09/01

38

4 IMS Retrieval Calls


 GN004444 002130 001100

Get Next - Fully Qualified SSA


01 PARTNO-QSSA. 05 F PIC X(19) VALUE PARTNO *--(PARTNUM. PIC X(02) PIC X(06) PIC X(01) TO PARTNO-KEY TO PARTNO-OPER VALUE EQ. VALUE ZERO. VALUE ). 05 PARTNO-OPER 05 PARTNO-KEY 05 F

POLLAK LUCAS

MOVE 004444 MOVE EQ

CALL CBLTDLI USING GN-FUNCTION PARTS-PCB-MASK

1996/04/30 1996/01/15 1995/09/01

PARTNO-SEGMENT PARTNO-QSSA IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine.

39

4 IMS Retrieval Calls


 GN
004444 002130 001100

- Multiple Fully Qualified SSAs


MOVE 002130 MOVE EQ MOVE LUCAS MOVE EQ MOVE GE MOVE 1996/03/31 TO PARTNO-KEY TO PARTNO-OPER TO SUPPLIER-KEY TO SUPPLIER-OPER TO SHIPMENT-OPER TO SHIPMENT-KEY

POLLAK LUCAS

CALL CBLTDLI USING GN-FUNCTION PARTS-PCB-MASK SHIPMENT-SEGMENT PARTNO-QSSA

1996/04/30 1996/01/15 1995/09/01

SUPPLIER-QSSA SHIPMENT-QSSA IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine.

40

4 IMS Retrieval Calls


 GN
004444 002130 001100

- Unqualified SSA
CALL CBLTDLI USING GN-FUNCTION PARTS-PCB-MASK SHIPMENT-SEGMENT SHIPMENT-USSA

POLLAK LUCAS

IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine.

1996/04/30 1996/01/15 1995/09/01

41

4 IMS Retrieval Calls


 GN
004444 002130 001100

- Multiple Unqualified SSAs


CALL CBLTDLI USING GN-FUNCTION PARTS-PCB-MASK SHIPMENT-SEGMENT PARTNO-USSA

POLLAK LUCAS
CONTINUE ELSE

SUPPLIER-USSA SHIPMENT-USSA IF PARTS-PCB-STATUS = bb

1996/04/30 1996/01/15 1995/09/01

PERFORM error-routine.

42

4 IMS Retrieval Calls


 GN
004444 002130 001100

- A Combination of SSA Types


CALL CBLTDLI USING GN-FUNCTION PARTS-PCB-MASK SHIPMENT-SEGMENT PARTNO-QSSA

POLLAK LUCAS
CONTINUE ELSE

SUPPLIER-QSSA SHIPMENT-USSA IF PARTS-PCB-STATUS = bb

1996/04/30 1996/01/15 1995/09/01

PERFORM error-routine.

43

4 IMS Retrieval Calls


 GN
004444 002130 001100

- No SSAs
CALL CBLTDLI USING GN-FUNCTION PARTS-PCB-MASK GENERIC-IO-AREA

POLLAK LUCAS

IF PARTS-PCB-STATUS = bb OR GA OR GK CONTINUE ELSE IF PARTS-PCB-STATUS = GB PERFORM 9000-END-OF-DATABASE

1996/04/30 1996/01/15 1995/09/01

ELSE PERFORM error-routine.

44

4 IMS Retrieval Calls


 GNP
004444 002130 001100

- Get Next in Parent


CALL CBLTDLI USING GU-FUNCTION PARTS-PCB-MASK PARTNO-SEGMENT PARTNO-QSSA IF PARTS-PCB-STATUS = bb PERFORM 2000-GNP-SUPPLIER

POLLAK LUCAS

UNTIL PARTS-PCB-STATUS = GE ELSE PERFORM error-routine.

2000-GNP-SUPPLIER. CALL CBLTDLI USING GNP-FUNCTION

1996/04/30 1996/01/15 1995/09/01


CONTINUE ELSE

PARTS-PCB-MASK SUPPLIER-SEGMENT SUPPLIER-USSA IF PARTS-PCB-STATUS = bb OR GE

PERFORM error-routine

45

4 IMS Retrieval Calls


 Exercise

46

5 IMS Update Calls


 Objectives

- Student will

Understand the purpose of the HOLD calls Learn more about how SSAs are used Be able to code the update calls

47

5 IMS Update Calls


 GHU
004444 002130 001100

- Get Hold Unique


CALL CBLTDLI USING GHU-FUNCTION PARTS-PCB-MASK PARTNO-SEGMENT PARTNO-QSSA IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

PERFORM 2000-DLET-SUPPLIER ELSE PERFORM error-routine.

2000-DLET-SUPPLIER. CALL CBLTDLI USING DLET-FUNCTION

1996/04/30 1996/01/15 1995/09/01

PARTS-PCB-MASK PARTNO-SEGMENT IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine

48

5 IMS Update Calls


 GHN
004444 002130 001100

- Get Hold Next


CALL CBLTDLI USING GHN-FUNCTION PARTS-PCB-MASK PARTNO-SEGMENT PARTNO-QSSA IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

PERFORM 2000-DLET-SUPPLIER ELSE PERFORM error-routine.

2000-DLET-SUPPLIER. CALL CBLTDLI USING DLET-FUNCTION

1996/04/30 1996/01/15 1995/09/01

PARTS-PCB-MASK PARTNO-SEGMENT IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine

49

5 IMS Update Calls


 GHNP
CALL CBLTDLI USING GHNP-FUNCTION

004444 002130 001100

PARTS-PCB-MASK SUPPLIER-SEGMENT SUPPLIER-QSSA IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

PERFORM 2000-REPL-SUPPLIER ELSE PERFORM error-routine.

2000-REPL-SUPPLIER. CALL CBLTDLI USING REPL-FUNCTION

1996/04/30 1996/01/15 1995/09/01

PARTS-PCB-MASK SUPPLIER-SEGMENT IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine

50

5 IMS Update Calls


 ISRT
CALL CBLTDLI USING ISRT-FUNCTION

004444 002130 001100

PARTS-PCB-MASK PARTNO-SEGMENT PARTNO-USSA IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

CONTINUE ELSE IF PARTS-PCB-STATUS = II PERFORM duplicate-segment-error ELSE

1996/04/30 1996/01/15 1995/09/01

PERFORM error routine.

51

5 IMS Update Calls


 REPL
CALL CBLTDLI USING GHNP-FUNCTION

004444 002130 001100

PARTS-PCB-MASK SUPPLIER-SEGMENT SUPPLIER-QSSA IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

PERFORM 2000-REPL-SUPPLIER ELSE PERFORM error-routine.

2000-REPL-SUPPLIER. move changed data to supplier-segment

1996/04/30 1996/01/15 1995/09/01

CALL CBLTDLI USING REPL-FUNCTION PARTS-PCB-MASK SUPPLIER-SEGMENT IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine

52

5 IMS Update Calls


 DLET
CALL CBLTDLI USING GHU-FUNCTION

004444 002130 001100

PARTS-PCB-MASK PARTNO-SEGMENT PARTNO-QSSA IF PARTS-PCB-STATUS = bb

POLLAK LUCAS

PERFORM 2000-DLET-PARTNO ELSE PERFORM error-routine.

2000-DLET-PARTNO. CALL CBLTDLI USING DLET-FUNCTION

1996/04/30 1996/01/15 1995/09/01

PARTS-PCB-MASK PARNO-SEGMENT IF PARTS-PCB-STATUS = bb CONTINUE ELSE PERFORM error-routine

53

5 IMS Update Calls


 Exercise

54

6 Physical Organization of Data Base


 Objectives

- Student will

Be able to describe the four organizations Know each organization types features and advantages

55

6 Physical Organization of Data Base


 Hierarchical

Sequential Organization Segment Layout


s e g I D 1 d e l e t e 2 3

Segment Data

56

6 Physical Organization of Data Base


 HSAM
DEALER 1 MODEL B MODEL A DEALER 1 MODEL A ORDER 1 ORDER 3 ORDER ORDER 2 ORDER 11 STOCK 2 STOCK 1 STOCK 3 SALES 3 ORDER 2 STOCK 1 STOCK 2 0 0 SALES 1 MODEL B ORDER 3 0 0 STOCK 3 SALES 3 SALES 1 Next data base record starts here. Unused Space 57

6 Physical Organization of Data Base


DEALER 1

 HISAM

MODEL B MODEL A ORDER 3 ORDER ORDER 2 1 STOCK 2 STOCK 1 STOCK 3 SALES 3

SALES 1

KSDS

ESDS
ORDER 2 STOCK 1 STOCK 2

DEALER 1 MODEL A ORDER 1

SALES 1 MODEL B ORDER 3 STOCK 3 SALES 3 0

Next data base record starts here.

58

6 Physical Organization of Data Base


 Characteristics
Type of Access Organization HSAM Major Features and Advantages All roots and dependent segments are stored in physical hierarchic sequence. Good for sequential retrieval only. Restrictions Cannot add, delete, or update segments. Another data base must be created for update purposes. Sequential HISAM A root segment is found through an index look-up. A dependent segment is found by its sequential position within the record. Good for directly accessing records so that the segments in the record may be processed sequentially. 59 None.

6 Physical Organization of Data Base


 Hierarchical
s e g d e l e I D t e Pointers Segment Data

Direct Access Methods Segment Layout

60

6 Physical Organization of Data Base


DEALER 1 MODEL B

 HDAM
ESDS

MODEL A ORDER 3 ORDER 2 ORDER 1 STOCK 2 STOCK 1 STOCK 3 SALES SALES 3 3

DEALER 1 MODEL A ORDER 1

SALES 1

ORDER 2 STOCK 1 STOCK 2 SALES 1 MODEL B ORDER 3 STOCK 3 SALES 3

Root Addressable Area

Overflow Area Free Space 61

6 Physical Organization of Data Base


DEALER 1 MODEL B

 HIDAM

MODEL A ORDER 3 ORDER 2 ORDER 1 STOCK 2 STOCK 1 ESDS DEALER 1 MODEL A ORDER 1 ORDER 2 STOCK 1 STOCK 2 SALES 1 MODEL B ORDER 3 STOCK 3 SALES 3 DEALER 2 62 STOCK 3 SALES SALES 3 3

SALES 1

KSDS DEALER 1 DEALER 2 DEALER 3

6 Physical Organization of Data Base


 Characteristics
Type of Access Organization Major Features and Advantages Restrictions

HDAM

A randomizing routine is used to store and locate a data base record. Segments within a record are found using pointers. Used for fast direct access of data base records.

A program will retrieve root segments in physical sequence unless the program suppliers the keys in the appropriate order.

Direct HIDAM A root segment is located by means of an index. Segments within a record are found through the use of pointers. Good when equal amounts of direct and sequential processing are required. 63 None.

7 Advanced IMS/DB Concepts


 Objectives

- Student will

Learn what a Boolean SSA is and when it is useful Know how to process variable length segments Understand parallel processing using multiple PCBs

64

7 Advanced IMS/DB Concepts


 Boolean
05 F 05 PARTNO-BSSA-CC 05 PARTNO-BSSA-PAREN 05 PARTNO-BSSA-KEY1 05 PARTNO-BSSA-OPER1 05 PARTNO-BSSA-VALUE1 05 PARTNO-BSSA-BOPER1 05 PARTNO-BSSA-KEY2 05 PARTNO-BSSA-OPER2 05 PARTNO-BSSA-VALUE2 05 F

SSAs
PIC X(08) VALUE PARTNO. PIC X(03) VALUE *--. PIC X(01) VALUE (. PIC X(08) VALUE PARTNUM. PIC X(02) VALUE GT. PIC X(06) VALUE SPACES. PIC X(01) VALUE *. PIC X(08) VALUE PARTNUM. PIC X(02) VALUE LT. PIC X(06) VALUE SPACES. PIC X(01) VALUE ).

01 PARTNO-BSSA.

PARTNObb*--(PARTNUMbGTbbbbbb*PARTNUMbLTbbbbbb)

65

7 Advanced IMS/DB Concepts


 Secondary
In the DBD:

Indexing
In the PCB: In the Program:
GU PARTNOb(XNAMEbbb=SWITCHbbbbb)

LCHILD NAME=(SEC INDEX SEG,SEC INDEX DBD NAME) PROCSEQ=name XDFLD NAME=XNAME, SRCH=Field index is based on of secondary index DBD

In Secondary Index DBD


ACCESS=(INDEX,VSAM) LCHILD=(SEG NAME OF SEGMENT INDEX is being defined on, Main DBD name) INDEX=Index Name defined on XDFLD in main DBD

66

7 Advanced IMS/DB Concepts


 Secondary
Main DBD
DBD NAME=BOOKSDB,ACCESS=(HISAM,VSAM) DBD DATASET DD1=BOOKSDB,OVFLW=BOOKSOV,DEVICE=3380, BLOCK=(8,4),RECORD=(500,500) SEGM FIELD FIELD LCHILD XDFLD DBDGEN FINISH END NAME=BKDATA,BYTES=114,PARENT=0 NAME=(BKKEY,SEQ,U),BYTES=6,START=1 NAME=BKNAME,BYTES=35,START=7 NAME=(BKSISEG,BOOKSSI),POINTER=SYMB NAME=BKXFLD,SRCH=BKNAME,NULLVAL=X40 SEGM FIELD LCHILD DBDGEN FINISH END

Indexing cont
Secondary DBD
NAME=BOOKSSI,ACCESS=(INDEX,VSAM) DATASET DD1=BOOKSSI,OVFLW=BOOKSIOV,DEVICE=3380, BLOCK=(8,4),RECORD=(500,500) NAME=BKSISEG,PARENT=0,BYTES=35 NAME=(BKSISEG,SEQ,M),BYTES=35,START=1 NAME=(BKDATA,BOOKSDB),INDEX=BKXFLD,PTR=SYMB

Program
MOVE BKXFLD TO SEC-SSA-FIELD-NAME MOVE IMS CONCEPTS TO SEC- SSA-SEARCH-NAME MOVE EQ TO SEC-SSA-OPER CALL CBLTDLI USING GU PCB

PSB
TYPE=DB,DBDNAME=BOOKSDB,PROCOPT=A, KEYLEN=100,PROCSEQ=BOOKSSI SENSEG NAME=BKDATA,PARENT=0 SENSEG NAME=BLHDATA,PARENT=BKDATA PSBGEN LANG=COBOL,PSBNAME=TIMSB30Z END

SECINDEX-PCB-MASK INPUT-SEGMENT SEC-SSA

67

7 Advanced IMS/DB Concepts


 Variable

Length Segments
is responsible for length

Two byte binary length field


 Programmer

maintenance

Minimum and maximum lengths specified by DBA in the DBD


L L Segment Data

68

7 Advanced IMS/DB Concepts


 Parallel

Processing
GU, PCB-MASK1 GNP,PCB-MASK1

Multiple PCBs
PART NO (OLDPART)

SUPPLIER

LOCATION PRICE

ASSEMBLY PART NO (NEWPART)

ISRT,PCB-MASK2

SHIPMENT SUPPLIER LOCATION PRICE ASSEMBLY

SHIPMENT 69

7 Advanced IMS/DB Concepts


 Parallel
PCB SENSEG SENSEG PCB SENSEG SENSEG PSBGEN END

Processing cont
PCB Masks
01 MEMBER1-PCB-MASK. 05 MEMBER1-DBD-NAME 05 MEMBER1-SEG-LEVEL 05 MEMBER1-STAT-CODE . . . . . . . . 05 MEMBER-PCB-KEY MEMBER2-PCB-MASK. 05 MEMBER2-DBD-NAME 05 MEMBER2-SEG-LEVEL 05 MEMBER2-STAT-CODE . . . . . . . . 05 MEMBER2-PCB-KEY PIC X(8) PIC X(2) PIC X(2) . . PIC X(100)

PSB Needed
TYPE=DB,DBDNAME=MEMBERDB, PROCOPT=AP, KEYLEN=100 NAME=MEDATA,PARENT=0 NAME=BLDATA,PARENT=MEDATA TYPE=DB,DBDNAME=MEMBERDB, PROCOPT=A,KEYLEN=100 NAME=MEDATA,PARENT=0 NAME=BLDATA,PARENT=MEDATA LANG=COBOL,PSBNAME=TIMSB40Z

01

PIC X(8) PIC X(2) PIC X(2) . . PIC X(100)

Program Entry Statement


PROCEDURE DIVISION USING MEMBER1-PCB-MASK MEMBER2-PCB-MASK.

70

7 Advanced IMS/DB Concepts


 Exercise

71

8 Command Codes
 Objectives

- Student will

Understand the most commonly used five Command Codes and how to they can be used efficiently

72

8 Command Codes
D

- Path Call Command Code


PART NO

SUPPLIER

LOCATION

PRICE

ASSEMBLY

PARTNObb*D-(PARTNUMEQ002300) SHIPMENT IO AREA PARTNO DATA SUPPLIER DATA SHIPMENT DATA SUPPLIER*D-(SUPPNUMEQLUCAS) SHIPMENT*--(SHIPNUMEQ123456)

73

8 Command Codes
D

- Path Call Command Code cont


Procedure Division
MOVE 00001 TO MESSA-KEY. MOVE 00004 TO BLSSA-KEY. CALL CBLTDLI USING GU-FUNCTION MEMBERDB-PCB-MASK PATH-CALL-IO-AREA MEDATA-SSA BLDATA-SSA. VALUE MEDATAbb*D-(. VALUE MEKEYbbb. VALUE EQ. VALUE ).

Working Storage
01 MEDATA-SSA. 05 FILLER 05 MESSA-FIELD 05 MESSA-OPER 05 MESSA-KEY 05 FILLER 01 BLDATA-SSA. 05 FILLER 05 BLSSA-FIELD 05 BLSSA-OPER 05 BLSSA-KEY 05 FILLER PIC X(12) PIC X(8) PIC X(02) PIC X(05) . PIC X

PIC X(12) VALUE BLDATAbb*--(. PIC X(8) VALUE BLBNObbb. PIC X(02) VALUE EQ. PIC X(06). PIC X VALUE ).

01 PATH-CALL-IO-AREA. 05 MEMBER-SEGMENT PIC X(114). 05 BLDATA-SEGMENT PIC X(44).

74

8 Command Codes
N

- Do Not Replace This Segment


PARTNObb*N- PARTNUMEQ002300) SUPPLIER*N- SUPPNUMEQLUCAS) SHIPMENT*-- SHIPNUMEQ123456)

CALL CBLTDLI USING REPL-FUNCTION PARTS-PCB-MASK SHIPMENT-SEGMENT PARTNO-QSSA SUPPLIER-QSSA

75

8 Command Codes
N

- Path Call Command Code cont


Procedure Division
MOVE D- TO MESSA-CC. MOVE 00001 TO MESSA-KEY. MOVE 00004 TO BLSSA-KEY. CALL CBLTDLI USING GU-FUNCTION MEMBERDB-PCB-MASK PATH-CALL-IO-AREA MEDATA-SSA BLDATA-SSA. ** MAKE CHANGES TO BLDATA SEGMENT DATA *** MOVE N- TO MESSA-CC. MOVE SPACE TO MESS-LPAREN. CALL CBLTDLI USING REPL-FUNCTION MEMBERDB-PCB-MASK BLDATA-SEGMENT MEDATA-SSA. VALUE MEDATAbb*. VALUE --. VALUE (. VALUE MEKEYbbb. VALUE EQ. VALUE ).

Working Storage
01 MEDATA-SSA. 05 FILLER 05 MESSA-CC 05 MESS-LPAREN 05 MESSA-FIELD 05 MESSA-OPER 05 MESSA-KEY 05 FILLER 01 BLDATA-SSA. 05 FILLER 05 BLSSA-CC 05 FILLER 05 BLSSA-FIELD 05 BLSSA-OPER 05 BLSSA-KEY 05 FILLER PIC X(09) PIC X(02) PIC X(01) PIC X(8) PIC X(02) PIC X(05) . PIC X

PIC X(09) PIC X(02) PIC X(01) PIC X(8) PIC X(02) PIC X(06). PIC X

VALUE BLDATAbb*. VALUE --. VALUE (. VALUE BLBNObbb. VALUE EQ. VALUE ).

01 PATH-CALL-IO-AREA. 05 MEMBER-SEGMENT PIC X(114). 05 BLDATA-SEGMENT PIC X(44).

76

8 Command Codes
L

- Retrieve Last Occurrence


PARTNO 123456

SUPPLIER LUCAS ZZZ CCC SHIPMENT AAA BBB CCC

77

8 Command Codes
L

- Command Code cont


Procedure Division
MOVE 00004 TO MESSA-KEY. CALL CBLTDLI USING GU-FUNCTION MEMBERDB-PCB-MASK BLDATA-SEGMENT MEDATA-SSA BLDATA-USSA.. PIC X(11) PIC X(01) PIC X(08) PIC X(02) PIC X(05).. PIC X(01) VALUE MEDATAbb*--. VALUE (. VALUE MEKEYbbb. VALUE EQ. VALUE ).

Working Storage
01 MEDATA-SSA. 05 FILLER 05 FILLER 05 MESSA-FIELD 05 MESSA-OPER 05 MESSA-KEY 05 FILLER 01 BLDATA-USSA. 05 FILLER

PIC X(11)

VALUE BLDATAbb*L-.

01 MEMBER-SEGMENT PIC X(114). VALUE SPACES. 01 BLDATA-SEGMENT PIC X(44) VALUE SPACES..

78

8 Command Codes
F

- Retrieve First Occurrence


PARTNO 123456

SUPPLIER LUCAS ZZZ CCC SHIPMENT AAA BBB CCC

79

8 Command Codes
F

- Command Code cont


Procedure Division
MOVE 00004 TO MESSA-KEY. CALL CBLTDLI USING GU-FUNCTION MEMBERDB-PCB-MASK BLDATA-SEGMENT MEDATA-SSA BLDATA-USSA. PIC X(11) PIC X(01) PIC X(08) PIC X(02) PIC X(05).. PIC X(01) VALUE MEDATAbb*--. VALUE (. VALUE MEKEYbbb. VALUE EQ. VALUE ).

Working Storage
01 MEDATA-SSA. 05 FILLER 05 FILLER 05 MESSA-FIELD 05 MESSA-OPER 05 MESSA-KEY 05 FILLER 01 BLDATA-USSA. 05 FILLER

PIC X(11)

VALUE BLDATAbb*Fb.

01 MEMBER-SEGMENT PIC X(114). VALUE SPACES. 01 BLDATA-SEGMENT PIC X(44) VALUE SPACES..

80

8 Command Codes
P

- Set Parentage at this Segment


PARTNO

SUPPLIER

LOCATION

SHIPMENT

BIN

81

8 Command Codes
P

- Command Code cont


Procedure Division
MOVE SDCA TO LOCSSA-KEY. MOVE CA TO SUPSSA-KEY. PERFORM 2100-GN-PARTNO UNTIL PART-STATUS-CODE = GB. CALL CBLTDLI USING GN-FUNCTION PARTDB-PCB-MASK PART-SUPP-SEGMENTS PART-USSA. SUPPLIER-SSA. PERFORM 2200-GET-LOCATION UNTIL PARTS-STATUS-CODE = GE. 2200-GET-LOCATION. CALL CBLTDLI USING GNP-FUNCTION PARTDB-PCB-MASK LOCATION-SEGMENT LOCATION-SSA. PIC X(11) VALUE PARTNObb*PD.

Working Storage
01 PART-USSA. 05 FILLER 01 SUPPLIER-SSA. 05 FILLER 05 FILLER 05 SUPSSA-FIELD 05 SUPSSA-OPER 05 SUPSSA-KEY 05 FILLER 01 LOCATION-SSA. 05 FILLER 05 FILLER 05 LOCSSA-FIELD 05 LOCSSA-OPER 05 LOCSSA-KEY 05 FILLER

PIC X(11) PIC X(01) PIC X(08) PIC X(02) PIC X(02) PIC X(01)

VALUE SUPPLIER*--. VALUE (. VALUE SUPSTATE. VALUE EQ. VALUE SPACES. VALUE ).

PIC X(11) PIC X(01) PIC X(08) PIC X(02) PIC X(04).. PIC X(01)

VALUE LOCATION*--. VALUE (. VALUE LOCKEYbb. VALUE EQ. VALUE ).

01 PART-SUPP-SEGMENTS. 05 PART-SEGMENT PIC X(100).. 05 SUPPLIER-SEGMENT PIC X(100). 01 LOCATION-SEGMENT PIC X(100)..

82

8 Command Codes
 Exercise

83

9 IMS Batch / On-Line Overview


 Objectives

- Student will

Understand the difference between the batch environment and the on-line environment as it applies to IMS Learn about I/O PCBs Know the difference between batch, BMPs and MPPs Learn about GSAMs and their value to IMS programming
84

9 IMS Batch / On-Line Overview


 The

Batch Environment
OPERATING SYSTEM IMS BATCH SUBSYSTEM Program A IMS BATCH SUBSYSTEM Program B

DL/I DATA BASE 1 Control Blocks

DL/I Control Blocks DATA BASE 2

Buffers

Buffers

REGION

REGION 85

9 IMS Batch / On-Line Overview


 The

Batch Program Relationship

Data Base processing Input Records

Transaction file

DL/I batch application program

DL/I Modules

DL/I data bases

Report

86

9 IMS Batch / On-Line Overview


 The

On-Line Environment

OPERATING SYSTEM IMS/VS on-line SUBSYSTEM IMS/VS Control Program DL/I Code

Program A

Program B

DBDs Data Base 3 PSB Data Base 4 REGIONS: Control Buffers PCB DL/I Dependent PCB Dependent PSB

87

9 IMS Batch / On-Line Overview


 The

On-Line Program Relationship


Data Communications component Input message IMS DC application program DL/I Modules DL/I data bases

Data Base processing

Output message

88

9 IMS Batch / On-Line Overview


 On-Line

Terminology

LTERM Message Transaction I/O PCB Alternate I/O PCB

89

9 IMS Batch / On-Line Overview


 The

Types of on-line Programs

MPP Message-Driven Program Batch-Oriented BMP Transaction-Oriented BMP

90

9 IMS Batch / On-Line Overview


 The

Teleprocessing PCB
TYPE=TP,LTERM=LPRINT01 TYPE=TP,MODIFY=YES

PCB PCB

PSBGEN LANG=COBOL,PSBNAME=PROG001,CMPAT=YES

91

9 IMS Batch / On-Line Overview


 The

IO and Alternate IO PCB Masks


PIC X(08). PIC XX. PIC XX. PIC S9(07) COMP-3.

01 IO-PCB-MASK. 05 IO-PCB-LTERM 05 F 05 IO-PCB-STATUS-CODE 05 IO-PCB-DATE 05 IO-PCB-TIME 05 IO-PCB-MSG-NBR 05 IO-PCB-MODNAME 05 IO-PCB-USERID 01 ALTERNATE-IO-PCB-MASK. * * 92

PIC S9(06)V9 COMP-3. PIC S9(05) PIC X(08). PIC X(08). COMP.

9 IMS Batch / On-Line Overview


 The

Entry Statement for On-Line Programs


PROCEDURE DIVISION USING IO-PCB-MASK ALTERNATE-IO-PCB-MASK DB1-PCB-MASK DB2-PCB-MASK

93

9 IMS Batch / On-Line Overview


 GSAM

- Generalized Sequential Access Method


The DBD
DBD NAME=GSAMDBD,ACCESS=(GSAM,VSAM) DATASET DD1=GSAMINDB,DD2=GSAMOUDB,RECFM=F,RECORD=(133,80) DBDGEN FINISH END

94

9 IMS Batch / On-Line Overview


 GSAM

- Generalized Sequential Access Method


The PSB
PCB PCB PCB PCB PCB TYPE=TP,MODIFY=YES TYPE=DB.............. TYPE=DB............. TYPE=GSAM,DBDNAME=GSAMDBD,PROCOPT=G TYPE=GSAM,DBDNAME=GSAMDBD,PROCOPT=L

95

9 IMS Batch / On-Line Overview


 GSAM

- Generalized Sequential Access Method


The JCL
//TIMSB50A JOB //STEP01 EXEC ,TEST GSAM, CLASS=A,MSGCLASS=A PGM=DFSRRC00,PARM=(BMP,TIMSB50Z,TIMSB50Z,,,,) DSN=TRAIN01.COBOL.INFILE,DISP=OLD DSN=TRAIN01.COBOL.REPORT,DISP=OLD

//GSAMINDB DD //GSAMOUDB DD

96

9 IMS Batch / On-Line Overview


 GSAM

- Generalized Sequential Access Method


The PCB-MASK
01 GSAMIN-PCB-MASK. 05 GSAMIN-DBDNAME 05 FILLER 05 GSAMIN-STATUS-CODE 05 GSAMIN-PROC-OPT 05 GSAMIN-JCB-ADDRESS 05 GSAMIN-RECORD-NAME PIC X(08). PIC XX. PIC XX. PIC X(04). PIC S9(8) COMP. PIC X(08).

97

9 IMS Batch / On-Line Overview


 GSAM

- Generalized Sequential Access Method


The Entry Statement
PROCEDURE DIVISION USING IO-PCB-MASK ALTERNATE-IO-PCB-MASK DB1-PCB-MASK DB2-PCB-MASK GSAMIN-PCB-MASK GSAMOUT-PCB-MASK

98

9 IMS Batch / On-Line Overview


 GSAM

- Generalized Sequential Access Method


Accessing the GSAM
USING GN-FUNCTION GSAMIN-PCB-MASK INPUT-RECORD CALL CBLTDLI USING ISRT-FUNCTION GSAMOUT-PCB-MASK OUTPUT-RECORD IF GSAMOUT-STATUS-CODE = BB-STATUS CONTINUE ELSE PERFORM ABEND-PARAGRAPH.

CALL CBLTDLI

IF GSAMIN-STATUS-CODE = BB-STATUS CONTINUE ELSE IF GSAMIN-STATUS-CODE = GB-STATUS PERFORM 9000-PROCESS-THE-END ELSE PERFORM ABEND-PARAGRAPH.

99

9 IMS Batch / On-Line Overview


 Exercise

Convert program TIMSB005 to use GSAMs rather than sequential flat files

100

10 Data Base Integrity and Security


 Objectives

- Student will

Understand commit points and when they occur in IMS processing Be able to design and code checkpoints and restarts in IMS BMPs

101

10 Data Base Integrity and Security


 How

IMS/VS Protects Data Integrity

Commit Points When Commit Points Occur


 Normal

Termination  Checkpoint Call  When a New Message is Retrieved

102

10 Data Base Integrity and Security


 The

Symbolic Checkpoint  Why Checkpoints are Important

103

10 Data Base Integrity and Security


 The
LL 2 LL BB 2

IMS Log
CODE 1 RECORD Variable Length SEQ # 4 Binary halfword field containing the length of this IMS log record Binary halfword used by MVS One hexadecimal byte containing the IMS log record code

IMS LOG RECORD CODES

BB CODE

X08 X09 X2F X41 X50 X51

Scheduling Record Termination Record Open Data Base Record Checkpoint Record After Image Before Image 104

RECORD Contents depend on what type of IMS log record it is SEQ # Binary fullword containing a sequence number. IMS numbers every record on the IMS log file.

10 Data Base Integrity and Security


 The

CHKP Call
PIC S9(8) COMP VALUE +200. PIC X(04) VALUE C100. PIC 9(040 VALUE ZERO. PIC S9(8) COMP VALUE +1000. PIC X(1000).

01 CHKP-LONGEST-SEGMENT 01 CHKP-ID. 05 CHKP-PROGRAM 05 CHKP-NUMBER 01 CHKP-AREA-LENGTH 01 CHKP-AREA ADD 1 CALL TO CHKP-NUMBER CBLTDLI USING

CHKP-FUNCTION IO-PCB-MASK CHKP-LONGEST-SEGMENT CHKP-ID CHKP-AREA-LENGTH CHKP-AREA 105

10 Data Base Integrity and Security


 When

to Take a CHKP

At the top of the processing loop


 Just

before a GU  Before a GN to a GSAM driver file


 What

to Save

Keys Counters Accumulators


 Reestablish

Position
106

10 Data Base Integrity and Security


 The

XRST Call
PIC S9(8) COMP VALUE +200. PIC X(12). PIC S9(8) COMP VALUE +1000. PIC X(1000). TO XRST-ID USING XRST-FUNCTION IO-PCB-MASK CHKP-LONGEST-SEGMENT XRST-ID CHKP-AREA-LENGTH CHKP-AREA

01 CHKP-LONGEST-SEGMENT 01 XRST-ID 01 CHKP-AREA-LENGTH 01 CHKP-AREA MOVE SPACES CALL

CBLTDLI

IF CHKP-ID > SPACES PERFORM restart logic.

107

10 Data Base Integrity and Security


 Restart
//STEP1 EXEC

- JCL

PGM=DFSRRC00,PARM=BMP,PGMNAME,PSBNAME,,,,,,LAST DSN=IMSVS.RESLIB,DISP=SHR DSN=IMSVS.PGMLIB,DISP=SHR DSN=IMSVS.RESLIB,DISP=SHR

//STEPLIB DD // DD

//DFSRESLB DD

//SYSUDUMP DD SYSOUT=A

108

10 Data Base Integrity and Security


 ROLB
CALL CBLTDLI USING ROLB-FUNCTION PCB-MASK

109

10 Data Base Integrity and Security


 How

CKPT and XRST Work Together

Plan Checkpoints Carefully Code Correctly Test Thoroughly

110

10 Data Base Integrity and Security


 Exercise

Add checkpoint/restart capability to TIMSB005

111

Вам также может понравиться