IMS Database Manager
-
Upload
jeffthomas -
Category
Documents
-
view
246 -
download
2
Transcript of IMS Database Manager
2/6/2009 03:00 PM 1
IMS Database ManagerSreesanth Narath
CSC
IMS Database Manager 2/6/2009 3:00 PM 2
• IMS Overview
• DL/I Control Blocks
• IMS DB Programming
• Segment Search Arguments
• DL/I Calls
• IMS Jobs
• Advanced Programming
IMS Database Manager
Agenda
2/6/2009 03:00 PM 3
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 4
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 Overview
IMS Database Manager 2/6/2009 3:00 PM 5
Product Features
• A MATURE PRODUCT FROM IBM• OVER 40 YEARS IN THE MARKET• MOST CRITICAL CORPORATE DATA UNDER IMS• TWO SEPARATE STRATEGIC PRODUCTS
– IMS DB MANAGER– IMS TRANSACTION MANAGER
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 6
IMS Components
• PRIMARY PRODUCTS – IMS/DB - DATABASE MANAGEMENT, LOGGING & RECOVERY– IMS/TM - ‘INTERACTIVE’ ON–LINE FUNCTIONS, TRANSACTION DRIVEN
• PRODUCT INSTALLATIONS– DBCTL– DCCTL– DB/DC
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 7
MVSMVS
CALLCALL DATADATA
APPLICATIONAPPLICATION
PROGRAMPROGRAM
DL/IDL/ILOGLOG
INPUT /INPUT /
OUTPUTOUTPUT
DATADATA
BASEBASE
DL/I ENVIRONMENT
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 8
IMS Batch Environment
• Execution via JCL.• Each job in an address space.• Uses DBCTL• Program’s address space contains a copy of DL/I modules.• Programs added without having to modify the IMS system definition.
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 9
IMS On-line Environment
• High volume, rapid response transaction processing.
• DBDC or DCCTL.
• IMS is a started task of MVS.
• IMS system definition must include information about all programs and resources under the control of IMS.
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 10
IMS Dependent Regions
• DL/I Region
• MPP Regions
• BMP Regions
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 11
MODES OF PROCESSING
BATCH DL/I MODE
MPP MODE
BMP MODE
IMS REGIONSIMS REGIONS
MPP
ONLINE
DL/I
BATCH
BMP
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 12
BATCH DL/IBATCH DL/I
TRUE BATCH PROCESSING
NO DATA COMMUNICATION SERVICES ARE USED
DATABASES ACCESSED MUST BE OFFLINE
MPP (MESSAGE PROCESSING PROGRAM)MPP (MESSAGE PROCESSING PROGRAM)
TRUE ONLINE PROCESSING
TRANSACTION ARE ENTERED AT TERMINAL AND STORED IN MESSAGE QUEUE
DATABASES ACCESSED MUST BE ONLINE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 13
BMP (BATCH MESSAGE PROCESSING)BMP (BATCH MESSAGE PROCESSING)
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
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 14
SEGMENT OCCURRNCES
TWIN SEGMENTS SIBLING SEGMENTS
-- Level 1
-- Level 2
B3
A2
D1B2
A1
C1
ROOT SEGMENT (PARENT)
B1
HIERARCHICAL STRUCTURE
FOLLOWS INVERTED TREE STRUCTURE
EACH BOX IN THE HIERARCHY REPRESENTS A SEGMENT
ROOT SEGMENT WILL BE ON TOP
EACH SEGMENT (EXCEPT ROOT SEGMENT) IS DIRECTLY DEPENDENT ON ONLY ONE SEGMENT
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 15
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 Overview
IMS Database Manager 2/6/2009 3:00 PM 16
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 Overview
IMS Database Manager 2/6/2009 3:00 PM 17
ROOT A SEGMENT WITHOUT PARENT
PARENTA SEGMENT WITH ONE OR MORE DEPENDENT SEGMENTS
DIRECTLY UNDER IT
CHILDA SEGMENT WHICH IS DIRECTLY DEPENDENT ON ANOTHER
SEGMENT
DEPENDENT ALL SEGMENTS UNDER A PARTICULAR SEGMENT OF THE DATABASE
TWIN ALL OCCURRENCES (2 OR MORE) OF A SEGMENT TYPE UNDER A PARENT
SIBLINGS OCCURRENCES OF DIFFERENT SEGMENT TYPES UNDER A PARENT
TYPES OF SEGMENTS
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 18
1
65
117
104
2 8
3 9
A
B E
CD
F
Continued ...Continued ...
IMS Overview
Segment Sequencing
Numbering From
Top to Bottom
Front to Back
Left to Right
IMS Database Manager 2/6/2009 3:00 PM 19
2 4
1
3
5 76 8 9
1. WHICH SEGMENTS ARE DEPENDENT ON SEGMENT 4?2. WHICH SEGMENTS ARE CHILD SEGMENTS OF SEGMENT 1?3. WHICH SEGMENTS ARE DEPENDENT SEGMENTS OF SEGMENT 1?4. HOW MANY LEVELS?
EXERCISEEXERCISE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 20
DATABASE RECORDDATABASE RECORD
ONE OCCURRENCE OF A ROOT SEGMENT ALONG WITH ALL ITS DEPENDENT SEGMENTS
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 21
HOW MANY DATABASE RECORDS?
EXERCISEEXERCISE
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 22
IMS DATABASE LIMITATIONS IMS DATABASE LIMITATIONS
IMS SUPPORTS
15 LEVELS
255 SEGMENTS
1000 FIELDS
NO LIMITATION ON NUMBER OF SEGMENT OCCURRENCES.
IMS Overview
IMS Database Manager 2/6/2009 3:00 PM 23
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
DL/I ALLOWS SEQUENTIAL OR RANDOM PROCESSING OF DATABASE
IMS ENVIRONMENTIMS ENVIRONMENT
App Prog
DL/I DC
TerminalDatabase
DB PCBinterface
I/O PCBinterface
IMS Overview
2/6/2009 03:00 PM 24
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 25
DATABASE DESCRIPTION (DBD)DATABASE DESCRIPTION (DBD) DEFINES THE LAYOUT OF THE DATABASE
DATABASE ADMINISTRATOR DEFINES LAYOUT USING DBDGEN MACRO
PROGRAM SPECIFICATION BLOCK (PSB)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
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 26
STATEMENTS IN DBD MACROSTATEMENTS IN DBD MACRO
DATA BASE DESCRIPTION (DBD)DATA BASE DESCRIPTION (DBD)
STATEMENT DESCRIPTIONDBD SPECIFIES DATABASE NAME, ACCESS METHOD
DATASET SPECIFIES DD NAME TO BE USED IN JCL
SEGM SPECIFIES SEGMENT NAME,SEGMENT LENGTH, PARENT
FIELD SPECIFIES FIELD NAME, LENGTH, STARTING POSITIONIDENTIFIES A FIELD AS KEY OR SEARCH FIELD
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 27
SAMPLE DBDGENSAMPLE DBDGEN
PRINT NOGENDBD NAME=VENDOR,ACCESS=HDAMDATASET DD1=VEND,DEVICE=3380SEGM NAME=VENSEG,PARENT=0,BYTES=100FIELD NAME=(VENCODE,SEQ,U),BYTES=10,START=1,TYPE=CSEGM NAME=ITEMSEG,PARENT=VENSEG,BYTES=5FIELD NAME=(ITEMCODE,SEQ,U),BYTES=5,START=1,TYPE=CSEGM NAME=LOCNSEG,PARENT=ITEMSEG,BYTES=9FIELD NAME=(LOCNCODE,SEQ),BYTES=3,START=1,TYPE=CFIELD NAME=ORDDATE,BYTES=6,START=4,TYPE=CDBDGENFINISHEND
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 28
DATATYPES USED IN DBDGENDATATYPES USED IN DBDGEN
TYPE DESCRIPTIONC Character (Default)
COBOL PICTUREX
P Packed Decimal COMP-3Z Zoned Decimal S9H Half Word Binary 9(4) COMPF Full Word Binary 9(8) COMPX Hexadecimal X’----’
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 29
CAN WE DEFINE OVERLAPPING FIELDS?
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 30
PROGRAM SPECIFICATION BLOCK (PSB)PROGRAM SPECIFICATION BLOCK (PSB)
MADE UP OF ONE OR MORE PROGRAM COMMUNICATION
BLOCKS (PCBs)
DB PCB - DEFINES PROGRAM’S 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
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 31
A
B C
D E
DATABASEDATABASE PCBPCB
PCB GIVES LOGICAL VIEW OF A DATABASE
PORTION OF DATABASE THAT THE PROGRAM PROCESSES IS CALLED APPLICATION DATA STRUCTURE
A
C
E
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 32
PRINT NOGEN
PCB TYPE=DB,DBDNAME=VENDOR,KEYLEN=15,PROCOPT=LS
SENSEG NAME=VENSEG,PARENT=0
SENSEG NAME=ITEMSEG,PARENT=VENSEG
SENFLD NAME=ITEMNO
SENFLD NAME = ITEMNAME
PSBGEN PSBNAME=KAB000B,LANG=COBOL,CMPAT=Y
END
• KEYLEN IS THE LENGTH OF CONCATENATED KEY
SAMPLE PSBGENSAMPLE PSBGEN
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 33
PROCOPTS IN PSB DEFINES SECURITY LEVEL FOR THE PROGRAM
DL/I Control Blocks
PROCOPT Description
G Get or Read
R Replace
I Insert
D Delete
A All Options (GRID)
L / LS Initial Load
K Access only Key of Segments
O Used with G to indicate Hold call is not allowed
P Path Call
IMS Database Manager 2/6/2009 3:00 PM 34
DBD1 DBD3DBD2
PCB1 PCB2
PCB3 PCB4
APPLICATION PROGRAM CAN HAVE MULTIPLE VIEWS OF A DATABASE BY USING SEPARATE PCBS FOR A SINGLE DATABASE
PSBPSB
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 35
PRINT NOGEN
PCB TYPE=DB,DBDNAME=VENDOR,KEYLEN=15
SENSEG NAME=VENSEG,PROCOPT=G
SENSEG NAME=ITEMSEG,PARENT=VENSEG,PROCOPT=R
SENSEG NAME=LOCNSEG,PARENT=ITEMSEG,PROCOPT=A
PSBGEN
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
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 36
EMPDATA
WORKDATA DEPTDATA BENDATA
BASED ON THE ABOVE VIEW OF DATABASE FILL IN THE MISSING PIECES OF PCBPCB 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
DL/I Control Blocks
IMS Database Manager 2/6/2009 3:00 PM 37
DL/I Control Blocks
DBD
ACB
PSB
Access Control Block (ACB)
•Controls Access to Database
•ACBGEN builds control blocks by getting information from DBD and PSB
2/6/2009 03:00 PM 38
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 39
IMS Call IMS Call
IMS DB Programming
Example :-
CALL ‘CBLTDLI’ USING ‘GU’VEDNOR-DB-PCBITEM-SEG-IO-AREAVENDOR-SEG-SSAITEM-SEG-SAA
IMS Database Manager 2/6/2009 3:00 PM 40
APPLICATION PROGRAM COMPONENTSAPPLICATION PROGRAM COMPONENTS
IMS DB Programming
Segment To/From Database
Return Info From DL/I
I/O Area
PCB Mask
DL/I Modules DL/I
Program Entry
Calls to DL/IRetrieveInsertDeleteReplace
ProcessingTermination
Program Logic
Data Area
IMS Database Manager 2/6/2009 3:00 PM 41
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISIONFILE SECTIONWORKING STORAGE SECTIONLINKAGE SECTION
PROCEDURE DIVISION
FUNCTION CODES
I/O AREA
SEGMENT SEARCH ARGUMENTS
PCB MASKS
DATA DIVISIONDATA DIVISION
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 42
FUNCTION CODESFUNCTION 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 AREGU - GET UNIQUEGN - GET NEXTGNP - GET NEXT WITHIN PARENTGHU - GET HOLD UNIQUEGHN - GET HOLD NEXTGHNP - GET HOLD NEXT WITHIN PARENTDLET - DELETEREPL - REPLACEISRT - INSERTXRST - RESTARTCHKP - CHECKPOINT
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 43
A RECORD DESCRIPTION IN THE WORKING STORAGE SECTION WHICH HOLDS
DATABASE SEGMENTS DATA
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
INPUT/OUTPUT AREAINPUT/OUTPUT AREA
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 44
USED IN LINKAGE SECTION
LINKAGELINKAGE SECTIONSECTION01 DB-PCB-1.
03 DBD-NAME PIC X(8).
03 SEG-LEVEL PIC X(2).
03 STATUS-CODE PIC X(2).
03 PROC-OPTIONS PIC X(4).
03 IMS-RESERVED PIC S9(5) COMP.
03 SEG-NAME PIC X(8).
03 KEY-LEN PIC S9(5) COMP.
03 NUMBER-OF-SENEGS PIC S9(5) COMP.
03 KEY-FEEDBACK PIC X(??). <= length depends on segment key
THE PCB MASKTHE PCB MASK
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 45
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 PSB
THE PCB MASKTHE PCB MASK
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 46
PROCEDUREPROCEDURE DIVISIONDIVISION.
ENTRY ‘DLITCBL’ USING DB-PCB-1,
DB-PCB-2, Sequence should match that of
:::::::::::: PSB Macro
::::::::::::
::::::::::::
CALL ‘CBLTDLI’ USING WS-FUNCTION-CODE,
DB-PCB-MASK,
IO-AREA,
SSA-1, SSA-2, SSA-3, …. Optional
::::::::::
::::::::::
GOBACK.
PROCEDURE DIVISIONPROCEDURE DIVISION
IMS DB Programming
IMS Database Manager 2/6/2009 3:00 PM 47
IMS ENTRY LINKAGEIMS ENTRY LINKAGE
IMS DB Programming
Transfers control from DL/I to the program.
Sets addressability to the PCBs
PCB listing in the ENTRY statement should be in the same sequence as they appear in the PSB of the program
IMS Database Manager 2/6/2009 3:00 PM 48
PCB – DATABASE RELATIONSHIPPCB – DATABASE RELATIONSHIP
IMS DB Programming
Call DL/I , ...., PCB1, ....Call DL/I , ...., PCB2, .....
Database
B
Database
A
PCB 2 PCB 1
DBDB DBDA
PSB
Program
2/6/2009 03:00 PM 49
Segment Search
Arguments
IMS Database Manager 2/6/2009 3:00 PM 50
STANDARD IMS CALL TO ACCESS ANY DATABASE
CALL ‘CBLTDLI’ USING FUNCTION CODE,
DB-PCB,
I-O AREA,
SSA-1,
SSA-2,
………
………
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 51
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
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 52
WHAT IS THE SIGNIFICANCE OF MAX 15 SSA?
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 53
UNQUALIFIEDUNQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT TYPE
QUALIFIEDQUALIFIED
SEARCHES FOR A SPECIFIC SEGMENT OCCURRENCE
MORE EFFICIENT THAN UNQUALIFIED SSA
TYPES OF SSASTYPES OF SSAS
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 54
UNQUALIFIED SSAUNQUALIFIED SSA
Segment Search Arguments
Segment Name b
8 1
IMS Database Manager 2/6/2009 3:00 PM 55
WORKING-STORAGE-SECTIONWORKING-STORAGE-SECTION.
…………..
01 HISTORY-SSA.
05 SEGMENT-NAME PIC X(8) VALUE ‘HISTORY ‘.
05 FILLER PIC X(1) VALUE SPACE.
Blank in 9th position or ‘*’ in 9th position ‘-‘ in position 10 and a blank in position 11
UNQUALIFIED SSAUNQUALIFIED SSA
H I S T O R Y *
H I S T O R Y
-
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 56
QUALIFIEDQUALIFIED SSASSA
Segment Search Arguments
Segment Name (
8 1
Field Name op
8 2
Comparative Value )
n 1
Identifies a specific segment occurrence.
IMS Database Manager 2/6/2009 3:00 PM 57
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’, ‘>=‘, ‘=>’
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 58
WORKING-STORAGE-SECTIONWORKING-STORAGE-SECTION.…………..01 SSA-EMPLOYEE. 03 SEGMENT-NAME PIC X(8) VALUE ‘EMPLOYEE’ 03 COMMAND-CODE PIC X(2) VALUE ‘*-’. 03 BEGIN-QUALIFY PIC X(1) VALUE ‘(‘. 03 KEY-NAME PIC X(8) VALUE ‘EMPKEY ‘. 03 OPERATOR PIC X(2) VALUE ‘ =‘. 03 KEY-VALUE PIC X(12) . 03 END-QUALIFY PIC X(1) VALUE ‘)‘.PROCEDURE DIVISION.…..MOVE ‘123456789000’ TO KEY-VALUE.CALL ‘CBLTDLI’ USING ‘GU’, EMP-PCB, EMPDATA-IO-AREA, SSA-EMPLOYEE.
QUALIFIEDQUALIFIED SSASSA
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 59
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”
COMMAND CODESCOMMAND CODES
Segment Search Arguments
IMS Database Manager 2/6/2009 3:00 PM 60
COMMAND CODESCOMMAND CODES
Segment Search Arguments
Concatenates the keyfieldsC
Overrides the default parentageP
Negates the replace function for the specified segment level following a path retrieval callN
Path Call; allows retrieval or insertion of multiple segments in a hierarchic path with a single callD
Retrieve the last occurrence of the segment typeL
Retrieve the first occurrence of the segment typeF
Command Codes Description
IMS Database Manager 2/6/2009 3:00 PM 61
COMMAND CODE ‘F’COMMAND CODE ‘F’
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:A batch process reduces the rate of interest of the first loan if the customer has more than 5 active loans
WITHOUT COMMAND CODE WITH COMMAND CODE
- ISSUE GN CALLS FOR ‘LOANDETL’ SEGMENT WITH QUALIFIED ‘CUSTOMER’ SSA AND UNUQALIFIED ‘LOANDETL’ SSA UNTIL END OF DATABASE OR 5 LOANS ARE FOUND
-ISSUE A SEPARATE GHU CALL TO GET THE FIRST LOAN SEGMENT
-UPDATE THE INTREST RATE AND ISSUE REPL CALL TO ‘LOANDETL’ SEGMENT
- ISSUE GHN CALLS FOR ‘LOANDETL’ SEGMENT WITH QUALIFIED ‘CUSTOMER’ SSA AND UNUQALIFIED ‘LOANDETL’ SSA UNTIL END OF DATABASE OR 5 LOANS ARE FOUND
-USE THE SAME GN CALL WITH ‘*F’ POPULATED IN THE FIELD FOR COMMAND CODE IN SSA
- UPDATE THE INTREST RATE AND ISSUE REPL CALL TO ‘LOANDETL’ SEGMENT
SSA01 CUSTOMER-SSA-QUAL 05 FILLER X(23) VALUE ‘CUSTOMER(CUSTID = 12345)
01 LOANDETL-SSA-UNQUAL 05 FILLER X(11) VALUE ‘LOANDETL*F’
IMS Database Manager 2/6/2009 3:00 PM 62
COMMAND CODE ‘L’COMMAND CODE ‘L’
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:Get the latest Loan Details of a particular customer
WITHOUT COMMAND CODE WITH COMMAND CODE
- ISSUE GN CALLS FOR ‘LOANDETL’ SEGMENT WITH QUALIFIED ‘CUSTOMER’ SSA AND UNUQALIFIED ‘LOANDETL’ SSA UNTIL END OF DATABASE
- ISSUE JUST ONE GN CALL FOR ‘LOANDETL’ SEGMENT WITH QUALIFIED ‘CUSTOMER’ SSA AND ‘*L’ POPULATED IN THE FIELD FOR COMMAND CODE IN UNQUALIFIED ‘LOANDETL’ SSA
SSA01 CUSTOMER-SSA-QUAL 05 FILLER X(23) VALUE ‘CUSTOMER(CUSTID = 12345)
01 LOANDETL-SSA-UNQUAL 05 FILLER X(11) VALUE ‘LOANDETL*L’
IMS Database Manager 2/6/2009 3:00 PM 63
COMMAND CODE ‘D’COMMAND CODE ‘D’
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:Get the Customer info and latest Loan Details of all Customers
WITHOUT COMMAND CODE WITH COMMAND CODE
- ISSUE A GN CALL FOR ‘CUSTOMER’ SEGMENT USING UNQUALIFIED SSA
- ISSUE GN CALLS FOR ‘LOANDETL’ SEGMENT WITH QUALIFIED ‘CUSTOMER’ SSA AND UNUQALIFIED ‘LOANDETL’ SSA UNTIL END OF DATABASE
- CONTINUE WITH STEP 1 AND STEP 2 UNTILL END OF DATABASE OCCURS IN STEP1
-ISSUE GN CALLS WITH ‘*D’ COMMAND CODE IN UNQUALIFIED ‘CUSTOMER’ SSA AND UNQUALIFIED ‘LOANDETL’ SSA ‘*L’ COMMAND CODE UNTILL END OF DATABASE
SSA01 CUSTOMER-SSA-UNQUAL 05 FILLER X(11) VALUE ‘CUSTOMER*D’
01 LOANDETL-SSA-UNQUAL 05 FILLER X(11) VALUE ‘LOANDETL*L’
IMS Database Manager 2/6/2009 3:00 PM 64
COMMAND CODE ‘N’COMMAND CODE ‘N’
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:Reduce the interest rate if the age of the customer is more than 65
WITHOUT COMMAND CODE WITH COMMAND CODE
- ISSUE A GN CALL FOR ‘CUSTOMER’ SEGMENT USING UNQUALIFIED SSA
- IF THE AGE OF CUSTOMER IS MORE THAN 65, ISSUE A GHN CALL FOR ‘LOANDETL’ SEGMENT WITH UNUQALIFIED ‘LOANDETL’ SSA
- UPDATE THE INTEREST RATE AND ISSUE A REPLACE CALL
- ISSUE A GHN CALL WITH ‘*DN’ COMMAND CODE IN UNQUALIFIED ‘CUSTOMER’ SSA AND UNQUALIFIED ‘LOANDETL’ SSA
- IF THE AGE OF CUSTOMER AGE OF CUSTOMER IS MORE THAN 65, UPDATE THE INTEREST RATE AND ISSUE A REPLACE CALL
SSA01 CUSTOMER-SSA-UNQUAL 05 FILLER X(11) VALUE ‘CUSTOMER*DN’
01 LOANDETL-SSA-UNQUAL 05 FILLER X(11) VALUE ‘LOANDETL’
IMS Database Manager 2/6/2009 3:00 PM 65
COMMAND CODE ‘P’COMMAND CODE ‘P’
Segment Search Arguments
CUSTOMER
Bank Customer Database
LOANDETL
Requirement:Get the all the Loan Details for a particular Customer
WITHOUT COMMAND CODE WITH COMMAND CODE
- ISSUE A GU/GN CALL FOR ‘CUSTOMER’ SEGMENT USING QUALIFIED SSA
- ISSUE GNP CALLS FOR ‘LOANDETL’ SEGMENT WITH UNUQALIFIED ‘LOANDETL’ SSA UNTIL END OF DATABASE
- ISSUE A GN CALL FOR ‘LOANDETL’ SEGMENT USING QUALIFIED ‘CUSTOMER’ SSA WITH *P COMMAND CODE AND UNQUALIFIED ‘LOANDETL’ SSA
- ISSUE GNP CALLS FOR ‘LOANDETL’ SEGMENT WITH UNUQALIFIED ‘LOANDETL’ SSA UNTIL END OF DATABASE
SSA01 CUSTOMER-SSA-QUAL 05 FILLER X(23) VALUE ‘CUSTOMER*P(CUSTID = 12345)
01 LOANDETL-SSA-UNQUAL 05 FILLER X(11) VALUE ‘LOANDETL
IMS Database Manager 2/6/2009 3:00 PM 66
COMMAND CODE ‘C’COMMAND CODE ‘C’
Segment Search Arguments
SUPPLIER
Supplier Database
ITEMS
Requirement:Get the Item Price details for Item Code = ‘AB100’ for Supplier Code = ‘12345’
WITHOUT COMMAND CODE WITH COMMAND CODE
- ISSUE A GU CALL FOR ‘ITEM’ SEGMENT USING QUALIFIED ’SUPPLIER’ SEGMENT SSA AND QUALIFIED ‘ITEMS’ SEGMENT SSA
SSA01 SUPPLIER-SSA-QUAL 05 FILLER X(11) VALUE ‘SUPPLIER(SUPLRID = 12345)
01 ITEMS-SSA-QUAL 05 FILLER X(11) VALUE ‘ITEMS (ITEMCODE =AB100)
- ISSUE A GU CALL FOR ‘ITEM’ SEGMENT USING QUALIFIED SSA FOR ‘ITEMS’ SEGMENT WITH ‘*C’ COMMAND CODE AND CONCATENATED KEYFIELDS
SSA01 ITEMS-SSA-QUAL 05 FILLER X(11) VALUE ‘ITEMS *C(ITEMCODE =12345AB100)
IMS Database Manager 2/6/2009 3:00 PM 67
BOOLEAN OPERATIONS IN SSABOOLEAN OPERATIONS IN SSA
Segment Search Arguments
USED TO FURTHER RESTRICT THE SEARCH
CAN BE SEARCHED WITH MORE THAN ONE CONDITION OR MORE THAN ONE FIELDS
CODED IN THE SAME QUALIFIED SSA
IMS Database Manager 2/6/2009 3:00 PM 68
BOOLEAN OPERATIONS IN SSABOOLEAN OPERATIONS IN SSA
Segment Search Arguments
01 SSA-ITEMSEG-QUAL-B. 03 SEGMENT-NAME PIC X(8) VALUE ‘ITEMSEG ’ 03 COMMAND-CODE PIC X(2) VALUE ‘*-’. 03 BEGIN-QUALIFY PIC X(1) VALUE ‘(‘. 03 KEY-NAME1 PIC X(8) VALUE ‘ITEMNO ‘. 03 KEY-OPER1 PIC X(2) VALUE ‘ >‘. 03 KEY-VALUE1 PIC X(5). 03 BOOLEAN-FILLER PIC X(1) VALUE ‘&’ 03 KEY-NAME2 PIC X(8) VALUE ‘ITEMNO ‘. 03 KEY-OPER2 PIC X(2) VALUE ‘ <‘. 03 KEY-VALUE2 PIC X(5). 03 END-QUALIFY PIC X(1) VALUE ‘)‘.
‘ITEMSEG *-(ITEMNO > 50000&ITEMNO < 60000)’
Example -1
IMS Database Manager 2/6/2009 3:00 PM 69
BOOLEAN OPERATIONS IN SSABOOLEAN OPERATIONS IN SSA
Segment Search Arguments
01 SSA-EMPLOYEE-QUAL-B. 03 SEGMENT-NAME PIC X(8) VALUE ‘EMPDATA ’ 03 COMMAND-CODE PIC X(2) VALUE ‘*-’. 03 BEGIN-QUALIFY PIC X(1) VALUE ‘(‘. 03 KEY-NAME1 PIC X(8) VALUE ‘EMPDEPT ‘. 03 KEY-OPER1 PIC X(2) VALUE ‘EQ‘. 03 KEY-VALUE1 PIC X(10). 03 BOOLEAN-FILLER PIC X(1) VALUE ‘&’ 03 KEY-NAME2 PIC X(8) VALUE ‘EMPSTAT ‘. 03 KEY-OPER2 PIC X(2) VALUE ‘NE‘. 03 KEY-VALUE2 PIC X(10). 03 END-QUALIFY PIC X(1) VALUE ‘)‘.
‘EMPDATA *-(EMPDEPT EQ FINANCE &EMPSTAT NE RETIRED )’
Example -2
2/6/2009 03:00 PM 70
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 71
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
DL/I RETRIEVAL CALLSDL/I RETRIEVAL CALLS
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 72
GET UNIQUEGET UNIQUE
CALL ‘CBLTDLI’ USING ‘GU ‘, PCB-MASK,SEGMENT-IO-AREASEGMENTA*-(AKEY=1)SEGMENTB*-(BKEY=2)SEGMENTD*-(DKEY=6)
AFTER THE CALL SEGMENTD WITH DKEY=6 WILL BE IN SEGMENT-IO-AREA
1
6
5
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEY DKEY FKEY
EXERCISEEXERCISE: WRITE A GU TO RETRIEVE FKEY=10
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 73
WHAT WILL BE THE OUTPUT OF A GU CALL WITH NO SSA?
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 74
DL/I Calls
COMMON STATUS CODES FOR ‘GU’COMMON STATUS CODES FOR ‘GU’
SPACES - THE CALL IS SUCCESSFUL
GE - THE SEGMENT NOT FOUND
IMS Database Manager 2/6/2009 3:00 PM 75
GET NEXTGET NEXT
1
6
5
117
104
2 8
3 9
AKEY
BKEY
EKEY
CKEYDKEY FKEY
GK
GA
DL/I Calls
CALL ‘CBLTDLI’ USING ‘GN ‘ PCB-MASK,
SEG-IO-AREA,
IMS Database Manager 2/6/2009 3:00 PM 76
CALL ‘CBLTDLI’ USING ‘GN ‘, PCB-MASK,SEG-IO-AREA,SEGMENTA*-(AKEY=1)SEGMENTE*-(EKEY=8)
AFTER THE CALL SEGMENTE WITH EKEY=8 WILL BE IN PROGRAM I/O AREA
1
6
5
117
104
2 8
3 9
AKEY
BKEY EKEY
CKEYDKEY
FKEY
WHAT WILL BE THE RESULTS OF FOUR CONSEQUETIVE GNs AFTER EKEY=8 IS RETRIEVED?
EXERCISEEXERCISE
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 77
DL/I Calls
COMMON STATUS CODES FOR ‘GN’COMMON STATUS CODES FOR ‘GN’
SPACES - THE CALL IS SUCCESSFUL
GB - END OF DATABASE
IMS Database Manager 2/6/2009 3:00 PM 78
CALL ‘CBLTDLI’ USING ‘GU ’, LS-PCB-MASK, SEGMENT-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2)
CALL ‘CBLTDLI’ USING ‘GNP ‘, LS-PCB-MASK, SEGMENT-IO-AREA
AFTER THE CALL SEGMENTC WITH CKEY=3 WILL BE IN SEGMENT-IO-AREA
GET NEXT WITHIN PARENTGET NEXT WITHIN PARENT
1
65
117
104
2 8
3 9
AKEY
BKEY EKEY
CKEYDKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 79
WHAT WILL BE THE OUTPUT IF GNP IS DONE 4 MORE TIMES IN
PREVIOUS EXAMPLE?
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 80
DL/I Calls
COMMON STATUS CODES FOR ‘GNP’COMMON STATUS CODES FOR ‘GNP’
SPACES - THE CALL IS SUCCESSFUL
GE - SEGMENT NOT FOUND / NO MORE SEGMENTS TO RETRIEVE
IMS Database Manager 2/6/2009 3:00 PM 81
CALL ‘CBLTDLI’ USING ‘GN ‘, LS-PCB-MASK, WS-SEG-IO-AREA,
SEGMENTA*D(AKEY=1)
SEGMENTF*-(FKEY=10)
WHAT WILL BE THE RESULT AFTER SUCCESSFUL COMPLETION OF THE ABOVE CALL?
PATH CALLPATH CALL
1
6
5
117
104
2 8
3 9
BKEY
EKEY
CKEYDKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 82
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
GET HOLD CALLS (GHU/GHN/GHNP)GET HOLD CALLS (GHU/GHN/GHNP)
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 83
SEGMENTS MUST HAVE BEEN RETRIEVED WITH A GET HOLD CALL (GHU, GHN, GHNP)
NO INTERVENING CALLS BETWEEN GET HOLD CALL AND REPLACE/DELETE CALLS
MULTIPLE REPLACE CALLS ALLOWED AFTER A GET HOLD CALL
DELETE/REPLACE CALLSDELETE/REPLACE CALLS
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 84
CALL ‘CBLTDLI’ USING ‘GHU ‘, LS-PCB-MASK, SEGMENT-IO-AREA
SEGMENTA*-(AKEY=1)
SEGMENTB*-(BKEY=2).
CALL ‘CBLTDLI’ USING ‘DLET’, LS-PCB-MASK
DELETE CALLDELETE CALL
WHAT WILL BE THE RESULT IF THE FIRST GHU CALL IS SEGMENTA*D(AKEY=1)?
1
6
5
117
104
2 8
3 9
BKEY EKEY
CKEYDKEY
AKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 85
UPDATE CONTENTS OF A SEGMENT
KEY FIELD MAY NOT BE ALTERED
SSAs ARE NOT USED NORMALLY
COMMAND CODES
D - TO REPLACE PATH OF SEGMENTS
N - TO EXCLUDE SEGMENTS FROM PATH
REPLACE (REPL)REPLACE (REPL)
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 86
CALL ‘CBLTDLI’ USING ‘GHU ‘, LS-PCB-MASK, WS-IO-AREA,SEGMENTA*-(AKEY=1)SEGMENTB*-(BKEY=2)SEGMENTC*-(CKEY=3)
Change contents of WS-IO-AREA
CALL ‘CBLTDLI USING ‘REPL’, LS-PCB-MASK, WS-IO-AREA
----- WILL RESULT IN UPDATE OF SEGMENTC
1
6
5
117
104
2 8
3 9
BKEYEKEY
CKEYDKEY FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 87
DL/I Calls
COMMON STATUS CODES FOR ‘REPL’COMMON STATUS CODES FOR ‘REPL’
SPACES- SUCCESSFUL REPLACE
DA - TRYING TO CHANGE KEY
DJ - NO PRECEDING GET HOLD CALL
RX - REPLACE RULE VIOLATION
IMS Database Manager 2/6/2009 3:00 PM 88
TWO MODES OF INSERTTWO MODES OF INSERT
LOAD MODE - FOR INITIAL LOADING OF DATABASE
UPDATE MODE - ADD TO EXISTING DATABASE
LOAD MODELOAD MODE:
FOR LOAD MODE PROCOPT = L or LS MUST BE SPECIFIED IN PSB
PROCOPT=L LOADS DATABASE BUT NOT NECESSARILY IN SEQUENTIAL ORDER
INSERT (ISRT)INSERT (ISRT)
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 89
UPDATE MODEUPDATE 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 CODESCOMMAND CODES
“F” OR “L” - OVERRIDES INSERT RULE
“D” - INSERT PATH OF SEGMENTS
INSERT (ISRT)INSERT (ISRT)
Continued ...Continued ...
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 90
99
MOVE DATA FOR SEGMENTE INTO WS-SEGMENT-IO-AREA WITH EKEY=99
CALL ‘CBLTDLI’ USING ‘ISRT’, LS-PCB-MASK, SEGMENT-IO-AREA,
SEGMENTA*-(AKEY=1)
SEGMENTE
AFTER THE CALL SEGMENTE WITH EKEY=99 IS INSERTED
1
6
5
117
104
2 8
3 9
BKEY
EKEY
CKEYDKEY
FKEY
DL/I Calls
IMS Database Manager 2/6/2009 3:00 PM 91
DL/I Calls
COMMON STATUS CODES FOR ‘ISRT’COMMON STATUS CODES FOR ‘ISRT’
SPACES - ISRT CALL IS SUCCESSFUL
GE - PARENT SEGMENT NOT FOUND
II - DUPLICATE RECORD
IMS Database Manager 2/6/2009 3:00 PM 92
DL/I Calls
COMMAND CODES ‘U’ & ‘V’COMMAND CODES ‘U’ & ‘V’
‘U’ AND ‘V’ ARE USED TO PREVENT GN AND GNP CALLS FROM LEAVING THE CURRENT POSITIONS
WHEN USED WITH UNQUALIFIED SSAs, THOSE GIVE THE EFFECTIVENESS OF QUALIFIED SSAs
IMS Database Manager 2/6/2009 3:00 PM 93
DL/I Calls
COMMAND CODES ‘U’ & ‘V’COMMAND CODES ‘U’ & ‘V’
ABC
Supplier Database
B1000A1000
ORD3
ORD2
ORD1
ORD6
ORD5
ORD4
SUPPLIER
ITEMS
ORDERS
SSA01 SUPPLIER-UNQUAL-SSA PIC X(09) VALUE ‘SUPPLIER ‘01 ITEMS-UNQUAL-SSA PIC X(09) VALUE ‘ITEMS ‘01 ORDERS-UNQUAL-SSA PIC X(09) VALUE ‘ORDERS ‘
CALL ‘CBLTDLI’ USING ‘GN ‘ SUPPLIER-DB-PCB, ORDERS-IO-AREA SUPPLIER-UNQUAL-SSA ITEMS-UNQUAL-SSA ORDERS-UNQUAL-SSA
WITHOUT COMMAND CODE ‘U’
SSA01 SUPPLIER-UNQUAL-SSA PIC X(09) VALUE ‘SUPPLIER ‘01 ITEMS-UNQUAL-SSA PIC X(11) VALUE ‘ITEMS *U ‘01 ORDERS-UNQUAL-SSA PIC X(09) VALUE ‘ORDERS ‘
WITH COMMAND CODE ‘U’
A1000
ORD1
A1000
ORD2
ORD1
A1000
ORD3
ORD2
ORD1
A1000
ORD4
ORD3
ORD2
ORD1
A1000
ORD5
ORD4
ORD3
ORD2
ORD1
A1000
ORD6
ORD5
ORD4
ORD3
ORD2
ORD1
A1000B1000
ORD6
ORD5
ORD4
ORD3
ORD2
ORD1
A1000B1000
ORD6
ORD5
ORD4
ORD3
ORD2
ORD1
A1000
IMS Database Manager 2/6/2009 3:00 PM 94
DL/I Calls
COMMAND CODES ‘U’ & ‘V’COMMAND CODES ‘U’ & ‘V’
ABC
Supplier Database
B1000A1000
ORD3
ORD2
ORD1
ORD6
ORD5
ORD4
SUPPLIER
ITEMS
ORDERS
SSA01 SUPPLIER-UNQUAL-SSA PIC X(09) VALUE ‘SUPPLIER ‘01 ITEMS-UNQUAL-SSA PIC X(11) VALUE ‘ITEMS *U ‘01 ORDERS-UNQUAL-SSA PIC X(09) VALUE ‘ORDERS ‘
CALL ‘CBLTDLI’ USING ‘GN ‘ SUPPLIER-DB-PCB, ORDERS-IO-AREA SUPPLIER-UNQUAL-SSA ITEMS-UNQUAL-SSA ORDERS-UNQUAL-SSA
WITH COMMAND CODE ‘U’
SSA01 SUPPLIER-UNQUAL-SSA PIC X(09) VALUE ‘SUPPLIER ‘01 ITEMS-UNQUAL-SSA PIC X(11) VALUE ‘ITEMS *V ‘01 ORDERS-UNQUAL-SSA PIC X(09) VALUE ‘ORDERS ‘
WITH COMMAND CODE ‘V’
XYZ
A1000
ORD8
ORD7
2/6/2009 03:00 PM 95
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 96
RUN JCL
DL/I
APPLICATIONPROGRAM
IMSDATABASE
PROGRAM NAME
PSB NAME
CB
LTD
LI
DLI
TCB
L
GOBACK
RUN JCL EXECUTES THE BATCH PROCESSOR DFSRRC00 AND PASSES THE APPLICATION PROGRAM NAME AND PSBNAME AS PARAMETERS
ENTRY DLITCBL PASSES THE PCB ADDRESS TO THE 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
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 97
BMP JOBBMP JOB
//STEP050 //STEP050 EXEC EXEC PGM=PGM=DFSRRC00DFSRRC00,REGION=1600K, ,REGION=1600K,
// // PARM=(PARM=(BMPBMP,,PROGNAMEPROGNAME,,PSBNAMEPSBNAME,,,,,,,,,,,,,,,,,,IMSIDIMSID,,) ,,)
//RESLIB //RESLIB DD DD DSN=IMS.PROD.DSN=IMS.PROD.RESLIBRESLIB,DISP=SHR ,DISP=SHR
//SYSUDUMP DD //SYSUDUMP DD SYSOUT=* SYSOUT=*
//SNAPDD DD //SNAPDD DD SYSOUT=* SYSOUT=*
//IMS //IMS DD DD DSN=IMS.DSN=IMS.DBDLIBDBDLIB,DISP=SHR ,DISP=SHR
// // DD DD DSN=IMS.DSN=IMS.PSBLIBPSBLIB,DISP=SHR ,DISP=SHR
//SYSOUT DD //SYSOUT DD SYSOUT=*,DCB=BLKSIZE=133 SYSOUT=*,DCB=BLKSIZE=133
//PRINT //PRINT DD DD SYSOUT=* SYSOUT=*
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 98
DL/I JOBDL/I JOB
//STEP050 //STEP050 EXEC EXEC PGM=DFSRRC00,REGION=1600K, PGM=DFSRRC00,REGION=1600K,
// // PARM=(PARM=(DLIDLI,PROGNAME,PSBNAME,,,,,,,,,IMSID,,) ,PROGNAME,PSBNAME,,,,,,,,,IMSID,,)
//RESLIB //RESLIB DD DD DSN=IMS.PROD.RESLIB,DISP=SHR DSN=IMS.PROD.RESLIB,DISP=SHR
//SYSUDUMP DD //SYSUDUMP DD SYSOUT=* SYSOUT=*
//SNAPDD DD //SNAPDD DD SYSOUT=* SYSOUT=*
//IMS //IMS DD DD DSN=IMS.DBDLIB,DISP=SHR DSN=IMS.DBDLIB,DISP=SHR
// // DD DD DSN=IMS.PSBLIB,DISP=SHR DSN=IMS.PSBLIB,DISP=SHR
//SYSOUT//SYSOUT DD DD SYSOUT=*,DCB=BLKSIZE=133 SYSOUT=*,DCB=BLKSIZE=133
//PRINT //PRINT DD DD SYSOUT=* SYSOUT=*
//DDNAME1 DD//DDNAME1 DD DSN=IMS.DB1.FILENAME,DISP=SHRDSN=IMS.DB1.FILENAME,DISP=SHR
//DDNAME2 DD//DDNAME2 DD DSN=IMS.DB2.FILENAME, DISP=SHRDSN=IMS.DB2.FILENAME, DISP=SHR
//DDNAME3 DD//DDNAME3 DD DSN=IMS.DB3.FILENAME, DISP=SHRDSN=IMS.DB3.FILENAME, DISP=SHR
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 99
DFSDDLTO JOBDFSDDLTO JOB
//STEP050 //STEP050 EXEC EXEC PGM=DFSRRC00,REGION=1600K, PGM=DFSRRC00,REGION=1600K,
// // PARM=(DL/I,PARM=(DL/I,DFSDDLTODFSDDLTO,PSBNAME,,,,,,,,,IMSID,,) ,PSBNAME,,,,,,,,,IMSID,,)
//RESLIB //RESLIB DD DD DSN=IMS.PROD.RESLIB,DISP=SHR DSN=IMS.PROD.RESLIB,DISP=SHR
//IMS //IMS DD DD DSN=IMS.DBDLIB,DISP=SHR DSN=IMS.DBDLIB,DISP=SHR
// // DD DD DSN=IMS.PSBLIB,DISP=SHR DSN=IMS.PSBLIB,DISP=SHR
//SYSOUT//SYSOUT DD DD SYSOUT=*,DCB=BLKSIZE=133 SYSOUT=*,DCB=BLKSIZE=133
//PRINT //PRINT DD DD SYSOUT=* SYSOUT=*
//EMPDD DD//EMPDD DD DSN=IMS.EMPDATA.FILE,DSN=SHRDSN=IMS.EMPDATA.FILE,DSN=SHR
//SYSIN//SYSIN DD * DD *
S 1 1 1 1 1S 1 1 1 1 1 EMPDATAEMPDATA
LL GHUGHU EMPLOYEE *DN(EMPLKEY =KRISHNA )EMPLOYEE *DN(EMPLKEY =KRISHNA )
PROJECTPROJECT (PROJKEY =E-DART )(PROJKEY =E-DART )
LL DLETDLET
/*/*
IMS Jobs
IMS Database Manager 2/6/2009 3:00 PM 100
DFSDDLTO JOBDFSDDLTO JOB
•PRINTING OPTIONSPRINTING OPTIONS
//SYSIN//SYSIN DD * DD *
S 1 1 1 1 1S 1 1 1 1 1 EMPDATAEMPDATA
LL GHUGHU EMPLOYEE *N(EMPLKEY =KRISHNA )EMPLOYEE *N(EMPLKEY =KRISHNA )
PROJECTPROJECT (PROJKEY =E-DART )(PROJKEY =E-DART )
LL DLETDLET
/*/* SEGMENT (1, b)SEGMENT (1, b)
PCBPCB (1, 2) (1, 2)
COMPARECOMPARE (1, 2, b) (1, 2, b)
CALLCALL (1, 2, b) (1, 2, b)
COMMENT (1, b)COMMENT (1, b)
b – do not print, 1 – print always, 2 – print if compare unequalb – do not print, 1 – print always, 2 – print if compare unequal
IMS Jobs
2/6/2009 03:00 PM 101
Advanced Programmi
ng
IMS Database Manager 2/6/2009 3:00 PM 102
IT’S A TECHNIQUE OF SETTING DIFFERENT POINTERS TO THE SAME DATABASE
IT CAN BE DONE WITH EITHER MORE THAN ONE NORMAL PCBs OR A SINGLE ‘MULTIPLE POSITIONABLE’ PCB
Advanced Programming
MULTIPLE POSITIONINGMULTIPLE POSITIONING
IMS Database Manager 2/6/2009 3:00 PM 103
Advanced Programming
MULTIPLE POSITIONING WITH MORE THAN ONE NORMAL PCBs
PAY3PAY2
PAY1
INV3
INV2
INV1
ABCSUPPLIER
INVOICE
PAYMENT
PCB TYPE=DB,DBDNAME=SUPLRINF,KEYLEN=15,PROCOPT=GSENSEG NAME=SUPPLIER,PARENT=0SENSEG NAME=INVOICE,PARENT=SUPPLIERSENSEG NAME=PAYMENT,PARENT=SUPPLIER
PCB TYPE=DB,DBDNAME=SUPLRINF,KEYLEN=15,PROCOPT=GSENSEG NAME=SUPPLIER,PARENT=0SENSEG NAME=INVOICE,PARENT=SUPPLIERSENSEG NAME=PAYMENT,PARENT=SUPPLIER
PSB
CALL ‘CBLTDLI’ USING ‘GN ‘ SUPLRINF-PCB-1 INVOICE-IO-AREA SUPPLIER-QUAL-SSA INVOICE-UNQUAL-SSA
CALL ‘CBLTDLI’ USING ‘GN ‘ SUPLRINF-PCB-2 PAYMENT-IO-AREA SUPPLIER-QUAL-SSA PAYMENT-UNQUAL-SSA
PROGRAM
IMS Database Manager 2/6/2009 3:00 PM 104
Advanced Programming
MULTIPLE POSITIONING WITH A SINGLE PCB
PAY3PAY2
PAY1
INV3
INV2
INV1
ABCSUPPLIER
INVOICE
PAYMENT
CALL ‘CBLTDLI’ USING ‘GN ‘ SUPLRINF-PCB-1 INVOICE-IO-AREA SUPPLIER-QUAL-SSA INVOICE-UNQUAL-SSA
CALL ‘CBLTDLI’ USING ‘GN ‘ SUPLRINF-PCB-1 PAYMENT-IO-AREA SUPPLIER-QUAL-SSA PAYMENT-UNQUAL-SSA
PROGRAM
PCB TYPE=DB,DBDNAME=SUPLRINF,KEYLEN=15, PROCOPT=G,POS=MSENSEG NAME=SUPPLIER,PARENT=0SENSEG NAME=INVOICE,PARENT=SUPPLIERSENSEG NAME=PAYMENT,PARENT=SUPPLIER
PSB
IMS Database Manager 2/6/2009 3:00 PM 105
Advanced Programming
GSAM FILESGSAM FILES
PCB TYPE=GSAM,NAME=GSAMINP,PROCOPT=GS
PCB TYPE=GSAM,NAME=GSAMOUT,PROCOPT=LS
PSB
DBD NAME=GSAMINP,ACCESS=GSAMDATASET DD1=INFILE,RECFM=FB DBDGEN FINISH END
DBD
NORMAL FLAT FILES OF FXIXED/VARIABLE BLOCK
GSAM FILES ARE NEEDED IN CASE FILE HANDLING IS PERFORMED BY IMS
IMS CAN READ SEQUENTIALLY FROM GSAM FILES (GN) AND INSERT INTO GSAM FILES (ISRT)
IMS Database Manager 2/6/2009 3:00 PM 106
IT’S A POINT IN THE EXECUTIN OF THE PROGRAM WHEN THE CHANGES MADE TO DATABASES ARE MADE PERMANENT
ONCE CHECKPOINT IS ISSUED,CHANGES ARE NOT REVERSIBLE
TWO TYPES OF CHECKPOINTS BASIC CHECKPOINT SYMBOLIC CHECKPOINT
Advanced Programming
CHECKPOINTCHECKPOINT
IMS Database Manager 2/6/2009 3:00 PM 107
Advanced Programming
CHECKPOINTCHECKPOINT
BASIC CHECKPOINT
CALL 'CBLTDLI' USING ‘CHKP’ I-O-PCB
CHECK-POINT-RESTART-IO-AREA
• CHECK-POINT-RESTART-IO-AREA CONTAINS THE CHECKPOINT ID FOLLOWED BY SOME DATA
IMS Database Manager 2/6/2009 3:00 PM 108
Advanced Programming
CHECKPOINTCHECKPOINT
SYMBOLIC CHECKPOINT
CALL 'CBLTDLI' USING ‘CHKP’ I-O-PCB CHECK-POINT-RESTART-IO-LENGTH CHECK-POINT-RESTART-IO-AREA CHECK-POINT-RESTART-SAVE-LENGTH CHECK-POINT-RESTART-SAVE-AREA.
• CHECK-POINT-RESTART-IO-AREA CONTAINS THE CHECKPOINT ID FOLLOWED BY SOME DATA• UPTO SEVEN SAVE AREAS ALONG WITH THEIR LENGTHS CAN BE SPECIFIED
IMS Database Manager 2/6/2009 3:00 PM 109
Advanced Programming
RESTARTRESTART
CALL 'CBLTDLI' USING ‘XRST’ I-O-PCB CHECK-POINT-RESTART-IO-LENGTH CHECK-POINT-RESTART-IO-AREA CHECK-POINT-RESTART-SAVE-LENGTH CHECK-POINT-RESTART-SAVE-AREA.
• CHECK-POINT-RESTART-IO-AREA CONTAINS THE CHECKPOINT ID FOLLOWED BY SOME DATA
• UPTO SEVEN SAVE AREAS ALONG WITH THEIR LENGTHS CAN BE SPECIFIED
FUNCTION ‘XRST’ IS USED TO RESTART THE PROGRAM
IMS AUTOMATICALLY REPOSITIONS GSAM FILES TO LAST CHECKPOINT STATUS
ALL OTHER DATABASES SHOULD REPOSITIONED BY THE APPLICATION PROGRAM
IMS Database Manager 2/6/2009 3:00 PM 110
Advanced Programming
CHECKPOINT – RESTART PROCEDURECHECKPOINT – RESTART PROCEDURE
Issue ‘XRST’ call
Check if CHKP-XRST-AREA is spaces
Process Records.Increment count ofRecords processed
Is record count Greater than checkpointFrequency?
Issue ‘CHKP’ call.Reset record count to zero
Reposition the Non-GSAM DBs using Fields in SAVE-AREA
Move counters & Current Key fields to SAVE-AREA
YES NORMAL RUN
RESTART RUN
NO
NO
YES
IMS Database Manager 2/6/2009 3:00 PM 111
Advanced Programming
SECONDARY INDEXINGSECONDARY INDEXING
USED TO ACCESS DATA USING A PATH OTHER THAN THE HIERARCHIAL PATH OF THE DATABASE
SECONDARY INDEXES ARE STORED IN A SEPARATE DATABASE
SECONDARY INDEX DATABASE CONTAINS A SET OF POINTERS MAPPED TO A TARGET SEGMENT AND A SOURCE SEGMENT
IMS Database Manager 2/6/2009 3:00 PM 112
Advanced Programming
SECONDARY INDEXINGSECONDARY INDEXING
IMS Database Manager 2/6/2009 3:00 PM 113
Advanced Programming
SECONDARY INDEXINGSECONDARY INDEXING
IMS Database Manager 2/6/2009 3:00 PM 114
Advanced Programming
SECONDARY INDEXINGSECONDARY INDEXING
PRINT NOGENDBD NAME=COURSEDB,ACCESS=HIDAMDATASET DD1=COURSEDD,DEVICE=3380SEGM NAME=COURCE,PARENT=0,BYTES=100FIELD NAME=(COURSECD,SEQ,U),BYTES=5,START=9,TYPE=CFIELD NAME=COURSENM,BYTES=20,START=14,TYPE=CLCHILD NAME=(STUDIXSG,STUDIXDB),PTR=INDX XDFLD NAME=STUDINDX,SEGMENT=STUDENT, SRCH=(STUDNTNM)SEGM NAME=CLASS,PARENT=COURSE,BYTES=5FIELD NAME=(CLASSCODE,SEQ,U),BYTES=10,START=1,TYPE=CSEGM NAME=INSTR,PARENT=CLASS,BYTES=100SEGM NAME=STUDENT,PARENT=CLASS,BYTES=100FIELD NAME=(STUDNTNO,SEQ,U),BYTES=10,START=1,TYPE=CFIELD NAME=STUDNTNM,BYTES=20,START=11,TYPE=CDBDGENFINISHEND
COURSE DATABASE
PRINT NOGENDBD NAME=STUDIXDB,ACCESS=INDEXDATASET DD1=INDXDBDD,DEVICE=3380SEGM NAME=STUDIXSG,PARENT=0,BYTES=25LCHILD NAME=(COURSE,COURSEDB),INDEX=STUDINDXFIELD NAME=INDXSTNM,BYTES=20,START=1,TYPE=CFIELD NAME=INDXCSCD,BYTES=5,START=21,TYPE=CDBDGENFINISHEND
INDEX DATABASE
IMS Database Manager 2/6/2009 3:00 PM 115
Advanced Programming
LOGICAL DATABASELOGICAL DATABASE
LOGICAL DATABSE PROVIDES A LOGICAL VIEW OF DATA
IT CREATES A VIEW OF DATA FROM MORE THAN ONE SEGMENTS OF SAME DATABASE OR DIFFERENT
IT CAN BE USED TO CREATE A PATH BETWEEN SEGMENTS WHICH ARE OTHERWISE UNRELATED
IMS Database Manager 2/6/2009 3:00 PM 116
Advanced Programming
LOGICAL DATABASELOGICAL DATABASE
PRINT NOGENDBD NAME=CRSLOGL,ACCESS=LOGICALDATASET DD1=CRSELGDD,DEVICE=3380SEGM NAME=COURSELG,PARENT=0,SOURCE=(COURCE,COURSEDB)SEGM NAME=PERSONS,PARENT=COURSELG,
SOURCE=((INSTR,COURSEDB),(STUDENT,COURSEDB))DBDGENFINISHEND
LOGICAL DATABASE
IMS Database Manager 2/6/2009 3:00 PM 117
USE QUALIFIED SSAS WHEREVER POSSIBLE
ASSUMED SSAS SHOULD BE AVOIDED EVEN THOUGH DL/I CONSTRUCTS MISSING SSAS
MINIMIZE THE NUMBER OF DL/I CALLS BY USING COMMAND CODES
USE SEARCH FIELDS AND BOOLEAN OPERATIONS IN SSAs INSTEAD OF USING IF STATEMENTS IN COBOL PROGRAM
TRY USING SECONDARY INDICES
Advanced Programming
PROGRAMING TIPSPROGRAMING TIPS
IMS Database Manager 2/6/2009 3:00 PM 118
COMMON STATUS CODESCOMMON STATUS CODES
STATUS CODE DESCRIPTION
SPACES SUCCESSFUL CALL
CALL TYPES
ALL CALLS
AC CALL HAS SSA WITH A HIERARCHICAL ERROR ALL GET CALLSISRT
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 CALLSISRT
DA SEQUENCE FIELD IS CHANGED REPL
DJ CALL IS NOT PRECEDED BY A SUCCESSFUL GET HOLD CALL
DLETREPL
GA A HIGHER LEVEL SEGMENT IS RETRIEVED IN SEQUENTIAL PROCESSING
GN, GNP
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 119
COMMON STATUS CODESCOMMON STATUS CODES
STATUS CODE DESCRIPTION
GE SPECIFIED SEGMENT NOT FOUND
CALL TYPES
ALL GET CALLSISRT
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
GB END OF DATA BASE WAS REACHED DURING SEQUENTIAL RETRIEVAL
GN
VI INVALID LENGTH ERROR REPL, ISRT
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 120
U0047U0047
DESCRIPTIONONE 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
Advanced Programming
COMMON IMS ABENDSCOMMON IMS ABENDS
IMS Database Manager 2/6/2009 3:00 PM 121
U0456U0456
DESCRIPTIONA 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
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 122
U0476U0476
DESCRIPTIONA 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
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 123
U0844U0844
DESCRIPTIONNO SPACE AVAILABLE IN THE DATABASE
SOLUTIONTHE SIZE OF THE DATABASE MUST BE INCREASED BY ALLOCATIONG A LARGER PRIMARY OR SECONDARY STORAGE.
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 124
U3303U3303
DESCRIPTIONAPPLICATION PROGRAM TRIED TO USE A DATABASE THAT WAS NOT AVAILABLE FOR ACCESS AND/OR UPDATE.
SOLUTIONCHECK THE STATUS OF DATABASE GIVEN IN DFS3303I MESSAGE USING/DISPLAY DB database nameIF DATABASE IS DOWN START THE DATABASE USING THE COMMAND/START DB database name
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 125
/DIS A/DIS A
IMS COMMANDSIMS COMMANDS
Advanced Programming
IMS Database Manager 2/6/2009 3:00 PM 126
/DIS Q/DIS Q
Advanced Programming
IMS COMMANDSIMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 127
/DIS TRAN transaction name/DIS TRAN transaction name
Advanced Programming
IMS COMMANDSIMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 128
/DIS STATUS TRAN/DIS STATUS TRAN
Advanced Programming
IMS COMMANDSIMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 129
/DIS PGM psb name/DIS PGM psb name
Advanced Programming
IMS COMMANDSIMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 130
/DIS DB database name/DIS DB database name
Advanced Programming
IMS COMMANDSIMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 131
/START /START • /START PGM /START PGM
• /START TRAN/START TRAN
• /START DB/START DB
• /START REGID/START REGID
/STOP/STOP• /STOP PGM /STOP PGM
• /STOP TRAN/STOP TRAN
• /STOP DB/STOP DB
• /STOP REGID/STOP REGID
Advanced Programming
IMS COMMANDSIMS COMMANDS
IMS Database Manager 2/6/2009 3:00 PM 132