IMS Programming2
IMS Programming2
Training
Objectives
To create awareness about the IMS DB technology and how it is used to perform data base
operations.
Hierarchical Structures
Why a Data Base Management System
Basic DL/I Terminology
Basic DL/I Data Base Processing
A data base is a group of data elements organized to meet the requirements of one or more applications.
Vendor
Item
Stock Location
Segment
A grouping of data
The unit of data that DL/I transfers to and from your
program in an I/O operation.
Consists of one or more fields
ADDRESS
House Street City State Country Zip Code
Number Name
Segment Type
A category of data
There can be a maximum of 255 segment types and 15
levels in one data base
In the previous example there are three segment types,
Vendor, Item and Stock Location
Segment Occurrence
One specific segment of a particular type containing user
data
Root Segment
The segment type at the top of a hierarchy
*
01 INVENTORY-VENDOR-SEGMENT.
05 IVS-VENDOR-CODE PIC X(3).
05 IVS-VENDOR-NAME PIC X(30).
05 IVS-VENDOR-ADDRESS PIC X(30).
05 IVS-VENDOR-CITY PIC X (17).
05 IVS-VENDOR-STATE PIC XX.
05 IVS-VENDOR-ZIP-CODE PIC X(9).
05 IVS-VENDOR-TELEPHONE PIC X(10).
*
01 INVENTORY-ITEM-SEGMENT.
05 IIS-NUMBER PIC X(5).
05 IIS-DESCRIPTION PIC X(35).
05 IIS-UNIT-PRICE PIC S9(5)V99 COMP-3.
05 IIS-AVG-UNIT-COST PIC S9(5)V99 COMP-3.
*
01 INVENTORY-STOCK-LOC-SEGMENT.
05 ISLS-LOCATION PIC X(3).
05 ISLS-QUANTITY-ON-HAND PIC S9(7) COMP-3.
05 ISLS-REORDER-POINT PIC S9(7) COMP-3.
05 ISLS-QUANTITY-ON-ORDER PIC S9(7) COMP-3.
*
Fig 1.5 Segment layouts for the Inventory data base
Member firms and DTTL: Insert appropriate copyright Presentation title 9
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Basic DL/I Terminology (contd.)
Each occurrence of the root segment plus all the segment occurrences that are subordinate to it
make up one data base record
Every data base record has one and only one root segment, although it may have any number of
subordinate segment occurrences
Vendor 1 Vendor 2
Item 1
Item 2
Data base Record 2
Item 1
Loc 2 Loc 2
Data base Record 1
Loc 1 Loc 1
Loc 5
Loc 4
Loc 3
Loc 2
Loc 1
Fig 1.6 Two data base records from the Inventory data base
Dependent Segment
Parent Segment
Child Segment
Twin Segment
Two or more segment occurrences of the same type and with the same segment occurrence as
their parent
Path
Series of segments leading from the root segment occurrence down to any specific segment
occurrence
Concatenated field
Concatenation of keys of root segment and all successive children down to the accessed
segment
DL/I does not support multiple parent relationships in physical data bases. However, it allows you to define
logical data bases that combine two physical data bases
Customer
Ship-to
Vendor
Stock Location
Payment Adjustment Line Item
In Fig 1.7, the line item segment is the logical child segment (or just logical child) of the item
segment.
Likewise, the item segment is the logical parent segment (or just logical parent) of the line item
segment
Sequential Processing
Position
• Position reflects not only on retrieved segments, but on new segments inserted as well
Vendor 1 Vendor 2
Item 1
Item 2
Data base Record 2
Item 1
Loc 2 Loc 2
Data base Record 1
Loc 1 Loc 1
Loc 5
Loc 4
Loc 3
Loc 2
Loc 1
Concatenated Key
• Completely identifies the path from the root segment to the segment you want to retrieve.
Vendor 1 Vendor 2
Item 1
Item 2
Data base Record 2
ItemKey:
Concatenated 1
Vendor 2
Loc 2 Loc 2
Item 1
Data base Record 1 Loc 1
Loc 1
Location 1
Loc 5
Loc 4
Loc 3
Loc 2
Loc 1
Standard COBOL statements (like READ / WRITE) invoke the appropriate access method (like
VSAM)
Format of the record as processed by the program should be the same as the format of the
record in the file
DL/I invokes a standard access method- usually VSAM- to store data base data on disk
Format of records in a data base data set need not match the layouts of the segments that
make up the data base
The way the program sees the data base is different from the way the access method sees it.
DL/I uses a set of control blocks(DBDs and PSBs) to define a data base’s structure
PSB Specifies
Application programs that have similar data base processing requirements can share a PSB
Fig 2.3 Assembler source listing for the Inventory data base DBDGEN
DBDGEN (contd.)
C Character
P Packed decimal
Z Zoned decimal
X Hexadecimal
H Half word Binary
F Full word Binary
Fig 2.4 FIELD macro TYPE parameter codes
SAMPLE PSBGEN
1 PRINT NOGEN
2 PCB TYPE=DB,DBDNAME=INDBD,PROCOPT=LS
3 SENSEG NAME=INVENSEG
4 SENSEG NAME=INITMSEG,PARENT=INVENSEG
5 SENSEG NAME=INLOCSEG,PARENT=INITMSEG
6 PSBGEN PSBNAME=INLOAD,LANG=COBOL
7 END
Fig 2.5 Assembler source listing for the Inventory data base load program’s PSBGEN
DBDNAME parameter on the PCB macro specifies the name of the DBD
KEYLEN parameter specifies the length of the longest concatenated key the program can
process in the data base
For each PCB macro, subordinate SENSEG macros identify the sensitive segments in the data
base
Names specified in the SENSEG macros must be segment names from the DBDGEN for the data
base named in the DBDNAME parameter of the PCB macro
PSBGEN macro
• PSBNAME parameter specifies the name to be given to the output PSB module
• LANG parameter specifies the language in which the related application program will be written.
Indicates to IMS the type of access allowed for a sensitive segment (SENSEG)
For GSAM DBs PROCOPT=LS for output and GS (Get Sequential) for input
PROCOPT=L allows a 'load' into the DB. If VSAM DB, it should be empty prior to the load
The PROCOPT given for a Sensitive segment would override the one given for the DB
Example : -
PCB TYPE=DB,NAME=LDB42F,PROCOPT=G,
PARENT=0,PROCOPT=A
It is created by merging and expanding PSB’s and DBD’s into an IMS internal format when an application
program is scheduled for execution.
ACBGEN
The process of building ACB is called Block Building and is done by means of ACBGEN.
IMS can build ACB’s either dynamically or it can prebuild them using ACB maintenance utility.
ACB’s save instruction, execution and direct-access wait time and improves performance in application
scheduling.
Application program is invoked under the control of the batch initialization module
DL/I supplies the address of each PCB defined in the program’s PSB
Addressability to PCBs established by listing the PCB Masks on the ENTRY statement
PCB masks should be listed on the ENTRY statement in the same sequence as
they appear in your program’s PSBGEN
GO BACK Statement
When a program ends, it passes control back to the DL/I
DL/I reallocates resources and closes the data base data sets
Parameters you code on the CALL statement specify, among other things, the operation you want DL/I to perform
PCB-mask
segment-io-area
[segment-search-argument(s)]
CBLTDLI => ‘COBOL to DL/I’, is an interface module that is link edited with your program’s object module
01 DLI-FUNCTIONS.
To specify a DL/I function, one of the 05-level item is specified in a DL/I call.
Get functions
• GU ‘get unique’ function causes DL/I to retrieve a specific segment occurrence based on field values
that you specify
• GNP ‘get next within parent’ function lets you retrieve segment occurrences in sequence, but only
subordinate to an established parent segment
• The three get function codes that contain an H are ‘get hold functions’ and are used to specify an intent
to update a segment after you retrieve it
• GHNP or the ‘get hold next within parent’ function corresponds to GNP
Update functions
• ISRT or the ‘insert’ function is used to add a new segment occurrence to a data base– whether it be
change an existing data base or to load a new one
• DLET or the ‘delete’ function is used to remove a segment from a data base
Other functions
• Functions CHKP (the ‘checkpoint’ function) and XRST (the ‘restart’ function) are used in programs to
take advantage of IMS’s recovery and restart features
• Function SYNC is used for releasing resources that IMS has locked for the program (applicable only in a
BMP)
PCB mask
The name of the PCB mask defined in the program’s Linkage Section
ENTRY statement establishes a correspondence between PCB masks in the Linkage Section and
the PCBs within the program’s PSB
After each DL/I call, DL/I stores a status code in the PCB mask, which the programmer can use
to determine whether the call succeeded or failed
Name of the working storage field into which DL/I will return retrieved data or from which it
will get data for an update operation
An unqualified SSA
• Supplies the name of the next segment type that you want to operate on
• If you issue a GN call with an unqualified SSA, DL/I will return the next occurrence of the segment type
you specify
A qualified SSA
• Combines a segment name with additional information that specifies the segment occurrence to be
processed
• A GU call with a qualified SSA might request a particular occurrence of a named segment type by
providing a key value
For each data base your program accesses, DL/I maintains an area of storage called the program communication block (PCB)
Masks are defined for those areas of storage in the Linkage Section of your program
01 INVENTORY-PCB-MASK.
Segment level
After a successful call, DL/I stores the level of the segment just processed in this field
Status code
When DL/I successfully completes the processing you request in a call, it indicates that to your
program by moving spaces to the status code field in the PCB
If a call is unsuccessful or raises some condition that isn’t normal, DL/I moves some non-blank
value to the status code field
It is good programming practice to evaluate the status code after you issue a DL/I call
The name of the segment is stored by DL/I in this field after each DL/I call.
The field DL/I uses to report the length of the concatenated key of the lowest level segment
processed during the previous call
Contains the number of SENSEG macros subordinate to the PCB macro for this data base
As long as the longest possible concatenated key that can be used with the program’s view of
the data base
After a data base operation, DL/I returns the concatenated key of he lowest level segment
processed in this field, and it returns the key’s length in the key length feedback area
One report line will be printed for each item segment occurrence in the data base
It can be either
Qualified
Unqualified
An unqualified SSA simply names the type of segment you want to use
A qualified SSA specifies not only the segment type, but also a specific occurrence of it
Includes a field value DL/I uses to search for the segment you request
Because of the hierarchical structure DL/I uses, you often have to specify several levels of SSAs to access
a segment at a low level in a data base
01 UNQUALIFIED-SSA.
*
Fig 4.1 A basic unqualified SSA
The first eight bytes contain the name of the segment you want to process
If the segment name is less than eight characters long, you must pad it on the right with blanks
The DL/I uses the value in position 9 to decide what kind of SSA you are providing
To access a particular segment type, you must modify the segment name during program
execution, by moving an appropriate eight-character segment name to the field UNQUAL-SSA-
SEGMENT-NAME
For example,
Alternatively, you can code the segment name as a literal when you define a qualified SSA
For example,
130-PRINT-REPORT-HEADING.
ADD 1 TO PAGE-COUNT.
MOVE PAGE-COUNT TO HL1-PAGE.
MOVE HEADING-LINE-1 TO PRTOUT-RECORD.
PERFORM 140-WRITE-PAGE-TOP-LINE.
MOVE 2 TO SPACE-CONTROL.
140-WRITE-PAGE-TOP-LINE.
WRITE PRTOUT-RECORD AFTER ADVANCING PAGE.
150-WRITE-REPORT-LINE.
WRITE PRTOUT-RECORD AFTER SPACE-CONTROL LINES.
The first eight characters of a basic qualified SSA is the eight character segment
name
After the field name, in positions 18 and 19, you code a two-character relational operator to indicate the
kind of checking DL/I should do on the field in the segment
Equal to EQ = =
After the relational operator, you code a variable field into which you move the search value you want to
use for the call
The length of the search value field can vary depending on the size of the field in the segment– it is the
only part of a basic qualified SSA that doesn’t have a fixed length
For performance improvement resulting from the reduced number of DL/I calls
Member firms and DTTL: Insert appropriate copyright Presentation title 57
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Command Codes (contd.)
When DL/I finds an asterisk in position 9, it knows command codes will follow
From position 10 onwards, DL/I considers all characters to be command codes until it encounters a space (for an
unqualified SSA) or a left parenthesis (for a qualified SSA)
A basic unqualified SSA with a single variable command code is shown below
01 UNQUALIFIED-SSA.
*
05 UNQUAL-SSA-SEGMENT-NAME PIC X(8).
05 FILLER PIC X VALUE “*”.
05 UNQUAL-SSA-COMMAND-CODE PIC X.
05 FILLER PIC X VALUE SPACE.
*
Particularly useful if you would like to use the same SSA with and without command codes
01 UNQUALIFIED-SSA.
A DB call with an SSA that includes the 'D' Command code is a "PATH CALL“ . It’s a facility
where in we can retrieve an entire path of the segment
In case if we need data from not just from the lowest level but from other levels as well we
normally have to give 3 separate GU calls.This will reduce the efficiency of the program
Such a call operates on two or more segments rather than just one segment.
If a program has to use "Path call" then "P" should be one of the values specified in the
PROCOPT parameter of the PCB in the programs PSBGEN.
There are two cases in which you would use multiple qualification
When you want to process a segment based on the contents of two or more fields within it
When you want to process a segment based on a range of possible values for a single field
To use multiple qualification, you connect two or more qualification statements (a field name, a
relational operator, and a comparison value) within the parentheses of the SSA.
Either of the two symbols shown in the table below may be used for AND or OR
The independent AND operator is used for special operations with secondary indexes and will be
discussed later
The above SSA, which uses multiple qualifications can be used to retrieve
vendor segments whose vendor codes fall within a certain range
The first qualification statement specifies that the vendor code field
must be greater than or equal to a particular value; that is the low end
of the range
The second qualification statement specifies that the vendor code field
must be less than or equal to a particular value; that is the high end of
the range
To retrieve segments that fall within this range, you would first move
values for low and high ends of the range to VENDOR-SSA-LOW-CODE
and VENDOR-SSA-HIGH-CODE
The GU Call
The GN Call
The GNP Call
Status Codes Expected during Sequential Processing
Using Command Codes with Retrieval Calls
Multiple Processing
You know what data you want to retrieve and you want to get to it directly
A typical GU call like the one above, wherein a complete set of qualified SSAs to
retrieve a segment, includes one for each level in the hierarchical path to the
segment you want to retrieve is called a ‘fully qualified call’
Access a segment based on a field that is not the segment’s key field
In the above cases, DL/I returns the first segment occurrence with the specified search value
1. When you use an unqualified SSA in a GU call, DL/I accesses the first segment occurrence in
the data base that meets the criteria you specify
2. If you issue a GU call without any SSAs, DL/I returns the first occurrence of the root segment
in the data base
3. If you omit some SSAs for intermediate levels in a hierarchical path, the action DL/I takes
depends on your current position and on the SSAs that are missing
• DL/I either uses the established position or defaults to an unqualified SSA for the segment
Code a qualified or unqualified SSA for each level in the path from the
root segment to the segment you want to retrieve
Status codes you can expect during random processing with GU calls
Spaces means the call was successful and the requested segment
was returned in your program’s segment I/O area
A GE status code indicates that DL/I couldn’t find a segment that met
the criteria you specified in the call
INVENTORY-PCB-MASK
INVENTORY-STOCK-LOC-SEGMENT
STOCK-LOCATION-SSA.
After any successful data base call, your data base position is immediately before the next segment occurrence in
the normal hierarchical sequence
Before your program issues any calls, position is before the root segment of the first data base record
The GN call moves forward through the data base from the position established by the previous call
If a GN call is unqualified (that is, if it does not employ an SSA), it returns the next segment occurrence in the
data base regardless of type, in hierarchical sequence
If a GN call includes SSAs– qualified or unqualified– DL/I retrieves only segments that meet requirements of all
SSAs you specify
If you include an unqualified SSA or omit an SSA altogether for a segment type, DL/I allows any occurrence of
that segment type to satisfy the call
But when you specify a qualified SSA, DL/I selects only those segment occurrences that meet the criteria you
specify
INVENTORY-PCB-MASK
INVENTORY-STOCK-LOC-SEGMENT
UNQUALIFIED-SSA.
Works like the GN call, except it retrieves only segments that are subordinate to the currently established
parent
To establish parentage, your program MUST issue either a GU call or a GN call, and the call must be
successful
Parentage is never automatically established, in spite of the hierarchical structure of the data base
Subsequent GNP calls return only segment occurrences that are dependent on that parent
When there are no more segments within the established parentage DL/I returns GE as the status code
Vendor 1
Item 2
Established Item 1
Parent
Loc 2
Loc 1
Established
Parent
Loc 5 Vendor 1
Loc 4
Loc 3
Loc 2 Item 2
Loc 1
Item 1
Loc 2
Loc 1
Fig 5.1 Sequential retrieval with GNP call
Loc 5
Loc 4
Loc 3
Loc 2
Loc 1
Member firms and DTTL: Insert appropriate copyright Presentation title 70
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Status Codes you can expect during
Sequential Processing
Report specifications:
•Print a group of report lines that contain one line for each subordinate location segment
occurrence and a total line for all locations. Use a single report line for both.
•An item should be selected for the report only if one or more of its subordinate locations’
available stock is less than the reorder point.
•Each report line for a location should show the location’s code, quantity on hand, quantity on
order, available stock (the sum of the quantity on hand and quantity on order) and reorder
point.
•For each location, if the available stock is less than or equal to the reorder point, the program
should print an asterisk in column 109; otherwise, column 109 is left as space.
•The first report line in each group should contain the item number and the description,
subsequent lines should not.
•The total lines for each item should specify the total available stock and the total reorder point
for stock at all locations.
When you issue a call with an SSA that includes the F command code, the call processes the
first occurrence of the segment named by the SSA, subject to the call’s other qualifications
Can be used when you are doing sequential processing and you need to back up in the data
base, or in other words, the F command code can be used for sequential retrieval using GN and
GNP calls
Meaningless with GU calls, because GU normally retrieves the first segment occurrence that
meets the criteria you specify
When you issue a call with an SSA that includes the L command code, the call processes the
last occurrence of the segment named by the SSA, subject to the call’s other qualifications
Unlike the F command code, you can use the L command code with a GU call.
This can be used to access the last occurrence of a segment with a specific key value and the
segment’s key field can have non-unique values. The L command code overrides DL/I ‘s
normal function of returning the first occurrence that fully satisfies the call’s SSA’s.
Used to retrieve more than one segment occurrence using just one call
If you are developing a program that retrieves just lower-level segment occurrences from a data base, you don’t
have to code separate SSAs for each level in the hierarchical path
Instead you can use a single SSA with the C command code
Then, rather than coding a field name, relational operator, and search value, you specify the concatenated key for
the segment you are interested in
When you issue a GU or GN call, DL/I normally establishes parentage at the lowest level
segment that is retrieved
However, if you want to override that and cause parentage to be established at a higher-level
segment in the hierarchical path, you can use the P command code in its SSA
For example, a GN call without the P command code for an item segment from the inventory
data base would establish parentage at the item segment.
We can retrieve the same item segment, but establish parentage at the vendor segment by
using the P command code on the vendor segment’s SSA.
We can also use the P command code in a GNP call. Before we can issue a GNP successfully,
parentage must have successfully been established.. The parentage that you specify with the P
command code in an SSA used in a GNP call does not go into effect until after the segment is
retrieved.
Also you should specify the P command code at just one hierarchical level. If you issue a call
with two or more SSA’s that contain the P command code, DL/I ignores all except the one at
the lowest level in the hierarchical path.
When you use an unqualified SSA that specifies the U command code in a GN call, DL/I restricts
the search for the segment you request to dependents of the segments with the U command
code
Has the same effect as a call which contains a qualified SSA for the current position
Effect is same as coding the U command code at that level and all levels above it in the
hierarchy
This command code is used to enqueue, or reserve for exclusive use, a segment or path of
segments
You only need to use the Q command code in an interactive environment where there is a
chance that another program might make a change to a segment between the time you first
access it and the time you are finished with it
Multiple processing is a general term that means a program can have more than one position in a single
physical data base at the same time
Multiple PCBs
The DBA can define multiple PCBs for a single data base
Then, the program has two (or more) views of the data base
As with PCBs for different data bases, each has its own mask in the Linkage Section and is
specified in the ENTRY statement
It is up to the program’s logic to decide when to use a particular PCB to access the data
base
This method for implementing multiple processing, though flexible, is inefficient because
of the overhead imposed by the extra PCBs
Multiple positioning
Lets a program maintain more than one position within a data base using a single PCB
To do that, DL/I maintains a distinct position for each hierarchical path the program processes
Most of the time, multiple positioning is used to access segments of two or more types sequentially
at the same time
A1
C13
C12 A2
B13 C11
B12
Data base Record 2
B11
C22
B22 C21
B21
When you use multiple positioning, DL/I maintains its separate positions based on segment type
As a result you include an unqualified SSA in the call that names the segment type whose position
you want to use
It is the DBA who decides whether single or multiple positioning will be in effect in the program’s
PSB
As a result multiple positioning is not the characteristic of the data base but instead, it’s how DL/I
allows a program to view a data base
The same program can be processed with either single or multiple positioning by different programs
The ISRT call is used to add a segment occurrence to a data base, either during update processing of an
existing data base or during load processing of a new data base
Before an ISRT call is issued, you should first build the segment occurrence by moving data to the fields of
the segment description
After formatting the segment, you issue the ISRT call with at least one SSA: an unqualified SSA for the
segment type you want to add
INVENTORY-PCB-MASK
INVENTORY-STOCK-LOC-SEGMENT
UNQUALIFIED-SSA.
Here UNQUALIFIED-SSA specifies the segment name
Because the SSA is unqualified, DL/I tries to satisfy the call based on the current position in the data base
As a result, you need to be careful about position when you issue an ISRT call that specifies only a single
unqualified SSA
A safer technique is to specify a qualified SSA for each hierarchical level above the one where you want to
insert the segment, as illustrated below
INVENTORY-PCB-MASK
INVENTORY-STOCK-LOC-SEGMENT
VENDOR-SSA
ITEM-SSA
UNQUALIFIED-SSA.
If SSAs for vendor and item are initialized with the proper key values, DL/I inserts the new segment
occurrence in the correct position in the data base
When you issue a fully qualified ISRT call like this, DL/I returns a status code of GE if any segment
occurrence you specify in an SSA isn’t present in the data base
As a result, you can issue an ISRT call with qualified SSAs instead of first issuing GU calls to find out if
higher-level segments in the path are present
By issuing one call instead of two (or more), you can save system resources
If the new segment has a unique sequence field, as most segment types do, it is added in its proper
sequential position
However, some lower-level segment types in some data bases have non-unique sequence fields or don’t
have sequence fields at all
When that’s the case, where the segment occurrence is added depends on the rules the DBA specifies
for the data base
For a segment without a sequence field, the insert rule determines how the new segment is positioned
relative to existing twin segments
• If the rule is “first”, the new segment is added before any existing twins
• If the rule is “last”, the new segment is added after all existing twins
• If the rule is “here”, it is added at the current position relative to existing twins, which may be first, last, or
anywhere in the middle
For a segment with non-unique sequence fields, the rules are similar, but they determine where the
new segment is positioned relative to existing twin segments that have the same key value
GE When you use multiple SSAs and DL/I cannot satisfy the call with the specified path
I I When you try to add a segment occurrence that is already present in the data base
For load processing you might get status codes LB, LC, LD or LE.
• In most cases they indicate that you are not inserting segments in exact hierarchical sequence
• That means there is an error in your program or the files from which you are loading the data base
contain incorrect data
There are three get hold functions you can specify in a DL/I call:
Before you can replace or delete a segment, you must declare your intent to do so, by retrieving the
segment with one of these three calls
Then you must issue the replace or delete call before you do another DL/I processing in your program
2. You can’t change the value of the sequence field (if the segment has one)
Never code a qualified SSA on an REPL call: if you do, the call will fail
INVENTORY-PCB-MASK
INVENTORY-STOCK-LOC-SEGMENT
VENDOR-SSA
ITEM-SSA
LOCATION-SSA.
INVENTORY-PCB-MASK
INVENTORY-STOCK-LOC-SEGMENT.
Member firms and DTTL: Insert appropriate copyright Presentation title 100
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
The REPL Call (contd.)
If you try to use a qualified SSA on an REPL call, you will get an AJ status code
If your program issues a replace call without an immediately preceding get hold call, DL/I returns
a DJ status code
If your program makes a change to the segment’s key field before issuing the REPL call, DL/I
returns a DA status code
Member firms and DTTL: Insert appropriate copyright Presentation title 101
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
The DLET Call
You must first issue a get hold call to indicate that you intend to make a change to the segment you are
retrieving
Then you issue a DLET call to delete the segment occurrence from the data base
For example, to delete a stock location that is no longer active, you’d code a series of statements like the
ones below
Notice that the DLET call does not include any SSAs
There is one important point you must keep in mind whenever you use the DLET call– when you delete a
segment, you automatically delete all segment occurrences subordinate to it
The status codes you might get after a DLET call are the same as those you can get after an REPL call
Member firms and DTTL: Insert appropriate copyright Presentation title 102
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Sample IMS Program
Member firms and DTTL: Insert appropriate copyright Presentation title 103
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Sample Program (contd.)
Member firms and DTTL: Insert appropriate copyright Presentation title 104
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Sample Program (contd.)
Member firms and DTTL: Insert appropriate copyright Presentation title 105
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Sample Program (contd.)
Member firms and DTTL: Insert appropriate copyright Presentation title 106
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Sample IMS Update Program
Member firms and DTTL: Insert appropriate copyright Presentation title 107
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 108
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 109
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 110
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 111
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 112
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 113
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Program contd.
Member firms and DTTL: Insert appropriate copyright Presentation title 114
[To edit, click View > Slide Master > Slide Master] [To edit, click View > Slide Master > Slide Master]
Thank
you