A fix is available
APAR status
Closed as program error.
Error description
The RSA returned by ISRT DL1 calls on a GSAM file are incorrect except for the first record. The RSA returned is the RSA of the previous record, not the RSA of the currently inserted record. The sequence of RSA returned corresponding to the sequence of ISRT calls are the following for a file with a fixed length of 19000 (2 records by track): Fisrt ISRT, RSA : 0000000101010000 2nd ISRT, RSA : 0000000101010000 3rd ISRT, RSA : 0000000201010000 4th ISRT, RSA : 0000010101010000 The problem comes from DFSZD210 where on the 1st ISRT, LKREF is set to 0001 even if NOTE returns 0000.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All IMS V10 users of GSAM. * **************************************************************** * PROBLEM DESCRIPTION: Two problems are being fixed in this * * APAR: * * * * 1. Incorrect RSA (Record Search * * Argument) values are returned to * * the Key Feedback Area during insert * * (ISRT) processing of GSAM records * * that span to the next block. * * * * 2. Customers encountered MSGASMA044E * * undefined symbol when assembling * * DFSZD110. * **************************************************************** * RECOMMENDATION: INSTALL CORRECTIVE SERVICE FOR APAR/PTF * **************************************************************** Insert calls to a GSAM Data Base contain invalid RSA values in the DBPCB Key Feedback Area. This occurs because the zone bit in the RSA was removed in IMS V10. The RSA format was changed from TTRZ to TTTR to accommodate large format data sets greater than 64,000 tracks. The zone bit was replaced with a zone flag, GBZFLAG, which is enabled internally in the IMS GSAM code when the current record spans blocks. This issue was detected when a GSAM Data Base was defined as one record per block. The first record was in the first block and all subsequent records spanned into other blocks thus enabling the zone flag, GBZFLAG. However, since the zone bit no longer exists in the RSA, the RSA values returned in the DBPCB Key Feedback Area did not accurately represent the exact location of the GSAM record on DASD. When the RSA values were used for Get Unique (GU) calls incorrect GSAM records will be returned. Also, after a CLSE (Close) call, all insert calls that span blocks will contain a DBPCB Key Feedback Area with invalid RSA values. This occurs because GBZFLAG is not reset during a CLSE call in module DFSZD110. As for the second problem the customer could not assemble DFSZD110 when they applied a fixtest/aparfix due to missing macros IEZCTGPL and IEZCTGFL. Beginning with DFSMS 1.5, those macros were provided on the optional source tape only. The customers did not have the macros in their library.
Problem conclusion
GEN: POSTREQ PM15152 KEYWORDS: *** END IMS KEYWORDS *** DOCUMENTATION CHANGE FOR APAR PK90294 THIS MAINTENANCE IS BEING HELD SO YOU WILL BE AWARE OF DOCUMENTATION CHANGE TO MANUAL(S): GC18970701 SC18969801 - THE FOLLOWING TEXT DESCRIBES THE DOC CHANGE: - * IMS Version 10 Diagnosis Reference (GC18970701) -Under Section entitled: GSAM control block dump-DFSZD510 Sub-Section entitled: Converting an SMS-managed, non-striped data set to a striped data set --The 3rd paragraph, second to last sentence, update: ... but also having a different relative track and record (TTRZ or TTTRZ for large format data sets) . --The 4th paragraph, first sentence, update: Migration from GSAM/BSAM non-striped data sets, which use TTRZ (or TTTRZ for large format data sets) for repositioning, ... --Update #3 in the list entitled: "To convert to an SMS-managed, non-striped data set to a striped data set:" 3. When using DFSMS striped data sets, the restriction regarding maintaining the same number of records on the copied from and copied to volumes does not apply because with striped data sets, GSAM uses the RBN for NOTE/POINT, not the TTRZ (or TTTRZ for large format data sets) . * IMS Version 10 Application Programming Guide (SC18969801) -Section entitled: Accessing GSAM databases --In "Table 15. GSAM DB PCB mask" --Update column 2 "Byte length", row 10 "Key feedback area" as follows: Descriptor Byte length Key feedback area 8 or 12 for large data sets --In the Notes: section after table 15 update 7. and 9.: 7. Length of Key Feedback Area and Undefined-Length Records Area. This is a 4-byte field that contains the decimal value of 12 (or 16 for large format data sets) . This is the sum of the lengths of the Key Feedback Area and Undefined-Length Record area. -- Update 9. last sentence as follows: This field is 8 bytes for basic format data sets or 12 bytes for large format data sets. --Update Under Sub-Section: Retrieving and Inserting GSAM --Second paragraph, last sentence: For BSAM disk data sets, the RSA contains the disk address and uses the relative track and record (TTRZ or TTTRZ for large format data sets) format. --Rename table 16 to 16a. and rename the title of the table to: "Table 16a. Format of the RSA (for basic format data sets)" --Update table 16a., column 2 "Address", row 1 "Positions 1-4", 1st bullet as follows: Positions 1-4 * BSAM (DASD) relative track and record (TTRZ) for the block in the buffer. -- Add a new table (Table 16b.) as follows after table 16a. Table 16b. Format of the RSA (for large format data sets) Position Address Positions 1-4 * BSAM (DASD) relative track and record (TTTR) for the block in the buffer. * BSAM RBA. Position 5 Zone byte Position 6 Relative data set of the concatenated data set. The first data set number is 1. Position 7 Relative volume of the data set. The first volume of data set is 1. Position 8-10 Null bytes. Not used. Positions 11 Current displacement. and 12 --Update Under Sub-section: Resetting the Position in a GSAM Database --Update the 1st bullet to the following: * To reset the position to the start of the GSAM database using basic format data sets, issue a GU call with an RSA that consists of a fullword with a binary value of 1, followed by a fullword with a binary value of 0. --Add a new bullet after the 1st bullet to the following: * To reset the position to the start of the GSAM database using large format data sets, issue a GU call with an RSA that consists of a fullword with a binary value of 1, followed by 2 fullwords with a binary value of 0. -Section: Origin of GSAM data set characteristics Sub-section: Copying GSAM Data Sets Between Checkpoint and Restart --Update the 1st paragraph, sentences 1 and 2 To position GSAM data sets when restarting non-striped GSAM DASD data sets use the relative track and record format (TTRZ or TTTRZ for large format data sets) . GSAM uses TTRZ or TTTRZ on the volume to position non-striped GSAM DASD data sets when restarting. For a tape data set, ... --Make a change to the last sentence in the Note: paragraph. After the data set is copied, unlike with non-striped DASD data sets, you do not need to ensure that the restart record's TTRZ or TTTRZ is unchanged. -Sub-section: Converting Data Sets From Non-Striped Data Sets to Striped Data Sets --Update the 3rd paragraph, last sentence Because the issued checkpoint saved a TTRZ or TTTRZ value in the log record for repositioning, the log record for striped data sets will be used by GSAM restart after failure, which requires a relative block number (RBN) to perform the repositioning. -Section: "Data areas in GSAM databases" (3rd paragraph) update: The RSA (record search argument) is an 8-byte token for basic format data sets or 12-byte token for large format data sets that can be returned on GN and ISRT calls. Code Changes: ********************************************************* * DBFDLB00 DFSADLR0 DFSAPSB0 DFSBIND0 DFSERA20 DFSPCC30 * * DFSDLB00 - DFSDLB80 * ********************************************************* Modules DBFDLB00, DFSADLR0, DFSAPSB0, DFSBIND0, DFSERA20, DFSPCC30, DFSDLB00, DFSDLB10, DFSDLB20, DFSDLB30, DFSDLB40, DFSDLB50, DFSDLB60, DFSDLB70, and DFSDLB80 were recompiled to include the change to the IDLI macro. * DFSDDLS3 * The declaration of RSA1-RSA4 has been changed from 8 bytes to 12 bytes. * DFSDDLS5 * Code was added to module DFSDDLS5 in routine PR@CALL to print the last 4 bytes of a 12 byte RSA value in the SEG= field when DSNTYPE=LARGE is specified. When the key feedback size is equal to 16 bytes this indicates that DSNTYPE=LARGE was specified and the RSA format is 12 bytes. The last 2 bytes of the additional 4 bytes contains the displacement value in the RSA for variable length GSAM records during get unique calls. * DFSIPSB DFSIPSBA * Macros DFSIPSB and DFSIPSBA have been changed in PBPCB DSECT to increase the size of the GSAM key feedback area, and RSA area. PBPCBGFD is increased to 16 bytes and PBPCBRRA is increased to 12 bytes. * DFSZDC00 * Code has been added to module DFSZDC00 in the OPENED routine to parse the input RSA to either a 8 byte RSA or a 12 byte RSA for GU calls. An 8 byte RSA is used when GB64KTRK is not enabled. An 12 byte RSA is used when GB64KTRK is enabled. * DFSZDI00 DFSZDI20 * Modules DFSZDI00 and DFSZDI20 were recompiled to include the changes to IDLI and IGLI macros. * DFSZDI30 * Code has been added to module DFSZDI30 after the OBTAIN of the Format 1-DSCB after label INST0200 to determine if DSNTYPE=LARGE, DS1LARGE, is specified on the GSAM data set. If it has been specified then GB64KTRK flag is enabled and BLOCKTOKENSIZE=LARGE, DCBELARGE, is not disabled. However, if DSNTYPE=LARGE is not specified then GB64KTRK flag will not be enabled and DCBELARGE flag will be disabled. * DFSZD110 * Code has been added to module DFSZD110 after label NOTR05 to reset GBZFLAG and GB64KTRK flags during a CLSE call. For the second problem, implemented CAMLST macro to generate the parameter list for SVC 26 call to locate the catalog of a GSAM/BSAM data set. Message MSGASMA044E undefined symbol when assembling is resolved with this fix. This is a forward fit of APAR PK43207. * DFSZD150 DFSZD250 DFSZSR00 * Modules DFSZD150, DFSZD250 and DFSZSR00 are recompiled to include the changes to IGLI macro. * DFSZD210 * Code has been added to module DFSZD210 to check if GB64KTRK, DSNTYPE=LARGE, is set. If set then process the RSA as TTTRZ. Otherwise, process the RSA as TTRZ. Code in routine MOVDATA after label MOVD0850 has been added for GN and ISRT calls to parse the RSA and key feedback for Fixed, Variable, and Undefined record lengths. The RSA and Key feedback have been changed to the following formats: * DSNTYPE=LARGE NOT specified: (<64K TRACK Data Sets) ===================================================== - RSA format: (8 bytes) FORMAT: T T R Z DS VL DISP BYTES: | 4 | 1 | 1 | 2 | - Key feedback area format: (12 bytes) FORMAT: T T R Z DS VL DISP UNDEF LEN BYTES: | 4 | 1 | 1 | 2 | 4 | * DSNTYPE=LARGE specified: (>64K TRACK Data Sets) ================================================= - RSA format: (12 bytes) FORMAT: T T T R Z DS VL NULL DISP BYTES: | 5 | 1 | 1 | 3 | 2 | - Key feedback area format: (16 bytes) FORMAT: T T T R Z DS VL NULL DISP UNDEF LEN BYTES: | 5 | 1 | 1 | 3 | 2 | 4 | * DFSZD310 * Code was added to module DFSZD310 after label NOTR11 to do a POINT call with TYPE=RELNEXT if GBZFLAG and GBDASD are enabled. * DFSZD510 * Code was added to module DFSZD510 to add GPTDSCB to the GPT dump formatter. GPTDSCB is a pointer to the format 1-DSCB which is added in macro IGLI. * DFSZSC00 * Code was added to module DFSZSC00 after label DBPCBRT5 to check if GB64KTRK is enabled. If not then skip code to test and set GBZFLAG into XGBZFLAG. * DFSZSR10 * Code was added to module DFSZSR10 after label GSPCB200 to check if GB64KTRK is enabled. If not then skip code to test and set GBZFLAG into XGBZFLAG and set '01'x in XGBLKREF. If GB64KTRK is enabled then check if GBZFLAG is set in XGBZFLAG. If not then set GBZFLAG in XGBZFLAG to indicate the record is in the next block. * IDLI and DFSPCBS * Macros IDLI and DFSPCBS have been changed in DBPCB DSECT to increase the size of the GSAM key feedback area, and RSA area for large format data sets. DBPCBGFD is increased to 16 bytes and DBPCBRRA is increased to 12 bytes. Two new declarations were added. DBPCBR12 is defined as 8 bytes and is used for the RSA area when basic format data sets are used. DBPCBU12 is defined as 4 bytes and is used as the undefined length area in the key feedback area when basic format data sets are used. * IGLI * A flag was added in IGLI macro in the GB DSECT. Flag, GB64KTRK, represents the case where the GSAM data set is defined with DSNTYPE=LARGE. GPTDSCB has been defined in the GPT DSECT as a pointer to the Format 1-DSCB.
Temporary fix
********* * HIPER * *********
Comments
REPINNED RP10/05/24 (ATXT) TO ADD POSTREQ PM15152 INFO. **** PE10/05/24 PTF IN ERROR. SEE APAR PM15152 FOR DESCRIPTION ×**** PE10/05/24 FIX IN ERROR. SEE APAR PM15152 FOR DESCRIPTION
APAR Information
APAR number
PK90294
Reported component name
IMS V10
Reported component ID
5635A0100
Reported release
010
Status
CLOSED PER
PE
NoPE
HIPER
YesHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2009-07-01
Closed date
2010-04-16
Last modified date
2010-06-25
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
PK94661 UK56158
Modules/Macros
DBFDLB00 DFSADLR0 DFSAPSB0 DFSBIND0 DFSDDLS3 DFSDDLS5 DFSDLB00 DFSDLB10 DFSDLB20 DFSDLB30 DFSDLB40 DFSDLB50 DFSDLB60 DFSDLB70 DFSDLB80 DFSERA20 DFSIPSB DFSIPSBA DFSPCBS DFSPCC30 DFSZDC00 DFSZDI00 DFSZDI20 DFSZDI30 DFSZD110 DFSZD150 DFSZD210 DFSZD250 DFSZD310 DFSZD510 DFSZSC00 DFSZSR00 DFSZSR10 IDLI IGLI
| SC18969801 | GC18970701 |
Fix information
Fixed component name
IMS V10
Fixed component ID
5635A0100
Applicable component levels
R010 PSY UK56158
UP10/04/22 P F004
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.1","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCVRBJ","label":"System Services"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.1","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
25 June 2010