PM79558: Various problems in the z/TPFDF C interface segments: (1) dfsrt() and dfmrg() may cause a CTL-3 system error...
Closed as program error.
See Problem Summary.
APAR NUMBER: PM79558 PRODUCT: z/TPFDF FUNCTIONAL AREA: TPFDF C SUPPORT SHIPPED IN PUT: 10 ABSTRACT: Various problems in the z/TPFDF C interface segments: (1) dfsrt() and dfmrg() may cause a CTL-3 system error when the user's keylist resides above the 2-GB line (2) dfsrt() and dfmrg() will overwrite the user's keylist when it resides below the 2-GB line (3) An OPR-4 system error or other unpredictable results may occur when issuing dfdsp() with an opm parameter that resides above the 2-GB line (4) An OPR-DBC070 system error occurs if a dfdel() function is coded with an access specifier and either an ID list or LREC list. PACKAGE CONTENTS: Source Segments: (C) tpfdf/rt/ufgh.asm (C) tpfdf/rt/ufgj.asm (C) tpfdf/rt/ufgp.asm (C) tpfdf/rt/ufgw.asm Object Only Binaries: None. Configuration Independent Binaries: (C) base/stdlib/libCTDF.so (C) base/stdload/CTDF.so (C) tpfdf/obj/ufgh.o (C) tpfdf/obj/ufgj.o (C) tpfdf/obj/ufgp.o (C) tpfdf/obj/ufgw.o Support Files: tpfdf/lst/CTDF.map tpfdf/lst/ufgh.lst tpfdf/lst/ufgj.lst tpfdf/lst/ufgp.lst tpfdf/lst/ufgw.lst OTHER BINARIES TO BUILD: NO None. COMMENTS: (1) The C version of the key item structure (defined in c_sw01sr.h) uses an 8-byte pointer for the search argument while the assembler version (defined in sw01sr.mac), which is what is used by the central database routines, uses a 4-byte pointer. As a result, C interface segments ufgp.asm (dfmrg) and ufgw.asm (dfsrt) must condense 16-byte C-format keylist items to 12-byte ASM-format items. Before this is done, both ufgp.asm and ufgw.asm check to see if the keylist resides above the 2-GB line and if it does, the keylist is copied to storage below the 2-GB line. The copy process potentially truncates 4 extra bytes per key for the 8-byte search addresses. This incomplete keylist is then procesed to build the key instructions, which may result in a CTL-3 system error. (2) Regardless of whether the keylist is copied to local storage or not on the dfsrt() and dfmrg() calls, the keylist is modified in place, meaning that if the keylist was passed below the 2-GB line, the code would overwrite the original keylist with the condensed format. This would work for the first invocation, but the user's keylist would then be destroyed. If the user attempts to re-use the keylist or provide the same, unchanged keylist to a subsequent function, the already converted keylist is converted again with unpredictable results. (3) C interface segment ufgj.asm processes dfdsp() function calls. As part of the processing, ufgj.asm passes the opm parameter (if specified) to DBDSP by using the OPMT=A/INPARMxI notation, which assumes that the opm parameter is located at a 4-byte core address location. However, if an opm parameter resides above the 2-GB line, the address of the parameter is truncated before being passed to the z/TPFDF central database routines. This can result in an OPR-4 system error or using an unpredictable value (like x'0000000000') for the opm parameter. (4) According to the formal z/TPFDF documentation, the dfdel() function is supposed to support specifying an access parameter (ALG, ORG, or FADDR) along with either an ID list or an LREC list. However, the corresponding cases in the dfdel C interface segment, ufgh.asm, were not implemented. As a result, any attempt to use any of these combinations of parameters will result in an OPR-DBC070 system error.
SOLUTION: (1 & 2) Segments ufgp.asm and ufgw.asm are changed to copy the keylist to local storage regardless of whether or not the original keylist resides above the 2-GB bar. This processing is optimized by copying and condensing the keylist in one step and using fewer instructions to move the data. (3) Segment ufgj.asm has been updated to pass the opm parameter (if specified) to DBDSP by using the OPMT=0(Rx) notation, which uses the entire 8-byte address in the base register. (4) Segment ufgh.asm has been updated to add the missing cases. COREQS: NO None. MIGRATION CONSIDERATIONS: NO None. BUILD COMMANDS AND INSTRUCTIONS: YES #maketpf commands for linux maketpf -f CTDF ufgh.o ufgj.o ufgp.o ufgw.o maketpf CTDF link TPF_VERIFY_LINK_REFS=NO maketpf CTDF link UPDATED INFORMATION UNITS: YES z/TPFDF Programming Concepts and Reference See your IBM representative if you need additional information. DOWNLOAD INSTRUCTIONS: http://www.ibm.com/software/htp/tpf/maint/maintztpf.html APAR URL: http://www.ibm.com/software/htp/tpf/ztpfmaint/put10/PM79558.htm
Reported component name
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
Fixed component ID
Applicable component levels