IMS -DB - MAINFRAME TUTORIALS

Download Report

Transcript IMS -DB - MAINFRAME TUTORIALS

HOME
IMS-DB
Information Management System
DB Concepts & Programming
HOME
Basic Topics










Files Vs Databases
Networked,Hierarchical & Relational structure
Access types - HSAM, HISAM,HDAM,HIDAM,VSAM
IMS DB - an Hierarchical Structure
Database Definitions - DBD
Program Specification Block ,Program Control Block
DL/I Calls - Data Retrieval and Manipulation
DL/I Functions
Qualified/ Unqualified Calls, SSAs, Command Codes
DL/I Status codes
HOME
Advanced Topics






Data Sensitivity - Segment Level & Field level
Checkpoint & Restart
IMS DB in CICS Environment
Secondary Indexing
Difference between MPP, BMP, DLI
Using ‘HFCTDLI’
HOME
File






Data more redundant
Duplicate data
Data insecure
No control over data
Threat to Integrity
Lack of inbuilt
recovery features
 Lack of data Locks
Vs
Databases
Redundancy avoided
Minimise Duplicates
Security provided
Field level sensitivity
Consistency of data
Data Logging,
Commits & Rollbacks
Automatic locks
HOME
Database Structures
Network Structures (e.g IDMS)
 Many to Many relationships
 Complex structure using Pointers
 Best for Keeping storage
Hierarchical Structures (e.g IMS DB)
 One to Many Relationships
 Inverted Tree like Structure
 Best for storing parent and child type entities
Relational Structures (e.g DB2)
 One to Many, Many to One
 Best for ease of data retrieval
HOME
Access Types
 HSAM/SHSAM (Simple /Hierarchic sequential Access Method)
The segments that make up the database record are related to one another by
their physical locations (SHSAM has only root occurrences)
 HISAM/SHISAM (Simple / Hierarchic Indexed Sequential Access Method)
The data is stored with hierarchic sequential organization along with an index
for random processing (SHISAM has only index of root occurrences)
 HDAM (Hierarchic Direct Access Method)
The segment occurrences include prefixes that contain the direct address
pointers to related segment - stores root segment occurrences
 HIDAM (Hierarchic Indexed Direct Access Method)
Similar to HDAM but stores an index of the root segment occurrences
HOME
IMS DB Hierarchical Structure
SRCS
Information
Database
SRCSunits
Stratergic Business
Units info
Client Info
Clients
Employ
Employee data
Project Info
Projects
Salary
Employee Salary
Details
Basic IMS Terminologies
HOME
3
SRCS
Information
Database
1
2
SRCS Units
Client Info
Clients
Employ
Project Info
Projects
Salary
Segment
Occurrence
Root Segment
Parent Segment
Child Segment
Segment Level
Path
Database Record
Twins
Sequential Processing
Random Processing
HOME
Definitions
 Segment
- Unit of Information handled in IMS
- Unit of data transferred from DL/I in an IO operation
- Consists of fields, key fields & Search fields
 Occurrence
- Specific segment of a particular type of segment
- Contains actual user data
 Root Segment
- Top of the hierarchy
- All other segments are derived from the root
 Parent Segment
- Segment that has dependent segments
HOME
Definitions (contd)
 Child Segment
- A dependent segment
 Segment Level
- Depth of an IMS structure
- Root is at Level 0, max 15 levels, max 255 segments
 Path
- Series of segments from Root to the child
 Database record
- Each occurrence of the Segment Plus all
occurrence of the subordinate segments
 Twins
- Segment occurrences of same type with same parent
segment occurrence
HOME
IMS Control Blocks
PSB
PCB for DB1
IMS
IMS
PCB for DB2
PGM1
PGM2
PCB for DB3
DBDs
DBD1
DBD2
DBD3
DL/I
CONTROL
UNIT
IMS DBs
DB1
DB2
DB3
DBD
: Database Description, describes physical Database HOME
DBDGEN : DBDGEN Utility, Describes the physical structure of
the Database and creates DBD
 DBD : Names the database and identifies the access method
DBD Name = SRCS, ACCESS=(HIDAM,VSAM)
 DATASET : Specifies DD Name used in the JCL and other parameters
DATASET DD1=DDSAT,DEVICE=3380,SIZE=(4096),FRSPC=(0,15)
 SEGM
: Names the segment. Identifies the parent and establishes the length
SEGM Name =SRU,PARENT=0,BYTES=40
 LCHILD : Names the logical segment used in secondary Indexing and Logical
database
LCHILD NAME=(SRUNAME,SRCS1),PTR=INDX
 FIELD : Defines fields. And identifies search &key fields by SEQ parameter
FIELD NAME=(SRUCODE,SEQ,U)BYTES=3,START=1,TYPE=C
 DBDGEN: Indicates the end of the DBDGEN process
DBDGEN
 COMMENT: ‘*’ IN 3rd COLUMN for writing user comments
HOME
Sample DBD Listing for SRCS Info Database
DBD NAME=SRCS,ACCESS=(HIDAM,VSAM)
DSG1 DATASET DD1=DDSAT,DEVICE=3380,SIZE=4096,FRSPC=0,15)
SEGM NAME=SRU,PARENT=0,BYTES=40
FIELD NAME=(SRUCODE,SEQ,U),BYTES=3,START=1,TYPE=P
FIELD NAME=SRUNAME,BYTES=5,START=4,TYPE=C
FIELD NAME=SRULOC,BYTES=12,START=9,TYPE=C
FIELD NAME=SRUHEAD,BYTES=20,START=21,TYPE=C
SEGM NAME=CLIENT,PARENT=SRU,BYTES=45
FIELD NAME=(CLTID,SEQ,U),BYTES=4,START=1,TYPE=P
FIELD NAME=CLTNAME,BYTES=10,START=5,TYPE=C
FIELD NAME=CLTLOC,BYTES=11,START=15,TYPE=C
FIELD NAME=CLTHEAD,BYTES=20,START=26,TYPE=C
HOME
SEGM NAME=PROJECT,PARENT=CLIENT,BYTES=35
FIELD NAME=(PRJID,SEQ,U),BYTES=4,START=1,TYPE=P
FIELD NAME=PRJNAME,BYTES=5,START=5,TYPE=C
FIELD NAME=PRJTMSIZE,BYTES=4,START=10,TYPE=C
FIELD NAME=PRJHEAD,BYTES=22,START=14,TYPE=C
SEGM NAME=EMPLY,PARENT=SRU,BYTES=40
FIELD NAME=(EMPID,SEQ,U),BYTES=5,START=1,TYPE=P
FIELD NAME=EMPNAME,BYTES=10,START=6,TYPE=C
FIELD NAME=EMPPROJ,BYTES=5,START=16,TYPE=C
FIELD NAME=EMPADDR,BYTES=20,START=21,TYPE=C
SEGM NAME=SALARY,PARENT=EMPLY,BYTES=35
FIELD NAME=(SALEMPID,SEQ,U),BYTES=5,START=1,TYPE=P
FIELD NAME=SALBASIC,BYTES=10,START=6,TYPE=C
FIELD NAME=SALHRA,BYTES=5,START=16,TYPE=C
FIELD NAME=SALDA,BYTES=5,START=21,TYPE=C
DBDGEN
FINISH
END
PSB
HOME
Program Specification Block,describes Logical structure of the Database that a
program will use.It contains one or more PCB’s (Program Communication Block).
PCB describes one Database.
PSBGEN
PSBGEN Produces a load module stored in the PSBLIB library and creates PSB
Major Macros Used
PCB
PCB
SENSEG
SENSEG
SENFLD
SENFLD
PSBGEN
END
: Describes type (DB or DC), name of the DBD, Key length(length of
the longest concatenated key the program can process) and
processing Option (Defines how the segment may be accessed)
TYPE=DB,DBDNAME=SRCS,KEYLEN=20,PROCOPT=LS
: Define the name of the segments in the Database your program
needs access to
NAME=CLIENT,PARENT=SRU
: Subordinate to the SENSEG macro, only fields that are defined by
the SENFLD macro can be accessed from the I/O Area.
NAME=PROJECT,PARENT=CLIENT
PSBNAME=MYPSB,LANG=COBOL
SAMPLE PSB FOR SRCS INFO DB PROJECT REFERENCE PROGRAM
HOME
PCB
TYPE=DB,DBDNAME=SRCS,KEYLEN=10,PROCOPT=LS
SENSEG NAME=SRU,PARENT=0
SENSEG NAME=CLIENT,PARENT=SRU
SENSEG NAME=PROJECT,PARENT=CLIENT
PSBGEN PSBNAME=MYPSB,LANG=COBOL
END
SAMPLE PSB FOR SRCS INFO DB PROJECT REFERENCE PROGRAM
PCB
TYPE=DB,DBDNAME=SRCS,KEYLEN=10,PROCOPT=LS
SENSEG NAME=SRU,PARENT=0
SENSEG NAME=CLIENT,PARENT=SRU
SENSEG NAME=PROJECT,PARENT=CLIENT
SENSEG NAME=EMPLY,PARENT=SRU
SENSEG NAME=SALARY,PARENT=EMPLY
PSBGEN PSBNAME=MYPSB,LANG=COBOL
END
DL/I INTERFACE
HOME
• DL/I passes control to your program
• Uses ENRTY and CALL statement to code DL/I call in the Procedure Division
ENTRY ‘DLITCBL’
USING
PCB-name1
PCB-name2
This DL/I tells entry of the program for Batch program & MPP program
CALL
‘CBLTDLI’
USING
DLI-FUNCTION
PCB-mask
Segment-io-area
[segment search arguments (s)]
This call is the name of the interface module that link edited with your
program’s object module.
CALL PARAMETERS
CALL
‘CBLDTLI’
USING
HOME
DLI-FUNCTION
PCB-mask
Segment-io-area
[segment search argument (s) ]
If we use PL/I language then CBLTDLI will be PLITDLI
Parameter
DL/I -Function
PCB-mask
IO-Area
SSA
Function
A four byte code that tells DL/I what kind of call to make
Arguments tells DL/I which PCB to use for the call
Tells DL/I where to put the segment
Gives DL/I additional criteria to use in finding a particular
Segment, Can be upto 15 SSA’s
DL/I FUNCTIONS
GU
GN
GNP
GHU
GHN
GHNP
ISRT
REPL
DLET
CHKP
XRST
INIT
SYNC
-
Get Unique
Get Next
Get Next within Parent
Get Hold Unique
Get Hold Next
Get Hold Next within Parent
To Insert
To replace
To Delete
To take a Checkpoint at a particular point
To Restart from Particular point previous Checkpoint
To Initialize
To commit
HOME
PCB MASK
HOME
Define in linkage Section and establishes correspondence between linkage Section
PSB-mask and PSB’s with in your program.
SAMPLE PCB-MASK LAYOUT
VARIABLE
DESCRIPTION
01 SRCS-PCB-MASK.
03 SR-DBD-NAME
PIC X(8). Name of the Database being processed
03 SR-SEG-LEVEL
PIC XX. Specifies current segment level in the DB
03 SR-STATUS-CODE PIC XX. Contains data yr program will evaluate after call
03 SR-PROC-OPT
PIC X(4). Type of processing the program authorized to do
03 SR-SEG-NAME
PIC X(8). Stores name of the segment just proceeded
03 SR-KEY-LENGTH PIC S9(5). Length of the concatenated key
03 SR-NUM-SENSEGS PIC S9(5). No of SENSEG macros subordinate to the PCB
03 SR-KEY-VALUE PIC X(20). Key value retrieved
I-O AREA LAYOUT FOR SEGMENTS
HOME
SRUCODE SRUNAME SRULOC SRUHEAD
01 SRU-AREA.
03 SRU-CODE
03 SRU-NAME
03 SRU-LOC
03 SRU-HEAD
CLTID
EMPID
CLTNAME CLTLOC CLT-HEAD
01 CLIENT-AREA.
03 CLT-CLTID
03 CLT-CLTNAME
03 CLT-CLTLOC
03 CLT-CLTHEAD
PROJID
PIC X(3).
PIC X(5).
PIC X(12)
PIC X(20).
PIC X(4).
PIC X(10).
PIC X(11)
PIC X(20).
PRJNAME TMSIZE
01 PRJ-AREA.
03 PRJ-PROJID
03 PRJ-PRJNAME
03 PRJ-TMSIZE
03 PRJ-HEAD
PIC X(4).
PIC X(5).
PIC X(4)
PIC X(20).
EMPID
PRJADDR
EMPNAME EMPPROJ EMPADR
01 EMP-AREA.
03 EMP-ID
03 EMP-NAME
03 EMP-PROJ
03 EMP-ADR
BASIC
HRA
01 SAL-AREA.
03 SAL-EMPID
03 SAL-BASIC
03 SAL-HRA
03 SAL-DA
PIC X(5).
PIC X(10).
PIC X(5)
PIC X(20).
DA
PIC X(5).
PIC X(10).
PIC X(5).
PIC X(5).
SEGMENT SEARCH ARGUMENT
HOME
• Identifies Segment Occurrence You want to access
• You may have to code several SSA’s in a single DL/I CALL
• There are two types of SSA’s Unqualified SSA & Qualified SSA
UNQUALIFIED
• Search for a Specific Segment type
• Access the database Sequentially
• Identify by segment name and space
QUALIFIED
Searches for a specific occurrence of a
specific segment type
Access the database Randomly
Identify by segment name and Seg-key
• Example
01 UNSRU-SSA.
01 QUALKBU-SSA.
03 SRU-UNSSA-NM PIC X(8) Value ‘SRU ‘.
03 SEG-NAME PIC X(8) VALUE ‘SRU
‘.
03 FILLER
PIC X Value Space.
03 COM-CODE PIC X(2) VALUE ‘*-’.
03 BEGIN-QUAL PIC X VALUE ‘(‘.
03 KEY-NAME PIC X(8) VALUE ‘SRUKEY’.
03 REL-OPR
PIC X(2) VALUE ‘= ‘.
03 KEY-VALUE PIC X(20).
03 END-QUAL PIC X VALUE ‘)’.
HOME
COMMAND CODES
Command Code
D
F
L
U
V
Q
N
C
P
-
Description
Retrieve Path
Access First Segment occurrence
Access Last Segment occurrence
Maintain current position at this level
Maintain current position at this level and higher levels
Enqueue Segment
Do Not replace this Segment
Use a Concatenated Key
Establish Percentage at this level
Null command code / ignore
Data Sensitivity
•DBA
At a PSB level for SEGMENTS PROCOPT
PCB TYPE=DB,DBDNAME-SRCS,,KEYLEN=11,PROCOPT
SENSEG NAME =SRU,PARENT=0
SENSEG NAME =CLIENT,PARENT=SRU
Processing Options : G, I, R, D, A, P, O, N, T, E, L, GS, LS, H
At a PSB level for fields
Done by DBA by use of SENFLD macro , specifying those fields
that can be changed.
•Programmer
At PROGRAM Level
- Qualified SSA call with Command code N (No Replacement)
HOME
Checkpointing & Restart
HOME
• A point in the program where the database changes the program made are
Considered complete and accurate -written to a DL/I log
• Used for Recovery Process
• Are of two types - Basic Checkpointing and Symbolic Checkpointing
• Basic Checkpointing
CALL ‘CBLTDLI’ USING DLI-CHKP,
I-O-PCB-MASK,
CHECKPOINT-ID.
• Symbolic Checkpointing
Stores program data along with checkpoint records and retrieves that data
when program restarts after failure.
For extended Restart , an XRST call to be issued with the same fields as in
CHKP call. It allows DL/I to retrieve the value in checkpoint record and
restores the specified fields.
Explosive Mix - IMS DB with CICS
HOME
• Scheduling Call
CICS Region / Partition
User Interface Block
(UIB)
User Task
Program Communication
Block
(PCB)
A DL/I task must establish addressability to UIB and one or more PCB
IMS & CICS Continued
CALL ‘CBLTDLI’ USING FUNC-INIT
PSB-NAME
ADDRESS OF DLIUIB
SET ADDRESS OF PCB-ADDR-LIST TO UIBPCBAL
SET ADDRESS OF PCB-1
TO PCB-1-ADR
SET ADDRESS OF PCB-2
TO PCB-2-ADR
…...
HOME
User Interface Block
Address of PCB List
Address of PCB 1
PCB Address list
Address of PCB 2
PCB1
PCB2
Secondary Indexing
HOME
Employee Index Database
EMP..Seg
Addr
SRU
Index Target
Segment
Employee ID
Index Pointer Segment
Index Source Segment
CLIENTS
PROJECTS
EMPLOYEE
Same index Source segment and index target segment
Secondary Indexing Continued
HOME
Employee Index Database
SRU..Seg
Addr
SRU
Index Target
Segment
Employee ID
Index Pointer Segment
Index Source Segment
CLIENTS
PROJECTS
EMPLOYEE
Different index Source segment and index target segment
Secondary Indexing Continued
HOME
• Alternate sequencing is provided by storing pointers to Segments of the indexed
Database in a separate secondary index data base
• Secondary index data base has only one segment type - the Index pointer segment
which in turn contains a prefix element and a data element
• Prefix element points to the index target segment
• Secondary indexing is useful for accessing segments were both
Index source segment and index target segment are same
Index source segment and index target segment are different
• Two DBDGENS are required as a secondary database involves two database: one
for indexed database , the other for the secondary index database
Secondary Indexing Continued
HOME
DBDGEN - The Secondary Index code for SRCS DB
DBD NAME=SRCS,ACCESS=(HIDAM,VSAM)
DSG1 DATASET DD1=DDSAT,DEVICE=3380,SIZE=4096,FRSPC=0,15)
SEGM NAME=SRU,PARENT=0,BYTES=40
FIELD NAME=(SRUCD,SEQ,U),BYTES=2,START=1,TYPE=P
……
SEGM NAME=EMPLY,PARENT=SRU,BYTES=80
LCHILD NAME= (MYPNTR,MYDBD),POINTER=INDX
FIELD NAME=(EMPID,SEQ,U),BYTES=5,START=1,TYPE=P
XDFLD NAME=MYINDX,SRCH=EMPID
FIELD NAME=EMPNAME,BYTES=25,START=6,TYPE=C
FIELD NAME=EMPPROJ,BYTES=15,START=31,TYPE=C
FIELD NAME=EMPADDR,BYTES=35,START=46,TYPE=C
…….
Secondary Indexing Continued
HOME
DBDGEN - The Secondary Index code for Secondary Index DB
DBD NAME=MYIDBD,ACCESS=(INDEX)
DSG1 DATASET DD1=DDKAY,DEVICE=3380,SIZE=4096,FRSPC=0,15)
SEGM NAME=MYPNTR,PARENT=0,BYTES=6
LCHILD NAME= (EMPID,SRCS), INDX=MYINDX
FIELD NAME=(MYEMPID,SEQ,U),BYTES=6,START=1,TYPE=C
DBDGEN
FINISH
END
PSB Requirements for Secondary Indexing.
PCB
TYPE=DB,DBDNAME=SRCS,KEYLEN=10,PROCOPT=LS,
PROCSEQ=MYIDBD
SENSEG NAME=EMPLY
SENSEG NAME=SRU,PARENT=EMPLY
PSBGEN PSBNAME=MYSBX,LANG=COBOL
END
Difference Between MPP , BMP & DLI
HOME
• MPP (Message Processing Program)
For Online programs( IMSDC) only.
PSB used by a MPP program cannot be used by another programs simultaneously.
Cannot run on Individual partitions.
• BMP (Batch message processing)
For batch programs only
PSB used by a BMP program cannot be used by another programs simultaneously.
All partitions specified in PSB will be allocated whether used by program or not.
Cannot run on Individual partitions.
• DL/I
It can be used as Interface between MPP and Database OR BMP and Database
For batch DL/I job it can access database directly
PSB of DL/I job can be used by another jobs simultaneously
It can run on Individual partitions.
HOME