System DB Concepts amp Programming Files Vs Databases Networked Hierarchical amp Relational structure Access types HSAM HISAMHDAMHIDAMVSAM IMS DB an Hierarchical
Download Presentation The PPT/PDF document "" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Information Management System DB Concepts & Programming
Slide2
Files Vs DatabasesNetworked, Hierarchical & Relational structure
Access types - HSAM, HISAM,HDAM,HIDAM,VSAM
IMS DB - an Hierarchical StructureDatabase Definitions - DBDProgram Specification Block ,Program Control Block DL/I Calls - Data Retrieval and ManipulationDL/I FunctionsQualified/ Unqualified Calls, SSAs, Command CodesDL/I Status codes
Basic
TopicsSlide3
Advanced TopicsData Sensitivity - Segment Level & Field levelCheckpoint & Restart
IMS DB in CICS Environment
Secondary IndexingDifference between MPP, BMP, DLIUsing ‘HFCTDLI’Slide4
File Vs DatabasesData more redundant Redundancy avoidedDuplicate data
Minimize
DuplicatesData insecure Security providedNo control over data Field level sensitivityThreat to Integrity Consistency of dataLack of inbuilt Data Logging, recovery features Commits & Rollbacks
Lack of data Locks Automatic locksSlide5
Database StructuresNetwork Structures (e.g IDMS)
Many to Many relationships
Complex structure using PointersBest for Keeping storageHierarchical 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 retrievalSlide6
Access TypesHSAM/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 occurrencesSlide7
Slide8
Basic IMS TerminologiesSRCS Units
2
1
3
Clients
Employ
Projects
Salary
Root
Segment
Parent Segment
Child Segment
Segment
Level
Segment Occurrence
Path
Database Record
Twins
Sequential Processing
Random Processing
SRCS
Information
Database
Client Info
Project InfoSlide9
DefinitionsSegment
- Unit of Information handled in IMS
- Unit of data transferred from DL/I in an IO operation - Consists of fields, key fields & Search fieldsOccurrence
- 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 segmentsSlide10
Definitions (contd)Child
Segment
- A dependent segmentSegment 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 occurrenceSlide11
IMS Control BlocksIMS PGM1
IMS
PGM2
DL/I
CONTROL
UNIT
DBD1
DBD2
DBD3
PCB for DB1
PCB for DB2
PCB for DB3
PSB
DBDs
IMS DBs
DB1
DB2
DB3Slide12
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=INDXFIELD : Defines fields. And identifies search &key fields by SEQ parameter FIELD NAME=(SRUCODE,SEQ,U)BYTES=3,START=1,TYPE=CDBDGEN: Indicates the end of the DBDGEN process DBDGENCOMMENT: ‘*’ IN 3rd COLUMN for writing user comments
DBD : Database Description, describes physical Database
DBDGEN : DBDGEN Utility, Describes the physical structure of
the Database and creates DBDSlide13
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 Slide14
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=CSEGM 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=CSEGM 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=CDBDGENFINISHENDSlide15
PSB 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 PSBMajor Macros UsedPCB : 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)PCB TYPE=DB,DBDNAME=SRCS,KEYLEN=20,PROCOPT=LSSENSEG : Define the name of the segments in the Database your program needs access toSENSEG NAME=CLIENT,PARENT=SRUSENFLD : Subordinate to the SENSEG macro, only fields that are defined by the SENFLD macro can be accessed from the I/O Area.SENFLD NAME=PROJECT,PARENT=CLIENTPSBGEN PSBNAME=MYPSB,LANG=COBOLEND Slide16
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 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 Slide17
DL/I INTERFACE 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.Slide18
CALL PARAMETERSCALL ‘CBLDTLI’ USING DLI-FUNCTION PCB-mask Segment-io-area [segment search argument (s) ] If we use PL/I language then CBLTDLI will be PLITDLI
Parameter Function
DL/I -Function A four byte code that tells DL/I what kind of call to makePCB-mask Arguments tells DL/I which PCB to use for the callIO-Area Tells DL/I where to put the segmentSSA Gives DL/I additional criteria to use in finding a particular Segment, Can be upto 15 SSA’s Slide19
DL/I FUNCTIONS 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
ISRT - To Insert
REPL - To replace DLET - To Delete CHKP - To take a Checkpoint at a particular point XRST - To Restart from Particular point previous Checkpoint INIT - To Initialize SYNC - To commit Slide20
PCB MASKDefine 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 Slide21
I-O AREA LAYOUT FOR SEGMENTS
SRUCODE
SRUNAME
SRULOC
SRUHEAD
01 SRU-AREA.
03 SRU-CODE PIC X(3).
03 SRU-NAME PIC X(5).
03 SRU-LOC PIC X(12)
03 SRU-HEAD PIC X(20).
CLTID
CLTNAME
CLTLOC
CLT-HEAD
01 CLIENT-AREA.
03 CLT-CLTID PIC X(4).
03 CLT-CLTNAME PIC X(10).
03 CLT-CLTLOC PIC X(11)
03 CLT-CLTHEAD PIC X(20).
PROJID
PRJNAME
TMSIZE
PRJADDR
01 PRJ-AREA.
03 PRJ-PROJID PIC X(4).
03 PRJ-PRJNAME PIC X(5).
03 PRJ-TMSIZE PIC X(4)
03 PRJ-HEAD PIC X(20).
EMPID
EMPNAME
EMPPROJ
EMPADR
01 EMP-AREA.
03 EMP-ID PIC X(5).
03 EMP-NAME PIC X(10).
03 EMP-PROJ PIC X(5)
03 EMP-ADR PIC X(20).
01 SAL-AREA.
03 SAL-EMPID PIC X(5).
03 SAL-BASIC PIC X(10).
03 SAL-HRA PIC X(5).
03 SAL-DA PIC X(5).
EMPID
BASIC
HRA
DASlide22
SEGMENT SEARCH ARGUMENT 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 QUALIFIED
Search for a Specific Segment type Searches for a specific occurrence of a
specific segment type Access the database Sequentially Access the database Randomly Identify by segment name and space Identify by segment name and Seg-key Example01 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 ‘)’. Slide23
COMMAND CODES Command Code Description D Retrieve Path F Access First Segment occurrence L Access Last Segment occurrence
U Maintain current position at this level
V Maintain current position at this level and higher levels Q Enqueue Segment N Do Not replace this Segment C Use a Concatenated Key P Establish Percentage at this level - Null command code / ignore Slide24
DL/I STATUS CODES List of Codes Common Status Codes AB GK GB AC GP End of Database during Sequential retrieval using GN AD II
AH IX GE
AI LB Segment Occurrence as defined in a qualified SSA not AJ LC found or not added in a ISRT due to error in Specified path AK LD AM LE AI AO NO Error in opening the database dataset AT RX AU V1 Spaces DA SPACES Call ended normally DJ DX GA GB GD GESlide25
Data SensitivityDBA 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)Slide26
Checkpointing & Restart 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.Slide27
Explosive Mix - IMS DB with CICS Scheduling Call CICS Region / Partition
User Task
User Interface Block
(UIB)
Program Communication
Block
(PCB)
A DL/I task must establish addressability to UIB and one or more PCBSlide28
IMS & CICS ContinuedCALL ‘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-ADRSET ADDRESS OF PCB-2 TO PCB-2-ADR…...
User Interface Block
Address of PCB List
Address of PCB 1
Address of PCB 2
PCB Address list
PCB1
PCB2Slide29
Secondary Indexing
Employee Index Database
EMP..Seg
Addr
Employee ID
Index Pointer Segment
SRU
CLIENTS
EMPLOYEE
PROJECTS
Index Source Segment
Index Target
Segment
Same index Source segment and index target segmentSlide30
Secondary Indexing Continued
Employee Index Database
SRU..Seg
Addr
Employee ID
Index Pointer Segment
SRU
EMPLOYEE
Index Source Segment
Index Target
Segment
Different index Source segment and index target segment
CLIENTS
PROJECTSSlide31
Secondary Indexing Continued 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 databaseSlide32
Secondary Indexing Continued 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 ……. Slide33
Secondary Indexing Continued DBDGEN - The Secondary Index code for Secondary Index DBDBD 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=CDBDGENFINISHENDPSB 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 ENDSlide34
Difference Between MPP , BMP & DLI 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.