Ims HSSR
Ims HSSR
Version 1 Release 2
User's Guide
SC27-0936-07
IBM IMS High Performance Unload for z/OS
Version 1 Release 2
User's Guide
SC27-0936-07
Note
Before using this information and the product it supports, read the information in “Notices” on page 617.
iv User's Guide
Chapter 16. HSSR call test utility Chapter 21. Planning for the
(FABHTEST) . . . . . . . . . . . . 303 Sequential Subset Randomizer . . . . 369
FABHTEST restrictions . . . . . . . . . . 304 Considerations when defining subset IDs . . . . 370
Running FABHTEST to test HSSR calls . . . . . 305 Considerations for application programming . . . 371
FABHTEST JCL requirements . . . . . . . . 306 Considerations on the relative amount of space to
FABHTEST input . . . . . . . . . . . . 307 each subset . . . . . . . . . . . . . . 372
FABHTEST SYSIN input data set . . . . . . 307 Considerations for monitoring the database . . . 373
FABHTEST HSSROPT input data set . . . . 311
FABHTEST HSSRCABP input data set . . . . 311 Chapter 22. Generation of the
FABHTEST output: SYSPRINT output data set . . 313 Sequential Subset Randomizer . . . . 375
FABHTEST JCL examples . . . . . . . . . 314
Generating the Sequential Subset Randomizer load
module . . . . . . . . . . . . . . . 376
Chapter 17. Buffer handler simulation FABIRGEN JCL requirements . . . . . . . . 377
utility (FABHBSIM) . . . . . . . . . 317 FABIRGEN input: SYSIN data set . . . . . . 378
FABHBSIM restrictions . . . . . . . . . . 318 FABITAB macro statement . . . . . . . . 379
Running FABHBSIM to simulate the buffer handler 319 FABIDEF macro statement . . . . . . . . 381
FABHBSIM JCL requirements . . . . . . . . 320 FABIGEN macro statement . . . . . . . . 381
FABHBSIM input . . . . . . . . . . . . 321 END statement . . . . . . . . . . . . 382
FABHBSIM HSSROPT input data set . . . . 321 FABIRGEN JCL examples . . . . . . . . . 383
FABHBSIM HSSRCABP input data set . . . . 321
FABHBSIM output: HSSRSTAT output data set . . 322 Chapter 23. Splitting the unloaded
FABHBSIM JCL example . . . . . . . . . 323 database data set . . . . . . . . . 385
Splitting the unloaded database data set with
Chapter 18. System programming FABIUNLS . . . . . . . . . . . . . . 386
interfaces . . . . . . . . . . . . . 325 FABIUNLS JCL requirements . . . . . . . . 387
Runtime Environment exit (FABHRTEX) . . . . 326 FABIUNLS output . . . . . . . . . . . . 389
Buffer Handler Initialization exit (FABHCEX). . . 328 SYSPRINT data set . . . . . . . . . . 389
Return Code Edit exit (FABHRCEX) . . . . . . 329 FABIUNLS JCL example . . . . . . . . . . 392
User record-formatting routine . . . . . . . 331
Logic of FABHURG1 . . . . . . . . . . 331 Chapter 24. Obtaining statistics from
Interface to user record-formatting and optional each subset with Sequential Subset
user exit routines . . . . . . . . . . . 332
Call parameters . . . . . . . . . . . 333
Statistics . . . . . . . . . . . . . 395
Special-purpose SYSIN control statements for Obtaining statistics from each subset . . . . . 396
user exits . . . . . . . . . . . . . . 338 JCL requirements when SS-STATS routine is
Get-by-RBA calls . . . . . . . . . . . 342 applied . . . . . . . . . . . . . . . 397
Considerations for coding and link-editing the HSSROPT input data set when SS-STATS routine is
routine . . . . . . . . . . . . . . 345 applied . . . . . . . . . . . . . . . 398
Product-sensitive macros . . . . . . . . . 347 SSSTATS control statement . . . . . . . . 398
HSSRSTAT output data set when SS-STATS routine
is applied . . . . . . . . . . . . . . 399
Chapter 19. Site default options . . . 349 Sequential Subset Statistics report . . . . . 399
How the runtime parameters are determined . . . 350 JCL example to apply the SS-STATS routine . . . 402
Replacing the HSSR option table (FABHOPT) . . 352
FABHTOPT macro statements . . . . . . . . 353
Chapter 25. Converting databases to
HDAM databases randomized with the
Part 4. Using the Sequential Sequential Subset Randomizer . . . . 403
Subset Randomizer . . . . . . . . 357 Converting from a database randomized with
DFSHDC40 . . . . . . . . . . . . . . 404
Chapter 20. Introduction to the Converting from a database randomized with other
Sequential Subset Randomizer . . . . 359 randomizers . . . . . . . . . . . . . . 406
Characteristics of the Sequential Subset Converting from a HISAM or HIDAM . . . . . 408
Randomizer . . . . . . . . . . . . . . 360
Benefits of the Sequential Subset Randomizer . . 361 Part 5. Tuning databases with
Sequential Subset Randomizer program functions 362
Database Tuning Statistics reports 411
Differences between the Sequential Subset
Randomizer and other sequential randomizers . . 365
Sequential Subset Randomizer program structure 367 Chapter 26. Obtaining statistics for
Sequential Subset Randomizer restrictions . . . . 368 database tuning . . . . . . . . . . 413
Contents v
Activating the Database Tuning Statistics . . . . 414 How to determine randomizing parameters by
JCL requirements for the Database Tuning Statistics 415 using a reasonable first guess method . . . . . 467
Input for Database Tuning Statistics . . . . . . 416
HSSROPT input data set for Database Tuning Chapter 29. Creating a database
Statistics . . . . . . . . . . . . . . 416 extract for tuning experiments . . . . 471
HSSRLDEF input data set for Database Tuning
Considerations when applying the FABHEXTR exit
Statistics . . . . . . . . . . . . . . 417
routine . . . . . . . . . . . . . . . 472
Output from the Database Tuning Statistics . . . 419
Extracting a subset of database records with
HSSRSTAT output data set for Database Tuning
FABHEXTR . . . . . . . . . . . . . . 473
Statistics . . . . . . . . . . . . . . 419
HSSREXTR input data set for FABHEXTR . . . . 474
HSSRLOUT output data set for Database Tuning
JCL example for creating a database unload extract 476
Statistics . . . . . . . . . . . . . . 419
vi User's Guide
Chapter 34. Troubleshooting IMS High Chapter 37. Diagnostics Aid . . . . . 609
Performance Unload problems . . . . 513 Running the Diagnostics Aid with JCL . . . . . 610
HSSR snaps . . . . . . . . . . . . . . 514 Load Module/Macro APAR Status report . . . . 611
Trapping abends issued by application programs 515 Load Module APAR Status report . . . . . 611
FABHTEST utility for problem determination. . . 516 Macro APAR Status report . . . . . . . . 612
Messages and codes . . . . . . . . . . . 613
Chapter 35. Messages and codes . . . 517 Return codes . . . . . . . . . . . . 613
Abend codes . . . . . . . . . . . . 613
How to look up message explanations . . . . . 518
Messages . . . . . . . . . . . . . . 613
Abend code U4013 . . . . . . . . . . . 520
Return codes . . . . . . . . . . . . . 521
FABHURG1 return codes . . . . . . . . 521 Notices . . . . . . . . . . . . . . 617
FABHFSU return codes . . . . . . . . . 522 Programming interface information . . . . . . 618
FABHPSFS return codes . . . . . . . . . 522 Trademarks . . . . . . . . . . . . . . 619
FABHBSIM and FABHTEST return codes . . . 522
Messages . . . . . . . . . . . . . . . 523 Index . . . . . . . . . . . . . . . 621
FABH messages . . . . . . . . . . . 524
FABI messages . . . . . . . . . . . . 602
Contents vii
viii User's Guide
About this information
IBM® IMS™ High Performance Unload for z/OS® (also referred to as IMS High
Performance Unload or IMS HP Unload) provides high speed unloading of IMS
databases and improves performance of IMS data retrieval application programs
by using the Unload application programming interface (API).
IMS High Performance Unload is a component of the IBM IMS Database Solution
Pack for z/OS. IMS High Performance Unload is also available as a separately
orderable product.
Attention: These topics contain specific settings and target values for tuning
databases. See "IMPORTANT NOTICE" in the topic "Tuning a database
with the Database Tuning Statistics" before you use these topics.
Always check the IMS Tools Product publications page for the most current
version of this information:
http://www.ibm.com/support/docview.wss?uid=swg27020942
Topics:
v “What's new in IMS High Performance Unload” on page 4
v “What does IMS High Performance Unload do?” on page 8
v “IMS High Performance Unload features and benefits” on page 11
v “IMS High Performance Unload system structure” on page 12
v “IMS High Performance Unload terminology” on page 14
v “Utilities management solutions” on page 15
v “Service updates and support information” on page 16
v “IMS High Performance Unload documentation and updates” on page
17
v “Accessibility features” on page 20
New and changed information is indicated by a vertical bar (|) to the left of a
change. Editorial changes that have no technical significance are not noted.
| SC27-0936-07
| This edition covers the functional changes provided by the following APARs:
| PK61726, PK77437, PK90234, PM12285, PM22119, PM48532, PM55775, and
| PM58705.
SC27-0936-06
This edition covers the following improvements of IMS High Performance Unload
for z/OS, Version 1 Release 2:
v Functional and performance improvements:
– In the unload utilities (FABHURG1 and FABHFSU), the number of buffers
that are automatically set for unload data set are increased. For details, see
“FABHURG1 JCL requirements” on page 51 and “FABHFSU JCL
requirements” on page 72.
– If the STEPLIB is APF-authorized, HSSR Engine uses the Media Manager to
read VSAM ESDS database data sets. The use of Media Manager saves the
use of CPU time.
v Improvements in the usability and readability of the product information are
made in Chapter 7, “Application programming interface for using HSSR
Engine,” on page 101.
IMS High Performance Unload for z/OS, Version 1 Release 2 does not support IMS
that are lower than Version 7. Therefore, the names of the IMS libraries that are
referred to by the catalog procedure, provided by the product, are changed to
those names of IMS Version 8 and higher.
The documentation changes that are provided by APARs PK38688, PK47931, and
PK49836 are applied.
SC27-0936-05
This edition covers the functional changes that are provided by the following
APARs:
4 User's Guide
PK11534, PK17804, PK24577, PK24974, PK28097, PK32595, and PK33118.
SC27-0936-04
This edition covers the functional enhancements provided by the following APARs:
PQ97692, PQ99842, PK01994, PK04911, PK06057, PK07881, PK07882, PK08900,
and PK11209.
This edition also includes the changes added by the following APARs:
v PQ69413, PQ70680, PQ70768, PQ72433, PQ76387, PQ77099, and PQ79194.
6 User's Guide
PQ59358
This DOC APAR is devoted to explanations for three messages:
v The explanation for message FABH0431W is expanded to cover all the
conditions in which that message is issued.
v Explanations of messages FABH0092W and FABH0358W, which had
been missing, are added.
PQ59762
This DOC APAR adds a description of the conditions in which the header
record flag introduced by APAR PQ22654 for HSSR V2R3 causes an
incompatibility. If an unloaded data set has been created by specifying the
DECN control statement for a database that contains a compressed
segment, that data set is not compatible with an unloaded data set created
by the IMS HD Reorganization Unload utility.
PQ62843
This APAR adds support for the Return Code Edit exit. This APAR
provides a new exit for the HSSR Engine of IMS High Performance
Unload. This exit, called the Return Code Edit exit (FABHRCEX), can be
used to modify the return codes issued by HSSR application programs.
PQ66914
This DOC APAR adds the formerly insufficient explanation of HALDB
formats. The description is now as follows: A HALDB can be unloaded in
*HD format by FABHURG1, or in UL format by FABHFSU. Whichever
format the HALDB is in, both the IPR Reload utility of IMS Parallel
Reorganization for z/OS, Version 2 Release 1 and IMS High Performance
Load for OS/390®, Release 1 regard it internally, and therefore refer to it, as
having PHD format.
PQ67004, PQ67296, PQ69199
These APARs add the following functions to the HSSR call:
v The application programming interface for IMS High Performance
Unload is extended to support GN and GNP calls with an unqualified
SSA for a dependent segment type of an HD database.
v The application programming interface for IMS High Performance
Unload is extended to support EXEC DLI commands.
SC27-0936-00
This guide covers IMS High Performance Unload, which is a follow-on product to
the IMS System Utilities/Data Base Tools (DBT) Version 2 High Speed Sequential
Retrieval (DBT V2 HSSR). The compatibility with DBT V2 HSSR and other prior
products is summarized in the following topics:
v Chapter 30, “Compatibility with DBT V2 HSSR,” on page 479
v Chapter 31, “Compatibility with DBT V1 HSSR,” on page 497
v Chapter 32, “Compatibility with PO HSSR,” on page 499
v Chapter 33, “Compatibility with FSU II,” on page 509
One of the major enhancements to IMS High Performance Unload is the addition
of support for IMS Version 7 (IMS V7), specially High Availability Large Database
(HALDB), introduced in IMS V7. See Chapter 8, “Methods for processing High
Availability Large Databases,” on page 127.
As processing volumes increase, more work needs to be done in a shorter time due
to shrinking batch windows. IMS High Performance Unload saves you time and
money by reducing the CPU and elapsed time that is required to unload IMS
databases and to run IMS data retrieval application programs. Powerful functions
such as the ability to continue processing after a pointer error, a user exit facility,
and various unloaded record formats are provided, all with the goal of improving
availability and throughput.
IMS High Performance Unload is designed for use with IMS Database
Reorganization Expert for z/OS and IMS Online Reorganization Facility for z/OS,
as well as with other high performance IMS Tools products to provide the most
efficient and powerful end-to-end solution for IMS database reorganization.
Subsections:
v “Two unload utilities”
v “Application programing interface” on page 9
v “Database organizations supported” on page 9
v “Compatibility with prior products” on page 10
IMS High Performance Unload provides two unload utilities; FABHURG1 and
FABHFSU. Both utilities offer the following functions:
Fast segment retrieval from databases
The segment retrieval engine of IMS High Performance Unload, HSSR
Engine, provides the facility to retrieve segments much faster than DL/I.
See “IMS High Performance Unload system structure” on page 12.
Unloading a database without decompressing compressed segments
Both unload utilities can unload a database that uses the Segment
Edit/Compression Exit without decompressing the segments. This method
can decrease the CPU time and elapsed time. See the following topics to
activate the decompress option:
v For FABHURG1, see “DEC control statement” on page 55.
v For FABHFSU, see “DEC control statement” on page 78.
8 User's Guide
Unloading a selected partition or a selected sequence of partitions of a HALDB
Both unload utilities support unloading of a HALDB. For details, see
Chapter 8, “Methods for processing High Availability Large Databases,” on
page 127.
Ability to monitor the need for database reorganization by examining statistical
reports
The unload utilities can generate statistical reports that can be used for
database tuning purposes. For details, see Chapter 26, “Obtaining statistics
for database tuning,” on page 413.
Ability to monitor the quality of HDAM or PHDAM randomizing by examining
statistical reports
The unload utilities can generate statistical reports that can be used to
measure the quality of HDAM or PHDAM randomizing. For details, see
Chapter 26, “Obtaining statistics for database tuning,” on page 413.
Ability to continue processing after sequence errors
HSSR Engine optionally performs sequence-key checks for twin chains.
You can select the behavior for a sequence error from the following
options:
v HSSR Engine gets to abend.
v HSSR Engine returns a GG status code and unloads neither the segment
in error nor its dependents.
v HSSR Engine returns a GX status code and unloads the segment in error.
Reading a corrupted database
Options in IMS High Performance Unload increases the control you have
when you unload a database that contains an incorrect pointer or incorrect
HISAM records:
v Incorrect HD pointers can be bypassed.
v The processing of the remainder of the incorrect HISAM record can be
skipped.
v The root segments of HIDAM or PHIDAM database can be accessed by
use of the primary index, instead of traversing the root twin chain and
the RAP chain.
For details, see Chapter 9, “Utility options for unloading corrupted
databases,” on page 151.
Other database organizations are not supported by IMS High Performance Unload.
Notes:
v Secondary index databases are supported, but are processed as
independent databases. Processing of a partitioned secondary index is
not supported.
v IMS/ESA® Partition Support Product for MVS/ESA (5697-A06) and
IMS/ESA Partition Support Product for MVS/ESA Version 2 (5697-D85)
are not supported.
IMS High Performance Unload is compatible with the following prior products:
DBT V2 HSSR
IMS System Utilities/Data Base Tools Version 2, High Speed Sequential
Retrieval (product number 5685-093)
DBT V1 HSSR
IMS System Utilities/Data Base Tools Version 1, High Speed Sequential
Retrieval product number 5668-856)
PO HSSR
Program Offering High Speed Sequential Retrieval Version 2 (IFP
5787-LAC)
FSU II
IMS/VS Fast Scan Utility II Version 2 (FDP 5798-DFN)
For details about compatibility with these products, see the following topics:
v Chapter 30, “Compatibility with DBT V2 HSSR,” on page 479
v Chapter 31, “Compatibility with DBT V1 HSSR,” on page 497
v Chapter 32, “Compatibility with PO HSSR,” on page 499
v Chapter 33, “Compatibility with FSU II,” on page 509
10 User's Guide
IMS High Performance Unload features and benefits
IMS High Performance Unload provides high speed database unloading
capabilities, as well as additional capabilities that are not included in the IMS base
utilities.
The segment retrieval engine of IMS High Performance Unload, HSSR Engine,
provides the function to retrieve segments much faster than DL/I. The unload
utilities FABHURG1 and FABHFSU benefit.
Also, batch DL/I application programs that use GN calls to read database can use
the facility. Programs that read large portions of a database sequentially may get
significant reductions in elapsed time and CPU use. You do not have to recompile
or relink-edit the application program to use HSSR Engine.
Each of the unload utilities provides the user exit facility, which provides more
control on unload process than the IMS HD Reorganization Unload utility.
IMS High Performance Unload optionally does sequence-key checks for twin
chains. You can select the behavior for a sequence error from the following
methods:
v IMS High Performance Unload gets to abend (KEYCHECK ABEND)
v IMS High Performance Unload returns a GG status code and does not unload
the segment containing the error, or its dependents (KEYCHECK GG and
SKERROR n)
v IMS High Performance Unload returns a GX status code and unloads the
segment in error (KEYCHECK GX)
IMS High Performance Unload options give you greater control when you are
unloading a database that has an incorrect pointer:
v SKERROR option can be used to bypass pointer errors.
v BYINDEX option can be used to force the roots of HIDAM or PHIDAM database
to be accessed from the primary index.
Outputs from
//HSSROPT //HSSRCABP HSSR Engine
HP-Unload runtime initializer
FABHX034
//HSSRSTAT
Transfer control
IMS DD IMS region controller
DFSRRC00
INIT call
HP-Unload program controller
TERM call
Utility/Application program For an HSSR PCB
IMS High Performance Unload runs in an IMS batch environment. IMS High
Performance Unload runtime environment initializer (FABHX034) is invoked first.
The initializer gives control to the IMS region controller DFSRRC00, which passes
control to the IMS program controller. IMS High Performance Unload program
controller is then invoked by the IMS program controller as an IMS batch
application program.
The IMS High Performance Unload program controller calls HSSR Engine. HSSR
Engine then reads the HSSROPT data set to initialize the call analyzer, call handler,
and trace and diagnosis facilities, and reads the HSSRCABP data set to initialize
the buffer handler. Call analyzer initializes PCBs that have been specified to be
serviced by HSSR Engine. Such PCBs are called HSSR PCBs (for details about
HSSR PCB, see Chapter 7, “Application programming interface for using HSSR
Engine,” on page 101). Call analyzer also initializes control blocks relating to the
HSSR PCBs. Buffer handler allocates a buffer pool for each data set group for each
HSSR PCB.
The IMS High Performance Unload program controller loads the application
program. Each DL/I call or EXEC DLI command to an HSSR PCB is processed by
HSSR Engine. This call or command is called an HSSR call. If the PCB is not an
HSSR PCB, HSSR call router passes control to the DL/I program request handler.
12 User's Guide
After the application program runs, it returns control to the IMS High Performance
Unload program controller. HSSR Engine terminates the processing and writes
statistical reports to the HSSRSTAT data set. Then the program controller returns
control to IMS.
For details about each component of IMS High Performance Unload, see the
following topics:
v Chapter 5, “FABHURG1 unload utility,” on page 45
v Chapter 6, “FABHFSU unload utility,” on page 67
v Chapter 7, “Application programming interface for using HSSR Engine,” on
page 101
To run these unload utilities or to use HSSR engine with your application program,
you must prepare basic JCL. For information, see Chapter 4, “Basic job control
language,” on page 37.
Abbreviations
In these topics, all supported versions of IMS are referred to as IMS, except where
distinctions among them need to be made.
In these topics, the following abbreviations for product names are used:
14 User's Guide
Utilities management solutions
IBM solutions help IT organizations maximize their investment in IMS databases
while staying on top of some of today's toughest IT challenges. Utilities
management solutions can help you achieve higher availability and better
performance during database maintenance while enhancing the productivity of
both database administrators and system programmers.
Underlying the operation of any database management system are the utilities.
With the number of database objects growing exponentially, especially when
dealing with ERP applications such as SAP, the impact of managing utility jobs,
meeting service level agreements, and ensuring recoverability can be
overwhelming.
IBM offers IMS Tools that assist in the Utilities Management process for example:
This and other IMS Tools can help you achieve higher availability and better
performance during data maintenance while enhancing the productivity of both
database administrators and system programmers.
Many IMS Tools products provide database management features that are not
available in IMS itself or that provide enhancements to capabilities that are built
into IMS.
IBM IMS High Performance Unload is only one of several IMS Tools products that
provide enhancements to the process of utility management operations for your
databases.
For example, IMS High Performance Unload provides high speed unloading of
IMS databases, functionally replacing the IMS HD Reorganization Unload utility
(DFSURGU0). The unloaded data sets that are produced by IMS High Performance
Unload can be used as input to IMS High Performance Load for z/OS or the IPR
Reload utility of IMS Database Reorganization Expert for z/OS.
IMS High Performance Unload is designed for use with IMS Database
Reorganization Expert for z/OS and IMS Online Reorganization Facility for z/OS,
as well as with other high performance IMS Tools products to provide the most
efficient and powerful end-to-end solution for IMS database reorganization.
Other IMS Tools product that can assist with database utilities management
include:
v IMS Cloning Tool
v IMS Database Control Suite
v IMS Database Reorganization Expert
v IMS Database Solution Pack
v IMS Fast Path Solution Pack
To find service updates and support information, see the following web page:
http://www.ibm.com/support/entry/portal/Overview/Software/
Information_Management/IMS_Tools
16 User's Guide
IMS High Performance Unload documentation and updates
IMS Tools information is available at multiple places on the web. You can receive
updates to IMS Tools information automatically by registering with the IBM My
Support service.
Subsections:
v “IMS High Performance Unload information on the web”
v “Receiving documentation updates automatically”
v “Roadmap to IMS High Performance Unload information” on page 18
The IMS Tools Product publications web page provides current product
documentation that you can view, print, and download. To locate publications with
the most up-to-date information, refer to the following web page:
http://www.ibm.com/support/docview.wss?uid=swg27020942
You can also access documentation for many IMS Tools from the Information
Management Software for z/OS Solutions Information Center:
http://publib.boulder.ibm.com/infocenter/imzic
IBM Redbooks® publications that cover IMS Tools are available from the following
web page:
http://www.redbooks.ibm.com
The Data Management Tools Solutions website shows how IBM solutions can help
IT organizations maximize their investment in IMS databases while staying ahead
of today's top data management challenges:
http://www.ibm.com/software/data/db2imstools/solutions/index.html
To automatically receive automated emails that notify you when new technote
documents are released, when existing product documentation is updated, and
when new product documentation is available, you can register with the IBM My
Notifications service. You can customize the service so that you receive information
about only those IBM products that you specify.
The IMS High Performance Unload User's Guide provides complete information
for using IMS High Performance Unload.
If you are not experienced with IMS System Utilities/Data Base Tools, High Speed
Sequential Retrieval (DBT HSSR) or Program Offering High Speed Sequential
Retrieval (PO HSSR), read Chapter 1, “Introduction to IMS High Performance
Unload,” on page 3 for a technical overview of this product. This topic covers the
following general information:
v Introduction to the functions of IMS High Performance Unload
v Typical benefits you can get by using IMS High Performance Unload
v System structure of IMS High Performance Unload
Then proceed to Chapter 4, “Basic job control language,” on page 37 to learn how
to write JCL for IMS High Performance Unload. This topic covers the following
information:
v JCL statements for IMS High Performance Unload
v IBM-supplied cataloged procedures
In addition, the following topics help you to complete your tasks with IMS High
Performance Unload:
v To process a HALDB, see Chapter 8, “Methods for processing High Availability
Large Databases,” on page 127.
v To unload a database that has a pointer error, see Chapter 9, “Utility options for
unloading corrupted databases,” on page 151.
v To change the behavior of IMS High Performance Unload by coding control
statements, see Chapter 11, “Options for HSSR Engine,” on page 203.
v To interpret the reports generated by HSSR Engine, see Chapter 12, “Reports and
output from HSSR Engine,” on page 239.
v To tune or customize IMS High Performance Unload jobs, see the following
topics:
– Chapter 13, “Overview of the buffer handlers,” on page 273
– Chapter 18, “System programming interfaces,” on page 325
– Chapter 19, “Site default options,” on page 349
v To tune your databases by using the Database Tuning Statistics function, see
Chapter 26, “Obtaining statistics for database tuning,” on page 413.
18 User's Guide
v If you are migrating from DBT HSSR or PO HSSR, see the following topics:
– Chapter 30, “Compatibility with DBT V2 HSSR,” on page 479
– Chapter 31, “Compatibility with DBT V1 HSSR,” on page 497
– Chapter 32, “Compatibility with PO HSSR,” on page 499
– Chapter 33, “Compatibility with FSU II,” on page 509
Accessibility features
Keyboard navigation
You can access the information center and IMS ISPF panel functions by using a
keyboard or keyboard shortcut keys.
You can find information about navigating the information center using a keyboard
in the information center home at IBM Information Management Software for
z/OS Solutions Information Center.
For information about navigating the IMS ISPF panels using TSO/E or ISPF, refer
to the z/OS V1R1.0 TSO/E Primer, the z/OS V1R5.0 TSO/E User’s Guide, and the
z/OS V1R5.0 ISPF User’s Guide, Volume 1. These guides describe how to navigate
each interface, including the use of keyboard shortcuts or function keys (PF keys).
Each guide includes the default settings for the PF keys and explains how to
modify their functions.
See the IBM Human Ability and Accessibility Center at www.ibm.com/able for
more information about the commitment that IBM has to accessibility.
20 User's Guide
Chapter 2. Hardware and software prerequisites
Before you install IMS High Performance Unload, make sure that your
environment meets the following minimum hardware and software requirements.
Hardware requirements
Software requirements
IMS High Performance Unload requires Database Manager of one of the currently
supported versions of IMS.
The operating system requirements of IMS High Performance Unload are the same
as those required by the corresponding IMS release.
To use the Data Conversion exit of IMS, IMS/ESA Year 2000 Exit Tool Version 1
(5697-E04) is required (this product supports IMS versions up to Version 7).
To use the DB2 DL/I Batch support, one of the currently supported versions of
DB2 UDB for z/OS is required.
Restrictions
IMS High Performance Unload is subject to the following restrictions with respect
to processing environment:
v It cannot be run under IMS Utility Control Facility (UCF).
v It does not support the checkpoint and restart capability.
Restrictions that are related with each utility program are described in “Restrictions
for IMS High Performance Unload” on page 29.
The unloaded data set produced by these unload utilities can be used as input to
the IMS HD Reorganization Reload utility and to other reload utilities that are
compatible with it.
Topics:
v “Selecting an unload utility for your use” on page 26
v “Restrictions for IMS High Performance Unload” on page 29
v “Considerations for using the unload utilities” on page 33
Procedure
Use the following information to select the unload utility that meets your
unloading needs:
The FABHURG1 utility is relatively simple. The FABHFSU utility provides more
functions than FABHURG1, and is compatible with FSU II.
Both unload utilities are usually run in the ULU region. In that ULU region, all
database segment types are unloaded automatically. These utilities can also be run
in DLI region, and FABHURG1 can be run in the DBB region.
| Note: You can also use FABHFSU in PSF mode to do a migration unload.
| By using FABHFSU in PSF mode, you can process the partitions in
| parallel, which results in faster processing. For more information,
| see “Parallel migration unload” on page 145. Fallback unload from
| HALDB is not supported by FABHFSU.
Create a database extract to perform database tuning experiments.
Using the exit routine FABHEXTR provided by IBM, you can create a small
database extract from a large database, for use in database tuning
experiments.
Use a user record-formatting routine to format output records or to edit segment
data (for system programmers).
FABHURG1 accepts a user exit that enables system programmers to write a
user record-formatting routine for formatting output records and an
optional exit routine for editing segment data.
26 User's Guide
Consider using the FABHFSU unload utility if you want to:
Create up to three data sets in one single execution.
Different record formats can be specified for each output data set. If
FABHFSU runs in the DLI region, different PCBs that refer to the same
DBD can be specified for each output data set.
Notes:
v User exits are also provided for FABHURG1, but they are
intended to be used mainly by system programmers who have
good knowledge of IMS database and HSSR Engine.
v FABHURG1 does not support user exits that are compatible with
user exits of IPR Unload utility.
Unload a specified range or portion of an HISAM, HIDAM, or HDAM
database.
You can unload the portion of the database to be read. For HISAM or
HIDAM, the limits of the range are specified as keys. For HDAM, the
limits of the range are defined as relative block numbers of the CIs or
blocks in the Root Addressable Area.
Unload a multivolume database by scanning separately or concurrently (PSF
mode).
FABHFSU has two different modes: the standard mode and the Parallel
Scan Facility (PSF) mode. In the PSF mode, FABHFSU performs individual
scan phases, which can run separately or concurrently to unload a
multivolume database.
Note: In both the standard mode and the PSF mode, FABHFSU runs as an
HSSR application program.
Use FSU II JCL.
You can use your FSU II JCL to run FABHFSU by making small
modifications to your FSU II JCL.
What to do next
See also “Restrictions for IMS High Performance Unload” on page 29 and
“Considerations for using the unload utilities” on page 33 to learn the restrictions
and considerations that apply to each utility.
When you have determined the unload utility to use, see the following topics for
the instructions to use the utility:
28 User's Guide
Restrictions for IMS High Performance Unload
Certain restrictions apply when using the unload utilities or the API of IMS High
Performance Unload.
Subsections:
v “Restrictions common to all HSSR applications”
v “Restrictions common to FABHURG1 and FABHFSU” on page 30
v “Restrictions specific to FABHURG1” on page 31
v “Restrictions specific to FABHFSU” on page 31
The following restrictions apply to all HSSR application programs including the
FABHURG1 utility and the FABHFSU utility:
v Logical DBD is not supported.
v A sensitive virtual logical child (LCHILD) is not supported.
v Field sensitivity for an HSSR PCB is not supported.
v For the restrictions of secondary index processing, see “Considerations for using
a secondary index” on page 35.
v The following restrictions apply to HSSR calls:
– For details of call types supported in each API set, see “DL/I calls supported
by each API set” on page 110.
- If APISET 1 or 2 is specified, or if the target is a non-HD database, the
following restrictions are applied:
v An unqualified or qualified SSA is not fully supported.
| v Three or more SSAs are supported restrictedly.
v Command codes except for NULL('*-') command code are not supported.
v Multiple qualification statements are not supported.
- If APISET 3 is specified for non-HD database and the unsupported call is
issued, HSSR Engine ends abnormally without passing the call to IMS
DL/I.
- A get-next call issued after GU calls that returned a GE status might not
return the same segment as DL/I.
– For details about the EXEC DLI command types supported in each API set,
see “EXEC DLI commands supported by each API set” on page 111. For the
EXEC DLI commands, the restrictions corresponding those for the DL/I calls
apply.
v The following restrictions apply to Application Interface Block (AIB) interface:
– HSSR calls using AIB interface are not supported.
An HSSR call that uses the interface is passed to IMS's DL/I call handler and
is processed as a DL/I call or an EXEC DLI command for the corresponding
DL/I PCB.
– An HSSR application program that uses AIB system service calls might have
problems. The use of AIB system service calls is not recommended.
v In APISET 1 and 2, by default, for a logical child with a logical parent's
concatenated key (LPCK) that is specified as VIRTUAL on the SEGM statement
of the DBD, HSSR Engine returns blanks in the I/O area that would usually
hold the LPCK (as if field sensitivity were in effect). For compatibility with FSU
| Note: Virtually paired segments are unloaded when migration unload (to
| HALDB) is performed.
v If either of the following segment occurrences is skipped or lost during the
unload, FABHURG1 and FABHFSU cannot be used in a reorganization to unload
a corrupted database that has logical relationships:
– A logical parent segment that has one or more logical children.
– A logical child segment that is physically paired.
v Make sure that no segments required by the IMS HD Reorganization Reload
utility are missing during reorganization for either of the following reasons:
– Having no segment types defined as data-sensitive by a SENSEG statement
(this condition does not happen when you use a ULU region in unloading.)
30 User's Guide
– Having a user exit routine set a return code indicating that some segments
should be skipped.
v No support is available for multivolume output data sets whose extents reside
on volumes of more than one device type.
| v FABHURG1 and FABHFSU do not support IMS Tools Knowledge Base. It is
| supported by the IPR Unload utility. For the details, see the IMS Database
| Reorganization Expert for z/OS User's Guide.
32 User's Guide
Considerations for using the unload utilities
Certain considerations apply when using the unload utilities of IMS High
Performance Unload.
To have HSSR Engine build the LPCK and return it in the I/O area, you must
specify BLDLPCK control statement in the HSSROPT data set. For details, see
“BLDLPCK control statement” on page 208.
When you unload an uncorrupted database that has a logical child whose LPCK is
defined as virtual, and if BLDLPCK statement is not specified, you must run the
IMS Database Prereorganization utility with the control statement DBR= to get a
successful reload and prefix resolution. The control statement DBIL= gives
incorrect results in this case.
You must specify BLDLPCK statement when you unload a corrupted database that
has a logical pointer error in a logical child whose LPCK is defined as virtual.
Since you suspect that logical pointers are incorrect, you must also run the
Database Prereorganization utility, using the DBIL= control statement. Otherwise,
you will get an incorrect reload that would be detected during prefix resolution.
The update might be done either by IMS within the same program or by another
IMS subsystem through concurrent execution. For such cases, see “Database
sharing support” on page 119. The considerations in the topic also apply to
FABHURG1 and FABHFSU.
However, if one or more partitions are in the following HALDB OLR status, IMS
High Performance Unload cannot process the HALDB:
v HALDB OLR is currently running.
v HALDB OLR for the partition is suspended and one of the following options is
specified for FABHURG1 or FABHFSU:
– DECN
– User exit routine
– *CS format for PHDAM
– PARTEXTR
When none of these options is specified, IMS High Performance Unload can
process the partition. However, the following options for the HSSR Engine are
ignored:
v BYINDEX
v CO
v DBSTATS
v KEYCHECK
v SKERROR
Because the DBSTATS control statement is ignored, the following reports are not
printed:
v DB Call Statistics report
v Randomizing Statistics report
v DB Record Length Distribution report
The CAB Statistics report for the partition of which HALDB OLR is suspended and
partitions that follow this partition are not printed.
In this case, the performance decreases because the HSSR Engine passes the DL/I
calls to the IMS's DL/I call handler from the partition. Consider running IMS High
Performance Unload after the completion of the HALDB OLR.
34 User's Guide
Related concepts:
Chapter 8, “Methods for processing High Availability Large Databases,” on page
127
In the ULU region, you can specify the name of the secondary index by using the
following control statement:
v For FABHFSU, “DBD control statement” on page 76.
v For others, “BYINDEX control statement” on page 211.
In the DLI or the DBB region, the index name on these control statements is
ignored. HSSR Engine uses the secondary index, which is coded by the
PROCSEQ= parameter in the specified PCB.
When the secondary index is used, the value of the search field of the index
segment is set to the key feedback area of the HSSR PCB, instead of the root key.
User exits can specify a next root segment by the value of the search field.
Restriction
Topics:
v “Preparing the basic JCL” on page 38
v “Basic JCL requirements” on page 40
Procedure
1. Select a region type for the IMS High Performance Unload job.
An IMS High Performance Unload job can run in a DL/I, DBB, or ULU region:
v The DL/I region is used to run an HSSR application program by using PSB
and DBD libraries. The DBB region is used to run programs by using an
ACB library.
v The ULU region is used primarily in running the unload utilities FABHURG1
and FABHFSU. To run an application program in the ULU region, you must
specify the physical DBD, but a PSB is not needed. This specification ensures
that all segments are data-sensitive.
v In a ULU region, IMS assumes that the IMS HD Reorganization Unload
utility is running. Consequently, in a database sharing environment, DBRC
grants the database access to an HSSR application program or utility under
the same conditions as for the IMS HD Reorganization Unload utility. When
an application program is called internally, the PCB list is passed to the
application program in accordance with Assembler or COBOL conventions. A
PCB for an HSSR application program that is run in a ULU region is defined
as an HSSR PCB.
Note: You can use the HSSROPT DBDL1 control statement to override the
HSSR PCB and force DL/I calls to be made to the database.
If your application program must be protected from the addition of new
segment types to the database, do not select the ULU region.
2. Modify the DL/I JCL for IMS High Performance Unload.
To run an IMS High Performance Unload job, you must modify the normal
DL/I JCL procedure.
Modify the JCL so that the basic JCL requirements for running IMS High
Performance Unload utilities are met. For descriptions for the EXEC and DD
statements, see “Basic JCL requirements” on page 40
3. Modify the cataloged procedures for IMS DBRC SCI registration.
38 User's Guide
If the IMS DBRC SCI registration requires the IMSplex name and the DBRC
group identification, you must add the appropriate parameters (IMSPLEX= or
PARM1=) to the FABHULU, FABHDLI, and FABHDBB catalog procedures as
shown in the following figure.
In the JCL that uses the FABHULU procedure, you can specify the parameter
values as shown in the following figure.
Subsections:
v “EXEC and DD statements”
v “Additional JCL requirements for each utility” on page 43
The following table summarizes the DD statements for the runtime environment
initializer (FABHX034).
Table 2. Runtime environment initializer (FABHX034) DD statements
DDNAME Use Format Need
STEPLIB Input - Required
HSSROPT Input LRECL=80 Optional
HSSRCABP Input LRECL=80 Optional
DFSVSAMP Input LRECL=80 Optional
ddname Input - Optional
HSSRLDEF Input LRECL=80 Optional
RECONx Input - Optional
IMSDALIB Input - Optional
IEFRDER Output - Required
HSSRSTAT Output LRECL=133 Optional
HSSRLOUT Output - Optional
HSSRTRAC Output LRECL=133 Optional
HSSRBUTR Output - Optional
HSSRSNAP Output LRECL=133 Required
IMS Input - Optional
IMSACB Input IMSVS.ACBLIB Optional
PROCLIB Input IMSVS.PROCLIB Required
IMSMON Output DUMMY Required
DFSRESLB Input IMSVS.SDFSRESL Required
The following list explains the EXEC and DD statements of the JCL to run IMS
High Performance Unload:
EXEC The EXEC statement must be in the following format:
// EXEC PGM=FABHX034,PARM=(’DFSRRC00/DLI’,pgmname,psbname,...)
The program invoked by the PGM keyword on the EXEC statement is the
IMS High Performance Unload runtime environment initializer named
FABHX034.
40 User's Guide
The PARM parameters, except the first one, must be specified in the same
format as the PARM parameters for the IMS DLIBATCH or DBBBATCH
procedures. The first parameter must contain the name of the IMS region
controller, DFSRRC00, followed by a slash (/) and the name of the IMS
region in which the job is to run. The region name must be one of DBB,
DLI, or ULU.
When processing a HALDB, the 14th parameter, which is the DBRC
parameter, must be Y.
Tip: For each region type, IMS High Performance Unload provides a
cataloged procedure. See “Preparing the basic JCL” on page 38.
STEPLIB DD
Points to the IMS High Performance Unload library, the IMS RESLIB
library, and the user libraries that contain user programs and DFSMDA
members.
Notes:
v You do not need to APF-authorize the STEPLIB libraries. If
however, the STEPLIB is not authorized for example by having
unauthorized libraries concatenated, you must specify the
DFSRESLB DD statement.
v If all concatenations of the JOBLIB/STEPLIB are APF-authorized,
Media Manager is used for reading VSAM ESDS database data
sets, which saves the use of CPU time.
v If you do not want to authorize the library that contains the
DFSMDA members, specify the IMSDALIB DD statement.
HSSROPT DD
This optional statement defines an input data set that contains optional
control statements for HSSR Engine. For more information about HSSROPT
control statements, see Chapter 11, “Options for HSSR Engine,” on page
203.
HSSRCABP DD
This optional statement defines an input data set that contains the control
statements that change buffering parameters for the CAB buffer handler
provided by HSSR Engine. For more information about HSSRCABP control
statements, see “Chained Anticipatory Buffer handler (CAB)” on page 274.
Note: If you use dynamic allocation, do not use the DD statement for the
database data sets.
For HALDBs, no DD statement needs to be specified for any database data
set because the data set is always dynamically allocated.
HSSRLDEF DD
This optional statement defines the input data set that contains control
statements for requesting the DB Record Length Distribution report with
your own database record length ranges. For more information about
HSSRLDEF control statements, see “Activating the Database Tuning
Statistics” on page 414.
RECONx DD
This statement provides RECON1, RECON2, and RECON3 DDs under the
same conditions as for standard IMS jobs. If RECON data sets need to be
allocated dynamically, do not specify these DDs.
IMSDALIB DD
This optional statement defines the library that contains the DFSMDA
members for dynamic allocation. Allocation of the database data sets and
the RECON data sets is attempted in the following order:
1. The DD statements coded in the JCL stream
2. Dynamic allocation by data set definition that is contained in RECON
(only for HALDB data sets)
42 User's Guide
3. Dynamic allocation members in the IMSDALIB concatenation or in the
JOBLIB/STEPLIB concatenation
If you specify this library on the IMSDALIB DD statement, it is highly
recommended that you remove the library from the STEPLIB
concatenation.
IEFRDER DD
This required statement defines the IMS log data set.
HSSRSTAT DD
This optional statement defines the output data set for HSSR Engine to
write statistical output after the termination of the application program.
For the details, see “HSSRSTAT data set” on page 240.
HSSRLOUT DD
This optional statement defines the output sequential data set, in which a
small record is written for each database record when the Database Tuning
Statistics function is activated by coding the DBSTATS control statement in
the HSSROPT data set. For details about this data set, see “Activating the
Database Tuning Statistics” on page 414.
Note: The BLKSIZE and LRECL for the HSSRLOUT data set must not be
specified in JCL. HSSR Engine determines them dynamically from
the key length of the root segment.
HSSRTRAC DD
This optional statement defines an output data set in which the trace data
is written. The DD statement is required whenever any of the following
functions are activated by HSSROPT statements.
v The trace options TRHC and TRDB
v The compare option CO
v The diagnostic option DIAGG
For details about these control statements, see Chapter 11, “Options for
HSSR Engine,” on page 203. For details about this data set, see
“HSSRTRAC data set” on page 253.
HSSRBUTR DD
This optional statement defines the output data set on which the buffer
handler trace is written. It is ultimately used as input for a buffer
simulation run with the FABHBSIM utility.
//HSSRBUTR DD DSN=xxx,DISP=(,KEEP),UNIT=tape,...
HSSRSNAP DD
This required statement defines the output data set on which snapshots are
written when an error occurs during initialization of HSSR Engine. For
details, see “HSSRSNAP data set” on page 268.
The remaining five DD statements (that is, IMS, IMSACB, PROCLIB, IMSMON,
and DFSRESLB) are for IMS. See IMS Database Utilities.
When running one of the following utilities, see also the JCL requirement topic for
that utility:
v For the FABHURG1 database unload utility, see “FABHURG1 JCL requirements”
on page 51.
When using the Database Tuning Statistics functions, see the following topics:
v To customize the DB Record Length Distribution report (HSSRLDEF data set),
see “JCL requirements for the Database Tuning Statistics” on page 415.
v To record the length of each database record (HSSRLOUT data set), see “JCL
requirements for the Database Tuning Statistics” on page 415.
v To print long database records (FABHLDBR utility), see “FABHLDBR JCL
requirements” on page 423.
44 User's Guide
Chapter 5. FABHURG1 unload utility
The FABHURG1 unload utility replaces the functions of the IMS HD
Reorganization Unload utility (DFSURGU0) and the HISAM Reorganization
Unload utility (DFSURUL0). By using HSSR Engine, FABHURG1 provides high
speed unloading of databases with more control over the unload process.
Tip: To understand the system structure and the data flow in HSSR application
jobs, see “IMS High Performance Unload system structure” on page 12.
You can also use the FABHURG1 utility to unload a corrupted database, perform
migration unload, or fallback unload. For information about these tasks, see the
following topics:
v To unload a corrupted database, see Chapter 9, “Utility options for unloading
corrupted databases,” on page 151.
v To perform migration unload or fallback unload, see “Migration unload and
fallback unload” on page 142.
For the restrictions that apply to FABHURG1 jobs, see “Restrictions for IMS High
Performance Unload” on page 29.
Topics:
v “Unloading a database with FABHURG1” on page 46
v “Unload output format supported by FABHURG1” on page 47
v “FABHURG1 JCL requirements” on page 51
v “FABHURG1 input” on page 54
v “FABHURG1 output: SYSPRINT output data set” on page 61
v “FABHURG1 JCL examples” on page 63
v “IMS HD Reorganization Unload JCL for running FABHURG1” on page
65
Procedure
46 User's Guide
Unload output format supported by FABHURG1
| FABHURG1 can unload a database in any of six formats, *HD, *F1, *F2, *F3, *CS,
| and *CP.
These formats are called standard formats of FABHURG1. The *HD format is the
default format. The output generated in this format is acceptable as input to the
IMS HD Reorganization Reload utility or to a compatible utility. The other formats
are used for processing by application programs.
Subsections:
v “*HD format”
v “*F1 format”
v “*F2 format” on page 48
v “*F3 format” on page 49
v “*CS format” on page 50
v “*CP format” on page 50
*HD format
If you use *HD format, you can replace the IMS HD Reorganization Unload utility
with the faster FABHURG1 utility when reorganizing a database. The *HD format
is the default format.
Considerations:
v If you create an unload data set by specifying the DECN control
statement for a database that contains a compressed segment, the data
set is not compatible with an unloaded data set that is created by the
IMS HD Reorganization Unload utility. For details, see “DEC control
statement” on page 55. You cannot reload such an unloaded data set by
using the IMS HD Reorganization Reload utility (DFSURGL0), but you
can reload it by using IMS High Performance Load (Load utility or PSSR
utility) or the IPR Reload utility.
v FABHURG1 *HD output records can be compared against the output
records created by the IMS HD Reorganization Unload utility. To do so,
add the optional SYSUT1 statement to your JCL to define the IMS
unloaded data set to be used in the comparison. See the description of
SYSUT1 DD statement in “FABHURG1 JCL requirements” on page 51.
*F1 format
PSPI
This format is to be used for processing by application programs. When you use
the *F1 Format, a variable-length record is written for each retrieved database
segment that contains the following data fields:
v Segment code
v Segment level
REC1 DSECT
REC1LEN DC H'0' 0 0 RECORD LENGTH FIELD
REC1ZZ DC H'0' 2 2 ZZ (RESERVED FOR MVS)
REC1SC DC X'00' 4 4 SEGMENT CODE
REC1LEV DC X'00' 5 5 SEGMENT LEVEL
REC1DATA EQU * 6 6 SEGMENT DATA AS RETURNED
BY HSSR
Considerations
v If the database contains segments shorter than 8 bytes, do not send the
output to tape. (A block of less than 18 bytes is not acceptable for a
tape.)
v If the database contains segments shorter than 12 bytes, the output
cannot be processed by some Sort/Merge programs. (Some Sort/Merge
programs require records with at least 18 bytes.)
PSPI
*F2 format
PSPI
This format is to be used for processing by application programs. When you use
the *F2 format, a variable-length output record is written for each retrieved
segment of the database. It contains the following data fields:
v Segment code
v Segment level
v Segment name
v Length of segment as returned by the HSSR call
v Offset of sequence field within segment data (zero if the segment has no
sequence field)
v Length of sequence field (if the segment has no sequence field, zero is used.)
v A field that contains zeros for compatibility with *F3 format (in this field, the *F3
format contains the actual length of the concatenated PCB key feedback area.)
v The segment data as returned by the HSSR call and as seen by HSSR application
programs
48 User's Guide
FORMAT OF *F2 RECORDS
REC2 DSECT
REC2LEN DC H'0' 0 0 RECORD LENGTH FIELD
REC2ZZ DC H'0' 2 2 ZZ (RESERVED FOR MVS)
REC2SC DC X'00' 4 4 SEGMENT CODE
REC2LEV DC X'00' 5 5 SEGMENT LEVEL
REC2SYM DC CL8' ' 6 6 SYMBOLIC SEGMENT NAME
REC2IOAL DC H'0' 14 E SEGMENT DATA LENGTH AS
RETURNED BY HSSR
REC2KOFS DC H'0' 16 10 KEY OFFSET WITHIN DATA
REC2KEYL DC H'0' 18 12 KEY LENGTH OF THIS
SEGMENT
REC2MKL DC H'0' 20 14 0 FOR COMPATIBILITY
WITH *F3 FMT
REC2DATA EQU * 22 16 SEGMENT DATA AS RETURNED
BY HSSR
PSPI
*F3 format
PSPI
This format is to be used for processing by application programs. The *F3 format
has the same format as the *F2 format, except the *F3 format also contains the
concatenated PCB key feedback area after the segment data.
REC3 DSECT
REC3LEN DC H'0' 0 0 RECORD LENGTH FIELD
REC3ZZ DC H'0' 2 2 ZZ (RESERVED FOR MVS)
REC3SC DC X'00' 4 4 SEGMENT CODE
REC3LEV DC X'00' 5 5 SEGMENT LEVEL
REC3SYM DC CL8' ' 6 6 SYMBOLIC SEGMENT NAME
REC3IOAL DC H'0' 14 E SEGMENT DATA LENGTH AS
RETURNED BY HSSR
REC3KOFS DC H'0' 16 10 KEY OFFSET WITHIN DATA
REC3KEYL DC H'0' 18 12 KEY LENGTH OF THIS SEGMENT
REC3MKL DC H'0' 20 14 PCB KEY-FEED-BACK-LENGTH
REC3DATA EQU * 22 16 SEGMENT DATA AS RETURNED
BY HSSR
REC3KFD EQU * 22 16 PCB KEY-FEED-BACK-AREA
PSPI
The communication industry standard format. This format is usable as input to the
IPR Reload utility or IMS High Performance Load.
| Consideration: The unloaded file in this format cannot be used for reorganization
| under the following conditions:
| v If a logical relationship is defined in the database.
| v If the database is a HALDB and a partitioned secondary index
| (PSINDEX) database is defined.
| *CP format
| The communication industry partitioned format. This format can be used as input
| to the IPR Reload utility or IMS High Performance Load. This format is useful if
| the database is a HALDB with partitioned secondary index (PSINDEX) databases.
50 User's Guide
FABHURG1 JCL requirements
FABHURG1 runs as an HSSR application program and, therefore, must meet the
requirements for the basic JCL (FABHX034 JCL). In addition, FABHURG1 JCL
requires other DD statements.
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for FABHURG1.
Table 3. FABHURG1 DD statements
DDNAME Use Format Need
SYSIN Input LRECL=80 Optional
SYSPRINT Output LRECL=133 Required
SYSUT1 Input HD Unload Optional
SYSUT2 Output - Required
SYSUT3 Output - Optional
| Note: You can also use JCL that is written for IMS HD Reorganization Unload
| (DFSURGU0) to run FABHURG1. For details, see “IMS HD Reorganization
| Unload JCL for running FABHURG1” on page 65. In this compatibility
| mode, Media Manager will not become effective for VSAM ESDS, regardless
| of whether JOBLIB or STEPLIB libraries are APF-authorized.
EXEC This statement invokes procedures FABHULU, FABHDLI, or FABHDBB
(see “Preparing the basic JCL” on page 38). The EXEC statement must be
in one of the following formats:
// EXEC FABHULU,MBR=FABHURG1,DBD=dbdname
// EXEC FABHDLI,MBR=FABHURG1,PSB=psbname
// EXEC FABHDBB,MBR=FABHURG1,PSB=psbname
SYSIN DD
This optional DD statement defines the input data set that contains control
statements for FABHURG1.
For the description of the control statements, see “FABHURG1 SYSIN input
data set” on page 54.
SYSPRINT DD
This required statement defines the output data set to which FABHURG1
writes error messages and segment statistics. The data set can be defined
as:
//SYSPRINT DD SYSOUT=A
SYSUT1 DD
This optional statement defines an input data set created (in a previous
step) by the IMS HD Reorganization Unload utility. Use it only for
problem determination. It activates a comparison of *HD output records
with the output records that were created by the IMS HD Reorganization
Unload utility. FABHURG1 does not compare the lengths of the header or
trailer records.
If a mismatch is detected, FABHURG1 ends abnormally with an error
message.
Notes:
The LRECL values for SYSUT2 and SYSUT3 data sets are determined as
follows:
v For the unload formats *F1, *F2, and *F3:
– If the LRECL value prepared in the JCL DD statement is used when
the value is specified in either of the following ways:
- Explicitly by the LRECL subparameter of DCB parameter
52 User's Guide
- Implicitly, for example, by using a model data set or by using the
DFSMS/MVS DATACLAS parameter.
– If the LRECL value is not specified either explicitly or implicitly, the
default record size (block size minus 4) is used.
v For *HD unload format, the LRECL value prepared in the JCL DD
statement is always ignored, and the default record size (block size
minus 4) is used.
The large format data set can be specified for SYSUT2 and SYSUT3 when
z/OS Version 1 Release 7 or later and IMS Version 10 or later are used.
Tip: FABHURG1 provides a user exit interface for system programmers. System
programmers can provide their own record-formatting routine to unload the
database into their own format rather than one of the standard formats. For
the SYSIN control statement intended mainly for system programmers to use,
see “User record-formatting routine” on page 331.
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as members of a partitioned data set.
This record is used by IMS High Performance Load for it to know certain status of
the database at unloading time. This control statement is used only for the *HD
unload format.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CHECKREC ddd
Position
Description
1 Code the CHECKREC keyword to identify this statement as a CHECKREC
statement.
54 User's Guide
10 Use one of the following keywords:
Keyword
Description
YES The particular record is written.
NO The particular record is not written. NO is the default.
Tip: The default of this control statement can be changed by replacing the default
option table (FABHOPT). Specify the URG1CHKRC=YES parameter on the
FABHTOPT macro statement. For details, see Chapter 19, “Site default
options,” on page 349.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DECd
Position
Description
1 Code the DEC keyword to activate the decompress option.
4 The 1-character entry d specifies whether compressed segments be
decompressed by FABHURG1. This entry is required.
Use one of the following keywords:
Keyword
Description
Y Compressed segments are decompressed. Y is the default.
N Compressed segments are not decompressed.
Code N only when you want to have compressed segments in the
output data sets. If an unloaded data set is created by specifying
this DECN option for a database that contains a compressed
segment, the data set is not compatible with the unloaded data set
created by the IMS HD Reorganization Unload utility. You cannot
reload such an unloaded data set by using the IMS HD
Reorganization Reload utility (DFSURGL0), but you can reload it
by using the IMS High Performance Load (Load utility or PSSR
utility) or the IPR Reload utility.
Notes:
v If there is a segment type for which a Segment Edit/Compression exit
routine is specified and the use of a Data Conversion exit is designated,
the DECN option is ignored and the process continues with DECY.
v If the DECN option is specified and one or more partitions of PHDAM
or PHIDAM are in the HALDB OLR cursor-active status, FABHURG1
ends abnormally.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
FALLBACK
Position
Description
1 Code the FALLBACK keyword to instruct FABHURG1 to perform the
fallback unload of a partitioned database.
Restrictions:
v This control statement cannot be specified with a control statement
of PARTITION or MIGRATE.
v If a FALLBACK control statement is specified, FABHURG1 must be
executed in the ULU region.
v The input database must be either a PHIDAM or a PHDAM.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
FRMT frmt
Position
Description
1 Code the FRMT keyword to identify the format control statement.
6 Code the output format name, which can be either of the following names:
| v The name of one of the standard formats provided by the utility: *HD,
| *CS, *CP, *F1, *F2, or *F3. The default is the *HD unload format, for
| which you do not need this statement.
v The load module name of a user record-formatting routine (see “User
record-formatting routine” on page 331).
Restrictions:
v If you specify a control statement such as MIGRATE or
FALLBACK, you cannot specify any format other than *HD.
56 User's Guide
v If *CS is specified and one or more partitions of PHDAM are in the
HALDB OLR cursor-active status, FABHURG1 ends abnormally.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
MIGRATE
Position
Description
1 Code the MIGRATE keyword to make FABHURG1 perform the migration
unload of a nonpartitioned database.
Restrictions:
v This control statement cannot be specified with a control statement
of PARTITION or FALLBACK.
v If MIGRATE control statement is specified, FABHURG1 must be
executed in the ULU region.
v The input database must be either a HIDAM or an HDAM
database. If PTR=H or PTR=HB is defined as the parent segment
of virtual logical child, FABHURG1 does not support the migration
unload of the database. Migration unload of a secondary index or
HISAM database is not supported.
Tip: If a logical child is defined in the input database, and you want better
performance, code an appropriate number of IMS buffer pools in DFSVSAMP
DD of your JCL. For details, see “Basic JCL requirements” on page 40.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the PARTITION keyword to identify this statement as a PARTITION
statement.
11 Code the partition name partnme from which you want to start the
unloading.
This parameter is a required parameter.
| Tip: If you want to change the high key of partitions, you can use the IBM
| provided exit routine FABHKEYX to distribute the unload records to multiple
| unload files according to the root key values. For the details, see “Migration
| unload: Exit routine FABHKEYX for distributing unload records” on page 144.
Consideration: When you specify the PARTITION control statement, you must
pay attention to the sequence of partitions. If no partition selection
exit routine is used, the sequence of partitions is determined from
the sequence of high key values. If a partition selection exit routine
is used, the sequence of partitions depends on the routine.
Restrictions:
v This control statement cannot be specified with a MIGRATE or
FALLBACK control statement.
v If you want to unload all partitions, do not specify the PARTITION
control statement.
Use this statement only when you run FABHURG1 in a DLI or DBB region and
you want to specify an HSSR PCB other than the first one. If you run FABHURG1
in the ULU region, you do not need to specify the statement.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the PCB keyword to identify this statement as a PCB statement.
5-14 Code an HSSR-PCB number. Specify 1 for the first HSSR PCB in the PSB.
The number specified does not need to contain leading zeros, or it does
not need to be aligned.
Note: HSSR-PCB number is the sequence number, within the PSB, that is
assigned to each HSSR PCB. If, for example, the first and the third
database PCBs are defined as HSSR PCBs, but not the second PCB,
then the third database PCB has the HSSR-PCB number of 2.
16-23 Code a DBD name.
The HSSR PCB used for the database call in FABHURG1 is determined by the
following rule:
v If no PCB control statement is provided, the first HSSR PCB is used.
v If dbdname is blank, the HSSR PCB identified by pcbnbr is used.
58 User's Guide
v If dbdname is not blank, the first HSSR PCB that refers to the named DBD is
used.
v If no HSSR PCB that matches with the specification is defined, FABHURG1
issues an error message.
See “FABHURG1 Segment Statistics report” on page 61 for the segment statistics
report produced for a partition.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
SEGSTAT PART
Position
Description
1 Code the SEGSTAT keyword to identify this statement as a SEGSTAT
statement.
9 Code the PART keyword to print the partition-wide segment statistics
report for each partition that is processed and from which at least one
segment is retrieved.
Restriction: In any one of the following cases, the partition-wide statistics are not
printed:
v The SEGSTAT statement is specified for a nonpartitioned database.
v The PART keyword is not specified.
v A keyword other than PART is specified as the operand of the
SEGSTAT statement.
The use of this data set is optional. However, you must code this data set when
unloading a corrupted database. The following HSSROPT control statements can
help you unload corrupted databases:
v SKERROR causes incorrect HD pointers or HISAM records to be skipped.
v DIAGG generates diagnostic information about the incorrect pointers and
records.
v KEYCHECK GG returns a GG status code to FABHURG1 rather than ending
abnormally when a sequence error is detected.
For a complete description of the HSSROPT control statements, see Chapter 11,
“Options for HSSR Engine,” on page 203.
60 User's Guide
FABHURG1 output: SYSPRINT output data set
Output from the FABHURG1 utility includes the FABHURG1 Unload Parameters
report and the FABHURG1 Segment Statistics report. These reports are generated
in the SYSPRINT data set.
Format
This data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133.
The statistics provided for each segment are segment code, level, the number of
segments retrieved for that segment type, and the number written to the output
data set. If there is a difference between the number retrieved and the number
written, that difference is shown. The totals and total errors for the database are
provided. Also a message is printed stating that the database unload is complete.
ORDER 1 1 6 6 0
ORDART 2 2 4 4 0
DELIVER 3 3 2 2 0
SCHEDULE 4 3 2 2 0
HISTORY 5 3 2 2 0
----------------------------------------------------------------
*TOTAL 16 16 0
*TOTAL ERRORS 0
The following figure shows another example of the Segment Statistics report. This
report shows statistics from a HALDB partition when the SEGSTAT PART control
statement is specified.
ORDER 1 1 5 5 0
ORDART 2 2 5 5 0
DELIVER 3 3 3 3 0
SCHEDULE 4 3 3 3 0
HISTORY 5 3 5 5 0
-------------------------------------------------------------
*TOTAL 21 21 0
62 User's Guide
FABHURG1 JCL examples
Use the following JCL examples to prepare your FABHURG1 JCL.
Subsections:
v “Example 1: Running FABHURG1 in ULU region”
v “Example 2: Running FABHURG1 in DLI region”
For examples for processing a HALDB with the FABHURG1 utility, see Chapter 8,
“Methods for processing High Availability Large Databases,” on page 127.
To create an unloaded data set that can be used as input to the IMS HD
Reorganization Reload utility, you can use the following JCL.
// EXEC FABHULU,MBR=FABHURG1,DBD=USERDBD
//HDAM DD DSN=IMSDB.HDAM,DISP=SHR
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DSN=IMSDB.HDUNLD,DISP=(,CATLG),UNIT=TAPE,
// VOL=SER=xxxxxx
The unloaded data set is specified by the SYSUT2 DD statement. In this example,
the HDAM DD statement specifies the database data set to be unloaded.
In the ULU region, the PCB that is dynamically created by IMS from the specified
DBD is always treated as an HSSR PCB. You do not need to code a PCB control
statement in the SYSIN data set.
An unloaded data set created by this method can be reloaded by IMS High
Performance Load (Load utility or PSSR utility) or the IPR Reload utility.
If you run FABHURG1 in the DLI region, you must code a PCB statement in the
SYSIN data set, and you must define the PCB as an HSSR PCB by coding an
HSSRPCB or HSSRDBD control statement in the HSSROPT data set. You can use
the JCL shown in the following figure.
In this example, an HSSRDBD statement is used to specify all PCBs that refer to
the DBD as HSSR PCBs. The first database PCB that refers to the DBD is used to
read the database, because only the DBD name is specified on the PCB control
statement.
In this example, it is assumed that the RECON data sets and the database to be
unloaded are dynamically allocated.
The unloaded data set is in the specified format because the FRMT control
statement is coded to specify the unload format, which in this case, *F1 format.
64 User's Guide
IMS HD Reorganization Unload JCL for running FABHURG1
You can use a JCL that is written for IMS HD Reorganization Unload (DFSURGU0)
to run FABHURG1, by adding the IMS High Performance Unload's SHPSLMD0
library ahead of the IMS RESLIB in the STEPLIB concatenation, and by using the
DFSISVI0 exit of IMS.
Subsections:
v “Preparing the DFSISVI0 exit”
v “JCL compatibility with IMS HD Reorganization Unload”
v “Restrictions” on page 66
To run FABHURG1 by using a JCL that was written for IMS HD Reorganization
Unload utility, you must prepare the DFSISVI0 exit of IMS. To use the exit, the
following level of IMS is required:
v APAR PK03616 for IMS Version 8
v APAR PK03617 for IMS Version 9
Also, you must create a copy of the load module FABHSVI0 with the name
DFSISVI0 in a library that is concatenated to STEPLIB DD.
When the DFSISVI0 exit for FABHURG1 is prepared, you can use essentially the
same JCL as the one used for the IMS HD Reorganization Unload utility
(DFSURGU0) to run FABHURG1.
EXEC The parameters ULU and DFSURGU0 must be specified, otherwise the
DFSISVI0 exit does not invoke FABHURG1.
STEPLIB DD
Add the SHPSLMD0 library of IMS High Performance Unload to this DD
statement ahead of the IMS.SDFSRESL data set. The DFSISVI0 member
must be placed in a library.
SYSIN DD
This data set can contain control statements for either DFSURGU0 or
FABHURG1, but not both. The following table lists the control statements
for DFSURGU0 that can be specified for SYSIN DD. The control statement
for HSSR Engine can be specified in the HSSROPT data set.
Table 4. Supported control statements for DFSURGU0
Control statement for DFSURGU0 Interpreted control statement for FABHURG1
PARTITION=partname PARTITION partname nnn
,NUMBER=nnn SEGSTAT PART (for STAT=DET)
,STAT=ccc
MIGRATE=YES MIGRATE
FALLBACK=YES FALLBACK
SYSPRINT DD
This data set contains the statistics reports produced by FABHURG1. The
LRECL is 121. The statistics that are produced by HSSR Engine are printed
in the HSSRSTAT DD and the HSSRTRAC DD if these DDs are specified.
Restrictions
v The FABHURG1 restrictions that are listed in “Restrictions for IMS High
Performance Unload” on page 29 apply to this processing.
v If any of the following options are specified, IMS HD Reorganization Unload
(DFSURGU0) is forced to run instead of FABHURG1:
– IMS batch region type other than ULU
– DFSUCKPT DD for checkpoint function
– DFSURSRT DD for restart function
– The control statements for DFSURGU0 other than PARTITION, MIGRATE,
and FALLBACK.
– MIGRATE=YES for HISAM databases
– MIGRATE=YES for secondary indexes
– MIGRATX=YES
– FALLBACK=YES for PSINDEX databases
– Running under IMS Utility Control Facility (DFSUCF00)
v SB (sequential buffering) is not used even if the following specifications are
made:
– DFSCTL DD statement
– The PCB SB= statement in the PSBGEN
– DFSSBUX0 (exit routine)
66 User's Guide
Chapter 6. FABHFSU unload utility
The FABHFSU unload utility unloads IMS databases and provides compatibility
with FSU II. FABHFSU can produce multiple unloaded output data sets. Each
unloaded data set can contain different combinations of segments in different
formats.
FABHFSU has two different modes in which the different types of unload
operations are run: the standard mode and the Parallel Scan Facility (PSF) mode.
In both modes, the FABHFSU runs as an HSSR application program, and makes
full use of HSSR Engine.
Tip: To understand the system structure and the data flow in HSSR application
jobs, see “IMS High Performance Unload system structure” on page 12.
FABHFSU accepts user requests through the CARDIN data set. HSSROPT options
and HSSRCABP options can also be specified as input to the FABHFSU program.
A Segment Statistics report is produced in addition to the standard outputs
produced by HSSR Engine.
In the following topics, the basic functions of FABHFSU run in the standard mode
are explained. For instructions to run FABHFSU in Parallel Scan Facility mode (PSF
mode), see Chapter 10, “Parallel Scan Facility of FABHFSU,” on page 159.
For information about compatibility with FSU II, see Chapter 33, “Compatibility
with FSU II,” on page 509.
You can also use FABHFSU to unload a corrupted database. For more information,
see Chapter 9, “Utility options for unloading corrupted databases,” on page 151.
For the restrictions that apply to FABHFSU jobs, see “Restrictions for IMS High
Performance Unload” on page 29.
Topics:
v “Unloading a database with FABHFSU” on page 68
v “Unload output format supported by FABHFSU” on page 69
v “FABHFSU JCL requirements” on page 72
v “FABHFSU input” on page 74
v “FABHFSU output: PRNTOUT output data set” on page 86
v “FABHFSU user exit routine” on page 90
v “FABHFSU JCL examples” on page 98
Procedure
To unload a database by using the FABHFSU utility, complete the following steps:
1. Select a region type from ULU and DLI, and prepare the basic JCL.
For instructions for preparing the basic JCL, see “Preparing the basic JCL” on
page 38.
2. Code the additional DD statements to meet the JCL requirements of FABHFSU.
For the additional JCL requirements, see “FABHFSU JCL requirements” on page
72.
3. Code DBD and PSB control statements in CARDIN data set to specify HSSR
PCBs used for the database call and to specify the segment sensitivity.
The DD name and record format for each output data set can be specified in a
PSB control statement. See “Unload output format supported by FABHFSU” on
page 69 and “FABHFSU CARDIN input data set” on page 74.
4. Optional: If necessary, specify other control statements in CARDIN data set.
See “FABHFSU CARDIN input data set” on page 74.
5. Optional: Code HSSROPT and HSSRCABP control statements to specify the
options for HSSR Engine.
These control statements are optional. For more information, see “FABHFSU
HSSROPT input data set” on page 85 and “FABHFSU HSSRCABP input data
set” on page 85.
6. Submit the JCL to run the FABHFSU job.
7. Check the output reports and messages.
In addition to the standard output reports produced by HSSR Engine, several
reports are produced in the PRNTOUT data set. To interpret the reports, see
“FABHFSU output: PRNTOUT output data set” on page 86.
Related reference:
“FABHFSU JCL examples” on page 98
68 User's Guide
Unload output format supported by FABHFSU
FABHFSU unloads a database into one of four applicable formats: HS, UL, VB, and
VN.
For each format, the output data set must be a sequential data set with
RECFM=VB.
Subsections:
v “HS format”
v “UL format”
v “VB format” on page 70
v “VN format” on page 71
HS format
When the HS format is selected for the unload format, the output data set must be
consistent with HSAM requirements. BLKSIZE must be specified on the ddname1
DD statement. If the maximum segment length is even, the minimum BLKSIZE
must be equal to the maximum segment length plus 2. If the maximum segment
length is odd, the minimum BLKSIZE must be equal to the maximum segment
length plus 3. (For more information about the HSAM format, see IMS Database
Administration.)
UL format
The UL format is the same as the IMS HD Reorganization Unload format. You can
use it to replace the IMS HD Reorganization Unload utility with the faster
FABHFSU utility when reorganizing a database. The UL format is acceptable to
IMS HD Reorganization Reload utility or a compatible utility. (For more
information, see IMS Database Utilities.)
Consideration:
If you create an unload data set by specifying the DECN control statement
for a database that contains a compressed segment, the data set is not
compatible with the unloaded data set that is created by the IMS HD
Reorganization Unload utility. For details, see “DEC control statement” on
page 78. You cannot reload such an unloaded data set by using IMS HD
Reorganization Reload utility (DFSURGL0), but you can reload it by using
IMS High Performance Load (Load utility or PSSR utility) or the IPR
Reload utility.
If block size is not specified on the ddname1 DD statement, FABHFSU uses one of
the following block sizes:
v For device type 3380, the default block size is 23 K. If the database contains
segments larger than 23 K, the maximum block size, 32 K, is used.
v For device type 3390, the default block size is 28 K. If the database contains
segments larger than 28 K, the maximum block size, 32 K, is used.
v For device type 9345, the default block size is 22 K. If the database contains
segments larger than 22 K, the maximum block size, 32 K, is used.
If some segments have been dropped, make sure that the resulting database is
valid.
VB format
PSPI
This format is to be used for processing by application programs. When you use
the VB Format, a variable-length record is written for each retrieved database
segment that contains the following data fields:
v Segment code
v Segment level
v Segment data as returned by the HSSR call and as seen by HSSR application
programs
FORMAT OF VB RECORDS
RVB DSECT
RVBLENN DC H'0' 0 0 RECORD LENGTH FIELD
RVBZZ DC H'0' 2 2 RESERVED FOR MVS
RVBSC DC X'00' 4 4 SEGMENT CODE
RVBLEV DC X'00' 5 5 SEGMENT LEVEL
RVBDATA EQU * 6 6 SEGMENT DATA AS RETURNED
BY HSSR
If some segments have been dropped, make sure that the resulting database is
valid.
70 User's Guide
PSPI
VN format
PSPI
The VN format has the same format as the VB format, except the VN format also
contains the segment name in addition to the segment code.
FORMAT OF VN RECORDS
RVN DSECT
RVNLEN DC H'0' 0 0 RECORD LENGTH FIELD
RVNZZ DC H'0' 2 2 ZZ (RESERVED FOR MVS)
RVNSYM DC CL8' ' 4 4 SEGMENT NAME
RVNSC DC X'00' 12 C SEGMENT CODE
RVNLEV DC X'00' 13 D SEGMENT LEVEL
RVNDATA EQU * 14 E SEGMENT DATA AS RETURNED
BY HSSR
DCB requirements are the same as the requirements for the VB. If the maximum
segment length is even, the minimum BLKSIZE must be equal to the maximum
segment length plus 18. If the maximum segment length is odd, the minimum
BLKSIZE must be equal to the maximum segment length plus 19.
PSPI
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for FABHFSU.
Table 5. FABHFSU DD statements
DDNAME Use Format Need
CARDIN Input LRECL=80 Optional
PRNTOUT Output LRECL=133 Required
ddname1 Output RECFM=VB Required
72 User's Guide
You can specify the number of buffers in the FSUBUFNO= option in the
default option table (FABHOPT). For details, see Chapter 19, “Site default
options,” on page 349. The buffers are obtained above the 16-MB line.
If neither the BUFNO subparameter of the DCB parameter on the DD
statement nor the FSUBUFNO= option is given, the number of buffers is
determined automatically. The buffers are approximately 1 MB in total size
and are above the 16-MB line.
Normally, only three control statements are required for FABHFSU: the DBD
control statement, the PSB control statement, and the END control statement.
Other control statements that can be used for FABHFSU in standard mode are:
v BLM and ELM
v DEC
v GOT
v PARTITION
v SEGSTAT
The following table provides brief explanation for each control statement.
Table 6. Control statements for FABHFSU CARDIN data set in standard mode
Control statement Function
BLM/ELM Specifies a portion of the database to be read.
DBD Identifies the database to be processed and specifies some processing
options.
DEC Specifies whether to decompress compressed segments or not.
END Specifies the end of CARDIN control statements.
GOT Provides the support for PROCOPT=GOT.
PARTITION Restricts the partitions to be processed.
PSB Specifies the segment sensitivity and characteristics of the output
data set to be created. Up to three PSB statements can be specified.
SEGSTAT Specifies to produce the partition-wide segment statistics report.
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as a member of a partitioned data set.
For HIDAM or HISAM, the limits are specified as keys. For HDAM, the limits are
defined as relative block numbers of the CIs or blocks in the Root Addressable
Area.
74 User's Guide
Restriction: The BLM and ELM control statements cannot be specified for a
PHDAM or PHIDAM database. Use the PARTITION control statement
instead.
One BLM or one ELM limit control statement can be used. If no limit control
statements are provided, the entire database is read. These statements must
immediately follow the DBD control statement.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
BLMtlimitval
ELMtllkeyval
Position
Description
1 Code the BLM or ELM keyword to identify a limit control statement.
4 Specify the limit value type.
The 1-character entry t identifies the limit value type. It indicates the
format of the starting or ending limit field.
Specify one of the following keywords:
Keyword
Description
R Indicates that the limit field contains the relative block number of
the CI or block. This specification is valid only for HDAM.
C Indicates that the limit field contains keys in character format. This
specification is valid only for HIDAM and HISAM.
X Indicates that the limit field contains keys in hexadecimal display
format. This specification is only valid for HIDAM and HISAM.
5-78 Specify the starting limit value or the ending limit value.
This 74-character field is a required field.
For BLM, this field is the beginning limit value. It contains the value at
which the scan is to begin.
For ELM, this field is the ending limit value. It contains the value of the
last database record to be included in the scan.
If the limit value type is R:
If you specify R for the limit value type, code the relative block
number of the CI or block. The value is numeric with leading or
trailing blanks; it must fall within the limits of the root addressable
area.
v For BLM, the scan begins at the first RAP in the specified CI or
block.
v For ELM, the scan ends after the last RAP in the specified CI or
block has been processed.
If the limit value type is C:
If you specify C for the limit value type, code the length of the key
value in positions 5 and 6 (maximum length is 74). Code the key
Notes:
v If you are using a Data Conversion exit for the database and you want to
specify a limit value by specifying a key value (that is, setting a limit
value type of C or X) you must specify the key value in the stored form,
not in the application form.
v If a secondary index is used to retrieve root segments of HIDAM or
HDAM, you can specify the limits by the value of search field of the
index that has a limit value type of C or X.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the DBD keyword to identify the DBD control statement.
4 Code the DBD name.
76 User's Guide
Code the name of the DBD that describes the physical database to be
scanned. This required 8-character field must be left-aligned with trailing
blanks. The DBD must specify ACCESS=HDAM, HIDAM, PHDAM,
PHIDAM, HISAM, or SHISAM.
12 Code the index name.
The 8-character entry is optional and valid only for running in the ULU
region. This entry specifies the name of index DBD that is either the
primary index of the HIDAM database or a secondary index of the
HIDAM or HDAM database if you want the root segments to be retrieved
in the index sequence. For details, see “Considerations for using a
secondary index” on page 35.
20 Code this field to activate the sequence check option.
This 1-character entry s determines whether to perform sequence check
during the unload processing. Specify one of the following keywords:
Keyword
Description
Y Perform sequence checking.
N | blank
Do not perform sequence checking (default).
21 Code this field to activate the sequence error option.
The 1-character entry e determines whether the output routines bypass or
process sequence errors. Specify one of the following keywords:
Keyword
Description
A | blank
Accept sequence errors (default). A GX status code is returned.
B Bypass sequence errors. The segment in error, and all of its
children, are skipped. A GG status code is returned.
22 Code this field to activate the sequence error print option.
The 1-character entry d determines whether diagnostic information is
printed for sequence errors in the HSSRTRAC data set. Specify one of the
following keywords:
Keyword
Description
Y | blank
Print diagnostic data on sequence errors (default).
N Do not print diagnostic data.
23 Code this field to specify the sequence error threshold.
The 3-digit numeric entry nnn indicates the number of sequence errors to
be allowed before ending the run (the default value is 10). Any number up
to 999, with leading or trailing blanks, can be used. If you use the number
999, sequence errors do not cause the run to end.
28 Code this field to activate the pointer bypass option.
The 1-character entry b is used to activate the pointer bypass option. The
pointer bypass option allows FABHFSU to continue processing a database
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DECd
Position
Description
1 Code the DEC keyword to activate the decompress option.
4 The 1-character entry d specifies whether compressed segments are
decompressed by FABHFSU. This entry is required.
Use one of the following keywords:
Keyword
Description
Y Compressed segments are decompressed. Y is the default.
N Compressed segments are not decompressed.
Code N only when you want to have compressed segments in the
output data sets.
If an unloaded data set has been created by specifying this option
for a database that contains a compressed segment, that data set is
not compatible with the unloaded data set that is created by the
IMS HD Reorganization Unload utility. You cannot reload such an
unloaded data set by using the IMS HD Reorganization Reload
utility (DFSURGL0), but you can reload it by using IMS High
Performance Load (Load utility or PSSR utility) or the IPR Reload
utility.
Notes:
78 User's Guide
v If there is a segment type for which a Segment Edit/Compression exit
routine is specified and the use of a Data Conversion exit is designated,
the DECN option is ignored and the process continues with DECY.
v If the DECN option is specified and one or more partitions of PHDAM
or PHIDAM are in the HALDB OLR cursor-active status, FABHFSU ends
abnormally.
Tip: The default of this control statement can be changed by replacing the default
option table (FABHOPT). Specify the FSUDEC=NO parameter on the
FABHTOPT macro statement. For details, see Chapter 19, “Site default
options,” on page 349.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
END
Position
Description
1 Code the END keyword to identify the END statement as the last
statement of the CARDIN data set.
If the GOT control statement is specified, FABHFSU ignores the PROCOPT of the
PCB statement in PSBGEN and forces PROCOPT=GOT to be used.
The GOT control statement is effective only when DBRC is inactive for the
FABHFSU job.
Note: For more information about the PROCOPT=GOT support, see “Support of
the processing options GON and GOT” on page 120.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GOT
Position
Description
1 Code the GOT keyword to activate the support for PROCOPT=GOT.
Position
Description
1 Code the PARTITION keyword to identify the PARTITION statement.
11 Code a partition name partnme from which you want to start the
unloading.
This parameter is a required parameter.
19 This optional parameter nnnn specifies the total number of partitions to be
unloaded. The number nnnn must be left-aligned, and its length must be
less than or equal to four.
If this parameter is not specified, the default of 1 is assumed.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the PSB keyword to identify the PSB control statement.
4-11 Code the PSB name.
The 8-character field contains either an asterisk (*) or the name of the PSB
that is coded on the EXEC statement of the JCL.
Value Description
* An asterisk (*) on this field indicates that all segments that are
described in the DBD are to be processed for this output data set.
When running FABHFSU in ULU region, specify this value.
PSB_name
If the name of the PSB that is coded on the EXEC statement is
specified, it indicates that segment types passed to the output
routines are controlled through the segment sensitivity of the PCB
80 User's Guide
specified in positions 20 - 21. The name of the PSB must match the
name that is supplied in the PARM field of the EXEC statement.
The name must be left-aligned with trailing blanks.
Coding the PSB name is valid only for FABHFSU running in the
DLI region.
12-19 Code the output DD name.
This 8-character entry specifies the name of the DD statement that defines
the data set to be created. An output DD name is required unless the
output format specification in positions 22 – 23 is NO. ddname1 must be
left-aligned with trailing blanks.
20-21 Code the PCB number.
The 2-character entry p# specifies which database PCB within the PSB is to
be used. This entry determines the segments written into the output data
set that is identified by the output DD name field (column 12 - 19). The
PCB referred to must specify the dbdname that is specified in positions 4 –
11 of the DBD control statement.
If the field is left blank, the first database PCB that refers to the DBD
specified by the DBD control statement is used.
The number p#, if specified, must be the sequence number that starts from
the first database PCB in the PSB; TP PCBs are not counted. Specify 1 for
the first database PCB in the PSB.
| Restrictions:
| v This format can be specified only in a ULU region.
| v If PTR=H or PTR=HB is defined as the parent
| segment of virtual logical child, the database is not
| supported.
| v Migration unload of a secondary index or HISAM
| database is not supported.
| v When MI format is selected, two or more PSB
| control statements cannot be specified.
| VB Variable-length-blocked data set of the selected segments (one
segment per logical record)
Note: If a user exit routine is specified and one or more partitions are in
the HALDB OLR cursor-active status, FABHFSU ends abnormally.
32 Code this field to activate the segment modification option.
The 1-character entry m indicates whether segments are to be modified by
the user exit routine.
Specify one of the following keywords:
Keyword
Description
Y Indicates that segments are to be modified by the user exit.
This option does not support a change of the database segment
length. If you change the segment length with the Y option, the
result is unpredictable. For details, see “Modifying segments in
user exits” on page 92.
E Indicates that segments are to be modified by the user exit.
This option supports a change of the database segment length. The
option is valid only for HDAM, HIDAM, PHDAM, and PHIDAM
databases.
An extra 100-byte field is added at the end of the segment data
that is passed to the exit routine. This extra field can be used for
segment extension. If the default length of this extra field is shorter
than you require, you can change the length of the extra field by
specifying the length in column 41 of the same PSB statement.
If this option has been selected, any request to activate the
compare option used for problem determination is deactivated.
For details, see “Modifying segments in user exits” on page 92.
N | blank
Indicates that segments are not to be modified by the user exit
(default).
33 Code this field to activate the concatenated key option.
The 1-character entry k indicates whether the fully concatenated key of
each segment is to be built and passed to the exit routine.
Specify one of the following keywords:
Keyword
Description
82 User's Guide
Y Build concatenated key.
N | blank
Do not build concatenated key (default).
34 Code this field to activate the exit routine control option.
The 1-character entry x indicates whether the user exit routine is given
control before and after segments are processed (see “FABHFSU user exit
routine” on page 90).
Specify one of the following keywords:
Keyword
Description
Y Allow exit routine control.
N | blank
Do not allow exit routine control (default).
35 Code this field to activate the DBR skip option.
The 1-character entry s, the Database Record (DBR) skip option, indicates
whether return code 12 or 16 is valid for the exit routine specified in
columns 24 - 31 of this statement. A return code 12, if valid, causes
FABHFSU to skip the remaining segments associated with the current root
segment and begin processing at the next root segment.
Return code 16 causes a skip to a new root key value specified by the exit
routine.
Use this control statement only when a single PSB control statement is
defined. The skipping invoked by one PSB statement affects all others
included in the same run.
For more information about return codes from the user exit routines, see
“Contents of registers on exit” on page 97.
Specify one of the following codes:
Keyword
Description
Y Allow DBR skip option.
N | blank
Do not allow DBR skip option (default).
36 Code this field to activate the data conversion option.
If a Data Conversion exit (DFSDBUX1 exit) is activated, the user exit
routine specified by the exit routine name option in column 24 receives the
segment data that has been converted from the stored form to the
application form.
The 1-character entry c indicates whether the inverse conversions, that is,
the conversion from the application form to the stored form, is done before
the segment data edited in the exit routine is written into the output data
set.
Specify one of the following keywords:
Keyword
Description
Y Perform the conversion.
Notes:
v If the resulting length of the segment editing work area is more
than 32,767 bytes long, 32,767 is used as the length of the work
area.
v If option 'E' is not specified in column 32, the value specified on
this field is ignored.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
SEGSTAT PART
Position
Description
1 Code the SEGSTAT keyword to identify the statement.
9 Code the PART keyword to print the partition-wide segment statistics
report for each partition that is processed and from which at least one
segment is retrieved.
Restriction: In any one of the following cases, the partition-wide statistics are not
printed:
v The SEGSTAT statement is specified for a nonpartitioned database.
v The PART keyword is not specified.
v A keyword other than PART is specified as the operand of the
SEGSTAT statement.
84 User's Guide
FABHFSU HSSROPT input data set
The HSSROPT data set for the FABHFSU utility contains the control statements for
HSSR Engine.
For a complete description of the HSSROPT control statements, see Chapter 11,
“Options for HSSR Engine,” on page 203.
You can use any HSSROPT options that are appropriate for your task. When
FABHFSU has the pointer bypass option specified on the DBD control statement,
do not specify the SKERROR and DIAGG options. These options are automatically
activated by FABHFSU. DIAGG output requires an HSSRTRAC DD statement.
In addition to the reports generated by the FABHFSU utility, reports and statistics
produced by HSSR Engine are written in HSSRSTAT and HSSRTRAC data sets. For
the reports generated by HSSR Engine, see Chapter 12, “Reports and output from
HSSR Engine,” on page 239.
Format
This data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DBDHSHDP
PSBHSHDPGB OUT1 UL
PSBHSHDPGB OUT2 UL
END
86 User's Guide
IMS HIGH PERFORMANCE UNLOAD "FABHFSU CONTROL SPECIFICATIONS" PAGE: 1
5655-E06 DATE: 06/01/2012 TIME: 12.59.59 FABHFSU - V1.R2
**** SCAN CONTROL SPECIFICATIONS **** **** FORMAT CONTROL SPECIFICATIONS ****
If the database is a HALDB, and the SEGSTAT PART control statement is specified
in the CARDIN data set, the partition-wide segment statistics report that is shown
in the following figure is also produced for each partition.
88 User's Guide
TOTAL OUTPUT
The number of each segment type processed by FABHFSU. If the output
format is specified as NO, the value is zero. Differences between TOTAL
RETRIEVED and TOTAL OUTPUT represent the segments that were
bypassed by the user exit routine.
SEQUENCE ERRORS
The number of sequence errors detected for this segment type. If the
sequence check option is N, this field is zero.
MAXIMUM TWINS
The maximum number of this segment type that occurs under any one
root segment. This field is always N.A. (that is, not applicable).
MAXIMUM CHILDREN
The maximum number of dependent children that occurs for this segment
type. This field is always N.A. (that is, not applicable).
AVERAGE TWINS
The TOTAL RETRIEVED of this segment type divided by TOTAL
RETRIEVED of this segment's parent. Average occurrences of this segment
per parent occurrence.
AVERAGE CHILDREN
The sum of all segment occurrences dependent on this segment type
divided by the TOTAL RETRIEVED of this segment type. (This value
might be incorrect if sequence errors are bypassed or if the PCB is not
sensitive to all dependents.)
TOTAL RETRIEVED
The total number of segments retrieved.
TOTAL OUTPUT
The total number of segments processed by FABHFSU.
TOTAL SEQUENCE ERRORS
The total number of sequence errors.
PSPI
Note: The user exit interface is compatible with the user exit interface of
FABHFSU in DBT HSSR and IPR Unload. You can use the exit routine that
you wrote for these utilities if that routine does not depend on the CON
option, that is, if the routine does not expect that the segment prefix and the
segment data are concatenated in contiguous virtual storage.
The routine must be link-edited in 31-bit addressing mode (AMODE 31). If the
routine does not refer to the segment prefix area that is pointed to by the first
parameter, you can link-edit the routine in 24-bit addressing mode (AMODE 24).
FABHFSU calls the user exit routine as an Assembler subroutine. The linkage
convention follows the MVS™ standard. Exit routines must be placed into a load
module library to which access is provided with a JOBLIB or STEPLIB JCL
statement.
At initialization of FABHFSU, and before any HSSR call is issued to the database
to be unloaded, FABHFSU examines each PSB control statement to determine
whether an exit routine has been specified. If one has been, it is loaded from its
resident library.
The exit routine is called for each segment retrieved from the database before the
segment record is written into the output data set.
If your exit routine needs some kind of initialization and termination processing,
specify Y for the exit routine control option on the PSB control statement. For more
information, see “Initialization and termination processing in the exit routine” on
page 93.
If you want to modify the content of segments, specify the option Y or E for the
segment modification option of the PSB control statement. For more information,
see “Modifying segments in user exits” on page 92.
PSPI
PSPI
90 User's Guide
Subsections:
v “Writing a user exit routine in COBOL”
v “Writing a user exit routine in PL/I”
v “Sample exit routines” on page 92
When you write an exit routine in COBOL, you should know that a COBOL exit is
always called as a subroutine of FABHFSU. Because FABHFSU is not a COBOL
program and is not running in the Language Environment®, you must use some
methods to get better performance.
Enterprise COBOL, COBOL for OS/390, COBOL for MVS, and COBOL/370
If your exit routine is compiled by Enterprise COBOL (product number
5655-G53), COBOL for OS/390 and VM Version 2 (product number
5648-A25), COBOL for MVS and VM (product number 5688-197), or
COBOL/370 (product number 5688-197), you must use the runtime option
module CEEUOPT to optimize the Language-Environment (LE) options.
Because FABHFSU is not an LE-conforming Assembler program,
RTEREUS=(ON) must be specified in CEEUOPT. TRAP=(OFF) option must
also be specified, to avoid the overhead of intercepting abends in the
COBOL user exit.
VS COBOL II
If your exit routine was compiled by VS COBOL II (product number
5688-958) or OS/VS COBOL (product number 5740-CB1) and run with VS
COBOL II runtime library, use one of the following methods:
v Generate the runtime option module IGZEOPT with RTEREUS=YES and
STAE=NO; and link-edit it with the exit routine if that routine was
compiled with VS COBOL II.
If the routine was compiled with OS/VS COBOL, link-edit the IGZEOPT
module with a copy of ILBONTR from the VS COBOL II subroutine
compatibility library. At run time, this copy of ILBONTR must be
available.
v Specify the control statement RTEXIT=HPSUCOB2 in the HSSROPT data
set. HPSUCOB2 sets up and terminates the COBOL II runtime
environment. This method is useful if RTEREUS=NO is specified in your
current IGZEOPT module that is linked with the exit routine.
When you use the interface routine, observe the following rules:
v The PL/I routine must be compiled as an external procedure (no OPTIONS on
the procedure statement).
v The name on the procedure statement must be FSUEXIT.
v The parameters in the PL/I routine must be declared as pointer variables.
v Based variables must be used to access the data passed by FABHFSU to the exit
routine.
v The built-in function PLIRETC must be used to set the return code expected by
FABHFSU.
The sample exit routines shown in the following table are provided as members in
the HPS.SHPSSAMP sample library:
Table 7. Examples of exit routines
Member name Description
HPSUXAA0 Sample exit routine written in Assembler language
HPSUXCA0 Sample exit routine written in COBOL
HPSUXPA0 Sample exit routine written in PL/I
PSPI
Procedure
PSPI
If you want to modify the content of segments, specify the option Y or E for the
segment modification option of the PSB control statement.
Y If you want to modify database segments in your exit routine, but you do
not change the length of a segment, specify Y in column 32 of the PSB
control statement.
If this option is selected, each segment will be moved to a work area so
that modifications made by an exit routine will not affect the same
segment when it is being written to another data set, defined by another
PSB control statement. Though any part of the data (except the size field of
a variable length segment) can be changed by the user exit, you are
cautioned against modifying the segment prefix or sequence fields.
The Y option does not allow the exit routine to change the segment length.
If you change the segment length with the Y option, the result is
unpredictable. If you want to change the segment length, you must specify
the E option instead of the Y option.
E The E option notifies FABHFSU that segments will be modified by the user
exit. The option is valid only for HDAM, HIDAM, PHDAM, or PHIDAM
databases. If the E option is specified on a PSB control statement, an extra
100-byte field is added at the end of the segment data field that is passed
to the exit routine. This additional area can be used to extend the segment
passed. If you have changed the length of a fixed-length segment, you
92 User's Guide
must update the SGLEN field in the segment table SGTBL. When the
segment is a logical child and the logical parent's concatenated key (LPCK)
is defined as virtual, the length passed through SGLEN does not include
the length of the (virtual) LPCK field. In that case, the length of the virtual
LPCK must not be included when SGLEN is updated. Furthermore, if you
have changed the length of a variable-length segment, you must update
the size field of the segment. However, you do not need to update the
SGLEN field for a variable-length segment.
Note: You do not need to regenerate a new DBD before running FABHFSU so that
the new segment lengths are reflected to the DBD.
PSPI
Related reference:
“PSB control statement” on page 80
PSPI
PSPI
Related reference:
“PSB control statement” on page 80
PSPI
The following parameters are passed to the routine (see “Contents of registers” on
page 96):
Parameter
Description
You can refer to or edit the segment data by referring to the information in the
SGTBL and Key Area. The address of the segment prefix area is passed to the exit
routine for compatibility with the user exits for FABHFSU of DBT HSSR and IPR
Unload.
Subsections:
v “Segment prefix area”
v “Segment table (SGTBL)”
v “Key area” on page 95
The area is always above the 16-MB line; therefore, the address of the segment
prefix is set into the parameter list as a 31-bit address.
The exit routine (link-edited in 31-bit addressing mode) can refer to the segment
prefix area, but must not modify the data in the area.
If the segment code needs to be checked, the routine must refer to SGCDE in the
SGTBL entry instead of referring to the segment prefix.
The segment table (SGTBL) is a control block built by FABHFSU. Each entry of
SGTBL contains the information for the segment just retrieved. Your exit routine
can refer to the information, but must not modify the data in SGTBL unless the
length of a fixed-length segment is changed. See “Modifying segments in user
exits” on page 92.
The fields of interest in an SGTBL are summarized in the following table. For other
fields, see HPSUSGTB macro.
Table 9. Fields in an SGTBL
Label Offset Length Type Description
(bytes) (bytes)
SGNAME 0 8 Character Segment name
SGCDE 8 1 Hex Segment code
SGPARCDE 9 1 Hex Parent segment code
SGLEVEL 10 1 Hex Segment level
SGPCNUM 11 1 Hex Number of physical children
94 User's Guide
Table 9. Fields in an SGTBL (continued)
Label Offset Length Type Description
(bytes) (bytes)
SGSNSFLG 12 1 Flag byte Sensitivity
SGPACOP 13 1 Flag byte Compaction options
SGFDFLG 14 1 Flag byte Sequence field flag
SGDSG 15 1 Hex Data set group number
SGVLIND 16 1 Flag byte Variable-length segment flag
Key area
Note: If you are using a Data Conversion exit (DFSDBUX1 exit) for the database
processed in the FABHFSU job, the concatenated key is passed in the
application form. If you are not using the DFSDBUX1 exit, the
concatenated key is passed in the stored form.
v To skip the scan to a new root key value, the exit routine uses the concatenated
key area to pass the new key back to FABHFSU. A generic key can be specified
by returning a key length less than that required for a root key.
If a secondary index is used, specify the value in the search field of the index
segment for the next root.
Set the return code of 16 to force FABHFSU to accept the skip. The DBR skip
option is also required to be Y in the PSB control statement.
Note: If you are using a Data Conversion exit (DFSDBUX1 exit) for the database
that is processed in the FABHFSU job, you must specify the new key in
the application form. If you are not using the DFSDBUX1 exit, you must
specify the new root key in the stored form.
The format of the key area is shown the following table.
Table 10. Format of the key area
Offset Length (bytes) Type Description
0 2 Halfword Length of key area
2 variable - Key value
PSPI
Contents of registers
The following information describes how to communicate with the main logic.
PSPI
Subsections:
v “Contents of registers on entry”
v “Contents of registers on exit” on page 97
The following table shows register contents upon entry to the user exit routine:
Table 11. Register contents upon entry to an exit routine
Register Content
1 Pointer to the parameter list
13 Pointer to the register save area
14 Return address
15 Entry-point address of the routine
The following table lists the parameters which are pointed to by register 1 upon
entry.
Table 12. Parameter list pointed to by register 1 upon entry
Word Content
1 Address of segment prefix area
2 Address of segment data (see Note)
3 Address of segment table (SGTBL) entry for the segment type
4 Address of key area
96 User's Guide
Table 12. Parameter list pointed to by register 1 upon entry (continued)
Word Content
Note: The second word (segment-data pointer) points to the beginning of the data portion
of the segment. If the segment is a variable-length segment, the pointer points to the size
field. If the segment is a fixed-length segment, the pointer points to the beginning of the
data, and the segment length is available from the SGLEN field of the SGTBL entry.
When the control is returned to the caller, the contents of all registers except for
Register 15 must be restored. Register 15 must contain one of the return codes that
are summarized in the following table.
Table 13. Return codes
Code Meaning
0 FABHFSU writes this segment in the output data set.
4 FABHFSU does not write this segment in the output data set.
8 FABHFSU bypasses this segment and stops the processing for this output
data set. If the processing for all output data sets is stopped, FABHFSU
ends the job step.
12 FABHFSU bypasses this segment and skips the unload processing to the
next root segment.
Note: The DBR skip option must be coded as Y on the PSB control
statement. See the description of the DBR skip option in “PSB control
statement” on page 80.
16 FABHFSU bypasses this segment and skips the unload processing to the
root segment with the sequence key returned in the Key Area.
If a code other than the codes summarized in the preceding table is returned,
FABHFSU ends abnormally.
PSPI
Subsections:
v “Example 1: Running FABHFSU in ULU region”
v “Example 2: Running FABHFSU in DLI region”
The FABHULU procedure can be used to run FABHFSU in the ULU region. The
DBD name must be specified on the DBD= EXEC parameter and on the DBD
control statement in CARDIN DD. The DBD must be a physical DBD.
Because the job runs in the ULU region, PSB name '*' is specified for PSB control
statements. In this example, two PSB statements are coded.
The first PSB statement specifies the UL format and the DD name of OUT1 for the
output data set. The output data set produced by the PSB statement can be
reloaded by the IMS HD Reorganization Reload utility or a compatible utility.
The second PSB statement specifies the VN format and the DD name of OUT2 for
the output data set. The output data set is intended to be processed by an
application program.
// EXEC FABHULU,MBR=FABHFSU,DBD=SKILLINV
//CARDIN DD *
DBDSKILLINV
PSB* OUT1 UL
PSB* OUT2 VN
END
/*
//PRNTOUT DD SYSOUT=A
//SKILHDAM DD DSN=IMSDB.SKILLINV.DB,DISP=SHR
//OUT1 DD DSN=IMSDB.UNLOAD1,DISP=(,KEEP),UNIT=TAPE
//OUT2 DD DSN=IMSDB.UNLOAD2,DISP=(,KEEP),UNIT=TAPE
The FABHDLI procedure can be used to run FABHFSU in the DLI region. The PSB
name must be specified on the PSB= EXEC parameter. The DBD control statement
must be coded in CARDIN DD and must specify the DBD name for the database
to be processed. The DBD must be a physical DBD.
The three options, that is, sequence check option (Y), sequence error option (A),
and sequence error print option (Y) which are specified in the DBD statement,
mean:
v Y: sequence check is to be done.
98 User's Guide
v A: sequence errors are to be processed.
v Y: the diagnostic data is to be printed in the HSSRTRAC data set.
Any incorrect pointers are bypassed because the DBD statement also specifies the
pointer bypass option (1).
All segments defined in the DBD are sensitive to the output defined by the OUT1
DD, because '*' is specified in the PSB name field of the first PSB statement. If no
sequence errors or pointer errors are found, the output data set produced by the
PSB statement can be reloaded by the IMS HD Reorganization Reload utility or a
compatible utility, because the unload format UL is specified.
The second PSB statement specifies the VB format and the DD name of OUT2 for
the output data set. Only segments of the types defined in the first DB PCB of the
PSB OUT2PSB for the SKILLINV database are unloaded, because the PSB
statement specifies the PSB name and the PCB Number field is left blank. A user
exit routine, OUT2EXIT, is specified on the PSB statement.
The OUT1 and OUT2 DD statements specify the data sets for unloading.
In the following example, it is assumed that the RECON data sets and the database
data sets are dynamically allocated.
// EXEC FABHDLI,MBR=FABHFSU,PSB=OUT2PSB,DBRC=Y
//CARDIN DD *
DBDSKILLINV YAY 1
PSB* OUT1 UL
PSBOUT2PSB OUT2 VBOUT2EXIT
END
/*
//PRNTOUT DD SYSOUT=A
//OUT1 DD DSN=IMSDB.UNLOAD1,DISP=(,KEEP),UNIT=TAPE
//OUT2 DD DSN=IMSDB.UNLOAD2,DISP=(,KEEP),UNIT=TAPE
Topics:
v “IMS High Performance Unload API overview” on page 102
v “HSSR PCB requirements” on page 103
v “HSSR PCB feedback information” on page 105
v “DL/I calls and EXEC DLI command for HSSR PCB” on page 110
v “JCL requirements for your HSSR application” on page 113
v “Considerations for DB2 DL/I Batch interface” on page 115
v “Considerations for checkpoint and restart” on page 117
v “Consideration for database sharing” on page 119
v “Consideration for HALDB single partition processing” on page 125
This API supports IMS DL/I calls and IMS EXEC DLI commands. GN and GNP
calls with an unqualified segment search argument (SSA) are optimized. If the calls
other than GU, GN, or GNP are included, do not run the application program with
IMS High Performance Unload.
An application program that uses HSSR Engine for processing DL/I database calls
is called an HSSR application program. To run an HSSR application in the DLI or the
DBB region, a PSB is needed. In the PSB, you have to select one or more DBPCBs
by specifying them in the HSSRPCB or the HSSRDBD control statement in the
HSSROPT data set. The selected DBPCB is called an HSSR PCB. A DL/I call or an
EXEC DLI command to the HSSR PCB is called an HSSR call. The HSSR calls are
processed by HSSR Engine and the calls to the other DBPCBs are processed by
native IMS DL/I.
Notes:
v The specification of HSSR PCBs through the KEYLEN keyword of PCB
statement is supported for the compatibility with DBT HSSR. See
“Method for specifying an HSSR PCB through KEYLEN” on page 485.
v If the ULU region is used, you do not need to code the HSSRDBD or the
HSSRPCB control statement. This region type is supported for the
compatibility with DBT HSSR.
For the restrictions that apply to HSSR application program jobs, see “Restrictions
for IMS High Performance Unload” on page 29.
This topic describes the general-use programming interface. See the Programming
interface information section at the end of this book to understand the restrictions
associated with this type of material.
Subsections:
v “Interpreting PCB feedback”
v “Status codes” on page 106
GUPI
An application program should never modify any information in the HSSR PCB.
The access to PCB entries by the application program is restricted to read-only.
After a call is made, the PCB feedback in the HSSR PCB contains the same
information as a DL/I PCB with some exceptions. For details, see “Status codes”
on page 106.
GUPI
DMTI
Note: If PCBLIST HSSR which is the default, is specified, the PCB list that is
passed to the application program is not the same as the PCB list built by
IMS. If PCBLIST HSSR is specified, each list entry for a PCB that is defined
as an HSSR PCB points to the corresponding HSSR PCB that has been built
by HSSR Engine. An HSSR PCB that is passed to the application program is
not the original IMS PCB, but the one rebuilt by IMS High Performance
Unload's program controller. HSSR Engine describes the results of the calls
your program issues in the HSSR PCB. The HSSR PCB is referred to in the
call in the same way as in IMS.
DMTI
The following table shows the HSSR PCB mask, which is the same as IMS.
Table 14. HSSR PCB mask
Descriptor Length Note
Database Name 8 bytes
Segment Level Number 2 bytes
Status Code 2 bytes See “Status codes” on page 106.
For the EXEC DLI command, the DL/I interface block (DIB) is used as the
application programming interface. Every part except the status code is the same
as the DIB of IMS. For details about the status codes, see “Status codes.”
Status codes
The status codes listed in the following table are returned as the result of an HSSR
call.
Table 16. Status codes returned from an HSSR call
Code Meaning I/O area PCB feedback
blank Normal return. No errors Segment data is returned. PCB has a segment name
were detected. and a segment level, and
the concatenated key is
set in the key feedback
area.
AI Data management OPEN Unpredictable. Unpredictable. You must
error not use the PCB feedback
information.
Notes:
v If there is an error in a call statement or a command statement, the
application program receives abend U4013, instead of status code AC,
AD, AJ, or AK.
v If hierarchic levels are changed after a successful GN, GHN, GNP, or
GHNP call or a successful GN or GNP command, a status code of blank
is returned instead of GA.
v If segment types are changed after a successful GN, GHN, GNP, or
GHNP call or a successful GN or GNP command, a status code of blank
is returned instead of GK.
v When a GN call or a GN command is issued after a GU call or a GU
command that returned a GE status code, HSSR Engine might not return
the same segment that DL/I would return.
v The status code BA is not returned even if an INIT call or an ACCEPT
command has been issued with the character string STATUS GROUPA in
The HSSR call is issued through the DL/I language interface, but the call is
transferred to the HSSR Call Analyzer. The call is finally processed by either HSSR
call handler or native IMS DL/I, depending on the type of the call or the API set
that is specified by the APISET control statement in the HSSROPT data set.
Subsections:
v “DL/I calls supported by each API set”
v “EXEC DLI commands supported by each API set” on page 111
APISET 1 is the system default. The following table shows the DL/I call types
supported by each API set, and their effects with and without segment search
arguments (SSAs):
Note: For restrictions that are related to API sets, see “Restrictions common to all
HSSR applications” on page 29.
Table 17. DL/I call types supported by each API set
API set Call types supported
APISET 1 The following call types are supported:
v GU and GHU calls without SSA: the first root segment of the
database is retrieved.
v GU and GHU calls with an unqualified SSA that contains only the
name of a root segment type.
v GU and GHU calls with an SSA that is qualified on the root
sequence key.
In the SSA, any one of the following relational operators is available:
– equal-to (=b,b=, or EQ. b represents a single blank)
– greater-than-or-equal-to (>=, =>, or GE)
v GN and GHN calls without SSAs.
v GN and GHN calls with an unqualified SSA that contains the name
of a root segment type.
v GN and GHN calls with an SSA that is qualified on the root
sequence key.
In the SSA, any one of the following relational operators is available:
– equal-to (=b,b=, or EQ)
– greater-than-or-equal-to (>=,=>, or GE)
– greater-than (>b,b>, or GT)
These calls are not supported for HDAM or PHDAM database.
v GNP and GHNP calls without SSAs.
| Here, the first SSA must contain the root segment name and only
| equal-to (=b,b=,or EQ) relational operator is allowed for each qualified
| SSA.
APISET 3 The fully supported call types are the same as those in APISET 2. Once
an unsupported call is issued for HIDAM, HDAM, PHIDAM, or
PHDAM, the call and all the succeeding calls to the HSSR PCB are
passed to the IMS DL/I call handler to continue the processing instead
of ending it abnormally.
Requirement: If the EXEC DLI command is used in your application, you must
specify 'PCBLIST IMS' in the HSSROPT data set. For details of the
PCBLIST IMS specification, see “PCBLIST control statement” on
page 230.
IMS High Performance Unload supports three API sets. APISET 1 is the system
default. The following table shows the EXEC DLI Command types supported by
each API set, and their effects with and without SEGMENT options.
Table 18. EXEC DLI command types supported by each API set
API set Command types supported
APISET 1 The following command types are supported:
v GU command without SEGMENT options
v GU command with a SEGMENT option that contains the name of a
root segment type
An HSSR call gives the same results as a DL/I call or an EXEC DLI command,
with some minor differences. For details, see “HSSR PCB feedback information” on
page 105.
For a complete description of the commands, options, and layout of the DIB and
qualified commands, see IMS Application Programming.
For details, see “Basic JCL requirements” on page 40. You can also use the
IBM-supplied catalog procedures. For details, see “Preparing the basic JCL” on
page 38.
The following figure shows a JCL example to run the application program named
as 'YOURAPPL' that issues IMS DL/I calls.
Figure 15. JCL to run an application program using the DL/I calls
In this example JCL, two control statements are specified in the HSSROPT data set:
v 'HSSRPCB *ALL' defines that all DBPCBs in the PSB with the name YOURPSB
are HSSR PCBs. If you want to select one or more DBPCBs but not all, there are
two ways to do so:
– Specify the PCB numbers as in 'HSSRPCB 001,003'.
– Specify as 'HSSRDBD dbdname' to select all DBPCBs that refer to a specific
DBD with the name dbdname.
v 'APISET 3' enables all DL/I call types that are supported by this API. And if an
unsupported call is issued once, the succeeding call processing to the HSSR PCB
Chapter 7. Application programming interface for using HSSR Engine 113
is taken over by native IMS DL/I. The statistics of the calls processed by HSSR
Engine is logged in the HSSRSTAT data set. For details, see “HSSRSTAT data
set” on page 240. And the statistics of the calls processed by native IMS DL/I is
logged in the DFSSTAT data set. To tune the IMS DL/I performance, add the
DFSVSAMP DD statement and specify IMS VSAM and OSAM buffers and
options in the data set.
If 'APISET 2' is specified instead of 'APISET 3', in the previous mentioned case
of the unsupported call, the application processing ends abnormally. Check
which call is unsupported in the Trace Output report in the HSSRTRAC data set.
For details of the supported calls and restrictions, see “DL/I calls and EXEC DLI
command for HSSR PCB” on page 110.
For other options, see Chapter 11, “Options for HSSR Engine,” on page 203.
Requirement: If your application uses the EXEC DLI commands, you must add
the 'PCBLIST IMS' control statement to the HSSROPT data set.
For DL/I Batch support of DB2, also read the DB2 Application Programming and
SQL Guide.
By using DB2 DL/I Batch interface, an HSSR application program can issue:
v Any HSSR call, with the restrictions stated in “Restrictions common to all HSSR
applications” on page 29.
v Any IMS batch call except a ROLS, SETS, or SYNC call, or any IMS batch
command except a ROLS, SETS, or SYNC command. This is the same restriction
as for DB2 DL/I Batch support. For further details about the restrictions on IMS
batch calls, see DB2 Application Programming and SQL Guide.
v IMS system service calls or commands with the same restrictions. See
“Considerations for checkpoint and restart” on page 117.
v Any SQL statements except COMMIT and ROLLBACK. The application program
must use the IMS CHKP call or the IMS CHKP command to commit data, and
the IMS ROLL or ROLB to roll back changes.
v Any call or command to a standard or conventional access method such as
QSAM or VSAM.
Subsections:
v “Program design considerations”
v “Restrictions on DB2 DL/I Batch support”
v “Requirements for using DB2 DL/I Batch support”
The program design considerations for ordinary DB2 DL/I Batch support apply to
IMS High Performance Unload. You should be familiar with the program design
considerations for the DB2 DL/I Batch support, especially those related to
checkpoint calls and application program synchronization, or to checkpoint
commands and application program synchronization.
You can use IBM-supplied cataloged procedure FABHDB2, which resides in the
HPS.SHPSSAMP sample library.
The required changes to the application program and the job step JCL are basically
the same as for DB2 DL/I Batch support, except that using DSNMTV01 on the
MBR= parameter is not supported; the results obtained when it is used are
unpredictable.
In the HSSR application program that uses DB2 DL/I Batch support, the following
additional EXEC parameter must be provided:
SSM= This required parameter specifies a 1- to 4-byte character identifier. When
building the IMS.PROCLIB member that contains the information about
each DB2 subsystem that IMS communicates with, you must generate the
member name by concatenating this SSM identifier to the IMSID.
Subsections:
v “MVS checkpoints”
v “DL/I CHKP and XRST calls or EXEC DLI CHKP and XRST commands”
MVS checkpoints
DL/I CHKP and XRST calls or EXEC DLI CHKP and XRST
commands
HSSR application programs can issue PCB DL/I CHKP and XRST calls or XRST
commands to the I/O PCB. However, a DL/I CHKP call or an EXEC DLI CHKP
command should not request an MVS checkpoint.
v If PCBLIST HSSR (the default value) is specified, HSSR application programs
can issue XRST calls with APISET 1 (also the default value).
v If HSSR application programs issue XRST calls with PCBLIST IMS specified, you
must specify APISET 3.
v If XRST command is to be issued, you must specify APISET 3.
HSSR Engine is not aware of CHKP and XRST calls or XRST commands. For HSSR
PCBs, the behavior of HSSR Engine is not compatible with the behavior of DL/I.
Be careful if you are concerned about compatibility between HSSR and DL/I.
Subsections:
v “Database sharing support”
v “Handling data set extensions” on page 120
v “Support of the processing options GON and GOT” on page 120
v “Support of database level sharing” on page 121
v “Considerations for block level sharing” on page 122
v “Avoiding problems caused by the lack of read integrity” on page 122
v “VSAM SHAREOPTIONS” on page 123
Some problems might occur because the HSSR buffer handler does not synchronize
the content of its buffers with the content of the IMS buffer handler. HSSR Engine
is not aware of a modification to a block or CI unless IMS writes the modified
block or CI from its buffers to DASD. It is also not aware of a modification if an
HSSR buffer contains an older image of that block or CI. For example, the
following problems that might occur with IMS in a database level sharing
environment might also occur with HSSR Engine:
For methods of avoiding these problems, see “Avoiding problems caused by the
lack of read integrity” on page 122.
HSSR buffer handler can access OSAM blocks or VSAM CIs stored and update
IMS subsystems in new extents of the data sets concurrently.
For OSAM and ESDS, this support is provided by default. For KSDS, this support
must be explicitly activated by a RETRY KSDS control statement of the HSSROPT
data set (for more details, see “RETRY control statement” on page 231).
For the processing options GON, HSSR Engine provides the same support as IMS.
Upon encountering a database error, or what in a database sharing environment
appears to be a database error, HSSR Engine returns a GG status code.
For the processing option GOT, HSSR Engine provides slightly different support
from IMS. Upon encountering a database error situation, or what in a
database-sharing environment appears to be a database error situation, HSSR
Engine takes the following actions:
1. Retries many times to access the database, and waits for a specific number of
seconds before each attempt (only for HDAM, HIDAM, PHDAM, and
PHIDAM).
The number of attempts and the waiting time can be specified on the
GOTRETRY control statement.
2. Returns a GG status code if the attempts to access the database are not
successful.
3. Invalidates all PCB-related buffers; database calls issued after a GG status code
do not use old buffer copies but are satisfied with new database accesses. The
buffer invalidation can increase the chances of an application program
resuming its processing after a GG status code. The HSSR buffer handler
invalidates buffers only for HDAM, HIDAM, PHDAM, and PHIDAM.
Notice the following additional points concerning processing options GON and
GOT:
IMS High Performance Unload provides the same support for database level
sharing as IMS. This support requires that DBRC be installed and active, and that
the database be registered in the DBRC RECON data sets.
Application program running in DLI or DBB region
For an HSSR application program running in DLI or DBB region, DBRC
authorizes database access to the job step under the same conditions as a
normal IMS batch job step. Authorization for the database access depends
on the following:
v The database processing intent as specified through PROCOPT during
PSBGEN
v The database-sharing level defined in the RECON data sets
v The current status indicators of the database, as recorded in the RECON
data sets
You have the following options during PSBGEN:
v You can specify a read processing intent (PROCOPT=G) in order to have
read integrity. DBRC then prevents concurrent execution of the HSSR
application program with an IMS subsystem that updates the database.
v You may specify a read-only processing intent (PROCOPT=GO) to be
able to run your application program concurrently to other IMS
subsystems that update the database. In this case, no read integrity is
provided.
You can also specify an exclusive processing intent (PROCOPT=GE) in
order to have exclusive usage of the database.
Application program running in a ULU region
In a ULU region, DBRC authorizes database access to an HSSR application
program under the same conditions as to the standard IMS HD
Note: Databases that have been registered for block-level sharing are
shared by a ULU region at the database level. This is what IMS does
for the IMS HD Reorganization Unload utility.
HSSR Engine does not provide any special support for block level sharing, and
does not provide an interface to the IRLM. It is, however, possible to run an HSSR
application program in a block level sharing environment if no replace processing
option is specified for HSSR PCBs.
HSSR Engine behaves in the same way as in a database level sharing environment
with read-only processing intent. Read integrity is not provided. When running in
a block level sharing environment with read processing intent, HSSR Engine issues
a warning message and runs with read-only processing intent.
If you need to read, with read integrity, a database that has been registered with
SHARELEVL 2 or SHARELEVL 3 (block level sharing), you can consider specifying
IRLM=N on the JCL and specifying a read processing intent during PSBGEN. In
this case, sharing occurs at the database level, and DBRC prevents concurrent
execution with an updating IMS subsystem.
To avoid the problems that are caused by the lack of read integrity, you might use
the following methods. Apply them with care.
Frequency of SYNC points or checkpoint calls and commands in updating
programs
Updating IMS programs should rapidly write the content of modified
buffers to DASD. This can be achieved by a high frequency of calls or
commands, whether SYNC points or checkpoints, in the updating IMS
application programs.
Avoiding CI splits and CA splits
With ESDS and OSAM data sets, the exposure of reading inconsistent data
is limited to the reading of database records that are modified by the
updating IMS program. With KSDS data sets, the risk of reading
inconsistent data is much higher if CI splits or CA splits occur.
Reading a CI that has been split might create a skip of all the root
segments that have been shifted out of the split CI. Reading a CA that has
been split might create a skip of all the roots that have been shifted out of
the split CA. Other incorrect results might also occur.
To avoid these problems, allocate enough free space in the KSDS and
re-create it frequently enough to reduce the number of CI splits and CA
splits. For example, a KSDS can be re-created by restoring with the IMS
Database Recovery utility.
Unless the occurrence of CI splits and CA splits can be kept very low
while the HSSR application program is running, do not read an HISAM
KSDS with HSSR Engine.
VSAM SHAREOPTIONS
PSPI
If the application program does not issue HSSR REPL calls, VSAM
SHAREOPTIONS (1,3) can be used.
PSPI
The following figure is an example of the HALDB control statement. Here, '001' is
the DB PCB number and 'PHDO01C' is the partition name that is to be processed.
//DFSHALDB DD *
HALDB PCB=(001,PHDO01C)
/*
Figure 16. Example of the HALDB control statement for single partition processing
For details of the DFSHALDB DD statement and the HALDB control statement, see
IMS System Definition.
Note: If the application program issues GN calls repeatedly, and reaches the end of
the partition, the status code GB is returned to the application program.
Topics:
v “Functions that support HALDBs” on page 128
v “Restrictions for processing HALDBs” on page 129
v “Types of processing for unloading a HALDB” on page 130
v “Unloading a partitioned database with FABHURG1” on page 133
v “Unloading a partitioned database with FABHFSU” on page 136
v “Processing HALDBs with your HSSR application program” on page
139
v “Migration unload and fallback unload” on page 142
You can use FABHURG1 and FABHFSU to unload PHIDAM and PHDAM
databases. You can also write your own HSSR application program to access these
databases, with some restrictions.
Note: In this topic and in the subsequent topics, any reference to HALDB or a
partitioned database means either a PHDAM or a PHIDAM database unless
otherwise specified. The partitioned secondary index (PSINDEX) is not
intended to be included.
You can use the following unload utilities to unload all partitions of a PHDAM or
a PHIDAM database:
v FABHURG1
v FABHFSU in standard mode
You can also use these utilities to unload a particular partition or a sequence of
partitions from a PHDAM or PHIDAM database.
In the FABHFSU utility, only the standard mode is supported for unloading a
partitioned database, a partition of it, or a sequence of partitions of it. You cannot
run FABHFSU in PSF mode for a partitioned database.
FABHURG1 also supports migration unload and fallback unload. The control
statements that are used for migration and fallback are explained in “Migration
unload and fallback unload” on page 142.
FABHURG1 utility
v FABHURG1 does not support the migration unload of secondary indexes.
v FABHURG1 does not support the migration unload of HISAM databases.
v If PTR=H or PTR=HB is defined as the parent segment of virtual logical child,
FABHURG1 does not support the migration unload of the database.
v FABHURG1 does not support the fallback unload of partitioned secondary
indexes.
FABHFSU utility
v FABHFSU cannot HALDB unload in PSF mode.
| v FABHFSU does not support the migration unload of secondary indexes.
| v FABHFSU does not support the migration unload of HISAM databases.
| v If PTR=H or PTR=HB is defined as the parent segment of a virtual logical child,
| FABHFSU does not support the migration unload of the database.
v FABHFSU does not support fallback unload.
A user HSSR application program cannot process only the selected partitions;
HALDB is processed as an entire database. However, by specifying the HALDB
control statement on the DFSHALDB DD statement, you can select a single
HALDB partition to be processed.
Subsections:
v “Unloading the entire database”
v “Unloading a partition”
v “Unloading a sequence of partitions” on page 131
You can unload a partitioned database as a whole database with one FABHURG1
job step or with one FABHFSU job step.
The following figure shows the data flow for unloading and reloading an entire
database.
Header record
Partition 1 . Partition 1
.
.
Segment records
FABHURG1 (FRMT *HD) IMS HD Reorganization Reload
in *HD/UL format
or FABHFSU (FRMT UL) . or a compatible utility
and
.
in partition
.
sequence
Partition 2 . Partition 2
.
.
Trailer record
Partition 3 Partition 3
Unloading a partition
FABHURG1 or FABHFSU (in standard mode) can also be used to unload a single
partition from a partitioned database. The PARTITION control statement in the
SYSIN data set is used to specify a partition for FABHURG1, and the PARTITION
control statement in the CARDIN data set is used to specify a partition for
FABHFSU. HSSR Engine allocates the buffers only for a selected partition.
When a single partition is unloaded, the unloaded data set contains a header
record, all segment records in the selected partition, and a trailer record. You can
use the IMS HD Reorganization Reload utility or a compatible utility to reload the
*HD-format data set that is unloaded by the FABHURG1 utility or the UL-format
data set that is unloaded by the FABHFSU utility.
You can use the IMS HD Reorganization Reload utility or a compatible utility to
reload the *HD-format data set that is unloaded by the FABHURG1 utility or the
UL-format data set that is unloaded by the FABHFSU utility.
The following figure shows the data flow for unloading and reloading a sequence
of partitions.
Partition 3 Partition 3
Procedure
1. Prepare FABHURG1 JCL.
In FABHURG1 JCL that is used for a nonpartitioned database, make the
following modifications to process a HALDB:
v Specify that DBRC will be used.
v Specify the DD statements for RECON data sets or make sure that RECON
data sets will be allocated dynamically.
v Ensure that DD statements for database data sets are not specified.
v If you want to unload a particular partition or a sequence of partitions, code
a PARTITION control statement in the SYSIN data set (explained in the next
step).
2. Code the PARTITION control statement in the SYSIN data set.
To process a partition or a sequence of partitions, you must specify the
partition by coding the PARTITION control statement. For details of the control
statement, see “PARTITION control statement” on page 57.
Examples
Example 1: Unloading an entire database
Use the following example JCL to unload an entire database.
// EXEC FABHULU,MBR=FABHURG1,DBD=USERDBD,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//HSSROPT DD *
PARTINFO DEF
/*
//SYSIN DD *
SEGSTAT PART
/*
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DSN=IMSDB.HDUNLD,DISP=(,CATLG),UNIT=TAPE,
// VOL=SER=VOL001
In this example:
v The unloaded data set is defined by the SYSUT2 DD statement.
// EXEC FABHULU,MBR=FABHURG1,DBD=USERDBD,DBRC=Y
//SYSIN DD *
PARTITION PART10
/*
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DSN=IMSDB.HDUNLD,DISP=(,CATLG),UNIT=TAPE,
// VOL=SER=VOL001
In this example:
v The unloaded data set is defined by the SYSUT2 DD statement.
v The database that is unloaded is specified on the DBD parameter.
v DBRC=Y is specified so that DBRC is used.
v The partition to be unloaded is specified by the PARTITION control
statement in the SYSIN DD statement. All data sets for the selected
partition PART10 are dynamically allocated by HSSR Engine.
In this example, it is assumed that the RECON data sets are dynamically
allocated.
Example 3: Unloading a sequence of partitions
Use the following example JCL to unload a sequence of partitions of a
partitioned database.
// EXEC FABHULU,MBR=FABHURG1,DBD=USERDBD,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//HSSROPT DD *
PARTINFO DEF,ACC
/*
//SYSIN DD *
SEGSTAT PART
PARTITION PART10 5
/*
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DSN=IMSDB.HDUNLD,DISP=(,CATLG),UNIT=TAPE,
// VOL=SER=VOL001
In this example:
v The unloaded data set is defined by the SYSUT2 DD statement.
v The database that is unloaded is specified on the DBD parameter.
134 User's Guide
v DBRC=Y is specified so that DBRC is used.
v The DD statements for RECON data sets are specified.
v The partitions to be unloaded are five consecutive partitions. The first is
partition PART10, which is specified on the PARTITION control
statement in the SYSIN DD statement. All data sets for the selected
partitions are dynamically allocated by HSSR.
v The 'PARTINFO DEF,ACC' statement produces the HALDB Partition
Definition report and the HALDB Partitions Accessed report.
v The 'SEGSTAT PART' statement produces the partition-wide Segment
Statistics report.
Procedure
1. Prepare FABHFSU JCL.
In standard mode FABHFSU JCL that is used for a nonpartitioned database,
make the following modifications to process a HALDB:
v Specify that DBRC will be used.
v Specify the DD statements for RECON data sets or make sure that RECON
data sets will be allocated dynamically.
v Ensure that DD statements for database data sets are not specified.
v If you want to unload a particular partition or a sequence of partitions, code
a PARTITION control statement in the SYSIN data set (explained in the next
step).
2. Code the PARTITION control statement in the CARDIN data set.
To process a partition or a sequence of partitions, you must specify the
partition by coding the PARTITION control statement. For details of the control
statement, see “PARTITION control statement” on page 79.
Examples
Example 1: Unloading an entire database
Use the following example JCL to unload an entire database.
// EXEC FABHULU,MBR=FABHFSU,DBD=SKILLINV,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//CARDIN DD *
DBDSKILLINV
PSB* OUTPUT UL
END
/*
//HSSROPT DD *
PARTINFO DEF
/*
//PRNTOUT DD SYSOUT=A
//OUTPUT DD DSN=IMSDB.UNLOADDS,DISP=(,KEEP),UNIT=TAPE
In this example:
v The database that is unloaded is specified on the DBD parameter.
// EXEC FABHULU,MBR=FABHFSU,DBD=SKILLINV,DBRC=Y
//CARDIN DD *
DBDSKILLINV
PSB* OUTPUT UL
PARTITION SKINVP1
SEGSTAT PART
END
/*
//PRNTOUT DD SYSOUT=A
//OUTPUT DD DSN=IMSDB.UNLOADDS,DISP=(,KEEP),UNIT=TAPE
In this example:
v The database that is unloaded is specified on the DBD parameter.
v DBRC=Y is specified so that DBRC is used.
v The DBD statement specifies the DBD name.
v The PSB statement shows that the unloaded data set is specified by the
OUTPUT DD statement and that the output records are written in the
UL format.
v The partition to be unloaded is specified by the PARTITION control
statement in the CARDIN DD statement. All data sets for the selected
partition SKINVP1 are dynamically allocated by HSSR.
v The 'SEGSTAT PART' statement produces the partition-wide Segment
Statistics report.
In this example, it is assumed that the RECON data sets are dynamically
allocated.
Example 3: Unloading a sequence of partitions
Use the following example JCL to unload a sequence of partitions from a
partitioned database.
In this example:
v The database that is unloaded is specified on the DBD parameter.
v DBRC=Y is specified so that DBRC is used.
v The DD statements for RECON data sets are specified.
v The DBD statement specifies the DBD name.
v The PSB statement shows that the unloaded data set is specified by the
OUTPUT DD statement and that the output records are written in the
UL format.
v The partitions to be unloaded are three consecutive partitions. The first
is the partition SKINVP1, which is specified on the PARTITION control
statement in the CARDIN DD statement. All data sets for the selected
partitions are dynamically allocated by HSSR Engine.
v The 'SEGSTAT PART' statement produces the partition-wide Segment
Statistics report.
v The 'PARTINFO DEF,ACC' statement in HSSROPT DD produces the
HALDB Partition Definition report and the HALDB Partitions Accessed
report.
Restriction: A user HSSR application program cannot process only the selected
partitions; HALDB is processed as an entire database. However, by
specifying the HALDB control statement on the DFSHALDB DD
statement, you can select a single HALDB partition to be processed.
Subsections:
v “JCL requirements”
v “Control statements”
v “Examples”
JCL requirements
In an HSSR JCL for processing HALDBs, the following requirements must be met:
v DBRC must be used.
v The DD statements for RECON data sets must be specified or dynamically
allocated.
v No DD statements for HALDB data sets must be specified.
Control statements
Examples
Example 1: Coding JCL for your HSSR application program
You can use FABHDLI, FABHDBB, or FABHULU as the cataloged
procedure to run your application program. In the following example,
FABHDLI is used.
Here, assume that the application program HSSRAPPL processes a
PHDAM database and the second DB PCB in the PSB PSBAPPL1 is used to
access the PHDAM database from the application program through HSSR
calls.
Assume also that the partitions are accessed sequentially.
DBRC=Y is specified so that DBRC is used. Also, the DD statements for
RECON data sets are specified. No DD statement for database data sets for
the PHDAM to be processed is specified, because all data sets are
dynamically allocated by HSSR Engine.
Because no HSSRCABP DD statement is coded, the default CAB buffering
parameters are used for the job. Because partitions are accessed
sequentially, no PARTPROC control statement needs to be specified in
HSSRCABP DD.
// EXEC FABHDLI,MBR=HSSRAPPL,PSB=PSBAPPL1,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//HSSROPT DD *
HSSRPCB 002
/*
//OUTPUT DD DSN=TESTDS.HSSRAPPL.OUTPUT,DISP=OLD
//HSSRCABP DD *
CABDD PART3A
NBRSRAN 10
CABDD PART5A
NBRSRAN 20
/*
If you want to change NBRSRAN for all data sets of data set group A, you
can code as follows:
// EXEC FABHDLI,MBR=HSSRAPPL,PSB=PSBAPPL1,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//HSSROPT DD *
HSSRPCB 002
/*
//OUTPUT DD DSN=TESTDS.HSSRAPPL.OUTPUT,DISP=OLD
//HSSRCABP DD *
CABDD 'PART*A'
NBRSRAN 10
/*
// EXEC FABHDLI,MBR=HSSRAPPL,PSB=PSBAPPL1,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//HSSROPT DD *
HSSRPCB 002
/*
//OUTPUT DD DSN=TESTDS.HSSRAPPL.OUTPUT,DISP=OLD
//HSSRCABP DD *
PARTPROC PARTDB1 R
CABDD 'PART%A'
RANSIZE 8
NBRSRAN 4
NBRDBUF 16
REFT4 12
/*
If no more than three partitions are accessed at a time, you must code the
third operand of the PARTPROC statement. See the following example.
// EXEC FABHDLI,MBR=HSSRAPPL,PSB=PSBAPPL1,DBRC=Y
//RECON1 DD DSN=IMSVS.RECON1,DISP=SHR
//RECON2 DD DSN=IMSVS.RECON2,DISP=SHR
//RECON3 DD DSN=IMSVS.RECON3,DISP=SHR
//HSSROPT DD *
HSSRPCB 002
/*
//OUTPUT DD DSN=TESTDS.HSSRAPPL.OUTPUT,DISP=OLD
//HSSRCABP DD *
PARTPROC PARTDB1 R 3
CABDD 'PART%A'
RANSIZE 8
NBRSRAN 4
NBRDBUF 16
REFT4 12
/*
| FABHURG1 can be used for both purpose. FABHFSU can be used only for
| migration unload.
Migration unload
You can use the FABHURG1 unload utility to migrate nonpartitioned databases to
HALDBs.
| If you want to unload a database by several job steps that run in parallel, the
| FABHFSU Parallel Scan Facility (PSF) can be used.
Subsections:
v “Requirements for FABHURG1”
v “Requirements for FABHFSU”
v “Restrictions” on page 143
v “Considerations” on page 143
v “JCL example for migration unload” on page 143
Considerations
DFSVSAMP DD
If you want to get better performance, when a logical child is defined in
the input database, code an appropriate number of IMS buffer pools in
DFSVSAMP DD of your JCL. For details, see Chapter 4, “Basic job control
language,” on page 37.
Database Tuning Statistics
Statistics for the segment length and the number of I/Os for virtual logical
segment types are not produced.
Hard-copy trace
For the virtual logical child, the segment prefix reported in a call trace is
the segment prefix of the paired real logical child.
The following is an example JCL to create an unloaded data set that can be used in
migrating an HDAM or HIDAM database. The example uses the IBM-supplied
FABHULU cataloged procedure.
Assume that the database is an HDAM database and consists of three data set
groups.
The database data sets that are to be unloaded are defined by HDAMDD1,
HDAMDD2, and HDAMDD3 DD statements; the unloaded data set is defined by
the SYSUT2 DD statement.
The MIGRATE control statement is specified in the SYSIN DD, which indicates that
this is a migration unload.
// EXEC FABHULU,MBR=FABHURG1,DBD=HDAMDBD
//HDAMDD1 DD DSN=TESTDS.HDAMDS1,DISP=SHR
//HDAMDD2 DD DSN=TESTDS.HDAMDS2,DISP=SHR
//HDAMDD3 DD DSN=TESTDS.HDAMDS3,DISP=SHR
//SYSIN DD *
MIGRATE
/*
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DSN=MIGDS1.MIGULDS,DISP=(,CATLG),UNIT=TAPE,
// VOL=SER=MIGDS1
The multiple unload files enable the Reload and the optional PSSR SORT for two
or more HALDB partitions to run in parallel processes, which will reduce the
elapsed time for migration.
| Note: The exit routine FABHKEYX is used for unloading the HALDB partitions
| and changing the high key.
To use this exit, you must specify FABHKEYX as an exit routine name on the EXIT
control statement in the SYSIN data set and prepare a list of the DD names and the
high key values for the unload files in the FABHKEYX data set.
In each unload file, the correct header and trailer records are added.
Restriction: If the root key is compressed, the control statement EXIT FABHKEYX
cannot be specified with the DECN control statement.
Subsections:
v “FABHKEYX data set ”
v “JCL example for migration unload with FABHKEYX exit” on page 145
The FABHKEYX data set contains 80-byte fixed-length records. The FABHKEYX
exit routine reads this data set that contains a list of the DD names and the high
key values to distribute the unload records.
The entries of the list must be in the following format and must be listed in
ascending order of the high key values.
0........1.........2.........3.........4.........5.........6...
123456789012345678901234567890123456789012345678901234567890...
DDname KeyString
Position
Description
1-8 Code the output DD name.
This 8-character entry specifies the name of the DD statement for each
unload files. The format of each data set must be same as the SYSUT2 DD.
10- Code the key string.
This variable-length string specifies a high key value. The key values must
be enclosed by quotation marks and preceded by the letter C or X: C
indicates the character values, and X indicates the hexadecimal values.
When the key string is long, you can specify it on multiple lines as follows:
DDNAME01 C’AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
C’AAAAAAAAAAAA’
The following is an example JCL to distribute the unload records for migration to
HALDB to four unload files by using the FABHKEYX exit routine.
// EXEC FABHULU,MBR=FABHURG1,DBD=HDAMDBD
//HDAMDD1 DD DSN=TESTDS.HDAMDS1,DISP=SHR
//HDAMDD2 DD DSN=TESTDS.HDAMDS2,DISP=SHR
//HDAMDD3 DD DSN=TESTDS.HDAMDS3,DISP=SHR
//SYSIN DD *
MIGRATE
EXIT FABHKEYX
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DUMMY
//FABHKEYX DD *
ULFPART1 C’2999999’
ULFPART2 C’5999999’
ULFPART3 C’9999999’
ULFPART4 X’FF’
//ULFPART1 DD DSN=MIGDS1.MIGULDS.ULFPART1, ...
//ULFPART2 DD DSN=MIGDS2.MIGULDS.ULFPART2, ...
//ULFPART3 DD DSN=MIGDS3.MIGULDS.ULFPART3, ...
//ULFPART4 DD DSN=MIGDS3.MIGULDS.ULFPART4, ...
Tips:
v You can define the SYSUT2 DD as DUMMY to reduce the elapsed time for
the I/O operations.
v It is recommended that you specify X'FF' for the last DD name in the
FABHKEYX data set not to throw away segments.
| For more information about the FABHFSU Parallel Scan Facility, see Chapter 10,
| “Parallel Scan Facility of FABHFSU,” on page 159.
| Subsections:
| v “Example of parallel migration unload of HIDAM”
| v “Example of parallel migration unload of HDAM” on page 147
| Figure 20 on page 146 shows a JCL to run the FABHPSFC program to create a scan
| control that is named SCANCNTL. The CARDIN statements specify the control of
| The LRECL for the CNTLDD data set must be greater than (834 * the
| number of phases) + 432
| Figure 21 on page 147 shows a JCL for phase 1 of the unload step. For phases 2
| and 3, modify the phase number 01 to 02 or 03. Each FABHFSU job produces a
| unload data set that is specified by the OUT1 DD statement. Each unload data set
| contains a header record, and the unload data set can be used as an input for IMS
| High Performance Load.
| Notes:
| v If a logical child is defined in the input database, and you want better
| performance of unload, code an appropriate number of IMS buffer pools
| in DFSVSAMP DD of the JCL. For details, see “Basic JCL requirements”
| on page 40.
| v The FABHFSU job steps, except for the last phase, return the code of 08
| when the processes end successfully.
| v The load utility of IMS High Performance Load returns the code of 04
| because a trailer record is not contained.
|
| //*-----------------------------------------------------------------------------
| //* FABHPSFC - CREATE SCAN CONTROL DATA SET
| //* ----------------------------------------------------------------------------
| //PSFCTL EXEC PGM=FABHPSFC
| //STEPLIB DD DISP=SHR,DSN=HPS.SHPSLMD0
| // DD DISP=SHR,DSN=IMSVS.SDFSRESL
| //IMS DD DISP=SHR,DSN=USER.DBDLIB
| //CNTLDD DD DSN=TEMPDS.FSCNTL,
| // DISP=(NEW,CATLG,DELETE),
| // UNIT=SYSDA,SPACE=(TRK,(4,1)),VOL=SER=TSTVOL,
| // DCB=(BLKSIZE=4096,LRECL=4092,RECFM=VB)
| //PRNTOUT DD SYSOUT=*
| //SYSUDUMP DD SYSOUT=*
| //CARDIN DD *
| *........1.........2.........3.........4.........5.........6.........7.........8
| *2345678901234567890123456789012345678901234567890123456789012345678901234567890
| DBDUSRHIDAM
| PSB* OUT1 MI
| CTLSCANCNTL209936503Y
| HKYC’29999999’
| HKYC’59999999’
| HKYC’99999999’
| END
| /*
|
|
| Figure 20. FABHPSFC JCL for parallel migration unload of HIDAM
| The secondary index USRSIX01, whose search field is the root key of USRHDAM,
| is used to unload the database in the ascending order of the root key.
| The following figure shows JCL to run the FABHPSFC program. The secondary
| index name is specified in the DBD control statement. If a secondary index is not
| defined, the relative block number of the CI or block can be specified as a node
| point in the NPT control statement.
| For the JCL of each phase in the unload step, see Figure 21.
|
| //*-----------------------------------------------------------------------------
| //* FABHPSFC - CREATE SCAN CONTROL DATA SET
| //* ----------------------------------------------------------------------------
| //PSFCTL EXEC PGM=FABHPSFC
| :
| //CARDIN DD *
| *........1.........2.........3.........4.........5.........6.........7.........8
| *2345678901234567890123456789012345678901234567890123456789012345678901234567890
| DBDUSRHDAM USRSIX01
| PSB* OUT1 MI
| CTLSCANCNTL209936503Y
| HKYX’2FFFFFFF’
| HKYX’5FFFFFFF’
| HKYX’FFFFFFFF’
| END
| /*
|
|
| Figure 22. FABHPSFC JCL for parallel migration unload of HDAM
Fallback unload
You can use the FABHURG1 unload utility to restore HDAM or HIDAM databases
that were migrated to PHDAM or PHIDAM.
The procedure for the fallback unload of HALDBs is described in IMS Database
Administration. The FABHURG1 unload utility can be used as a replacement of the
IMS HD Reorganization Unload utility (DFSURGU0) in the fallback scenario. Note,
however, the following considerations:
v FABHURG1 can be used for the fallback unload of PHDAM or PHIDAM
databases.
v FABHURG1 does not support the fallback unload of partitioned secondary
indexes (PSINDEXs). PSINDEXs must be unloaded by the IMS HD
Reorganization Unload utility.
Subsections:
v “Requirements”
v “JCL example for fallback unload”
Requirements
Assume that the database is a PHDAM database and consists of three data set
groups.
The DBRC=Y option must be specified on the EXEC statement. The unloaded data
set is defined by the SYSUT2 DD statement. You do not need to code any DD
statements for database data sets, because all data sets are dynamically allocated
by HSSR Engine.
The FALLBACK control statement is specified in the SYSIN DD, which indicates
that this is a fallback unload.
The following topics discuss the problems you might encounter with corrupted
databases, and the options available for repairing the databases.
Topics:
v “Rules for unloading corrupted databases” on page 152
v “Using the SKERROR option for FABHURG1” on page 155
v “Using the pointer bypass option for FABHFSU” on page 156
Before unloading corrupted databases, learn the differences between the two
methods to determine which method to use.
Subsections:
v “DIAGG option for FABHFSU and FABHURG1”
v “Sequence check option and sequence error option for FABHFSU” on page 153
v “KEYCHECK GG option for FABHURG1” on page 153
v “Before using the new database” on page 153
v “What you must do after a "crash"” on page 153
v “Databases involved in logical relationships” on page 154
The DIAGG option provides the following diagnosis information (in addition to
technical information addressing highly skilled database specialists):
v Information about the last segment that was successfully unloaded before
encountering the database error:
– The segment name
– The concatenated PCB key feedback area
v Information about the first segment that was successfully unloaded after the
database error:
– The segment name
– The concatenated PCB key feedback area
– The segment data
v The name of those segment types, for which some segment occurrences might be
missing on the unloaded data set.
The preceding information can be used to locate the error and to see which
segment types might be missing from a segment. Using this information, you can
then determine which lost database segments should be inserted after a successful
reload into the database.
For each incorrect pointer, the DIAGG option might write more than 4000 print
lines on the HSSRTRAC data set. To avoid S722 or SB37 system abends, allocate
the HSSRTRAC data set on a tape or allow the job to produce a large number of
printed lines. (One example would be through the use of a OUTLIM JCL
parameter.)
For FABHFSU, it is recommended that you specify (on the DBD control statement)
the sequence check option as Y and the sequence error option as B. With these
options, HSSR Engine performs more extensive error-checking while unloading a
corrupted database.
When the default sequence error option of A is used, the unloaded database data
set might contain segments that are not in sequence. This can prevent a successful
reload.
For FABHURG1, the SKERROR option requires that you consider activating the
KEYCHECK GG option. The KEYCHECK GG option lets HSSR Engine perform
more error-checking while unloading a corrupted database. However, do not use
the KEYCHECK GG option if you are going to reload the unloaded database and if
you do not want to lose any segments in the original database.
Before using the new database created through the unload and reload process,
determine how many segments were skipped or lost during the unloading process.
By combining information about the number of skipped or lost segments with the
DIAGG key feedback information, you can decide whether the new database is
acceptable. Be sure that you run the HD Pointer Checker utility on the new
database to confirm that the new database is free of IMS technical errors.
After a "crash," the corrupted databases should be recovered with standard IMS
recovery procedures such as Emergency Restart, Database Backout, and Database
Recovery utility. An IMS High Performance Unload's unload utility with the
SKERROR or pointer bypass option should be run only after these recovery
procedures are completed.
Neither the SKERROR nor pointer bypass option copes with DASD I/O errors. The
use of either option requires a prior recovery from DASD I/O errors through
standard recovery procedures.
To unload a corrupted database, you can use the following JCL. The unloaded data
set is defined by the SYSUT2 DD statement; the database that is unloaded is
defined by the HDAM DD statement. HSSROPT options SKERROR, KEYCHECK
GG, and DIAGG are specified. OUTLIM is specified on the HSSRTRAC DD
statement.
// EXEC FABHULU,MBR=FABHURG1,DBD=USERDBD
//HSSROPT DD *
SKERROR 10
KEYCHECK GG
DIAGG
/*
//HDAM DD DSN=TESTDS.HDAM,DISP=SHR
//SYSPRINT DD SYSOUT=A
//SYSUT2 DD DSN=TESTDS.HDUNLD,DISP=(,CATLG),UNIT=TAPE,
// VOL=SER=xxxxxx
//HSSRTRAC DD SYSOUT=A,OUTLIM=10000000
You can select either one of two available options for pointer bypass option. Both
options enable FABHFSU to continue processing a database that contains bad
pointers. Because most of the data is good (and if it is possible to obtain an unload
of the database), its reconstruction can be aided by reorganizing the database.
The logic invoked by this option treats an incorrect pointer as X'00000000' (end of
chain), and FABHFSU proceeds with the next logical pointer path. This means that
one or more segments are bypassed and are not contained in any output data set.
Option 1
Option 2
To unload a corrupted database by using FABHFSU in the standard mode, you can
use the JCL shown in the following figure. The FABHDLI procedure used specifies
the PSB named OUT2PSB.
The OUT1 and OUT2 DD statements define two unloaded data sets. The database
that is unloaded is defined by the SKILHDAM DD statement.
The CARDIN PSB statements specify the two output data sets to FABHFSU. OUT1
specifies a data set unloaded in the IMS HD Reorganization Unload format.
Asterisk (*) indicates that all segments defined in the DBD are unloaded. OUT2
specifies the VB-format output data set. Only segment types defined in the first DB
PCB of the PSB OUT2PSB for the SKILLINV database are unloaded. A user exit
routine, OUT2EXIT, is specified.
// EXEC FABHDLI,MBR=FABHFSU,PSB=OUT2PSB
//CARDIN DD *
DBDSKILLINV YAY 1
PSB* OUT1 UL
PSBOUT2PSB OUT2 VBOUT2EXIT
END
/*
//SKILHDAM DD DSN=SKIL.INV.DB,DISP=SHR
//PRNTOUT DD SYSOUT=A
//OUT1 DD DSN=TESTDS.UNLOAD1,DISP=(,KEEP),UNIT=TAPE
//OUT2 DD DSN=TESTDS.UNLOAD2,DISP=(,KEEP),UNIT=TAPE
FABHFSU provides this facility for the compatibility with JCL written for FSU II.
The following topics describe how to use the Parallel Scan Facility of FABHFSU.
Topics:
v “Overview of Parallel Scan Facility” on page 160
v “Unloading a database with FABHFSU in PSF mode” on page 161
v “FABHPSFM program” on page 163
v “FABHPSFC program” on page 169
v “FABHFSU program (PSF mode)” on page 184
v “FABHPSFS program” on page 189
v “JCL examples for FABHFSU PSF mode” on page 198
A PSF run results in multiple output data sets that must be combined to represent
the output of a complete scan. PSF supports only HDAM and HIDAM databases;
PHDAM and PHIDAM databases are not supported.
The FABHFSU utility in PSF mode consists of the following four programs:
FABHPSFM
Provides assistance to the user in determining how to divide the database
into portions to be scanned by PSF phases.
FABHPSFC
Processes the control statements that define the scan and builds a scan
control data set that is used by the remaining functions to obtain and
record information about the scan.
FABHFSU
In the PSF mode, FABHFSU performs individual scan phases, which can
run separately or concurrently to unload a multivolume database. In the
PSF mode, the information is obtained from the scan control data set
created by FABHPSFC.
FABHPSFS
Creates summarized statistics and data set concatenation sequences. For an
unload format, prepares the header and trailer records required. This is the
last program to be run.
Because all facilities provided for a typical FABHFSU run are available for
individual PSF scan phases, PSF can benefit as follows:
v Earlier detection of severe errors that must not be bypassed. This is especially
advantageous when the error is toward the end of the database or if there are
multiple errors.
v Reduced recovery time from database errors. This is possible because only the
affected scan phases need to be rerun. Therefore, other scan phases (even those
in which the beginning node is located beyond the point of error in the
database) can continue to run while the errors are being analyzed or corrected.
v Reduced recovery time from a permanent write error at unload time or a
permanent read error at reload time. This is possible because only affected scan
phases need to be rerun. If dual outputs are being created, this would not be
relevant unless both formats encountered permanent errors or damages.
Restrictions
The restrictions that apply to FABHFSU in standard mode also apply to FABHFSU
in PSF mode. For those restrictions , see “Restrictions for IMS High Performance
Unload” on page 29. Additionally, FABHFSU does not support the unloading of an
HISAM database under PSF mode.
Procedure
1. Optional: Run the FABHPSFM program as an MVS batch job to obtain
information about the database extents.
This step is optional. The FABHPSFM program is provided as an aid in
determining phase limit definitions.
2. Run the FABHPSFC program as an MVS batch job to define the scan
parameters and the phase data in the scan control data set.
3. Run the specified number of FABHFSU jobs or job steps in any sequence or,
preferably, in parallel.
Specify the number of FABHFSU jobs to run as an input for FABHFSU.
4. Run the FABHPSFS program as an MVS batch job to obtain the summarized
statistics, output data set concatenation sequences, and header and trailer data
set (if applicable).
Example
The following figure illustrates the steps that are necessary to run a 3-phase PSF
run.
3A
FABHFSU
Phase 1 2
FABHPSFC
UL output Phase 1
statistics
UL output Phase 2 4
statistics FABHPSFS
3C
FABHFSU
Phase 3
UL trailer Summary
statistics
UL output Phase 3
statistics
UL header
Parallel processing
The statistics generated by each phase in step 3 apply only to the portion of the
data set processed by that phase. The summarized statistics generated in step 4
apply to the entire database. Step 4 usually does not run until all of the step 3
phases have completed, but it does provide a status report indicating where the
individual phases stand. Step 4 can be appended to each step 3 phase as a
conditional job step such that it runs only when the last phase completes.
FABHPSFM supplies the following extent information for the primary data set
group of an HDAM or HIDAM database:
v Volume serial number of each extent
v Starting relative block for each extent
v Number of relative blocks for each extent
v High allocated block
v First overflow block (HDAM only)
v High used CI (VSAM only)
You can specify the following control statements for the FABHPSFM CARDIN data
set.
Table 20. FABHPSFM control statements
Control statements Function Mode
MAP Directs the FABHPSFM program. PSF
END Specifies the end of FABHPSFM CARDIN control PSF
statements.
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as a member of a partitioned data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the MAP keyword to identify the MAP control statement.
4 Code the database name that describes the physical database to be
scanned. This required 8-character field is left-aligned with trailing blanks.
The DBD must specify ACCESS=HDAM or HIDAM.
12 This 8-character entry dlidbd specifies the database name that describes the
primary index of the HIDAM database. This entry is required for HIDAM
databases.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
END
Position
Description
Format
The format is 133-byte fixed-length records. When the block size is coded in the
JCL, the block size must be a multiple of 133.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
MAPMSHDP
END
The following figure shows an example of the report for an HDAM database.
DDNAME = MSHDP
DDNAME = ESDSDATA
VOL
SER EXTENT REL CI NODE POINT KEY CANDIDATES
IMS31B 0 0 KEY1004000
IMS31B 0 0 KEY106C000
IMS31B 0 0 KEY1084000
IMS31B 0 0 KEY113C000
IMS31B 0 0 KEY1174000
IMS31B 0 0 KEY120C000
IMS31B 0 0 KEY1274000
IMS31B 0 0 KEY129C000
IMS31B 0 0 KEY1344000
IMS31B 0 0 KEY138C000
IMS31B 0 0 KEY1414000
IMS31B 0 0 KEY147C000
IMS31B 0 0 KEY1484000
For an HDAM database without a secondary index, you should pick the relative
block numbers as node point values from the preceding information. Normally the
relative block numbers of the lowest extent of each new volume (beyond the first
volume and up to the volume that contains the beginning of the overflow area)
should be specified as node points.
For a HIDAM database, you can specify the key value from NODE POINT KEY
CANDIDATES as a node point value. The number of key candidates listed here
depends on how you specify the options of the positions 23, 24 - 31, and 32 - 33 in
the MAP control statement.
FABHPSFC analyzes the input, creates the necessary information in the scan
control data set, and reports the scan specifications and the limits of the indicated
phases.
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as a member of a partitioned data set.
The CTL control statement is required to run FABHPSFC for the PSF. Only one
CTL control statement is used.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CTLpsname yyyydddxxwcnnh
Position
Description
The DBD control statement specified in FABHPSFC CARDIN data set applies to all
phases of FABHFSU.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the DBD keyword to identify the DBD control statement.
4 Code the DBD name.
Code the name of the DBD that describes the physical database to be
scanned. This required 8-character field must be left-aligned with trailing
blanks. The DBD must specify ACCESS=HDAM, HIDAM, PHDAM,
PHIDAM, HISAM, or SHISAM.
12 Code the index name.
The 8-character entry is optional and valid only for running in the ULU
region. This entry specifies the name of index DBD that is either the
primary index of the HIDAM database or a secondary index of the
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
END
Position
Description
1 Code the END keyword to identify the END statement as the last
statement of the CARDIN data set.
| For information about parallel migration unload, see “Parallel migration unload”
| on page 145.
| Note: The key value in the n-th NPT control statement specifies the low key of
| (n+1)-th unload phase. For parallel migration unload, specify the high key
| value of each HALDB partition in the HKY control statement.
| The HKY control statement must immediately follow the CTL control statement. If
| no HKY or NPT control statements are provided, the entire database will be
| scanned in a single phase.
|
| 0........1.........2.........3.........4.........5.........6.........7.........8
| 12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
| HKYt’keyvalue’
| HKYt’keyvalue.......................................
| ...............................................................................’
|
|
| Position
| Description
| 1 Code the HKY keyword to identify the HKY control statement.
| 4 This required 1-character entry t identifies the value type. It indicates the
| format of the node point value field. Use one of the following keywords:
| Keyword
| Description
| Note: If you are using a Data Conversion exit for the database and you
| want to specify a node point value by using a key value (that is,
| setting a node point value type of 'C' or 'X'), you must specify the
| key value in the stored form, not in the application form.
For an indexed database, the node points are specified as keys. For an HDAM
database with no secondary index, the node points are defined as relative block
numbers of the CIs or blocks in the root addressable area.
The NPT control statement must immediately follow the CTL control statement. If
no NPT control statements are provided, the entire database will be scanned in a
single phase. One or more NPT control statements can optionally be used.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
NPTtnodepointvalue
NPTtllkeyvalue
Position
Description
1 Code the NPT keyword to identify the NPT control statement.
4 This required 1-character entry t identifies the node point value type. It
indicates the format of the node point value field. Use one of the following
keywords:
Keyword
Description
R Indicates that the node point value field contains the relative block
number of the CI or block.
C Indicates that the node point value field contains keys in character
format.
X Indicates that the node point value field contains keys in
hexadecimal display format.
Note: If you are using a Data Conversion exit for the database and you want to
specify a node point value by using a key value—that is, setting a node
point value type of 'C' or 'X'—you must specify the key value in the stored
form, not in the application form.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the PSB keyword to identify the PSB control statement.
4-11 Code the PSB name.
The 8-character field contains either an asterisk (*) or the name of the PSB
that is coded on the EXEC statement of the JCL.
Value Description
* An asterisk (*) on this field indicates that all segments that are
described in the DBD are to be processed for this output data set.
When running FABHFSU in ULU region, specify this value.
PSB_name
If the name of the PSB that is coded on the EXEC statement is
specified, it indicates that segment types passed to the output
| Restrictions:
| v This format can be specified only in a ULU region.
| v If PTR=H or PTR=HB is defined as the parent
| segment of virtual logical child, the database is not
| supported.
| v Migration unload of a secondary index or HISAM
| database is not supported.
| v When MI format is selected, two or more PSB
| control statements cannot be specified.
| VB Variable-length-blocked data set of the selected segments (one
segment per logical record)
Note: If a user exit routine is specified and one or more partitions are in
the HALDB OLR cursor-active status, FABHFSU ends abnormally.
32 Code this field to activate the segment modification option.
The 1-character entry m indicates whether segments are to be modified by
the user exit routine.
Specify one of the following keywords:
Keyword
Description
Y Indicates that segments are to be modified by the user exit.
This option does not support a change of the database segment
length. If you change the segment length with the Y option, the
result is unpredictable. For details, see “Modifying segments in
user exits” on page 92.
E Indicates that segments are to be modified by the user exit.
This option supports a change of the database segment length. The
option is valid only for HDAM, HIDAM, PHDAM, and PHIDAM
databases.
An extra 100-byte field is added at the end of the segment data
that is passed to the exit routine. This extra field can be used for
segment extension. If the default length of this extra field is shorter
than you require, you can change the length of the extra field by
specifying the length in column 41 of the same PSB statement.
If this option has been selected, any request to activate the
compare option used for problem determination is deactivated.
For details, see “Modifying segments in user exits” on page 92.
N | blank
Indicates that segments are not to be modified by the user exit
(default).
33 Code this field to activate the concatenated key option.
The 1-character entry k indicates whether the fully concatenated key of
each segment is to be built and passed to the exit routine.
Specify one of the following keywords:
Keyword
Description
Notes:
v If the resulting length of the segment editing work area is more
than 32,767 bytes long, 32,767 is used as the length of the work
area.
v If option 'E' is not specified in column 32, the value specified on
this field is ignored.
Format
The format is 133-byte fixed-length records. When the block size is coded in the
JCL, the block size must be a multiple of 133.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DBDMSHDP NB 999 2
CTLSCANCNTL8936505NN
NPTR810
NPTR1620
NPTR3240
NPTR4860
PSB* OUT1 UL NNNN
END
*** SCAN CONTROL SPECIFICATIONS *** *** FORMAT CONTROL SPECIFICATIONS ***
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for FABHFSU. In
PSF mode, CNTLDD DD statement is also required.
Table 24. FABHFSU DD statements for PSF mode
DDNAME Use Format Need
CARDIN Input LRECL=80 Optional
PRNTOUT Output LRECL=133 Required
ddname1 Output RECFM=VB Required
CNTLDD Input and Output LRECL=80 Required for PSF
The functions of CARDIN DD, PRNTOUT DD, and ddname1 DD are the same in
the FABHFSU standard mode and in the PSF mode. See “FABHFSU JCL
requirements” on page 72 for details.
CNTLDD DD
This DD statement defines the input and output scan control data set,
which has the following format:
//CNTLDD DD DSN=fsuscancntl,DISP=SHR
DSN is the user data set name assigned when scan control data set is
created by FABHPSFC.
Related reference:
“JCL examples for FABHFSU PSF mode” on page 198
When running in the PSF mode, the CARDIN data set contains the PSC and the
END control statements. The DEC and GOT control statements can optionally be
used in the PSF mode, but the DBD, PSB, BLM, ELM, PARTITION, and SEGSTAT
control statements are not allowed as input to PSF.
The following table lists the FABHFSU control statements used in the PSF mode.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DECd
Position
Description
1 Code the DEC keyword to activate the decompress option.
4 The 1-character entry d specifies whether compressed segments are
decompressed by FABHFSU. This entry is required.
Use one of the following keywords:
Keyword
Description
Y Compressed segments are decompressed. Y is the default.
N Compressed segments are not decompressed.
Code N only when you want to have compressed segments in the
output data sets.
If an unloaded data set has been created by specifying this option
for a database that contains a compressed segment, that data set is
not compatible with the unloaded data set that is created by the
IMS HD Reorganization Unload utility. You cannot reload such an
unloaded data set by using the IMS HD Reorganization Reload
utility (DFSURGL0), but you can reload it by using IMS High
Performance Load (Load utility or PSSR utility) or the IPR Reload
utility.
Notes:
v If there is a segment type for which a Segment Edit/Compression exit
routine is specified and the use of a Data Conversion exit is designated,
the DECN option is ignored and the process continues with DECY.
v If the DECN option is specified and one or more partitions of PHDAM
or PHIDAM are in the HALDB OLR cursor-active status, FABHFSU ends
abnormally.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
END
Position
Description
1 Code the END keyword to identify the END statement as the last
statement of the CARDIN data set.
If the GOT control statement is specified, FABHFSU ignores the PROCOPT of the
PCB statement in PSBGEN and forces PROCOPT=GOT to be used.
The GOT control statement is effective only when DBRC is inactive for the
FABHFSU job.
Note: For more information about the PROCOPT=GOT support, see “Support of
the processing options GON and GOT” on page 120.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GOT
Position
Description
1 Code the GOT keyword to activate the support for PROCOPT=GOT.
PSF mode differs from standard mode in that the data required by FABHFSU is
obtained from the scan control data set instead of the CARDIN data set. Make sure
that you have a CNTLDD DD statement and refer to the PSF operating
instructions.
Position
Description
1 Code the PSC keyword to activate the PSF mode to unload large databases
using multiple scans.
4 Code the name of the scan control data set as specified in the CTL control
statement as input for FABHPSFC, which creates the scan control data set.
This name is defined in the CNTLDD DD statement, and is used in the
entire PSF mode. This 8-character entry is left-aligned with trailing blanks.
12 Code the database name as specified in the DBD control statement as input
for FABHPSFC, which creates the scan control data set. This required
8-character entry is left-aligned with trailing blanks.
20 The required 2-digit entry xx specifies the expected number of scan phases
in the PSF job. This value is the same as the value specified in the CTL
control statement as input for FABHPSFC, which creates the scan control
data set.
22 The required 2-digit entry nn specifies the phase number for this particular
scan phase. This value can range from 01 to the expected number of scan
phases specified in positions 20–21 of this statement.
24 The 1-character entry b allows overriding of the pointer bypass option
specified in the DBD control statement as input for FABHPSFC, which
creates the scan control data set. This can be specified for a particular scan
phase or all scan phases.
Use one of the following keywords:
Keyword
Description
Blank This entry accepts the pointer bypass option specified in the scan
control data set.
1 The entry invokes the pointer bypass option.
2 The entry forces FABHFSU to use the index, rather than the root
twin forward pointers, to unload an HIDAM database.
25 The 1-character entry r allows a particular scan phase to be rerun
regardless of prior completion status. Use one of the following keywords:
Keyword
Description
Y Rerun the scan phase.
N|blank
Do not rerun the scan phase (default).
26 The 7-digit entry yyyyddd allows the Julian date to be overridden. yyyy is
the year and ddd is the day of the year. This value overrides the value
specified in the CTL control statement as input for FABHPSFC, which
creates the scan control data set.
The reports that are generated in the FABHFSU PSF mode are the same as the
reports that are generated in the FABHFSU standard mode. See “FABHFSU output:
PRNTOUT output data set” on page 86 for more information about these reports.
DSN is the user data set name assigned when the scan control data set is
created by FABHPSFS.
ddname5 DD
This DD statement defines the data set that contains the trailer record of
the unloaded database. One DD statement is required for each PSB control
statement in the CARDIN DD statement defined by FABHPSFS. (The name
of ddname5 must be the same as the one specified in the ddname1 field of
the PSB control statement.)
ddname6 DD
This DD statement defines the data set that contains the header record of
the unloaded database. When the separate header record option is
specified on the CTL control statement of CARDIN DD statement defined
by FABHPSFS, this DD statement is required. One DD statement is
required for each PSB control statement in the CARDIN DD statement
The STATUS option, which can be run anytime after the FABHPSFC program has
run, reports the current status of the scan from the scan control data set.
The "wrap-up" function has three options, normal (the default), RERUN, and
FORCE.
Normal wrap-up must be run after all phases have completed (if they have not, it
defaults to a STATUS run). It can be run only once and ends abnormally if run
multiple times. It produces the summarized statistics for the entire scan. It also
produces for each output format a concatenation sequence of the output data sets
created by each phase. If any of the output formats is called for an Unload (UL)
output, FABHPSFS creates one additional output data set that contains the "Trailer
Label" required by HD Reorganization Reload and optionally another data set
containing a separate "Header Label." All these data sets must be concatenated in
the proper sequence by JCL for the input of any following job (that is, IMS HD
Reorganization Reload).
The RERUN option can be used to re-create the output of the normal wrap-up
function after a normal wrap-up has been run.
The FORCE option can be used to force normal wrap-up when one or more phases
are not intended to be run. The following table lists the FABHPSFS control
statements.
Table 27. FABHPSFS control statements
Control statements Function Mode
SUM Directs the FABHPSFS program. PSF
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as a member of a partitioned data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the SUM keyword to identify the SUM control statement.
4 Code a 1- to 8-character name for the parallel scan operation as specified in
the CTL control statement as input for FABHPSFC.
12 This required 8-character entry dbdname indicates the database name as
specified in the DBD control statement as input for FABHPSFC.
20 This 6-character entry opt1 determines the following optional keywords:
Keyword
Description
blank Normal wrap-up function runs and the full summary report is
provided (default). This option must be run after all phases have
been completed.
STATUS
Only the current status of the scan is reported. This option can be
run at anytime after the FABHPSFC program has run.
RERUN
The full summary report is re-created. The unloaded trailer data set
can also be re-created as specified in position 26, 27, or 28.
FORCE
This option allows only some of the PSF phases are to be run.
Note: When this option is selected, and when the first phase is not
to be run, the "Separate Header" option is required to be
used for reload. (Without specifying the "Separate Header"
option, the header is not created when the first phase is not
run.)
26 The 1-character entry 1 is applicable only if the RERUN option is specified
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
END
Position
Description
1 Code the END keyword to identify the END statement as the last
statement of the CARDIN data set.
Format
The format is 133-byte fixed-length records. When the block size is coded in the
JCL, the block size must be a multiple of 133.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
SUMSCANCNTLMSHDP
END
*** SCAN CONTROL SPECIFICATIONS *** *** FORMAT CONTROL SPECIFICATIONS ***
PSB SEGMENT SEGMENT TOTAL TOTAL SEQUENCE MAXIMUM MAXIMUM AVERAGE AVERAGE
NAME NAME LEVEL RETRIEVED OUTPUT ERRORS TWINS CHILDREN TWINS CHILDLEN
1. IMS31B.SCANCNTL.UL01.PHASE01
2. IMS31B.SCANCNTL.UL01.PHASE02
3. IMS31B.SCANCNTL.UL01.PHASE03
4. IMS31B.SCANCNTL.UL01.PHASE04
5. IMS31B.SCANCNTL.UL01.PHASE05
6. IMS31B.SCANCNTL.UL01.TRAILER
IMS HIGH PERFORMANCE UNLOAD "FABHFSU PSF SUMMARY REPORT" PAGE: 4
5655-E06 DATE: 06/01/2012 TIME: 13.09.36 FABHPSFS - V1.R2
Page 1 of this report contains the summary information about the parameters that
were specified on the CARDIN control statements.
SCAN CONTROL SPECIFICATIONS
Shows specifications or defaults from CTL and DBD control statements
FORMAT CONTROL SPECIFICATIONS
Shows specifications or defaults from PSB control statement
Page 2 of this report provides statistics for each sensitive segment in the database.
PSB NAME
Name of PSB
SEGMENT NAME
Name of segment
SEGMENT LEVEL
Level of segment
TOTAL RETRIEVED
This count shows the number of each segment type retrieved. This count
does not include segments bypassed due to sequence errors.
In this example, three individual parallel scan phases are utilized to unload an
HDAM database. In each phase, FABHFSU scans and unloads only a predefined
portion of the database controlled by a scan control data set.
Step 1 gets a primary data set extent information of the database. Based on the
information, step 2 creates a scan control data set to define scan parameters and
the number of parallel scan phases. Step 4 generates a set of summarized statistics
and concatenation sequence of the output data sets unloaded by each parallel scan
phase. Step 4 creates two data sets that contain "Header record" and "Trailer
record" required by the IMS HD Reorganization Reload utility.
Subsections:
v “Step 1: Example of FABHPSFM”
v “Step 2: Example of FABHPSFC”
v “Steps 3A, 3B, 3C: Example of FABHFSU” on page 199
v “Step 4: Example of FABHPSFS” on page 200
The TESTDB DD statement identifies the primary data set of the DBD specified by
the MAP control statement in the CARDIN DD statement. The extent information
of the primary data set is reported to SYSOUT class A defined by the PRNTOUT
DD statement. This information helps to determine the phase limit definition in
step 2.
//*-----------------------------------------------------------------------------
//* PSF STEP 1 - GET DATABASE EXTENTS INFORMATION
//*-----------------------------------------------------------------------------
//FSUMAP EXEC PGM=FABHPSFM
//IMS DD DSN=IMSVS.DBDLIB,DISP=SHR
//TESTDB DD DSN=TESTDS.HDAM.VSAM,DISP=OLD
//PRNTOUT DD SYSOUT=A
//SYSUDUMP DD SYSOUT=A
//CARDIN DD *
MAPTESTDB
END
/*
The CNTLDD DD statement identifies the scan control data set created by this job
step.
The CARDIN DBD control statement specifies the DBD name of the database.
The CARDIN CTL control statement defines a parallel scan name (SCANCNTL) for
use in getting access to the scan control data set; defines the Julian date as the last
day of 2000; and sets the number of parallel scan phases to 03. Y in column 22
Two CARDIN NPT control statements define the scan limit of each parallel scan
phases. The first phase scans the database from the beginning of the database to
the relative CI number 1000. The second phase scans the database from the relative
CI number 1001 to the number 4000, and the third phase scans it from the number
4001 to the end of the database.
The CARDIN PSB control statement specifies the name of the DD statement
(OUTDATA) that defines the data set to be created.
//*-----------------------------------------------------------------------------
//* PSF STEP 2 - CREATE SCAN CONTROL DATA SET
//* ----------------------------------------------------------------------------
//FSUCTRL EXEC PGM=FABHPSFC
//IMS DD DSN=IMSVS.DBDLIB,DISP=SHR
//CNTLDD DD DSN=TESTDS.CONTROL,DISP=(NEW,CATLG),
// UNIT=SYSDA,VOL=SER=TESTVOL,SPACE=(TRK,(4,1)),
// DCB=(BLKSIZE=4096,LRECL=4092,RECFM=VB)
//PRNTOUT DD SYSOUT=A
//SYSUDUMP DD SYSOUT=A
//CARDIN DD *
DBDTESTDB
CTLSCANCNTL200036603NY08Y
NPTR1001
NPTR4001
PSB* OUTDATA 00UL
END
/*
The CARDIN PSC control statement specifies that there are three expected scan
phases. A portion of the database with the dbdname TESTDB is unloaded in this
scan phase. The scan control data set created by FABHPSFC is named SCANCNTL.
The OUTDATA DD statement specifies a data set on which this portion of the IMS
database is unloaded.
Two other job steps in PSF mode would be required to complete the unloading of
this database. The JCL for the job steps is the same, except for modifying the PSC
control statement and the ddname DD (OUTDATA) statement to specify parameters
required for phase 2 and phase 3.
The XHTDATA DD statement defines a data set that contains the header record of
the unloaded data sets. The name of this DD statement must begin with 'XH'.
The OUTDATA DD statement defines a data set that contains the trailer record of
the unloaded data sets. The name of this DD statement (OUTDATA) must be equal
to ddname1 of CARDIN PSB control statement in step 2.
The CNTLDD DD statement identifies the scan control data set. The CARDIN
SUM control statement specifies the parallel scan name (SCANCNTL) to access the
scan control data set.
//*-----------------------------------------------------------------------------
//* PSF STEP 4 - SUMMARIZE STATISTICS AND DATA SETS SEQUENCE
//* ----------------------------------------------------------------------------
When you reload the unloaded database data sets with the IMS HD
Reorganization Reload utility or an equivalent program, you must specify the
concatenation of the header data set, unloaded data sets, and trailer data set on the
DFSUINPT DD statement. The sequence of the concatenation is reported in the
PRNTOUT data set of step 4. The following is an example to specify DD
statements:
Topics:
v “Overview of HSSROPT control statements” on page 204
v “APISET control statement” on page 207
v “BLDLPCK control statement” on page 208
v “BUF control statement” on page 209
v “BUTR control statement” on page 210
v “BYINDEX control statement” on page 211
v “CABSTAT control statement” on page 212
v “CALLSTAT control statement” on page 213
v “CO control statement” on page 214
v “DATXEXIT control statement” on page 215
v “DBDL1 control statement” on page 216
v “DBSTATS control statement” on page 217
v “DIAGG control statement” on page 218
v “GOTRETRY control statement” on page 220
v “HPIO control statement” on page 221
v “HSSRDBD control statement” on page 222
v “HSSRPCB control statement” on page 223
v “KEYCHECK control statement” on page 224
v “LOUT control statement” on page 225
v “LSR control statement” on page 226
v “NOFIX control statement” on page 227
v “NOVSAMOPT control statement” on page 228
v “PARTINFO control statement” on page 229
v “PCBLIST control statement” on page 230
v “RETRY control statement” on page 231
v “RTEXIT control statement” on page 232
v “SKERROR control statement” on page 233
v “SKIPVLC control statement” on page 234
v “TRDB control statement” on page 235
v “TRHC control statement” on page 236
v “TRXC control statement” on page 237
The options that can be specified for the HSSROPT data set include:
v Options for call analyzer and call handler components of HSSR Engine
v Options for buffer handler component of HSSR Engine
v Options for reports and outputs produced by HSSR Engine
v Options for trace function provided by HSSR Engine
v Options for problem determination
You can tune HSSR Engine's Chained Anticipatory Buffering (CAB) buffer handler
by coding control statements in the HSSRCABP data set. For the details, see
“Chained Anticipatory Buffer handler (CAB)” on page 274.
You can specify HSSRLDEF DD to change the range of lengths of database records
in Database Tuning Statistics. For the details, see “HSSRLDEF input data set for
Database Tuning Statistics” on page 417.
Subsections:
v “Summary of HSSROPT control statements”
v “Syntax of HSSROPT control statements” on page 206
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
APISET 1
2
3
Position
Description
1 Code the APISET keyword to specify a set of HSSR call types.
8 Code 1, 2, or 3. For details about what each APISET supports, see “DL/I
calls supported by each API set” on page 110.
Notes:
v If you specify APISET 3, you cannot specify any of the following control
statements: BYINDEX, DBSTATS, KEYCHECK, or SKERROR.
v If you specify APISET 3, the BLDLPCK control statement is always
activated.
v If you specify APISET 3, the disposition of the database data sets must
be DISP=SHR.
Tip: The default of this control statement can be changed by replacing the default
option table (FABHOPT). For details, see Chapter 19, “Site default options,”
on page 349.
By default, for a logical child segment with a logical parent's concatenated key
(LPCK) that is specified as virtual on the SEGM statement of the DBD, HSSR call
handler returns blanks in the I/O area that would usually hold the LPCK. For
compatibility with FSU II, FABHFSU returns binary zeros to the I/O area instead
of blanks. You can use the BLDLPCK control statement to have HSSR call handler
build the LPCK and return it in the I/O area.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
BLDLPCK
Position
Description
1 Code the BLDLPCK keyword to activate the BLDLPCK option.
Notes:
v If the LPCK is defined as physical (that is, if the LPCK is physically
stored as a part of the logical child segment in the database), HSSR call
handler ignores this option.
v If the BLDLPCK statement is specified and there are a large number of
virtual LPCKs in the database, the performance of IMS High
Performance Unload could be degraded. The BLDLPCK statement is
necessary, however, if the control statement for the Pre-reorganization
utility specifies that the DBIL for the logical child database is to be
unloaded by FABHURG1 or FABHFSU. If the DBIL is specified for the
database, symbolic keys in the unloaded database are used to match up
logical children and parents.
v If the BLDLPCK statement is specified for a database that has a logical
child whose LPCK is defined as virtual, the database data sets for all
logical parent databases of such logical children must be specified on the
JCL. If the DD statement for one of logical parent databases is not
specified, HSSR call handler returns the status code of AI to the
application program when the logical child segment is processed, and
the part of the I/O area that should contain the LPCK is filled with
blanks. FABHURG1 and FABHFSU issue the message FABH0560E, and
the programs end processing.
v The BLDLPCK statement is not supported for HISAM databases.
v The BLDLPCK statement is ignored for a PHDAM or PHIDAM database.
v The BLDLPCK statement is ignored if either MIGRATE or FALLBACK
control statement is specified in the SYSIN data set for a FABHURG1 job.
v If APISET 3 is specified, the BLDLPCK statement is ignored.
The BB buffer handler allocates a separate buffer pool for each data set group of
the database. It also allocates a certain number of buffers to each of these buffer
pools—either the default or a specified number.
The default number of buffers depends on how the PCB is defined as an HSSR
PCB. If an HSSR PCB is defined by use of either an HSSRPCB or an HSSRDBD
control statement, and the value to the KEYLEN keyword for the PCB is less than
200, BB allocates six basic buffers for each data set as the default. If the KEYLEN
value for the PCB is greater than 200, the number of basic buffers to be allocated is
determined as explained in “Number of Basic Buffers for an HSSR PCB” on page
485.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the BUF keyword to specify a database for which the BB buffer
handler is to be used and to override the default number of buffers for BB.
5 Code the 8-byte dbdname to specify the database for which the default
number of buffers will be overridden (if the database name is not 8 bytes
long, include trailing blanks).
13 Add a comma (,) to separate the database name from the number of
buffers.
14 nbrbuffers is the number of buffers that you want BB to allocate for a buffer
pool.
This trace, which is written to the HSSRBUTR data set, can be used as input to
FABHBSIM, the HSSR Buffer Handler Simulation utility.
Note: For instructions for using the buffer handler simulation utility, see
Chapter 17, “Buffer handler simulation utility (FABHBSIM),” on page 317.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
BUTR
Position
Description
1 Code the BUTR keyword to instruct HSSR Engine to create a file that
contains a machine-readable trace of internal calls to the buffer handler.
If the root segments have no twin backward or hierarchical backward pointer, the
BYINDEX control statement has no effect.
A secondary index can also be used for HIDAM or HDAM root segments.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
BYINDEX
BYINDEX index
Position
Description
1 Code the BYINDEX keyword to activate the BYINDEX option.
9 Specifies a secondary index of the HIDAM or HDAM database if you want
the root segments to be retrieved in the secondary index sequence. The
target segment of the index must be the root segment. For details, see
“Considerations for using a secondary index” on page 35.
Restrictions:
v If APISET 3 is specified, this statement cannot be specified.
v If one or more partitions of PHDAM or PHIDAM are in the
HALDB OLR cursor-active status, BYINDEX=YES is ignored.
v FABHFSU ignores this control statement. Specify the index name
in the DBD control statement in the CARDIN data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CABSTAT NO
YES
Position
Description
1 Code the CABSTAT keyword to control the printing of the CAB statistics.
9 Specify one of the following keywords:
Keyword
Description
NO Requests to limit CAB statistics to the main summary report. NO is
the default.
YES Requests the printing of the detailed CAB statistics report on the
HSSRSTAT data set.
Tip: This default can be changed by replacing the default option table (FABHOPT).
See Chapter 19, “Site default options,” on page 349.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CALLSTAT PART
Position
Description
1 Code the CALLSTAT keyword.
10 Code the PART keyword to print the partition-wide database call statistics
reports for each partition that was processed and from which at least one
segment was retrieved.
Restrictions: In any one of the following cases, the partition-wide statistics are not
printed:
v If the CALLSTAT statement is specified for a nonpartitioned
database.
v If the PART keyword is not specified.
v If a keyword other than PART is specified.
The compare (CO) control statement causes each HSSR call issued by the
application program to be preceded by a DL/I call issued with the same SSA as
the HSSR call. The resultant I/O areas and PCBs of both calls are compared
internally. If a mismatch occurs, the I/O areas and the PCBs are printed on the
HSSRTRAC data set. HSSR Engine either abends or returns to the application
program.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CO
CO N
Position
Description
1 Code the CO keyword to activate the compare option.
4 Specify the action of HSSR Engine when a difference is found in HSSR and
DL/I calls.
Keyword
Description
blank HSSR Engine abends with a dump.
This option should normally be used when a mismatch is detected
between HSSR and DL/I calls.
N HSSR Engine returns control to the application program when a
mismatch is detected between HSSR and DL/I calls.
Notes:
v To use the CO control statement, the database data sets must be allocated
with DISP=SHR.
v If the database is being updated concurrently, the results of DL/I calls
and HSSR calls might differ. In such a case, do not use the CO control
statement.
v If APISET 3 is specified, the comparison is not done for the calls that are
finally processed by DL/I.
v If one or more partitions of PHDAM or PHIDAM are in the HALDB
OLR cursor-active status, the blank keyword is ignored.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DATXEXIT YES
NO
Position
Description
1 Code the DATXEXIT keyword to specify the treatment of the Data
Conversion exit routine DFSDBUX1.
10 Enter one of the following keywords:
Keyword
Description
NO Requests HSSR Engine not to call DFSDBUX1 even if it is in a
library concatenated to STEPLIB DD. The option DATXEXIT NO
has the same effect; the module DFSDBUX1 is removed from
STEPLIB libraries. NO is the default.
YES Requests that HSSR Engine treat DFSDBUX1 in the same way that
IMS does through IMS's Data Conversion exit. If DATXEXIT YES is
specified, the module DFSDBUX1 exists in a STEPLIB library, and
the use of the Data Conversion exit is designated for a database,
then DFSDBUX1 is called each time a DL/I call or an HSSR call is
issued against the database.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DBDL1 dbdname1,dbdname2,dbdname3,dbdname4
*ALL
Position
Description
1 Code the DBDL1 keyword to force HSSR PCBs to be read as DL/I PCBs.
7 Enter in this 8-character field either multiple dbdnames or the keyword
*ALL. If dbdnames are specified, only the PCBs referring to those names are
considered DL/I PCBs. If the keyword *ALL is specified, all PCBs are
considered DL/I PCBs.
Code dbdnames left-aligned, followed by trailing blanks, if necessary, and
separated by commas. A maximum of eight dbdnames can be coded.
Note: If multiple DBDL1 statements are provided, only the last is used.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DBSTATS nnnnn
Position
Description
1 Code the DBSTATS keyword to instruct HSSR Engine to provide the
Database Tuning Statistics report.
9 Specify the number of buffers to be simulated with this entry. Enter any
number up to five digits in the range of 1 - 32767, left-aligned, and
followed by a blank. If this entry is left blank, the default value of 4 is
used.
HSSR Engine simulates the LRU algorithms of the IMS OSAM buffer pool
and the IMS VSAM buffer pool to provide statistics of the number of I/O
operations. If the application program uses multiple HSSR PCBs, HSSR
Engine assumes that each PCB has its own dedicated buffer pool
containing the user-specified or default number of buffers.
Restrictions:
v If APISET 3 is specified, this statement cannot be specified.
v If one or more partitions of PHDAM or PHIDAM are in the
HALDB OLR cursor-active status, this statement is ignored.
The DIAGG control statement is used to request HSSR Engine to write diagnostic
information to the HSSRTRAC data set whenever a GG or a GX status code is
returned. This option is most important when you are unloading a database with
the SKERROR option. The diagnosis information documents the location of the
database errors and indicates which segment types might be missing in the
unloaded database data set.
For the details of diagnosis information, see “Trace Output report with diagnostics
information” on page 256; especially, see Type of GG error for a discussion of types
of error cases.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DIAGG
DIAGG DIAGONLY
DIAGG [CB|BUF|CB,BUF|BUF,CB]
DIAGG NOINT
Position
Description
1 Code the DIAGG keyword to request that HSSR Engine write diagnosis
information to the HSSRTRAC data set whenever a GG or a GX status
code is returned.
7 Enter one of the following keywords. You can specify both CB and BUF in
a single statement, separated from each other with a comma.
Keyword
Description
Blank Interpreted as DIAGONLY.
Notes:
v The trace of control blocks of HSSR Engine, produced by specifying CB
or BUF option for DIAGG control statement, is not intended to be
reviewed by users, but might be needed by IBM Software Support to
analyze a problem.
v The DIAGG control statement can write more than 4000 print lines to the
HSSRTRAC data set for each GG status code returned. For example, if a
segment prefix contains 10 bad pointers, this could yield more than
40,000 print lines for the single bad segment prefix. Therefore, when the
DIAGG option is active, the HSSRTRAC data set should be allocated in a
way to avoid S722 or SB37 abends. For example, you can specify through
the OUTLIM parameter a large number of SYSOUT print lines or you
can allocate HSSRTRAC on tape.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GOTRETRY NBR=nnn,WAIT=sss
Position
Description
1 Code the GOTRETRY keyword to instruct HSSR Engine to override the
default number of reaccesses and the default number of seconds to wait
before each reaccess attempt.
10 This entry can contain one or both of the following keywords in any order:
Keyword
Description
NBR=nnn
This entry denotes the number of times that HSSR Engine attempts
to reaccess a database. nnn is a left-aligned number in the range of
1 - 999.
WAIT=sss
This entry denotes the number of seconds that HSSR Engine waits
before it attempts to reaccess a database. sss is any left-aligned
number in the range of 0 - 999.
| 0........1.........2.........3.........4.........5.........6.........7.........8
| 12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
| HPIO YES
| NO
|
|
| Position
| Description
| 1 Code the HPIO keyword.
| 6 Specify YES or NO to activate Media Manager or not.
| Keyword
| Description
| YES Media Manager is used for reading VSAM ESDS. All
| concatenations of the JOBLIB or the STEPLIB must be
| APF-authorized.
| NO Media Manager is not used.
| When this control statement is not coded and all concatenations of the JOBLIB or
| the STEPLIB are APF-authorized, Media Manager is used.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
HSSRDBD dbdname1,dbdname2,dbdname3,dbdname4,...
*ALL
Position
Description
1 Code the HSSRDBD keyword to force all PCBs that refer to the specified
DBDs to be treated as HSSR PCBs.
9 Enter in this 8-character field either multiple dbdnames delimited by a
comma or the keyword *ALL. If the length of a dbdname is less than 8
bytes, it must be left-aligned and padded with blanks. If dbdnames are
specified, those PCBs that refer to specified DBD are considered to be
HSSR PCBs. If the keyword *ALL is specified, all PCBs that refer to the
DBD are considered to be HSSR PCBs.
Notes:
v A maximum of 500 DBD names can be coded.
v HSSRDBD control statement cannot be specified with an HSSRPCB
control statement.
v If the list of DBD names cannot fit into one line, the DBD names must be
specified as multiple HSSRDBD statements, each of which must fit into a
line.
v If both an HSSRDBD statement that has the *ALL operand and an
HSSRDBD statement that has the DBD list operand are specified, the
*ALL specification has priority over all others.
v If a DBD name is specified on an HSSRDBD statement and is also
specified on a DBDL1 control statement, the specification by the DBDL1
statement has priority and all PCBs that refer to the DBD are treated as
DL/I PCBs.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the HSSRPCB keyword to force the specified PCBs to be treated as
HSSR PCBs.
9 Enter in this 3-digit field either multiple database PCB numbers delimited
by a comma or the keyword *ALL. The PCB number for the first database
PCB is 001. If the PCB numbers are specified, those PCBs are treated as
HSSR PCBs. If the keyword *ALL is specified on this field, all database
PCBs are considered to be HSSR PCBs.
Notes:
v A maximum of 500 PCBs can be coded.
v The HSSRPCB control statement cannot be specified with the HSSRDBD
statement.
v If the list of PCB numbers cannot fit into one line, the PCB numbers
must be specified as multiple HSSRPCB statements, each of which must
fit into a line.
v If both an HSSRPCB statement that has *ALL operand and an HSSRPCB
statement that has PCB number operands are specified, the *ALL
specification has priority over all others.
v If a PCB specified on an HSSRPCB statement refers to a DBD that is
specified on a DBDL1 control statement, the specification by DBDL1
statement has priority and the PCB is treated as a DL/I PCB.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
KEYCHECK ABEND
GX
GG
Position
Description
1 Code the KEYCHECK keyword to activate the option that checks the key
sequence. It must be used with one of the following three code options.
(Separate the words with a space.)
10 Code one of the following optional keywords:
Keyword
Description
ABEND
Performs key checking and ends abnormally if a sequence error is
detected.
GX Performs key checking and returns a warning GX status code if a
sequence error is detected. The segment with the incorrect key is
returned normally to the calling application program or utility.
For the EXEC DLI command, the status GX is not returned to the
application program. Instead, message DFS1041 is issued in the
EXEC DLI interface module (DFSEIPB0). It ends with a code of
U1041.
GG Performs a key check and returns a GG status code if a sequence
error is detected. No segment will be returned to the calling
application program or utility.
This option requires PROCOPT=GON, GOT, or an active
SKERROR; if none of these conditions is specified, HSSR Engine
abends instead of returning a GG status code. If the SKERROR
control statement is active, HSSR Engine does not retrieve the
incorrect segment or other related segments during the processing
of the next GN call. If the SKERROR control statement is inactive,
HSSR Engine resets the current position to the beginning of the
database.
Restrictions:
v If APISET 3 is specified, this statement cannot be specified.
v If one or more partitions of PHDAM or PHIDAM are in the
HALDB OLR cursor-active status, KEYCHECK=ABEND/GX/GG
is ignored.
The records that satisfy one or both of the following conditions are written in the
HSSRLOUT data set:
v Database records that are longer than the specified limit.
v Database records that require more than the specified number of database I/Os.
This option is ignored if the DBSTATS control statement is not specified at the
same time.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LOUT LENGTH=llllllll
LOUT IO=nn
Position
Description
1 Code the LOUT keyword to request an optional record selection for the
HSSRLOUT data set.
6 Code one of the following optional keywords for each LOUT statement:
Keyword
Description
LENGTH=llllllll
Requests that only the records for database records whose length is
greater than llllllll bytes are written in the HSSRLOUT data set.
IO=nn Requests that only the records for database records that require
more than nn database I/Os for retrieval are written in the
HSSRLOUT data set.
You can specify both LENGTH= and IO= parameters, either on a single LOUT
control statement or separately (on multiple LOUT statements). If you specify both
parameters on a single LOUT statement, separate them with a comma, as follows:
LOUT LENGTH=100,IO=15
If you specify both LENGTH= and IO= parameters, both conditions are effective
(that is, database records that satisfy both conditions are written in the HSSRLOUT
data set.)
For the details of this option and how to code DFSVSAMP DD when LSR YES is
specified, see “VSAM LSR option for primary index databases” on page 276.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LSR NO
LSR YES
Position
Description
1 Code the LSR keyword to specify the LSR option.
5 Enter one of the following keywords:
Keyword
Description
NO Requests that primary indexes of HIDAM and PHIDAM databases
be processed with the NSR option. NO is the default.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
NOFIX
Position
Description
1 Code the NOFIX keyword to activate the NOFIX option.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
NOVSAMOPT
Position
Description
1 Code the NOVSAMOPT keyword to activate the NOVSAMOPT option.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PARTINFO DEF,ACC
Position
Description
1 Code the PARTINFO keyword to initiate HSSR Engine to produce the
partition information report.
10 Specify which report to produce.
These parameters are not positional and can be specified in any order. If
two or more parameters are specified, put a comma between parameters.
Information specified on this statement affects the number of lines written
in HSSRSTAT data set.
At least one parameter must be specified.
Keyword
Description
DEF Initiate HSSR Engine to produce the HALDB Partition Definition
report.
ACC Initiate HSSR Engine to produce the HALDB Partitions Accessed
report.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PCBLIST HSSR
IMS
Position
Description
1 Code the PCBLIST keyword to specify a type of PCB list.
9 Code one of the following keywords:
HSSR The PCB list that is built by HSSR Engine and that can contain an
entry that points to HSSR PCB is passed to the application
program.
IMS The PCB list that is built by IMS is passed to the application
program.
Notes:
v If your application program issues a DL/I system call that gets access to
the IMS PCB list, it is recommended that you specify PCBLIST IMS. One
such call is the INQY call with the FIND subfunction, which returns the
PCB address of the requested PCB name.
v If your application program issues an HSSR call as an EXEC DLI
command, you must specify PCBLIST IMS.
Tip: The default of this control statement can be changed by replacing the default
option table (FABHOPT). For details, see Chapter 19, “Site default options,”
on page 349.
Note: When HSSR Engine reads a KSDS data set that is subject to CI splits, any
KSDS records that shifted out of the CI being split might be skipped. CI
splits might also cause some records to be read twice.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
RETRY KSDS
Position
Description
1 Code the RETRY keyword.
7 Code the KSDS keyword to activate the retry operation of HSSR Engine.
The runtime environment exit routine is called before and after an HSSR
application program is invoked. If no RTEXIT control statement is specified, the
IBM-supplied FABHRTEX module or the user-written FABHRTEX module is called
as the runtime environment exit routine. For more information about FABHRTEX,
see “Runtime Environment exit (FABHRTEX)” on page 326.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
RTEXIT xxxxxxxx
Position
Description
1 Code the RTEXIT keywords.
8 The left-aligned load module name of the runtime environment exit
routine.
This bypass is achieved by skipping the processing either of the incorrect pointer
or of the remainder of the incorrect HISAM record. A GG status code is returned.
Thus, HSSR Engine cannot process segments with segment codes in error.
Notes:
v If you specify APISET 3, you cannot specify this statement.
v If one or more partitions of PHDAM or PHIDAM are in the HALDB
OLR cursor-active status, SKERROR=nnnnnnnnn is ignored.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
SKERROR nnnnnnnnn
Position
Description
1 Code the SKERROR keyword to activate the error-skipping option.
9 Specify the maximum number of incorrect records to be skipped. Enter up
to 9 digits, left-aligned and followed by a blank. If the field is left blank,
HSSR Engine skips up to 9999 incorrect records. If more than this number
of GG status codes are returned, HSSR Engine issues an abend.
Note: The SKERROR control statement can be used for HSSR PCBs that do not
have an update PROCOPT specified. For example, it can be used for HSSR
PCBs that have PROCOPT equal to G, GE, GO, GON, or GOT; but it is
ignored for all HSSR PCBs that have PROCOPT=R.
In the ULU region, the virtual logical child segment type is always ignored,
therefore this control statement is not used.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
SKIPVLC YES
NO
Position
Description
1 Code the SKIPVLC keyword to ignore a sensitive virtual logical child
segment in the HSSR PCB.
9 Specify one of the following keywords:
Keyword
Description
YES Requests HSSR Engine to ignore a sensitive virtual logical child
segment in the HSSR PCB.
NO Requests HSSR Engine not to ignore the sensitive virtual logical
child. The HSSR Engine does not treat the PCB, in which the
logical child segment is sensitive, as an HSSR PCB. NO is the
default.
v IMS High Performance Unload utilities such as FABHURG1,
FABHFSU, and FABHTEST issue a user abend because the PCB
is not an HSSR PCB.
v In a user application program that uses the IMS High
Performance Unload API, all HSSR calls to the PCB fall back to
DL/I calls.
The TRDB control statement must be used with the TRHC control statement. After
the TRHC indicates the type of trace to be run, the TRDB control statement then
identifies the specific databases on which these traces are run.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
TRDB *ALL
dbdname1,dbdname2,dbdname3,dbdname4
Position
Description
1 Code the TRDB keyword to activate the hardcopy tracing for specified
database.
6 Enter either dbdnames separated by commas or the keyword *ALL.
If multiple TRDB statements are provided, only the last statement is used.
This control statement is always used in combination with the TRDB control
statement. When you activate this option, HSSR Engine traces calls that are issued
against the databases named in the TRDB control statement. It writes data about
these calls on the HSSRTRAC data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
TRHC CALL,CB,CBX,BUF,BUFCB,START=n,NPF
Position
Description
1 Code the TRHC keyword to activate the hardcopy tracing option.
6 Enter one or more of the following keywords, separated by commas,
specified in any order. The last keyword must be followed by a blank.
Keyword
Description
CALL Traces call information such as call function, PCB, IOAREA, SSA,
and segment prefix.
Does a trace for the EXEC DLI command, just the same as for the
DL/I call. This is because the command is converted to the format
of a DL/I call and made to the HSSR call handler.
CB or CBX
Traces the control blocks of HSSR Engine. If CBX is specified,
traces are also done for the extended control blocks of HSSR
Engine.
If both CB and CBX are specified, CBX is taken.
BUF Traces buffer handler information.
BUFCB
Traces the CAB buffer handler control blocks.
START=n
Specifies the call number n. Trace begins at the n-th HSSR call
issued by the application program. Enter any number up to nine
digits, left-aligned, and followed by a blank.
NPF Excludes the segment prefix information from the trace.
Only HSSR calls issued against the databases that are specified on the TRDB
control statement are traced.
Note: The trace of the control blocks of HSSR Engine, which is called for by
specifying the CB, CBX, BUF, or BUFCB option for the TRHC control
statement, is not intended to be reviewed by users, but might be needed by
the IBM Software Support to analyze a problem.
In the user subpools portion of the dump, table entries show the following
information about the last n calls for each PCB:
v Eye-catcher 'TRAC'
v Last byte of application program call function
v Last byte of PCB status code
v Segment name
v PCB key feedback area
v Address within the buffers of the returned segment
v Internal information about HSSR Engine
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
TRXC nnnnnnnnn
Position
Description
1 Code TRXC to activate the wrap-around core trace of HSSR calls.
6 Enter a number to designate the number of entries allocated for each HSSR
PCB for wrap-around tracing.
Enter up to 9 digits, left-aligned and followed by a blank. If this position is
left blank, the default value of 10 is used.
Topics:
v “HSSRSTAT data set” on page 240
v “HSSRTRAC data set” on page 253
v “HSSRSNAP data set” on page 268
v “HSSRLOUT data set” on page 269
v “HSSRBUTR data set” on page 270
In accordance with the control statements that were specified for the job, this data
set contains one or more of the following reports:
v HSSROPT Control Statements report
v HALDB Partition Definition report
v HALDB Partitions Accessed report
v DB Call Statistics report
v DB Statistics report
v Randomizing Statistics report
v DB Record Length Distribution report
v Data Set I/O Statistics report
v CAB Statistics report
When you use the Sequential Subset Statistics (SS-STATS) function of the
Sequential Subset Randomizer, the HSSRSTAT data set also contains the reports of
the SS-STATS routine. For information about these reports, see “HSSRSTAT output
data set when SS-STATS routine is applied” on page 399.
Format
This data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
HSSRDBD DBDNAME1,DBX
HSSRDBD DBDNAME2,DBDNAME3
DBSTATS
RTEXIT FABHRRRR
X DIAGG AAA
SKERROR 500
NOFIX
NOTE: “X” ON THE LEFT SIDE OF A CONTROL STATEMENT INDICATES THAT THE STATEMENT HAS AN ERROR AND IS IGNORED.
KEYWORD VALUES
---------------- -------------------------------------------------------------------------------------------
APISET 1
CABSTAT NO
* DBSTATS 4
* DIAGG DIAGONLY
GOTRETRY NBR=4,WAIT=5
* HSSRDBD DBDNAME1,DBDX ,DBDNAME2,DBDNAME3
LSR NO
* NOFIX
PCBLIST HSSR
* RTEXIT FABHRRRR
* SKERROR 500
SKIPVLC NO
DATXEXIT NO
If PARTINFO DEF is specified in the HSSROPT data set, this report is generated.
If PARTINFO ACC is specified in the HSSROPT data set, this report is generated.
DBDNAME........................... PARTDB
NUMBER OF PARTITIONS DEFINED...... 5
NUMBER OF PARTITIONS PROCESSED.... 3
Subsections:
v “Example report: DB Call Statistics report”
v “Example report: DB Call Statistics report for HALDB” on page 243
v “Report field descriptions” on page 243
PHDV0100 ROOTLEV1 10
DEP1LEV2 10
DEP2LEV2 10
DEP3LEV3 20
DEP4LEV4 40
DEP5LEV2 10
DEP6LEV3 20
DEP7LEV4 40
DEP8LEV4 40
DEP9LEV5 80
PCB-TOTALS 280 1
---------------------------------------------------------------------------------------------------------------
TOTAL HSSR CALLS 280 1
===============================================================================================================
PHDV01AA ROOTLEV1 2
DEP1LEV2 2
DEP2LEV2 2
DEP3LEV3 4
DEP4LEV4 8
DEP5LEV2 2
DEP6LEV3 4
DEP7LEV4 8
DEP8LEV4 8
DEP9LEV5 16
PART-TOTALS 56
---------------------------------------------------------------------------------------------------------------
The following fields are reported only when the status code FM is received.
STATUS:FM
Number of FM status codes for a single PCB.
TOTAL STATUS:FM
Total number of FM status codes.
The following fields are reported only when the status code GP is received:
STATUS:GP
Number of GP status codes for a single PCB.
TOTAL STATUS:GP
Total number of GP status codes.
DB Statistics report
This report contains information about the average number of I/Os that are
required to randomly read all database segments of one database record, and the
length of database records.
You can use this report to tune your databases. For a complete description of this
report, see “DB Statistics report” on page 433.
You can use this report to tune your databases. For a complete description of this
report, see “Randomizing Statistics report” on page 440.
You can use this report to tune your databases. For a complete description of this
report, see “DB Record Length Distribution report” on page 443.
Subsections:
v “Example report: Data Set I/O Statistics report” on page 245
v “Report field descriptions” on page 245
For each PCB data set combination, the following information is printed:
DDNAME
ddname as coded on the DD1=keyword in the DBD that is referred to by the
HSSR PCB.
SIZE OF A BUF
Buffer size.
NUM OF BUFFERS
Total number of buffers.
Note: If one or more partitions of PHDAM or PHIDAM are in the HALDB OLR
cursor-active status, each count number is 0 for each data set of the
partitions.
The following statistics are produced for each PCB for which CAB is used:
v HALDB buffering statistics (only for HALDBs)
v CAB environment (statistics)
v I/O summary (statistics)
v Timing Statistics
If the CABSTAT YES control statement is specified in the HSSROPT input data set,
the following statistics are also produced:
v Event statistics
v Distribution of look-aside at nth position
v Distribution of HRAN steal/delete per reference count value
v Distribution of reference-count-difference
v Distribution of distance from current Seq HRAN
For a database of multiple data set groups, these statistics, except the HALDB
buffering statistics, are produced for each data set.
For a HALDB, the statistics are produced for each partition that has been
processed; also, if the database consists of multiple data set groups, the statistics
are produced for each data set group for each partition.
The DDNAME or the pair of partition name and DSGROUP name is printed on
each page of the report. For a nonpartitioned database, the ddname as coded on the
DD1= keyword in the DBD that is referred to by the HSSR PCB is printed. For a
HALDB, the partition name and the character that identifies the data set group are
printed.
Subsections:
v “Example report: HALDB Buffering Statistics report for PHDAM”
v “Example report: CAB Statistics report for a nonpartitioned database” on page
248
v “Report field descriptions: CAB Statistics report” on page 249
The following report shows a sample of HALDB buffering statistics report. These
statistics are produced only for HALDB. The CAB parameters used for each data
set are reported. The total storage size for CAB buffers for each data set group is
also reported. Column 'A' of the table, titled 'CAB PARAMETERS FOR EACH
PARTITION,' indicates whether the data set was accessed ('Y') or not ('N').
DB=PHDV0300 PCB#= 1
-----------------------------------------------------------------------------------------------------------------------------------
PARTPROC PHDV0300 S
DSGROUP=A
DDNAME=HSHDP
------------------------------------------------------------------------------------------------------------------------------------
NBR OF I/O
TOTAL...................... 3,200 76.83 PCT OF CALLS 131.09 PCT OF BLOCKS
SEQUENTIAL TOTAL........... 982 23.57 PCT OF CALLS 40.22 PCT OF BLOCKS
SEQU IMMEDIATE.......... 707 16.97 PCT OF CALLS 28.96 PCT OF BLOCKS
SEQU OVERLAPPED......... 275 6.60 PCT OF CALLS 11.26 PCT OF BLOCKS
DIRECT..................... 2,218 53.25 PCT OF CALLS 90.86 PCT OF BLOCKS
*** NBR OF UNREFERENCED SEQ BUFFERS 490 24.94 PCT SEQ BUFFERS
The rest of the statistics is obtained when the CABSTAT YES control statement is
specified in the HSSROPT data set. These statistics contain detailed technical
information beyond what is usually required for users of IMS High Performance
Unload. The statistics are:
Event Statistics
Detailed data on CAB I/O.
Distribution of look-aside at n th Position
Detailed data on look-aside buffering.
Distribution of HRAN Steal/Delete per Reference Count Value
Detailed data on CAB I/O in ranges.
The HSSROPT control statements, TRHC, TRDB, and DIAGG, cause trace
information to be produced in the Trace Output report.
Note: The trace data of control blocks of HSSR Engine, which is produced by
specifying CB or BUFCB option for TRHC control statement, is not intended
to be reviewed by users, but might be needed by IBM Software Support to
analyze a problem.
Format
This data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133.
Subsections:
v “Example report: Trace Output report when 1 SSA is specified”
v “Example report: Trace Output report when 15 SSAs and APISET 3 are
specified”
v “Report field descriptions” on page 254
The following figure shows an example of the Trace Output report when 1 SSA is
specified.
*** DB CALL *** FUNC=GN DBD=DBHD0070 LEV=01 STAT= PROC=GX SEGN=SG001LV1 PCB#=0001
IO-AREA 000E9968 F0F1F0F0 F0F0F0F0 F0F14040 40404040 40404040 40404040 40404040 40404040 *0100000001 *
000E9988 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
000E99A8 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
000E99C8 40404040 * *
The following figure shows an example of the Trace Output report when 15 SSAs
and APISET 3 are specified.
*** DB CALL *** FUNC=GN DBD=DBHD0070 LEV=15 STAT= PROC=GX SEGN=SG016LVF PCB#=0001
KEYFEEDB 000E5C84 F0F1F0F0 F0F0F0F0 F0F1F0F1 F0F2F0F0 F0F0F0F1 F0F1F0F3 F0F0F0F0 F0F1F0F1 *01000000010102000001010300000101*
000E5CA4 F0F4F0F0 F0F0F0F1 F0F1F0F5 F0F0F0F0 F0F1F0F1 F0F6F0F0 F0F0F0F1 F0F1F0F7 *04000001010500000101060000010107*
000E5CC4 F0F0F0F0 F0F1F0F1 F0F8F0F0 F0F0F0F1 F0F1F0F9 F0F0F0F0 F0F1F0F1 F0F0F0F0 *00000101080000010109000001010000*
000E5CE4 F0F0F0F1 F0F1F0F1 F0F0F0F0 F0F1F0F1 F0F2F0F0 F0F0F0F1 F0F1F0F3 F0F0F0F0 *00010101000001010200000101030000*
000E5D04 F0F1F0F1 F0F4F0F0 F0F0F0F1 F0F1F0F5 F0F0F0F0 F0F1 *0101040000010105000001 *
IO-AREA 000E9968 F0F1F0F5 F0F0F0F0 F0F14040 40404040 40404040 40404040 40404040 40404040 *0105000001 *
000E9988 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
000E99A8 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
000E99C8 40404040 * *
Figure 47. Trace Output report when 15 SSAs and APISET 3 are specified
If the CALL option is specified for the TRHC control statement, the report contains
a section that describes the following fields and data areas for database calls:
FUNC The type of call requested for HSSR Engine.
DBD The dbdname of the database referred to by the HSSR PCB.
LEV Segment level.
STAT Status code returned in the PCB.
PROC Processing option coded in the PROCOPT field of the DBD.
SEGN The name of the segment that is accessed.
PCB The PCB number. The number for the first PCB is 0001.
PARTITION
Partition name (only for HALDB).
KEYFEEDB
Data returned in the key feedback area. This field provides the virtual
Notes:
v If a Data Conversion exit routine (DFSDBUX1) is used for the segment
accessed, the data shown in the KEYFEEDB, IO-AREA, and SSA fields is
presented in the application form, not in the stored form
v If a user application that is run by APISET 1 or 2 issues a DL/I call that
is not supported by the HSSR call handler, the call data is printed in this
report even if the TRHC and the TRDB control statements are not
specified. Ignore LEV, STAT, SEGN and IO-AREA fields in the data.
DMTI
If the BUF option is specified for the TRHC control statement, the report contains a
section of information that describes the following control blocks and areas
showing buffer handler trace data:
DBDNAME
Name of the DBD referred to by the HSSR PCB.
DSG Data set group number.
PARTITION
Partition name (only for HALDB).
CALL-TYPE
Type of buffer handler call.
RC Return code returned by the buffer handler.
HDMB
Snap dump of "Communication area" of HDMB control block of HSSR
Engine.
DATA Data returned by buffer handler. This field provides the virtual storage
If the BUFCB option is specified for the TRHC control statement, and CAB
buffering is used, the trace of the following control blocks of HSSR buffer handler
is also printed:
HDMB
HDMC
SEQ HRAN
DIR HRAN
If CB option is specified for the TRHC control statement, the traces of the
following control blocks immediately before completion of an HSSR call are
printed:
HJCB
HDMB
HSDB'S
HPTR'S
DMTI
The diagnostic information that is printed on the Trace Output report varies with
the database organization and the type of error detected by HSSR Engine.
Subsections:
v “Example report: Trace Output report with diagnostics information (CASE 1-A,
CASE 1-B, and CASE 2)”
v “Example report: Trace Output report with diagnostics information (CASE
19-A)” on page 260
v “Example report: Trace Output report with diagnostics information (CASE 19-B)”
on page 260
v “Example report: Trace Output report with diagnostics information (CASE 20)”
on page 261
v “Report field descriptions” on page 262
The following figures show an example of this report with diagnostics information
when the error cases are CASE 1-A, CASE 1-B, and CASE 2.
THE BAD POINTER IS AT THE DECIMAL OFFSET 0006 WITHIN THE PREFIX OF
RBA OF SEGMENT-PREFIX CONTAINING THE BAD POINTER AND LOW+HIGH RBA OF ITS CI:
IO-AREA
Figure 48. Trace Output report with diagnostics information (CASE 1-A, CASE 1-B, and CASE 2) (Part 1 of 3)
THE BAD POINTER IS AT THE DECIMAL OFFSET 0002 WITHIN THE PREFIX OF
ONE ROOT, ANY OTHER ROOT ON SAME RAP CHAIN, AND ALL OF THEIR DEPENDENTS
RBA OF SEGMENT-PREFIX CONTAINING THE BAD POINTER AND LOW+HIGH RBA OF ITS CI:
IO-AREA
IO-AREA 00105EFF F0F0F0F0 F0F0F1F6 F0F0D6D9 C4C5D940 C4C5E2C3 D9C9D7E3 C9D6D540 D7D7D7D7 *0000001600ORDER DESCRIPTION PPPP*
00105F1F D7D7D7D7 D7D7D740 F9F6F1F2 F3F14040 40404040 40404040 40404040 40404040 *PPPPPPP 961231 *
00105F3F 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00105F5F 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00105F7F 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00105F9F 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00105FBF 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00105FDF 40404040 40404040 40404040 40404040 40404040 40404040 4040 * *
Figure 49. Trace Output report with diagnostics information (CASE 1-A, CASE 1-B, and CASE 2) (Part 2 of 3)
ONE ROOT, ANY OTHER ROOT ON SAME RAP CHAIN, AND ALL OF THEIR DEPENDENTS
RBA OF RAP CONTAINING THE BAD POINTER AND LOW+HIGH RBA OF ITS CI:
IO-AREA
IO-AREA 001063B9 F0F0F0F0 F0F0F0F8 F0F0D6D9 C4C5D940 C4C5E2C3 D9C9D7E3 C9D6D540 C8C8C8C8 *0000000800ORDER DESCRIPTION HHHH*
001063D9 C8C8C8C8 C8C8C840 F9F6F1F2 F3F14040 40404040 40404040 40404040 40404040 *HHHHHHH 961231 *
001063F9 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00106419 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00106439 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00106459 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00106479 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
00106499 40404040 40404040 40404040 40404040 40404040 40404040 4040 * *
Figure 50. Trace Output report with diagnostics information (CASE 1-A, CASE 1-B, and CASE 2) (Part 3 of 3)
The following figure shows an example of this report with diagnostics information
when the error case is CASE 19-A.
STATUS CODE: GG
KEYFEEDB
IO-AREA
Figure 51. Trace Output report with diagnostics information (CASE 19-A)
The following figure shows an example of this report with diagnostics information
when the error case is CASE 19-B.
KEYFEEDB
IO-AREA
Figure 52. Trace Output report with diagnostics information (CASE 19-B)
The following figure shows an example of this report with diagnostics information
when the error case is CASE 20.
KEY 000721E4 F0F4F0F0 F0F0F0F0 F0F1F0F4 F0F3F0F0 F0F0F0F1 F0F4F0F4 F0F0F0F0 F0F1 *040000000104030000010404000001 *
KEYFEEDB
IO-AREA
Figure 53. Trace Output report with diagnostics information (CASE 20)
The report contains a section that starts with the following line:
--------------- TYPE OF GG ERROR -----------------
The section contains information describing the type of GG error that was
detected. The next line, "CASE nn:", identifies a type of GG error.
For HDAM and HIDAM databases, the report contains a section of information
describing the incorrect pointer:
-------------"HD-FROM INFO" FOLLOWS --------------
An eye-catcher identifying the beginning of the "HD-FROM" information:
RBA OF SEGMENT PREFIX CONTAINING THE BAD POINTER AND
LOW+HIGH RBA OF ITS CI:
Snap of one area containing three RBAs:
v RBA of segment prefix (or RBA of the RAP) that contains the incorrect
pointer.
v Beginning RBA and ending RBA of the block or CI that contains the
incorrect pointer.
THE SEGMENT PREFIX CONTAINING THE BAD POINTER
Snap of segment prefix that contains the incorrect pointer. This field
provides the virtual storage addresses of the data traced on the right. There
might be multiple lines, each showing up to 32 bytes of data in
hexadecimal and EBCDIC format.
THE SEGMENT BUFFER
Snap of the block, CI, or index record that contains the incorrect pointer.
This field provides the virtual storage addresses of the data traced on the
right. There might be multiple lines, each showing up to 32 bytes of data
in hexadecimal and EBCDIC format.
For HDAM and HIDAM databases, the report contains a section of information
describing the portion of the database "pointed to" by the incorrect pointer.
-------------- "HD-TO INFO" FOLLOWS --------------
An eye-catcher identifying the beginning of the "HD-TO" information:
RBA OF POINTER TARGET AND LOW+HIGH RBA OF ITS CI:
Snap of one area containing three RBAs:
v RBA contained in the incorrect pointer (RBA "pointed to" by the
incorrect pointer).
v Beginning RBA and ending RBA of the block or CI that is "pointed to."
THE TARGET OF THE BAD POINTER FOLLOWS
Snap of the first 2 bytes "pointed to" by the incorrect pointer. If the
incorrect pointer does not point outside of the data set, this area is
snapped.
THE TARGET BUFFER
Snap of the block or CI "pointed to" by the incorrect pointer. This field
For HISAM and secondary index databases, the report contains data on the last
KSDS record accessed by HSSR Engine.
---------- "HS ISAM/KSDS RECORD" FOLLOWS -----------
An eye-catcher identifying the beginning of the "HS ISAM/KSDS
RECORD." A snap of the last KSDS record accessed by HSSR Engine. This
field provides the virtual storage addresses of the data traced on the right.
There might be multiple lines, each showing up to 32 bytes of data in
hexadecimal and EBCDIC format.
For HISAM and secondary index databases, the report contains information about
the current ESDS/KSDS record.
------------ "HS CURRENT RECORD" FOLLOWS -----------
An eye-catcher identifying the beginning of the "HS CURRENT RECORD."
VSAM RBA OF BAD RECORD AND LOW+HIGH RBA.S OF ITS CI FOLLOWS
ON SNAPS:
Snap of one area containing three ESDS RBAs or three OSAM RRNs.
v RBA of the ESDS record
v Beginning RBA and ending RBA of the CI that contains the record.
SNAP OF BAD SEGMENT CODE/DELETE BYTE AND OF BAD RECORD
FOLLOWS:
Snap of the first 2 bytes of the segment prefix and of the current
ESDS/KSDS record. This field provides the virtual storage addresses of the
data traced on the right. There might be multiple lines, each showing up to
32 bytes of data in hexadecimal and EBCDIC format.
IMS call handler or IMS buffer handler errors
If APISET 3 is specified, and a call to IMS causes an error, one of the
following reports is issued. CASE 15 to CASE 18 are deleted.
CASE 19-A
The current database position is not valid.
This might happen if there is something that updates the database
concurrently. The error causes the current position to be reset to
the beginning. If status code GG or GE is returned in response to
the INTERNAL RBA call, the following:
v status code
v the SNAP DUMP of SSA specified at the time of RBA call
A sample of this report is provided in Figure 51 on page 260.
CASE 19-B
The current database position is not valid.
After printing a DIAGG output information, the DIAGG option forces a temporary
activation of the hardcopy trace option, TRHC. The TRHC option remains in effect
until the next database call is completed. The TRHC option enables you to
determine whether the next call has been completed successfully, and to see the
next retrieved segment. If the TRHC option is active, the Trace Output report
contains the following information:
v Trace of the HSSR call that ended with a GG or a GX status code.
v Trace of the first successful HSSR call after a GG or a GX status code was
returned. This contains the name of the returned segment, a snap of the PCB key
feedback area, and a snap of the returned segment.
v Snaps of the buffer handler calls, if the keyword BUF is specified in the DIAGG
statement.
v Snaps of the control blocks of HSSR Engine, if the keyword CB is specified in
the DIAGG statement.
An error message is also issued. The initialization ends, and HSSR Engine falls back
to DL/I. All HSSR PCBs are considered DL/I PCBs, and the application program
runs using DL/I action modules instead of HSSR Engine.
Format
This data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133.
HSSR SNAPs
When a snap is taken, the control blocks of HSSR Engine are provided. The snap
gives the virtual storage addresses of the data traced on the right. There might be
multiple lines, each showing up to 32 bytes of data in hexadecimal and EBCDIC
format.
You can use this report to tune your databases. For a description about this data
set, see “HSSRLOUT output data set for Database Tuning Statistics” on page 419.
Format
This data set contains variable-length records that are read by FABHBSIM.
CAB provides better buffer handling than BB for well-organized HIDAM, HDAM,
PHIDAM, and PHDAM databases, and well-organized HISAM overflow area. CAB
uses more buffer space than BB; however, CAB uses virtual and real storage for a
shorter elapsed time. The performance of both buffer handlers depends on how
well the databases are organized.
Either CAB or BB can replace the DL/I buffer handler. A major advantage of the
two HSSR buffer handlers over the DL/I buffer handler is that HSSR buffer
handlers reduce the path length of database calls. Both HSSR buffer handlers
provide one buffer pool for each PCB. Within a PCB, a buffer pool is provided for
each data set group. By contrast, the DL/I buffer handler provides common buffer
pools, which are shared by multiple PCBs and multiple data sets.
Note: For HALDBs, a buffer pool is provided for each data set group and each
buffer pool is shared by all partitions.
Topics:
v “Chained Anticipatory Buffer handler (CAB)” on page 274
v “Basic Buffer handler” on page 275
v “Buffering service for KSDS” on page 276
CAB is the more advanced of the two HSSR buffer handlers. CAB uses the
following buffering methods to improve buffering performance:
Direct I/O
Enables direct access to a single ESDS CI or OSAM block.
Immediate (non-overlapped) chained sequential I/O
Enables reading of multiple consecutive ESDS CIs or OSAM blocks (called
ranges) through Channel Command Word (CCW) chaining.
Anticipatory (overlapped) chained sequential I/O
Allows CAB to perform overlapped "look-ahead" I/O. This involves the
overlapping of CAB I/O with processing and other I/O of the same job
step. (Overlapped I/O is also performed with CCW chaining.) CAB
decides dynamically when to start overlapped I/O, based on the reference
pattern analysis.
Reference pattern analysis
Forecasts and decides whether chained sequential I/O of multiple blocks
or CIs or direct I/O of one single block or CI is preferable.
The forecast is based on statistics about reference patterns within the most
recently referred-to relative byte address (RBA) ranges of the data set. For
example, assume that a segment was inserted after the last database load
or reload, and that this segment was stored in an OSAM block or ESDS CI
far away from the blocks or CIs containing the other segments of either the
same or neighboring database records. In such a case, CAB might forecast
that direct I/O is superior to chained sequential I/O for reading the block
or CI containing the inserted segment.
Look-aside buffering
Is an efficient buffering method also used by BB and DL/I buffer handlers.
Inter-PCB look-aside buffering (optional)
Inter-PCB look-aside is a method that enables CAB to attempt to find a
requested RBA in buffers of other HSSR PCBs. If HSSR PCB 1 and HSSR
PCB 2 refer to the same database, and if look-aside buffering for HSSR
PCB 1 is unsuccessful, HSSR buffer handler tries to find the requested data
in the CAB buffers of HSSR PCB 2. If the data is found, the buffer of HSSR
PCB 2 is copied into a buffer of HSSR PCB 1.
BB might yield better performance than the DL/I buffer handler, because HSSR
Engine reduces the path length for database calls and uses direct I/O and
look-aside buffering methods. However, BB does not provide the
immediate-chained sequential I/O or the anticipatory overlapped chained
sequential I/O, which are provided by CAB.
BB is used for ESDS and OSAM data sets if a BUF control statement is specified, in
the HSSROPT data set, for the database.
To reduce the path length of an HSSR call, each HSSR PCB and each data set
group within each PCB has its own buffers for OSAM and ESDS, which is the
same as CAB. If HSSR PCB 1 and HSSR PCB 2 refer to the same database, and
look-aside buffering for HSSR PCB 1 is unsuccessful, the buffer handler tries to
find the requested data in the BB buffers of HSSR PCB 2. If it finds the data, the
buffer of HSSR PCB 2 is copied into a buffer of HSSR PCB 1. Buffers are
maintained on a last-referred-to basis.
An output statistical report is provided to the user on the HSSRSTAT data set.
Native VSAM provides both immediate chained sequential I/O and anticipatory
overlapped chained sequential I/O. In batch processing, DL/I uses the Local
Shared Resource (LSR) Pool option. This does not provide immediate chained
sequential I/O, but provides more efficient look-aside capabilities for random
database processing.
Subsections:
v “"Native" VSAM”
v “VSAM LSR option for primary index databases”
"Native" VSAM
HSSR Engine does not provide statistics about VSAM KSDS buffering. Your
installation might be able to provide SMF statistics that can be used to determine
the optimum number of buffers.
The number of buffers for the processing of the index and data components of the
KSDS cluster can be specified separately on the JCL DD statement.
BUFND is used to specify the buffer number for the data component and BUFNI
for the index component of the KSDS cluster.
If the AMP parameter is not coded, the HSSR Engine sets the number of the two
buffers for NSR as follows:
v BUFNI = Number of levels
v BUFND = One-fifth of the number of CIs per CA
If primary index databases are to be processed with VSAM LSR, specify the LSR
option in the HSSROPT data set. For details of the LSR control statement, see “LSR
control statement” on page 226.
Note: This option has no effect if the root segment of an HIDAM or PHIDAM
database has no physical twin backward or hierarchical backward pointers.
If the PSB has at least one DB PCB that has a PROCOPT allowing database
update (PROCOPT=A, R, I, L, or D), this option is canceled internally.
If you specify the DFSSTAT data set, IMS prints statistics about LSR buffering in it
at the end of the job step. HSSR Engine does not print any statistics report on its
own.
To specify the number of buffers for the Local Shared Resource Pools, define it in
the DL/I DFSVSAMP data set.
Topics:
v “Considerations before tuning CAB” on page 280
v “Determining the appropriate CAB parameters” on page 286
v “HSSRCABP control statements” on page 288
v “JCL examples for specifying CAB parameters” on page 296
Without such a grouping, segments of a given database key range or RAP range
that are inserted after database reorganization could be scattered in a number of
different blocks. Retrieval of each of these segments could require up to one I/O
per segment.
To implement these free space specifications, consider the following actions that
can be taken:
v The FRSPC fspf operand on the DATASET statement of a DBD can be used to
specify free space within each block. This free space improves the performance
of most programs, including online programs, that access the database.
v The FRSPC fbff operand on the DATASET statement of a DBD can be used to
leave each nth block entirely free for future segment insertion.
To decide where to store segments inserted after a database reload, the HD space
search algorithm used by IMS uses the following criteria:
1. Same block
2. On the same track: any blocks that were originally left entirely free
3. On the same cylinder, then within n cylinders: any blocks that were originally
left entirely free
4. Any block at the end of data set, based on the bit map
5. Any blocks that were originally left entirely empty.
First, search criterion 1 tries to insert the segment in the same block as its
neighbors. If this fails, search criteria 2 and 3 try to group segments of a key range
or RAP range into a few blocks of the same track, the same cylinder, or neighbor
cylinders. Only if search criteria 1, 2, and 3 fail, scattering can occur during
segment insertion.
Note: The list of search criteria has been simplified for the sake of demonstration.
In reality, the search criteria used by IMS also consider CIs or blocks actually
in the IMS buffer pools to reduce the amount of grouping.
For a more detailed description of the HD space search algorithm, see IMS
Database Administration.
Subsections:
v “HSSRCABP control statements”
v “CAB buffer sharing for HALDB” on page 283
v “HSSROPT control statements” on page 283
HSSRCABP data set contains the CAB control statements that are used to change
CAB buffering parameters and options for a specified data set or for a specified
group of data sets. The statements make it possible to override the default values
of the CAB parameters. The following table lists the HSSRCABP control
statements.
For an instruction for tuning buffers, see “Determining the appropriate CAB
parameters” on page 286. For a detailed description of each control statement, see
“HSSRCABP control statements” on page 288.
For a HALDB, CAB buffers are shared among data sets that belong to
the same data set group. If only one partition is accessed at a time, as
in the unload utilities such as FABHURG1 or FABHFSU utility, you
do not need to use this control statement. If more than one partition
is accessed randomly, you must specify the number of partitions that
are accessed at a time.
For HALDBs, CAB buffers are shared among data sets that belong to the same
data set group.
If more than one partition is accessed randomly at a time from your HSSR
application program, you must specify a PARTPROC control statement for the
HALDB, with R as the second operand and the number of partitions that are
accessed at a time as the third operand. CAB buffer handler then calculates the
required number of buffers based on the CAB parameters specified for each data
sets. It allocates enough buffer space so that CAB buffering requirements specified
by the CAB control statement are met for each data set as long as partitions more
than the number specified in the PARTPROC statement are not accessed.
The total amount of storage used for the CAB buffer space for the HALDB is
reported in the HALDB Buffering Statistics report (see HALDB Buffering Statistics).
This input data set provides control statements that affect CAB buffering. The
following table shows a brief review of the HSSROPT control statements that you
The RANSIZE parameter has the greatest effect on both elapsed time and buffer
space. The number of buffers allocated by CAB to each PCB/data set combination,
except for the prime data set group of HDAM, is given by:
(RANSIZE x (NBRSRAN + 1)) + NBRDBUF
Additional CAB buffers of the same number are allocated for the overflow area of
the prime data set group of HDAM and PHDAM if 'OVERFLOW CAB', which is
the default, is specified.
The use of these default parameter values should greatly reduce elapsed time. The
default values result in the allocation of buffers of RANSIZE x 11 (and additional
CAB buffers for the overflow area of the prime data set group of HDAM or
PHDAM).
Although CAB uses a fair amount of storage for buffer space, it normally uses
virtual and real storage for less time than BB. By default, the CAB buffers are
page-fixed for better performance, but the page-fixing can be disabled by coding
the NOFIX control statement in the HSSROPT DD.
Larger blocks or CIs are often beneficial to sequential processing since, with
conventional buffer handlers, one full DASD rotational delay is lost between each
I/O for two consecutive blocks or CIs. Increasing the block size or CI size
decreases the number of blocks or CIs and, consequently, the number of lost
rotational delays and the elapsed time.
With CAB, this problem can sometimes be solved by using small block sizes or CI
sizes for random processing. Sequential processing with CAB does not suffer, since
CAB may chain CCWs in order to read many of these smaller blocks together as if
they were parts of one single larger block.
The SMF EXCP statistics for data sets used by HSSR Engine should be used for
reference only. "CAB Statistics" does not report the EXCP counts, but does report
the number of I/O requests. For VSAM ESDS, one GET macro is used by one I/O
request. For OSAM, the READ macro is used and the number of READ macros is:
v 1 for direct I/O
v The value of RANSIZE for chained sequential I/O
If you did not get satisfactory results by running your IMS High Performance
Unload job with the default CAB parameters, you can attempt tuning.
Procedure
The following steps describe a possible approach to tuning CAB's reference pattern
analysis logic:
1. Run your application program or the FABHTEST utility on a dedicated system
with CAB and with the default values for the CAB parameters.
Activate the machine-readable buffer handler trace for future FABHBSIM runs.
(This increases the processor time slightly; bear this fact in mind when you
compare processor times.)
Note: Performance tests with databases that contain fewer than 300,000
segments are not reasonable because CAB buffer handler has a high
initialization overhead.
If you code 'CABSTAT YES' in the HSSROPT data set, extensive buffer handler
statistics are printed at the end of the job step on the HSSRSTAT data set. See
“CAB Statistics report” on page 246 and “Data Set I/O Statistics report” on
page 244.
Tip: After you have tuned the buffer handler, you can remove the CABSTAT
control statement to reduce the content of the report. If no CABSTAT
control statement is coded, or 'CABSTAT NO' is specified in the HSSROPT
data set, only the summary page of the CAB Statistics is printed for each
buffer pool.
2. Run the same program with BB on a dedicated system by coding the BUF
control statement in the HSSROPT DD.
3. Check the results of both runs. First compare the elapsed time.
Note the number of sequential buffers not referred to, and the number of
blocks read in chained sequential mode and direct mode.
If your database is well organized, CAB should show excellent elapsed time
figures. Unless you want to reduce the buffer space, no further tuning is
needed.
If your database is poorly organized, CAB might show moderate or
disappointing results.
The HSSRCABP DD statement of the IMS High Performance Unload jobs can then
refer to the members of this PDS. Multiple members can be referred to through
concatenated DD statements.
Before you code CAB control statements, you should be familiar with the following
general coding rules:
v CAB control statements other than the PARTPROC control statement must be
provided in groups in the HSSRCABP data set. There must be one group of
control statements for each set of data sets to be buffered by CAB.
v Each group of CAB control statements must begin with a CABDD statement that
identifies (by ddname) a set of data sets to be buffered by CAB. The group ends
when the next CABDD statement or the end-of-file is encountered.
v A group can contain additional control statements after the CABDD statement.
v The first control statement entry must be a keyword that identifies the type of
control statement being defined. It is often the name of a CAB parameter.
v The keyword must always be followed by a single blank.
v The blank is followed by variable data. This variable data is often the value to
be assigned to a CAB parameter.
The CABDD control statement can have one of the following formats:
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CABDD ddname
'pattern' *ALL
*HD
*HS
*PHDMIGRATE
Position
Description
1 Code the CABDD keyword to change the CAB buffering parameters for
the set of data sets determined from the value specified in the operand of
the statement.
The INTER control statement must be used to activate this feature. By default, no
Inter-PCB Look-Aside is done in CAB. This option has a meaning only when
multiple HSSR PCBs refer to the same database.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
INTER YES
Position
Description
1 Code the INTER keyword to change the INTER option.
7 Code YES to activate the CAB inter-PCB look-Aside.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
NBRDBUF n
Position
Description
1 Code the NBRDBUF keyword to change the number of direct buffers.
9 Code the numeric value n from 3 through 255 to be left-aligned. The
default value assigned to NBRDBUF is twice the number assigned to
RANSIZE, which is the number of single blocks or CIs resident in a buffer
for look-aside purposes.
For each data set of each PCB for which CAB is used (except for the prime data set
group of HDAM and PHDAM, as described in “OVERFLOW control statement”
on page 291), CAB allocates the following number of buffers:
RANSIZE x (NBRSRAN + 1)
If the database is well organized, you do not need to change the default value; if
the database is disorganized, increasing the NBRSRAN value could increase the
benefits achieved through look-aside buffering.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
NBRSRAN n
Position
Description
1 Code the NBRSRAN keyword to change the NBRSRAN value.
9 Code the numeric value n to be left-aligned with a numeric value from 3
through 9999. It is the number of ranges resident in a buffer for look-aside
purposes.
The default value assigned to NBRSRAN is 8.
For a database that uses the OSAM for its database data sets, if no OCCURRENCE
control statement is entered, HSSR assumes that the set of control statements
applies to all HSSR PCBs referring to the data set or data sets identified by the
CABDD statement.
For a database that uses the VSAM ESDS for its database data sets, CAB buffering
can be used for only one PCB, which, by default, is the first PCB referring to the
database. BB buffering is used when HSSR buffer handler accesses the database
through the rest of the PCBs. This default can be changed by the OCCURRENCE
control statement.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
OCCURRENCE n
Position
Description
1 Code the OCCURRENCE keyword to activate the OCCURRENCE option.
12 This entry specifies that the group of control statements applies to the nth
HSSR PCB referring to the data set identified by the CABDD statement.
The OVERFLOW control statement affects the buffering efficiency for the prime
data set group of an HDAM database, or of the prime data set groups of a
PHDAM database; especially, it affects both the size of the buffer space and the
elapsed time.
The same OVERFLOW statement must be specified for each prime data set group
of partitions of a PHDAM database.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
OVERFLOW CAB
SHR
BB
Position
Description
1 Code the OVERFLOW keyword to change the OVERFLOW option.
The total number of buffers allocated for the first data set group of
a PHDAM database depends on the PARTPROC statement
specified for the database.
SHR SHR instructs CAB to use the same buffer for both the root
addressable area and the overflow area.
Chained sequential I/O is possible in both areas.
The number of (shared) buffers allocated for the first data set
group of HDAM is:
RANSIZE x (NBRSRAN + 1) + NBRDBUF
The total number of buffers allocated for the first data set group of
a PHDAM database depends on the PARTPROC statement
specified for the database.
BB BB does not allow chained sequential I/O in the HDAM or
PHDAM overflow area. If only a small number of I/Os are
performed in the overflow area, the OVERFLOW BB option is
reasonable.
The OVERFLOW BB option specifies that CAB buffers the root
addressable area and that BB buffers the overflow area. No chained
sequential I/O takes place in the overflow area.
The OVERFLOW BB option uses less buffer space than the
OVERFLOW CAB option. For HDAM, the total number of buffers
allocated is the sum of the following:
v For the root addressable area,
RANSIZE x (NBRSRAN + 1) + NBRDBUF
v For the overflow area,
NBRDBUF
The total number of buffers allocated for the root addressable areas
and overflow areas of the first data set group of a PHDAM
database depends on the PARTPROC control statement specified
for the database.
For a HALDB, CAB buffers are shared among the data sets in a data set group. As
in the unload utilities such as the FABHURG1 or FABHFSU utility, if only one
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PARTPROC dbd_name
PARTPROC dbd_name S
PARTPROC dbd_name R nnnn
Position
Description
1 Code the PARTPROC keyword to change the PARTPROC option for a
HALDB or for all HALDB.
10 This required entry identifies the HALDB or HALDBs to which the
PARTPROC option applies. The string must be left-aligned.
Keyword
Description
dbd_name
Indicates that the PARTPROC option applies to the HALDB
identified by the DBD dbd_name.
*PHD Indicates that the PARTPROC option applies to all HALDBs.
19 Code one of the following keywords:
Keyword
Description
S | blank
The keyword S stands for sequential access and tells CAB to prepare
a buffer space that can buffer only one partition for each HALDB
specified on the column 10.
If this option is specified, the CAB parameters RANSIZE,
NBRSRAN, NBRDBUF, OVERFLOW, REFT4, and INTER that are
specified for a partition are reset when the processing of the
partition starts.
This is the default for all HALDBs.
R The keyword R stands for random access and instructs CAB to
prepare the buffer space that can buffer nnnn partitions of the
HALDB specified on the column 10. If the number nnnn on column
21 is omitted, nnnn = 2 is assumed.
If this keyword is specified, the CAB buffers each data set on the
basis of CAB parameters RANSIZE, NBRSRAN, NBRDBUF,
OVERFLOW, REFT4, and INTER that are specified for the
partition, as long as no more than nnnn partitions are accessed at a
time.
21 Specify the maximum number of partitions to be accessed at a time. The
default value is 2 when the keyword R is specified in column 19.
This parameter can be specified only when the keyword R is specified in
column 19.
The number nnnn must be 1- to 4-characters long and must be left-aligned.
The number of sequential buffers allocated by CAB for each data set of each PCB
to which CAB is used is:
RANSIZE x (NBRSRAN + 1)
The default RANSIZE value for each database data set is determined by HSSR
buffer handler from the characteristics of the data set, such as the block size or the
CI size.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
RANSIZE n
Position
Description
1 Code the RANSIZE keyword to change the RANSIZE value.
9 Code the numeric value n left-aligned with a numeric value from 2
through 255.
Notes:
v Performance is questionable when CAB buffers OSAM data sets with a
RANSIZE smaller than 4.
v A limited number of CIs can be read by the access method within one
single-chained I/O operation. The limit depends on the CI size. When
HSSR buffer handler detects that the RANSIZE value causes the use of
more than a limited number of CIs for an ESDS database, the buffer
handler changes the value of RANSIZE to the allowable maximum.
v When the RANSIZE default value is overridden, the REFT4 parameter, if
it is coded, must be adjusted. (See “REFT4 control statement.”)
When the number of referred-to OSAM blocks or ESDS Control Intervals (CIs) is
below REFT4, CAB usually performs direct I/O. When the number of referred-to
OSAM blocks or ESDS CIs has reached REFT4, CAB usually performs chained
sequential I/O.
The REFT4 setting helps determine how often direct I/O and chained sequential
I/O are performed. If the REFT4 setting is too low, CAB may perform chained
sequential I/O in cases where direct I/O is superior. Some of the OSAM blocks or
ESDS CIs read in chained sequential mode are not referred to at this time. If the
Usually, you do not need to code the REFT4 control statement. Consider coding the
control statement only when the default value is not satisfactory. The
recommended range of values for REFT4 is between 100% and 200% of RANSIZE.
For example, when RANSIZE=8, the recommended range of values for REFT4 is
from 8 to 16 inclusive.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
REFT4 n
Position
Description
1 Code the REFT4 keyword to change the REFT4 threshold.
7 Code the numeric value n to be left-aligned.
The default value is equal to the RANSIZE value.
Subsections:
v “Example 1: CAB control statements for FABHULU jobs ”
v “Example 2: OCCURRENCE control statements for a VSAM ESDS database”
v “Example 3: Specifying multiple CABDD groups” on page 297
These examples are for nonpartitioned databases. For examples of how to specify
CAB control statements for PHDAM or PHIDAM databases, see Chapter 8,
“Methods for processing High Availability Large Databases,” on page 127.
These examples are not examples of a real production job. They merely
demonstrate how HSSRCABP control statements, as well as HSSROPT control
statements, can be specified.
In the following JCL, 'CABDD *ALL' is coded in HSSRCABP DD, which means
that the CAB parameter values are overridden by the value specified in the
succeeding control statements.
Assume that the database processed is well organized and not fragmented, and
that the set of parameters is selected to reduce the amount of buffer space used by
CAB from the default specification and to allocate 19 CAB buffers.
// EXEC FABHULU,MBR=FABHURG1,DBD=HIDOSAM
//HSSRCABP DD *
CABDD *ALL
RANSIZE 4
NBRSRAN 3
NBRDBUF 3
OVERFLOW SHR
REFT4 6
/*
//HIDOSAMD DD DSN=TESTDS.HIDOSAMD,DISP=SHR
//HIDOSAMX DD DSN=TESTDS.HIDOSAMX,DISP=SHR
//SYSPRINT DD SYSOUT=A
In the following FABHDLI job, 'CABDD *ALL' is coded in HSSRCABP DD. This
means that, for all databases that are read by HSSR Engine using CAB buffering,
the CAB parameter values to be overridden by the value specified in the
succeeding control statements.
The OCCURRENCE statement in this example specifies that the second PCB in the
PSB is to be buffered with CAB. The succeeding statements allocate 23 CAB buffers
for the database when it is accessed through the second PCB.
The HSSROPT data set contains control statements that affect CAB buffering. The
'HSSRPCB *ALL' statement specifies that all DB PCBs in the PSB HRDHDAMG are
HSSR PCBs. The BUTR control statement activates a trace of CAB buffer handler
activities; the HSSRBUTR DD statement defines the output data set. The
NOVSAMOPT prevents CAB from using the default read-ahead threshold value
used by VSAM.
The SYSIN data set provides the input to the FABHTEST utility.
// EXEC FABHDLI,MBR=FABHTEST,PSB=HRDHDAMG
//SYSIN DD *
PCB 2
GN GB
/*
//HSSROPT DD *
HSSRPCB *ALL
BUTR
NOVSAMOPT
/*
//HSSRCABP DD *
CABDD *ALL
OCCURRENCE 2
RANSIZE 4
NBRSRAN 4
NBRDBUF 3
OVERFLOW SHR
REFT4 6
/*
//ESDSDATA DD DSN=TESTDS.ESDSHDAM,DISP=SHR
//SYSPRINT DD SYSOUT=A
//HSSRBUTR DD DSN=HPU.HSSRBUTR,UNIT=TAPE,DISP=(,KEEP)
In this example, assume that the user application program USERAPPL accesses
two databases DB1VSAM and DB2OSAM; the HDAM database DB1VSAM over
VSAM ESDS has data set groups DB1DSG1 and DB1DSG2; and the HIDAM
database DB2OSAM over OSAM has data set groups DB2ROOT, DB2DEP01, and
DB2DEP02.
In the following JCL, two CABDD groups, 'DB1DSG%' and 'DB2*', are specified in
HSSRCABP DD. The use of the wild cards in DD names 'DB1DSG%' and 'DB2*'
causes all data sets for DB1VSAM and for DB2OSAM to be selected.
The CAB control statements succeeding each CABDD statement specify the CAB
parameters for the specified CABDD group.
Topics:
v “Control statements that affect performance” on page 300
v “Determining the appropriate number of BB buffers” on page 302
The following table shows a brief description of the HSSROPT control statements
that you might want to consider using with BB.
Table 32. HSSROPT control statements for Basic Buffer handler
Control statements Description
BUF If you want to use BB for ESDS and OSAM data sets, you must
code this statement for the DBD, and specify the number of BB
buffers.
The optional BUF control statement specifies a database for which the BB buffer
handler is to be used, and to override the default number of buffers for BB.
The BB buffer handler allocates a separate buffer pool for each data set group of
the database. It also allocates a certain number of buffers to each of these buffer
pools—either the default or a specified number.
The default number of buffers depends on how the PCB is defined as an HSSR
PCB. If an HSSR PCB is defined by use of either an HSSRPCB or an HSSRDBD
control statement, and the value to the KEYLEN keyword for the PCB is less than
200, BB allocates six basic buffers for each data set as the default. If the KEYLEN
value for the PCB is greater than 200, the number of basic buffers to be allocated is
determined as explained in “Number of Basic Buffers for an HSSR PCB” on page
485.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the BUF keyword to specify a database for which the BB buffer
handler is to be used and to override the default number of buffers for BB.
5 Code the 8-byte dbdname to specify the database for which the default
number of buffers will be overridden (if the database name is not 8 bytes
long, include trailing blanks).
The BUTR control statement directs HSSR Engine to create a file containing a
machine-readable trace of internal calls to the buffer handler.
This trace, which is written to the HSSRBUTR data set, can be used as input to
FABHBSIM, the HSSR Buffer Handler Simulation utility.
Note: For instructions for using the buffer handler simulation utility, see
Chapter 17, “Buffer handler simulation utility (FABHBSIM),” on page 317.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
BUTR
Position
Description
1 Code the BUTR keyword to instruct HSSR Engine to create a file that
contains a machine-readable trace of internal calls to the buffer handler.
Procedure
You can use the following aids, provided by HSSR Engine, for tuning the BB buffer
handler:
v BB I/O and buffer handler statistics are provided in the HSSRSTAT data set (see
“Data Set I/O Statistics report” on page 244).
v The FABHBSIM utility enables you to observe the effect of changes to BUF
control statements in the HSSROPT data set.
No formula is provided for calculating the optimum number of ESDS or OSAM
buffers because each database or application has its own characteristics. However,
take the following into account:
v For sequential processing of a recently loaded database, two ESDS or OSAM
buffers should be sufficient.
v For sequential processing of an older, not well-organized database, additional
ESDS or OSAM buffers might improve performance.
v When a database is processed at random, allocation of more than two buffers
might be beneficial. The nth random I/O operation might find its data in a
buffer already filled during an earlier random operation.
Topics:
v “FABHTEST restrictions” on page 304
v “Running FABHTEST to test HSSR calls” on page 305
v “FABHTEST JCL requirements” on page 306
v “FABHTEST input” on page 307
v “FABHTEST output: SYSPRINT output data set” on page 313
v “FABHTEST JCL examples” on page 314
Notes:
– REPL call is supported for the compatibility with DBT HSSR and PO
HSSR.
– REPL calls are not allowed for PHDAM or PHIDAM databases.
Procedure
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for FABHTEST.
Table 33. FABHTEST DD statements
DDNAME Use Format Need
SYSIN Input LRECL=80 Required
SYSPRINT Output LRECL=133 Required
// EXEC FABHDBB,MBR=FABHTEST,PSB=psbname
// EXEC FABHULU,MBR=FABHTEST,DBD=dbdname
FABHTEST processes eight types of control statements. Any syntax error within an
FABHTEST control statement leads to an error message and an abend with dump.
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as a member of a partitioned data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GN GB seg_name
GHN GB seg_name
n seg_name
Position
Description
1 Code the GN or the GHN keyword to identify this as a get-next control
statement or a get-hold-next control statement.
5 Code one of the following optional keywords:
Keyword
Description
GB FABHTEST issues GN or GHN calls until the end of the database
is reached.
n The number of GN or GHN calls that FABHTEST issues. Code a
number containing up to 10 digits, left-aligned. Leading zeros are
not necessary.
Blank FABHTEST issues 1 GN or GHN call.
16 Code one of the following optional keywords:
Keyword
Description
seg_name
Code the name of a segment. FABHTEST issues GN or GHN calls
with an unqualified SSA.
If no segment name is specified, GNP or GHNP calls without SSA are issued. If a
segment name is specified, GNP or GHNP calls with an unqualified SSA are
issued.
Prerequisite: Before specifying the GNP or the GHNP statement, you must
establish a valid parentage by specifying a GN, GHN, GNR, GHNR,
GU, or GHU statement.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GNP GE seg_name
GHNPGE seg_name
n seg_name
Position
Description
1 Code the GNP or the GHNP keyword to identify this as a
get-next-in-parent control statement or a get-hold-next-in-parent control
statement.
5 Code one of the following optional keywords:
Keyword
Description
GE FABHTEST issues GNP or GHNP calls until the end of the segment
occurrence under the current parent.
n The number of GNP or GHNP calls that FABHTEST issues. Code a
number containing up to 10 digits, left-aligned. Leading zeros are
not necessary.
Blank FABHTEST issues 1 GNP or GHNP call.
16 Code one of the following optional keywords:
Keyword
Description
seg_name
Code the name of a segment. FABHTEST issues GN or GHN calls
with an unqualified SSA.
Blank FABHTEST issues GN or GHN calls without an SSA.
GNR GB
GHNRGB
n
Position
Description
1 Code the GNR or the GHNR keyword to identify the get-next-root call
control statement or the get-hold-next-root call control statement.
5 Code one of the following optional keywords:
Keyword
Description
GB FABHTEST issues GNR or GHNR root calls until the end of the
database is reached.
n The number of GNR or GHNR calls that FABHTEST issues. Code a
number containing up to 10 digits, left-aligned. Leading zeros are
not necessary.
Blank FABHTEST issues 1 GNR or GHNR call.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GU nbr = keyvalue..............................................c
GHU nbr = keyvalue..............................................c
...............
Position
Description
1 Code the GU or the GHU keyword to identify the get-unique control
statement or the get-hold-unique control statement.
5 This entry lists the number of times the call is to be repeated. Code a
number containing up to 10 digits. This value neither requires leading
zeros nor has to be aligned. If only one GU or GHU is to be issued, omit
this step.
16 Code either a blank or a valid relational operator. SSA relational operators
are restricted to =b, b=, EQ, =>, >=, GE (where b represents a single blank).
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
Position
Description
1 Code the PCB keyword to identify this statement as a PCB statement.
5 Code the PCB number left-aligned. The first PCB is number 1.
If no PCB control statement is provided, FABHTEST uses the first database
PCB.
16 Code the dbdname of PCB.
If no dbdname is specified on the PCB control statement, FABHTEST uses the PCB
number field. If a dbdname is specified, the first database PCB referring to that DBD
is used.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
REPL
Position
Description
1 Code the REPL keyword to identify the replace control statement.
Notes:
Any of the HSSROPT options that are appropriate to your task can be used. The
CO, TRHC, and TRDB control statements must always be included, unless a
performance test is being conducted. Some HSSROPT control statements that
might be useful when used with FABHTEST are as follows:
Table 34. HSSROPT control statements for FABHTEST
HSSROPT control
statement Description
CO The compare option reissues HSSR calls as DB/I calls.
Any of the HSSRCABP options that are appropriate to your task can be used.
Some HSSRCABP control statements that might be useful when used with
FABHTEST are summarized in the following table.
Table 35. HSSRCABP control statements for FABHTEST
HSSRCABP control
statement Description
CABDD Specifies data sets to which the succeeding CAB control statements
apply.
NBRDBUF Specifies the number of single blocks or CIs read in direct mode
that are to reside in the buffer for look-aside buffering.
NBRSRAN Specifies the number of ranges to be buffer-resident.
OVERFLOW Enables chained sequential I/O in the HDAM overflow area or in
the overflow area of each partition of PHDAM database.
PARTPROC Specifies the processing intent. This statement is valid only for a
PHDAM or PHIDAM database.
RANSIZE Specifies the number of blocks or CIs to be read together in
chained mode.
In addition to the report generated by the FABHTEST utility, reports and statistics
produced by HSSR Engine are written in HSSRSTAT and HSSRTRAC data sets. For
the reports generated by HSSR Engine, see Chapter 12, “Reports and output from
HSSR Engine,” on page 239.
Format
The data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133.
This printed report contains a printed copy of the input control statements read by
FABHTEST from the SYSIN data set.
.........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
GHU GE0000000500
GHNR
GHN
GU
GN 5
GU EQ0000001500
GNR 4
GHU
REPL
GHN
REPL
GN GB
Subsections:
v “Example 1: Using FABHTEST for problem determination”
v “Example 2: Using FABHTEST to test performance”
To do problem determination with FABHTEST, you can use the JCL shown in the
following figure.
To test performance with FABHTEST, you can use the JCL shown in the following
figure.
The SYSIN control statement requests FABHTEST to sequentially retrieve the entire
database. 'CABSTAT YES' is specified in HSSROPT DD to produce the detailed
CAB Statistics report. The TESTDB and TESTIDX DD statements identify an
HIDAM database.
This utility enables you to observe the effect of the changes to parameters of the
buffer handlers, without actually performing database I/O operations and segment
processing. FABHBSIM might help realize significant productivity gains by
determining the optimum numbers and sizes of buffers.
With FABHBSIM, you can simulate a previous run of an IMS High Performance
Unload job and obtain standard reports produced by HSSR Engine. You can use
the FABHBSIM utility to do the following tasks:
v Analyze buffer handler performance
v Tune buffer handler parameters
v Assist in improving performance of your IMS application programs
v Aid in improving productivity of your IMS database
Topics:
v “FABHBSIM restrictions” on page 318
v “Running FABHBSIM to simulate the buffer handler” on page 319
v “FABHBSIM JCL requirements” on page 320
v “FABHBSIM input” on page 321
v “FABHBSIM output: HSSRSTAT output data set” on page 322
v “FABHBSIM JCL example” on page 323
Procedure
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for FABHBSIM.
Table 36. FABHBSIM DD statements
DDNAME Use Format Need
SYSUT1 Input HSSRBUTR data set Required
// EXEC FABHDBB,MBR=FABHBSIM,PSB=psbname
// EXEC FABHULU,MBR=FABHBSIM,DBD=dbdname
SYSUT1 DD
This required input data set defines the data set for buffer handler trace.
You must create the buffer handler trace data set in an earlier run of your
IMS High Performance Unload job. It is the data set that was defined by
the HSSRBUTR DD statement in the earlier run. Here is an example of the
format for this data set:
//SYSUT1 DD DSN=HSSRBUTR,DISP=OLD,UNIT=tape,VOL=SER=xxxxxx
The pertinent HSSROPT option to be used with FABHBSIM is the BUF control
statement. It modifies the number of BB buffers.
Any of the other HSSROPT options that are appropriate to your task can be used.
But the DBDL1 control statement with the *ALL keyword must not be used.
For a complete description of the HSSROPT control statements, see Chapter 11,
“Options for HSSR Engine,” on page 203.
The reports produced in the HSSRSTAT data set are the primary output from
FABHBSIM. These reports are produced by the HSSR Engine. For details about
these reports, see Chapter 12, “Reports and output from HSSR Engine,” on page
239.
To use FABHBSIM in simulating buffer handlers and tuning buffers, use the JCL
shown in the following figure.
The CABDD control statement specifies that the succeeding CAB control
statements apply to all HD databases. The NBRSRAN control statement specifies
that 30 ranges should reside in the buffer for look-aside buffering purposes. (Other
HSSRCABP control statements can be inserted as appropriate.) 'CABSTAT YES' in
HSSROPT DD requests that HSSR Engine produce detailed CAB Statistics report.
The SYSUT1 DD statement defines an input data set, which is the HSSRBUTR data
set produced by an earlier run of an IMS High Performance Unload job.
PSPI
PSPI
Topics:
v “Runtime Environment exit (FABHRTEX)” on page 326
v “Buffer Handler Initialization exit (FABHCEX)” on page 328
v “Return Code Edit exit (FABHRCEX)” on page 329
v “User record-formatting routine” on page 331
v “Product-sensitive macros” on page 347
PSPI
The runtime environment exit routine is called during the initialization of the IMS
High Performance Unload program controller before the application program is
called; the routine is called once more after, control is returned from the
application program to the program controller.
Note: For details of system structure, see “IMS High Performance Unload system
structure” on page 12.
You can use an exit routine that has a different name, by specifying the RTEXIT
control card in the HSSROPT data set. Use this control statement if you need to set
up a special runtime environment for a special application or for an exit routine for
FABHURG1 or FABHFSU.
The following information message is issued only if you provide your own
runtime environment exit routine:
FABH0826I: RUN TIME ENVIRONMENT EXIT ROUTINE IS
BEING INVOKED, MODULE=xxxxxxxx
If the specified exit is not found, abend U4013 occurs and the following message is
issued:
FABH0850E LOAD FAILED FOR RTEXIT (xxxxxxxx), CC=yyyy, RC=zz
PSPI
PSPI
The following table shows what the registers contain on entry to the routine.
Table 37. Register contents upon entry to a user exit
Register Contents
1 Address of call parameter list
14 Return address to the caller
15 Entry point address of the runtime exit routine
The address of the parameter list is set in register 1; the following table shows the
parameters passed to the routine.
When control is returned to the caller, the contents of all registers except register 15
must be restored. Register 15 must contain a return code. The meanings of the
return codes are provided in the following table.
Table 39. FABHRTEX return codes
Value Description
0 Initialization or termination was successful.
Not 0 An error occurred in the runtime environment exit.
Tip: A dummy runtime environment exit routine (FABHRTEX) that returns the
return code of 0 at both initialization and termination calls is provided. You
can code your own FABHRTEX to meet your particular requirements.
PSPI
PSPI
The return codes that FABHCEX can set in Register 15 are listed in the following
table.
Table 40. FABHCEX return codes
Code Description
0 Choose the buffer handler according to specifications of the CAB
control statements in HSSRCABP.
Not 0 Use BB.
For example, FABHCEX can be used to check the time of day and whether the IMS
online system is running. After making these determinations, FABHCEX issues a
return code and selects a buffer handler.
The conventions for linkage between HSSR Engine and FABHCEX are the standard
MVS linkage conventions. No parameters are passed to FABHCEX. The FABHCEX
routine must be a load module named FABHCEX, and must be in a program
library accessible to HSSR Engine.
The program control is transferred to the routine in the addressing mode of the
routine.
Tip: IMS High Performance Unload provides a dummy routine (FABHCEX), which
always returns a return code of 0. You can code your own FABHCEX exit
routine to meet your particular requirements.
PSPI
FABHRCEX is called before control is returned from the IMS High Performance
Unload program controller (FABH000) to the IMS region controller (DFSRRC00).
Note: For details of system structure, see “IMS High Performance Unload system
structure” on page 12.
If you want to use the exit, you must write an exit routine in Assembler, and then
assemble and link-edit it as load module FABHRCEX. The library that contains
FABHRCEX must be specified in the JOBLIB DD concatenation or the STEPLIB DD
concatenation of your IMS High Performance Unload job.
The addressing mode of a Return Code Edit exit routine can be either 24 or 31. The
residency mode can be either 24 or ANY. The reusability attribute can be either
REUS or RENT.
The following informational message is issued only if the IMS High Performance
Unload program controller can find FABHRCEX in the libraries specified in the
JOBLIB or the STEPLIB DD statement, and load it:
FABH0881I applname ENDED WITH RC=xx, WHICH MIGHT BE CHANGED BY FABHRCEX EXIT
If the IMS High Performance Unload program controller fails to load FABHRCEX,
abend U4013 occurs and the following error message is issued:
FABH0854E LOAD FAILED FOR FABHRCEX EXIT, CC=xxxx, RC=yy
Subsections:
v “Interface to Return Code Edit exit routine”
v “FABHRCEG sample JCL” on page 330
The following table shows what the registers contain on entry to the routine.
Table 41. Register contents upon entry to FABHRCEX
Register Contents
1 Address of call parameter list
14 Return address to the caller
15 Entry point address of the Return Code Edit exit routine
The address of the parameter list is set in register 1; the following table shows the
parameters passed to the routine.
Table 42. FABHRCEX parameters
Word Content
1 Pointer to an 8-byte character field that contains the application program
name
2 Pointer to a 4-byte field that contains the return code to be edited
FABHRCEG is a sample JCL stream for use in creating a Return Code Edit exit
routine. It is provided as a member of the HPS.SHPSSAMP library. FABHRCEG
assembles and link-edits the FABHRCEX exit routine in the HPS.SHPSLMD0 load
module library.
PSPI
The FABHURG1 unload utility ordinarily runs without any user routines. It
unloads a database into one of six different formats by invoking one of six
standard record-formatting routines.
PSPI
Logic of FABHURG1
The database unload processing is performed by the common logic, a
user-selectable record-formatting routine, and an optional user exit routine. The
user-selectable record-formatting routine can be any one of six standard
record-formatting routines or a user record-formatting routine.
Subsections:
v “Common logic”
v “Record-formatting routine” on page 332
v “Optional user exit routine” on page 332
PSPI
Common logic
Record-formatting routine
The record-formatting routine is invoked each time a database segment has been
retrieved by the common logic. It is the responsibility of the record-formatting
routine to edit output records from the retrieved database segments. FABHURG1
provides six standard record-formatting routines. System programmers can provide
their own user record-formatting routines if they want to create a database unload
format of their own.
After having reached the database end, the common logic invokes the
record-formatting routine one last time so that it can do its own termination
processing and cleanup processing. You must check whether the call is the last call
by checking the status code in the PCB feedback area of the HSSR PCB (see
“Parameter 4: HSSR PCB” on page 336).
The optional user exit routine is invoked (after record-formatting processing) each
time a database segment that the record-formatting routine does not skip is
retrieved.
The optional user exit routine can modify or edit the record composed by the
record-formatting routine. One possible use of user exit routines by system
programmers is to build the logical parent's concatenated key.
Both record-formatting routines and user exit routines can optionally perform the
following actions:
v Create their own output data sets (in addition to or instead of SYSUT2).
v Issue DL/I calls or HSSR calls against PCBs other than the PCB that is used by
the common logic of FABHURG1.
v Indicate that the current database segment or database record should not be
processed further and that the skipped database segments should not be written
to SYSUT2. They can also indicate that the common logic should resume its
retrieval at a root with a specifiable key.
After having reached the database end, the common logic invokes the optional
user exit routine one last time so that it can do its own termination processing and
cleanup processing. For example, all opened files can be closed when the last call
is issued. You must check whether the call is the last call by checking the status
code in the PCB feedback area of the HSSR PCB (see “Parameter 4: HSSR PCB” on
page 336).
PSPI
On entry, the routines should save the registers; on return, they should restore all
registers except Register 15. On entering to the routines, the following registers
contain the information provided in the following table.
Table 43. Register contents at entry to routines
Register Contents
1 Address of call parameter list
13 Address of caller's save area
14 Return address to database unload utility
15 Entry point address into user routine
Upon returning to the common logic, Register 15 must contain a binary return
code 0 - 4. The codes are explained in the following table.
Table 44. Exit routine return codes
Code Description
0 Processes this database segment.
1 Stops processing of this database segment and does not write it to SYSUT2.
Retrieves the next data-sensitive segment.
2 Stops processing of this database segment and does not write it to SYSUT2.
Retrieves the next database root segment. (All remaining segments of the current
database record are skipped.)
3 Stops processing of this database segment, and does not write it to SYSUT2.
Continues database retrieval with the root whose key is greater than or equal to
the key value specified by the user exit routine in call parameter 9 (the key of the
next root).
If a Data Conversion exit routine is used for the database, the key of the next root
must be specified in the application form.
4 Stops the processing of this database segment, and does not write it to SYSUT2.
Does not retrieve any further database segments, and stops processing.
If a routine sets a return code 1, the dependents of the current database segment
are not skipped by the common logic. Skipping of these dependent segments is the
responsibility of the routine.
PSPI
Call parameters
This reference topic explains the call parameters for user record-formatting routines
or optional user exit routines.
Subsections:
v “Parameter 1: OUTPUT-AREA” on page 334
v “Parameter 2: Database segment (Segment data)” on page 335
v “Parameter 3: Segment prefix” on page 336
v “Parameter 4: HSSR PCB” on page 336
v “Parameter 5: HSDB” on page 336
PSPI
Parameter 1: OUTPUT-AREA
The following list describes the OUTPUT-AREA for the user record-formatting
routine and optional user exit routines.
OUTPUT-AREA for user record-formatting routine
OUTPUT-AREA contains (at the offset specified by the OFFS utility control
statement) the segment data as returned by the HSSR call.
v If a SYSUT2 DD statement has been provided and is not a dummy,
OUTPUT-AREA is in the SYSUT2 output buffers. SYSUT2 is a
variable-blocked sequential data set. Unless the user record-formatting
routine sets a return code that is not zero, the routine should build a
variable-length SYSUT2 record in the OUTPUT-AREA, storing the binary
record length in the first 2 bytes and binary zeros in the 2 bytes that
follow. The SYSUT2 record is written by the common logic.
v If no SYSUT2 DD statement (real or dummy) has been provided, all
output operations, including open and close, are done by the routine.
The routine can use OUTPUT-AREA to build its output records, or it can
use its own area to build its output record. In the former case, the
overhead of data movement within virtual storage is reduced. In the
latter case, it is the responsibility of the routine to develop a method to
pass the address of the output record to the optional user exit routine.
OUTPUT-AREA for optional user exit routine
OUTPUT-AREA contains the output record as it is built by the
record-formatting routine. Some user-developed record-formatting routines
can build the output record into areas other than the OUTPUT-AREA.
Warning: The header field of the *HD unload format record for HALDB is
longer than the one for non-HALDB. The offset of the segment data is
different between non-HALDB and HALDB. To refer to the segment data,
it is recommended that you use “Parameter 2: Database segment (Segment
data)” on page 335 than to use “Parameter 1: OUTPUT-AREA.”
The header field contains the segment name, but it is not recommended
that you use it. Instead, refer to the segment name contained in the HSSR
PCB, which is pointed to by “Parameter 4: HSSR PCB” on page 336.
The following figure provides an example of a part of an exit routine that
is coded in COBOL.
This parameter contains the pointer to the database segment as returned by the
HSSR call. If a standard record-formatting routine is used, the segment data is after
the header field that is pointed to by parameter 1. If a user-developed
record-formatting routine that can be specified in the FRMT control statement is
used, the segment data is within the OUTPUT-AREA at the offset specified by the
OFFS control statement. The user-developed record-formatting routines might
modify the database segment. In such a case, the optional user exit routine, if it is
used, sees this modified data instead of the database segment as returned by the
HSSR call. You need to be careful when you modify the database segment because
there are other segments in the OUTPUT-AREA.
If the USEGMAX control statement is specified, the work area for segment editing
is reserved after the segment data. The total length of the segment data area plus
the work area is the length specified by the USEGMAX statement. If the ULEN or
OFFS control statement is specified, the work area that is pointed to by Parameter
1 and whose length is equal to the length specified by the OFFS statement is
reserved to be used as your record header. The work area whose length is equal to
ULEN minus OFFS is reserved after the segment data.
You can use these work areas in editing or expanding the segment data, but if you
change the length of the segment data, you must also update the fields in the
OUTPUT-AREA that are affected by that change of length. For example, the first
two bytes of the OUTPUT-AREA pointed to by Parameter 1 must be updated with
the new record length, if the record is written to the SYSUT2 data set. If your
segment record header has a segment length field, it must be updated. If the
segment itself has fields for segment length or field lengths, they must be updated,
too. The exit routine is responsible for updating these fields.
If FABHURG1 is run with the DECN option, the segment data for which a
Segment Edit/Compression routine is specified is passed to your exit routine in the
This parameter contains the segment prefix as it is stored in the database. The user
routine must not modify this parameter.
Note: During a migration unload, this parameter contains the binary zero for a
virtual logical child.
This parameter contains the HSSR PCB used by the main logic of FABHURG1 to
sequentially retrieve the database. The HSSR PCB contains the segment name, the
segment level, the key feedback area, the length of the key feedback area, and the
status code.
Note: For information about HSSR PCB, see “HSSR PCB feedback information” on
page 105.
The user routine must always test the status code. If the status code is GB, the end
of the database has been reached and the user routines should perform their
termination processing and cleanup processing, including closing all files opened
by the routine.
Parameter 5: HSDB
This parameter contains the HSSR segment descriptor block that describes the
currently retrieved segment type.
The user routine must never modify the HSDB. It can, however, use the 4-byte
field HSDBUSER.
This 4-byte field contains the relative byte address of the segment prefix. The
content of this field has a meaning only for HD databases. The user routine must
never modify this field.
If your IMS environment supports the HALDB Online Reorganization (OLR), you
must check whether the SPHALDB flag and the SPMACTV flag, which are shown
in the preceding figure, are on. If both of them are on, the value in SPRBA is not
the real RBA and the odd RBA indicates that the segment is on the M-V,Y set of
the data sets. In this case, you must move bit 1 of SPRBA.
Note: During a migration unload, this parameter contains the binary zero for a
virtual logical child.
This 2-byte binary field contains the length of the segment data that is returned by
the HSSR call. The user routine must never modify this field.
On entering the user routine, the content of this field is unpredictable. If the user
routine sets a return code of 3, the routine must store the key value in this field.
Note: If you are using a Data Conversion exit (DFSDBUX1) for the database in
your FABHURG1 job, you must specify the next root key in the application
form. On the other hand, if you are not using DFSDBUX1 in your
FABHURG1 job, you must specify the next root key in the stored form.
Parameters 10–13
Parameters 14–n
With the exception of the PCB used by the common logic, these PCBs can be used
by user routines to issue HSSR and DL/I calls.
PSPI
PSPI
The OFFS and ULEN control statements have meaning only if a user
record-formatting routine (specified on the FRMT control statement) is active.
These statements specify that the additional space is to be reserved within the area
used by FABHURG1 to issue HSSR calls. This additional space can be used by the
record-formatting routine to build additional header data in its output records in
this area.
The USEGMAX control statement has meaning only if one of the standard record
formats, *HD, *CS, *F1, or *F2, is used, and if an optional user exit routine
(specified on the EXIT control statement) is active. This statement specifies that the
additional space is to be reserved within the I/O area used by FABHURG1 to issue
HSSR calls. This additional space can then be used by the user exit routine to edit
the segment data. See “Parameter 2: Database segment (Segment data)” on page
335.
PSPI
PSPI
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
EXIT exitname c
Position
Description
1 Code the EXIT keyword to identify the exit routine.
6 The left-aligned load module name of the user exit routine. If no EXIT
control statement is provided, no user exit routine is invoked.
15 If a Data Conversion exit routine is used, the user exit routine receives the
segment data that has been converted from the stored form to the
application form.
The 1-character entry c indicates whether the inverse conversion (the
conversion from the application form to the stored form) is to be done
before the segment data edited in the exit routine is written into the output
data set.
Use one of the following codes:
Keyword
Description
Y Do the conversion.
The option Y is valid only for *HD unload format.
This option is valid only when the option DATXEXIT YES is
specified in the HSSROPT data set.
N | blank
Do not do the conversion. N is the default.
Restriction: If the EXIT control statement is specified and one or more partitions
of PHDAM or PHIDAM are in the HALDB OLR cursor-active status,
FABHURG1 ends abnormally.
PSPI
PSPI
FRMT frmt
Position
Description
1 Code the FRMT keyword to identify the format control statement.
6 Code the output format name, which can be either of the following names:
| v The name of one of the standard formats provided by the utility: *HD,
| *CS, *CP, *F1, *F2, or *F3. The default is the *HD unload format, for
| which you do not need this statement.
v The load module name of a user record-formatting routine (see “User
record-formatting routine” on page 331).
Restrictions:
v If you specify a control statement such as MIGRATE or
FALLBACK, you cannot specify any format other than *HD.
v If *CS is specified and one or more partitions of PHDAM are in the
HALDB OLR cursor-active status, FABHURG1 ends abnormally.
PSPI
PSPI
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
OFFS offs
Position
Description
1 Code the OFFS keyword to identify this statement as an OFFS statement.
6 Offset of the database segment within an area used to retrieve segments
with HSSR calls. The bytes in front of the database segment within this
area are reserved for use by the user record-formatting routine.
The length specified does not need to contain leading zeros, or it does not
need to be aligned.
Notes:
v If a standard record-formatting routine is used, OFFS statements are
ignored.
v The value specified on the OFFS statement must not be greater than the
value specified in the ULEN statement.
PSPI
PSPI
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
ULEN ulen
Position
Description
1 Code the ULEN keyword to identify this statement as a ULEN statement.
6 Specify the maximum number of bytes reserved for the user data, within
the HSSR call I/O area, that can be used by the user record-formatting
routine. The length of the HSSR call I/O area is the sum of the length of
the longest database segment and the length specified on this control
statement. The length specified does not need to contain leading zeros, or
it does not need to be aligned.
Notes:
v If a standard record-formatting routine (for the *HD, *CS, *F1, *F2, or *F3
format) is used, this statement is ignored.
v If the SYSUT2 DD statement is present, its block size must be large
enough to contain the segment data and the user data:
BLKSIZE ≥ 4 + max_segment_length + ulen
v If ULEN is larger than necessary, the blocking of SYSUT2 is not optimal.
v If the SYSUT2 DD statement is provided, ULEN must be at least 4. These
4 bytes are reserved for the OS record descriptor word, which contains
the binary record length followed by binary zeros.
v If no ULEN control statement is provided, the default is zero.
v If you specify a control statement such as MIGRATE or FALLBACK, this
statement is ignored.
PSPI
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
USEGMAX usegmax
Position
Description
1 Code the USEGMAX keyword to identify this statement as a USEGMAX
statement.
9 Specify the number of bytes to be reserved for the segment data field
within the HSSR call I/O area. This reserved space is used by a
record-formatting routine for the unload format *HD, *CS, *F1, or *F2. This
length must be larger than or equal to the length of the longest database
segment. The length of the HSSR call I/O area, which is called the
OUTPUT-AREA, is the sum of the length specified by this statement and
the length of the record header determined by each format. The length
specified does not need to contain leading zeros, or it does not need to be
aligned.
Notes:
v If you specified a value less than the length of the longest database
segment, the usegmax value is adjusted to the length of the longest
segment. The message FABH0276I is issued.
v If a user record-formatting routine or the standard record format *F3 is
specified, the USEGMAX control statement is ignored. The message
FABH0276I is issued.
v If no optional user exit routine is specified, this control statement is
ignored. The message FABH0276I is issued.
v If the SYSUT2 DD statement is present, its block size must be large
enough to contain the record header and the segment data field
expanded by the USEGMAX statement:
BLKSIZE ≥ 4 + record_header_length + usegmax
v If no USEGMAX is specified or if the USEGMAX statement is ignored
because of the reason previously stated, the default length (that is, the
length of the longest segment in the database) is used as the length of
the user data field.
v If you specify a control statement such as MIGRATE or FALLBACK, you
cannot specify this statement.
PSPI
Get-by-RBA calls
The Get-by-RBA calls can be used by system programmers to cross logical
relationships or secondary index relationships implemented with direct pointers.
These calls can also be used to build the logical parent's concatenated key defined
as virtual in the SEGM statement of the DBD.
PSPI
Subsections:
v “Structure”
v “Finding the RBA required by the Get-by-RBA call” on page 344
Structure
The SSA contains the 8-byte segment name, followed by *T, the left parenthesis, the
4-byte RBA, and the right parenthesis, as follows:
aaaaaaaa*T(nnnn)
| | |
| | |
| | Four-byte relative byte address
| | of segment prefix
| |
| Command code
|
Name of segment
If the database does not contain a segment prefix of the specified segment type at
the specified RBA, HSSR Engine abends.
After completion of the call, HSSR call handler edits the requested segment in the
IOAREA exactly as it does for the other types of calls (GN, GU, GHN, GHU,
REPL).
The PCB is also edited normally. However, the part of the key feedback area that
ordinarily contains the concatenated key of the physical parent now contains
binary zeros.
GN calls should be issued with care after a Get-by-RBA call. Starting from the
segment retrieval by the RBA call, HSSR Engine proceeds sequentially as far as
possible. When it cannot proceed further, it returns a GB status code:
v If the segment retrieved by the RBA call is an HIDAM root segment, HSSR
Engine proceeds sequentially to the end of the database.
v If the segment retrieved by the RBA call is an HDAM root segment, HSSR
Engine proceeds sequentially to the last database record chained to the same
RAP as the root retrieved by the RBA call.
v If the segment retrieved by the RBA call is not a root, the sequential processing
stops at a position that depends on pointer options. It is either the last
dependent of the last twin (twin pointers) or the last dependent of the last
segment on the same hierarchical pointer chain (hierarchical pointers).
This information will be more readily useful if you have on hand an assembly
listing of the IMS control blocks SDB and PSDB. To get such a listing, use the IMS
macro:
IDLI SDBBASE=0,DMBBASE=0
After the successful completion of an HSSR call, three control blocks (HJCB, HSDB,
and the HDMB) of HSSR Engine contain the following information:
HJCB (Job Control Block of HSSR Engine)
The HJCB is an internal expansion of the HSSR PCB. It has functions
similar to the DL/I JCB. It also contains the virtual storage address of the
prefix of the segment just retrieved. This address is stored at the label
HJCBPFXA.
Note: For variable-length split segments, the segment data is not stored
after the prefix.
HSDB (Segment Descriptor Block of HSSR Engine)
The HSDB describes the segment type just retrieved and points to the
following IMS control blocks:
v Segment descriptor block (SDB)
v Physical segment descriptor block (PSDB)
Using the HSDB, SDB, and PSDB, you can get an exact and complete
description of the segment type just retrieved. This description includes an
exact description of the segment prefix, which allows the displacement
within the segment prefix of any pointers of interest to be computed.
HDMB (Data Management Block of HSSR Engine)
The HDMB describes the data set group of the segment just retrieved. The
HJCB, HSDB, and HDMB can be found as follows:
v The field HPCBJCB of the HSSR PCB points to the HJCB.
v The field HJCBSDBC of the HJCB points to the HSDB of the segment
just retrieved.
v The field HSDBHDMB of the HSDB points to the HDMB.
Because the layout of these control blocks can change with IMS High
Performance Unload releases, the control blocks should be referred to
symbolically by using the macros FABHPCB, FABHJCB, FABHSDB, and
FABHDMB. The macros generate DSECTs that describe the control blocks.
The control blocks must never be modified by user routines (except the
field HJCBUSER of the HJCB and the field HSDBUSER of the HSDB,
which can be freely used).
Note: If you plan to use the Get-by-RBA call in an IMS environment that
supports an OSAM database larger than 4 GB, pay attention to the
RBA that you get from HSSR Engine. You must check the flag byte
HDMBAMDA in the HDMB for the database data set that you are
processing when you treat an RBA. The flag HDMBOS8G in this flag
byte is on if and only if all of the following conditions are satisfied:
v Your IMS environment supports relative byte addressability for up
to 8 GB of data in an OSAM HDAM or HIDAM database data set.
This function has been introduced by PN82671.
PSPI
PSPI
You must consider the following items when you link-edit the routine:
v The routine must be link-edited with the REUSE option.
v The routine must be link-edited in 31-bit addressing mode (AMODE 31).
The reason is that database buffer pools are allocated above the 16-MB line and
the address of the segment prefix is set into a parameter list as a 31-bit address.
The HDMB and HRAN control blocks are also above the 16-MB line.
Note: If the routine does not refer to the address of any segment prefix,
HDMBs, or HRANs, it can be link-edited as AMODE 24. But the 31-bit
addressing mode is recommended, to avoid the addressing mode
problems.
If the routine is link-edited in 31-bit addressing mode, but performs functions
requiring AMODE 24, you must code the residency mode (RMODE) as needed.
Before running the function, you must use the capping method to dynamically
change the addressing mode to AMODE=24; after the function has run you must
return to AMODE 31. The following figure shows a sample code for such
capping:
PSPI
PSPI
The macros described here are provided for use by system programmers in writing
programs that use the services of HSSR Engine. Only the macros identified in this
topic should be used to request or receive the services of HSSR Engine.
PSPI
Topics:
v “How the runtime parameters are determined” on page 350
v “Replacing the HSSR option table (FABHOPT)” on page 352
v “FABHTOPT macro statements” on page 353
PSPI
The following figure illustrates how the runtime parameters are determined. The
sources that determine the runtime parameters are placed in the order of priority;
that is, an option in a higher position in the figure overrides one in a lower
position.
Defaults for options listed in the following table can be specified by replacing the
default option table.
Table 46. Options for which default values can be specified
Function Keyword Description Related data
set
FABHURG1 URG1DEC DEC option for FABHURG1 (unload utility) SYSIN (for
utility FABHURG1)
URG1CHKRC CHECKREC option for FABHURG1 (unload SYSIN (for
utility) FABHURG1)
URG1BUFNO The default number of buffers to be N/A
assigned to the DCBs for the output data
sets to store the unloaded records.
FABHFSU FSUDEC DEC option for FABHFSU (unload utility) CARDIN (for
utility FABHFSU)
FSUBUFNO The number of buffers to be assigned to the N/A
DCBs for the output data sets to store the
unloaded records other than the HS format
records.
PSPI
Procedure
PSPI
Complete the following steps to replace the table:
1. Copy the sample JCL FABHOPTG from the sample library.
FABHOPTG JCL is a sample JCL for use in creating a user-defined default
option table. FABHOPTG JCL is provided as a member of the HPS.SHPSSAMP
library. FABHOPTG assembles the user-specified FABHTOPT macro statement
and replaces the FABHOPT option table module in the HPS.SHPSLMD0 load
module library.
2. Code the FABHTOPT macro in the copied JCL.
For a list of the keywords that can be used in the FABHTOPT macro
statements, see “FABHTOPT macro statements” on page 353.
Use the following examples to code a FABHTOPT macro statement.
Example 1
The following FABHTOPT macro statement is used to create a user
table that contains the defaults that are compatible with DBT V2 HSSR:
FABHTOPT COMPAT=DBT
Example 2
The following FABHTOPT macro statement is used to create a user
table that contains the defaults that are compatible with PO HSSR:
FABHTOPT COMPAT=5787LAC
Example 3
The following FABHTOPT macro statement is used to create a user
table that contains the defaults that are compatible with PO HSSR,
except that CAB is used as the default buffer handler for ESDS and
OSAM data sets, and that the default CAB buffering parameters are
determined from the characteristics of database data sets:
FABHTOPT COMPAT=5787LAC,BUFDEFAULT=CAB,CABDEFAULT=HPU
3. Submit the JCL to replace the IBM-supplied default option table.
PSPI
PSPI
FABHTOPT must be preceded and followed by at least one blank space, and
parameters must be separated by commas.
Keyword
Description
COMPAT=
This optional keyword specifies the basic setting of FABHTOPT. IMS High
Performance Unload provides three basic settings: HPU, DBT, and
5787LAC. The default basic setting is HPU. The following table shows the
options to be set by the three basic settings:
Table 47. Basic settings of FABHTOPT options
Keyword COMPAT=HPU COMPAT=DBT COMPAT=5787LAC
APISET= 1 1 1
DIAGG= DIAGONLY DIAGONLY (CB,BUF)
CABSTAT= NO YES NO
LSR= NO NO NO
URG1DEC= YES YES YES
URG1BUFNO= defnum (see Note) defnum (see Note) defnum (see Note)
URG1CHKRC= NO NO NO
FSUDEC= YES YES YES
FSUBUFNO= defnum (see Note) defnum (see Note) defnum (see Note)
BUFDEFAULT= CAB BB BB
CABDEFAULT= HPU DBT DBT
PCBLIST= HSSR HSSR HSSR
Note: The number is determined from the block size of the output data set by each unload
utility.
PSPI
With the Sequential Subset Randomizer, all database records of subset n are stored
before the database records of subset n+1. During sequential database processing,
all database records of subset n are retrieved before database records of subset n+1.
However, the database records of a subset are neither stored nor retrieved in their
logical key sequence.
Topics:
v “Characteristics of the Sequential Subset Randomizer” on page 360
v “Benefits of the Sequential Subset Randomizer” on page 361
v “Sequential Subset Randomizer program functions” on page 362
v “Differences between the Sequential Subset Randomizer and other
sequential randomizers” on page 365
v “Sequential Subset Randomizer program structure” on page 367
v “Sequential Subset Randomizer restrictions” on page 368
The Sequential Subset Randomizer maintains (as DFSHDC40 does) the physical
RAP sequence of database records through a database reorganization in the
following cases:
v The number of CIs/blocks within the Root Addressable Area (RAA) is changed.
v The CI size or block size is changed.
v The number of RAPs per CI/block is changed.
v The relative amount of space within the RAA allocated to each subset is
changed.
The Sequential Subset Randomizer performs and benefits the following tasks:
v The Sequential Subset Randomizer is useful for the implementation of new
HDAM databases if applications require fast sequential processing of subsets of
database records (but do not require retrieval of the database records of a subset
in their logical key sequence).
v The Sequential Subset Randomizer is useful when converting the following
types of existing databases:
– HDAM databases randomized with DFSHDC40 (or with other nonsequential
randomizers) if applications require fast sequential processing of subsets of
database records.
– HISAM databases, HIDAM databases, and HDAM databases randomized
with a sequential randomizer, if the retrieval in the logical key sequence is not
required within subsets of database records.
Subsections:
v “Physical clustering of all database records”
v “Database retrievals” on page 363
v “Generation of a Sequential Subset Randomizer and database” on page 363
v “Splitting the unloaded data set” on page 363
v “Providing statistical information” on page 363
With the Sequential Subset Randomizer, the root addressable area of an HDAM
database is conceptually divided into multiple portions. The first portion is used
for the database records of the first subset, the second portion is used for the
database records of the second subset, and so on.
To use the Sequential Subset Randomizer, all database records belonging to the
same subset must have root keys within one common key range. The common key
range must be identified by n bytes of the root key (where n is a number smaller
than or equal to the number of bytes within the root key) starting at the fixed
position within the root key. These n bytes are called the subset ID.
The following figure shows how a root addressable area is divided by the subset
IDs. In this example, the branch IDs are the subset IDs.
Customer number
Branch ID = Subset ID
ZZ477
ZZ988
ZZ639
ZZ ZZ040
Root SEG.
SEG. SEG.
AB321
AB001
AB
AB841
AA711
AA056
AA AA123
Root SEG.
(Subset ID)
SEG. SEG.
Database retrievals
Note: In these topics, the term sequential randomizer means a randomizer which
randomizes database root segments in the logical sequence of the key value.
A sequential randomizer can be one of the IMS HD sequential randomizers
or the user’s unique randomizer.
Subsections:
v “Advantages of the Sequential Subset Randomizer over other sequential
randomizers”
v “Advantages of sequential randomizers over the Sequential Subset Randomizer”
v “Advantages of the Sequential Subset Randomizer over DFSHDC40”
v “Advantages of DFSHDC40 over the Sequential Subset Randomizer” on page
366
For databases that do not need to be processed in the logical sequence of the root
key values, the Sequential Subset Randomizer provides the following advantages
over sequential randomizers:
v The performance of the Sequential Subset Randomizer is less affected by a high
volume of insertion and deletion activities than that of sequential randomizers.
With a sequential randomizer, the user must often regenerate the sequential
randomizer and reorganize the databases after inserting a large number of roots.
This is often a long process. The database is unavailable to the applications
during this time.
With the Sequential Subset Randomizer, a regeneration and reorganization are
not necessary if the insert activities are evenly distributed across the different
subsets, and if the HDAM database has been defined with enough free space to
absorb the insert activities.
v The tables of the Sequential Subset Randomizer are smaller than those of the
sequential randomizers. With huge HDAM databases, the tables of a sequential
randomizer are often huge, and can often create substantial paging activity,
which defeats the advantage of HDAM over HIDAM.
The Sequential Subset Randomizer can be used to group all database records of a
subset physically close together, thereby improving the processing time for
With databases for which there is no need to physically group database records
into subsets, DFSHDC40 has the following advantages over the Sequential Subset
Randomizer:
v DFSHDC40 does not use subsets. Therefore the database administrator does not
need to specify the relative amount of space to be reserved for each subset.
v With DFSHDC40, there is no need to periodically monitor (and sometimes
adapt) the relative amount of space effectively occupied by each subset.
Adapting the relative amount of space allocated to each subset requires a
reorganization of the database. Reorganization is often a long process and the
database is unavailable during the reorganization.
The Sequential Subset Randomizer complies to the usual IMS conventions for
HDAM randomizing routines. Therefore, the Sequential Subset Randomizer can be
used with the IMS High Performance Unload database unload utilities and with
Batch/BMP/MPP/IFP IMS programs. However, the FABIUNLS utility and the
SS-STATS exit routine run exclusively in IMS High Performance Unload jobs.
The Sequential Subset Randomizer can run with multiple IMS versions and
releases without re-installing the product as far as the version/release is supported
by IMS High Performance Unload. Refer to “Software requirements ” on page 21
for information about supported IMS versions and releases.
The following topics describe the Sequential Subset Randomizer from the
viewpoint of the user tasks. The user tasks include:
v Database design, especially when defining the subset IDs
v Application programming
v Database administration
– Determining the relative amount of space to each subset
– Monitoring the database
Topics:
v “Considerations when defining subset IDs” on page 370
v “Considerations for application programming” on page 371
v “Considerations on the relative amount of space to each subset” on page
372
v “Considerations for monitoring the database” on page 373
In this case, the subset ID is defined as the branch office ID. A subset is the group
of database records belonging to the same branch office.
PSPI
The first root segment of a subset can be retrieved by a qualified GU call using the
following SSA:
ROOTNAME(KEY-NAME=>...SID......)
SID Subset ID. It must reside at the same position as the subset ID in the root
key. When VALTYPE=H was specified during the generation of the
Sequential Subset Randomizer, the minimum value within the required
subset ID must be used for the GU call.
..... Binary zeros.
Note: When orphan root segments exist in the database, they may also be
retrieved by the above GU call. In such a case, the succeeding root segments
must be processed sequentially until the required subset ID value is
encountered.
PSPI
It is recommended that database administrators use the percentage for the length
of database records (provided by the SS-STATS routine) for the allocation of space
to each subset. The usage of percentage makes it easy to follow how and whether
the database growth impacts the relative space allocation for each subset.
Topics:
v “Generating the Sequential Subset Randomizer load module” on page
376
v “FABIRGEN JCL requirements” on page 377
v “FABIRGEN input: SYSIN data set” on page 378
v “FABIRGEN JCL examples” on page 383
The general data flow for the generation of a Sequential Subset Randomizer
module is shown in the following figure.
Sequential
Subset
Macro Assemble Randomizer
Statements Link-edit
Randomizer
table
Figure 63. Data flow of the generation of the Sequential Subset Randomizer module
(SSRGEN)
Procedure
1. Prepare a JCL job for FABIRGEN.
To generate a Sequential Subset Randomizer, use the IBM-supplied cataloged
procedure FABIRGEN that is located in the HPS.SHPSSAMP sample library.
Code the EXEC and DD statements for the process. For the JCL requirements,
see “FABIRGEN JCL requirements” on page 377. See also Figure 68 on page 383
for a JCL example for generating the Sequential Subset Randomizer. This
example assumes that the IBM-supplied cataloged procedure is used.
2. Code the macro statements in the SYSIN data set.
Database designer, administrators, or both must provide the following
information through macro statements:
v The length of the subset IDs (the default is 1)
v The relative start position of the subset ID within the root key (the default is
1)
v Whether the values for the subset IDs are provided as hexadecimal values or
as EBCDIC values (the default is EBCDIC)
v Whether the values for the subset IDs are exact values or high-values (the
default is exact value)
v For each subset:
– The subset ID value
– The relative amount of space to be reserved in the root addressable area
For descriptions of the macro statements, see “FABIRGEN input: SYSIN data
set” on page 378.
3. Assemble and link-edit the macro statements to generate the Sequential Subset
Randomizer load module and its tables.
The assembly requires the following macro libraries:
v SYS1.MACLIB
v HPS.SHPSMAC0
v IMSVS.SDFSMAC
Note: Macro statements FKDTAB, FKD, and FKDGEN can be used instead of
FABITAB, FABIDEF, and FABIGEN, respectively. These macro statements are
provided only for compatibility. The use of macros prefixed by FABI is
recommended.
Format
This data set usually resides in the input stream. However, it can be defined either
as a sequential data set, or as a member of a partitioned data set. It must contain
80-byte fixed-length records. BLKSIZE, if coded, must be a multiple of 80.
The coding conventions for the macro statements are the same as Assembler
coding conventions. The following information pertains to the coding conventions
that you must follow in writing macro statements:
v The entries must be written in the following order: label, operation, operand,
and remarks.
v The entries must be contained in the begin column (1) through the end column
(71) of the first line and, if needed, can continue in column 16 through column
71 of any continuation lines.
v When a macro statement is not completed in the first line, column 72 must be
coded with any character.
v The entries must be separated from each other by one or more blanks.
v If used, a label entry must start in the begin column.
v The label and operation entries, each followed by at least one blank, must be
contained in the first line of a macro statement.
v The operation entry must begin at least one column to the right of the begin
column.
The FABITAB macro statement must be the first statement. The format of the
FABITAB macro statement is as follows:
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
One FABIDEF macro statement must be provided for each subset. The FABIDEF
macro statements must be provided in the ascending sequence of the subset ID
values.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
The FABIGEN macro statement must be the last macro statement of the FABIRGEN
(SSRGEN) source statements preceding the END statement.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
FABIGEN
END statement
This END statement specifies the end of the SYSIN data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
END
The following figure presents typical example for generating the Sequential Subset
Randomizer.
// EXEC FABIRGEN,MBR=SSRRAND
//C.SYSIN DD *
FABITAB START=1,BYTES=1,VALTYPE=E
FABIDEF ID=A,UNITS=450 BASEL
FABIDEF ID=B,UNITS=150 BELLINZONA
FABIDEF ID=C,UNITS=230 BERN
FABIDEF ID=D,UNITS=170 BIEL
FABIDEF ID=E,UNITS=110 CHUR
..................
FABIDEF ID=Q,UNITS=800 ZURICH
FABIGEN
END
/*
//L.SYSLMOD DD DSN=RANDOMIZ.LIB(&MBR),DISP=SHR
Each FABIDEF macro statement defines a single subset with the following
keywords:
v ID= keyword defines the value of the subset ID.
v UNITS= keyword defines how much relative space should be allocated to the
subset.
The following figure presents another typical example for generating the
Sequential Subset Randomizer.
Each FABIDEF macro statement defines a single subset with the following
keywords:
v ID= keyword defines the (hexadecimal) values of the subset ID.
v UNITS= keyword defines how much relative space should be allocated to the
subset.
The first FABIDEF macro statement specifies that database roots with subset ID
values equal to or lower than X'0020' belong to the first subset. The second
FABIDEF macro statement specifies that database roots with subset ID values
between X'0020' and X'0030' (X'0020' being excluded) belong to the second subset.
The rest of the FABIDEF macro statements define subsets of database roots in the
same manner.
FABIUNLS splits an unloaded database data set into multiple data sets as input to
the IMS HD Reorganization Reload utility. The split data sets are sorted in the
ascending order of subset ID so that a large databases can be reloaded in a
reasonable amount of time.
Topics:
v “Splitting the unloaded database data set with FABIUNLS” on page 386
v “FABIUNLS JCL requirements” on page 387
v “FABIUNLS output” on page 389
v “FABIUNLS JCL example” on page 392
The general data flow for the FABIUNLS utility program is shown in the following
figure.
Unloaded
database FABIUNLS Report
data sets
Sequential
Split
Subset
Randomizer unloaded
database
Randomizer data sets
table
Procedure
1. Ensure that you have completed the following activities before running
FABIUNLS.
v The database is unloaded in the HD unload format.
v The Sequential Subset Randomizer is generated for the database.
v The DBD source statement is changed to specify the name of the generated
Sequential Subset Randomizer, and a DBDGEN is performed.
2. Code the EXEC and DD statements for FABIUNLS.
FABIUNLS must be executed in a ULU region with the FABHULU JCL
procedure (or with equivalent JCL).
For the JCL requirements for FABIUNLS, see “FABIUNLS JCL requirements” on
page 387.
3. Run the job.
Related reference:
“FABIUNLS JCL example” on page 392
EXEC This statement invokes the JCL procedure FABHULU and has the
following format:
// EXEC FABHULU,MBR=FABIUNLS,DBD=dbdname
Recommended values for the BLKSIZE and LRECL are the same as the
BLKSIZE and LRECL of the input data set described by the SYSUT1 DD
Format
The format is 133-byte fixed-length records. When the block size is coded in the
JCL, the block size must be a multiple of 133. Code your DD statement as follows:
//SYSPRINT DD SYSOUT=A
The Split Unloaded Data Set Statistics report contains statistics about each split
unloaded data set.
The following two figures show examples of Split Unloaded Data Set Statistics
reports.
DBDNAME =SSRHDBD1
RANDOMIZER=SSRANDC1
IMS HIGH PERFORMANCE UNLOAD - SSR "SPLIT UNLOADED DATA SET STATISTICS" PAGE: 1
5655-E06 DATE: 06/01/2012 TIME: 11.42.10 FABIUNLS - V1.R2
NBR OF ORPHANS= 0
DBDNAME =SSRHDBD2
RANDOMIZER=SSRANDX1
Note: When IDTYPE=X is specified on the FABITAB macro statement as input for
the generation of the Sequential Subset Randomizer, the values in the subset
ID fields are described as hexadecimal values using two lines. For example,
the subset-ID values for FKD1 are described as follows:
EED....
22D.... .
On the SYSPRINT data set, FABIUNLS prints a table containing one entry for each
subset with the following information:
v The DD name of the output data set that contains the unloaded database records
of the subset (for example, FKD1).
v The number of database roots in the subset.
Notes:
– This number includes database segments of all data set groups.
– If segments are compressed, this number reflects the data length of the
decompressed segments.
– The length of segment-prefixes is not included in this figure.
v The first 83 bytes of the subset ID value printed in EBCDIC or in hexadecimal
according to the value of IDTYPE= keyword on the FABITAB macro statement.
FABIUNLS also prints how many database roots are orphans (that is, a root
segment which does not belong to any subset). If VALTYPE=E is specified on the
FABITAB macro statement, a root segment of which subset ID is not equal to any
value of ID= keyword on the FABIDEF macro statement becomes an orphan. If
VALTYPE=H is specified on the FABITAB macro statement, a root segment of
which subset ID is higher than the maximum value of ID= keyword on the
FABIDEF macro statement becomes an orphan. The number of orphans should be
zero if the SSRGEN specifications (as input for the generation of the Sequential
Subset Randomizer) have been done correctly.
//*******************************************************
//* SPLIT THE UNLOADED-DB INTO MULTIPLE DATA SETS *
//*******************************************************
//*
//SPLITUNL EXEC FABHULU,MBR=FABIUNLS,DBD=DPHIN02
//STEPLIB DD DSN=HPS.SHPSLMD0,DISP=SHR
// DD DSN=IMSVS.SDFSRESL,DISP=SHR
// DD DSN=RANDOMIZ.LIB,DISP=SHR
//DFSRESLB DD DSN=IMSVS.SDFSRESL,DISP=SHR
//DFSVSAMP DD *
4096,8
/*
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=UNLOADED.DB,DISP=OLD
//HDR DD DSN=DPHIN02E.HDR,DISP=(,CATLG),
// VOL=SER=WRK34B,UNIT=SYSDA,SPACE=(TRK,1),
// DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096)
//FKD1 DD DSN=DPHIN02E.FKD1,DISP=(,CATLG),
// VOL=SER=WRK34B,UNIT=SYSDA,SPACE=(CYL,(40,10)),
// DCB=*.HDR
//FKD2 DD DSN=DPHIN02E.FKD2,DISP=(,CATLG),
// VOL=SER=WRK34C,UNIT=SYSDA,SPACE=(CYL,(40,10)),
// DCB=*.HDR
........
........
........
//FKD17 DD DSN=DPHIN02E.FKD17,DISP=(,CATLG),
// VOL=SER=WRK35A,UNIT=SYSDA,SPACE=(TRK,(1,10)),
// DCB=*.HDR
//TRL DD DSN=DPHIN02E.TRL,DISP=(,CATLG),
// VOL=SER=WRK35B,UNIT=SYSDA,SPACE=(TRK,1),
// DCB=*.HDR
//*
For each subset, SS-STATS provides statistics about the number of database roots
and about the total length of database segments within the subset.
The SS-STATS is provided as an exit routine of the IMS High Performance Unload
database unload utilities (that is, FABHURG1 and FABHFSU).
Topics:
v “Obtaining statistics from each subset” on page 396
v “JCL requirements when SS-STATS routine is applied” on page 397
v “HSSROPT input data set when SS-STATS routine is applied” on page
398
v “HSSRSTAT output data set when SS-STATS routine is applied” on page
399
v “JCL example to apply the SS-STATS routine” on page 402
The general data flow for the SS-STATS routine (FABISTAT) is shown in the
following figure.
Exit
SS-STATS
routine Report
(FABISTAT)
Sequential
Subset
Randomizer
Randomizer
table
Procedure
1. Generate the Sequential Subset Randomizer.
2. Prepare a FABHURG1 or FABHFSU JCL job and modify the JCL to meet the
JCL requirements for using FABISTAT.
For the FABISTAT JCL requirements, see “JCL requirements when SS-STATS
routine is applied” on page 397.
3. In the HSSROPT data set, code the SSSTATS control statement to activate the
SS-STATS routine.
For the format of SSSTATS control statement, see “HSSROPT input data set
when SS-STATS routine is applied” on page 398.
4. Run the FABHURG1 or FABHFSU job.
Related reference:
“JCL example to apply the SS-STATS routine” on page 402
For the JCL requirements of FABHURG1 and FABHFSU utilities, see Chapter 4,
“Basic job control language,” on page 37.
The additional DD statements required to use the SS-STATS routine are described
in the following table.
Table 50. Additional DD statements for SS-STATS routine
DDNAME Use Format Need
HSSROPT Input LRECL=80 Required
HSSRSTAT Output LRECL=133 Required
HSSROPT DD
This required input data set contains optional control statements such as
the SSSTATS control statement.
Usually, when the SS-STATS routine is activated, the database should
already be an HDAM database using the Sequential Subset Randomizer.
However, the SS-STATS routine can be activated even if the database is not
randomized with the Sequential Subset Randomizer, or if it is not an
HDAM database. In this case, the user needs to provide the name of a
Sequential Subset Randomizer (which has been generated with an accurate
description of the subsets and subset IDs) on the SSSTATS control
statement.
HSSRSTAT DD
This required output data set is used for IMS High Performance Unload to
write statistical reports. The reports of the SS-STATS routine are also
written to the HSSRSTAT data set.
Chapter 24. Obtaining statistics from each subset with Sequential Subset Statistics 397
HSSROPT input data set when SS-STATS routine is applied
The SS-STATS routine is activated by the HSSROPT data set.
The HSSROPT data set contains optional control statements of IMS High
Performance Unload. However, in this topic and in related topics, only the
SSSTATS control statement that activates the SS-STATS routine is described. For the
other IMS High Performance Unload input data sets, see the following topics:
v “FABHURG1 input” on page 54
v “FABHFSU input” on page 74
Format
This data set contains 80-byte fixed-length records. The control statements can be
coded in the input stream or accessed as a member of a partitioned data set.
The format of the SSSTATS control statement is shown in the following figure.
//HSSROPT DD *
SSSTATS randname
/*
The control statement in the HSSROPT data set must be coded as follows:
v Columns 1 - 7 must contain SSSTATS.
v Column 8 must be blank.
v Columns 9 - 16 must contain one of the following parameters:
– Blank (if the database is an HDAM database using a Sequential Subset
Randomizer).
– If the database is not an HDAM database using a Sequential Subset
Randomizer, the field must contain the load module name of a Sequential
Subset Randomizer which has been generated with an accurate description of
the subsets and subset IDs. The load module library that contains the
Sequential Subset Randomizer must be accessible (for example, through a
STEPLIB DD statement).
This data set contains the Sequential Subset Statistics report when the SS-STATS
exit routine has been activated. For information about the other reports that this
data set contains, see “HSSRSTAT data set” on page 240.
Format
This data set contains 133-byte fixed-length records. When the block size is coded
in the JCL, the block size must be a multiple of 133. Code your DD statement as
follows to obtain the statistics output of the SS-STATS routine:
//HSSRSTAT DD SYSOUT=A
The following two figures show examples of Sequential Subset Statistics reports.
DBDNAME =SSRHDBD3
RANDOMIZER=SSRANDC2
Chapter 24. Obtaining statistics from each subset with Sequential Subset Statistics 399
IMS HIGH PERFORMANCE UNLOAD - SSR "SEQUENTIAL SUBSET STATISTICS" PAGE: 1
5655-E06 DATE: 06/01/2012 TIME: 10.06.31 FABISTAT - V1.R2
DBDNAME =SSRHDBD4
RANDOMIZER=SSRANDX2
Note: When IDTYPE=X is specified on the FABITAB macro statement as input for
the generation of the Sequential Subset Randomizer, the values in the subset
ID fields are described as hexadecimal values using two lines. For example,
the subset-ID values for FKD1 are described as follows:
EED....
22D.... .
The SS-STATS routine prints a table containing one table entry for each subset with
the following information on the HSSRSTAT data set:
v The relative subset number.
v The number of database roots in the subset.
v The total number of data bytes and prefix bytes in all database segments that
belong to the subset.
Notes:
– This number includes only database segments of the first data set
group.
– If segments are compressed, this number reflects the data length of the
compressed segments (when stored on DASD).
– The length of segment prefixes is included in this figure.
v The first 83 bytes of the subset ID value printed in EBCDIC or in hexadecimal
according to the value of IDTYPE= keyword on the FABITAB macro statement.
The SS-STATS routine also prints how many database roots are orphans. An
orphan is a root segment which does not belong to any subset. The number of
orphans should be zero, if the SSRGEN specifications (as input for the generation
of the Sequential Subset Randomizer) have been done correctly.
Chapter 24. Obtaining statistics from each subset with Sequential Subset Statistics 401
JCL example to apply the SS-STATS routine
The following figure shows an example of JCL for database unload with SS-STATS.
In this example:
v The STEPLIB DD statement provides access to the load library containing the
Sequential Subset Randomizer.
v The SSSTATS control statement in the HSSROPT data set requests the activation
of the SS-STATS routine, which prints statistics on the HSSRSTAT data set for
each subset.
v A randomizer load module name is specified on the SSSTATS control statement
because the database to be unloaded is not yet randomized with the Sequential
Subset Randomizer. The specified Sequential Subset Randomizer must have been
generated with an exact description of all subsets and subset ID values.
Topics:
v “Converting from a database randomized with DFSHDC40” on page 404
v “Converting from a database randomized with other randomizers” on
page 406
v “Converting from a HISAM or HIDAM” on page 408
Procedure
Chapter 25. Converting databases to HDAM databases randomized with the Sequential Subset Randomizer 405
Converting from a database randomized with other randomizers
You can convert from a database that is randomized with other randomizer into an
HDAM database randomized with the Sequential Subset Randomizer.
Procedure
Chapter 25. Converting databases to HDAM databases randomized with the Sequential Subset Randomizer 407
Converting from a HISAM or HIDAM
You can convert from a HISAM or HIDAM database into an HDAM database
randomized with the Sequential Subset Randomizer.
After conversion from an HISAM or HIDAM, the database records can no longer
be retrieved any more in the logical sequence of the root key unless the database
administrator defines a secondary index for this purpose. The sequential retrieval
of a large number of database records through a secondary index is usually not
efficient.
Procedure
Chapter 25. Converting databases to HDAM databases randomized with the Sequential Subset Randomizer 409
410 User's Guide
Part 5. Tuning databases with Database Tuning Statistics
reports
HSSR Engine can generate database statistics reports which help you tune your
databases.
Note:
v The description in the following topics for an HDAM database also
applies to each partition of a PHDAM database.
v The description in the following topics for a HIDAM database also
applies to each partition of a PHIDAM database.
By activating the Database Tuning Statistics function, you can generate the
following statistics reports:
v DB Statistics report
v Randomizing Statistics report
Tip: You can use the FABHEXTR exit routine of the FABHURG1 utility to create a
small database extract that can be used to perform database tuning
experiments. Creation of a smaller extract database can be useful when the
database administrator intends to tune the randomizing parameters of a large
HDAM database through an iterative try-and-see process. For information
about the FABHEXTR exit routine, see Chapter 29, “Creating a database
extract for tuning experiments,” on page 471.
Topics:
v “Activating the Database Tuning Statistics” on page 414
v “JCL requirements for the Database Tuning Statistics” on page 415
v “Input for Database Tuning Statistics” on page 416
v “Output from the Database Tuning Statistics” on page 419
Procedure
1. Prepare the basic JCL for HSSR Engine.
For instructions, see “Preparing the basic JCL” on page 38.
2. Specify the additional DD statements that are required for the Database Tuning
Statistics function.
For a list of the additional DD statements that are required for Database Tuning
Statistics, see “JCL requirements for the Database Tuning Statistics” on page
415.
3. Specify the DBSTATS control statement in the HSSROPT data set to activate the
Database Tuning Statistics function.
For the format and the parameter of the DBSTATS control statement, see
“DBSTATS control statement” on page 416.
4. Optional: If you want to select the records to be written in the HSSRLOUT data
set by the length of the database record or by the number of database I/Os that
are required to read all database segments of the database record, specify the
LOUT control statement in the HSSROPT data set.
For the format and the parameter of the LOUT control statement, see “LOUT
control statement” on page 416.
5. Optional: If you want to change the unit of measure for describing the ranges
of database record lengths in the report, specify the HSSRLDEF data set.
For information about the HSSRLDEF data set, see “HSSRLDEF input data set
for Database Tuning Statistics” on page 417.
6. Run the job.
When the job completes, statistics reports are written in the HSSRSTAT data set
and information about each database record is written in the HSSRLOUT data
set.
The HSSRLOUT data set can be used as input for the FABHLDBR utility to
obtain information about long database records. For more information about
using the FABHLDBR utility, see Chapter 27, “Printing long database records,”
on page 421.
These statistics reports can be used for tuning your databases. For a guideline
for tuning your databases with these reports, see Chapter 28, “Tuning a
database with the Database Tuning Statistics,” on page 431.
Example
See “JCL example for Database Tuning Statistics and FABHLDBR” on page 429 for
example JCL to activate the Database Tuning Statistics function and to print long
database records.
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for running the
Database Tuning Statistics function.
Table 51. DD statements for Database Tuning Statistics
DDNAME Use Format Need
HSSROPT Input LRECL=80 Required
HSSRLDEF Input LRECL=80 Optional
HSSRSTAT Output LRECL=133 Optional
HSSRLOUT Output - Optional
HSSROPT DD
This statement defines the input data set that contains the DBSTATS
control statement, which activates the Database Tuning Statistics. The data
set also contains the optional LOUT statement, which is used for
HSSRLOUT records selection.
HSSRLDEF DD
This optional statement defines the input data set that contains control
statements for requesting the DB Record Length Distribution report with
your own database record length ranges.
HSSRSTAT DD
This optional statement defines the output data set for the statistical
output.
HSSRLOUT DD
This optional statement defines the output sequential data set, in which a
small record for each database record is written. Each record of the data set
consists of:
v Length of the database record (fullword)
v The number of database I/Os required to read all database segments of
the database record (fullword)
v Key of the database root segment
Note: Do not specify the BLKSIZE and LRECL for the HSSRLOUT data set
on JCL. These values are determined dynamically by HSSR Engine
based on the key length of the root segment. The LRECL is 8 bytes
plus the length of the key of the database root segment.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
DBSTATS nnnnn
Position
Description
1 Code the DBSTATS keyword to instruct HSSR Engine to provide the
Database Tuning Statistics report.
9 Specify the number of buffers to be simulated with this entry. Enter any
number up to five digits in the range of 1 - 32767, left-aligned, and
followed by a blank. If this entry is left blank, the default value of 4 is
used.
HSSR Engine simulates the LRU algorithms of the IMS OSAM buffer pool
and the IMS VSAM buffer pool to provide statistics of the number of I/O
operations. If the application program uses multiple HSSR PCBs, HSSR
Engine assumes that each PCB has its own dedicated buffer pool
containing the user-specified or default number of buffers.
Restrictions:
v If APISET 3 is specified, this statement cannot be specified.
v If one or more partitions of PHDAM or PHIDAM are in the
HALDB OLR cursor-active status, this statement is ignored.
The records that satisfy one or both of the following conditions are written in the
HSSRLOUT data set:
v Database records that are longer than the specified limit.
v Database records that require more than the specified number of database I/Os.
This option is ignored if the DBSTATS control statement is not specified at the
same time.
LOUT LENGTH=llllllll
LOUT IO=nn
Position
Description
1 Code the LOUT keyword to request an optional record selection for the
HSSRLOUT data set.
6 Code one of the following optional keywords for each LOUT statement:
Keyword
Description
LENGTH=llllllll
Requests that only the records for database records whose length is
greater than llllllll bytes are written in the HSSRLOUT data set.
IO=nn Requests that only the records for database records that require
more than nn database I/Os for retrieval are written in the
HSSRLOUT data set.
You can specify both LENGTH= and IO= parameters, either on a single LOUT
control statement or separately (on multiple LOUT statements). If you specify both
parameters on a single LOUT statement, separate them with a comma, as follows:
LOUT LENGTH=100,IO=15
If you specify both LENGTH= and IO= parameters, both conditions are effective
(that is, database records that satisfy both conditions are written in the HSSRLOUT
data set.)
If you want a report with a different unit of measure for describing ranges of
database record lengths, you must:
1. Provide an HSSRLDEF DD statement in your JCL.
2. Provide control statements in the HSSRLDEF data set.
You must provide one control statement for each range of database record
length that should appear in the statistics report. Each control statement
contains the highest value of the range.
For example, if you want to have the DB Record Length Distribution report for the
ranges 0 - 50 bytes, 51 - 100 bytes, 101 - 200 bytes, 201 - 300 bytes, 301 - 1000 bytes,
and 1001 - 10000 bytes, the following control statements are required:
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
//HSSRLDEF DD *
50
100
200
300
1000
10000
You can use these reports to tune your database. For a complete description for the
reports, see Chapter 28, “Tuning a database with the Database Tuning Statistics,”
on page 431.
As an option, you can request that the HSSRLOUT data set only contain a record
for:
v Database records that are longer than the specified limit
v Database records that require more than the specified number of database I/Os
You can achieve this by providing the LOUT control statement in the HSSROPT
data set. See “LOUT control statement” on page 416 for details.
Tip: Because the records of the HSSRLOUT data set do not contain database
names, you might find difficulties in interpreting and processing the content
of the HSSRLOUT data set that was created during the execution of a
program that accesses multiple databases. For this reason, it is recommended
that you create the HSSRLOUT data set only during the execution of
Prerequisite: The input for the FABHLDBR utility is the HSSRLOUT data set,
which is created by the Database Tuning Statistics function during an
execution of HSSR Engine. To generate the HSSRLOUT data set, see
the following topics:
v For information about the HSSRLOUT data set, see “JCL
requirements for the Database Tuning Statistics” on page 415.
v For information about the LOUT control statement to select the
records in HSSRLOUT data set, see “LOUT control statement” on
page 416.
The HSSRLOUT data set contains one record for each database record with the
following data:
v Length of the database record (fullword)
v The number of database I/Os required to read all database segments of the
database record (fullword)
v Key of the database root segment
For each record in the HSSRLOUT data set, the FABHLDBR utility issues:
v A GU call in order to retrieve the database root segment
v GN calls to retrieve dependent segments of the database record (optional)
Optionally, you can request on the SYSIN data set that FABHLDBR:
v Stops processing after retrieving or printing nnnnn database records.
v Processes only the HSSRLOUT records for the database records that are longer
than or equal to mmmmmmm bytes.
v Processes only the HSSRLOUT records for the database records that require nn
or more I/Os.
v Retrieves or prints only the database root segments.
Topics:
v “Printing long database records with FABHLDBR” on page 422
v “FABHLDBR JCL requirements” on page 423
v “FABHLDBR input” on page 424
v “FABHLDBR output: HSSRTRAC output data set” on page 428
v “JCL example for Database Tuning Statistics and FABHLDBR” on page
429
Procedure
1. Prepare the basic JCL for HSSR Engine.
For instructions, see “Preparing the basic JCL” on page 38.
2. Specify the additional DD statements that are required for the FABHLDBR
utility.
For a list of the additional DD statements that are required for FABHLDBR, see
“FABHLDBR JCL requirements” on page 423.
3. Specify the TRDB and the TRHC control statements in the HSSROPT data set
to activate the hardcopy trace option.
For the formats and the parameters of the control statements, see “FABHLDBR
HSSROPT input data set” on page 424.
4. Run the job.
When the job completes, statistics reports are written in the HSSRSTAT data set.
Example
See “JCL example for Database Tuning Statistics and FABHLDBR” on page 429 for
example JCL to run the FABHLDBR utility.
Prerequisite: See “Basic JCL requirements” on page 40 for the basic (FABHX034)
JCL requirements.
The following table summarizes the additional JCL requirements for FABHLDBR.
Table 52. FABHLDBR DD statements
DDNAME Use Format Need
HSSROPT Input LRECL=80 Required
SYSIN Input LRECL=80 Optional
SYSUT1 Input - Required
ddname Input - Required
HSSRTRAC Output LRECL=133 Required
// EXEC FABHDBB,MBR=FABHLDBR,PSB=psbname
// EXEC FABHULU,MBR=FABHLDBR,DBD=dbdname
HSSROPT DD
This statement is required to define the input data set that contains the
TRDB and TRHC control statements, which activate the hardcopy trace
option.
SYSIN DD
This optional statement defines the input data set that contains the control
statements for controlling the FABHLDBR process.
SYSUT1 DD
This required statement defines the input HSSRLOUT data set.
ddname DD
This required statement defines the input IMS database data set.
HSSRTRAC DD
This required statement defines the output data set in which the snap-like
print of long database records is written.
The TRDB control statement must be used with the TRHC control statement. After
the TRHC indicates the type of trace to be run, the TRDB control statement then
identifies the specific databases on which these traces are run.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
TRDB *ALL
dbdname1,dbdname2,dbdname3,dbdname4
Position
Description
1 Code the TRDB keyword to activate the hardcopy tracing for specified
database.
6 Enter either dbdnames separated by commas or the keyword *ALL.
If multiple TRDB statements are provided, only the last statement is used.
This control statement is always used in combination with the TRDB control
statement. When you activate this option, HSSR Engine traces calls that are issued
against the databases named in the TRDB control statement. It writes data about
these calls on the HSSRTRAC data set.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
TRHC CALL,CB,CBX,BUF,BUFCB,START=n,NPF
Only HSSR calls issued against the databases that are specified on the TRDB
control statement are traced.
Note: The trace of the control blocks of HSSR Engine, which is called for by
specifying the CB, CBX, BUF, or BUFCB option for the TRHC control
statement, is not intended to be reviewed by users, but might be needed by
the IBM Software Support to analyze a problem.
This data set is an optional data set. By specifying control statements in the SYSIN
data set, you can request FABHLDBR to take the following specific actions:
v Stop processing after retrieving or printing nnnnn database records.
v Process only the HSSRLOUT records for those database records that are longer
than or equal to mmmmmmm bytes.
v Process only the HSSRLOUT records for those database records that require nn
or more I/Os.
v Retrieve or print only the database root segments.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
NBR nnnnn
Position
Description
1 Code the NBR keyword to activate the NBR option.
5 Specify the number of database records to be processed by FABHLDBR.
After the specified number of database records are retrieved or printed,
FABHLDBR stops processing. Enter any number up to 5 digits, left-aligned,
and followed by a blank.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
LENGTH mmmmmmm
Position
Description
1 Code the LENGTH keyword to activate the LENGTH option.
8 Specify the length of a database record. FABHLDBR processes only the
HSSRLOUT records that correspond to the database records that are longer
than or equal to the specified length. Enter any number up to 7 digits,
left-aligned, and followed by a blank.
IO control statement
The IO control statement requests FABHLDBR to process only HSSRLOUT records
that correspond to the database records that require nn or more I/Os.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
IO nn
Position
Description
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
ROOT-ONLY
Position
Description
1 Code the ROOT-ONLY keyword to activate the ROOT-ONLY option.
FABHLDBR retrieves or prints only the database root segments.
The snap-like print of long database records are generated by HSSR Engine. The
format of the print is the same as the Trace Output reports that are generated by
HSSR Engine. For a complete description of the HSSRTRAC data set, see
“HSSRTRAC data set” on page 253.
The following example JCL activates the Database Tuning Statistics and runs the
FABHLDBR utility.
Ideally, this number would be 1.00. If the number is larger than 1.30, then the
database might be disorganized or inefficiently randomized.
Other key indicators in the Database Tuning Statistics can be used to determine the
cause of the problem, for example, to determine:
v Whether the HDAM root addressable area is overcrowded and whether its size
should be increased. The Database Tuning Statistics answer this question by
printing the packing density of the HDAM root addressable area (this is the
percentage of DASD space occupied by database segments in the HDAM root
addressable area). Experience shows that, with efficient randomizer modules (for
example, DFSHDC40, Sequential Subset Randomizer), a reasonable goal for the
packing density is often in the range of 70% to 80%.
v Whether the number of HDAM RAPs is appropriate. The Database Tuning
Statistics show the ratio between the number of RAPs and the number of roots.
Experience shows that, with efficient randomizer modules (for example,
DFSHDC40, Sequential Subset Randomizer), a reasonable ratio is around 1.5.
v Whether the block or CI size is appropriate for the average database record
length and for the distribution of the database record length.
v Whether the HDAM bytes limit is appropriate for the average database record
length and the distribution of the database record length.
The following topics contain an example of the Database Tuning Statistics output
for an existing HDAM database, together with a short description of the counters
in the output. Then, in further topics, you will see how you can use some general
rules of thumb and the most important key indicators of the Database Tuning
Statistics for the tuning of an HDAM, HIDAM, or HISAM database.
IMPORTANT NOTICE
The settings and target values for some key indicators that are suggested
throughout this IMS High Performance Unload User's Guide are based on
experiments on simulated databases and applications in a controlled laboratory
environment. The experiments were run in non-production, test environments.
Any suggested target values are provided as guidance for database administrators
who do not have practical experience with tuning of their databases. Database
performance may be affected by numerous factors, including, but not limited to,
the specific applications run against the database, how the database is maintained,
and factors beyond those described in this guide that may exist. After gaining
experience with the tuning of the real-life databases of their installation, database
administrators should review and adapt the proposed target values to their specific
databases and operational environments. Therefore, the provided target values
must be regarded as general rules of thumb that provide a reasonable starting
point when concrete tuning experience with the real-life databases of the
installation is lacking.
Topics:
v “Resources for tuning databases” on page 433
v “Tuning the primary data set group of an HDAM database” on page 445
v “Tuning a HIDAM database” on page 462
v “Tuning a HISAM database” on page 465
v “How to determine randomizing parameters by using a reasonable first
guess method” on page 467
Figure 81 on page 434 shows an example of the pages with statistical information
printed by the Database Tuning Statistics on the HSSRSTAT data set.
Notes:
v For HALDB, the DB Statistics report is produced for each data set of
each partition.
v For PHDAM, the Randomizing Statistics report is produced for each
partition.
Related concepts:
Chapter 26, “Obtaining statistics for database tuning,” on page 413
DB Statistics report
DB Statistics reports that are generated by the Database Tuning Statistics function
provide statistics about the database.
Subsections:
v “DB Statistics for the entire database” on page 434
v “DB Statistics for the HDAM root addressable area” on page 437
v “DB Statistics for the HDAM overflow area” on page 438
Chapter 28. Tuning a database with the Database Tuning Statistics 433
DB Statistics for the entire database
The following figures provide an example of the DB Statistics report for the entire
database.
NBR I/O TO READ ***AT RANDOM*** THE RETRIEVED DB RECORD LENGTH (INCL PREFIXES OF SEGMENTS)
SEGMENTS OF ONE DB RECORD WITH 4 PCB-BUFFERS EXPRESSED IN BLOCKSIZE/CI-SIZE UNITS
(ONE BLKSIZE/CI-SIZE = 4,096 BYTES)
NBR IO NBR DB-R PCT CUM PCT LENGTH NBR DB-R PCT CUM PCT
---------------------------------------------- ----------------------------------------------
v At the top of the left side of the figure (page 1), you can find a description of the
following DBDGEN/IDCAMS specifications:
– DBD name
– DD name
– KSDS and ESDS record length (for HISAM)
– Actual OSAM block size or ESDS CI size
– Percentage of free space left empty in each block or CI during database load
and database reload
– Free block frequency factor
v Further below on the left side of the figure, there are key indicators, which are
used to see whether the database is well organized:
– The average number of I/Os required to read all database segments of a
database record (see Notes 1 on page 436 and 2 on page 436).
– The average database record length. The reported average database record
length includes the size of the segment prefixes and the size of the segment
data as stored on DASD (see Note 1 on page 436).
– The actual free space percentage. This field shows the percentage of the
DASD space that is neither occupied by the prefix portion nor by the data
portion of database segments. (This definition is not very accurate, since
Chapter 28. Tuning a database with the Database Tuning Statistics 435
DASD space occupied by RAPs, by free space elements, by free space anchor
points, and by BIT maps are not included in this percentage. However, in
most cases, this inaccuracy is not large and does not really matter.)
When computing the actual free space percentage, HSSR Engine does not take
into account blocks or CIs beyond the current high-used RBA (see Note 1).
– The defined free space percentage. This figure is computed by combining
both free space parameters defined during DBDGEN (that is, the free block
frequency factor and the free space within each block or CI).
v Then HSSR Engine prints the following totals:
– The total number of I/Os to read all database segments
– The total length of all database records in the database (see Note 1)
– The number of database records (see Note 1)
v On the left-hand side of the figure (page 2), there is a table showing the
distribution of the number of I/Os required to read at random all the database
segments of one database record (see Notes 1 and 2). The table contains the
number, the percentage, and the accumulated percentage of database records
that can be read with one or more I/O operations.
v On the right-hand part of the figure (page 2), there is a table describing the
distribution of the database record length. The reported database record length
includes the size of the segment prefix and the size of the segment data as
stored on DASD (for compressible segments, the size of the segment after
compression). See also note 1 below. The table contains the number, the
percentage, and the accumulated percentage, of database records that are in the
following ranges of database record length:
– Less than or equal to the 1/16th of the block or CI size
– 1/16th - 2/16th of the block or CI size
– 2/16th - 3/16th of the block or CI size
– And so on
The tables showing the distribution of the I/O numbers and the tables showing the
distribution of the database record length are printed side by side. This layout
makes it easier to recognize whether large numbers of I/Os per database record
are due to large database record sizes.
The DB Statistics report also provides, optionally, a table showing the distribution
of the database record length with user-provided definitions for the database
record length intervals. The use definitions for the database record length intervals
are provided on control cards in the HSSRLDEF data set. For example, you can
request a table showing the distribution of the database record lengths for
following database record length intervals: 50, 100, 150, 200, 250, 300, 350, 400, 450,
500, 600, 700, 800, 900, 1000, 1500, and so on.
Notes:
1. While computing database record lengths and the number of I/Os,
HSSR Engine takes into account only the database segments that have
been retrieved by the application program or utility. The statistic
modules of HSSR Engine are not aware of any database records of
database segments that have not been retrieved.
2. While computing the number of I/Os, HSSR Engine assumes that the
root segment is retrieved through a GU call. HSSR Engine also assumes
that at the time that the GU call is issued, the buffer pools do not
The following figures provide an example of the DB Statistics report for the
HDAM root addressable area.
DB-ORG HDAM
DDNAME DSHDAM01 (RAA)
BLOCK/CI-SIZE 4,096
FREE SPACE
- FREE BLOCK FREQUENCY FACTOR(FBFF) 0
- FREE SPACE PERCENTAGE FACTOR(FSPF) 15
Figure 83. DB Statistics for the HDAM root addressable area (Part 1 of 2)
Chapter 28. Tuning a database with the Database Tuning Statistics 437
IMS HIGH PERFORMANCE UNLOAD "DB STATISTICS" PAGE: 4
5655-E06 DATE: 06/01/2012 TIME: 19.36.20 FABHC00 - V1.R2
NBR I/O TO READ ***AT RANDOM*** THE RETRIEVED DB RECORD LENGTH (INCL PREFIXES OF SEGMENTS)
SEGMENTS OF ONE DB RECORD WITH 4 PCB-BUFFERS EXPRESSED IN BLOCKSIZE/CI-SIZE UNITS
(ONE BLKSIZE/CI-SIZE = 4,096 BYTES)
NBR IO NBR DB-R PCT CUM PCT LENGTH NBR DB-R PCT CUM PCT
---------------------------------------------- ----------------------------------------------
Figure 84. DB Statistics for the HDAM root addressable area (Part 2 of 2)
The layout of DB Statistics reports for the HDAM root addressable area is similar
to the layout of DB Statistics reports for the entire database. The statistics, however,
do not reflect the number of I/Os in the whole database and the total database
record size; instead, they reflect the number of I/Os in the root addressable area
and the database record size in the root addressable area.
The following figures provide an example of the DB Statistics report for the
HDAM overflow area.
DB-ORG HDAM
DDNAME DSHDAM01 (OVFLW AREA)
BLOCK/CI-SIZE 4,096
FREE SPACE
- FREE BLOCK FREQUENCY FACTOR(FBFF) 0
- FREE SPACE PERCENTAGE FACTOR(FSPF) 15
Chapter 28. Tuning a database with the Database Tuning Statistics 439
IMS HIGH PERFORMANCE UNLOAD "DB STATISTICS" PAGE: 6
5655-E06 DATE: 06/01/2012 TIME: 19.36.20 FABHC00 - V1.R2
NBR I/O TO READ ***AT RANDOM*** THE RETRIEVED DB RECORD LENGTH (INCL PREFIXES OF SEGMENTS)
SEGMENTS OF ONE DB RECORD WITH 4 PCB-BUFFERS EXPRESSED IN BLOCKSIZE/CI-SIZE UNITS
(ONE BLKSIZE/CI-SIZE = 4,096 BYTES)
NBR IO NBR DB-R PCT CUM PCT LENGTH NBR DB-R PCT CUM PCT
---------------------------------------------- ----------------------------------------------
The layout of DB Statistics reports for the HDAM overflow area is similar to the
layout of DB Statistics reports for the entire database. The statistics, however, do
not reflect the number of I/Os in the whole database and the total database record
size; instead, they reflect the number of I/Os in the HDAM overflow area and the
database record size in the HDAM overflow area.
Chapter 28. Tuning a database with the Database Tuning Statistics 441
IMS HIGH PERFORMANCE UNLOAD "RANDOMIZING STATISTICS" PAGE: 2
5655-E06 DATE: 06/01/2012 TIME: 19.36.20 FABHC00 - V1.R2
v At the top of the figure, you can find a description of the following
DBDGEN/IDCAMS specifications:
– DBD name
– Name of the randomizing module
– Number of RAPs per block or CI
– Highest block number or CI number in the root addressable area
– Bytes limit
– Actual block size or CI size
– Percentage of free space left empty in each block or CI during database load
and database reload
– Free block frequency factor
v Further below there are some key indicators, which describe the quality of the
randomizing. These important indicators can also be used to understand how
poor randomizing parameters can be changed to enhance the quality of the
randomizing. These key indicators are:
– The average number of I/Os required to read all database segments of one
database record (see Notes 1 on page 443 and 2 on page 443).
– The average number of I/Os required to read a root segment at random while
following the RAP chain (see Notes 1 on page 443 and 2 on page 443).
– The average number of I/Os in the root addressable area required to read at
random all database segments of one database record. This number includes
I/Os in the root addressable area that are required to read the root and the
Notes:
1. When computing database record lengths and the number of I/Os,
HSSR Engine takes into account only those database segments that have
been retrieved by the application program or utility. The statistic
modules of HSSR Engine are not aware of any database records or
database segments that have not been retrieved.
2. When computing the number of I/Os, HSSR Engine assumes that the
root segment is retrieved through a GU call. HSSR Engine also assumes
that at the time the GU call is issued, the buffer pools do not contain
any block or CI containing a portion of the RAP chain or containing a
database segment of the database record.
When computing the number of I/Os, HSSR Engine attempts to
simulate the LRU algorithm of the IMS buffer pools. If, for example, the
retrieval of the database segments of one database record requires
access to blocks n1, n2, and n3, or n2 and n1, then HSSR Engine will
report that (for a buffer pool of three buffers) the number of I/Os is
three (not five).
Chapter 28. Tuning a database with the Database Tuning Statistics 443
The following figure provides an example of the DB record length distribution
report.
The statistics in the report are printed only if you request the generation of a DB
Record Length Distribution report with your own definition of the database record
length ranges. You can make this request by providing control cards in the
HSSRLDEF data set (for more information, see “HSSRLDEF input data set for
Database Tuning Statistics” on page 417).
The reported database record length includes the size of the segment prefixes and
the size of the segment data as stored on DASD (for compressible segment, the size
of the segment data reflects the size of the compressed segment). The table
contains the number, the percentage, and the accumulated percentage of database
records that are in the user-defined ranges of database record length.
When computing database record lengths, HSSR Engine takes into account only
the database segments that have been retrieved by the application program or
utility. The statistics modules of HSSR Engine are not aware of any database
records or database segments that have not been retrieved.
This average number of I/Os is printed by the Database Tuning Statistics as shown
in Figure 87 on page 441, to the right of the phrase "AVG NBR I/O: - PER DB-R."
By looking at this average number in the Database Tuning Statistics, the database
administrator can very rapidly see whether a database is efficiently randomized.
For an ideal database consisting of one single data set group, this average number
would be 1.0.
In real life, this ideal value of 1.0 can seldom be achieved and the average number
of database I/Os per database record will be higher. Note, that due to the "law of
the large numbers" it is easier to achieve a good randomizing value when the
block size, divided by average database record length, is large.
Chapter 28. Tuning a database with the Database Tuning Statistics 445
For numbers above 1.20/1.30, the database can often be considered to be poorly
randomized (unless the database record length is large). In this case, the database
administrator can use other numbers provided by the Database Tuning Statistics in
order to determine the reason for the poor randomizing. These other numbers in
the Database Tuning Statistics can be used to give an answer to the questions in
the following checklist and to find, in most cases, the reason for poor randomizing:
1. Is the size of the root addressable area appropriate? (See “Packing density of
the root addressable area” on page 447 for details.)
2. Is the number of RAPs appropriate? (See “Number of RAPs per root segment”
on page 448 for details.)
3. Is the HDAM bytes limit appropriate for the database record lengths in this
database? (See “Bytes limit” on page 449 for details.)
4. Is the block size or CI size appropriate for the database record lengths of this
database? (See “CI size and block size” on page 448 for details.)
5. Is the database record length excessive? (See “Databases with long database
records” on page 460 for details.)
6. Is the amount of Free Space specified during DBDGEN equal to zero? (See
“Free block frequency factor” on page 450 for details.)
7. Is a database reorganization overdue in order to reduce database segment
scattering in the overflow area? (See “Periodical database reorganization” on
page 460 for details.)
8. For a Sequential Subset Randomizer: Is the relative amount of DASD space
allocated to each subset of database records appropriate? (See “Inefficient space
suballocation for the Sequential Subset Randomizer” on page 461 for details.)
Notes:
1. Any reference to the Sequential Subset Randomizer in these topics is
not intended to state or imply that this product should be used instead
of the standard DFSHDC40 randomizing module.
2. HSSR Engine does not know which database record occurrences are the
most frequently accessed. For some databases, it is sometimes the
longest database records requiring the largest number of I/Os that are
the most often accessed database records. In this case, the average
number of I/Os per database record reported by HSSR Engine is
different from the average number of I/Os per accessed database
record.
3. HSSR Engine does not know which segment types are the most
frequently accessed. With some databases, it is sometimes only one or
two segment types that are often accessed. In this case, the job step
used to produce the Database Tuning Statistics can be run with a PSB,
which is sensitive only to these two segment types. The Database
Tuning Statistics of such a job will probably be more representative than
the Database Tuning Statistics of a job that was sensitive to all segment
types.
For detailed statistics about the "probability of I/O" for each segment
type, see the Segment and Pointer Statistics report of IMS High
Performance Pointer Checker.
In the example of Figure 87 on page 441, the average number of I/Os per database
record is 1.86. This number is substantially higher than the target values of 1.20
and 1.30.
Note that both the average number of I/Os per database record in the root
addressable area and in the overflow area are far from their ideal values. They are
1.46 for the root addressable area (RAA) and 0.40 for the overflow area (the ideal
values being 1.00 and 0.00). A high value in the RAA is often an indication that the
packing density of the root addressable area is too high (see “Packing density of
the root addressable area”). A high value of I/Os in the overflow area is often an
indication that the bytes limit is too low (see “Bytes limit” on page 449 for details).
Specifically, you can find the packing density of the HDAM root addressable area
in Figure 87 on page 441 to the right of the phrase "PACKING DENSITY OF RAA."
With the standard DFSHDC40 randomizer and with the Sequential Subset
Randomizer, a reasonable rule of thumb is a packing density of approximately 75%
(for databases with an average database record length smaller than one tenth of the
CI/block size) or 70% (for databases with a larger average database record length).
Notes:
1. Aiming for higher packing densities saves DASD space, but often
decreases the performance of HDAM database accesses. Each
installation will have probably its own idea of what is the ideal
trade-off between DASD space and performance and regarding the ideal
packing density. For example, some installations may want packing
densities of 75% and 80% (instead of the target values of 70% and 75%).
2. For small or medium-sized HDAM databases (when saving DASD
space is not important), it is often reasonable to aim for a packing
density below 70%.
3. If the total size of all database records will eventually grow, it is then
reasonable to oversize the root addressable area at database reload time,
in order to provide enough space for the future data growth.
You can change the packing density of the root addressable area by varying the
number of blocks or CIs in the root addressable area and by varying the size of a
block or CI. Increasing the number of blocks or CIs or increasing the block or CI
size will increase the size of the root addressable area and lower its packing
density; this will usually increase the performance of random accesses to the
database.
Varying the bytes limit may also change the packing density of the root
addressable area (reducing the bytes limit will tend to store more information in
the overflow area and less information in the root addressable area; this will hence
tend to reduce the packing density in the root addressable area).
Chapter 28. Tuning a database with the Database Tuning Statistics 447
As a rule of thumb, you should increase the size of the root addressable area, if the
Database Tuning Statistics shows that:
v The packing density is higher than the recommended target values of 70% and
75%
v The average number of I/Os in the root addressable area per database record is
higher than 1.15.
In the example of Figure 87 on page 441, the packing density of the root
addressable area is 82.86%. This is higher than the recommended value of 70% for
databases with this type of average database record length. This high packing
density provides a probable and partial explanation for the following numbers,
which look poor:
v The average number of I/O on RAP chain per root, which is 1.34 (usually this
number should not be much higher than 1.10).
v The average number of I/O in RAA per database record, which is 1.46 (usually
this number should not be much higher than 1.15).
v The percentage of accessed roots in the overflow area, which is 6.01 (usually this
number should not be much higher than 1.0).
In this case, you could decrease the packing density of the root addressable area.
“Bytes limit” on page 449 shows that the bytes limit is already too low, so a
decrease of the packing density should not be attempted through a decrease of the
bytes limit. Instead, a decrease of the packing density should be achieved by
increasing the number of blocks or CIs in the root addressable area (or by an
increase of the block or CI size).
Specifically, this ratio is found in Figure 87 on page 441, to the right of the phrase
"NBR OF RAPS PER ROOT."
Generally, the number of RAPs should be approximately 1.5 times the number of
database records. In case of doubt, it is better to specify too many than too few
RAPs (since a RAP is only 4 bytes and hence inexpensive in terms of DASD space).
In the example in Figure 87 on page 441, the number of RAPs per root is 0.66. This
is much too low. This low number probably contributes to the high average
number of I/Os per root on the RAP chains (which is 1.34).
You could increase the number of RAPs per CI/Block to increase this ratio to 1.5.
However, if the average database record length is higher than 800 bytes (that is,
larger than 1/5th of the block or CI size), then an increase of the block or CI size
from 4 KB to 8 KB might improve the performance of HDAM database accesses
(especially if the database administrator wants a high packing density (more than
70%) of the root addressable area). In this case, an increase of the CI size/block
size from 4 KB to 8 KB can often reduce the number of I/O operations (but will
increase slightly the time of an I/O operation).
CI/block sizes larger than 8 KB should be an exception (for example, for very large
average database record sizes).
In the example in Figure 87 on page 441, the average database record size is 682.
This is approximately 1/6th of the block or CI size. 1/6th of the block or CI size is
not very large and seems acceptable. However, it could be reasonable to
experiment with an 8 KB block or CI size.
Bytes limit
The bytes limit is the maximum number of bytes of a database record that can be
stored into the root addressable area in a series of insert calls unbroken by a call to
another database record.
The current bytes limit is shown in the top portion of Figure 87 on page 441.
Specifying a bytes limit that is too high (for example, 10 times the average
database record length) may create a situation where one individual database
record occupies too much space in the root addressable area. Other database
records of the same block or CI or of neighboring blocks or CIs will then have an
insufficient amount of DASD space available for the storing of their own database
segments in the same block or CI as the RAP (See Note). Access to the database
segments of these other database records will require additional I/Os. This will
adversely affect the performance of access to the HDAM database.
Note: Specification of a bytes limit that is too high often creates a "cascade" effect.
If, for example, one database record randomizing to block n is allowed to
store as many as five block sizes worth of data in the root addressable area,
then the database records that are randomized to neighboring blocks (for
example, block n, n+1, n+2, n+3, and n+4) cannot be stored in the same
Chapter 28. Tuning a database with the Database Tuning Statistics 449
block as their RAPs. The segments of these database records will spill into
blocks n+5, n+6, and so forth, and will create problems for the database
records that are randomized in block n+5, n+6, and so on. Note that the
PSSR utility of IMS High Performance Load assists in preventing such
cascading effects.
The Database Tuning Statistics provide the following information, which is useful
when evaluating whether the current bytes limit is appropriate:
v The table containing the distribution of the database record length (see Figure 82
on page 435)
v The average number of I/Os per database record in the overflow area (see
Figure 87 on page 441).
The table printed by the Database Tuning Statistics (shown in the top-right-hand
portion of Figure 82 on page 435) is useful for a reasonable determination of the
bytes limit. This sample report shows that:
v 80.52 percent of the database records have a database record length smaller than
3/16th of a block or CI.
v 96.48 percent of the database records have a database record length smaller than
4/16th of a block or CI.
v 98.59 percent of the database records have a database record length smaller than
5/16th of a block or CI.
Based on this information, the current bytes limit (which is 700 according to
Figure 87 on page 441) seems too low. With a bytes limit of 700, at least 19.48%
(=100%-80.52%) of the database records will have, after a database reload, some
dependent segments in the overflow area. This low bytes limit is one of the major
reasons for the high average number (0.40) of I/Os per database record in the
overflow area.
You could increase the current bytes limit from 700 bytes to 5/16th of the block or
CI size; which is 1280 bytes.
1280 bytes is not excessive, when compared with the average database record
length of 862. With a bytes limit of 1280, approximately 98.59% of the database
records will have all their database segments in the root addressable area. This will
hopefully reduce the average number of I/Os per database record in the overflow
area, which is currently 0.40.
For data set groups other than the first HDAM data set group, a free block
frequency specification is often useful.
The percentage of specified free space should be taken into account when
determining the size of the RAA. For example, when specifying 10% of free space,
some database administrators increase the size of the root addressable area by 10%,
since the free space is not available at database load time or database reload time.
For the example described in the previous figures, one should experiment without
free space specifications. Why? Because after the recommended increase of the
packing density of the root addressable area, enough free space will be available in
the RAA; and because after the recommended increase of the bytes limit, only few
database segments will be stored in the overflow area.
Subsections:
v “Percent of roots in the overflow area”
v “Number of I/Os on the RAP chain” on page 452
v “Number of I/Os in the root addressable area” on page 452
v “Number of I/Os in the overflow area” on page 452
This number can be found in Figure 87 on page 441, to the right of the phrase
"NBR OF ACCESSED ROOTS IN OVERFLOW AREA: - PCT OF ACCESSED
ROOTS."
Normally this percent should be very small (below 1 percent). Higher values will
increase the average number of I/Os required to access a root segment and will
decrease the performance. The reason for a high value is often an overcrowded
root addressable area.
In the example of Figure 87 on page 441, the percentage of roots in the overflow
area is too high: 6.01. You could increase the root addressable area (see “Packing
density of the root addressable area” on page 447) to take care of this problem.
Chapter 28. Tuning a database with the Database Tuning Statistics 451
Number of I/Os on the RAP chain
This number can be found in Figure 87 on page 441 to the right of the phrase
"AVG NBR I/O: - ON RAP CHAIN PER ROOT."
Normally, this number should not be substantially larger than 1.10. The reason for
a high value is often an overcrowded root addressable area, too few RAPs, a block
or CI size that is too small, or a bytes limit that is too high.
In the example of Figure 87 on page 441, the average number of I/Os on the RAP
chain is too high: 1.34. The recommended increase of the root addressable area (see
“Packing density of the root addressable area” on page 447) and an increase of the
number of RAPs (see “Number of RAPs per root segment” on page 448) should
take care of this problem.
Normally, this number should not be substantially larger than 1.20. The reason of a
higher value is often an overcrowded root addressable area, too few RAPs, a block
or CI size that is too small, or a bytes limit that is too high.
In the example of Figure 87 on page 441, the average number of I/Os in the RAA
is too high: 1.46. The recommended increase of the root addressable area (see
“Packing density of the root addressable area” on page 447) and an increase of the
number of RAPs (see “Number of RAPs per root segment” on page 448) should
take care of this problem.
This number can be found in Figure 87 on page 441 to the right of the phrase
"AVG NBR I/O: - IN OVERFLOW AREA PER DB-R."
Normally, this number should not be substantially larger than 0.20. The reason of a
higher value is often a bytes limit which is too low, a block or CI size which is too
small for the database record length of the database, database records that are very
long, or a database that needs to be reorganized in order to reduce the
fragmentation of database segments of the same database record into multiple
blocks or CIs.
In the example of Figure 87 on page 441, the average number of I/Os in the
overflow area is too high: 0.40. The recommended increase of the bytes limit (see
“Bytes limit” on page 449) should take care of this problem.
The following figures show the Database Tuning Statistics of the database after the
suggested changes have been made. Notice the considerable improvements of the
different indicators. For example, the average number of I/Os per database record
has improved from 1.86 to 1.16.
DB-ORG HDAM
DDNAME DSHDAM01
BLOCK/CI-SIZE 4,096
FREE SPACE
- FREE BLOCK FREQUENCY FACTOR(FBFF) 0
- FREE SPACE PERCENTAGE FACTOR(FSPF) 0
Chapter 28. Tuning a database with the Database Tuning Statistics 453
IMS HIGH PERFORMANCE UNLOAD "DB STATISTICS" PAGE: 2
5655-E06 DATE: 06/01/2012 TIME: 20.09.01 FABHC00 - V1.R2
NBR I/O TO READ ***AT RANDOM*** THE RETRIEVED DB RECORD LENGTH (INCL PREFIXES OF SEGMENTS)
SEGMENTS OF ONE DB RECORD WITH 4 PCB-BUFFERS EXPRESSED IN BLOCKSIZE/CI-SIZE UNITS
(ONE BLKSIZE/CI-SIZE = 4,096 BYTES)
NBR IO NBR DB-R PCT CUM PCT LENGTH NBR DB-R PCT CUM PCT
---------------------------------------------- ----------------------------------------------
---------------------------------------------- ----------------------------------------------
DB-ORG HDAM
DDNAME DSHDAM01 (RAA)
BLOCK/CI-SIZE 4,096
FREE SPACE
- FREE BLOCK FREQUENCY FACTOR(FBFF) 0
- FREE SPACE PERCENTAGE FACTOR(FSPF) 0
NBR I/O TO READ ***AT RANDOM*** THE RETRIEVED DB RECORD LENGTH (INCL PREFIXES OF SEGMENTS)
SEGMENTS OF ONE DB RECORD WITH 4 PCB-BUFFERS EXPRESSED IN BLOCKSIZE/CI-SIZE UNITS
(ONE BLKSIZE/CI-SIZE = 4,096 BYTES)
NBR IO NBR DB-R PCT CUM PCT LENGTH NBR DB-R PCT CUM PCT
---------------------------------------------- ----------------------------------------------
Chapter 28. Tuning a database with the Database Tuning Statistics 455
IMS HIGH PERFORMANCE UNLOAD "DB STATISTICS" PAGE: 5
5655-E06 DATE: 06/01/2012 TIME: 20.09.01 FABHC00 - V1.R2
DB-ORG HDAM
DDNAME DSHDAM01 (OVFLW AREA)
BLOCK/CI-SIZE 4,096
FREE SPACE
- FREE BLOCK FREQUENCY FACTOR(FBFF) 0
- FREE SPACE PERCENTAGE FACTOR(FSPF) 0
NBR I/O TO READ ***AT RANDOM*** THE RETRIEVED DB RECORD LENGTH (INCL PREFIXES OF SEGMENTS)
SEGMENTS OF ONE DB RECORD WITH 4 PCB-BUFFERS EXPRESSED IN BLOCKSIZE/CI-SIZE UNITS
(ONE BLKSIZE/CI-SIZE = 4,096 BYTES)
NBR IO NBR DB-R PCT CUM PCT LENGTH NBR DB-R PCT CUM PCT
---------------------------------------------- ----------------------------------------------
Chapter 28. Tuning a database with the Database Tuning Statistics 457
IMS HIGH PERFORMANCE UNLOAD "RANDOMIZING STATISTICS" PAGE: 1
5655-E06 DATE: 06/01/2012 TIME: 20.09.01 FABHC00 - V1.R2
Chapter 28. Tuning a database with the Database Tuning Statistics 459
Other factors influencing the performance of access to an
HDAM database
The following information pertains to other factors that influence the performance
in the access to an HDAM database.
Subsections:
v “Periodical database reorganization”
v “Databases with long database records”
v “Compressed segments” on page 461
v “Inefficient space suballocation for the Sequential Subset Randomizer” on page
461
You can detect the need for reorganization of an HDAM database by observing
how the average number of I/Os per database record evolves over time. A
substantial increase of the number of I/Os indicates a probable need for database
reorganization.
You can also detect the need for reorganization by looking at the Data Set I/O
Statistics after a sequential processing of the database by FABHURG1, FABHFSU,
or an HSSR application program. After such a processing, look in the Data Set I/O
Statistics for the counters that describe the number of DIRECT IO and SEQ IO in
the overflow area. (You will find this information only if the CAB buffer handler
has been used and if an OVERFLOW CAB has been activated.) Large overflow
areas may benefit from a database reorganization if the number of direct I/Os in
the overflow area is much higher than the number of sequential I/Os in the
overflow area.
For HDAM databases with a high percentage of very long database records (for
example, 8 KB or more), it is difficult to achieve a low value for the average
number of I/O per database record.
Whether the database record length is high can be determined by looking at the
Database Tuning Statistics; they provide the average database record length and a
table with the distribution of the database record length.
Some of the actions that can be taken, in order to limit the performance problems
of long database records, are:
v Define the bytes limit in such a way that:
– The root segment and a reasonable amount of dependent segments can be
stored in the same block of the root addressable area as the root segment.
– The remaining dependent segments are stored in the overflow area.
A practice sometimes used is to load the most often referred-to database
segments in the root addressable area at database initial load or reload time; the
Compressed segments
The quality of the randomizing with the Sequential Subset Randomizer depends on
a reasonable suballocation of space to each subset of database records.
The output of the FABIGEN and of the SS-STATS statistics of HSSR Engine can be
used to compare:
v The relative amount of space that has been allocated during FABIGEN to each
subset (see per mill figures in the compilation output of the FABIGEN).
v The relative amount of DASD space occupied by all database segments of one
subset (see per mill figures of the SS-STATS).
Chapter 28. Tuning a database with the Database Tuning Statistics 461
Tuning a HIDAM database
The following topics explain how to tune a HIDAM database.
By looking at this average number in the Database Tuning Statistics, the database
administrator can very rapidly see whether a database is efficiently organized.
For an ideal database consisting of one single data set group, this average number
would be 1.0.
In real life, this ideal value of 1.0 can seldom be achieved and the average number
of database I/Os per database record will be higher.
For numbers above 1.10 or 1.20, the database can often be considered to be poorly
organized. In this case, the following questions should be asked in order to find
the reason for a poor organization:
1. Is a database reorganization overdue in order to reduce database segment
scattering? (See “Periodical database reorganization” for details.)
2. Is the amount of free space specified during DBDGEN sufficient? (See “Free
space specifications” on page 463 for details.)
3. Is the block size or CI size appropriate for the database record lengths of this
database? (See “CI size and block size” on page 463 for details.)
4. Is the database record length excessive? (See “Databases with long database
records” on page 463 for details.)
You can detect the need for a reorganization of an HIDAM database by observing
how the average number of I/Os per database record evolves over time. A
substantial increase of the number of I/Os indicates a probable need for database
reorganization.
The Database Tuning Statistics shows (for an example, see the top portion of
Figure 81 on page 434):
v How much free space has been specified in each block or CI
v Whether every nth block or CI has been left entirely free.
The Database Tuning Statistics allows also for the comparison of the actual
percentage of free space (ACTUAL PCT FREE SPACE) and the defined percentage
of free space (DEFINED PCT FREE SPACE). You might wish to observe how the
actual percentage of free space is reduced as the database becomes older and older.
The current CI size/block size is shown in the top portion of Figure 81 on page
434.
As a general rule of thumb, use a 4 KB CI/block size for the data portion of
HIDAM.
However, if the average database record length is more than 1000 bytes (that is,
larger than 1/4th of the block or CI size), then an increase of the block or CI size
from 4 KB to 8 KB might improve the performance of HIDAM database accesses.
CI/block sizes larger than 8 KB should be an exception (for example, for very large
average database record sizes).
Some of the actions that can be taken to limit the performance problems of long
database records are:
v Use a large block or CI size (for example, 12 KB)
Chapter 28. Tuning a database with the Database Tuning Statistics 463
v Evaluate usage of database segment compression in order to reduce the average
size of database records
v Evaluate storage of the most often referred-to database segments in the same
block or CI as the root. The less frequently referred-to database segments can be
inserted after the initial load/reload or can be stored in another data set group.
v Evaluate changes to the database design in order to reduce the average size of
database records.
This average number of I/O is printed by the Database Tuning Statistics, as shown
in Figure 81 on page 434, right of the phrase "AVG NBR I/O IN THIS DB."
(HSSR Engine counts the reading of a KDSD record as a single I/O and ignores
I/Os required to access the VSAM index CIs.)
By looking at this average number in the Database Tuning Statistics, the database
administrator can very rapidly see whether a database is efficiently organized.
In real life, this ideal value of 1.0 can seldom be achieved and the average number
of database I/Os per database record will be higher.
For numbers above 1.30, the HISAM database can often be considered as poorly
organized. In this case, the following questions should be asked in order to find
the reason for a poor organization:
1. Is the KSDS record length appropriate? (See “KSDS record length (HISAM)” for
details.)
2. Is a database reorganization overdue in order to reduce database segment
scattering? (See “Periodical database reorganization” on page 466 for details.)
3. Is the ESDS CI size appropriate for the database record lengths of this DB? (See
“ESDS CI size” on page 466 for details.)
Selecting a large KSDS LRECL allows reduction of the number of database records
that cannot be stored entirely in the KSDS record. This will reduce the average
number of I/Os per database record. On the other hand, selection of a KSDS
LRECL that is too large may represent a waste of DASD space, if a high percentage
of database record do not fill reasonably the KDSD record.
The table containing the distribution of the database record length (see Figure 89
on page 444) provides assistance in determining a reasonable KSDS LRECL.
Note: By default, HSSR Engine prints only a table with following ranges of
database record length: 1/16, 2/16, 3/16, and so on of the ESDS CI size.
These default ranges of database record lengths are seldom sufficient to
determine a good KSDS LRECL. To get a table with more appropriate
ranges of database record length, provide in the HSSRLDEF data set control
Chapter 28. Tuning a database with the Database Tuning Statistics 465
statements defining database record length ranges of your choice (for
example, database record length ranges of 50 or 100 bytes).
The need for a reorganization of the ESDS portion of an HISAM database can be
detected by observing how the average number of I/Os per database record
evolves over time. A substantial increase of the number of I/Os indicates a
probable need for database reorganization.
The need to reorganize the ESDS part of a HISAM database can also be detected
by looking at the Data Set I/O Statistics after a sequential processing or unloading
of the database. After such a processing, look in the Data Set I/O Statistics for the
counters that describe the number of DIRECT IO and SEQ IO. (You will find this
information only if the CAB buffer handler has been used.)
Note that the need for a reorganization of the KSDS portion of an HISAM database
can be determined by looking at the number of CI splits and CA splits of the KSDS
(these numbers can be found in LISTCAT listings of IDCAMS).
ESDS CI size
This topic discusses the ESDS CI size.
The current ESDS CI size is shown in the top portion of Figure 81 on page 434.
As a general rule of thumb, use a 4 KB CI size for the ESDS portion of HISAM
database.
However, for long database records, an increase of the ESDS CI size from 4 KB to 8
KB might improve the performance of HISAM database accesses.
The following discussion assumes that the values of these parameters are
determined in the sequence listed here.
However, if the average database record length reported in the Database Tuning
Statistics is larger than 800 bytes, then a larger block or CI size could be tried.
v If the average database record length is in the range of 800–1600 bytes, an 8 KB
block or CI size is often a better bet.
v If the average database record length is in the range of 1600–2400 bytes, a 12 KB
block or CI size should be investigated.
v For average database record lengths substantially longer than 2400 bytes, the
first-guess method described in this topic often does not apply.
To define a reasonable bytes limit, the database administrator should check the
distribution of the database record lengths in the Database Tuning Statistics. The
table with the distribution of the database length records should be used in order
to determine the bytes limit in such a way that:
Chapter 28. Tuning a database with the Database Tuning Statistics 467
v The bytes limit is large enough, in order to allow for a high percentage of
database records the storage of all their database segments in the root
addressable area.
v The bytes limit is small enough in order to prevent the cascading effect
described in “Bytes limit” on page 449.
If the average database record length is around 1/5th of the block or CI size,
then (as a first guess, which could be revised by experiments by the database
administrator) the bytes limit should not be larger than twice the database
record length.
For smaller average database record lengths, the ratio between bytes limit and
average database record length can be larger than 2. For larger average database
record lengths, the ratio between bytes limit and average database record length
should be smaller than 2.
v The bytes limit should not be larger than the block or CI size.
In order to determine the number of blocks or CIs in the root addressable area, the
database administrator must have previously determined the block or CI size and
the bytes limit (as described in “Determining the block or CI size” on page 467 and
“Determining the bytes limit” on page 467).
As a general rule of thumb, the total number of RAPs should be around 1.5 times
the number of database records. In case of doubt, it is better to specify too many
than too few RAPs.
Since the number of database records is printed by the Database Tuning Statistics,
the database administrator can multiply this number by 1.5 in order to obtain the
desired total number of RAPs.
Then, in order to obtain the number of RAP per block or CI, the total number of
RAPs should be divided by the number of blocks or CIs in the root addressable
area (and rounded up to the next integer).
Chapter 28. Tuning a database with the Database Tuning Statistics 469
470 User's Guide
Chapter 29. Creating a database extract for tuning
experiments
FABHEXTR allows the creation of a small database extract from a large database.
The database extract can be used to perform database tuning experiments. Creation
of a smaller extract database can be useful when the database administrator
intends to tune the randomizing parameters of a large HDAM database through an
interactive try-and-see process.
FABHEXTR is a user exit routine of the FABHURG1 database unload utility. Based
on control statements, FABHEXTR directs the FABHURG1 utility to include, in its
database unload output file, only a subset of the real-life database records. The
unloaded database extract is then used as input to the standard IMS HD Reload
utility, which will create an extract database.
Assume, for example, you have a large HDAM database with 1 million database
records, which takes 20 hours to reorganize. An iterative try-and-see tuning process
for such a huge database is not realistic because of the large amount of time
required for the database reorganization of each interaction step. However, if the
database administrator creates a small database extract consisting of 5000 database
records, then the database reorganization for this database extract no longer takes
20 hours, but only 6 minutes. The database administrator can then perform a lot of
different experiments with different values for the randomizing parameters with
this small database.
The user of FABHEXTR can define, in an EXTR control statement, the number (n)
of consecutive database records that should be included in the extract database.
Usually these will be the first n database records of the original database.
However, you can specify, in an optional SKIP control statement, that the
FABHURG1 utility should skip m database records before extracting n consecutive
database records.
Topics:
v “Considerations when applying the FABHEXTR exit routine” on page
472
v “Extracting a subset of database records with FABHEXTR” on page 473
v “HSSREXTR input data set for FABHEXTR” on page 474
v “JCL example for creating a database unload extract” on page 476
Procedure
1. Prepare FABHURG1 utility JCL.
For instructions, see “Unloading a database with FABHURG1” on page 46.
2. Activate the FABHEXTR exit routine. In the FABHURG1 SYSIN data set,
specify an EXIT control statement and the name of the FABHEXTR exit routine
as follows:
//SYSIN DD *
EXIT FABHEXTR
This control statement must have the following format:
v Columns 1 - 4 must contain EXIT.
v Column 5 must contain a blank.
v Columns 6 - 13 must contain FABHEXTR.
3. Code an HSSREXTR DD statement for the data set of FABHEXTR control
statements.
In this data set, specify either an EXTR control statement that describes the
number of database records to be extracted from the entire database, or a
PARTEXTR control statement that describes the number of database records to
be extracted from each HALDB partition. If an EXTR control statement is
specified, this data set can also contain a SKIP control statement.
For the formats and the parameters of these control statements, see
“HSSREXTR input data set for FABHEXTR” on page 474.
4. Run the job.
Example
See “JCL example for creating a database unload extract” on page 476 for example
JCL to create a database unload extract by using the FABHEXTR exit routine.
The data set must contain either an EXTR control statement or a PARTEXTR
control statement. If it contains an EXTR control statement, it can also contain a
SKIP control statement. A PARTEXTR control statement can be specified only for
HALDB.
//HSSREXTR DD *
EXTR nnnnnnnn
SKIP mmmmmmmm
or
//HSSREXTR DD *
PARTEXTR nnnnnnnnn
Subsections:
v “EXTR control statement”
v “SKIP control statement”
v “PARTEXTR control statement”
The EXTR control statement specifies the number of consecutive database records
to be extracted.
The SKIP control statement specifies the number of database records to be skipped.
The optional SKIP control statement that can be specified with the EXTR control
statement must have the following format:
v Columns 1 - 4 must contain SKIP.
v Column 5 must contain a blank.
v The number of database records to be skipped at the beginning of the database
must be coded from column 6 onward. The number must be less than or equal
to 999999999.
The following figure shows a JCL example for creating an extract database.
In the first job step, in addition to the usual JCL required to do an unload with the
FABHURG1 Unload utility, the following specifications are made:
v A SYSIN data set with an EXIT control statement, which requests the activation
of FABHEXTR.
v An HSSREXTR data set with an EXTR control statement, which requests that the
(first) 10000 database records be included in the database unload extract.
The second job step is a standard database reload performed with the standard
IMS HD Reload utility DFSURGL0. Notice, however, that the IMS DD statement
will point to a DBDLIB containing the test version of the DBD, which is used for
the tuning experiments.
The following topics provide information about issues that you must consider
when migrating from DBT V2 HSSR.
Topics:
v “Default buffer handler for ESDS and OSAM” on page 480
v “Default values of CAB buffering parameters” on page 481
v “Location of buffer pools and compatibility of exit routines” on page 482
v “HSSROPT control statements: HDSTATS and NOSAMEOPT” on page
483
v “Access method used in Unload utilities to write output records” on
page 484
v “Method for specifying an HSSR PCB through KEYLEN” on page 485
v “Support of PROCOPT=R and replace calls” on page 486
v “Support of explicit HSSR calls” on page 488
v “FABHFSU control statements: CO and CON” on page 490
v “Date specification in PSC and CTL control statements” on page 492
v “Format of the scan control data set used in Parallel Scan Facility” on
page 493
v “Location of control blocks” on page 494
v “Product-sensitive macros” on page 495
v “DECN control statement and the unloaded data set” on page 496
If your JCL for DBT V2 HSSR does not specify HSSRCABP control statements to
use CAB, running the job on IMS High Performance Unload will require more
storage.
To avoid the storage problem, the function to change the default buffer handler is
provided. For details, see Chapter 19, “Site default options,” on page 349.
The following table lists the differences of the default values of CAB buffering
parameters.
Table 53. Differences of default values of CAB buffering parameters
CAB parameter Default value in IMS High Performance Default value in
Unload DBT V2 HSSR
RANSIZE Automatically determined from the 8
characteristics of database data set
NBRSRAN 8 4
NBRDBUF Twice the number assigned to RANSIZE 4
REFT4 Equals to RANSIZE 12
OVERFLOW CAB BB
If your JCL for DBT V2 HSSR uses the default values for CAB buffering
parameters, running the job on IMS High Performance Unload might require more
storage.
To avoid this storage problem, the function to fallback the default values to the
ones that are compatible with DBT V2 HSSR is provided. For details, see
Chapter 19, “Site default options,” on page 349.
In DBT V2 Release 2 HSSR, buffer pools are allocated above the 16-MB line only
for VSAM data sets. In DBT V2 Release 3 HSSR buffer pools are allocated above
the 16-MB line for OSAM data sets also only when DFSMS Version 1 or later is
used.
Because of these differences, you might need to link-edit your FABHURG1 exit
routine or FABHFSU exit routine with the 31-bit addressing mode. For details, see
the following topics:
v “User record-formatting routine” on page 331
v Chapter 18, “System programming interfaces,” on page 325 for the requirements
for FABHURG1 exit routines
v “FABHFSU user exit routine” on page 90 for the requirements for FABHFSU exit
routines
The affected DDs are SYSUT2 and SYSUT3 of FABHURG1, and the output DD
specified by a PSB control statement of FABHFSU. In DBT V2 HSSR, the access
method used for writing output records to the unloaded data set is specified in the
FRMT statement for FABHURG1 or PSB statement for FABHFSU. These parameters
are ignored in IMS High Performance Unload; QSAM is always used.
For a PCB defined this way, the value specified on the KEYLEN keyword
parameter is just the indicator of an HSSR PCB and is not related to key length.
That value can also be used (if the basic buffer handler (BB) is used to access the
database data sets) to change the default number of basic buffers that HSSR
allocates for each database data set of the database referenced by the PCB. The
default number of BB buffers, when it is used, is determined as follows:
v If the KEYLEN value is 200 or 201, two basic buffers are allocated for each ESDS
or OSAM data set of the database referenced by the PCB.
v If the KEYLEN value is greater than or equal to 202, the number of basic buffers
is equal to the value minus 200.
Subsections:
v “Status code in PCB feedback”
v “DFSVSAMP DD”
v “Restrictions”
v “Support and restriction for replace operations” on page 487
The following DL/I status codes, in addition to the blank status code, are returned
after a REPL call for an HSSR PCB:
Status code
Meaning
NE Unable to find the segment.
NI There is a duplicate segment in the unique secondary index.
VX VX is used during a REPL call to signal that the application program has
not respected the restrictions for HSSR Engine. When VX is displayed, the
replace was not performed. Database positioning information is maintained
normally.
DFSVSAMP DD
HSSR Engine handles replace calls by issuing IMS DL/I GH and REPL calls
internally. IMS uses its own OSAM or VSAM buffer pools to process these DL/I
calls.
If your application program issues REPL calls, the usual DFSVSAMP control
statements must be coded to tune the processing of these internal DL/I calls.
Restrictions
HSSR Engine provides limited support of replace calls for application programs
that replace a small or moderate number of retrieved database segments and
modify a small or moderate number of accessed database blocks or CIs. This
support includes standard IMS logging of database changes, standard IMS sync
point processing, and a standard DBRC interface as provided by the host IMS
batch subsystem.
An explicit HSSR call consists of a name, a count parameter, a call function, a PCB,
an I/O area, and an SSA (if any). PL/I application programs must include a count
parameter. The explicit HSSR call names are ASMHSSR for Assembler application
programs, CBLHSSR for COBOL application programs, and PLIHSSR for PL/I
application programs.
Note: For a complete description of the call functions, parameters, and layout of
the PCB and SSA, see IMS Application Programming.
The following examples show the format of the call statement for each type of
application program:
Assembler application programs
v Retrieval calls without SSA and REPL calls:
CALL ASMHSSR,(function,pcb,ioarea),VL
CALL ASMHSSR,(three,function,pcb,ioarea),VL
v Retrieval calls with SSA:
CALL ASMHSSR,(function,pcb,ioarea,ssa),VL
CALL ASMHSSR,(four,function,pcb,ioarea,ssa),VL
COBOL application programs
v Retrieval calls without SSA and REPL calls:
CALL 'CBLHSSR' USING FUNCTION,PCB,IOAREA.
CALL 'CBLHSSR' USING THREE,FUNCTION,PCB,IOAREA
v Retrieval calls with SSA:
CALL 'CBLHSSR' USING FUNCTION,PCB,IOAREA,SSA.
CALL 'CBLHSSR' USING FOUR,FUNCTION,PCB,IOAREA,SSA
PL/I application programs
v Retrieval calls without SSA and REPL calls:
CALL PLIHSSR (three,function,pcb,ioarea);
v Retrieval calls with SSA:
CALL PLIHSSR (four,function,pcb,ioarea,ssa);
Subsections:
v “CO control statement”
v “CON control statement” on page 491
CO control statement
The CO control statement activates the compare option, which instructs FABHFSU
to compare the content of one of its output data sets with the content of an FSU II
output data set. (This option should be used only for problem determination.)
Up to three CO control statements can be provided in the CARDIN data set after
the PSB control statement.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
COn ddname2
Position
Description
1 Code the CO keyword to activate the compare option.
3 The required 1-digit entry n is used to specify the FABHFSU output data
set to be compared. Code values of 1, 2, or 3. n specifies that output data
set defined by the nth PSB control statement is to be compared with an
FSU II data set.
12 The required 8-character entry defines the name of the DD statement that
defines the FSU II output data set to be compared. ddname2 is left-aligned
with trailing blanks. This output data set must have been created in a prior
job or job step. Also, in your FABHFSU JCL, you must code a ddname2 DD
statement that specifies the data set to be compared.
If the data sets are HSAM output data sets, the FSU II and the FABHFSU
output data sets must have the same block size.
Notes:
v FABHFSU ends abnormally when it detects a relevant mismatch between
itself and the FSU II output data sets. It also issues an error message.
v Do not use IEBCOMPR to compare FABHFSU to FSU II output data sets,
since they are not always identical.
v The CO control statement cannot be used when NO is specified for the
output format of the unloaded data set.
v When the BLDLPCK statement is specified, the CO control statement for
HS-format output records is ignored.
The CON control statement in CARDIN data set for FABHFSU, which activates the
concatenate option, allows you to run some FSU II user exit routines under
FABHFSU. The exit routines expect to find the segment prefix and the segment
data concatenated in contiguous virtual storage.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CON
Position
Description
1 Code the CON keyword to activate the concatenate option.
When you invoke a user exit routine, both FABHFSU and FSU II pass the
address of the segment prefix and the segment data to the user exit
routine. For FSU II, the segment prefix and the segment data are
contiguous in virtual storage. With FABHFSU, the segment prefix and the
segment data are not contiguous in virtual storage.
The CON control statement instructs FABHFSU to concatenate the segment
prefix and the segment data in contiguous virtual storage, before invoking
the user exit routine.
Since concatenation requires additional CPU cycles, use the CON control
statement only for user exit routines that access both the segment prefix
and the segment data and assume both are contiguous in virtual storage.
In IMS High Performance Unload, the year in the expiration date for a scan control
data set is specified in four digits for the PSC control statement of FABHFSU and
for the CTL control statement for FABHPSFC. This format is the same for DBT V2
Release 3 HSSR.
PSPI
The following table shows where each product-sensitive control block of HSSR
Engine is. The minus sign (-) indicates that the block is in private storage; the plus
sign (+) indicates that the block is in extended private storage.
Table 54. Location of control blocks (DBT V2)
Control block Location in IMS High Performance Unload Location in DBT V2
HDMB + -
HJCB - -
HPCB - -
HPTR - -
HRAN + -
HSDB - -
User exit routines that refer to HDMB or HRAN control block and that have been
link-edited with 24-bit addressing mode must be modified so that they can refer to
the control blocks above the 16-MB line.
PSPI
PSPI
The following table summarizes the aliases for the mapping macros. These macros
are in the HPS.SHPSMAC0 macro library.
Table 55. Aliases of mapping macros for HSSR Engine
Control block Mapping macro Alias
HDMB FABHDMB HDMB
HJCB FABHJCB HJCB
HPCB FABHPCB HPCB
HPTR FABHPTR HPTR
HRAN FABHRAN HRAN
HSDB FABHSDB HSDB
For the users who have difficulty in changing the name of mapping macros, an
alias is provided for each of these macros to support compatibility. These aliases,
however, might not be provided in future releases of this product, so you should
be careful in deciding to use the aliases.
PSPI
The unloaded data set created by IMS High Performance Unload is the same as
that created by DBT V2R3 HSSR with APAR PQ22654 applied. If you are migrating
from DBT V2R3 HSSR, and APAR PQ22654 has not been applied, you might have
a problem with any existing reload job for which the input is an unload data set
created by DBT V2 HSSR.
IMS High Performance Unload supports compatibility with DBT V1 HSSR in the
following ways:
v JCL can be used without modification.
v Input control statements can be used without modification except that the
following input control statements might need minor modifications if the same
results of the DBT V1 HSSR are required:
– DIAGG control statement in the HSSROPT data set
– Position 22 of the DBD control statement in the FABHFSU CARDIN data set
Other differences are the same as those for DBT V2 HSSR. See Chapter 30,
“Compatibility with DBT V2 HSSR,” on page 479.
The following topics are intended for users who are migrating from PO HSSR to
IMS High Performance Unload.
Topics:
v “Program names” on page 500
v “Compatibility of application programs” on page 501
v “Compatibility of exit routines” on page 502
v “Compatibility of JCLs” on page 503
v “Default options” on page 504
v “Return codes and abend codes” on page 505
v “Compatibility of the functions” on page 506
v “Mapping macros for control blocks and output records” on page 508
No aliases are provided for the cataloged procedures. If you want to use the names
of PO HSSR cataloged procedures, copy the corresponding cataloged procedures of
IMS High Performance Unload by the names of those for PO HSSR. See
“Compatibility of JCLs” on page 503.
Reassembling
Relink
Basically, no relink is required for running the application programs written for PO
HSSR on IMS High Performance Unload.
PSPI
The following table shows where each product-sensitive control block of HSSR
Engine is. The minus sign (-) indicates that the block is in private storage; the plus
sign (+) indicates that the block is in extended private storage.
Table 56. Location of control blocks (PO HSSR)
Control block Location in IMS High Performance Unload Location in PO HSSR
HDMB + -
HJCB - -
HPCB - -
HPTR - -
HRAN + -
HSDB - -
User exit routines that refer to HDMB or HRAN control block and that have been
link-edited with 24-bit addressing mode must be modified so that they can refer to
the control blocks above the 16-MB line.
See also “Mapping macros for control blocks and output records” on page 508.
PSPI
Procedures
Control statements
In IMS High Performance Unload, the year is stated in four digits in each of the
following control statements:
v PSC control statement of FABHFSU
v CTL control statement for FABHPSFC
Although the two-digit format is still accepted, consider coding the control
statements for your new JCLs in this new format.
This capability also covers the PO HSSR's HSSRGEN function, in which default
options are specified.
For details, see Chapter 19, “Site default options,” on page 349.
Return codes
v The return codes from FABHURG1, FABHFSU, FABHBSIM, and FABHTEST are
the same as those from the corresponding PO HSSR utilities HSSRURG1,
HSSRFSU, HSSRBSIM, and HSSRTEST, respectively, except that RC01 is returned
for empty databases.
v FABHPSFS returns RC01 if no segment was retrieved in all PSF phases. This
return code is different from that returned from the FSUSUMM utility of FSU-II.
Abend codes
IMS High Performance Unload uses only one abend code, U4013. You cannot
change the code.
Subsections:
v “Database Tuning Statistics”
v “Parallel Scan Facility”
v “DB2 DL/I Batch support” on page 507
v “FABHLDBR utility” on page 507
Database tuning statistics are also provided by IMS High Performance Unload. The
layout of the tuning statistics report is slightly different from that provided by PO
HSSR, but the contents are the same.
You can use the same database tuning method you used with the PO HSSR
Database Tuning Statistics reports. See Chapter 26, “Obtaining statistics for
database tuning,” on page 413.
IMS High Performance Unload supports compatibility with FSU II. IMS High
Performance Unload supports aliases to keep the JCL compatibility with FSU II.
The only change you must make is to specify the name of the IMS High
Performance Unload load module library in the STEPLIB DD.
The following table shows the names and aliases of the HSSR modules.
Table 58. Names and aliases of HSSR modules
Name in IMS High Performance Unload Alias
FABHPSFC FSUCTRL
FABHPSFS FSUSUMM
FABHPSFM FSUMAP
However, the following options specified in the DBD or PSB control statements of
the FSUCTRL data set are ignored by IMS High Performance Unload:
v For the DBD control statement:
– Print line count (position 26)
– Checkpoint option (position 30)
– Checkpoint frequency (position 31)
– Optional scan mode (position 40)
– FSU service aids area (position 48)
v For the PSB control statement:
– Format SYNAD option (position 36)
The format of the scan control data set CNTLDD created by FSU II FSUCTRL is
different from the one created by IMS High Performance Unload. You cannot use
the scan control data set created by FSU II FSUCTRL as an input of FABHFSU or
FABHPSFS of IMS High Performance Unload. You must rerun a series of JCLs for
The method of running a PO HSSR application program that issues SQL calls is
supported by IMS High Performance Unload for maintaining the compatibility
with JCL that is written for PO HSSR. However, the method that is used in the
IBM-supplied cataloged procedure FABHDB2 is recommended.
Note: For the method of running a PO HSSR application program that issues SQL
calls, see "Job Control to Run in An HSSR/IMS-Batch/DB2 Mixed-Mode
Environment" in the PO HSSR Program Descriptions and Operations Manual.
For more information about the FABHDB2 procedure, see “Considerations for DB2
DL/I Batch interface” on page 115.
FABHLDBR utility
The FABHLDBR utility provides the same function as the HSSRLDBR utility of PO
HSSR.
The name HSSRLDBR is available as an alias of FABHLDBR, so you can use this
utility without changing your JCL. For a description of the FABHLDBR utility, see
Chapter 27, “Printing long database records,” on page 421.
PSPI
The relationship between the names of the mapping macros in PO HSSR and those
in IMS High Performance Unload is described in the following table.
Table 59. Changes of mapping macro names for HSSR Engine
Macro name in IMS High Performance Macro name in PO HSSR
Unload
FABHDMB HDMB
FABHJCB HJCB
FABHPCB HPCB
FABHPTR HPTR
FABHRAN HRAN
FABHSDB HSDB
FABHURGR HURGUREC
FABHFSUR FSUREC
For users who have difficulty in changing the name of mapping macros, an alias is
provided for each of these macros to support compatibility. These aliases, however,
might not be provided in future releases of this product, so you should be careful
in deciding to use the aliases.
PSPI
PSBGEN compatibility
For example:
v The PROCOPT statement fields on the PCB and SENSEG statements can have
any value acceptable to IMS.
v Field sensitivity can be specified during PSBGEN, but is ignored by FABHFSU.
The CON control statement in CARDIN data set for FABHFSU, which activates the
concatenate option, allows you to run some FSU II user exit routines under
FABHFSU. The exit routines expect to find the segment prefix and the segment
data concatenated in contiguous virtual storage.
0........1.........2.........3.........4.........5.........6.........7.........8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
CON
Topics:
v “HSSR snaps” on page 514
v “Trapping abends issued by application programs” on page 515
v “FABHTEST utility for problem determination” on page 516
If an unexpected condition is detected while the HSSR PCBs are being initialized,
the following actions are taken:
v An error message is issued.
v A snap to the HSSRSNAP data set is written.
v The initialization process is ended and falls back to DL/I. (The application
program works with DL/I PCBs, and all calls are processed by DL/I modules.)
If you trap abends for your application programs, you might perhaps want to
exclude abends issued by HSSR Engine. The reason is because the purpose of the
ABEND macros that HSSR Engine issues is to result in abends; that is, not to
return to the application program (in this respect, HSSR Engine is similar to IMS).
OS PL/I V2 programs
If you want to exclude abends in HSSR Engine from trapping for OS PL/I V2
programs, update the IBMBXITA Assembler user exit to include the user abend
code of IMS High Performance Unload in the list of user-abend codes that should
be percolated. For detailed descriptions of IBMBXITA, see OS PL/I V2 Programming
Guide, SC26-4307.
If you want to exclude abends in HSSR Engine from the trapping for COBOL or
PL/I programs running under Language Environment (LE), update the LE's
CEEDOPT Assembler module that establishes installation defaults. With the
ABPERC= keyword, include the user abend code of IMS High Performance Unload
in the list of abend codes that should be percolated. For detailed descriptions of
CEEDOPT and of the ABPERC runtime option, see z/OS Language Environment
Programming Guide. As the Programming Guide explains, you can also request
percolation of the abend code of HSSR Engine in:
v The CEEUOPT Assembler module
v The Assembler user exit CEEBXITA
Activate the compare and hardcopy trace options, and run the failing call sequence
with the FABHTEST utility.
v Running the failing call sequence with FABHTEST (instead of the application
program) eliminates the possibility that the application program will destroy
code or control blocks of IMS High Performance Unload.
v The compare option will check whether HSSR Engine returns the same PCB
feedback and I/O area as DL/I would have returned.
v The hardcopy trace option provides a trace of HSSR Engine activities and
control blocks. This trace can be used by the system programmer to find out
why HSSR Engine made the error.
v The trace option should be activated by issuing the START keyword at a point
before the error occurred.
v The TRHC control statement requests that call information, buffer handler
information, control blocks (CB), and buffer control blocks (BUFCB) be traced. A
TRDB control statement must be included.
Related concepts:
Chapter 16, “HSSR call test utility (FABHTEST),” on page 303
Topics:
v “How to look up message explanations” on page 518
v “Abend code U4013” on page 520
v “Return codes” on page 521
v “Messages” on page 523
In the search box that is located in the top left toolbar of any Eclipse help system,
such as the IBM Information Management Software for z/OS Solutions Information
Center, enter the number of the message that you want to locate. For example, you
can enter DFS1065A in the search field.
Use the following tips to help you improve your message searches:
v You can search for information on codes by entering the code; for example, enter
-327.
v Enter the complete or partial message number. You can use the asterisk wildcard
character (*) to represent multiple characters, and you can use the question mark
wildcard character (?) to represent a single character.
The information center contains the latest message information for all of the
information management products that are included in the information center.
You can use any of the popular search engines that are available on the Web to
search for message explanations. When you type the specific message number or
code into the search engine, you will be presented with links to the message
information in IBM information centers.
Using LookAt
LookAt is an online facility that you can use to look up explanations for most of
the IBM messages you encounter, as well as for some system abends and codes.
Using LookAt to find information is faster than a conventional search because in
most cases LookAt goes directly to the message explanation.
You can use LookAt from the following locations to find IBM message
explanations for z/OS elements and features, z/VM®, VSE/ESA, and Clusters for
AIX® and Linux:
v The Internet. You can access IBM message explanations directly from the LookAt
website at http://www.ibm.com/eserver/zseries/zos/bkserv/lookat/.
v Your z/OS TSO/E host system. You can install code on your z/OS or z/OS.e
systems to access IBM message explanations, using LookAt from a TSO/E
command line (for example, a TSO/E prompt, ISPF, or z/OS UNIX System
Services running OMVS).
v Your Microsoft Windows workstation. You can install code to access IBM
message explanations on the z/OS Collection (SK3T-4271) using LookAt from a
Microsoft Windows command prompt (also known as the DOS command line).
v Your wireless handheld device. You can use the LookAt Mobile Edition with a
handheld device that has wireless access and an Internet browser (for example,
Internet Explorer for Pocket PCs, Blazer, or Eudora for Palm OS, or Opera for
Linux handheld devices). Link to the LookAt Mobile Edition from the LookAt
website.
Tip: You can change the return codes, except for FABHPSFS, by using FABHRCEX,
the Return Code Edit exit routine. For details, see “Return Code Edit exit
(FABHRCEX)” on page 329.
The FABHURG1 utility issues a return code that is the logical sum of the following
return codes:
Code Meaning
00 Successful completion.
01 One or both of the following conditions were detected:
v Some segment types are insensitive.
v No segment was retrieved from the database.
02 Some segments have been skipped in accordance with the logic of a user's
exit routine.
04 A sensitive logical child segment type has a logical parent's concatenated
key defined as VIRTUAL, but the BLDLPCK control statement is not
specified.
08 A database error was detected, and the SKERROR option might have
skipped the unloading of one or more database segments.
HSSR Engine ends abnormally with the user completion code of 4013 for errors to
which IMS HD Reorganization Unload utility would return the return code of 8.
FABHFSU issues a return code that is the logical sum of the following return
codes:
Code Meaning
00 Successful completion.
01 No segment was retrieved from the database. When you are running in the
PSF mode, no segment was retrieved in the current PSF phase.
04 A sequence error was detected in the standard mode.
In the PSF mode, this return code means that all the PSF phases were
completed, but one or more sequence errors were detected.
08 In the PSF mode, the current PSF phase was completed normally, but other
phases are incomplete.
FABHPSFS issues a return code that is the logical sum of the following return
codes:
Code Meaning
00 Successful completion. No errors were detected except the STATUS option.
01 No segment was retrieved in all PSF phases.
04 Successful completion of a STATUS option run.
08 Any of the following conditions were detected:
a One or more scan phases were not completed.
b Preceding FABHPSFS has been completed successfully, but the
RERUN option was not specified.
c The FORCE option was specified, but no complete phases were
found.
d Inconsistent DEC options were specified in the scan phases.
Message format
Where:
FABH Indicates that the message was issued by IMS High Performance Unload.
FABI Indicates that the message was issued by the Sequential Subset
Randomizer utility of IMS High Performance Unload.
nnnn Indicates the message identification number.
x Indicates the severity of the message:
E Indicates that an error occurred, which might or might not require
operator intervention.
I Indicates that the message is informational only.
W Indicates that the message is a warning to alert you to a possible
error condition.
Message variables
In the message text, you will see lowercase variable names (such as xxx...). The
variable names take on values when the message appears and represent such
things as:
v The name of a data set
v A DD name
v A DBD name
v A status code
v A command keyword
v A name or value provided by the user
v Text generated by HSSR Engine when an I/O error has occurred
The keyword HSSR in message texts and in the explanation, system action, and
user response represents the HSSR Engine unless otherwise stated.
FABH messages
Use the information in these messages to help you diagnose and solve IMS High
Performance Unload problems.
FABH0004E PARAMETER IS TOO LONG System action: HSSR Engine ends abnormally.
Explanation: A CAB control statement contains a User response: Correct the control statement.
parameter field that is too long.
System action: HSSR Engine ends abnormally. FABH0015E NBRDRAN IS TOO LOW; MINIMUM
IS 2 CABDD=xxxxxxxx
User response: Correct the control statement.
Explanation: The value of an NBRDRAN control
statement is lower than the acceptable minimum.
FABH0005E FIRST CARD SHOULD BE A "CABDD" xxxxxxxx represents the keyword that was specified on
CARD the CABDD control statement (that is, *ALL, *HD, *HS,
Explanation: The first statement in the HSSRCABP or ddname).
data set is not a CABDD control statement. System action: HSSR Engine ends abnormally.
System action: HSSR Engine ends abnormally. User response: Correct the control statement.
User response: Set the statements of the HSSRCABP
data set into the correct sequence. (Each group of CAB FABH0016E NBRDBUF IS TOO LOW; MINIMUM
control statements must begin with a CABDD control IS 2 CABDD=xxxxxxxx
statement.)
Explanation: The value of an NBRDBUF control
statement is lower than the acceptable minimum.
FABH0011E RANSIZE IS TOO LOW; MINIMUM IS xxxxxxxx represents the keyword that was specified on
2 CABDD=xxxxxxxx
User response: Correct the CABDD statement. Explanation: The value of an NBRDBUF control
statement exceeds the acceptable maximum. xxxxxxxx
represents the keyword that was specified on the
FABH0018E SPECIFY EITHER "YES" OR "NO" CABDD control statement (that is, *ALL, *HD, *HS, or
Explanation: HSSR Engine detected an incorrect CAB ddname).
control statement. The CAB control statement does not System action: HSSR Engine ends abnormally.
allow a specification other than YES or NO.
User response: Correct the control statement.
System action: HSSR Engine ends abnormally.
User response: Correct the CAB control statement. FABH0024E REQUESTED BUFFER TOO LARGE;
DDNAME=ddname
FABH0019E INVALID OVERFLOW Explanation: The requested size of the buffer for BB or
SPECIFICATION CAB sequential I/O exceeds the acceptable maximum
Explanation: HSSR Engine detected an incorrect of X'7FFFFFFF' (2,147,483,647) bytes. ddname represents
OVERFLOW CAB control statement. the DD name of the data set for which the storage for
buffer was requested at the time of error.
System action: HSSR Engine ends abnormally.
System action: HSSR Engine ends abnormally.
User response: Correct the CAB control statement.
User response: For CAB, check the RANSIZE and
NBRSRAN control statements in the HSSRCABP data
FABH0020E OPEN OF HSSRCABP HAS FAILED set; for BB, check the BUF control statement in the
Explanation: HSSR Engine could not open the HSSROPT data set. Correct these control statements so
HSSRCABP data set. that the total amount of buffers requested does not
exceed the maximum value of X'7FFFFFFF'. Note that
System action: HSSR Engine ends abnormally. HSSR buffer handler requests the system to acquire the
User response: Check whether MVS issued an following size of bytes as the read buffer for ddname:
additional message describing the type of error with
Buffering Storage size to be requested
more details. Correct the error.
type
BB (Block size of ddname) / (CI size) x
FABH0021E NOGO SET BECAUSE OF ERRORS ON (RANSIZE x (NBRSRAN + 1))
CAB CONTROL STATEMENTS
CAB (Block size of ddname) / (CI size) x BUF
Explanation: CAB control statements in the
HSSRCABP data set contain errors. The errors are
described in detail in other error messages issued by
HSSR Engine. FABH0025E THE SECOND OPERAND OF THE
PARTPROC STATEMENT MUST BE
System action: HSSR Engine ends abnormally. EITHER 'S' OR 'R' (DBD: dbdname)
User response: Correct the errors. Explanation: The second operand of a PARTPROC
statement must be either 'S' or 'R'. The string dbdname
shows the first operand of the PARTPROC statement in
error.
System action: HSSR Engine ends abnormally.
User response: Correct the control statement. dbdname shows the first operand of the PARTPROC
statement in error.
FABH0026E THE LENGTH OF THE THIRD System action: HSSR Engine ends abnormally.
OPERAND OF THE PARTPROC
User response: Correct the control statement.
STATEMENT MUST BE LESS THAN
FIVE (DBD: dbdname)
FABH0031E DDNAME=ddname; DATA REQUEST
Explanation: The length of the third operand of the
OUTSIDE OF DATA SET LIMITS
PARTPROC control statement in HSSRCABP DD is five
bytes or more. The length must be less than five bytes. Explanation: The CAB buffer handler has received a
data request for an OSAM block number or ESDS CI
System action: HSSR Engine ends abnormally.
number that is not within the extents of the data set
User response: Correct the error and rerun the job. (indicated by ddname).
System action: HSSR Engine ends abnormally.
FABH0027W THE DBD SPECIFIED ON THE
User response: Complete the following tasks to
PARTPROC STATEMENT IS NOT
identify the cause, and take appropriate actions:
FOUND OR IS NOT FOR HALDB
(DBD: dbdname) v Activate the compare and hardcopy trace options,
and execute the failing call sequence with the
Explanation: The DBD dbdname specified in a FABHTEST utility (see “FABHTEST utility for
PARTPROC control statement is neither a DBD that is problem determination” on page 516).
referred to from an HSSR PCB, nor a DBD for a
v Ensure that the database processed by HSSR Engine
HALDB.
was not being updated at the time when the error
System action: The PARTPROC statement is ignored, occurred.
and the processing continues.
User response: Ensure that the correct DBD name is FABH0032E BUFFER HANDLER LOGIC ERROR
specified. If necessary, specify the correct DBD name or
Explanation: The CAB buffer handler detected an
remove the statement.
unexpected error.
System action: HSSR Engine ends abnormally.
FABH0028E INCONSISTENT BUFFER HANDLERS
ARE SPECIFIED FOR DSGROUP n OF User response: To identify the cause, activate the
HALDB dbdname compare and hardcopy trace options, and execute the
failing call sequence with the FABHTEST utility (see
Explanation: Different buffer handlers are specified for
“FABHTEST utility for problem determination” on page
partition data sets that belong to the same data set
516). If necessary, contact IBM Software Support.
group n.
System action: HSSR Engine ends abnormally.
FABH0033E BUFFER HANDLER LOGIC ERROR
User response: Correct the CABDD control statements
Explanation: The CAB buffer handler detected an
so that either CAB or BB can be used for all data sets
unexpected error.
that belong to the same data set group.
System action: HSSR Engine ends abnormally.
FABH0029E SYNTAX ERROR IN A PARTPROC User response: To identify the cause, activate the
STATEMENT: reason compare and hardcopy trace options, and execute the
failing call sequence with the FABHTEST utility (see
Explanation: A syntax error was found in a
“FABHTEST utility for problem determination” on page
PARTPROC statement that is specified in the
516). If necessary, contact IBM Software Support.
HSSRCABP data set. reason shows the reason for the
error.
FABH0034E REQUESTED STORAGE FOR
System action: HSSR Engine ends abnormally.
DBD=dbdname NOT AVAILABLE
User response: Correct the control statement. WITHIN THE REGION
Explanation: The total size of the requested buffers
FABH0030E THE THIRD OPERAND OF A exceeds the acceptable maximum that can be acquired
PARTPROC STATEMENT IS NOT A in the region. dbdname indicates the name of the DBD
NUMERIC (DBD: dbdname) of the database for which the buffer was requested at
the time of error.
Explanation: The value specified as the third operand
for a PARTPROC control statement is not a numeric. System action: HSSR Engine ends abnormally.
value, if HSSR buffer handler assumes that BUFND, User response: Check the level of z/OS.
BUFSP, and STRNO are not specified in the JCL, or if
BUFFERSPACE is not used when the data set is
FABH0060E DEVTYPE MACRO FAILED ON
defined.
DDNAME: ddname RC=rc
Explanation: An error was returned by the DEVTYPE
FABH0055W SPECIFIED NUMBER OF BUFFERS IN
macro to get information about the device associated
A SEQ_BUF FOR DDNAME=ddname
with the DD name ddname. The value rc shows the
NOT OPTIMAL FOR ESDS
return code.
Explanation: The number of CIs to be read by one
System action: HSSR Engine issues a user abend.
sequential read for the data set that is identified by
ddname is too large. This message is accompanied by a User response: Ensure that the DD statement for the
FABH0056W message. specified DD name points to the correct data set.
Correct the error, and rerun the job.
System action: See the system action section of
FABH0056W message.
FABH0061E OPEN FAILED FOR DDNAME: ddname
User response: See the user response section of
FABH0056W message. Explanation: An attempt to open the data set
identified by ddname failed.
FABH0056W NUMBER OF BUFFERS IN A SEQ_BUF System action: HSSR Engine issues a user abend.
xxx CHANGE TO yyy
User response: Ensure that the DD statement
Explanation: The number (xxx) of CIs to be read by associated with ddname is the correct data set. Correct
one sequential read for the data set identified by the error, and rerun the job.
ddname is too large. The number xxx is the one that was
specified by the RANSIZE control statement. The ESDS
cannot chain CCWs for that number of CIs in a single FABH0062E BLDL MACRO FAILED FOR MEMBER
start I/O. The maximum number of CIs (yyy) that can mbrname IN LIBRARY ddname
be read depends on the CI size and is displayed in the (RC=rc,RSN=rsn)
message. Explanation: The BLDL macro failed for member
System action: The processing continues with the mbrname in the library that has the DD name ddname.
maximum number (yyy) of CIs. The return code from the macro call was rc, and the
reason code was rsn.
User response: Specify the value yyy indicated in the
message for RANSIZE. System action: HSSR Engine issues a user abend.
User response: This error is likely an internal system
FABH0057W NUMBER OF VSAM BUFFERS IS error. Contact IBM Software Support.
OVERRIDDEN: PLHBFRNO=xxx
Explanation: Normally, the CAB buffer handler FABH0063E BSAM CLOSE HAS FAILED
specifies the number of VSAM buffers, however, CAB Explanation: The CLOSE macro issued by the CAB
detected that its specifications could not be used by buffer handler failed.
VSAM.
System action: HSSR Engine ends abnormally.
System action: HSSR Engine continues processing.
However, the performance will decrease. User response: Ensure that enough virtual storage is
available in the address space. If the cause is not clear,
User response: If you want to use the CAB buffering collect the dump and contact IBM Software Support.
optimization, remove any BUFND, BUFSP, or STRNO
specifications from the JCL, and remove the IDCAMS
BUFFERSPACE specifications for the ESDS from the FABH0064E HDCB NOT FOUND
catalog. If the system-managed buffering is activated in Explanation: HSSR Engine detected an unexpected
the SMS definition, deactivate it. error.
System action: HSSR Engine ends abnormally.
FABH0059E TRACK NUMBER EXCEEDS 65535
User response: This error is likely an internal system
Explanation: The database data set is larger than error. Collect the dump and contact IBM Software
65535 tracks on a volume. To read such a large format Support.
data set, the level of z/OS must be version 1 release 7
or later.
System action: HSSR Engine ends abnormally.
System action: HSSR Engine issues a user abend. User response: This error is likely an internal system
error. Collect the dump and contact IBM Software
User response: Either add a DD statement for the Support.
database data set or specify (on the IMSDALIB or
STEPLIB/JOBLIB) a PDS data set that contains an
MDA member for the DBD. FABH0071E UNEXPECTED DEB LAYOUT
Explanation: The MVS DEB control block used by
FABH0066E INCORRECT DFSMDA MEMBER: OSAM has an unexpected layout.
xxxxxxxx System action: HSSR Engine ends abnormally.
Explanation: The module xxxxxxxx was loaded as a User response: This error is likely an internal system
DFSMDA member, but it does not have a correct error. Collect the dump and contact IBM Software
DFSMDA format. The eye-catcher MDA is not found in Support.
the module.
System action: HSSR Engine issues a user abend. FABH0072E UNEXPECTED DEB LAYOUT
User response: This problem can occur if a library Explanation: The MVS DEB control block used by
that contains a member with the name xxxxxxxx is OSAM has an unexpected layout.
specified in the higher order of the STEPLIB or JOBLIB
concatenation. System action: HSSR Engine ends abnormally.
Ensure that the correct DFSMDA members exist in the User response: This error is likely an internal system
IMSDALIB concatenation or STEPLIB/JOBLIB error. Collect the dump and contact IBM Software
concatenation. Correct the error, and rerun the job. Support.
FABH0067E DD: ddname INFORMATION OF DB: FABH0073E UNSUCCESSFUL BSAM OPEN BY CAB
dbdname IS NOT FOUND IN DFSMDA BUFFER HANDLER
MEMBER Explanation: The CAB buffer handler could not OPEN
Explanation: The DD information associated with the an OSAM data set with BSAM.
DD ddname is not found in the DFSMDA member. System action: HSSR Engine ends abnormally.
HSSR Engine cannot perform the dynamic allocation
for the ddname of the indicated database (dbdname). User response: Check for an error message issued by
MVS or by access method service.
System action: HSSR Engine issues a user abend.
| If you have specified DBALLABOVE in DFSVSAMP
User response: Ensure that the DFSMDA member | and if message IEC133I is written in the job log,
dbdname contains the appropriate information about the | remove the specification of DBALLABOVE from
database dbdname. Correct the error, and rerun the job. | DFSVSAMP and rerun the job.
If the cause is not clear, collect the dump and contact
FABH0068E DYNAMIC ALLOCATION FAILURE IBM Software Support.
OCCURRED FOR DB: dbdname DD:
ddname RC=xx RSN=yyyy
FABH0074E INVALID ENTRY INTO BSAM EOV
Explanation: An attempt at dynamic allocation for EXIT ROUTINE
ddname of dbdname failed. xx is the return code in
register 15 and yyyy is the associated hexadecimal | Explanation: The CAB buffer handler detected an
reason code from the SVC99 routine. | unexpected entry in its own EOV exit routine, used in
| processing an OSAM data set with BSAM. The most
System action: HSSR Engine issues a user abend. | likely cause is that a multivolume OSAM data set has
User response: See the MVS Programming: Authorized | been reused without scratching and reallocating the
Assembler Services Guide for the return code and reason | space before reloading to the database. In that case, an
| invalid end-of-file mark can be left and an embedded
| EOF mark might be caused somewhere in the middle User response: None.
| of the data set.
System action: HSSR Engine ends abnormally. FABH0082I BSIM NORMAL END OF
PROCESSING
| User response: Check whether the multivolume
| OSAM data set was scratched and reallocated correctly Explanation: Program FABHBSIM reached normal end
| as described in IMS Database Administration. If the cause of processing.
| is not clear, collect the dump and contact IBM Software
System action: The processing continues.
| Support.
User response: None.
FABH0075E INVALID ENTRY INTO BSAM EODAD
ROUTINE FABH0083E HSSR ENVIRONMENT IS NOT
ESTABLISHED
| Explanation: The CAB buffer handler detected an
| unexpected entry into its own EODAD exit routine, Explanation: The HSSR environment has not been
| used in processing an OSAM data set with BSAM. The properly established. The reason is probably that
| most likely cause is that a multivolume OSAM data set program FABHBSIM was not invoked by FABHDLI,
| has been reused without scratching and reallocating the FABHDBB, or FABHULU procedures (or by equivalent
| space before reloading to the database. In that case, an JCL).
| invalid end-of-file mark can be left and an embedded
| EOF mark might be caused somewhere in the middle System action: FABHBSIM ends abnormally.
| of the data set. User response: Use the FABHDLI, FABHDBB, or
System action: HSSR Engine ends abnormally. FABHULU procedures, or correct the JCL.
System action: HSSR Engine continues processing. If User response: Correct the error.
an HSSR REPL call is issued for the PCB, HSSR Engine
ends abnormally. FABH0106E INVALID 'SEQUENCE CHECK
User response: You can ignore the message if you do OPTION' ON 'DBD' CARD IN
not issue any HSSR REPL call, but it is recommended //CARDIN
that you change the PROCOPT. Explanation: A DBD control statement contains an
error. The error is described in the error message.
FABH0101E //CARDIN FILE CONTAINS AN System action: Program FABHFSU ends abnormally.
INVALID FSU CONTROL STATEMENT
User response: Correct the control statement.
Explanation: Program FABHFSU detected a control
statement with an incorrect control statement ID.
FABH0107E INVALID 'SEQUENCE ERROR
System action: FABHFSU ends abnormally. OPTION' ON 'DBD' CARD IN
User response: Correct the control statement. //CARDIN
Explanation: A DBD control statement contains an
FABH0102E OPEN-ERROR FOR //CARDIN OR error. The error is described in the error message.
//PRNTOUT System action: Program FABHFSU ends abnormally.
Explanation: Program FABHFSU cannot open the User response: Correct the control statement.
CARDIN or PRNTOUT data set.
System action: FABHFSU ends abnormally. FABH0108E INVALID 'SEQUENCE ERROR PRINT
User response: Check for additional error messages OPTION' ON 'DBD' CARD IN
issued by the access method. Correct the error. //CARDIN
Explanation: A DBD control statement contains an
error. The error is described in the error message.
System action: Program FABHFSU ends abnormally.
User response: Correct the control statement.
FABH0125E INVALID 'DBR SKIP OPTION' ON PSB FABH0130E PCB WITH SPECIFIED 'RELATIVE PCB
CARD NUMBER' DOES NOT REFER TO DBD
Explanation: A PSB control statement contains an NAMED ON DBD CARD
error. The error is described in the error message. Explanation: The specified PCB on the PSB control
System action: Program FABHFSU ends abnormally. statement refers to a dbdname that does not match the
dbdname on the DBD control statement in the
User response: Correct the control statement. CARDIN data set.
System action: Program FABHFSU ends abnormally.
FABH0126E INVALID 'DATA CONVERSION'
OPTION ON PSB CARD User response: Correct the PSB control statement.
FABH0133E 'COn' CONTROL CARD INVALID: NO FABH0138E OPEN ERROR FOR //CNTLDD
MATCHING OUTPUT FORMAT
Explanation: Program FABHFSU could not open the
Explanation: You have provided a COn (CO1, CO2, or CNTLDD data set.
CO3) control statement in the CARDIN data set.
System action: FABHFSU ends abnormally.
Program FABHFSU tried to match these control
statements with the first, second, or third PSB control User response: See the additional error messages that
statements. This matching was unsuccessful because were issued by the access method. Correct the error.
the PSB statement was not provided in the CARDIN
data set (before the CO control statement).
FABH0139E INCORRECT 'PARALLEL SCAN
System action: FABHFSU ends abnormally. NAME'
User response: Correct the CARDIN control Explanation: The parallel scan name that is specified
statement. on the PSC control statement is different from the
parallel scan name that is specified on the CTL
statement that was used to create the scan control data
FABH0134E THERE IS NO JCL DD-STATEMENT
set.
FOR THE SPECIFIED 'DDNAME' ON
THE CONTROL CARD System action: Program FABHFSU ends abnormally.
Explanation: Program FABHFSU detected an incorrect User response: Correct the PSC control statement.
ddname on the CO control statement of the CARDIN
data set or a missing JCL DD statement.
FABH0140E INCORRECT 'DBD NAME'
System action: FABHFSU ends abnormally.
Explanation: The DBD name that is specified on the
User response: Correct the CO control statement or PSC control statement is different from the DBD name
the JCL DD statement. that is specified on the DBD control statement that was
used to create the scan control data set.
FABH0135E MULTIPLE 'PSC' CONTROL System action: Program FABHFSU ends abnormally.
STATEMENTS NOT ALLOWED
User response: Correct the PSC control statement.
Explanation: More than one PSC control statement
was specified. Program FABHFSU supports only one
PSC control statement. FABH0141E 'EXPECTED NUMBER OF SCANS' ON
'PSC' CONTROL CARD IS INVALID
System action: FABHFSU ends abnormally.
Explanation: Program FABHFSU detected an incorrect
User response: Ensure that the CARDIN data set number of scans specified on a PSC control statement.
contains only one PSC control statement.
System action: FABHFSU ends abnormally.
User response: Correct the PSC control statement.
FABH0146E 'PHASE NUMBER' HIGHER THAN Explanation: The expected number of scans specified
'EXPECTED NUMBER OF SCANS' on the PSC control statement is different from the
number of parallel scans specified on the CTL control
Explanation: Program FABHFSU detected an incorrect statement for FABHPSFC, which was used to create the
phase number specified on a PSC control statement. scan control data set.
System action: FABHFSU ends abnormally. System action: Program FABHFSU ends abnormally.
User response: Correct the PSC control statement. User response: Correct the PSC control statement or
the CTL control statement.
FABH0147E UNEXPECTED LAYOUT OF //CNTLDD
CONTROL RECORD FABH0151E COMPARE OPTION IS NOT
Explanation: Program FABHFSU detected an ALLOWED
unexpected layout of the CNTLDD data set of the Explanation: Program FABHFSU detected one of the
Parallel Scan Facility. The reason can be: following errors:
v A FABHFSU error or a FABHPSFC error v "NO" was specified for the output format of the
v An incompatibility between IMS High Performance unloaded data set in the PSB control statement for
Unload and FSU II which the CO (compare) control statement was
v A user error specified.
v A CO control statement is specified for HALDB.
System action: FABHFSU ends abnormally.
System action: FABHFSU ends abnormally.
FABH0165E BLM OR ELM CONTROL STATEMENT User response: Specify a block size or record size
IS SPECIFIED FOR A HALDB (LRECL) that is large enough. Record size can be
specified only for VB and VN format. If the record size
Explanation: A BLM or ELM control statement is (LRECL) is coded on the JCL statement, it must be less
specified for a PHDAM or PHIDAM database. BLM than or equal to the block size minus 4.
and ELM statements are not allowed for HALDB.
System action: Program FABHFSU ends abnormally.
User response: Remove the BLM and ELM statements.
v Ensure that FABHFSU has been provided with the v Ensure that the correct DBDs, PSBs, and ACBs were
correct FSU II output data set. being used.
v Ensure that FABHFSU and FSU II have been
executed under identical conditions (same segment FABH0190E DDN=ddname LENGTH OF INPUT
sensitivity, same user exit routines, no database AND OUTPUT RECORDS DIFFER
updates between the FSU II execution and the
FABHFSU execution). Explanation: A FABHFSU output data set was
compared with an input ddname data set created by
v Determine whether it is an error of FABHFSU or an
FSU II. FABHFSU detected at least one record that is
error of FSU II.
not identical in both data sets.
v Ensure that the correct DBDs, PSBs, and ACBs were
being used. System action: Program FABHFSU ends abnormally.
User response: Complete the following tasks to
FABH0186E DDN=ddname CONTAINS TOO MANY identify the cause, and take appropriate actions:
RECORDS v Ensure that FABHFSU has been provided with the
correct FSU II output data set.
Explanation: A FABHFSU output data set was
compared with an output ddname data set created by v Ensure that FABHFSU and FSU II have been
FSU II. Program FABHFSU detected that the FSU II executed under identical conditions (same segment
output ddname data set does not contain the same sensitivity, same user exit routines, no database
number of records as the FABHFSU output data set. updates between the FSU II execution and the
FABHFSU execution).
System action: FABHFSU ends abnormally.
v Determine whether it is an error of FABHFSU or an
User response: Complete the following tasks to error of FSU II.
identify the cause, and take appropriate actions: v Ensure that the correct DBDs, PSBs, and ACBs were
v Ensure that FABHFSU has been provided with the being used.
correct FSU II output data set.
v Ensure that FABHFSU and FSU II have been FABH0191E DB ERROR ENCOUNTERED AND
executed under identical conditions (same segment "POINTER BYPASS OPTION" NOT
sensitivity, same user exit routines, no database ACTIVATED
updates between the FSU II execution and the
FABHFSU execution). Explanation: HSSR Engine encountered a database
error. By default, FABHFSU issues this message and
v Determine whether it is an error of FABHFSU or an
ends abnormally. However, the pointer bypass option
error of FSU II.
can be activated to bypass the abend.
v Ensure that the correct DBDs, PSBs, and ACBs were
being used. System action: HSSR Engine ends abnormally.
User response: Check why the database error was
FABH0187E DDN=ddname CONTAINS TOO FEW encountered. If appropriate, activate the pointer bypass
RECORDS option on the DBD or PSC control statement.
Explanation: A FABHFSU output data set was If the problem persists, complete the following tasks to
compared with an output ddname data set created by identify the cause of the error:
FSU II. Program FABHFSU detected that the FSU II v Ensure that the correct DBDs, PSBs, and ACBs were
output ddname data set does not contain the same being used.
number of records as the FABHFSU output data set. v Ensure that the database processed by HSSR Engine
System action: FABHFSU ends abnormally. was not being updated at the time when the error
occurred.
User response: Complete the following tasks to
identify the cause, and take appropriate actions:
FABH0192E SEQUENCE ERROR THRESHOLD
v Ensure that FABHFSU has been provided with the
EXHAUSTED
correct FSU II output data set.
v Ensure that FABHFSU and FSU II have been Explanation: Program FABHFSU performed
executed under identical conditions (same segment sequence-checking of the segment key fields, and
sensitivity, same user exit routines, no database detected more sequence errors than specified (or
updates between the FSU II execution and the defaulted) on the DBD control statement.
FABHFSU execution). System action: HSSR Engine ends abnormally.
v Determine whether it is an error of FABHFSU or an
error of FSU II. User response: Check why the database has so many
sequence errors. If appropriate, increase the sequence
Explanation: The data set name used for the System action: HSSR Engine continues processing.
FABHFSU output ddname data set was requested to be
User response: If you really do not want to
checked on a CTL control statement. The data set name
decompress the compressed segments, ignore this
that was used did not follow the FABHFSU standard
message.
naming convention.
System action: Program FABHFSU ends abnormally.
FABH0204W COMPARE OPTION CANNOT BE
User response: Correct the data set name of the USED FOR THIS FABHFSU
output data set DD statement. EXECUTION
Explanation: HSSR Engine encountered a condition
FABH0195E RETURN CODE 4 FROM HDAM that precludes use of the compare option.
RANDOMIZER, RMOD=xxxxxxxx
System action: HSSR Engine deactivates the compare
Explanation: Program FABHFSU received a status option.
code FM because of the return code 4 from the HDAM
User response: None.
randomizing module. xxxxxxxx is the name of the
HDAM randomizing module. Register 9 contains the
address of the key used by the HSSR call. FABH0205W COMPARE OPTION CANNOT BE
USED FOR THIS FABHURG1
System action: FABHFSU ends abnormally.
EXECUTION
User response: The randomizer is different from the
Explanation: HSSR Engine encountered a condition
one for the real database. Use the correct randomizer
that precludes use of the compare option.
and rerun the job, if necessary.
System action: HSSR Engine deactivates the compare
option.
FABH0201E OPEN ERROR FOR //IMS DD
User response: None.
Explanation: Program FABHFSU could not open the
IMS DD data set to read the IMS DBD control blocks.
FABH0211E ENQ CONFLICT: OTHER JOB
System action: FABHFSU ends abnormally.
CURRENTLY ACTIVE FOR THE SAME
User response: Provide correct DD statements. Check PSC PHASE
for additional error messages issued by the access
Explanation: The concurrent multiple jobs were
method.
started for the same phase of a parallel scan.
Explanation: Program FABHFSU was started after the System action: FABHFSU ends abnormally.
expiration date specified on the CTL or on a PSC
User response: Complete the following tasks to
control statement.
identify the cause, and take appropriate actions:
System action: FABHFSU ends abnormally. v Ensure that the PSC control data set has been created
User response: Correct the CTL or PSC control correctly by FABHPSFC, and that it has been created
statement. with the correct DBD version.
v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
FABH0213E PSC PHASE HAS ALREADY BEEN
STARTED
FABH0222E UNEXPECTED CONDITION ON PSC
Explanation: Program FABHFSU was started multiple CONTROL FILE: PHASE ALREADY
times for the same phase. COMPLETED
System action: FABHFSU ends abnormally. Explanation: At job-step termination, program
User response: If appropriate, specify a Rerun FABHFSU detected that its phase is already marked as
Indicator on the PSC control statement. "completed" in the PSC control data set. Such an
incorrect situation can occur in an uncontrolled
multisystem environment.
FABH0214E DDN=ddname: BLOCKSIZE SHOULD
NOT CHANGE System action: FABHFSU ends abnormally.
Explanation: Program FABHFSU was run multiple User response: Do not run the PSF option of
times with different block sizes for the output data set. FABHFSU in an uncontrolled multisystem environment.
The block sizes must be the same. Consider using Global Resource Serialization.
System action: FABHFSU ends abnormally. If the problem persists, ensure that the correct DBDs,
PSBs, and ACBs were being used.
User response: Specify identical block sizes for all
executions.
FABH0223I ALL SCAN PHASES COMPLETED
FABH0215I ALL SCAN PHASES STARTED Explanation: All the FABHFSU parallel scan phases
were completed.
Explanation: All the FABHFSU parallel scan phases
were in starting condition. System action: Program FABHFSU continues
processing.
System action: Program FABHFSU continues
processing. User response: None.
User response: Correct the SYSPRINT DD statement. Explanation: A FABHURG1 SYSIN data set PCB
control statement specified a PCB number that was not
positive.
FABH0248W INCORRECT ROOT KEY IN GU-CALL
(STATUS CODE FM) System action: Program FABHURG1 ends abnormally.
Explanation: Program FABHTEST received a status User response: Correct the PCB control statement.
code FM from HSSR call handler because of a return
code 4 from the HDAM randomizing module. FABH0254E SPECIFIED HSSR PCB IS NOT FOUND
System action: FABHTEST program continues Explanation: A FABHURG1 SYSIN data set PCB
processing. control statement specified an HSSR PCB that could not
User response: Determine whether the preceding is be found. Note that the PCB control statement should
acceptable. refer to HSSR PCBs, never to DL/I PCBs.
FABH0270W WARNING: SOME SEGMENTS HAVE FABH0274E RETURN CODE 4 FROM HDAM
A VIRTUAL LOGICAL PARENT KEY RANDOMIZER, RMOD=xxxxxxxx
Explanation: Program FABHURG1 detected that a Explanation: Program FABHURG1 received a status
logical child segment has a virtual logical-parent- code FM because of the return code 4 from HDAM
concatenated-key (LPCK), but the BLDLPCK control randomizing module. xxxxxxxx is the name of HDAM
statement is not specified. Hence the output will randomizing module. Register 9 contains the address of
contain blanks instead of the LPCK (unless user key used by the HSSR call.
routines have performed additional processing).
System action: FABHURG1 ends abnormally.
System action: FABHURG1 continues processing.
User response: The randomizer is different from the
User response: Check whether this condition is one for the real database. Use the correct randomizer
acceptable. If it is not, specify the BLDLPCK control and rerun the job, if necessary.
statement.
FABH0275W WARNING: NO SEGMENT WAS
FABH0271W WARNING: SEGMENTS MAY BE RETRIEVED
MISSING ON UNLOADED OUTPUT
Explanation: Program FABHURG1 attempted to
BECAUSE OF GG STATUS CODE
unload a database, but no segment was retrieved from
Explanation: Program FABHURG1 is running with the the database. The database might be empty.
SKERROR option in order to unload a database that
System action: FABHURG1 normally ends with a
contained database errors. Some segments might be
return code of 01.
missing on the unloaded output.
User response: Check whether it is acceptable that the
System action: FABHURG1 continues processing.
input database has no valid segments. If a wrong
User response: Determine whether the unloaded database data set, or wrong DBD or PSB was specified,
database version is acceptable to the applications. sIf specify the appropriate ones, and rerun the job.
not, complete the following tasks to identify the cause,
and take appropriate actions:
FABH0276I USEGMAX STATEMENT IS IGNORED
v Ensure that the correct DBDs, PSBs, and ACBs were
being used. Explanation: This message is issued in one of the
following cases:
v Ensure that the database processed by HSSR Engine
was not being updated at the time when the error 1. The length specified on the USEGMAX control
occurred. statement is less than the length of the longest
database segment.
2. No user exit routine is specified.
FABH0272I DB UNLOAD COMPLETE
3. The USEGMAX statement is specified for the *F3
Explanation: Program FABHURG1 reached the end of format or for the user record-formatting routine.
the database and has finished its processing.
System action: For each case, the following system
System action: FABHURG1 continues processing. action is taken:
User response: None. 1. The length specified on the USEGMAX statement is
adjusted to the length of the longest segment.
FABH0273I nnn,nnn,nnn DB RECORDS RETRIEVED 2. The USEGMAX statement is ignored.
- DBD=dbdname PART=ddname 3. The USEGMAX statement is ignored.
Explanation: nnn,nnn,nnn database records have been
In any of these cases, program FABHURG1 continues
retrieved from database dbdname. PART=ddname is
its processing and ends with a return code of 0.
displayed only for partitioned databases, and in that
case, the database records are counted per partition. User response: If the system action is acceptable,
remove the USEGMAX statement or modify the value
System action: Program FABHURG1 continues
for the USEGMAX control statement for the next run. If
processing.
the action is not acceptable, check your control
User response: None. statements or the DBD that you specified. Then correct
the error, and rerun the job.
FABH0280E INVALID 'DATA CONVERSION' System action: Program FABHURG1 ends abnormally.
OPTION ON EXIT CONTROL User response: Correct the error and rerun the job.
STATEMENT
Explanation: Program FABHURG1 detected an error FABH0284E INCORRECT CHECKREC OPTION
in the 'data conversion' option field of the EXIT control
statement. Explanation: An incorrect CHECKREC option is
specified in the SYSIN data set. It must be either YES
System action: FABHURG1 ends abnormally. or NO.
User response: Correct the error. System action: Program FABHURG1 ends abnormally.
User response: Correct the error.
FABH0281E OUTPUT FORMAT *CS IS NOT
SUPPORTED FOR THIS DATABASE:
DBD=dbdname | FABH0285E OUTPUT FORMAT *CP IS NOT
| SUPPORTED FOR THIS DATABASE:
Explanation: This message is issued if the *CS format | DBD=dbdname
is specified for a SHISAM database or for a secondary
index. | Explanation: This message is issued if the *CP format
| is specified for a database that is not a HALDB.
System action: Program FABHURG1 ends abnormally.
| System action: Program FABHURG1 ends abnormally.
User response: Use an unload format other than *CS.
| User response: Use an unload format other than *CP.
System action: Program FABHURG1 ends abnormally. User response: Ensure that the correct DBD is
specified.
User response: Select only one of these statements,
and remove the rest.
FABH0294E INVALID UNLOAD FORMAT IS
SPECIFIED FOR
FABH0291E AN ERROR IS FOUND IN A [MIGRATION|FALLBACK] UNLOAD
'PARTITION' CONTROL STATEMENT:
reason Explanation: A format other than *HD is specified on
the FRMT control statement for the FABHURG1 job,
Explanation: A PARTITION statement is coded although the migration or fallback unload is
incorrectly. The string reason indicates the reason for the designated.
error:
System action: Program FABHURG1 ends abnormally.
reason Description
User response: Specify the *HD format, and rerun the
NON-HALDB job.
The PARTITION statement is specified for a
database that is not a HALDB.
FABH0295E USEGMAX CONTROL STATEMENT IS
NAME TOO LONG SPECIFIED FOR
The value specified as the first operand of the [MIGRATION|FALLBACK] UNLOAD
PARTITION statement has more than seven
bytes. Explanation: The USEGMAX control statement is
specified for the FABHURG1 job, although the
NUMBER TOO LONG migration or fallback unload is designated. The
The numeric value specified as the second USEGMAX control statement is not allowed in
operand of the PARTITION statement has migration and fallback unload.
more than five digits.
System action: Program FABHURG1 ends abnormally.
NUMBER TOO LARGE
The numeric value specified as the second User response: Remove the USEGMAX control
operand of the PARTITION statement is statement, and rerun the job.
greater than 1001.
NUMBER IS ZERO FABH0299I UNLOAD FUNCTION ENDED,
The numeric value specified as the second HIGHEST RETURN CODE IS xxx
operand of the PARTITION statement is 0. (REASON CODE: yyyy)
System action: Program FABHURG1 ends abnormally. Explanation: Program FABHURG1 that had been
invoked by using a JCL that is compatible with IMS
HD Reorganization Unload utility ended with the
FABH0313E SYNTAX ERROR IN SYSIN CONTROL The unsupported call is printed in the Trace Output
STATEMENTS report in the HSSRTRAC data set.
Explanation: Both a control statement for IMS HD System action: If APISET is 2, HSSR Engine ends
Reorganization Unload utility (DFSURGU0) and a abnormally. If APISET is 3, the call and all the
control statement for program FABHURG1 are specified succeeding calls to the HSSR PCB are passed to the
in the SYSIN data set. You must specify control IMS DL/I call handler to continue the processing
statements for one, but not both, of these utilities. instead of ending it abnormally.
System action: IMS High Performance Unload's User response: If APISET is 2, specify 'APISET 3'. If
APISET is 3, ignore this message. For details about the FABHTEST utility (see “FABHTEST utility for
call types and command types supported by the HSSR problem determination” on page 516).
call handler, see “DL/I calls and EXEC DLI command v Ensure that the correct DBDs, PSBs, and ACBs were
for HSSR PCB” on page 110. being used.
v Ensure that the database processed by HSSR Engine
FABH0316E ERROR RETURN FROM IGWASYS was not being updated at the time when the error
(RC=xx, RSN=yy) occurred.
Explanation: HSSR Engine called IGWASYS, but an
error return code was returned from IGWASYS. Here, FABH0322E S-C DOES NOT MATCH
xx is the return code and yy is the reason code.
Explanation: In an HD organization, HSSR call
System action: HSSR Engine ends abnormally. handler checks the segment code of a retrieved segment
against the expected segment code. This check was not
User response: See DFSMSdfp Advanced Services for
successful.
the meaning of the return code and reason code.
System action: HSSR Engine ends abnormally.
FABH0319E GN WITH QUALIFIED SSA CALL IS User response: See message FABH0321E, and take an
ISSUED TO THE COMPRESSED ROOT appropriate action.
KEY
Explanation: The GN call with an SSA qualified on FABH0324E BAD RETURN-CODE FROM BUFFER
the root key field is issued, however, HSSR Engine HANDLER
cannot compare the compressed key with the provided
Explanation: HSSR buffer handler encountered an I/O
value.
problem. More information can be found in the
System action: HSSR Engine ends abnormally. accompanying SYNADAF message buffer.
User response: For HIDAM or PHIDAM database, System action: HSSR Engine ends abnormally.
specify the BYINDEX control statement in HSSROPT,
User response: See message FABH0321E, and take an
then the root key stored in the index database is used.
appropriate action.
Otherwise, check whether the correct APISET control
statement is specified. For details about the call types
and command types that APISET supports, see “DL/I FABH0325E INVALID SEGMENT-CODE IN HISAM
calls and EXEC DLI command for HSSR PCB” on page
110. Explanation: HSSR call handler checked the segment
code of an HISAM database. The segment code is not
within the range of defined segment codes.
FABH0320E GB ON PCF OR TWIN-NOT-ROOT
System action: HSSR Engine ends abnormally.
Explanation: In HD organizations, HSSR call handler
follows the HD chains to find out which is the next User response: See message FABH0321E, and take an
segment to be processed. During this process, HSSR appropriate action.
call handler "lost itself."
System action: HSSR Engine ends abnormally. FABH0326E BAD RETURN-CODE FROM
BUFFER-HANDLER (KSDS)
User response: To identify the cause, activate the
compare and hardcopy trace options, and execute the Explanation: While reading a KSDS record, HSSR
failing call sequence with the FABHTEST utility (see buffer handler encountered an I/O problem. More
“FABHTEST utility for problem determination” on page information will be found in the accompanying
516). SYNADAF message buffer.
System action: HSSR Engine ends abnormally.
FABH0321E RBA OUT OF DB-RANGE User response: See message FABH0321E, and take an
Explanation: In an HD organization, HSSR call appropriate action.
handler found a pointer that points beyond the data set
end. FABH0327E BAD RETURN-CODE FROM
System action: HSSR Engine ends abnormally. BUFFER-HANDLER (ESDS/OSAM)
User response: Complete the following tasks to Explanation: While reading an OSAM block or ESDS
identify the cause, and take appropriate actions: CI, HSSR buffer handler encountered an I/O problem.
More information will be found in the accompanying
v Activate the compare and hardcopy trace options, SYNADAF message buffer.
and execute the failing call sequence with the
System action: HSSR Engine ends abnormally. User response: Specify 'APISET 2' or 'APISET 3'. For
details about the call types and command types that
User response: See message FABH0321E, and take an
APISET supports, see “DL/I calls and EXEC DLI
appropriate action.
command for HSSR PCB” on page 110.
All HSSR PCBs fall back to DL/I PCBs, and all calls
FABH0337E ADDRESS-LIST OF HSSR
issued against these PCBs are processed by DL/I action
CALL-PARAMETERS IS INVALID
modules.
Explanation: The format of the call-parameter address
User response: Check whether IMS High Performance
list used in the HSSR call is incorrect.
Unload supports the active IMS release.
System action: HSSR Engine ends abnormally.
User response: This problem can happen in the FABH0342E LANGUAGE OF PSB IS NOT
following cases: SUPPORTED
v An Assembler application program provides an Explanation: During the initialization of HSSR Engine,
incorrect parameter address. a PSB language flag defining a language other than
v The member of the call parameters is incorrect. Assembler, COBOL, or PL/I was detected.
System action: All HSSR calls fall back to DL/I calls.
Ensure that Register 6 points to the address list of the
All HSSR PCBs and all calls are processed by DL/I
call parameters. Correct the application program to
action modules.
provide appropriate parameter addresses.
User response: Correct the PSB language statement
and rerun the job, if necessary.
FABH0338E INCORRECT SEGMENT NAME IN
SSA
FABH0343E HSSR INITIALIZATION HAS
Explanation: The application program issued an HSSR
INTERCEPTED A PGM CHECK
GN call with an incorrect segment name in the SSA.
The segment name must be the name of a sensitive Explanation: During the initialization of HSSR Engine,
segment. an ESPIE EXIT routine intercepted a program check;
the possible cause is an incorrect DL/I control block
System action: HSSR Engine ends abnormally.
layout.
User response: Correct the program error.
System action: All HSSR calls fall back to DL/I calls.
All HSSR PCBs fall back to DL/I PCBs, and all calls
FABH0339E A DEPENDENT SEGMENT IS NOT issued against these PCBs are processed by DL/I action
(DATA-) SENSITIVE modules.
Explanation: The application program issued an HSSR User response: If necessary, contact IBM Software
GN call to retrieve the next dependent segment; in the Support.
PSBGEN, however, the dependent segment is not
defined as data-sensitive.
FABH0344E LAYOUT OF PCPARMS AND/OR
System action: HSSR Engine ends abnormally. RCPARMS HAS CHANGED
User response: Modify the PSB or modify the Explanation: During the initialization of HSSR Engine,
program. HSSR detected an unexpected layout of DL/I
PCPARMS or RCPARMS control blocks.
FABH0340E EXECUTION IN AN ONLINE REGION System action: All HSSR calls fall back to DL/I calls.
IS NOT SUPPORTED All HSSR PCBs fall back to DL/I PCBs, and all calls
issued against these PCBs are processed by DL/I action
Explanation: An attempt was made to run IMS High modules.
Performance Unload in an online region. This is not
supported. User response: Check whether IMS High Performance
Unload supports the active IMS release.
System action: All HSSR calls fall back to DL/I calls.
All HSSR PCBs fall back to DL/I PCBs and all calls
issued against these PCBs are processed by DL/I action FABH0346E DB-ACCESS NOT AUTHORIZED BY
modules. DBRC
User response: Correct the region type in the PARM Explanation: This message is issued when IMS High
field of the EXEC statement. Performance Unload is running in ULU region type
and when DBRC does not authorize access to the
database. Notice that in ULU region types, the
FABH0341E PST LAYOUT HAS CHANGED requested authorization is for database level sharing
Explanation: During the initialization of HSSR Engine, with read-integrity.
an incorrect DL/I PST layout was detected. System action: HSSR Engine ends abnormally.
System action: All HSSR calls fall back to DL/I calls. User response: Resubmit the job at a time when
System action: HSSR Engine ends abnormally. System action: The processing continues.
User response: Ensure that the correct PSBs and DBDs User response: Inform the IMS specialists.
are used.
FABH0352E THE FALL BACK IS ABORTED
FABH0348E INTERNAL ERROR OCCURRED IN BECAUSE HSSRSNAP DD IS NOT
HSSR CALL ANALYZER SPECIFIED
Explanation: HSSR call analyzer detected an Explanation: HSSR Engine detected an abnormal
unexpected error. situation described in preceding messages, and
attempted to issue a SNAP. However, the HSSRSNAP
System action: HSSR Engine ends abnormally. data set could not be opened, and the abnormal
User response: Complete the following tasks to situation could not be documented with a SNAP.
identify the cause, and take appropriate actions: System action: Instead of issuing a SNAP, HSSR
v Ensure that the correct DBDs, PSBs, and ACBs were Engine ends abnormally with dump.
being used.
User response: To prevent an abend and allow the
v Ensure that the database processed by HSSR Engine fallback to DL/I, the HSSRSNAP DD statement must
was not being updated at the time when the error be included in the JCL. If the SNAP output is not
occurred. required, this data set can be defined as dummy.
System action: HSSR Engine ends abnormally. Explanation: A Get-by-RBA call is issued for a
partitioned database. The Get-by-RBA call is not
User response: Correct the utility control statement or supported for the partitioned database.
the PSB.
System action: HSSR Engine ends abnormally.
FABH0350W HSSR CALLS FALL BACK TO DL/I User response: Modify your application program not
FOR [NAMED DBD|ALL DBD'S] to use the Get-by-RBA call, and rerun the job. See
BECAUSE OF FOLLOWING PROBLEM “Get-by-RBA calls” on page 342.
IN DBD=dbdname
Explanation: During the building of control blocks for FABH0354E REPL CALL IS NOT SUPPORTED FOR
the dbdname, HSSR Engine detected an abnormal THE PARTITIONED DB: DBD=xxxxxxxx
situation. This situation is described by the next Explanation: An HSSR REPL call is issued for a
message. partitioned database. The HSSR REPL call is not
System action: All HSSR calls fall back to DL/I calls, supported for the partitioned database.
either for the named DBD or for all DBDs. The System action: HSSR Engine ends abnormally.
corresponding PCBs fall back to DL/I PCBs. All calls
issued against these PCBs are processed by DL/I action User response: Modify your application program not
modules. to use the HSSR REPL call, or replace the HSSR REPL
calls with the DL/I REPL calls.
User response: If the fallback is done for all DBDs, the
problem could be an unexpected layout of DL/I control
blocks. See the accompanying messages issued by
HSSR Engine.
Explanation: An incorrect operand on the CABSTAT User response: Change the PCB as follows: specify the
control statement is specified in the HSSROPT data set. name of the physical DBD, or do not specify the PCB
The operand must be either YES or NO. as an HSSR PCB.
FABH0383E SEGMENTS ARE NOT ALL IN SAME FABH0387E DMB POINTERS TO PSDB'S OR AMP
DATABASE NOT OK
Explanation: Because of PSBGEN specifications, HSSR Explanation: One of the following two problems
Engine tried to build an HSSR PCB. However, the occurred:
sensitive segments are not all in the same physical 1. During PSBGEN, the SENSEG statements were not
database. HSSR Engine does not support sensitive coded in the same hierarchical sequence as in the
segments in multiple databases. DBD.
System action: HSSR Engine issues a SNAP and falls 2. HSSR Engine detected an incorrect or unexpected
back to DL/I for all PCBs. All PCBs are defined as DL/I control block layout.
DL/I PCBs and all calls are processed by DL/I action
System action: HSSR Engine issues a SNAP and falls
modules.
back to DL/I for all PCBs. All PCBs are defined as
User response: Change PSBGEN as follows: remove DL/I PCBs and all calls are processed by DL/I action
the problematic SENSEG statements causing the modules.
problem, or do not specify the PCB as an HSSR PCB.
User response: Verify that the sequence of the
SENSEG statements in the PSBGEN is the same as in
FABH0384I PROCSEQ=indexdbd IS SPECIFIED IN the DBD; if not, correct the sequence of the SENSEG
PCB#=nnn statements and perform the PSBGEN again.
Explanation: The secondary index indexdbd is specified
by the PROCSEQ= parameter in the PCB. nnn shows FABH0388E UNSUPPORTED DBD: IMS/ESA
the PCB number. HSSR Engine uses the secondary PARTITION SUPPORT PRODUCT
index to retrieve the root segments.
Explanation: Because of PSBGEN specifications, an
System action: HSSR Engine continues the processing. HSSR PCB was tried to be built. However, the
IMS/ESA Partition Support Product is not supported
User response: None.
by HSSR Engine.
System action: HSSR Engine issues a SNAP for this
FABH0385E JCB POINTERS TO SDB'S NOT OK
PCB and falls back to DL/I. The PCB is defined as a
Explanation: One of the following two problems DL/I PCB, and all calls issued against it are processed
occurred: by DL/I action modules.
1. During PSBGEN, the SENSEG statements were not User response: Modify the database organization, or
coded in the same hierarchical sequence as in the do not specify the PCB as an HSSR PCB.
DBD.
2. HSSR Engine detected an incorrect or unexpected
FABH0389E MORE SDB'S THAN PSDB'S
DL/I control block layout.
Explanation: One of the following two problems
System action: HSSR Engine issues a SNAP and falls
occurred:
back to DL/I for all PCBs. All PCBs are defined as
DL/I PCBs and all calls are processed by DL/I action 1. During PSBGEN, the SENSEG statements were not
modules. coded in the same hierarchical sequence as in the
DBD.
User response: Verify that the sequence of the
2. HSSR Engine detected an incorrect or unexpected
SENSEG statements in the PSBGEN is the same as in
DL/I control block layout.
the DBD; if not, correct the sequence of the SENSEG
statements and perform the PSBGEN again. System action: HSSR Engine issues a SNAP and falls
back to DL/I for all PCBs. All PCBs are defined as
DL/I PCBs and all calls are processed by DL/I action
FABH0386E MORE THAN 10 DATA SET GROUPS
modules.
NOT SUPPORTED
User response: Verify that the sequence of the
Explanation: Neither IMS nor HSSR Engine supports
SENSEG statements in the PSBGEN is the same as in
HD databases with more than 10 data set groups.
the DBD; if not, correct the sequence of the SENSEG
System action: HSSR Engine issues a SNAP for this statements and perform the PSBGEN again.
PCB and falls back to DL/I. The PCB is defined as a
DL/I PCB, and all calls issued against it are processed
FABH0390E LENGTH OF PSDB'S NOT OK
by DL/I action modules.
Explanation: One of the following two problems
User response: Change the PCB as follows: specify the
occurred:
name of the physical DBD, or do not specify the PCB
as an HSSR PCB.
FABH0391E SEGMENT CODE OF PSDB'S NOT User response: Verify that the sequence of the
ASCENDING SENSEG statements in the PSBGEN is the same as in
the DBD; if not, correct the sequence of the SENSEG
Explanation: One of the following two problems statements, and perform the PSBGEN again.
occurred:
1. During PSBGEN, the SENSEG statements were not
FABH0394E NUMBER OF DSG'S CALCULATED
coded in the same hierarchical sequence as in the
FROM MASTER DMB IS UNEQUAL
DBD.
TO THE NUMBER CALCULATED
2. HSSR Engine detected an incorrect or unexpected FROM DMB FOR PARTITION ppppppp
DL/I control block layout.
Explanation: The number of DSGROUPs calculated
System action: HSSR Engine issues a SNAP and falls from the master DMB of the HALDB for which the
back to DL/I for all PCBs. All PCBs are defined as partition ppppppp is defined is not equal to the number
DL/I PCBs and all calls are processed by DL/I action of DGGROUPs calculated from the partition DMB of
modules. the partition.
User response: Verify that the sequence of the System action: HSSR Engine issues a SNAP for this
SENSEG statements in the PSBGEN is the same as in PCB and falls back to DL/I. The PCB is defined as a
the DBD; if not, correct the sequence of the SENSEG DL/I PCB, and all calls issued against it are processed
statements, and perform the PSBGEN again. by DL/I action modules.
User response: To identify the cause, ensure that the
FABH0392E SECONDARY LIST OF LP NOT database processed by HSSR Engine was not being
FOUND updated at the time when the error occurred.
Explanation: One of the following two problems
occurred: FABH0395E PREFIX SIZE IN PSDB NOT OK
1. During PSBGEN, the SENSEG statements were not
Explanation: One of the following two problems
coded in the same hierarchical sequence as in the
occurred:
DBD.
1. During PSBGEN, the SENSEG statements were not
2. HSSR Engine detected an incorrect or unexpected
coded in the same hierarchical sequence as in the
DL/I control block layout.
DBD.
System action: HSSR Engine issues a SNAP and falls 2. HSSR Engine detected an incorrect or unexpected
back to DL/I for all PCBs. All PCBs are defined as DL/I control block layout.
DL/I PCBs and all calls are processed by DL/I action
modules. System action: HSSR Engine issues a SNAP and falls
back to DL/I for all PCBs. All PCBs are defined as
User response: Verify that the sequence of the DL/I PCBs and all calls are processed by DL/I action
SENSEG statements in the PSBGEN is the same as in modules.
the DBD; if not, correct the sequence of the SENSEG
statements, and perform the PSBGEN again. User response: Verify that the sequence of the
SENSEG statements in the PSBGEN is the same as in
the DBD; if not, correct the sequence of the SENSEG
statements, and perform the PSBGEN again.
FABH0396E SENSITIVE VIRTUAL LOGICAL FABH0403E SEC LIST FOR INDEXED-SEGM NOT
CHILD (segmname) IS FOUND IN FOUND
PCB#=nnnn
Explanation: One of the following two problems
Explanation: A sensitive virtual logical child segment occurred:
segmname is found in the HSSR PCB. nnnn shows the 1. During PSBGEN, the SENSEG statements were not
PCB number. HSSR Engine does not support sensitive coded in the same hierarchical sequence as in the
virtual logical child segment. DBD.
System action: HSSR Engine issues a SNAP and falls 2. HSSR Engine detected an incorrect or unexpected
back to DL/I for all PCBs. All PCBs are defined as DL/I control block layout.
DL/I PCBs and all calls are processed by DL/I action
System action: HSSR Engine issues a SNAP and falls
modules.
back to DL/I for all PCBs. All PCBs are defined as
User response: If you do not need to retrieve the DL/I PCBs and all calls are processed by DL/I action
virtual logical child segment, specify the SKIPVLC YES modules.
option in the HSSROPT data set.
User response: Verify that the sequence of the
SENSEG statements in the PSBGEN is the same as in
FABH0397E UNSUPPORTED DATABASE ORG the DBD; if not, correct the sequence of the SENSEG
statements and perform the PSBGEN again.
Explanation: Because of PSBGEN specifications, an
HSSR PCB was tried to be built. However, the
organization of the referred-to DBD is not supported by FABH0404E PCB WITH FIELD SENSITIVITY NOT
HSSR Engine. SUPPORTED
System action: HSSR Engine issues a SNAP for this Explanation: Because of PSBGEN specifications, an
PCB and falls back to DL/I. The PCB is defined as a HSSR PCB for which field sensitivity has been specified
DL/I PCB, and all calls issued against it are processed was tried to be built. Field sensitivity is not supported
by DL/I action modules. by HSSR Engine.
User response: Modify the database organization, or System action: HSSR Engine issues a SNAP for this
do not specify the PCB as an HSSR PCB. PCB and falls back to DL/I. The PCB is defined as a
DL/I PCB, and all calls issued against it are processed
by DL/I action modules.
FABH0398E INDEX DMB NOT FOUND
User response: Either remove field sensitivity
Explanation: Because of PSBGEN specifications, an
specifications for this PCB, or do not specify the PCB as
HSSR PCB referring to a logical DBD was tried to be
an HSSR PCB.
built. Logical databases are not supported by HSSR
Engine.
FABH0405E INDEX DMB dbdname IS NOT FOUND
System action: HSSR Engine issues a SNAP for this
PCB and falls back to DL/I. The PCB is defined as a Explanation: The DMB for the primary or secondary
DL/I PCB, and all calls issued against it are processed index DBD dbdname cannot be found in the DMB
by DL/I action modules. directories.
User response: Change the PCB as follows: specify the System action: HSSR Engine ends abnormally.
name of the physical DBD, or do not specify the PCB
User response: Check whether the specified index
as an HSSR PCB.
DBD has the index relationships with the database to
be unloaded.
FABH0400I VIRTUAL LOGICAL CHILD SEGMENT
(segmname) IS IGNORED
FABH0406E INDEX DBD dbdname IS NOT
Explanation: HSSR Engine ignores the virtual logical SUPPORTED
child segment segmname that is specified in the HSSR
Explanation: The specified secondary index dbdname is
PCB. In the DLI or the DBB region, the 'SKIPVLC YES'
not supported due to one of the following reasons:
option is used. In the ULU region, it is always ignored.
v The DB organization is not INDEX.
System action: HSSR Engine continues the processing.
v The target DB organization is not HIDAM or HDAM.
User response: If you need the virtual logical child to v The target segment is not the root segment.
be retrieved in a user application program, specify the
v The key field is not defined as unique.
SKIPVLC NO control statement. The PCB will be
passed to IMS DL/I and the virtual logical child v The secondary index uses symbolic pointing.
segment will be retrieved. System action: HSSR Engine ends abnormally.
User response: Change or remove the index DBD DL/I PCB, and all calls issued against it are processed
name. by DL/I action modules.
User response: Modify the PROCOPT field of the
FABH0407E DMB dbdname IS NOT CORRECT SENSEG statement, or do not specify the PCB as an
HSSR PCB.
Explanation: HSSR Engine detected an incorrect or
unexpected DL/I control block layout in the dbdname
DMB. FABH0415E SOMETHING WRONG WITH
NUMBER OF HPTRS
System action: HSSR Engine ends abnormally.
Explanation: HSSR Engine has problems with its own
User response: Contact IBM Software Support.
control blocks.
System action: HSSR Engine issues a SNAP and falls
FABH0411E SEGMENT CODE IN SDB AND HSDB
back to DL/I for all PCBs. All PCBs are defined as
DISAGREE
DL/I PCBs and all calls are processed by DL/I action
Explanation: One of the following two problems modules.
occurred:
User response: Verify that the sequence of the
1. During PSBGEN, the SENSEG statements were not SENSEG statements in the PSBGEN is the same as in
coded in the same hierarchical sequence as in the the DBD; if not, correct the sequence of the SENSEG
DBD. statements, and perform the PSBGEN again.
2. HSSR Engine detected an incorrect or unexpected
DL/I control block layout.
FABH0416E SOMETHING WRONG WITH
System action: HSSR Engine issues a SNAP and falls NUMBER OR LENGTH OF HSDB
back to DL/I for all PCBs. All PCBs are defined as
Explanation: HSSR Engine has problems with its own
DL/I PCBs and all calls are processed by DL/I action
control blocks.
modules.
System action: HSSR Engine issues a SNAP and falls
User response: Verify that the sequence of the
back to DL/I for all PCBs. All PCBs are defined as
SENSEG statements in the PSBGEN is in the same as
DL/I PCBs and all calls are processed by DL/I action
the DBD; if not, correct the sequence of the SENSEG
modules.
statements, and perform the PSBGEN again.
User response: Verify that the sequence of the
SENSEG statements in the PSBGEN is the same as in
FABH0412E VIRTUAL PAIRED SEGMENTS NOT
the DBD; if not, correct the sequence of the SENSEG
SUPPORTED
statements and perform the PSBGEN again.
Explanation: Because of PSBGEN specifications, an
HSSR PCB containing a sensitive logical child that is
FABH0420W WARNING: SEGMENT segname HAS A
virtually paired. Virtually paired segments are not
VIRTUAL LOGICAL PARENT KEY
supported by HSSR Engine.
Explanation: The logical parent's concatenated key
System action: HSSR Engine issues a SNAP for this
(LPCK) of the segment segname is defined as virtual,
PCB and falls back to DL/I. The PCB is defined as a
but the BLDLPCK control statement is not specified.
DL/I PCB, and all calls issued against it are processed
by DL/I action modules.
Note: During retrieval operations, the part of the I/O
User response: Modify the virtually paired segment area that should contain the logical parent key
to, for example, a physically paired segment, or remove will contain blanks.
the SENSEG statement of the virtually paired segment
System action: HSSR Engine continues processing.
from the PCB, or do not specify the PCB as an HSSR
PCB. User response: If the control statements for the
pre-reorganization utility specified DBIL for the logical
child database, and the database is unloaded by
FABH0413E INVALID SEGMENT SENSITIVITY
FABHURG1 or FABHFSU, you must specify the
FOR AN HSSR PCB
BLDLPCK control statement. In other cases, you do not
Explanation: Because of PSBGEN specifications, an need to specify BLDLPCK. If you need LPCKs to be
HSSR PCB was tried to be built. This PCB contains a built, specify the BLDLPCK control statement and
SENSEG statement whose PROCOPT is neither G nor rerun the job.
K.
System action: HSSR Engine issues a SNAP for this
PCB and falls back to DL/I. The PCB is defined as a
database level (instead of the block level). This will v Ensure that the database processed by HSSR Engine
prevent concurrent execution with an updating IMS was not being updated at the time when the error
subsystem. occurred.
FABH0433W RBN VALUE IS LARGER THAN THE FABH0453E UNEXPECTED ENTRY INTO FABH080
SIZE OF THE PARTITION DATA SET
Explanation: HSSR Engine detected an unexpected
(DDNAME: ddname)
error.
Explanation: HSSR Engine detected that the RBN
System action: HSSR Engine ends abnormally.
value defined in the DBD for the partition data set was
larger than the real data set size. ddname indicates the User response: Complete the following tasks to
DD name of the partition data set. identify the cause, and take appropriate actions:
System action: HSSR Engine continues processing. v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
User response: Ensure that the correct DBD is
v Ensure that the database processed by HSSR Engine
specified. Specify the correct DBD, and rerun the job.
was not being updated at the time when the error
occurred.
FABH0441E STATISTIC PRINTER GOT INVALID
CALL
FABH0457E HSSR DETECTED AN UNEXPECTED
Explanation: HSSR Engine detected an unexpected ERROR SITUATION
error.
Explanation: HSSR Engine detected an unexpected
System action: HSSR Engine ends abnormally. error.
User response: Complete the following tasks to System action: HSSR Engine ends abnormally.
identify the cause, and take appropriate actions:
User response: Complete the following tasks to
v Ensure that the correct DBDs, PSBs, and ACBs were identify the cause, and take appropriate actions:
being used.
v Ensure that the correct DBDs, PSBs, and ACBs were
v Ensure that the database processed by HSSR Engine being used.
was not being updated at the time when the error
v Ensure that the database processed by HSSR Engine
occurred.
was not being updated at the time when the error
occurred.
FABH0451E SKIP-COUNT EXHAUSTED
Explanation: HSSR Engine detected more GG status FABH0461E COMPARE OPTION HAS DETECTED
code situations than the number that was specified on AN INEQUALITY BETWEEN HSSR
the HSSROPT SKERROR control statement. AND DL1
System action: HSSR Engine ends abnormally. Explanation: This message is issued when the CO
control statement is specified in the HSSROPT data set,
User response: Complete the following tasks to
and the results of an HSSR call and the corresponding
identify the cause, and take appropriate actions:
DL/I call are not the same.
v Ensure that the correct DBDs, PSBs, and ACBs were
being used. System action: HSSR Engine ends abnormally.
v Ensure that the database processed by HSSR Engine User response: If PROCOPT=R is specified for a
was not being updated at the time when the error VSAM database, ensure that VSAM SHAREOPTIONS
occurred. are defined (2,3) or (3,3).
Complete the following tasks to identify the cause, and
FABH0452W HSSR CALL HANDLER RETURNS take appropriate actions:
FIRST GG STATUS CODE v Activate the compare and hardcopy trace options,
Explanation: HSSR call handler returned a GG status and execute the failing call sequence with the
code to the calling application program or utility FABHTEST utility (see “FABHTEST utility for
program. This is a warning. problem determination” on page 516).
v Ensure that the correct DBDs, PSBs, and ACBs were
System action: The processing continues.
being used.
User response: Complete the following tasks to
identify the cause, and take appropriate actions:
v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
FABH0463E HSSR REACHED THE END OF THE If necessary, contact IBM Software Support.
PARTITION ppppppp EARLIER THAN
DL/I
FABH0475E INTERNAL ERROR OCCURRED IN
Explanation: This message is issued when the CO HSSR CALL HANDLER
control statement is specified in the HSSROPT data set,
and HSSR call handler reaches the end of the partition Explanation: HSSR call handler detected an
ppppppp earlier than DL/I detects it. unexpected error.
System action: HSSR Engine ends abnormally. System action: HSSR Engine ends abnormally.
User response: Contact IBM Software Support. User response: Complete the following tasks to
identify the cause of the database error:
v Ensure that the correct DBDs, PSBs, and ACBs were
FABH0465E AN UNSUPPORTED HSSR CALL WAS being used.
ISSUED FOR NON-HD DATABASE
xxxxxxxx v Ensure that the database processed by HSSR Engine
was not being updated at the time when the error
Explanation: An unsupported HSSR call was issued occurred.
for the non-HD database xxxxxxxx. Only the call types
defined by APISET 1 are supported for non-HD If necessary, contact IBM Software Support.
databases. Any API set other than APISET 1 can be
specified in HSSROPT or in the site default option
table, but it is ignored for non-HD databases. FABH0477E INTERNAL ERROR OCCURRED IN
HSSR CALL HANDLER
System action: HSSR Engine ends abnormally.
Explanation: HSSR call handler detected an
User response: If you want to use a call that is not unexpected error.
supported by HSSR Engine, modify the application
program, or use the DBDL1 control statement. System action: HSSR Engine ends abnormally.
User response: Complete the following tasks to
FABH0471E OPEN OF DDNAME=HSSRBUTR HAS identify the cause of the database error:
FAILED v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
Explanation: An HSSROPT BUTR control statement
instructed HSSR Engine to activate the v Ensure that the database processed by HSSR Engine
machine-readable trace of buffer handler activities. This was not being updated at the time when the error
trace is written on the HSSRBUTR data set. HSSR occurred.
Engine cannot open this file.
If necessary, contact IBM Software Support.
System action: HSSR Engine ends abnormally.
User response: Check whether MVS or SAM issued FABH0479E INTERNAL ERROR OCCURRED IN
other error messages. Correct the problem. HSSR BUFFER HANDLER
Explanation: HSSR buffer handler detected an
unexpected error.
System action: HSSR Engine ends abnormally.
User response: Complete the following tasks to
User response: See “Database organizations System action: HSSR Engine ends abnormally.
supported” on page 9 for a list of supported database
User response: Correct the program error. If there is
organizations. Correct the application program and
no error, check whether the correct APISET statement is
DBD.
specified. For details about the call types and command
types that APISET supports, see “DL/I calls and EXEC
FABH0481E INVALID PARAMETER NUMBER IN DLI command for HSSR PCB” on page 110.
CALL
Explanation: The application program issued an HSSR FABH0484E INCORRECT FIELD NAME IN SSA
call with an incorrect number of parameters (too few or
Explanation: The application program issued an HSSR
too many). The HSSR call handler does not support
GU call with an incorrect field name in the SSA. The
three or more SSAs. The unsupported call is printed in
field name must be the name of the key field of the
the Trace Output report in the HSSRTRAC data set.
root.
System action: If APISET is 2, HSSR Engine ends
System action: HSSR Engine ends abnormally.
abnormally. If APISET is 3, the call and all the
succeeding calls to the HSSR PCB are passed to the User response: Correct the program error. If there is
IMS DL/I call handler to continue the processing no error, check whether the correct APISET statement is
instead of ending it abnormally. specified. For details about the call types and command
types that APISET supports, see “DL/I calls and EXEC
User response: If APISET is 2, specify 'APISET 3' in
DLI command for HSSR PCB” on page 110.
the control statement. If APISET is 3, ignore this
message.
FABH0485E LEFT PARENTHESIS IN SSA IS
The following parameters are required for Assembler
MISSING OR AT WRONG POSITION
and COBOL programs:
v Call function Explanation: The application program issued an HSSR
GU call with an incorrect SSA. The 8-byte segment
v PCB
name must be immediately followed by a ( or by *T).
v I/O AREA GUs with unqualified SSAs are not supported by HSSR
v SSA (optional) call handler; the only supported command code is T.
System action: HSSR Engine ends abnormally.
The following parameters are required for PL/I
programs: User response: Correct the program error. If there is
v PARM count no error, check whether the correct APISET statement is
specified. For details about the call types and command
v Call function types that APISET supports, see “DL/I calls and EXEC
v PCB DLI command for HSSR PCB” on page 110.
v I/O AREA
v SSA (optional)
User response: To identify the cause, activate the primary index data set and the primary data set was
compare and hardcopy trace options, and execute the used.
failing call sequence with the FABHTEST utility (see
“FABHTEST utility for problem determination” on page
FABH0517E HSSR CALL HANDLER DETECTED
516). If necessary, contact IBM Software Support.
UNEXPECTED ERROR SITUATION
Explanation: HSSR call handler detected an
FABH0512E INVALID RETURN-CODE FROM
unexpected error.
BUFFER-HDLR
System action: HSSR Engine ends abnormally.
Explanation: HSSR Engine encountered an I/O
problem. For more information, see the accompanying User response: Complete the following tasks to
SYNADAF message buffer. identify the cause, and take appropriate actions:
System action: HSSR Engine ends abnormally. v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
User response: To identify the cause, activate the
v Ensure that the database processed by HSSR Engine
compare and hardcopy trace options, and execute the
was not being updated at the time when the error
failing call sequence with the FABHTEST utility (see
occurred.
“FABHTEST utility for problem determination” on page
516). If necessary, contact IBM Software Support.
If necessary, contact IBM Software Support.
FABH0516E LAST SEGM IN PRIMARY INDEX FABH0524E BLM BLOCK-NUMBER NOT WITHIN
DOES NOT POINT TO SEGMENT RAA
WITH A KEY OF ALL X'FF'S Explanation: An HDAM segment beyond the root
Explanation: The last pointer segment in the primary addressable area was tried to be retrieved.
index for HIDAM or PHIDAM points to a root segment System action: HSSR Engine ends abnormally.
with a key that is not all X'FF's. The database can be
corrupted. User response: Correct BLM control statement on the
FABHFSU CARDIN data set.
System action: HSSR Engine ends abnormally.
User response: Check whether the database is
corrupted. If it is not, check whether the correct pair of
FABH0555E KEYCHECK OPTION HAS DETECTED v Ensure that the database processed by HSSR Engine
A SEQUENCE ERROR; ABEND was not being updated at the time when the error
FOLLOWS occurred.
Explanation: HSSR Engine detected a sequence error If necessary, contact IBM Software Support.
in the segment key fields and issued an abend as
specified by the KEYCHECK option.
FABH0560E STATUSCODE=xx ENCOUNTERED
System action: HSSR Engine ends abnormally. DURING INTERNAL ASMTDLI CALL
User response: To identify the cause, activate the Explanation: In order to build a logical parent's
compare and hardcopy trace options, and execute the concatenated key (LPCK) that is defined as virtual,
failing call sequence with the FABHTEST utility (see HSSR internally issued an IMS GU call. But the
“FABHTEST utility for problem determination” on page unexpected status code of xx was returned. This is
516). If necessary, contact IBM Software Support. probably due to either an HSSR Engine or an IMS
software error.
FABH0556E AN OCCURRENCE OF SEGMENT System action: HSSR Engine ends abnormally.
segmname IN DBD dddddddd OVER THE
BLOCK BOUNDARY User response: Complete the following tasks to
identify the cause, and take appropriate actions:
Explanation: HSSR Engine detects an incorrect
v Ensure that the correct DBDs, PSBs, and ACBs were
occurrence of the segment segmname, which is stored
being used.
over the block boundary. If it is a fixed-length segment,
the segment length which is defined in the DBD v Ensure that the database processed by HSSR Engine
dddddddd can be inconsistent with the actual segment. was not being updated at the time when the error
occurred.
System action: HSSR Engine ends abnormally.
User response: Ensure that the specified DBD is same If necessary, contact IBM Software Support.
as the one used for inserting the segment. Determine
the segment length from the content of the following FABH0561E REPL CALL WITHOUT REPLACE
registers: PROCESSING OPTION
v Register 6 contains the address of the segment data.
Explanation: The application program issued an HSSR
v Register 5 contains the segment length which is REPL call. However, during PSBGEN, the PCB or
defined in DBD. SENSEG was not defined with a PROCOPT=R.
v Register 7 contains the address of the block
System action: HSSR Engine ends abnormally.
boundary.
User response: Correct either the program or the
PSBGEN.
FABH0557W HSSR CALL HANDLER RETURNS
FIRST GX STATUS CODE
FABH0562E REPL CALL WITHOUT IOAREA
Explanation: HSSR call handler returned a GX status
code to the calling application program or utility Explanation: The application program issued an HSSR
program because a sequence error was detected. The REPL call without providing an IOAREA as a call
KEYCHECK option is active. The segment with the parameter.
incorrect key was returned to the calling programs.
System action: HSSR Engine ends abnormally.
User response: Correct the program. v Ensure that the database processed by HSSR Engine
was not being updated at the time when the error
occurred.
FABH0563E REPL CALL WITH SSA
Explanation: This message is issued when either of If necessary, contact IBM Software Support.
the following occurs:
v The application program issued an HSSR REPL call FABH0566E INTERNAL HSSR OR DL1 ERROR
with an SSA as call parameter. HSSR Engine DURING PROCESSING OF REPL
supports only REPL calls without an SSA. CALL
v The application program issued an HSSR REPL call
Explanation: HSSR Engine detected an unexpected
as an EXEC DLI command. HSSR Engine does not
error.
support the REPL command.
System action: HSSR Engine ends abnormally.
System action: HSSR Engine ends abnormally.
User response: Complete the following tasks to
User response: Correct the program. If there is no
identify the cause, and take appropriate actions:
error, check whether the correct APISET statement is
specified. For details about the call types and command v Ensure that the correct DBDs, PSBs, and ACBs were
types that APISET supports, see “DL/I calls and EXEC being used.
DLI command for HSSR PCB” on page 110 v Ensure that the database processed by HSSR Engine
was not being updated at the time when the error
occurred.
FABH0564E STATUSCODE=xx ENCOUNTERED
DURING INTERNAL GHU ASMTDLI
CALL If necessary, contact IBM Software Support.
System action: HSSR Engine ends abnormally. User response: Complete the following tasks to
identify the cause, and take appropriate actions:
User response: To identify the cause, activate the
v Activate the compare and hardcopy trace options,
compare and hardcopy trace options, and execute the
and execute the failing call sequence with the
failing call sequence with the FABHTEST utility (see
FABHTEST utility (see “FABHTEST utility for
“FABHTEST utility for problem determination” on page
problem determination” on page 516).
516). If necessary, contact IBM Software Support.
v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
FABH0573E INTERNAL ERROR --- RPL FOR KSDS
v Ensure that the real data set name on the DD
NOT INACTIVE
statement for ddname was specified.
Explanation: During KSDS processing, HSSR buffer v Ensure that the database processed by HSSR Engine
handler tried to use an RPL that was active for another was not being updated at the time when the error
VSAM request. occurred.
System action: HSSR Engine ends abnormally.
If necessary, contact IBM Software Support.
User response: To identify the cause, activate the
compare and hardcopy trace options, and execute the
failing call sequence with the FABHTEST utility (see FABH0577E RETRY OF KSDS I/O OPERATIONS
“FABHTEST utility for problem determination” on page NOT ENABLED
516). If necessary, contact IBM Software Support. Explanation: The HSSR buffer handler detected an
error during the reading of a VSAM KSDS. This error
FABH0574E VSAM LOGICAL ERROR --- might result either from a physically damaged KSDS or
RPL-FDBK-CODE IS IN R3 from the concurrent execution of an updating IMS
program.
Explanation: VSAM signaled to HSSR buffer handler
an unexpected logical error after a KSDS GET macro. System action: HSSR Engine ends abnormally.
Use the RPL feedback code in Register 3 to analyze the User response: Complete the following tasks to
error in details. identify the cause, and take appropriate actions:
System action: HSSR Engine ends abnormally. v Activate the compare and hardcopy trace options,
and execute the failing call sequence with the
User response: To identify the cause, activate the
compare and hardcopy trace options, and execute the
FABHTEST utility (see “FABHTEST utility for "KEYD" "KEYL IN DATASET AND DBD DIFFERS"
problem determination” on page 516). The key length of the data set differs from the
v Ensure that the correct DBDs, PSBs, and ACBs were key length of the DBD, for example, KSDS.
being used. This condition might be caused by a user error
such as DD statements referring to the wrong
v Ensure that the database processed by HSSR Engine
data set, or using the wrong version of a DBD.
was not being updated at the time when the error
occurred. Correct the DBD or the DD statement. If the
problem persists, run the FABHTEST utility by
If the problem results from concurrent execution of an referring to the general steps for
updating IMS program, try to resolve the problem by troubleshooting the FABH0581E error, and take
adding a RETRY KSDS control statement to the appropriate actions. For KSDS, print a
HSSROPT data set. LISTCAT of the cluster and its components.
"KEYD" "KEY-POSITION IN DATA SET AND DBD
FABH0578E UNEXPECTED RETURN CODE FROM DIFFERS"
ATTACH The key position of the data set differs from
the key position of the DBD. This condition
Explanation: FABH350 attempted to ATTACH module might be caused by a user error such as DD
FABH351. The attempt was not successful, and the statements referring to the wrong data set, or
return code was not zero. using the wrong version of a DBD.
System action: HSSR Engine ends abnormally. Correct the DBD or the DD statement. If the
User response: Examine the dump to determine the problem persists, run the FABHTEST utility by
contents of Register 4. Register 4 contains the return referring to the general steps for
code from ATTACH that was returned in Register 15. troubleshooting the FABH0581E error, and take
appropriate actions. For KSDS, print a
LISTCAT of the cluster and its components.
FABH0579E UNEXPECTED RETURN CODE FROM
DETACH "KSDS" "OPEN FAILED"
The OPEN macro issued against a KSDS is not
Explanation: FABH350 attempted to DETACH module successful, perhaps for the following reasons:
FABH351. The attempt was not successful, and the
v The KSDS has the wrong VSAM
return code was not zero.
SHAREOPTIONS, or the data set is
System action: HSSR Engine ends abnormally. allocated by this region with DISP=OLD in
the JCL statements.
User response: Examine the dump to determine the
contents of Register 4. Register 4 contains the return v There might not be enough virtual storage
code from DETACH that was returned in Register 15. in the address space.
See the general steps for troubleshooting the The error message issued by VSAM contains
FABH0581E error, and take appropriate additional information. Refer to the VSAM
actions. message. To identify the cause, see the general
steps for troubleshooting the FABH0581E error, MODCB macro to switch back from CI
and take appropriate actions. processing to key processing. If the utility uses
the maximum device capacity, check whether
"KSDS" "SHOWCB FIELD=(CINV,... ) FAILED"
ddname can be allocated on a device with more
VSAM was asked to retrieve the length of the
track capacity. If the utility uses the block size
control interval, record, and key, and the
specified on the JCL statement, check whether
relative key position of the KSDS.
the block size or the record size can be
See the general steps for troubleshooting the increased or use the default maximum device
FABH0581E error, and take appropriate capacity.
actions.
See the general steps for troubleshooting the
"KSDS" "GENCB BLOCK=ACB FAILED" FABH0581E error, and take appropriate
VSAM was unable to generate an ACB. This actions.
was probably caused by insufficient virtual
"KSDS" "MODCB RPL, RECLEN...... FAILED"
storage in the address space.
HSSR buffer handler issued an unsuccessful
See the general steps for troubleshooting the MODCB macro to attempt to change the size
FABH0581E error, and take appropriate of the input area.
actions.
See the general steps for troubleshooting the
"KSDS" "GENCB BLOCK=RPL FAILED" FABH0581E error, and take appropriate
VSAM was not able to generate an RPL. This actions.
was probably caused by insufficient virtual
"OSAM" "OPEN FAILED"
storage in the address space.
A (BSAM) OPEN macro issued against an
See the general steps for troubleshooting the OSAM data set is not successful.
FABH0581E error, and take appropriate
Check other error messages, and make sure
actions.
that the OSAM data set does not have more
"KSDS" "MODCB RPL, OPTCD=CNV FAILED" than 16 extents. To identify the cause, run the
VSAM was asked to modify an RPL to allow FABHTEST utility by referring to the general
control interval processing in order to allow a steps for troubleshooting the FABH0581E error,
VERIFY, but was unsuccessful. and take appropriate actions.
The error message issued by VSAM contains "OSAM" "BLOCKSIZE IN DCB NOT EQ
additional information. Refer to the VSAM BLOCKSIZE IN DBD"
message. To identify the cause, see the general The block size of the data set differs from the
steps for troubleshooting the FABH0581E error, block size of the DBD. This condition was
and take appropriate actions. probably caused by a user error, such as DD
statements referring to the wrong data set, or
"KSDS" "VERIFY FAILED" the wrong version of a DBD has been used.
HSSR buffer handler issued a VERIFY macro
to the KSDS indicated by the message, but it Correct the DBD or the DD statement. If the
failed. problem persists, run the FABHTEST utility by
referring to the general steps for
The error message issued by VSAM contains troubleshooting the FABH0581E error, and take
additional information. Refer to the VSAM appropriate actions. A LISTVTOC of the data
message. To identify the cause, run the set should also be produced.
FABHTEST utility by referring to the general
steps for troubleshooting the FABH0581E error, "OSAM" "BLOCKSIZE IS NOT A MULTIPLE OF
and take appropriate actions. LRECL"
The block size of the data set is not a multiple
"KSDS" "ENDREQ FAILED" of the record length.
HSSR buffer handler issued an unsuccessful
ENDREQ macro. Correct the block size. To identify the cause,
run the FABHTEST utility by referring to the
Register 2 at the time of the abend contains general steps for troubleshooting the
the address of the RPL. Inspect the feedback FABH0581E error, and take appropriate
field of the RPL to find out what exactly actions. A LISTVTOC of the data set should
happened. To identify the cause, run the also be produced.
FABHTEST utility by referring to the general
steps for troubleshooting the FABH0581E error, "OSAM" "IMS OPEN PROBLEM"
and take appropriate actions. HSSR Engine issued an internal DL/I call in
order to force IMS to open the database. This
"KSDS" "MODCB RPL, OPTCD=(KEY, ...) FAILED" DL/I call was not successful.
HSSR buffer handler issued an unsuccessful
Refer to additional error messages issued by Ensure that sufficient virtual storage is
IMS or the access method. available. To identify the cause, see the general
steps for troubleshooting the FABH0591E error,
To identify the cause, take either or both of the and take appropriate actions.
following general steps for troubleshooting the
"ESDS" "GENCB BLOCK=RPL FAILED"
FABH0581E error.
VSAM could not generate an RPL. This
1. At the time of the problem, register 0 contained a condition was probably caused by insufficient
VSAM reason code, which is described in virtual storage in the address space.
DFSMS/MVS Macro Instructions for Data Sets. The
contents of register 0 are found in the dump, within Ensure that sufficient virtual storage is
the module FABH001, in the diagnosis area. This available. To identify the cause, see the general
area has the following layout: steps for troubleshooting the FABH0591E error,
and take appropriate actions.
v A 16-byte section header: 'DIAGNOSIS AREA'
v A double word PSW "ESDS" "GENCB BLOCK=EXLST FAILED"
VSAM could not generate an exit list. This
v 16 full words, showing the content of Registers 0
condition was probably caused by insufficient
- 15.
virtual storage in the address space.
2. Activate the compare and hardcopy trace options,
and execute the failing call sequence with the Ensure that sufficient virtual storage is
FABHTEST utility (see “FABHTEST utility for available. To identify the cause, see the general
problem determination” on page 516). steps for troubleshooting the FABH0591E error,
and take appropriate actions.
If necessary, contact IBM Software Support. "ESDS" "OPEN FAILED"
The OPEN macro issued against a KSDS was
FABH0591E OPEN OF DBD=dbdname ---- "yyyy" "text" not successful. This condition was probably
caused by:
Explanation: The database named dbdname type yyyy v The ESDS had the wrong VSAM
(ESDS, KSDS, or OSAM) could not be opened. text SHAREOPTIONS, or the data set was
describes the problem in detail. The possible allocated by this region with DISP=OLD on
combinations of yyyy and text, and their explanations the JCL statements.
are described in detail in the user response section.
v There is not enough virtual storage in the
System action: HSSR Engine ends abnormally. address space.
User response:
Ensure that the ESDS is correctly defined. The
"ESDS2" "LOGICAL RECORD LENGTH IN ACB IS error message issued by VSAM contains
ZERO" After OPEN, VSAM finds that the logical additional information. Refer to the VSAM
record length is zero. message. To identify the cause, run the
FABHTEST utility by referring to the general
Correct the logical record length. If the
steps for troubleshooting the FABH0591E error,
problem persists, run the FABHTEST utility by
and take appropriate actions.
referring to the general steps for
troubleshooting the FABH0591E error, and take "ESDS" "VERIFY FAILED"
appropriate actions. A LISTCAT of the ESDS HSSR buffer handler issued a VERIFY macro
should also be produced. to the KSDS indicated by the message, but it
failed.
"ESDS" "CONTROL INTERVAL SIZE IN ACB IS
ZERO" After OPEN, VSAM finds that the control Ensure that the ESDS is correctly defined. The
interval size is zero. error message issued by VSAM contains
additional information. Refer to the VSAM
Correct the control interval size. To identify
message. To identify the cause, run the
the cause, run the FABHTEST utility by
FABHTEST utility by referring to the general
referring to the general steps for
steps for troubleshooting the FABH0591E error,
troubleshooting the FABH0591E error, and take
and take appropriate actions.
appropriate actions. A LISTCAT of the ESDS
should also be produced. "ESDS" "ENDREQ FAILED"
HSSR buffer handler issued an unsuccessful
"ESDS" "GENCB BLOCK=ACB FAILED"
ENDREQ macro.
VSAM could not generate an ACB. This
condition was probably caused by insufficient Register 2 at the time of abend contains the
virtual storage in the address space. address of the RPL. Inspect the feedback field
of the RPL to find out what exactly happened.
To identify the cause, run the FABHTEST
FABH0604E DATA SET IS NOT INITIALIZED AND FABH0621E PAGE-FIXING HAS FAILED
IS EMPTY: DB=dbdname, DD=ddname
Explanation: HSSR buffer handler tried to fix its own
Explanation: The OSAM data set that is specified in OSAM or ESDS buffers by issuing the IMSAUTH
the ddname DD statement and that is being used as FUNC=PGFIX macro. The IMSAUTH macro set a
input for IMS High Performance Unload has not been return code indicating that it could not perform
initialized as a DL/I database and contains no data page-fixing.
block. Only the header record is written in output
System action: HSSR Engine ends abnormally.
unloaded data sets.
User response: Examine the contents of register 4 and
System action: HSSR Engine ends abnormally.
take an appropriate action. Register 4 contains the error
User response: Ensure that the data set specified in code returned by IMSAUTH in register 15. If necessary,
the DD statement is correct. contact IBM Software Support.
User response: Remove the CO or PARTITION User response: The access method error message
statement from the HSSROPT data set. contains additional information. Refer to the message.
To identify the cause, activate the compare and
hardcopy trace options, and execute the failing call
FABH0629W PARTITION ppppppp IS SKIPPED
sequence with the FABHTEST utility (see “FABHTEST
BECAUSE OF AN ERROR IN
utility for problem determination” on page 516). If
PARTITION SELECTION
necessary, contact IBM Software Support.
Explanation: The processing of the HALDB partition
ppppppp was skipped because an error occurred when a
FABH0633E TARGET PARTITION IS NOT FOUND
partition selection request was processed.
FOR THE SPECIFIED KEY
System action: HSSR Engine continues processing.
Explanation: IMS DFSPSEL macro returned return
User response: See the Trace Output report with code 8 and the reason code X'8010' for a SELECT
Diagnostics for the reason of the error. request, but no partition corresponding to the key
specified in the request was found.
FABH0630E CANNOT PROCESS THE PARTITION System action: HSSR Engine ends abnormally.
NEXT TO ppppppp BECAUSE OF
User response: Check whether the root key specified
STATUS CODE 'GG' FROM THE
in the SSA is correct.
PRIOR DL/I CALL
Explanation: This message is issued if a CO statement DMTI
is specified in the HSSROPT data set and the status
code 'GG' was returned at the DL/I call issued earlier The key specified in the SSA is at offset X'8AC' from
for the comparison with an HSSR call. The string the address pointed to by general register 10.
ppppppp shows the name of the partition that had been
DMTI
processed before the DL/I call in question was issued.
HSSR Engine cannot continue the processing of the
database in this case even if PROCOPT=GON or GOT FABH0634E ONLINE REORG RUNNING FOR
is specified for the PCB. PARTITION=pppppppp (DBD=dddddddd)
System action: HSSR Engine ends abnormally. Explanation: HALDB Online Reorganization (OLR) is
User response: To identify the cause, remove the CO currently processing partition pppppppp. HSSR Engine
statement and specify a DIAGG statement in HSSROPT cannot process the partition.
data set; then rerun the job to see the diagnostics System action: HSSR Engine ends abnormally.
information for the status code 'GG'. If you are running
a FABHURG1 or FABHFSU job, it is recommended that User response: Rerun after OLR for all partitions are
you specify the PARTITION statement with ppppppp as completed.
the first operand and 2 as the second operand.
FABH0635W ONLINE REORG ACTIVE FOR
FABH0631E PROBLEMS WITH DL/I-STAT CALL PARTITION=pppppppp (DBD=dddddddd)
Explanation: HSSR buffer handler tried to retrieve the Explanation: HALDB Online Reorganization (OLR)
VSAM Shared Resource Pool Statistics by issuing an processing for partition pppppppp was stopped prior to
internal DL/I STAT call. DL/I returned an unexpected the completion of the partition, and the OLR cursor is
status code. still active. HSSR Engine will process the partition
which is comprised of both the A-J and X data sets as
System action: HSSR Engine ends abnormally. well as the M-V and Y data sets.
User response: To identify the cause, activate the System action: HSSR Engine continues processing. If
compare and hardcopy trace options, and execute the one of the following options is specified, it is ignored:
failing call sequence with the FABHTEST utility (see
“FABHTEST utility for problem determination” on page v BYINDEX, CO, DBSTATS, KEYCHECK, or
516). If necessary, contact IBM Software Support. SKERROR.
User response: Refer to the additional messages.
FABH0632E CLOSE FAILED
Explanation: After program termination, HSSR Engine FABH0636E UNSUPPORTED OPTION FOR OLR
is asked to close the DCB/ACB of the databases. The ACTIVE PARTITIONS: option
CLOSE macro is unsuccessful. Explanation: The option (option) is specified, but this
System action: HSSR Engine ends abnormally. is one of the following options with which HSSR
Engine cannot process the HALDB OLR active the cause of the error from the RPL feedback code.
partition:
If the problem persists, complete the following tasks to
v DECN identify the cause, and take appropriate actions:
v PARTEXTR v Ensure that the database processed by HSSR Engine
v User exit routine was not being updated at the time when the error
v *CS format for PHDAM occurred.
v Activate the compare and hardcopy trace options,
System action: FABHURG1 or FABHFSU ends
and execute the failing call sequence with the
abnormally.
FABHTEST utility (see “FABHTEST utility for
User response: Remove this option or rerun after OLR problem determination” on page 516).
for all partitions are completed.
If necessary, contact IBM Software Support.
FABH0637W HSSR CALLS FALL BACK TO DL/I
FROM PARTITION=pppppppp FABH0643E SHOWCB OF RPL-FDBK-CODE
(DBD=dddddddd) FAILED
Explanation: HSSR Engine will pass all of the Explanation: The VSAM SHOWCB macro issued by
following DL/I calls to IMS's DL/I call handler from HSSR buffer handler failed.
partition pppppppp, because HALDB online
System action: HSSR Engine ends abnormally.
reorganization (OLR) is active for this partition.
User response: If necessary, contact IBM Software
System action: HSSR Engine continues processing.
Support.
The performance, however, decreases.
User response: If you want to use the ignored option,
FABH0653E OSAM I/O ERROR, DDNAME=ddname
rerun after HALDB OLR for all partitions are
DECB-STATUS=xxx...20
completed.
Explanation: HSSR buffer handler encountered an I/O
problem when using BSAM to read an OSAM block.
FABH0641E VSAM PHYSICAL I/O ERROR
ddname is the ddname. xxx...20 is the field DECBSTAT
Explanation: HSSR buffer handler encountered an I/O from the DECB used in the I/O operation followed by
problem on an ESDS. The return code and reason code a description of the error.
are described in DFSMS/MVS Macro Instructions for
System action: HSSR Engine ends abnormally.
Data Sets.
User response: See the description of message
System action: HSSR Engine ends abnormally.
DFS0451I in IMS Messages and Codes.
User response: Complete the following tasks to
Complete the following tasks to identify the cause, and
identify the cause, and take appropriate actions:
take appropriate actions:
v Activate the compare and hardcopy trace options,
v Activate the compare and hardcopy trace options,
and execute the failing call sequence with the
and execute the failing call sequence with the
FABHTEST utility (see “FABHTEST utility for
FABHTEST utility (see “FABHTEST utility for
problem determination” on page 516).
problem determination” on page 516).
v Ensure that the correct DBDs, PSBs, and ACBs were
v Ensure that the correct DBDs, PSBs, and ACBs were
being used.
being used.
v Ensure that the database processed by HSSR Engine
v Ensure that the database processed by HSSR Engine
was not being updated at the time when the error
was not being updated at the time when the error
occurred.
occurred.
If necessary, contact IBM Software Support.
If necessary, contact IBM Software Support.
System action: HSSR Engine ends abnormally. System action: HSSR Engine ends abnormally.
User response: Collect the dump and contact IBM User response: See message FABH0591E, and take an
Software Support. appropriate action.
FABH0655E MEDIA MANAGER I/O ERROR, RC=rc FABH0663E RETRYING KSDS I/O OPERATIONS
Explanation: When HSSR Engine issued MMGRCALL Explanation: The HSSR buffer handler detected an
to get access to the data set, an unexpected Media unexpected VSAM logical error code. This might be
Manager MMGRCALL error occurred. The rc is the explained by concurrent database updates.
return code of Media Manager.
System action: HSSR buffer handler refreshes the
System action: HSSR Engine ends abnormally. KSDS buffers and retries the I/O operation. If the retry
is not successful, an abend is issued. If the retry is
User response: Collect the dump and contact IBM
successful, HSSR Engine proceeds normally. Note that
Software Support.
in this case, some database records might have been
skipped or retrieved twice.
FABH0656I MEDIA MANAGER IS USED TO
User response: None.
ACCESS DB: dbdname
Explanation: Media Manager is used to read VSAM
FABH0664E OPEN OF DBD=dbdname DDN=ddname
data sets of database dbdname because all
--- KSDS "text"
concatenations of the JOBLIB/STEPLIB are
APF-authorized. Explanation: HSSR buffer handler has encountered an
unexpected VSAM logical error and decided to
System action: HSSR Engine continues processing.
re-OPEN the VSAM KSDS (dbdname) and to retry the
User response: None. I/O operation. However, the re-OPEN is not successful.
ddname indicates the DD name of the failing data set.
FABH0657E STEPLIB IS NOT APF-AUTHORIZED System action: HSSR Engine ends abnormally.
Explanation: APF-authorization is required for this User response: See message FABH0581E, and take an
type of run of the HSSR Engine. appropriate action.
v And DBD referred to by the PCB is User response: Check the PCB parameter or other
generated with the data capture exit routine. parameters. If there is no error in DL/I call statement,
contact IBM Software Support.
The following table summarizes the reason codes of
FABH0671W for the combination of errors.
FABH0674E ERROR FOUND IN HSSR CALL
STATEMENT, INVALID xxxxxx
Key length PROCOPT User exit Reason code of
error error error FABH0671W Explanation: The HSSR language interface detected an
Yes Yes Yes RC=PROCOPT error in the HSSR call statement described in xxxxxx.
xxxxxx shows one of the following texts:
Yes Yes No RC=PROCOPT
PARAMETER COUNT
Yes No No RC=KEYLEN
v If APISET is 1, the parameter count must be
Yes No Yes RC=USREXIT 3 or 4.
No No Yes RC=USREXIT v If APISET is 2, the count must be from 3 to
5.
No No No N/A
v If APISET is 3, the count must be from 3 to
No Yes Yes RC=PROCOPT 18, inclusive.
No Yes No RC=PROCOPT
PCB ADDRESS
PCB address is incorrect.
System action: HSSR Engine continues processing. NUMBER OF PARAMETERS
User response: If you want to process the database v If APISET is 1, the number of parameters
with HSSR Engine, check and correct the PCB that must be 3 or 4.
defines the database. Otherwise, ignore this message v If APISET is 2, the number must be from 3
and continue processing by using DL/I modules. to 5.
To identify the cause, check the PROCOPT or KEYLEN v If APISET is 3, the number must be from 3
parameter in the PCB. If the reason code is "KEYLEN" to 18, inclusive.
and the specified PCB does not refer to any DBDs that
are listed on the DBDL1 control statement, the PCB can System action: HSSR Engine ends abnormally.
be specified as an HSSR PCB using the HSSRPCB User response: Specify 'APISET 2' or 'APISET 3' in the
control statement or through the HSSRDBD control control statement.
statement.
User response: Check and correct the PLIHSSR call System action: If APISET is 2, HSSR Engine ends
statement in your PL/I application program and rerun. abnormally. If APISET is 3, the call and all the
If there is no error, check whether the correct APISET succeeding calls to the HSSR PCB are passed to the
statement is specified. For details about the call types IMS DL/I call handler to continue the processing
and command types that APISET supports, see “DL/I instead of ending it abnormally.
calls and EXEC DLI command for HSSR PCB” on page User response: If APISET is 2, specify 'APISET 3' in
110. the control statement. If APISET is 3, ignore this
message.
FABH0673E INCORRECT PCB ADDRESS WAS
PASSED BY APPLICATION PROGRAM FABH0678E INCORRECT HPIO CONTROL
Explanation: HSSR Engine detected an incorrect PCB STATEMENT IS SPECIFIED
address internally. This message was issued because of Explanation: An incorrect operand on the HPIO
the incorrect PCB address passed by application control statement is specified in the HSSROPT data set.
program or an internal error in HSSR Engine. The operand must be either "YES" or "NO".
System action: HSSR Engine ends abnormally. System action: The incorrect statement is ignored.
Explanation: An incorrect operand on the SKIPVLC Explanation: The FABHKEYX exit routine used the
control statement is specified in the HSSROPT data set. specified DD name ddname01 and the high key value
The operand must be either "YES" or "NO". KeyString. The indicated number of segment records
were written to this unload file.
System action: The incorrect statement is ignored.
System action: Program FABHURG1 continues
User response: Correct the SKIPVLC statement. processing.
User response: None.
FABH0680E FABHKEYX CANNOT PROCESS THE
COMPRESSED ROOT KEY
FABH0685E INCORRECT STATEMENT IS FOUND
Explanation: The FABHKEYX exit routine cannot IN FABHKEYX DATA SET
process the compressed root key. It must be
decompressed. Explanation: The FABHKEYX exit routine detected an
incorrect statement that is specified in the FABHKEYX
System action: Program FABHURG1 ends abnormally. data set.
User response: If you want to use the FABHKEYX exit System action: Program FABHURG1 ends abnormally.
for this database, specify the DECY control statement.
User response: Correct the statement.
FABH0681E INCORRECT APISET CONTROL
STATEMENT IS SPECIFIED FABH0686E HIGH KEY VALUES ARE NOT
SPECIFIED IN ASCENDING ORDER
Explanation: An incorrect operand or no operand is
specified for the APISET control statement in the Explanation: The FABHKEYX exit routine detected the
HSSROPT data set. The operand must be 1, 2, or 3. high key values that are specified in the FABHKEYX
data set are not in ascending order.
System action: The statement is ignored and the
system or site default is used. System action: Program FABHURG1 ends abnormally.
User response: Correct the APISET control statement. User response: Correct the statements.
FABH0682E xxxxxxxx CANNOT BE SPECIFIED FABH0687E OPEN FAILED FOR DDNAME: ddname
WHEN APISET 3 IS SELECTED
Explanation: An attempt to open the data set that is
Explanation: The control statement xxxxxxxx is not identified by ddname failed.
supported for APISET 3.
System action: Program FABHURG1 ends abnormally.
System action: HSSR Engine ends abnormally.
User response: Ensure that the DD statement
User response: Remove the control statement associated with ddname is the correct data set.
xxxxxxxx or specify APISET 1 or 2.
FABH0688E BLKSIZE OR LRECL OF ddname IS
FABH0683E INCORRECT PCBLIST CONTROL TOO SMALL
STATEMENT IS SPECIFIED
Explanation: The block size or record size of the
Explanation: An incorrect operand or no operand is ddname data set is too small. The block size is always
specified for the PCBLIST control statement in the the maximum device capacity.
HSSROPT data set. The operand must be HSSR or IMS.
System action: Program FABHURG1 ends abnormally.
System action: The statement is ignored and the
User response: If the utility uses the maximum device
system or site default is used.
capacity, check whether ddname can be allocated on a
User response: Correct the PCBLIST control statement. device with more track capacity. If the utility uses the
block size specified on the JCL statement, check
whether the block size or the record size can be
increased or use the default maximum device capacity.
Record size cannot be specified.
User response: Correct the control statement. System action: Program FABHPSFM ends abnormally
with dump.
FABH0711E DELTA IS MISSING OR HAS User response: See message FABH0714E, and take an
IMBEDDED BLANKS appropriate action.
Explanation: A search delta was not specified or it
contains blank characters in the MAP control statement. FABH0717E INDEX FIELD IS NOT AN XFLD IN
BASE DBD
System action: Program FABHPSFM ends abnormally.
Explanation: An index field for an index DBD was not
User response: Correct the control statement. defined as XFLD in the base DBD.
System action: Program FABHPSFM ends abnormally
FABH0712E INVALID INDEX DBD NAME with dump.
Explanation: An index DBD name was specified in the User response: See message FABH0714E, and take an
MAP control statement, but this DBD is not an index appropriate action.
DBD.
System action: Program FABHPSFM ends abnormally.
FABH0748E PSB NAME IS MISSING OR HAS FABH0755E EXIT ROUTINE CONTROL OPTION IS
IMBEDDED BLANKS NOT Y, N, OR BLANK
Explanation: A PSB name was not specified correctly Explanation: The exit routine control option in the
in the PSB control statement. PSB control statement is not Y, N, or blank.
System action: Program FABHPSFC ends abnormally. System action: Program FABHPSFC ends abnormally.
User response: Correct the control statement. User response: Correct the control statement.
FABH0749E PCB NUMBER IS NOT NUMERIC FABH0756E DBR SKIP OPTION IS NOT Y, N, OR
BLANK
Explanation: The relative PCB number in the PSB
control statement is not numeric. Explanation: The DBR skip option in the PSB control
statement is not Y, N, or blank.
System action: Program FABHPSFC ends abnormally.
System action: Program FABHPSFC ends abnormally.
User response: Correct the control statement.
User response: Correct the control statement.
FABH0750E OUTPUT FORMAT IS NOT SPECIFIED
FABH0758E END CONTROL STATEMENT IS
Explanation: The format of output data set to be
MISSING OR OUT OF PLACE
created was not specified in the PSB control statement.
Explanation: The END control statement is missing or
System action: Program FABHPSFC ends abnormally.
it is out of place.
User response: Correct the control statement.
System action: Program FABHPSFC ends abnormally.
User response: Correct the control statement.
FABH0751E DDNAME IS MISSING OR HAS
IMBEDDED BLANKS
FABH0759E NO PSB CONTROL STATEMENT IS
Explanation: A DD name was not specified, or it
PRESENT
contains blank characters in the PSB control statement.
Explanation: The PSB control statement is not
System action: Program FABHPSFC ends abnormally.
specified.
User response: Correct the control statement.
System action: Program FABHPSFC ends abnormally.
User response: Correct the control statement.
FABH0752E EXIT ROUTING NAME HAS
IMBEDDED BLANKS
FABH0760E SCAN CONTROL DATA SET RECFM
Explanation: The name of the exit routine contains
IS NOT VB
blank characters in the PSB control statement.
Explanation: The record format of the scan control
System action: Program FABHPSFC ends abnormally.
data set is not VB.
User response: Correct the control statement.
System action: Program FABHPSFC ends abnormally.
User response: Correct the record format of the scan
FABH0753E SEGMENT MODIFICATION OPTION
control data set.
IS NOT Y, N, OR BLANK
Explanation: The segment modification option in the
FABH0761E FIND FAILED FOR MEMBER xxxxxxxx
PSB control statement is not Y, N, or blank.
IN DBDLIB - R15:yy - R0:zz
System action: Program FABHPSFC ends abnormally.
Explanation: A FIND macro failed for the DBD
User response: Correct the control statement. member xxxxxxxx in the DBD library (IMS DD in the
JCL). yy is a return code and zz is a reason code from
FIND macro. If the return code is 4 and the reason code
FABH0754E CONCATENATED KEY OPTION IS is 0, this message shows that DBD xxxxxxxx was not
NOT Y, N, OR BLANK found in the DBD library on your IMS DD statement.
Explanation: The concatenated key option in the PSB Refer to the description of FIND macro for other cases.
control statement is not Y, N, or blank. System action: Program FABHPSFC ends abnormally.
System action: Program FABHPSFC ends abnormally. User response: Correct the error and rerun the Job.
User response: Correct the control statement.
Explanation: Parallel Scan Facility supports only Explanation: The END control statement in the scan
HIDAM and HDAM databases. control data set cannot be found, or it is incorrect.
System action: Program FABHPSFS ends abnormally. System action: Program FABHPSFS ends abnormally
with dump.
User response: Specify the DBD name of HIDAM or
HDAM. User response: Check the result of the previous
FABHPSFC step and the FABHFSU parallel scan steps.
FABH0825I FORCE OPTION REJECTED - A FABH0830E FIRST PCB IS NOT A VALID HSSR
STARTED PHASE INCOMPLETE PCB
Explanation: The FORCE option was specified in the Explanation: Program FABHLDBR detected that the
SUM control statement, but the phase process specified first PCB in the PSB was not a valid HSSR PCB.
by the DD statement was not completed.
System action: FABHLDBR ends abnormally.
System action: Program FABHPSFS continues
User response: See “HSSR PCB requirements” on page
processing.
103, and correct the error.
User response: None.
FABH0831E AN INVALID STATEMENT IS FOUND
FABH0826I RUN TIME ENVIRONMENT EXIT IN SYSIN DATA SET
ROUTINE IS BEING INVOKED,
Explanation: An incorrect control statement type was
MODULE=xxxxxxxx
detected in the FABHLDBR SYSIN data set.
Explanation: The runtime exit routine whose name is
System action: Program FABHLDBR ends abnormally.
xxxxxxxx is invoked.
User response: Correct the control statement.
System action: HSSR Engine continues processing.
User response: None.
FABH0832E NON-POSITIVE NUMBER IS
SPECIFIED FOR xxxxxxxx CONTROL
FABH0827E ERROR OCCURRED IN RTEXIT, STATEMENT
MODULE=xxxxxxxx, FUNC=yyyy, RC=zz
Explanation: A nonpositive numeric value is specified
Explanation: HSSR Engine detected a nonzero return for the operand of the xxxxxxxx control statement in the
code zz from the runtime environment exit routine SYSIN data set of the FABHLDBR utility.
xxxxxxxx.
System action: Program FABHLDBR ends abnormally.
System action: HSSR Engine ends abnormally.
User response: Correct the control statement.
User response: Determine the reason for the nonzero
return code from the runtime exit routine. Run the job
FABH0833E THE OPERAND OF xxxxxxxx
again after correcting the problem, if necessary.
CONTROL STATEMENT IS NOT
NUMERIC
FABH0828W NO SEGMENT WAS RETRIEVED
Explanation: A nonnumeric value is specified for the
Explanation: No segment was retrieved in all PSF operand of the xxxxxxxx control statement in the SYSIN
phases. data set of the FABHLDBR utility.
System action: Program FABHPSFS normally ends System action: Program FABHLDBR ends abnormally.
with a return code of 01.
User response: Correct the control statement.
User response: Check whether it is acceptable that the
input database has no valid segments. If a wrong
FABH0834E OPEN OF SYSUT1 HAS FAILED
database data set or a wrong DBD or PSB was
specified, specify the appropriate ones, and rerun the Explanation: Program FABHLDBR could not open
job. SYSUT1.
System action: FABHLDBR ends abnormally.
FABH0829W INCONSISTENT DEC OPTIONS WERE
SPECIFIED IN SCAN PHASES User response: Correct the SYSUT1 DD statement.
System action: Program FABHPSFS continues Explanation: An undefined parameter was detected in
processing. the LOUT control statement. Or, the value specified by
the LENGTH= or IO= parameter of the LOUT control
User response: The unloaded data sets created by statement was incorrect.
these scan phases cannot be used to load the database.
The DEC option specified in each scan phase must be System action: The incorrect LOUT parameter and
consistent if you want to use the created data sets for any parameters that follow it on the same control
reloading. statement, are ignored.
User response: Correct the LOUT control statement. User response: Remove or correct the control
statement.
FABH0836E A NON-NUMERIC VALUE IS
SPECIFIED IN HSSRLDEF DATA SET FABH0842E NUMERIC FIELD IS NOT NUMERIC
Explanation: A record that contains a nonnumeric Explanation: A nonnumeric value was specified for a
value is found in the HSSRLDEF data set. numeric field in a control statement in the HSSREXTR
data set.
System action: The incorrect record is ignored.
System action: Program FABHURG1 ends abnormally.
User response: Correct the incorrect record.
User response: Correct the control statement.
FABH0837E A NUMERIC FIELD IS TOO LONG IN
HSSRLDEF DATA SET FABH0843E NUMBER OF DB RECORDS TO BE
EXTRACTED IS [NOT POSITIVE|TOO
Explanation: A numeric value that is too long is
LARGE]
specified in the HSSRLDEF data set.
Explanation: The EXTR or PARTEXTR control
System action: The record that has the incorrect
statement specified a numeric value that was not
numeric field is ignored.
positive or was too large.
User response: Correct the statement that contains the
System action: Program FABHURG1 ends abnormally.
incorrect field.
User response: Correct the control statement.
FABH0838E LENGTH-DEFINITIONS IN HSSRLDEF
ARE NOT IN ASCENDING FABH0844E NEITHER EXTR NOR PARTEXTR IS
SEQUENCE SPECIFIED
Explanation: The numeric values in the HSSRLDEF Explanation: Neither the EXTR control statement nor
data set were not in ascending sequence. the PARTEXTR control statement is specified in the
HSSREXTR data set. One or the other must be
System action: The incorrect numeric field is ignored.
specified.
User response: Correct the statement that contains the
System action: Program FABHURG1 ends abnormally.
incorrect field, so that the values will be in ascending
sequence. User response: Specify either EXTR or PARTEXTR.
job. If you need DFSDBUX1 for the database you are Catalogs for the meaning of the return code. Correct the
processing, define table entries for the database in the error, and rerun the job. If the cause is not clear, collect
translation table of the Data Conversion exit routine. the dump and contact IBM Software Support.
FABH0861I DBDGEN REQUIRED FOR DATABASE FABH0872I DATA SET dsname IS NOT
xxxxxxxx TO SET DATXEXIT CATALOGED (DDN=ddname)
INDICATOR
Explanation: The data set specified is not cataloged.
Explanation: While HSSR Engine was processing the The string ddname shows the DD name with which the
first HSSR call for a database whose DATXEXIT=YES data set is associated by the partition definition.
flag is not on, the Data Conversion exit routine
System action: HSSR Engine continues processing.
(DFSDBUX1) was called and the routine returned to
HSSR Engine without SRCHFLAG set to X'FF'. This User response: See the explanation and the
indicates that the Data Conversion exit routine was programmer response of message FABH0873I.
required for this database. HSSR Engine dynamically
sets the DATXEXIT=YES flag on and continues
processing for this database, but issues this message to FABH0873I PARTITION partname OF HALDB
warn the user that a DBDGEN with DATXEXIT=YES dbdname WILL NOT BE PROCESSED
needs to be done for this database. Explanation: This message is preceded by one or more
System action: HSSR Engine continues processing. FABH0872I messages. HSSR will not process the
partition partname of HALDB dbdname because one or
User response: The database administrator needs to more data sets that are defined for partition partname
be notified that a DBDGEN is required for this are not cataloged.
database.
System action: HSSR Engine continues processing.
FABH0862E NON-ZERO RC (xx) RETURNED FROM User response: If the partition needs to be processed,
CONV EXIT you must catalog all data sets for partition partname.
FABI messages
Use the information in these messages to help you diagnose and solve Sequential
Subset Randomizer utility problems.
System action: The generation of the randomizer will
FABI0001E IDTYPE= PARAMETER IS NEITHER C
not be successful. The return code is 12.
NOR X
User response: This parameter is not supported by the
Explanation: The value of the IDTYPE= keyword
IMS High Performance Unload Sequential Subset
parameter must be either C or X.
Randomizer utility.
System action: The generation of the randomizer will
not be successful. The return code is 12.
FABI0007E DBNBYTES= PARAMETER IS TOO
User response: Correct the error. LONG
Explanation: The value of the DBNBYTES= keyword
FABI0002E VALTYPE= PARAMETER IS NEITHER parameter cannot be greater than 8.
E NOR H
System action: The generation of the randomizer will
Explanation: The value of the VALTYPE= keyword not be successful. The return code is 12.
parameter must be either E or H.
User response: This parameter is not supported by the
System action: The generation of the randomizer will IMS High Performance Unload Sequential Subset
not be successful. The return code is 12. Randomizer utility.
User response: Correct the error.
FABI0008E DBNBYTES= PARAMETER CANNOT
BE ZERO
FABI0003E BYTES= PARAMETER IS NOT
NUMERIC Explanation: The value of the DBNBYTES= keyword
parameter cannot be 0.
Explanation: The value of the BYTES= keyword
parameter must be numeric. System action: The generation of the randomizer will
not be successful. The return code is 12.
System action: The generation of the randomizer will
not be successful. The return code is 12. User response: This parameter is not supported by the
IMS High Performance Unload Sequential Subset
User response: Correct the error.
Randomizer utility.
System action: The generation of the randomizer will Explanation: The value of the DBNSTART= keyword
not be successful. The return code is 12. parameter cannot be zero.
User response: Correct the error. System action: The generation of the randomizer will
not be successful. The return code is 12.
FABI0006E DBNBYTES= PARAMETER IS NOT User response: This parameter is not supported by the
NUMERIC IMS High Performance Unload Sequential Subset
Randomizer utility.
Explanation: The value of the DBNBYTES= keyword
parameter must be numeric.
System action: The generation of the randomizer will System action: The FABIUNLS utility will issue an
not be successful. The return code is 12. abend.
User response: Correct the error. User response: Correct the error.
Procedure
Provide the following information for all IMS High Performance Unload problems:
v A clear description of the problem and the steps that are required to re-create
the problem
v The version of IMS that you are using and the version of the operating system
that you are using
v A complete log of the job
v A Load Module/Macro APAR Status report
For information about creating a Load Module/Macro APAR Status report, see
Chapter 37, “Diagnostics Aid,” on page 609.
The Diagnostics Aid generates a Load Module/Macro APAR Status report. This
report shows the latest APAR fixes applied to each module and macro.
The Diagnostics Aid is not applicable for any other versions or releases.
Topics:
v “Running the Diagnostics Aid with JCL” on page 610
v “Load Module/Macro APAR Status report” on page 611
v “Messages and codes” on page 613
Procedure
1. Specify the EXEC statement. It must be in the following form:
//stepname EXEC PGM=FABHDIAG
2. Specify the DD statements.
DD statement Description
STEPLIB DD This statement defines the library containing the load modules
(usually HPS.SHPSLMD0).
SHPSLMD DD This statement defines the library containing the load modules
(usually HPS.SHPSLMD0) for which you have a problem.
Notes:
1. If the CSECT name does not start with FAB, HPS, or the program
structure of the CSECT does not conform to the IMS High Performance
Unload module standard to identify the APAR number and the APAR
fixed date, the fields APAR NUMBER and APAR FIX-DATE are filled
with asterisks (*).
2. If the load module is a member of the PDSE library, the following
statement is shown on the report line and the job completes with a
return code of 4.
** IT CAN NOT BE ANALYZED DUE TO PDSE LIBRARY MEMBER **
3. If the load macro fails for a utility member, the following statement is
shown on the report line and the job completes with a return code of 8.
** IT CAN NOT BE ANALYZED DUE TO LOAD FAILED MEMBER **
Note: If the macro source statement structure does not conform to the IMS High
Performance Unload macro standard to identify the APAR number and the
APAR fixed date, the fields APAR NUMBER and APAR FIX-DATE are filled
with asterisks (*).
Return codes
FABHDIAG contains the following return codes:
0 Successful completion of the program.
4 Warning messages were issued, but the requested operation was
completed.
8 Error messages were issued, but the request operation was completed.
Abend codes
All 36xx abend codes are accompanied by a FABU36xx message. Refer to the
appropriate message for problem determination.
Messages
Use the information in these messages to help you diagnose and solve FABHDIAG
problems.
User response: Refer to other messages generated by Explanation: DUMMY was specified for the
Diagnostic Aid to determine the nature and the cause SHPSLMD/SHPSMAC DD statement.
of the detected errors. Correct the problem and rerun
System action: Diagnostic Aid sets an end-of-job
the job.
return code of 4 and continues processing. Diagnostic
Aid does not generate a report for the load module or
FABU1005W [SHPSLMD | SHPSMAC] DD the macro.
STATEMENT NOT FOUND
User response: If you did not intend to specify the User response: Refer to the MVS system message and
dummy DD statement, correct the error and rerun the its programmer response. Correct the error and rerun
job. Diagnostic Aid. If the error persists, contact IBM
Software Support.
FABU1008W NO [MODULE | MACRO] MEMBERS
FOUND IN DDNAME [SHPSLMD | FABU3603E BLDL FAILED FOR DDNAME ddname
SHPSMAC] MEMBER member
Explanation: Diagnostic Aid could not find any utility Explanation: The member was not found when the
modules or macros members from the DD ddname BLDL macro searched the PDS directory for the ddname.
data set.
System action: Diagnostic Aid ends with an abend
System action: Diagnostic Aid sets an end-of-job code of U3603.
return code of 4 and continues processing.
User response: Ensure that the member indicated
User response: Ensure that the libraries have correct exists in the data set specified for the indicated
utility module or macro libraries. Correct the error and ddname. Correct the error and rerun the job. If the
rerun the job. error persists, contact IBM Software Support.
FABU2001E LOAD FAILED FOR DDNAME ddname FABU3604E LOAD FAILED FOR DDNAME ddname
MODULE member MODULE member
Explanation: Diagnostic Aid could not load a member Explanation: Diagnostic Aid could not load the
name from ddname. member name from the ddname.
System action: Diagnostic Aid sets an end-of-job System action: Diagnostic Aid ends with an abend
return code of 8 and continues processing. code of U3604.
User response: Ensure that the member indicated User response: Refer to the MVS system message and
exists in the data set specified for the indicated ddname. its programmer response. Correct the error and rerun
Correct the error and rerun the job. Diagnostic Aid. If the error persists, contact IBM
Software Support.
FABU3600E OPEN FAILED FOR DDNAME ddname
FABU3605E DELETE FAILED FOR MODULE member
Explanation: The named DCB could not be opened.
Explanation: Diagnostic Aid could not delete a member
System action: Diagnostic Aid ends with an abend
name.
code of U3600.
System action: Diagnostic Aid ends with an abend
User response: Ensure that a ddname DD statement
code of U3605.
exists, and that it specifies the correct DD parameter.
Correct any errors and rerun the job. User response: Contact IBM Software Support.
FABU3601E GET FAILED FOR DDNAME ddname FABU3606E PUT FAILED FOR SYSPRINT
Explanation: The GET failed for a directory from the Explanation: Diagnostic Aid could not put report data
DD ddname data set. in SYSPRINT.
System action: Diagnostic Aid ends with an abend System action: Diagnostic Aid ends with an abend
code of U3601. code of U3606.
User response: Refer to the MVS system message and User response: Refer to the MVS system message and
its programmer response. Correct the error and rerun its programmer response. Correct the error and rerun
Diagnostic Aid. If the error persists, contact IBM Diagnostic Aid. If the error persists, contact IBM
Software Support. Software Support.
FABU3602E READ FAILED FOR DDNAME ddname FABU3607E OPEN FAILED FOR SYSPRINT
MEMBER member
Explanation: SYSPRINT DCB could not be opened.
Explanation: The READ failed for a member from the
System action: Diagnostic Aid ends with an abend
DD ddname data set.
code of U3607.
System action: Diagnostic Aid ends with an abend
User response: Ensure that a ddname SYSPRINT DD
code of U3602.
statement exists, and that it specifies the correct DD
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not give you
any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
For license inquiries regarding double-byte (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries, in writing, to:
Intellectual Property Licensing
Legal and Intellectual Property Law
IBM Japan Ltd.
1623-14, Shimotsuruma, Yamato-shi, Kanagawa 242-8502
Japan
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS
PUBLICATION “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or
implied warranties in certain transactions, therefore, this statement may not apply
to you.
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this IBM
product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligation to you.
The licensed program described in this information and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement, or any equivalent agreement
between us.
COPYRIGHT LICENSE:
If you are viewing this information softcopy, the photographs and color
illustrations may not appear.
GUPI
PSPI
PSPI
DMTI
DMTI
Trademarks
IBM, the IBM logo, and ibm.com® are trademarks or registered trademarks of
International Business Machines Corp., registered in many jurisdictions worldwide.
Other product and service names might be trademarks of IBM or other companies.
A current list of IBM trademarks is available on the Web at "Copyright and
trademark information" at http://www.ibm.com/legal/copytrade.shtml.
Other company, product, and service names may be trademarks or service marks
of others.
Notices 619
620 User's Guide
Index
Special characters CABDD (continued)
statement 288
CARDIN (FABHPSFC)
CTL 170
*CP format 47 CABDD control statement 288 DBD 172
*CS format 47 CABDEFAULT END 174
*F1 format 47 =DBT 355 HKY 174
*F2 format 47 =HPU 355 NPT 175
*F3 format 47 CABSTAT 286 PSB 176
*HD 289 NO 286 CARDIN (FABHPSFM)
*HD format 47 YES 246, 251, 286 END 165
*PHD 289 CABSTAT control statement 212 MAP 164
calls CARDIN (FABHPSFS)
DL/I 303 END 192
A formats 488 SUM 191
accessibility 20 Assembler applications 488 cataloged procedures
APISET control statement 207 COBOL applications 488 DL/I region, DBB region, ULU
application programming PL/I applications 488 region 38
HSSR Engine 101 Get-by-RBA 342 CBLHSSR 488
Sequential Subset Randomizer 371 GN or GHN 307 Chained Anticipatory Buffer handler
ASMHSSR 488 GNR or GHNR 308 (CAB) 274
GU or GHU 309 simulate 317
HSSR 303 CHECKREC control statement 54
B REPL 310
CALLSTAT control statement 213
CNTLDD
DD
Basic Buffer handler (BB) 275 CARDIN FABHFSU (parallel scan
BB 275 data set facility) 184
BLDLPCK control statement 30, 31, 33, default option table 350 FABHPSFC 169
42, 52, 124, 154, 208, 486, 521 FABHFSU 74 FABHPSFS 189
BLM control statement 74 FABHFSU (parallel scan CO control statement 214
BUF control statement 209, 300 facility) 184 comments
BUFDEFAULT FABHPSFC 170 methods for providing ix
=BB 354 FABHPSFM 164 compatibility 477
=CAB 354 FABHPSFS 190 DBT V1 HSSR 497
buffer handler 273 DD DBT V2 HSSR 479
buffering services 273 FABHFSU 72 FSU II 509
CAB 40, 274 FABHFSU (parallel scan HSSR V2 Branch Office
initialization exit 328 facility) 184 Randomizer 398
tuning 273 FABHPSFC 169 PO HSSR 499
BUTR control statement 210, 300 FABHPSFM 163 control statements
BYINDEX control statement 211 FABHPSFS 189 Database Tuning Statistics 416
CARDIN (FABHFSU in PSF mode) Database Tuning Statistics
DEC 185 (HSSROPT) 416
C END 186 FABHBSIM 321
CAB 274 GOT 186 FABHBSIM (HSSRCABP) 321
CABSTAT 205 PSC 186 FABHBSIM (HSSROPT) 321
considerations 280 CARDIN (FABHFSU) BUF 321
default values of buffering BLM 74 FABHFSU 74
parameters 481 CO (compatibility) 490 CO (compatibility) 490
how to tune 286 CON 491, 509 CON 491, 509
HSSRCABP DD 40 CON (compatibility) 490 FABHFSU (CARDIN) 74
inter-PCB look-aside 289 DBD 76, 156 BLM 74
JCL examples 296 DEC 78 DBD 76
statistics 212, 286 DECN 69, 79, 185, 496 DEC 78
statistics report 246 DECY 79, 185 ELM 74
CAB buffering 283 ELM 74 END 79
CAB control statements 283 END 79 GOT 79
for FABHULU jobs 296 GOT 79 PARTITION 80, 136
CABDD 282, 296 PARTITION 80 PSB 80
*ALL 296 HALDB 136 SEGSTAT 84, 136
groups 296, 297 PSB 80 FABHFSU (HSSRCABP) 85
multiple 296 SEGSTAT 84 FABHFSU in PSF mode
specifying multiple 297 HALDB 136 (CARDIN) 184
Index 623
FABHOPT macro FALLBACK (continued) HALDB (continued)
FSUBUFNO= 352 ULEN control statement 341 restrictions 129
URG1BUFNO= 352 USEGMAX control statement 342 sequential access for 140
FABHOPT option table 352 FALLBACK control statement 56 unload in PSF mode 129
FABHOPTG sample JCL 352 fallback unload 142, 148 HALDB control statement 125
FABHPSFC 169 example of 148 HALDB Partition Definition report 241
JCL 169 FABHFSU 129, 142 PARTINFO DEF 229
reports 180 from HALDB 26 HALDB Partitions Accessed report 242
FABHPSFM 163 partitioned secondary indexes 31, PARTINFO ACC 229
JCL 163 143 HALDB Single Partition Processing 125
reports 166 feedback DFSHALDB DD 125
FABHPSFS 189 methods for providing ix HALDB control statement 125
JCL 189 FKDn data set 388, 389 hardware requirements 21
reports 192 FRMT control statement 56, 339 HDAM 273
FABHRCEX 329 FSU II 509 CAB 280
FABHRTEX 326 GOTRETRY control statement 220
FABHTEST 516 lack of IRLM 121
control statements 307
examples 314
G modifying segments in user exits 92
partitioned 9
generation of Sequential Subset
execution steps 305 secondary index 35, 76, 211
Randomizer 362, 367, 375
input 307 SKERROR control statement 233
data flow 376
JCL 306 SKERROR option 155
example 383
performance testing 314 SKIPVLC control statement 234
input 378
problem determination 314 support of the processing options
JCL 377
reports 313 GON and GOT 120
job steps 376
restrictions 304 HDMB 344
macro statements 378
FABHTOPT macro 353 HDMBOS8G 344
Get-by-RBA calls 342
APISET= 353 HDR data set 387, 389
GHN control statement 307
BUFDEFAULT= 353 HIDAM 8, 273
GHNP control statement 308
CABDEFAULT= 353 a large number of GU calls to 276
GHU control statement 309
CABSTAT= 353 BYINDEX control statement 211
GN control statement 307
COMPAT= 353 GOTRETRY control statement 220
GNHR control statement 308
DIAGG= 353 lack of IRLM 121
GNP control statement 308
FSUDEC= 353 LSR control statement 226
GNR control statement 308
LSR= 353 modifying segments in user exits 92
GOT control statement 79
PCBLIST= 353 NOFIX 227
GOT control statement (FABHFSU in PSF
URGIDEC= 353 NOVSAMOPT 228
mode) 186
FABHURG1 45, 367 PARTINFO 229
GOTRETRY control statement 220
control statements 54 partitioned 9
GU control statement 309
examples 63 RETRY 231
FABHKEYX exit routine 144 RTEXIT 232
fallback unload 127, 142 secondary index 35, 76, 211
input 54 H SKERROR 233
JCL 51 HALDB 88, 127, 273, 283 SKERROR option 155
logic 331 buffering statistics 246 SKIPVLC control statement 234
migration unload 127, 142 CAB buffer sharing for 283 support of the processing options
output formats 47 DD statements 40 GON and GOT 120
*HD Format 33 EXEC statement 40 TRDB 235
HALDB *HD Format 128 FABHFSU 136 TRHC 236
HALDB *PHD Format 128 FABHURG1 133 TRXC 237
reports 61 Get-by-RBA call 342 High Availability Large Database 127
SKERROR option 152, 153, 155 Online Reorganization (OLR) 34 High Speed Sequential Retrieval
SS-STATS (FABISTAT) 396, 397 PARTINFO ACC 229 (HSSR) 8
unloading a corrupted database 151 PARTINFO DEF 229 HISAM 273
user exit routine (FABHEXTR) 471 partition overflow area 273
FABIDEF macro statement 381 FABHURG1 Segment Statistics SKERROR control statement 233
FABIGEN macro statement 381 report 61 SKIPVLC control statement 234
FABISTAT 395 PARTITION control statement HJCB 344
FABITAB macro statement 379 (FABHFSU) 80 HKY control statement 174
FABIUNLS 367, 385 Partition Definition report 229, 241 HPIO control statement 221
data flow 386 FABHFSU 136, 137 HS format 69
examples 392 FABHURG1 133, 134 HSDB 344
JCL 387 Partition Definition utility 128, 281 HSSR application programs 12, 25
job steps 386 Partitions Accessed report 229, 242 buffering functions available to 273
output 389 FABHFSU 137 CAB 274
FALLBACK 148 FABHURG1 134 coding JCL for your
OFFS control statement 340 random access to 141 HALDB 139
Index 625
HSSROPT (continued)
TRDB 235
INTER 283
INTER control statement 289
M
TRHC 236 Inter-PCB look-aside buffering 274 MAP control statement 164
TRXC 237 between CAB buffer and BB MBR= 115
HSSROPT (BB) buffer 274 messages
BUF 300 introduction 8 FABH 524
BUTR 300 Sequential Subset Randomizer 359 FABI 602
HSSROPT (CAB) IO control statement (FABHLDBR) 426 methods for accessing 518
BUTR 283 overview 523
NOFIX 283 variables 523
MIGRATE 142
NOVSAMOPT 283
HSSROPT (Database Tuning Statistics)
J OFFS control statement 340
JCL requirements ULEN control statement 341
DBSTATS 416
basic 38 USEGMAX control statement 342
LOUT 416
Database Tuning Statistics 415 MIGRATE control statement 57
HSSROPT (FABHLDBR)
FABHBSIM 320 migration unload 30, 42, 142, 337
TRDB 424
FABHEXTR 473 control statement 57
TRHC 424
FABHFSU 72 example of 143
HSSROPT data set 203, 204
FABHFSU (parallel scan facility) 184 FABHFSU 129, 142
SS-STATS (FABISTAT) 397, 398
FABHLDBR 423 HDAM or HIDAM databases 142
HSSRPCB 223
FABHOPTG 352 HISAM databases 31, 142, 143
*ALL 296
FABHPSFC 169 parallel migration unload 145
HSSRPCB control statement 223
FABHPSFM 163 parameter 3: segment prefix 336
HSSRSNAP 40
FABHPSFS 189 parameter 7: RBA of segment
data set 268
FABHTEST 306 prefix 336
DD 40
FABHURG1 51 secondary indexes 31, 142, 143
HSSRSTAT 40
FABHX034 40 sequence error 264
data set 12, 240
FABIUNLS 387 to HALDB 26, 30
Database Tuning Statistics 419
HSSR applications 113 exit routine FABHKEYX 144
FABHBSIM 322
SS-STATS (FABISTAT) 397 monitoring the database 373
SS-STATS 399
job control language 8
DD 40
job steps
Database Tuning Statistics 415
SS-STATS (FABISTAT) 397
FABIUNLS 386
generation of Sequential Subset
N
SS-STATS (FABISTAT) 397 NBR control statement
Randomizer (SSRGEN) 376
HSSRTRAC (FABHLDBR) 426
SS-STATS (FABISTAT) 396
data set 253 NBRDBUF 282
FABHLDBR 428 NBRDBUF control statement 290
DD 40 NBRSCAN 282
DD (FABHLDBR) 423 K NBRSCAN control statement 290
Trace Output report 253 keyboard shortcuts 20 NOFIX control statement 227
Trace Output report with KEYCHECK control statement 224 nonsequential randomizer 361
diagnosis 256 notices 617
NOVSAMOPT control statement 228
L NPT control statement 175
I legal notices
I/O notices 617
Anticipatory (overlapped) chained programming interface O
sequential 274 information 618 OCCURRENCE 282
Immediate (non-overlapped) chained trademarks 619 OCCURRENCE control statement 291
sequential 274 LENGTH control statement OFFS control statement 340
IEFRDER (FABHLDBR) 426 orphans 371, 389, 399
DD 40 logical parent's concatenated key 29, 31, output
IMS 33, 92, 208 Database Tuning Statistics 419
DD LPCK 31 FABHBSIM 322
FABHPSFS 189 virtual 486 FABHFSU 86
Version 10 14 logical relationship 403 FABHFSU (parallel scan facility) 188
Version 8 14 Look-aside buffering 274 FABHLDBR 428
Version 9 14 LookAt 518 FABHPSFC 180
IMS HD Reorganization Unload LOUT control statement 225, 416 FABHPSFM 166
(DFSURGU0) LPCK 29, 31, 33, 92, 95, 208 FABHPSFS 192
JCL 65 area 95 FABHTEST 313
IMSDALIB building 124 FABHURG1 61
DD 40 defined as virtual 33 FABIUNLS 389
input physical 208 HSSR 239
generation of Sequential Subset virtual 92, 154, 208 SS-STATS 399
Randomizer 378 LSR control statement 226 OUTPUT-AREA 334
SS-STATS (FABISTAT) 398 OVERFLOW 282
Index 627
samples (continued) SYSIN (FABHTEST) (continued) typical uses and benefits
performing the migration unload GHU 309 Sequential Subset Randomizer 361
using FABHURG1 142 GN 307
scan control data set 170 GNP 308
screen readers and magnifiers 20
secondary index 35
GNR 308
GU 309
U
UL format 69
DLI and DBB region 35 PCB 310
ULEN control statement 341
PCB PROCSEQ= parameter 35 REPL 310
unload
ULU region SYSIN (FABHURG1, user exits)
fallback 142
BYINDEX control statement of EXIT 339
migration 142
HSSROPT 211 FRMT 339
USEGMAX control statement 342
DBD control statement of OFFS 340
user tasks
FABHFSU 76 ULEN 341
Sequential Subset Randomizer 370
SEGSTAT control statement USEGMAX 342
utilities management solutions 15
(FABHFSU) 84 SYSIN (FABHURG1)
SEGSTAT control statement CHECKREC 54
(FABHURG1) 59 DEC 55
sequential randomizer 361, 365 DECN 33, 47, 55, 63, 496 V
Sequential Subset Statistics report 399 DECY 55 VB format 69
service information 16 FALLBACK 56, 148 VN format 69
site default options 349 FRMT 56 VSAM SHAREOPTIONS 123
SKERROR control statement 233 MIGRATE 57, 142 (1,3) 123
SKIPVLC control statement 234 PARTITION 57, 474 (2,3) 123
snaps 514 HALDB 133 (3,3) 123
software requirements 21 PCB 58
Split Unloaded Data Set Statistics SEGSTAT 59
report 389
splitting the unloaded data set 362, 385
HALDB 133
SYSPRINT
W
what's new 4
SPRBA 337 data set 389
wildcard 140, 297
SPRBAFLG 336 FABHTEST 313
SPRBAX4G 336 FABHURG1 61
SS-STATS 364, 367, 395 DD 51
activation 398 DD (FABHTEST) 306
data flow 396 system structure 12
example 402 SYSUDUMP
input 398 DD
JCL 397 FABHPSFC 169
output 399 FABHPSFM 163
routine 396 FABHPSFS 189
SSM= 115 SYSUT1
SSRGEN 367, 375 DD 51
SSSTATS control statement 398 DD (FABHBSIM) 320
subset ID 362 DD (FABHLDBR) 423
Sequential Subset Randomizer 368 SYSUT1 data set (FABHURG1) 51
SUM control statement 191 SYSUT2
summary of changes 4 DD 51
support SYSUT2 data set (FABHURG1) 51
required information 607 SYSUT3
support information 16 DD 51
SYSIN SYSUT3 data set (FABHURG1) 51
data set
default option table 350
FABHLDBR 425
FABHTEST 307
T
technotes 17
FABHURG1 54
terminology 14
DD 51
trademarks 619
DD (FABHLDBR) 423
TRDB control statement 235
DD (FABHTEST) 306
TRDB control statement
SYSIN (FABHLDBR)
(FABHLDBR) 424
IO 426
TRHC control statement 236
LENGTH 426
TRHC control statement
NBR 426
(FABHLDBR) 424
ROOT-ONLY 427
TRL data set 387, 389
SYSIN (FABHTEST)
troubleshooting
GHN 307
tips 513
GHNP 308
TRXC control statement 237
GHNR 308
Printed in USA
SC27-0936-07