PM77843: DBCLS WITH RELFC

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

APAR status

  • Closed as program error.

Error description

  • See Problem Summary.
    

Local fix

  • na
    

Problem summary

  • APAR NUMBER:  PM77843
    PRODUCT:  z/TPFDF
    FUNCTIONAL AREA:  TPFDF CENTRAL DATABASE ROUTINES
    SHIPPED IN PUT:  10
    
    ABSTRACT:
    The accuracy of several z/TPF macro counts in z/TPFDF data
    collection could be improved.
    
    PACKAGE CONTENTS:
    Source Segments:
    (C) tpfdf/include/i_btcod.c
    (C) tpfdf/include/i_dfdc.h
    (N) tpfdf/macro/dfdcol.mac
    (C) tpfdf/macro/dflnk.mac
    (C) tpfdf/macro/ifl0df.mac
    (C) tpfdf/rt/uaa0.asm
    (C) tpfdf/rt/uab0.asm
    (C) tpfdf/rt/uac0.asm
    (C) tpfdf/rt/uad0.asm
    (C) tpfdf/rt/uae0.asm
    (C) tpfdf/rt/uaf0.asm
    (C) tpfdf/rt/uag0.asm
    (C) tpfdf/rt/uah0.asm
    (C) tpfdf/rt/uai0.asm
    (C) tpfdf/rt/uaj0.asm
    (C) tpfdf/rt/ual0.asm
    (C) tpfdf/rt/uam0.asm
    (C) tpfdf/rt/uan0.asm
    (C) tpfdf/rt/uap0.asm
    (C) tpfdf/rt/uaq0.asm
    (C) tpfdf/rt/uar0.asm
    (C) tpfdf/rt/uas0.asm
    (C) tpfdf/rt/uat0.asm
    (C) tpfdf/rt/uau0.asm
    (C) tpfdf/rt/uav0.asm
    (C) tpfdf/rt/uaw0.asm
    (C) tpfdf/rt/uax0.asm
    (C) tpfdf/rt/uay0.asm
    (C) tpfdf/rt/ub00.asm
    (C) tpfdf/rt/ub10.asm
    (C) tpfdf/rt/ub20.asm
    (C) tpfdf/rt/ub30.asm
    (C) tpfdf/rt/ub40.asm
    (C) tpfdf/rt/ub50.asm
    (C) tpfdf/rt/ub60.asm
    (C) tpfdf/rt/ub80.asm
    (C) tpfdf/rt/ub90.asm
    (C) tpfdf/rt/ubc0.asm
    (C) tpfdf/rt/ube0.asm
    (C) tpfdf/rt/ubf0.asm
    (C) tpfdf/rt/ubg0.asm
    (C) tpfdf/rt/ubi0.asm
    (C) tpfdf/rt/ubl0.asm
    (C) tpfdf/rt/ubm0.asm
    (C) tpfdf/rt/ubn0.asm
    (C) tpfdf/rt/ubo0.asm
    (C) tpfdf/rt/ubp0.asm
    (C) tpfdf/rt/ubq0.asm
    (C) tpfdf/rt/ufao.asm
    (C) tpfdf/rt/ufe3.asm
    (C) tpfdf/rt/ufec.asm
    (C) tpfdf/rt/ufka00.cpp
    (C) tpfdf/rt/ufka01.cpp
    (C) tpfdf/rt/ufka02.cpp
    (C) tpfdf/rt/ufka03.cpp
    (C) tpfdf/rt/ufka04.cpp
    (C) tpfdf/rt/uft1.cpp
    (C) tpfdf/rt/uft5.cpp
    (C) tpfdf/rt/uft6.cpp
    (C) tpfdf/rt/uft7.cpp
    (C) tpfdf/rt/ufta.cpp
    (C) tpfdf/rt/uftb.cpp
    (C) tpfdf/rt/uftg.cpp
    (C) tpfdf/rt/ufth.cpp
    (C) tpfdf/rt/uftk.cpp
    
    Object Only Binaries:
    None.
    
    Configuration Independent Binaries:
    None.
    
    Support Files:
    None.
    
    OTHER BINARIES TO BUILD: YES
    (C) <sys>/lib/libUTDF.so
    (C) <sys>/load/UFAO.so
    (C) <sys>/load/UFE3.so
    (C) <sys>/load/UFEC.so
    (C) <sys>/load/UFKA.so
    (C) <sys>/load/UFTH.so
    (C) <sys>/load/UTDF.so
    (C) <sys>/obj/uaa0.o
    (C) <sys>/obj/uab0.o
    (C) <sys>/obj/uac0.o
    (C) <sys>/obj/uad0.o
    (C) <sys>/obj/uae0.o
    (C) <sys>/obj/uaf0.o
    (C) <sys>/obj/uag0.o
    (C) <sys>/obj/uah0.o
    (C) <sys>/obj/uai0.o
    (C) <sys>/obj/uaj0.o
    (C) <sys>/obj/ual0.o
    (C) <sys>/obj/uam0.o
    (C) <sys>/obj/uan0.o
    (C) <sys>/obj/uap0.o
    (C) <sys>/obj/uaq0.o
    (C) <sys>/obj/uar0.o
    (C) <sys>/obj/uas0.o
    (C) <sys>/obj/uat0.o
    (C) <sys>/obj/uau0.o
    (C) <sys>/obj/uav0.o
    (C) <sys>/obj/uaw0.o
    (C) <sys>/obj/uax0.o
    (C) <sys>/obj/uay0.o
    (C) <sys>/obj/ub00.o
    (C) <sys>/obj/ub10.o
    (C) <sys>/obj/ub20.o
    (C) <sys>/obj/ub30.o
    (C) <sys>/obj/ub40.o
    (C) <sys>/obj/ub50.o
    (C) <sys>/obj/ub60.o
    (C) <sys>/obj/ub80.o
    (C) <sys>/obj/ub90.o
    (C) <sys>/obj/ubc0.o
    (C) <sys>/obj/ube0.o
    (C) <sys>/obj/ubf0.o
    (C) <sys>/obj/ubg0.o
    (C) <sys>/obj/ubi0.o
    (C) <sys>/obj/ubl0.o
    (C) <sys>/obj/ubm0.o
    (C) <sys>/obj/ubn0.o
    (C) <sys>/obj/ubo0.o
    (C) <sys>/obj/ubp0.o
    (C) <sys>/obj/ubq0.o
    (C) <sys>/obj/ufao.o
    (C) <sys>/obj/ufe3.o
    (C) <sys>/obj/ufec.o
    (C) <sys>/obj/ufka00.o
    (C) <sys>/obj/ufka01.o
    (C) <sys>/obj/ufka02.o
    (C) <sys>/obj/ufka03.o
    (C) <sys>/obj/ufka04.o
    (C) <sys>/obj/uft1.o
    (C) <sys>/obj/uft5.o
    (C) <sys>/obj/uft6.o
    (C) <sys>/obj/uft7.o
    (C) <sys>/obj/ufta.o
    (C) <sys>/obj/uftb.o
    (C) <sys>/obj/uftg.o
    (C) <sys>/obj/ufth.o
    (C) <sys>/obj/uftk.o
    
    COMMENTS:
    z/TPFDF data collection counters were originally designed to
    track the calls to specific z/TPFDF central database routines.
    Each of these routines had a specific task, such as obtaining a
    core block or releasing a record. These counts generally
    reflected the number of calls to z/TPF macros, such as GETCC
    and RELFC. However, this approach results in several
    inaccuracies. For example, when a DBDEL ALL,NOKEY or DBCLS
    RELFC is issued in the application while z/TPFDF data
    collection is running, the DFLNK START macro at the beginning
    of the central database routine that releases the records and
    forward chains increases the RELFC count by one, but multiple
    RELFC calls will potentially be made in the routine. Similarly,
    many other z/TPF macro calls within the central database
    routines are not counted, or the data collection counters are
    unconditionally updated when a routine is called even though
    the actual macro was conditionally skipped in the routine.
    
    In addition, all data collection rates (per second) reported
    are approximately 5% higher than the actual values. This is
    because the data collection routines use the leftmost fullword
    of the TOD clock value for the start and stop time to calculate
    the run time. In reality, 1.048576 seconds has passed for every
    second counted. For example, if data collection runs for
    exactly 5 minutes, the internal routines will calculate the
    runtime as 286 seconds instead of 300 seconds. This inaccuracy
    results in the data collection "per second" rates being about
    5% too high. Even though this discrepancy is consistent across
    all rates, the numbers reported should be accurate.
    

Problem conclusion

  • SOLUTION:
    The following changes are made to ensure the validity of the
    z/TPFDF data collection counts:
    
    1) Macro dfdcol.mac was created to allow updating one or more
    z/TPFDF data collection from counts anywhere in the z/TPFDF
    central database routines.
    
    2) Macro ifl0df.mac was updated to change the z/TPFDF data
    collection equates from case-releated equates to
    self-explanatory names.
    
    3) Header i_dfdc.h was updated to add and change defines for
    z/TPFDF data collection count fields to match ifl0df.mac and to
    modify the datacollection_multiple() macro to process up to 3
    data collection counts at once.
    
    4) Macro dflnk.mac was adjusted to allow the same equate to be
    used on more than one DFLNK START call in the same segment.
    
    5) All central database routines (ua*.asm and ub*.asm segments)
    were updated as follows:
    
     a) All case-related data collection equates in the DFLNK START
    macro were replaced with the new command/macro-related equates
    (for example, COLLECT=#UAA1 is replaced with
    COLLECT=#DFDC_DBADD).
    
     b) A call to the new DFDCOL macro was inserted whenever one of
    the following macros is issued to increment the z/TPFDF data
    collection count for that macro (if z/TPFDF data collection is
    active): ATTAC, DETAC, GETCC, RELCC, GETFC, RELFC, FINWC,
    FIWHC, FILEC, FILUC, FILNC
    
     c) In segments uam0.asm, uas0.asm, uaw0.asm, ub00.asm,
    ub20.asm, ub60.asm, ub80.asm, ub90.asm, and ubf0.asm, all
    occurrences of CRUSA macros were replaced with a
    LEVTA/RELCC/DFDCOL sequence to ensure the validity of the
    z/TPFDF data collection counts. In segment ub50.asm, some of
    the collection hooks are removed from DFLNK START and moved to
    the correct place within the code to ensure the validity of the
    count as these macros are issued conditionally.
    
     d) Segments ub10.asm and ub20.asm were optimized by
    accumulating the count for some macro calls that are issued in
    a loop and updating the respective z/TPFDF data collection
    counts only once at the end of the loop.
    
     e) Code cleanup was done in segments ubc0.asm, ube0.asm and
    ubi0.asm to move back to the main path some macro calls that
    were unnecessarily moved to and then issued from SW00SR
    (SW00IN1), which saves several instructions. A similar change
    was made in ub50.asm for a FINWC macro that was unnecessarily
    issued at the end of the segment. Furthermore, segment ub40.asm
    was updated to remove superfluous GETFC prototype instructions
    that were unnecessarily moved to SW00SR (SW00IN1) but never
    issued from there.
    
    6) C language segments that handle B+tree (uft*.cpp, i_btcod.c)
    and large logical record (LLR) processing (ufka*.cpp) were
    updated as follows:
    
     a) A call to the datacollection() or datacollection_multiple()
    function was inserted whenever one of the following functions
    is issued to increment the z/TPFDF data collection count for
    that function: attac(), detac(), getcc(), relcc(),
    find_record(), file_record(), relfc(), getfc() .
    
     b) In segments i_btcod.c, ufka00.cpp, ufka01.cpp, ufka02.cpp,
    ufka03.cpp, ufka04.cpp, uft6.cpp, ufth.cpp, and uftk.cpp all
    occurrences of crusa() functions were replaced with a
    levtest()/relcc()/data_collection() sequence to ensure the
    validity of the z/TPFDF data collection counts. Similarly,
    segment uftk.cpp was updated to replace a rlcha() call with a
    find/relfc/relcc loop to be able to count the actual number of
    relfc calls. A new system error (OPR-DB0189) is issued in this
    new loop.
    
     c) Segments ufka01.cpp, ufka02.cpp, ufka03.cpp, ufka04.cpp,
    uft6.cpp, and uftk.cpp were optimized by accumulating the count
    for some function calls that are issued in a loop and updating
    the respective z/TPFDF data collection counts only once at the
    end of the loop.
    
    In addition, segemnts ufe3.asm and ufec.asm were updated to
    more accurately calculate the data collection run time.
    
    COREQS: NO
    None.
    
    MIGRATION CONSIDERATIONS: YES
    Functional, automation, and operation changes:
    Changed commands: ZUDFC DISPLAY
    
    Changed messages: DB0168, DB0169
    
    
    Application programming interface (API) changes:
    New system (restricted) macro: DFDCOL
    
    Coexistence, migration, and fallback considerations:
    Additional Information:
    When running a z/TPFDF data collection after the APAR is
    loaded, several data collection counts may experience
    (potentially significantly) different values compared to a
    similar data collection taken before the APAR is loaded.
    The following counts may be higher:
    CFILE, PFILE, RELFC, DETAC, ATTAC, GETCC, RELCC, CFIND, PFIND,
    BTFND, LRFIL, LRFND
    
    The following counts may be higher or lower, depending on the
    application profile:
    GETFC
    
    The following counts may be lower because some of the
    application programming interface (API) calls previously
    included in these counts are now included in one of the
    previously listed counts:
    FILNC, FILEC
    
    This should be taken into account when comparing results from a
    data collection run that was done before this APAR is applied
    to results from a run that was done after this APAR is applied.
    
    
    
    
    BUILD COMMANDS AND INSTRUCTIONS: YES
    #maketpf commands for linux
    maketpf -f UTDF uaa0.o uab0.o uac0.o uad0.o uae0.o uaf0.o
    uag0.o uah0.o uai0.o uaj0.o ual0.o uam0.o uan0.o uap0.o uaq0.o
    uar0.o uas0.o uat0.o uau0.o uav0.o uaw0.o uax0.o uay0.o ub00.o
    ub10.o ub20.o ub30.o ub40.o ub50.o ub60.o ub80.o ub90.o ubc0.o
    ube0.o ubf0.o ubg0.o ubi0.o ubl0.o ubm0.o ubn0.o ubo0.o ubp0.o
    ubq0.o
    maketpf -f UFAO ufao.o
    maketpf -f UFEC ufec.o
    maketpf -f UFE3 ufe3.o
    maketpf -f UFKA ufka00.o ufka01.o ufka02.o ufka03.o ufka04.o
    maketpf -f UFTH uft1.o uft5.o uft6.o uft7.o ufta.o uftb.o
    uftg.o ufth.o uftk.o
    maketpf UTDF link
    maketpf UFAO link
    maketpf UFEC link
    maketpf UFE3 link
    maketpf UFKA link
    maketpf UFTH link
    
    UPDATED INFORMATION UNITS: YES
    z/TPFDF Commands
    z/TPFDF Messages (System Error, Online, Offline)
    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/PM77843.htm
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM77843

  • Reported component name

    ZTPFDF

  • Reported component ID

    5748F1501

  • Reported release

    110

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-11-27

  • Closed date

    2013-03-19

  • Last modified date

    2013-03-19

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

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

Publications Referenced
SK2T8062        

Fix information

  • Fixed component name

    ZTPFDF

  • Fixed component ID

    5748F1501

Applicable component levels

  • R110 PSY

       UP



Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

TPF
z/TPF

Software version:

110

Reference #:

PM77843

Modified date:

2013-03-19

Translate my page

Machine Translation

Content navigation