IBM Support

PI12013: VARIOUS ABENDS AFTER STATUSGE ON HALDB WITH LP / LC PID MISMATCH

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Several different errors have been reported for this problem
    during DLET/REPL calls:
    ABENDU0808
    ABENDU0797
    ABENDU0852
    ABENDU3498
    ABENDU0806
    ABENDU3923
    STATUSDA
    .
    The window that allows these errors to occur involves the
    following conditions:
    -  HALDB
    -  REPL call  (or REPL call preceding an ISRT for same PCB)
    -  Last GET call preceding the REPL returned a STATUSGE
    -  Two or more databases with Logical Relationships
    -  Different block sizes and number of partitions in LC/LP
    .
    Details: logic in DFSDLA00 routines DLETREPL, DLETRPL2, and
    DLETRPL3 can select and pass conflicting partition
    information to DFSPSEL FUNC=NAMED. In customer's case,
    DSGPID values can reference partitions in the LP database
    while LEVSEGOF values can reference partitions in the LC.
    Comparisons made using  "CLC   DSGPID-DSG(2,R4),LEVSEGOF
    SAME PARTITION? "  will lead to incorrect outcomes.
    PID information passed to DFSPSEL TYPE=NAMED can result in
    a U3498 (LEVSEGOF PID value too high), or selection of the
    wrong partition in the wrong database (the other abends).
    .
    In the U3498 case, the flow showed LC partition PID=16 from
    LEVSEGOF and LP partition DSGPID=01 were passed to the
    DFSPSEL0 FUNC=NAMED routine. Since PID=16 for the LC DB
    partition was greater than the maximum PID=10 in the LP DB,
    the U3498 was issued.
    .
    In the U3923 case, the flow showed LC partition PID=01 from
    LEVSEGOF and LP partition DSGPID=08 were passed to the
    DFSPSEL0 FUNC=NAMED routine. Since PID=01 for the LC DB
    partition matched PID=01 in the LP DB, the LP PID=01 AMP,
    DMBNO, PID, and REORG info were stored in the DSG for LC,
    thereby overwriting the data already there.
    .
    The flows through DFSDLA00 and DFSPSEL0 for the U0797, U0806,
    U0852, and STATUSDA are similar to the U3923.  However,
    instead of returning to DFSDLA00 to issue the U3498, these
    other flows pass control to DLET/REPL module DFSDLDC0 for
    processing, using the incorrect database positioning.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All IMS V12 using HALDBs with logical        *
    *                 relationships issuing a REPL call after a    *
    *                 GHU path call using command code D.          *
    ****************************************************************
    * PROBLEM DESCRIPTION: A GHU path call using command code D    *
    *                      against a logically related HALDB       *
    *                      receives a status GE.  The next call is *
    *                      a replace ( REPL ) call which receives  *
    *                      any one of the following abends:        *
    *                      ABENDU0797, ABENDU0806, ABENDU0808,     *
    *                      ABENDU0852, ABENDU3498, or STATUSDA.    *
    ****************************************************************
    * RECOMMENDATION: INSTALL CORRECTIVE SERVICE FOR APAR/PTF      *
    ****************************************************************
    During a replace call abends U0797, U0806, U0808, U0852, U3498,
    or DA status code can occur.  Prior to the replace call a GU
    call is issued against a logically related HALDB.  The GU call
    is a path call with command code D qualified at the root level
    down to the fourth level segment.  The fourth level segment is
    qualified with command code N. The second level segment is a
    Bidirectional Physically Paired logical child paired with the
    ( logical parent ) physical root segment in HALDB "B".  During
    retrieve processing of a GU call module DFSDLR00 routine
    THISLVOK calls routine MVSEGUSE to return each segment in the
    path call for a command code D call.  When the call is a GU call
    routine FNDLPNQ will not be called and logical parent
    positioning does not occur.  As a result the DSG in register 8
    upon return from routine MVSEGUSE will be the DSG for HALDB "A".
    This DSG is used to store the partition id ( DSGPID ) into
    LEVSEGOF after label TLKB in routine THISLVOK.
    *
    The subsequent call is a GHU path call using command code D
    similar to the GU call.  With existing position set from the
    prior GU call and LEVSEGOF is equal to the partition id from
    HALDB "A", routine LTW is called to process the GHU path call.
    During retrieve processing routine LTW calls routine MVSEGUSE
    after label LTW2000 to return each segment in the path call with
    command code D. Since the call is a GHU routine FNDLPNQ is
    called and logical parent positioning will occur.  A GE status
    code ( STATUSGE ) is returned at the fourth level segment using
    command code N. Levels 1 thru 3 are retrieved successfully
    including the physically paired logical child segment.  After
    the logical child segment is retrieved the partition id in
    DSGPID is equal to the current partition id in HALDB "B" and the
    partition id in LEVSEGOF is not current.
    *
    The next call is a replace call.  During replace processing
    module DFSDLA00 after label DLETREPL will select a partition
    based upon the value in LEVSEGOF compared with the value in
    DSGPID.  When these values differ after label DLETRPL3 partition
    selection is called with function DFSPSEL PART=NAMED TYPE=PID.
    With the residual partition id in LEVSEGOF the wrong partition
    will be selected.  Depending on the number of partitions in
    HALDB "B" unpredictable results can occur.  If the residual
    partition id in LEVSEGOF is equal to or less than the maximum
    number of partitions in HALDB "B" then partition selection
    will be successful.  In this case the wrong partition can be
    selected and the replace call can terminate with a ABENDU0797,
    ABENDU0806, ABENDU0808, ABENDU0852, or STATUSDA.  If the
    residual partition id in LEVSEGOF is larger than the maximum
    number of partitions in HALDB "B" then partition selection will
    terminate with ABENDU3498.
    

Problem conclusion

  • GEN:
    KEYWORDS:
    
    *** END IMS KEYWORDS ***
    
    ************
    * DFSDLR00 *
    ************
    
    Code is modified in module DFSDLR00 after label TLKB in routine
    THISLVOK to store the current partition ID into LEVSEGOF after
    label TLKA when returning from routine MVSEGUSE.  Code has been
    added to routine LTW after label LTW100 to initialize LEVSEGOF
    and set LEVSEGOF after label LTW2000 when returning from
    MVSEGUSE.
    

Temporary fix

  • *********
    * HIPER *
    *********
    

Comments

APAR Information

  • APAR number

    PI12013

  • Reported component name

    IMS V12

  • Reported component ID

    5635A0300

  • Reported release

    201

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2014-02-18

  • Closed date

    2014-03-13

  • Last modified date

    2014-04-02

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    PI12514 UI16004

Modules/Macros

  •    DFSDLR00
    

Fix information

  • Fixed component name

    IMS V12

  • Fixed component ID

    5635A0300

Applicable component levels

  • R201 PSY UI16004

       UP14/03/15 P F403 Ž

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"},"Platform":[{"code":"PF054","label":"z Systems"}],"Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
14 December 2020