Some recent and not so recent Db2 for z/OS announcements regarding simple and segmented table spaces have brought up some concerns and questions for QMF for TSO/CICS users of the “SAVE DATA”, “IMPORT TABLE” and “RUN QUERY” commands.
For many years, it has been known that simple and segmented table space types are deprecated. Db2 has encouraged usage of universal table spaces (UTS). This statement can be found in the following IBM Knowledge Center link:
The more recent Db2 for z/OS announcement regarding function level (FL) 504, enables applications bound at APPLCOMPAT(V12R1M504) or higher to prevent creation of segmented table spaces and any new tables within existing simple or segmented table spaces. For complete details involving FL 504, please see the following links:
- IBM Knowledge Center: https://www.ibm.com/support/knowledgecenter/SSEPEK_12.0.0/wnew/src/tpc/db2z_fl_v12r1m504.html
- Db2 Blog: "Announcing FL 504": https://ibm.biz/Bd2CwL
- Db2 Blog: "You can prevent creation of new deprecated objects...": https://ibm.biz/Bd2CwC
This blog entry will address concerns and questions raised by QMF for TSO/CICS users regarding the above announcements as they pertain to the “SAVE DATA”, “IMPORT TABLE” and “RUN QUERY” commands. If this blog entry does not answer questions particular to your site, please feel free to comment on this blog entry or send email to Robin Zalud at firstname.lastname@example.org.
1) How does the deprecation of simple and segmented table spaces and the FL 504 announcement impact the QMF for TSO/CICS “SAVE DATA” command?
Over the last few releases, Db2 had announced deprecation of both segmented and simple table spaces. What made simple and segmented table spaces unique was that they both allowed the creation of many tables within the table space.
The QMF “SAVE DATA” command has traditionally used these table space types to store user’s tables. The original default QMF model for “SAVE DATA” was usage of a simple table space. When simple table spaces were no longer able to be created, QMF began creating segmented table spaces as default storage for “SAVE DATA” tables. Many QMF users still use simple and segmented table spaces for their “SAVE DATA” function.
The FL 504 announcement states that applications bound at APPLCOMPAT(V12R1M504) or higher will not be able to create new segmented table spaces and not create new tables in existing simple or segmented table spaces. Note that only packages bound at APPLCOMPAT(V12R1M504) are affected by this change.
For QMF for TSO/CICS users who have existing simple or segmented table spaces and want to continue to use the “SAVE DATA” command to continue to create new tables, if you have not modified the default QMF bind options, “SAVE DATA” will continue to function as always. The default bind option for the QMF programs involved with “SAVE DATA” is APPLCOMPAT(V11R1).
For QMF for TSO/CICS users that require usage of segmented table spaces and need to create new ones, they should be mindful to create new segmented table spaces using an application bound at APPLCOMPAT(V12R1M503) or lower. If using the QMF for TSO/CICS sample installation jobs to create a segmented table space, be sure the QMF installation programs bound in job QMFvrm.SDSQSAPE(DSQ1BSQL) have the proper APPLCOMPAT bind option. Then, you can run a job similar to the sample job to create the sample segmented table space in QMFvrm.SDSQSAPE(DSQ1STGJ). If using QMF for TSO/CICS itself to issue a CREATE TABLESPACE statement to create a segmented table space, be sure to set the CURRENT APPLICATION COMPATIBILITY special register to V12R1M503 or lower.
If you would like to consider migrating your “SAVE DATA” users to UTS, please read on!
2) I have been using simple or segmented table spaces for “SAVE DATA” for many years, aren’t these the required table space types for “SAVE DATA” in QMF?
Although QMF for TSO/CICS has historically created a default data base and simple or segmented table space called “DSQDBDEF”.”DSQTSDEF” to hold user’s “SAVE DATA” tables, it is not required that these table space types be used.
QMF for TSO/CICS “SAVE DATA” will work perfectly fine with existing or implicit UTS.
3) How can I use UTS for my “SAVE DATA” tables?
QMF for TSO/CICS “SAVE DATA” determines the database and/or table space information needed for “SAVE DATA” tables from the user's Q.PROFILES.SPACE profile row or the SPACE keyword on the SAVE command.
The Q.PROFILES.SPACE row and the SPACE keyword on the SAVE command accept the following options:
1. databasename.tablespacename - Specify both an existing database and existing table space to have QMF save the table in.
2. DATABASE "databasename" - When you specify the DATABASE keyword followed by a database name in quotes, each table is created in a separate table space that is created implicitly by Db2. In Db2 11 and higher, this is a UTS table space.
3. NULL or blank - When you specify NULL or blank, Db2 will create each table in an implicitly created database and implicitly created table space. In Db2 11 and higher, this is a UTS table space.
As UTS table spaces hold only one table per table space, the more usable option for QMF “SAVE DATA” users is to use option 2 or 3 and have Db2 create implicit UTS tablespaces for your users. Using option 1, requires QMF users to explicitly create a UTS table space prior to each QMF “SAVE DATA” command. QMF recommends using implicitly created UTS for “SAVE DATA” tables.
It is recommended that QMF Administrators review their users QMF profile SPACE (Q.PROFILES.SPACE) options to determine if table space names are used and update them appropriately using option 2 or 3 above.
4) What other QMF commands should I be looking at in regards to segmented and simple table space usage?
This topic also affects the “IMPORT TABLE” command and the “RUN QUERY” command when the TABLE keyword is used. The “SAVE DATA”, “IMPORT TABLE” and “RUN QUERY” commands all create Db2 tables in data bases and table spaces specified in the SPACE option of the users QMF profile. Use the same general approach as in Question 3 above to start using UTS table spaces in those commands.
If you are looking for information on QMF for TSO/CICS catalog and control table information in regards to UTS, please reference technote:
If you have concerns on Db2 definitions for implicit UTS, please read (and vote) on existing Db2 idea:
QMF profile SPACE documentation link: