Class vz390


public class vz390 extends Object
vz390 is the zVSAM component of z390 called from sz390 to perform VSAM access method services.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) int
    variable - ACBAMBL AMB list
    (package private) int
    variable - ACBDCBA addr of dynamically allocated DCB's
    (package private) int
    variable - ACBDCBN total DCB's for this ACB
    (package private) int
    variable - ACBDDNAM DDNAME > env.
    (package private) int
    variable - ACBDSNAM DSNAME addr > VCDT[.VCLR/VPTH]
    (package private) int
    variable - ACBID x'A0'
    (package private) int
    variable - ACBIFR VTAM interface routine (0 for VSAM)
    (package private) int
    variable - ACBLEN half word length of ACB
    (package private) int
    variable - ACBMACRF macrf flags
    (package private) int
    variable - ACBMACR1_ADR access bu RBA or XRBA
    (package private) int
    variable - ACBMACR2_AIX process alt.
    (package private) int
    variable - ACBMACR3_CFX fix control blocks and buffers
    (package private) int
    variable - ACBMACR1_CNV control interval access (not supported)
    (package private) int
    variable - ACBMACR3_DFR defer puts until WRTBUF or required
    (package private) int
    variable - ACBMACR1_DIR direct access
    (package private) int
    variable - ACBMACR2_DSN subtask sharing based on DSN
    (package private) int
    variable - ACBMACR2_GSR global shared resources
    (package private) int
    variable - ACBMACR2_ICI improve control interval processing
    (package private) int
    variable - ACBMACR1_IN input only
    (package private) int
    variable - ACBMACR1_KEY key access
    (package private) int
    variable - ACBMACR2_LSR local shared resources
    (package private) int
    variable - ACBMACR2_NLOGON no logon required
    (package private) int
    variable - ACBMACR1_OUT output add, update, delete
    (package private) int
    variable - ACBMACR2_RST data set reusable (reset rba at open)
    (package private) int
    variable - ACBMACR1_SEQ sequential access
    (package private) int
    variable - ACBMACR3_SIS sequential insert strategy
    (package private) int
    variable - ACBMACR2_SKP skip sequential access
    (package private) int
    variable - ACBMACR1_UBF user buffer management (ignored)
    (package private) int
    variable - ACBPFLGS offset to open flag
    (package private) byte
    variable - ACBAIXP use aix vs primary key
    (package private) byte
    variable - ACBAIXU ugrade aix indexes for VCLR
    (package private) byte
    variable - ACBGET only
    (package private) byte
    variable - ACB_OPEN open
    (package private) byte
    variable - ACBPUT output add, update, delete
    (package private) int
    variable - ACBOPENC unique open ACB count
    (package private) int
    variable - ACBSTYPE x'11' - x'1F' for VSAM vs VTAM
    (package private) int
    variable - ACBVAIXA addr VAIX in VCDT catalog for alt path
    (package private) int
    variable - ACBVCLRA addr VCLR in VCDT catalog
    (package private) int
    variable - ACBVCLRN name from label field (def VCDT entry)
    (package private) boolean
    variable - rotate left or right side
    (package private) long
    variable - r higher right
    (package private) byte
    variable - r high branch height
    (package private) long
    variable - r lower left
    (package private) byte
    variable - r low branch height
    (package private) long
    variable - r parent
    (package private) long
    variable - AVL rotation ksir
    (package private) boolean
    variable - rotation required for avl_r KSIR
    (package private) long
    variable - x higher right
    (package private) byte
    variable - r high branch height
    (package private) long
    variable - x lower left
    (package private) byte
    variable - r low branch height
    (package private) long
    variable - AVL next lower/higher ksir from x for LR/RL rotate
    (package private) long
    variable - x higher right
    (package private) byte
    variable - r high branch height
    (package private) long
    variable - x lower left
    (package private) byte
    variable - r low branch height
    (package private) long
    variable - AVL next lower/higher ksir to move up
    (package private) long
    variable
    (package private) ByteBuffer
    variable
    (package private) byte[]
    variable
    (package private) byte[]
    variable
    (package private) byte
    variable - RPLBASER error accessing ES base
    (package private) byte
    variable - primary KSDS ro VRRDS index
    (package private) byte
    variable - RPLAIXER error accessing AIX index
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable - ACBAMBL AMB list pointer
    (package private) int
    variable - ACBDCBA addr of dyn alloc DCB table
    (package private) int
    variable - ACBDCBT total DCB's for VES, VX0, and VNN upgrades
    (package private) byte
    variable - ACBID x'A0'
    (package private) int
    variable - ACBIFR VTAM interface routine 0 for VSAM
    (package private) short
    variable - ACBLEN length of ACB
    (package private) int
    variable - ACBMACRF 4 bytes of option bits
    (package private) byte
    variable
    (package private) int
    variable - ACBOPENC unique open ACB count used to reset RPL pos
    (package private) byte
    variable - ACBSTYPE x'11' - x'1F' VSAM vs VTAM types
    (package private) int
    variable - ACBVAIXA addr of VAIX entry in VCDT catalog for path
    (package private) int
    variable - ACBVCLRA addr of VCLR entry in VCDT catalog
    (package private) String
    variable - ACBVCLRN label of ACB (def.
    (package private) byte[]
    variable
    (package private) ByteBuffer
    variable
    (package private) long
    variable - next seq backward KSIR XRBA (-1 none)
    (package private) long
    variable - next seq forward KSIR XRBA (-1 none)
    (package private) long
    variable - higer KSIR XRBA (-1 none, high bit if last add)
    (package private) byte
    variable - max height of high node
    (package private) int
    variable - C'KSIR'
    (package private) long
    variable - lower KSIR XRBA (-1 none, high bit if last add)
    (package private) byte
    variable - max height of low node
    (package private) long
    variable - parent KSIR or KSIT
    (package private) long
    variable - xrba of cur record (may change for var update)
    (package private) long
    variable
    (package private) long
    variable - next first and lowest KSIR XRBA (-1 none, high bit if last add)
    (package private) int
    variable - C'KSIT'
    (package private) long
    variable - next last and higher KSIR XRBA (-1 none, high bit if last add)
    (package private) long
    variable - top of balanced tree KSIR
    (package private) long
    variable
    (package private) long
    variable - current node on path to insert
    (package private) byte[]
    variable
    (package private) int
    variable - cur RPL address
    (package private) int
    variable - addr record area
    (package private) int
    variable - argument with KSDS key, RRDS rec #, or RBA/XRBA
    (package private) long
    variable - RPL cur position VES/VX0
    (package private) int
    variable - addr ECB to post completion
    (package private) int
    variable - feedback codes
    (package private) int
    variable - RPL flags for UPD positioning etc.
    (package private) long
    variable - XRBA of current KSIR
    (package private) long
    variable - XRBA of current KSIT
    (package private) int
    variable - RPL area length
    (package private) int
    variable - generic key length
    (package private) int
    variable - RPL record length for RECV PUT
    (package private) long
    variable - RPL last rec VES/VX0 XRBA if neg = last KSIR XRBA
    (package private) int
    variable - RPL next RPL address in chained requests
    (package private) int
    variable - unique ACB open count to detect req'd pos reet
    (package private) int
    variable - RPL option flags
    (package private) int
    variable - cur aix section addr
    (package private) int
    variable - VAIXFLAG option flags
    (package private) String
    variable - VAIXID C'VAIX'
    (package private) int
    variable - VAIXKLEN length of aix key in base cluster
    (package private) int
    variable - VAIXKOFF offset of aix key in base cluster
    (package private) String
    variable - VAIXNAME name of alternate index
    (package private) int
    variable - VAIXRELA addr related VCLR base cluster catalog entry
    (package private) String
    variable - VAIXRELN name of related VCLR base cluster
    (package private) int
    variable - VAIXVXNA addr optional DSNAME (def.
    (package private) int
    variable - addr next vcb buffer to alloc
    (package private) int
    variable - file rec length
    (package private) int
    variable - file tiot index
    (package private) long
    variable - file xrba addr
    (package private) int
    variable - addr loaded VCDT VSAM catalog
    (package private) int
    variable - VCDTAIXT tot aix indexes
    (package private) int
    variable - VCDTCLRT total base clusters
    (package private) int
    variable
    (package private) String
    variable - from ACB DDNAME/DSNAME
    (package private) String
    variable - VCDTID C'VCDT'
    (package private) String
    variable - VCDTNAME name of VCDT catalog
    (package private) String
    variable
    (package private) int
    variable - VCDTPTHA addr path entry
    (package private) int
    variable - VCDTPTHT total paths
    (package private) int
    variable - index of tiot entry + 1
    (package private) int
    variable - VCLRAIXA addr of VAIX addr table
    (package private) int
    variable - VCLRAIXN total alterante indexes with upgrade for cluster7
    (package private) int
    variable - VCLRFLAG 4 bytes of flags
    (package private) String
    variable - VCLRID C"VCLR"
    (package private) int
    variable - VCLRKLEN KSDS primary key length
    (package private) int
    variable - VCLRKOFF KSDS primary key offset
    (package private) int
    variable - VCLRLAVG average record length for VREC
    (package private) int
    variable - VCLRLREC max length or fixed length
    (package private) String
    variable - VCLRNAME name of base cluster
    (package private) String
    variable - VCLRTYPE type of base cluster
    (package private) int
    variable - VCLRVESA addr DSNAME override for VES
    (package private) int
    variable - VCLRVX0A addr DSNAME override for VX0
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) long
    variable
    (package private) int
    variable - VPTHENTA addr of VAIX or VCLR entry for path
    (package private) String
    variable - VPTHENTN name of path (VAIX or VCLR)
    (package private) int
    variable - VPTHFLAG 4 byte option flags
    (package private) String
    variable - VPTHID C'VPTH'
    (package private) String
    variable - VPTHNAME name of path
    (package private) byte
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) int
    variable - next backward KSIR or -1
    (package private) int
    variable - next foward KSIR or -1
    (package private) int
    variable - next highest KSIR or -1 (high bit if last add)
    (package private) int
    variable - max height of high node
    (package private) int
    variable - id C'KSIR'
    (package private) int
    variable - C'KSIR'
    (package private) int
    variable - KSIR length
    (package private) int
    variable - next lower KSIR or -1 (high bit if last add)
    (package private) int
    variable - max height of low node
    (package private) int
    variable - parent KSIR or KSIT
    (package private) int
    variable - xrba of cur record (may change for var update)
    (package private) int
    variable - first and lowest KSIR XRBA
    (package private) int
    variable - id
    (package private) int
    variable - C'KSIT"
    (package private) int
    variable - KSIT length
    (package private) int
    variable - last and highest KSIR XRBA
    (package private) int
    variable - top KSIR XRBA
    (package private) byte[]
    variable
    (package private) int
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) long
    variable - last ves rec xrba
    (package private) long
    variable
    (package private) int
    variable - max height of AVL tree
    (package private) int
    variable - max vcb alloc allowed
    (package private) int
    variable - hash index with no dup allowed
    (package private) int
    variable - max vcb record size allowed
    (package private) int
    variable
    (package private) long
    variable
    (package private) int
    variable
    (package private) boolean
    variable
    (package private) byte[]
    variable
    (package private) boolean
    variable - true unless REPRO output
    (package private) byte
    variable - default Problem Determination Field
    (package private) int
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) long
    variable
    (package private) long
    variable - prev ksir on path
    (package private) int
    variable
    (package private) pz390
    variable
    (package private) byte
    variable - rpl logical error
    (package private) byte
    variable - operation sccessful
    (package private) byte
    variable - rpl physical error
    (package private) int
    variable
    (package private) byte
    variable - z390 catch all
    (package private) byte
    variable - RPLINBUF record area too small
    (package private) byte
    variable - RPLDUP attempt to write dup pri or unique aix key
    (package private) byte
    variable - RPLEODER end of data
    (package private) byte
    variable - RPLINACC invalid RPL access for ACB MACRF
    (package private) byte
    variable - RPLKEYLC key len > max or 0
    (package private) byte
    variable - RPLINKEY invalid key req for ESDS/RRDS
    (package private) byte
    variable - RPLRRADR invalid RBA req to RRDS
    (package private) byte
    variable - RPLINLEN rec len > max or <> fixed len
    (package private) byte
    variable - RPLIRRNO invalid RRDS record #
    (package private) byte
    variable - RPLINVP invalid RPL options
    (package private) String[]
    variable
    (package private) byte
    variable - ok
    (package private) byte
    variable - RPLSEQCK skip seq key out of sequence
    (package private) String[]
    variable
    (package private) byte
    variable - RPLINRBA RBA not a record address
    (package private) byte
    variable - RPLNOREC record not found
    (package private) byte
    variable - RPLRDERD data read error
    (package private) byte
    variable - RPLRDERI index read error
    (package private) byte
    variable - RPLWTERD data write error
    (package private) byte
    variable - RPLWTERI index write error
    (package private) int
    variable - RPL acb addr
    (package private) int
    variable - RPL record area
    (package private) int
    variable - RPL argment for KSDS key, RRDS #, ESDS/LDS RBA/XRBA
    (package private) int
    variable - RPL cur pos XRBA in VES or VX0
    (package private) int
    variable - RPL address ecb to post
    (package private) int
    variable - RPL feedback
    (package private) int
    variable - RPL flags for UPD positioning etc.
    (package private) int
    variable - prev RPL GET record not found
    (package private) int
    variable - prev RPL GET successful
    (package private) int
    variable - get/put in KSIT
    (package private) int
    variable - RPL ID
    (package private) int
    variable - RPL current KSIR XRBA
    (package private) int
    variable - RPL current KSIT XRBA
    (package private) int
    variable - RPL length of record area
    (package private) int
    variable - RPL length
    (package private) int
    variable
    (package private) int
    variable - RPL length of generic key
    (package private) int
    variable - RPL length of record for recv PUT
    (package private) int
    variable - RPL last rec XRBA in VES or VX0
    (package private) int
    variable - RPL next RPL in chain
    (package private) int
    variable - RPL unique open ACB count
    (package private) int
    variable - RPL options 2 bytes and 2 bytes filler
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option direct access
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option leave rec in buffer
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option sequential access
    (package private) int
    variable - RPL option skip sequential access
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL option
    (package private) int
    variable - RPL type VSAM
    (package private) sz390
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable - KSIR finds in AVL tree
    (package private) int
    variable - KSIR insert record in tree
    (package private) int
    variable - KSIT inserts trees
    (package private) int
    variable - KSIR rotates to bal AVL tree
    (package private) int
    variable - KSIR rotates to bal AVL tree
    (package private) int
    variable - KSIR rotates to bal AVL tree
    (package private) int
    variable - KSIR rotates to bal AVL tree
    (package private) int
    variable - KSIR rotates to bal AVL tree
    (package private) int
    variable - counter for unique ddnames "V??#NNNN"
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable - total vcb allocated + 1 to skip 0 index
    (package private) int
    variable - total buffers reused (saved I/O)
    (package private) int
    variable - total buffers requested
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) tz390
    variable
    (package private) int
    variable - VAIXFLAG 4 bytes of option flags
    (package private) int
    variable - VAIXRUSE reset aix eof at open
    (package private) int
    variable - VAIXUAIX upgrade AIX for base cluster updates
    (package private) int
    variable - VAIXUKEY inforce unique keys
    (package private) int
    variable - VAIXID C'VAIX'
    (package private) int
    variable - VAIXKLEN aix key length in VES
    (package private) int
    variable - VAIXKOFF aix key offset in VES
    (package private) int
    variable - VAIXLEN length of VAIX catalog entry
    (package private) int
    variable - VAIXNAME name of AIX
    (package private) int
    variable - VAIXRELA addr of related VCLR base cluster catalog entry
    (package private) int
    variable - VAIXRELN name of related VCLR base cluster
    (package private) int
    variable - VAIXVXNA addr optional VXN DSNAME (def.
    (package private) int[]
    variable
    (package private) boolean
    variable
    (package private) ByteBuffer
    variable
    (package private) byte[]
    variable - vcb buffer
    (package private) int
    variable
    (package private) int[]
    variable
    (package private) int
    variable - index of alloc vcb
    (package private) int[]
    variable
    (package private) int
    variable
    (package private) int
    variable
    (package private) int[]
    variable
    (package private) int[]
    variable
    (package private) int[]
    variable
    (package private) long[]
    variable
    (package private) int
    variable - VCDTAIXA addr aix index
    (package private) int
    variable - VCDTAIXT tot aix indexes
    (package private) int
    variable - VCDTCLRA addr base cluster entry
    (package private) int
    variable - VCDTCLRT tot base clusters
    (package private) int
    variable - VCDTDCBA addr model DCB for ACB allocation
    (package private) int
    variable - VCDTID C'VCDT'
    (package private) int
    variable - VCDTNAME name of catalog
    (package private) int
    variable - VCDTPTHA addr path
    (package private) int
    variable - VCDTPTHT tot paths
    (package private) int
    variable - VCLRAIXA addr of table with AIX upgrade catalog entries
    (package private) int
    variable - VCLRAIXN total AIX with upgrade for cluster changes
    (package private) int
    variable - VCLRCI optional CI size
    (package private) int
    variable - VCLRFLAG option flags
    (package private) int
    variable - VCLRESDS entry sequenced data set
    (package private) int
    variable - VCLRKSDS key sequential (default)
    (package private) int
    variable - VCLRLDS linear
    (package private) int
    variable - VCLRRRDS relative record data set
    (package private) int
    variable - VCLRRUSE reset EOF at ACB open
    (package private) int
    variable - VCLRVREC variable record length
    (package private) int
    variable - VCLRID C'VCLR'
    (package private) int
    variable - VCLRKLEN KSDS primary key length
    (package private) int
    variable - VCLRKOFF KSDS primary key offset
    (package private) int
    variable - VCLRLAVG average record length for VREC
    (package private) int
    variable - VCLRLEN length of VCLR catalog entry
    (package private) int
    variable - VCLRLREC max or fixed record length
    (package private) int
    variable - VCLRNAME name of base cluster
    (package private) int
    variable - VCLRTYPE ESDS/RRDS/ESDS/LDS
    (package private) int
    variable - VCLRVESA addr optional VES DSNAME (Def NAME.VES)
    (package private) int
    variable - VCLRVX0A addr optional VX0 DSNAME (Def NAME.VX0)
    (package private) int
    variable
    (package private) int
    variable - VPTHENTA addr of entry VAIX or VCLR entry
    (package private) int
    variable - VPTHENTN name of entry VAIX or VCLR path
    (package private) int
    variable - VPTHFLAG 4 bytes of option flags
    (package private) int
    variable - VPTHUAIX update all upgrade AIX's for base cluster
    (package private) int
    variable - VPTHPAIX path is for VAIX vs alias VCLR
    (package private) int
    variable - VPTHID C'VPTH'
    (package private) int
    variable - VPTHLEN length of VPTH catalog entry
    (package private) int
    variable - VPTHNAME name of path
    (package private) byte
    variable
    (package private) byte
    variable
    (package private) long
    variable
    (package private) int
    variable
    (package private) long
    variable
    (package private) long
    variable
  • Constructor Summary

    Constructors
    Constructor
    Description
    Dummy constructor - no initialization needed
  • Method Summary

    Modifier and Type
    Method
    Description
    private boolean
    add_ves_rec(int tiot_index, long index_xrba)
    add RRDS or KSDS record to VES and update index XRBA address which may be in VX0 or in VES KSIR.
    private long
    alloc_ves(int cb_len)
    return xrba of new ves cb/rec area and update eof xrba
    private boolean
    perform AVL rotation around the last avl_r_xrba found during find_ksir prior to insert.
    private boolean
    avl rotate x to r, and r to x_high, and x_high to r_low.
    private boolean
    avl rotate w (x_high) to r, r to w_high, w_low to x_high, and w_high to r_low.
    private boolean
    avl rotate w (x_low) to r, r to w_low, w_high to x_low, and w_low to r_high.
    private boolean
    avl rotate x to r, and r to x_low, and x_low to r_high.
    private boolean
    search up KSIR nodes from insertion and perform the following steps: Increment height of all nodes on path prior to unbalanced node.
    private void
    broken_ksir_link(String type, long xrba1, long xrba2)
    display error message for KSIR broken links and set feedback ves data error
    private int
    calc vcb hash index from tiot + xrba + lrec Notes: If two vcb requests geenrate same hash only the latest will be found and the prior one will eventually be replaced via lru.
    private boolean
    check for consistency between VCDT and ACB options and if
    private boolean
    check_heights(String type, byte t1, byte t2, byte t3, byte t4)
    verify updated T1-T4 within +-1
    private boolean
    close dynamically allocated ACB DCB's
    private int
    comp_key(int key1_loc, byte[] key_byte)
    compare key in RPLAREA+KEYOFF with key in last_vx0_key or cur_vx0_key array using comp_key_len set by rpl fetch -1, 0, 1 for low, equal, high Notes: Set matching_key_bytes for generic key processing
    private void
    fetch acb fields from cur_acb_addr
    private void
    fetch RPL, ACB, and VCDT fields for GET, PUT, etc.
    private void
    fetch current vclr fields used by rpl_get/put.
    private boolean
    search vx0 for ksds key in rplarg and set cur_vx0_xrba entry if found else false.
    private boolean
    search ksit binary tree at cur_vx0_xrba (negative) Set cur_ves_xrba to record if found Set cur_rpl_ksir to last ksir for use by insert_ksir Set avl_r_xrba/par/low/high if ksir found requiring AVL rotation to keep tree balanced after KSIR is inserted.
    private boolean
    find matching vcb with same tiot, xrba, and record length if found set vcb_index and return true else false
    private boolean
    find VCLR/VPTH entry in VCDT Set cur_vclra_addr Set cur_vptha_addr or 0 If vpth_flag_aixp, set acb_oflgs_aixp else 0 If vpth_flag_aixu, set acb_oflgs_aixu else 0 Set cur_vcdt_dcba for use by init_acb_dcb.
    private boolean
    position to first KSIR in KSIT for either FWD or BWD seq.
    private boolean
    set cur_ves_xrba to ksir rec unless deleted
    private boolean
    get_rrds_ves_xrba(boolean key)
    if random access by key rec #, then cur_vx0_rba = rec# * 8 else cur_vx0_xrba = cur_rpl_cxrba.
    private boolean
    get_vcb_buff(int tiot_index, long xrba, int rec_len)
    get VSAM Cache Buffer (VCB) for file tiot_index, xrba, rec_len If rec_len > max_vcb_lrec return false.
    private void
    get VCDT path for use in VX?DCB file opens
    private void
    init_acb_dcb(int dcb_addr, int dcb_lrecl_f, int dcb_dsname, String dcb_ddname)
    copy model dcb from vcdt_dcba to new dynamcially allocated dcb address and set DCBLRECLF and DCBDSNAM fields
    private void
    Initialize ACB fields
    private void
    Initialize VSAM "control block" fields
    private void
    init logical and physical reason codes for use in set_feedback tracing
    private void
    Initialzie RPL fields
    private void
    Initialize VAIX fields
    private void
    Initialize VCDT fields
    private void
    Initialize VCLR fields
    private void
    Initialize VPTH fields
    void
    init_vz390(tz390 shared_tz390, pz390 shared_pz390, sz390 shared_sz390)
    init vz390
    private boolean
    insert ksds record following unsuccessful GET with UPD
    private boolean
    insert new KSIR to existing KSIT at current KSIR and balance AVT tree by rotating KSIR's if needed.
    private boolean
    insert new KSIT for cur_vx0 entry with KSIR for existing record and KSIR for new inserted record
    private boolean
    load VCDT using ACB DSNAME or DDNAME If file spec includes dot, use suffix to find VCDT entry else use ACBNAME field.
    private boolean
    open_acb_dcb(int dcb_addr)
    dynamically allocate and open DCB for VES, VX0, VXN's
    private boolean
    dynamically allocate and open dcbs required for VES, VX0, and any upgrade VXN's.
    private boolean
    read ksds index entry with key at cur_vx0_xrba and set cur_ves_xrba and cur_key
    private boolean
    read_ksir(long xrba)
    read KSIR int cb and set cur_ksit xrba's
    private boolean
    read record from current KSIR and postion to next KSIR or index entry or return eod
    private boolean
    read ksir key at cur_ksir_rec + cur_vclr_koff into cur_key
    private boolean
    read KSIT into cb array and set cur_ksit xrbas
    private boolean
    read_ves_cb(long cb_xrba, int cb_len)
    read control block in ves at xrba into cb byte array Notes:
    private boolean
    read record from VES into RPLAREA and set length in RPLLREC to the VES ESDS base cluster data file at specified xrba.
    private boolean
    read ves xrba prt in vx0 at cur_vx0_xrba and set cur_ves_xrba
    private void
    reset flags for RPL current record
    private boolean
    reuse_file(int adcb)
    reset file length and tiot_eof addr for files being resused either due to reuse option or REPRO seq out options..
    private boolean
    rewrite_ves_rec(int tiot_index, long xrba_index)
    rewrite RRDS or KSDS record at cur_ves_xrba and update index xrba if it changed due to variable length change.
    private void
    ESDS get by rba or xrba
    private void
    ESDS seq get
    private void
    get KSDS get by key
    private void
    get next KSDS seq.
    private void
    get for open RRDS file Notes: Read vx0 XRBA for rel.
    private void
    get seq for RRDS file Notes: Read vx0 at rpl_cxrba to get ves xrba
    private boolean
    compare key in RPLAREA+KEYOFF with high values RPI 779 using cur_vclr_klen -1, 0, 1 for low, equal, high.
    private void
    put for open ESDS output file
    private void
    put for open KSDS output file
    private void
    put for open RRDS output file Notes: Always use rel rec # to calc Read vx0 XRBA for rel.
    private boolean
    backup to next record for ESDS SEQ BWD retrieval and return logical EOD error if at front of file.
    private void
    set_feedback(byte pdf, byte rc, byte cmp, byte rn)
    store RPLFEEDB 4 byte field with: 0 - pdf_ Problem Determination Field 1 - rc_ return code (also stored in R15) 2 - cmp_ component code 3 - rn_ reason code for corresponding rc_
    private boolean
    set cur_vx0_xrba to next ksds index going forward or backward else set eod
    private void
    store cur_ves_xrba as RBA or XRBA in RPLARG and limit check
    private void
    set_rpl_cur_rec(boolean found)
    set rpl_flag_getok or rpl_flag_getnf and save along with rpl_flag_ksit possible following put or insert.
    private void
    set_rpl_cxrba(long xrba)
    set RPL cur pos xrba 1.
    private void
    store rpl_flag
    private void
    setup for next seq record either in KSIT or VX0 index and turn off rpl_flag_ksit if done
    private void
    set RPLLXRBA last rec XRBA VES for ESDS/RRDS VX0 for KSDS/VRRDS
    private void
    set_rpl_lxrba(long xrba)
    set RPLLXRBA last rec XRBA VES for ESDS/RRDS VX0 for KSDS/VRRDS
    private void
    inc or dec vx0 for next key index entry
    void
    Close open acb.
    void
    Open ACB defining VSAM ESDS, RRDS, or KSDS Use DDNAME/DSNAME to load VCDT and find VCLR entry based on cat.name or search for VCLR with matching ACBNAME.
    private void
    erase current record retrieved from open VSAM ACB/VCDT cluster.
    private void
    retrieve record from open VSAM ACB/VCDT cluster.
    private void
    set current position to specified key, record, or RBA in ESDS base
    private void
    update or write new record in open VSAM ACB/VCDT cluster.
    void
    Execute VSAM access method service requested
    private void
    display unbalanced KSIR found
    private boolean
    rewrite ksds record following successful GET with UPD
    private void
    move current vcb at vcb_index to most recently used (vcb_mru).
    private boolean
    write ksds primary index entry with last_ves_xrba ptr and key.
    private boolean
    write ves KSIR at cur_ksir_xrba
    private boolean
    write new KSIT at ves eof xrba
    private boolean
    write_ves_cb(long cb_xrba, int cb_len)
    write control block in ves at xrba into cb byte array Notes:
    private boolean
    write current RPL record in RPLAREA with length RPLLREC to the VES base cluster data file at specified xrba.
    private boolean
    write_xrba_ptr(int tiot_index, long xrba_index, long xrba_rec)
    write ves rcd xrba ptr at vx0/ves(KSIR) index xrba in and update cache for reuse

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • tz390

      tz390 tz390
      variable
    • pz390

      pz390 pz390
      variable
    • sz390

      sz390 sz390
      variable
    • cur_vsam_op

      byte cur_vsam_op
      variable
    • vsam_op_open

      byte vsam_op_open
      variable
    • vsam_op_close

      byte vsam_op_close
      variable
    • cur_vcdt_addr

      int cur_vcdt_addr
      variable - addr loaded VCDT VSAM catalog
    • cur_vcdt_id

      String cur_vcdt_id
      variable - VCDTID C'VCDT'
    • cur_vcdt_name

      String cur_vcdt_name
      variable - VCDTNAME name of VCDT catalog
    • cur_vcdt_clrt

      int cur_vcdt_clrt
      variable - VCDTCLRT total base clusters
    • cur_vcdt_aixt

      int cur_vcdt_aixt
      variable - VCDTAIXT tot aix indexes
    • cur_vcdt_ptht

      int cur_vcdt_ptht
      variable - VCDTPTHT total paths
    • cur_vcdt_ptha

      int cur_vcdt_ptha
      variable - VCDTPTHA addr path entry
    • cur_vcdt_dcba

      int cur_vcdt_dcba
      variable
    • vcdt_id

      int vcdt_id
      variable - VCDTID C'VCDT'
    • vcdt_name

      int vcdt_name
      variable - VCDTNAME name of catalog
    • vcdt_clrt

      int vcdt_clrt
      variable - VCDTCLRT tot base clusters
    • vcdt_clra

      int vcdt_clra
      variable - VCDTCLRA addr base cluster entry
    • vcdt_aixt

      int vcdt_aixt
      variable - VCDTAIXT tot aix indexes
    • vcdt_aixa

      int vcdt_aixa
      variable - VCDTAIXA addr aix index
    • vcdt_ptht

      int vcdt_ptht
      variable - VCDTPTHT tot paths
    • vcdt_ptha

      int vcdt_ptha
      variable - VCDTPTHA addr path
    • vcdt_dcba

      int vcdt_dcba
      variable - VCDTDCBA addr model DCB for ACB allocation
    • cur_vcdt_file_name

      String cur_vcdt_file_name
      variable - from ACB DDNAME/DSNAME
    • cur_vcdt_path

      String cur_vcdt_path
      variable
    • cur_vcdt_tiot

      int cur_vcdt_tiot
      variable - index of tiot entry + 1
    • cur_vclr_id

      String cur_vclr_id
      variable - VCLRID C"VCLR"
    • cur_vclr_name

      String cur_vclr_name
      variable - VCLRNAME name of base cluster
    • cur_vclr_type

      String cur_vclr_type
      variable - VCLRTYPE type of base cluster
    • cur_vclr_flag

      int cur_vclr_flag
      variable - VCLRFLAG 4 bytes of flags
    • cur_vclr_lavg

      int cur_vclr_lavg
      variable - VCLRLAVG average record length for VREC
    • cur_vclr_lrec

      int cur_vclr_lrec
      variable - VCLRLREC max length or fixed length
    • cur_vclr_klen

      int cur_vclr_klen
      variable - VCLRKLEN KSDS primary key length
    • cur_vclr_koff

      int cur_vclr_koff
      variable - VCLRKOFF KSDS primary key offset
    • cur_vclr_vesa

      int cur_vclr_vesa
      variable - VCLRVESA addr DSNAME override for VES
    • cur_vclr_vx0a

      int cur_vclr_vx0a
      variable - VCLRVX0A addr DSNAME override for VX0
    • cur_vclr_aixn

      int cur_vclr_aixn
      variable - VCLRAIXN total alterante indexes with upgrade for cluster7
    • cur_vclr_aixa

      int cur_vclr_aixa
      variable - VCLRAIXA addr of VAIX addr table
    • vclr_id

      int vclr_id
      variable - VCLRID C'VCLR'
    • vclr_name

      int vclr_name
      variable - VCLRNAME name of base cluster
    • vclr_type

      int vclr_type
      variable - VCLRTYPE ESDS/RRDS/ESDS/LDS
    • vclr_flag

      int vclr_flag
      variable - VCLRFLAG option flags
    • vclr_flag_vrec

      int vclr_flag_vrec
      variable - VCLRVREC variable record length
    • vclr_flag_ruse

      int vclr_flag_ruse
      variable - VCLRRUSE reset EOF at ACB open
    • vclr_flag_ksds

      int vclr_flag_ksds
      variable - VCLRKSDS key sequential (default)
    • vclr_flag_rrds

      int vclr_flag_rrds
      variable - VCLRRRDS relative record data set
    • vclr_flag_esds

      int vclr_flag_esds
      variable - VCLRESDS entry sequenced data set
    • vclr_flag_lds

      int vclr_flag_lds
      variable - VCLRLDS linear
    • vclr_lavg

      int vclr_lavg
      variable - VCLRLAVG average record length for VREC
    • vclr_lrec

      int vclr_lrec
      variable - VCLRLREC max or fixed record length
    • vclr_klen

      int vclr_klen
      variable - VCLRKLEN KSDS primary key length
    • vclr_koff

      int vclr_koff
      variable - VCLRKOFF KSDS primary key offset
    • vclr_vesa

      int vclr_vesa
      variable - VCLRVESA addr optional VES DSNAME (Def NAME.VES)
    • vclr_vx0a

      int vclr_vx0a
      variable - VCLRVX0A addr optional VX0 DSNAME (Def NAME.VX0)
    • vclr_ci

      int vclr_ci
      variable - VCLRCI optional CI size
    • vclr_aixn

      int vclr_aixn
      variable - VCLRAIXN total AIX with upgrade for cluster changes
    • vclr_aixa

      int vclr_aixa
      variable - VCLRAIXA addr of table with AIX upgrade catalog entries
    • vclr_len

      int vclr_len
      variable - VCLRLEN length of VCLR catalog entry
    • cur_vaix_addr

      int cur_vaix_addr
      variable - cur aix section addr
    • cur_vaix_id

      String cur_vaix_id
      variable - VAIXID C'VAIX'
    • cur_vaix_name

      String cur_vaix_name
      variable - VAIXNAME name of alternate index
    • cur_vaix_reln

      String cur_vaix_reln
      variable - VAIXRELN name of related VCLR base cluster
    • cur_vaix_flag

      int cur_vaix_flag
      variable - VAIXFLAG option flags
    • cur_vaix_klen

      int cur_vaix_klen
      variable - VAIXKLEN length of aix key in base cluster
    • cur_vaix_koff

      int cur_vaix_koff
      variable - VAIXKOFF offset of aix key in base cluster
    • cur_vaix_vxna

      int cur_vaix_vxna
      variable - VAIXVXNA addr optional DSNAME (def. NAME.VXN)
    • cur_vaix_rela

      int cur_vaix_rela
      variable - VAIXRELA addr related VCLR base cluster catalog entry
    • vaix_id

      int vaix_id
      variable - VAIXID C'VAIX'
    • vaix_name

      int vaix_name
      variable - VAIXNAME name of AIX
    • vaix_reln

      int vaix_reln
      variable - VAIXRELN name of related VCLR base cluster
    • vaix_flag

      int vaix_flag
      variable - VAIXFLAG 4 bytes of option flags
    • vaix_flag_ruse

      int vaix_flag_ruse
      variable - VAIXRUSE reset aix eof at open
    • vaix_flag_ukey

      int vaix_flag_ukey
      variable - VAIXUKEY inforce unique keys
    • vaix_flag_uaix

      int vaix_flag_uaix
      variable - VAIXUAIX upgrade AIX for base cluster updates
    • vaix_klen

      int vaix_klen
      variable - VAIXKLEN aix key length in VES
    • vaix_koff

      int vaix_koff
      variable - VAIXKOFF aix key offset in VES
    • vaix_vxna

      int vaix_vxna
      variable - VAIXVXNA addr optional VXN DSNAME (def. NAME.VXN)
    • vaix_rela

      int vaix_rela
      variable - VAIXRELA addr of related VCLR base cluster catalog entry
    • vaix_len

      int vaix_len
      variable - VAIXLEN length of VAIX catalog entry
    • cur_vpth_id

      String cur_vpth_id
      variable - VPTHID C'VPTH'
    • cur_vpth_name

      String cur_vpth_name
      variable - VPTHNAME name of path
    • cur_vpth_entn

      String cur_vpth_entn
      variable - VPTHENTN name of path (VAIX or VCLR)
    • cur_vpth_flag

      int cur_vpth_flag
      variable - VPTHFLAG 4 byte option flags
    • cur_vpth_enta

      int cur_vpth_enta
      variable - VPTHENTA addr of VAIX or VCLR entry for path
    • vpth_id

      int vpth_id
      variable - VPTHID C'VPTH'
    • vpth_name

      int vpth_name
      variable - VPTHNAME name of path
    • vpth_entn

      int vpth_entn
      variable - VPTHENTN name of entry VAIX or VCLR path
    • vpth_flag

      int vpth_flag
      variable - VPTHFLAG 4 bytes of option flags
    • vpth_flag_aixp

      int vpth_flag_aixp
      variable - VPTHUAIX update all upgrade AIX's for base cluster
    • vpth_flag_aixu

      int vpth_flag_aixu
      variable - VPTHPAIX path is for VAIX vs alias VCLR
    • vpth_enta

      int vpth_enta
      variable - VPTHENTA addr of entry VAIX or VCLR entry
    • vpth_len

      int vpth_len
      variable - VPTHLEN length of VPTH catalog entry
    • open_acb_mod

      boolean open_acb_mod
      variable - true unless REPRO output
    • cur_acb_addr

      int cur_acb_addr
      variable
    • cur_acb_id

      byte cur_acb_id
      variable - ACBID x'A0'
    • cur_acb_stype

      byte cur_acb_stype
      variable - ACBSTYPE x'11' - x'1F' VSAM vs VTAM types
    • cur_acb_len

      short cur_acb_len
      variable - ACBLEN length of ACB
    • cur_acb_ambl

      int cur_acb_ambl
      variable - ACBAMBL AMB list pointer
    • cur_acb_ifr

      int cur_acb_ifr
      variable - ACBIFR VTAM interface routine 0 for VSAM
    • cur_acb_macrf

      int cur_acb_macrf
      variable - ACBMACRF 4 bytes of option bits
    • cur_acb_oflgs

      byte cur_acb_oflgs
      variable
    • cur_acb_vclrn

      String cur_acb_vclrn
      variable - ACBVCLRN label of ACB (def. VCLR/VPTH entry)
    • cur_acb_vclra

      int cur_acb_vclra
      variable - ACBVCLRA addr of VCLR entry in VCDT catalog
    • cur_acb_vaixa

      int cur_acb_vaixa
      variable - ACBVAIXA addr of VAIX entry in VCDT catalog for path
    • cur_acb_dcbt

      int cur_acb_dcbt
      variable - ACBDCBT total DCB's for VES, VX0, and VNN upgrades
    • cur_acb_dcba

      int cur_acb_dcba
      variable - ACBDCBA addr of dyn alloc DCB table
    • cur_acb_openc

      int cur_acb_openc
      variable - ACBOPENC unique open ACB count used to reset RPL pos
    • tot_dcb_alloc

      int tot_dcb_alloc
      variable - counter for unique ddnames "V??#NNNN"
    • acb_id

      int acb_id
      variable - ACBID x'A0'
    • acb_stype

      int acb_stype
      variable - ACBSTYPE x'11' - x'1F' for VSAM vs VTAM
    • acb_len

      int acb_len
      variable - ACBLEN half word length of ACB
    • acb_ambl

      int acb_ambl
      variable - ACBAMBL AMB list
    • acb_ifr

      int acb_ifr
      variable - ACBIFR VTAM interface routine (0 for VSAM)
    • acb_macrf

      int acb_macrf
      variable - ACBMACRF macrf flags
    • acb_macrf_key

      int acb_macrf_key
      variable - ACBMACR1_KEY key access
    • acb_macrf_adr

      int acb_macrf_adr
      variable - ACBMACR1_ADR access bu RBA or XRBA
    • acb_macrf_cnv

      int acb_macrf_cnv
      variable - ACBMACR1_CNV control interval access (not supported)
    • acb_macrf_seq

      int acb_macrf_seq
      variable - ACBMACR1_SEQ sequential access
    • acb_macrf_dir

      int acb_macrf_dir
      variable - ACBMACR1_DIR direct access
    • acb_macrf_in

      int acb_macrf_in
      variable - ACBMACR1_IN input only
    • acb_macrf_out

      int acb_macrf_out
      variable - ACBMACR1_OUT output add, update, delete
    • acb_macrf_ubf

      int acb_macrf_ubf
      variable - ACBMACR1_UBF user buffer management (ignored)
    • acb_macrf_skp

      int acb_macrf_skp
      variable - ACBMACR2_SKP skip sequential access
    • acb_macrf_nlogon

      int acb_macrf_nlogon
      variable - ACBMACR2_NLOGON no logon required
    • acb_macrf_rst

      int acb_macrf_rst
      variable - ACBMACR2_RST data set reusable (reset rba at open)
    • acb_macrf_dsn

      int acb_macrf_dsn
      variable - ACBMACR2_DSN subtask sharing based on DSN
    • acb_macrf_aix

      int acb_macrf_aix
      variable - ACBMACR2_AIX process alt. index versus base
    • acb_macrf_lsr

      int acb_macrf_lsr
      variable - ACBMACR2_LSR local shared resources
    • acb_macrf_gsr

      int acb_macrf_gsr
      variable - ACBMACR2_GSR global shared resources
    • acb_macrf_ici

      int acb_macrf_ici
      variable - ACBMACR2_ICI improve control interval processing
    • acb_macrf_dfr

      int acb_macrf_dfr
      variable - ACBMACR3_DFR defer puts until WRTBUF or required
    • acb_macrf_sis

      int acb_macrf_sis
      variable - ACBMACR3_SIS sequential insert strategy
    • acb_macrf_cfx

      int acb_macrf_cfx
      variable - ACBMACR3_CFX fix control blocks and buffers
    • acb_oflgs

      int acb_oflgs
      variable - ACBPFLGS offset to open flag
    • acb_oflgs_open

      byte acb_oflgs_open
      variable - ACB_OPEN open
    • acb_oflgs_in

      byte acb_oflgs_in
      variable - ACBGET only
    • acb_oflgs_out

      byte acb_oflgs_out
      variable - ACBPUT output add, update, delete
    • acb_oflgs_aixp

      byte acb_oflgs_aixp
      variable - ACBAIXP use aix vs primary key
    • acb_oflgs_aixu

      byte acb_oflgs_aixu
      variable - ACBAIXU ugrade aix indexes for VCLR
    • acb_ddnam

      int acb_ddnam
      variable - ACBDDNAM DDNAME > env. var.> VCDT[.VCLR/VPTH)
    • acb_dsnam

      int acb_dsnam
      variable - ACBDSNAM DSNAME addr > VCDT[.VCLR/VPTH]
    • acb_vclrn

      int acb_vclrn
      variable - ACBVCLRN name from label field (def VCDT entry)
    • acb_vclra

      int acb_vclra
      variable - ACBVCLRA addr VCLR in VCDT catalog
    • acb_vaixa

      int acb_vaixa
      variable - ACBVAIXA addr VAIX in VCDT catalog for alt path
    • acb_dcbt

      int acb_dcbt
      variable - ACBDCBN total DCB's for this ACB
    • acb_dcba

      int acb_dcba
      variable - ACBDCBA addr of dynamically allocated DCB's
    • acb_openc

      int acb_openc
      variable - ACBOPENC unique open ACB count
    • cur_rpl_addr

      int cur_rpl_addr
      variable - cur RPL address
    • cur_rpl_ecb

      int cur_rpl_ecb
      variable - addr ECB to post completion
    • cur_rpl_feedb

      int cur_rpl_feedb
      variable - feedback codes
    • cur_rpl_lkey

      int cur_rpl_lkey
      variable - generic key length
    • cur_rpl_area

      int cur_rpl_area
      variable - addr record area
    • cur_rpl_arg

      int cur_rpl_arg
      variable - argument with KSDS key, RRDS rec #, or RBA/XRBA
    • cur_rpl_opt

      int cur_rpl_opt
      variable - RPL option flags
    • rpl_opt_loc

      int rpl_opt_loc
      variable - RPL option leave rec in buffer
    • rpl_opt_dir

      int rpl_opt_dir
      variable - RPL option direct access
    • rpl_opt_seq

      int rpl_opt_seq
      variable - RPL option sequential access
    • rpl_opt_skp

      int rpl_opt_skp
      variable - RPL option skip sequential access
    • rpl_opt_asy

      int rpl_opt_asy
      variable - RPL option
    • rpl_opt_kge

      int rpl_opt_kge
      variable - RPL option
    • rpl_opt_gen

      int rpl_opt_gen
      variable - RPL option
    • rpl_opt_xrba

      int rpl_opt_xrba
      variable - RPL option
    • rpl_opt_key

      int rpl_opt_key
      variable - RPL option
    • rpl_opt_adr

      int rpl_opt_adr
      variable - RPL option
    • rpl_opt_cnv

      int rpl_opt_cnv
      variable - RPL option
    • rpl_opt_bwd

      int rpl_opt_bwd
      variable - RPL option
    • rpl_opt_lrd

      int rpl_opt_lrd
      variable - RPL option
    • rpl_opt_waitx

      int rpl_opt_waitx
      variable - RPL option
    • rpl_opt_upd

      int rpl_opt_upd
      variable - RPL option
    • rpl_opt_nsp

      int rpl_opt_nsp
      variable - RPL option
    • cur_rpl_next

      int cur_rpl_next
      variable - RPL next RPL address in chained requests
    • cur_rpl_lrec

      int cur_rpl_lrec
      variable - RPL record length for RECV PUT
    • cur_rpl_lxrba

      long cur_rpl_lxrba
      variable - RPL last rec VES/VX0 XRBA if neg = last KSIR XRBA
    • cur_rpl_cxrba

      long cur_rpl_cxrba
      variable - RPL cur position VES/VX0
    • cur_rpl_openc

      int cur_rpl_openc
      variable - unique ACB open count to detect req'd pos reet
    • cur_rpl_larea

      int cur_rpl_larea
      variable - RPL area length
    • cur_rpl_flag

      int cur_rpl_flag
      variable - RPL flags for UPD positioning etc.
    • cur_rpl_ksit

      long cur_rpl_ksit
      variable - XRBA of current KSIT
    • cur_rpl_ksir

      long cur_rpl_ksir
      variable - XRBA of current KSIR
    • rpl_flag_getok

      int rpl_flag_getok
      variable - prev RPL GET successful
    • rpl_flag_getnf

      int rpl_flag_getnf
      variable - prev RPL GET record not found
    • rpl_flag_ksit

      int rpl_flag_ksit
      variable - get/put in KSIT
    • rpl_id

      int rpl_id
      variable - RPL ID
    • rpl_stype

      int rpl_stype
      variable - RPL type VSAM
    • rpl_len

      int rpl_len
      variable - RPL length
    • rpl_ecb

      int rpl_ecb
      variable - RPL address ecb to post
    • rpl_feedb

      int rpl_feedb
      variable - RPL feedback
    • rpl_lkey

      int rpl_lkey
      variable - RPL length of generic key
    • rpl_acb

      int rpl_acb
      variable - RPL acb addr
    • rpl_area

      int rpl_area
      variable - RPL record area
    • rpl_arg

      int rpl_arg
      variable - RPL argment for KSDS key, RRDS #, ESDS/LDS RBA/XRBA
    • rpl_opt

      int rpl_opt
      variable - RPL options 2 bytes and 2 bytes filler
    • rpl_next

      int rpl_next
      variable - RPL next RPL in chain
    • rpl_lrec

      int rpl_lrec
      variable - RPL length of record for recv PUT
    • rpl_lxrba

      int rpl_lxrba
      variable - RPL last rec XRBA in VES or VX0
    • rpl_cxrba

      int rpl_cxrba
      variable - RPL cur pos XRBA in VES or VX0
    • rpl_openc

      int rpl_openc
      variable - RPL unique open ACB count
    • rpl_larea

      int rpl_larea
      variable - RPL length of record area
    • rpl_flag

      int rpl_flag
      variable - RPL flags for UPD positioning etc.
    • rpl_ksit

      int rpl_ksit
      variable - RPL current KSIT XRBA
    • rpl_ksir

      int rpl_ksir
      variable - RPL current KSIR XRBA
    • rpl_length

      int rpl_length
      variable
    • pdf_def

      byte pdf_def
      variable - default Problem Determination Field
    • rc_ok

      byte rc_ok
      variable - operation sccessful
    • rc_log

      byte rc_log
      variable - rpl logical error
    • rc_phy

      byte rc_phy
      variable - rpl physical error
    • cmp_ves

      byte cmp_ves
      variable - RPLBASER error accessing ES base
    • cmp_vxn

      byte cmp_vxn
      variable - RPLAIXER error accessing AIX index
    • cmp_vx0

      byte cmp_vx0
      variable - primary KSDS ro VRRDS index
    • rn_ok

      byte rn_ok
      variable - ok
    • rn_eod

      byte rn_eod
      variable - RPLEODER end of data
    • rn_dup_key

      byte rn_dup_key
      variable - RPLDUP attempt to write dup pri or unique aix key
    • rn_out_of_seq

      byte rn_out_of_seq
      variable - RPLSEQCK skip seq key out of sequence
    • rn_rcd_not_fnd

      byte rn_rcd_not_fnd
      variable - RPLNOREC record not found
    • rn_rba_not_rcd

      byte rn_rba_not_rcd
      variable - RPLINRBA RBA not a record address
    • rn_area_len_err

      byte rn_area_len_err
      variable - RPLINBUF record area too small
    • rn_inv_acc_type

      byte rn_inv_acc_type
      variable - RPLINACC invalid RPL access for ACB MACRF
    • rn_inv_key_req

      byte rn_inv_key_req
      variable - RPLINKEY invalid key req for ESDS/RRDS
    • rn_inv_rpl_opt

      byte rn_inv_rpl_opt
      variable - RPLINVP invalid RPL options
    • rn_inv_rec_len

      byte rn_inv_rec_len
      variable - RPLINLEN rec len > max or <> fixed len
    • rn_inv_key_len

      byte rn_inv_key_len
      variable - RPLKEYLC key len > max or 0
    • rn_inv_rec_num

      byte rn_inv_rec_num
      variable - RPLIRRNO invalid RRDS record #
    • rn_inv_rba_req

      byte rn_inv_rba_req
      variable - RPLRRADR invalid RBA req to RRDS
    • rn_acb_not_open

      byte rn_acb_not_open
      variable - z390 catch all
    • rn_log_reason

      String[] rn_log_reason
      variable
    • rn_read_data_err

      byte rn_read_data_err
      variable - RPLRDERD data read error
    • rn_read_index_err

      byte rn_read_index_err
      variable - RPLRDERI index read error
    • rn_write_data_err

      byte rn_write_data_err
      variable - RPLWTERD data write error
    • rn_write_index_err

      byte rn_write_index_err
      variable - RPLWTERI index write error
    • rn_phy_reason

      String[] rn_phy_reason
      variable
    • cur_ves_dcba

      int cur_ves_dcba
      variable
    • cur_ves_tiot_index

      int cur_ves_tiot_index
      variable
    • cur_ves_rec

      int cur_ves_rec
      variable
    • cur_ves_xrba

      long cur_ves_xrba
      variable
    • last_ves_xrba

      long last_ves_xrba
      variable - last ves rec xrba
    • cur_vx0_dcba

      int cur_vx0_dcba
      variable
    • cur_vx0_tiot_index

      int cur_vx0_tiot_index
      variable
    • cur_vx0_xrba

      long cur_vx0_xrba
      variable
    • cur_vx0_ves_xrba

      long cur_vx0_ves_xrba
      variable
    • null_rec

      boolean null_rec
      variable
    • null_rec_bytes

      byte[] null_rec_bytes
      variable
    • cur_rec_bytes

      byte[] cur_rec_bytes
      variable
    • cur_vxn_xrba

      long cur_vxn_xrba
      variable
    • write_lrec

      int write_lrec
      variable
    • read_lrec

      int read_lrec
      variable
    • bwd_xrba

      long bwd_xrba
      variable
    • cur_key

      byte[] cur_key
      variable
    • cur_key_buff

      ByteBuffer cur_key_buff
      variable
    • last_key

      byte[] last_key
      variable
    • vx0_lrec

      long vx0_lrec
      variable
    • comp_key_len

      int comp_key_len
      variable
    • high_key_rec

      long high_key_rec
      variable
    • low_key_rec

      long low_key_rec
      variable
    • next_key_rec

      long next_key_rec
      variable
    • last_key_rec

      long last_key_rec
      variable
    • last_key_vx0_xrba

      long last_key_vx0_xrba
      variable
    • last_key_ves_xrba

      long last_key_ves_xrba
      variable
    • last_key_gen_rc

      int last_key_gen_rc
      variable
    • prev_key_rec

      long prev_key_rec
      variable
    • prev_key_vx0_xrba

      long prev_key_vx0_xrba
      variable
    • prev_key_ves_xrba

      long prev_key_ves_xrba
      variable
    • prev_key_gen_rc

      int prev_key_gen_rc
      variable
    • tot_vsam_oper

      int tot_vsam_oper
      variable
    • tot_acb_open

      int tot_acb_open
      variable
    • tot_acb_close

      int tot_acb_close
      variable
    • tot_rpl_get

      int tot_rpl_get
      variable
    • tot_rpl_put

      int tot_rpl_put
      variable
    • tot_avl_find

      int tot_avl_find
      variable - KSIR finds in AVL tree
    • max_avl_height

      int max_avl_height
      variable - max height of AVL tree
    • tot_avl_insert_ksit

      int tot_avl_insert_ksit
      variable - KSIT inserts trees
    • tot_avl_insert_ksir

      int tot_avl_insert_ksir
      variable - KSIR insert record in tree
    • tot_avl_rotate

      int tot_avl_rotate
      variable - KSIR rotates to bal AVL tree
    • tot_avl_rotate_ll

      int tot_avl_rotate_ll
      variable - KSIR rotates to bal AVL tree
    • tot_avl_rotate_lr

      int tot_avl_rotate_lr
      variable - KSIR rotates to bal AVL tree
    • tot_avl_rotate_rr

      int tot_avl_rotate_rr
      variable - KSIR rotates to bal AVL tree
    • tot_avl_rotate_rl

      int tot_avl_rotate_rl
      variable - KSIR rotates to bal AVL tree
    • tot_rpl_point

      int tot_rpl_point
      variable
    • tot_rpl_erase

      int tot_rpl_erase
      variable
    • tot_ves_cache

      int tot_ves_cache
      variable
    • tot_ves_read

      int tot_ves_read
      variable
    • tot_ves_write

      int tot_ves_write
      variable
    • tot_vxn_cache

      int tot_vxn_cache
      variable
    • tot_vxn_read

      int tot_vxn_read
      variable
    • tot_vxn_write

      int tot_vxn_write
      variable
    • tot_vxn_find

      int tot_vxn_find
      variable
    • max_vxn_height

      int max_vxn_height
      variable
    • comp_rc

      int comp_rc
      variable
    • comp_key_gen_rc

      int comp_key_gen_rc
      variable
    • cb_byte

      byte[] cb_byte
      variable
    • cb

      variable
    • cur_ksit_xrba

      long cur_ksit_xrba
      variable
    • cur_ksit_id

      int cur_ksit_id
      variable - C'KSIT'
    • ksit_id_val

      int ksit_id_val
      variable - C'KSIT"
    • cur_ksit_top

      long cur_ksit_top
      variable - top of balanced tree KSIR
    • cur_ksit_fst

      long cur_ksit_fst
      variable - next first and lowest KSIR XRBA (-1 none, high bit if last add)
    • cur_ksit_lst

      long cur_ksit_lst
      variable - next last and higher KSIR XRBA (-1 none, high bit if last add)
    • ksit_id

      int ksit_id
      variable - id
    • ksit_top

      int ksit_top
      variable - top KSIR XRBA
    • ksit_fst

      int ksit_fst
      variable - first and lowest KSIR XRBA
    • ksit_lst

      int ksit_lst
      variable - last and highest KSIR XRBA
    • ksit_len

      int ksit_len
      variable - KSIT length
    • cbksit_byte

      byte[] cbksit_byte
      variable
    • cur_ksir_xrba

      long cur_ksir_xrba
      variable
    • xrba_high_bit

      long xrba_high_bit
      variable
    • xrba_max_pos

      long xrba_max_pos
      variable
    • cur_ksir_id

      int cur_ksir_id
      variable - C'KSIR'
    • ksir_id_val

      int ksir_id_val
      variable - C'KSIR'
    • cur_ksir_par

      long cur_ksir_par
      variable - parent KSIR or KSIT
    • cur_ksir_low

      long cur_ksir_low
      variable - lower KSIR XRBA (-1 none, high bit if last add)
    • cur_ksir_high

      long cur_ksir_high
      variable - higer KSIR XRBA (-1 none, high bit if last add)
    • cur_ksir_fwd

      long cur_ksir_fwd
      variable - next seq forward KSIR XRBA (-1 none)
    • cur_ksir_bwd

      long cur_ksir_bwd
      variable - next seq backward KSIR XRBA (-1 none)
    • cur_ksir_rec

      long cur_ksir_rec
      variable - xrba of cur record (may change for var update)
    • cur_ksir_low_height

      byte cur_ksir_low_height
      variable - max height of low node
    • cur_ksir_high_height

      byte cur_ksir_high_height
      variable - max height of high node
    • ksir_id

      int ksir_id
      variable - id C'KSIR'
    • ksir_par

      int ksir_par
      variable - parent KSIR or KSIT
    • ksir_low

      int ksir_low
      variable - next lower KSIR or -1 (high bit if last add)
    • ksir_high

      int ksir_high
      variable - next highest KSIR or -1 (high bit if last add)
    • ksir_bwd

      int ksir_bwd
      variable - next backward KSIR or -1
    • ksir_fwd

      int ksir_fwd
      variable - next foward KSIR or -1
    • ksir_rec

      int ksir_rec
      variable - xrba of cur record (may change for var update)
    • ksir_low_height

      int ksir_low_height
      variable - max height of low node
    • ksir_high_height

      int ksir_high_height
      variable - max height of high node
    • ksir_len

      int ksir_len
      variable - KSIR length
    • cur_node_xrba

      long cur_node_xrba
      variable - current node on path to insert
    • prev_node_xrba

      long prev_node_xrba
      variable - prev ksir on path
    • avl_left

      boolean avl_left
      variable - rotate left or right side
    • avl_unbalanced

      boolean avl_unbalanced
      variable - rotation required for avl_r KSIR
    • avl_r_xrba

      long avl_r_xrba
      variable - AVL rotation ksir
    • avl_r_par

      long avl_r_par
      variable - r parent
    • avl_r_low

      long avl_r_low
      variable - r lower left
    • avl_r_high

      long avl_r_high
      variable - r higher right
    • avl_r_low_height

      byte avl_r_low_height
      variable - r low branch height
    • avl_r_high_height

      byte avl_r_high_height
      variable - r high branch height
    • avl_x_xrba

      long avl_x_xrba
      variable - AVL next lower/higher ksir to move up
    • avl_x_low

      long avl_x_low
      variable - x lower left
    • avl_x_high

      long avl_x_high
      variable - x higher right
    • avl_x_low_height

      byte avl_x_low_height
      variable - r low branch height
    • avl_x_high_height

      byte avl_x_high_height
      variable - r high branch height
    • avl_w_xrba

      long avl_w_xrba
      variable - AVL next lower/higher ksir from x for LR/RL rotate
    • avl_w_low

      long avl_w_low
      variable - x lower left
    • avl_w_high

      long avl_w_high
      variable - x higher right
    • avl_w_low_height

      byte avl_w_low_height
      variable - r low branch height
    • avl_w_high_height

      byte avl_w_high_height
      variable - r high branch height
    • vcb_alloc

      boolean vcb_alloc
      variable
    • max_vcb

      int max_vcb
      variable - max vcb alloc allowed
    • max_vcb_hash

      int max_vcb_hash
      variable - hash index with no dup allowed
    • max_vcb_lrec

      int max_vcb_lrec
      variable - max vcb record size allowed
    • tot_vcb

      int tot_vcb
      variable - total vcb allocated + 1 to skip 0 index
    • tot_vcb_req

      int tot_vcb_req
      variable - total buffers requested
    • tot_vcb_hits

      int tot_vcb_hits
      variable - total buffers reused (saved I/O)
    • cur_vcb_tiot

      int cur_vcb_tiot
      variable - file tiot index
    • cur_vcb_xrba

      long cur_vcb_xrba
      variable - file xrba addr
    • cur_vcb_lrec

      int cur_vcb_lrec
      variable - file rec length
    • ver_rpl_lrec

      int ver_rpl_lrec
      variable
    • vcb_index

      int vcb_index
      variable - index of alloc vcb
    • vcb_tiot

      int[] vcb_tiot
      variable
    • vcb_xrba

      long[] vcb_xrba
      variable
    • vcb_lrec

      int[] vcb_lrec
      variable
    • vcb_addr

      int[] vcb_addr
      variable
    • cur_vcb_addr

      int cur_vcb_addr
      variable - addr next vcb buffer to alloc
    • vcb_byte

      byte[] vcb_byte
      variable - vcb buffer
    • vcb_buff

      ByteBuffer vcb_buff
      variable
    • vcb_hash

      int vcb_hash
      variable
    • vcb_hash_index

      int[] vcb_hash_index
      variable
    • vcb_lru

      int vcb_lru
      variable
    • vcb_mru

      int vcb_mru
      variable
    • next_vcb

      int next_vcb
      variable
    • prev_vcb

      int prev_vcb
      variable
    • vcb_mru_prev

      int[] vcb_mru_prev
      variable
    • vcb_mru_next

      int[] vcb_mru_next
      variable
  • Constructor Details

    • vz390

      public vz390()
      Dummy constructor - no initialization needed
  • Method Details

    • init_vz390

      public void init_vz390(tz390 shared_tz390, pz390 shared_pz390, sz390 shared_sz390)
      init vz390
      Parameters:
      shared_tz390 - shared tz390
      shared_pz390 - shared pz390
      shared_sz390 - shared sz390
    • init_rn_codes

      private void init_rn_codes()
      init logical and physical reason codes for use in set_feedback tracing
    • svc_vsam

      public void svc_vsam()
      Execute VSAM access method service requested
    • svc_open_acb

      public void svc_open_acb()
      Open ACB defining VSAM ESDS, RRDS, or KSDS
      1. Use DDNAME/DSNAME to load VCDT and find VCLR entry based on cat.name or search for VCLR with matching ACBNAME. RPI 681
      2. Verify ACB vs VCDT options
      3. Open VES, VX0, and any upgrade VXN's
      4. If REPRO and OUTPUT, then reset ves/vx0 eof RPI 701
      Notes: 1. Issue ABEND 013 if open fails.
    • svc_close_acb

      public void svc_close_acb()
      Close open acb.
      1. Close VESDCB
      2. Close VX0 if not ESDS or fixed RRDS
      3. If KSDS index updates pending, rewrite VXNDCB's from key index trees.
    • init_fields

      private void init_fields()
      Initialize VSAM "control block" fields
    • init_vcdt_fields

      private void init_vcdt_fields()
      Initialize VCDT fields
    • init_vclr_fields

      private void init_vclr_fields()
      Initialize VCLR fields
    • init_vaix_fields

      private void init_vaix_fields()
      Initialize VAIX fields
    • init_vpth_fields

      private void init_vpth_fields()
      Initialize VPTH fields
    • init_acb_fields

      private void init_acb_fields()
      Initialize ACB fields
    • init_rpl_fields

      private void init_rpl_fields()
      Initialzie RPL fields
    • load_vcdt

      private boolean load_vcdt()
      load VCDT using ACB DSNAME or DDNAME
      1. If file spec includes dot, use suffix to find VCDT entry else use ACBNAME field.
      2. Set ACBDCBN, and ACBDCBA from VCDT VCLR or VPTH entry.
      Returns:
      boolean to indicate success (true) or failure (false)
    • find_vclr

      private boolean find_vclr()
      find VCLR/VPTH entry in VCDT
      1. Set cur_vclra_addr
      2. Set cur_vptha_addr or 0
        1. If vpth_flag_aixp, set acb_oflgs_aixp else 0
        2. If vpth_flag_aixu, set acb_oflgs_aixu else 0
      3. Set cur_vcdt_dcba for use by init_acb_dcb.
      Returns:
      boolean to indicate success (true) or failure (false)
    • fetch_acb_fields

      private void fetch_acb_fields()
      fetch acb fields from cur_acb_addr
    • fetch_vclr_fields

      private void fetch_vclr_fields()
      fetch current vclr fields used by rpl_get/put. Note open_acb does additional vclr field fetches,
    • fetch_rpl_fields

      private void fetch_rpl_fields()
      fetch RPL, ACB, and VCDT fields for GET, PUT, etc.
    • check_acb_macrf

      private boolean check_acb_macrf()
      check for consistency between VCDT and ACB options and if
      Returns:
      true
    • open_acb_dcbs

      private boolean open_acb_dcbs()
      1. dynamically allocate and open dcbs required for VES, VX0, and any upgrade VXN's.
      2. Alloc memory for last key if KSDS.
      Returns:
      boolean to indicate success (true) or failure (false)
    • init_acb_dcb

      private void init_acb_dcb(int dcb_addr, int dcb_lrecl_f, int dcb_dsname, String dcb_ddname)
      copy model dcb from vcdt_dcba to new dynamcially allocated dcb address and set DCBLRECLF and DCBDSNAM fields
      Parameters:
      dcb_addr - - int
      dcb_lrecl_f - - int
      dcb_dsname - - int
      dcb_ddname - - String
    • open_acb_dcb

      private boolean open_acb_dcb(int dcb_addr)
      dynamically allocate and open DCB for VES, VX0, VXN's
      Parameters:
      dcb_addr - - int - address of DCB or ACB
      Returns:
      boolean to indicate success (true) or failure (false)
    • close_acb_dcbs

      private boolean close_acb_dcbs()
      close dynamically allocated ACB DCB's
      Returns:
      boolean to indicate success (true) or failure (false)
    • get_vcdt_path

      private void get_vcdt_path()
      get VCDT path for use in VX?DCB file opens
    • svc_rpl_get

      private void svc_rpl_get()
      retrieve record from open VSAM ACB/VCDT cluster.
    • rpl_get_esds_seq

      private void rpl_get_esds_seq()
      ESDS seq get
    • rpl_get_esds_adr

      private void rpl_get_esds_adr()
      ESDS get by rba or xrba
    • set_rpl_lxrba

      private void set_rpl_lxrba(long xrba)
      1. set RPLLXRBA last rec XRBA
        1. VES for ESDS/RRDS
        2. VX0 for KSDS/VRRDS
      Parameters:
      xrba - - long
    • set_rpl_cxrba

      private void set_rpl_cxrba(long xrba)
      set RPL cur pos xrba 1. VES for ESDS/RRDS 2. VX0 for KSDS/VRRDS
      Parameters:
      xrba - - long
    • set_rpl_ksit

      private void set_rpl_ksit()
      1. set RPLLXRBA last rec XRBA
        1. VES for ESDS/RRDS
        2. VX0 for KSDS/VRRDS
    • set_rpl_arg_rba

      private void set_rpl_arg_rba()
      store cur_ves_xrba as RBA or XRBA in RPLARG and limit check
    • rpl_get_ksds_seq

      private void rpl_get_ksds_seq()
      get next KSDS seq. rcd else eof/error
    • get_first_seq_ksir

      private boolean get_first_seq_ksir()
      position to first KSIR in KSIT for either FWD or BWD seq. access.
      Returns:
      boolean to indicate success (true) or failure (false)
    • read_ksir_cur_rec

      private boolean read_ksir_cur_rec()
      read record from current KSIR and postion to next KSIR or index entry or return eod
      Returns:
      boolean to indicate success (true) or end-of-data (false)
    • broken_ksir_link

      private void broken_ksir_link(String type, long xrba1, long xrba2)
      display error message for KSIR broken links and set feedback ves data error
      Parameters:
      type - - String
      xrba1 - - long
      xrba2 - - long
    • set_ksds_next_index

      private boolean set_ksds_next_index()
      set cur_vx0_xrba to next ksds index going forward or backward else set eod
      Returns:
      boolean to indicate success (true) or failure (false)
    • set_rpl_ksds_next

      private void set_rpl_ksds_next()
      setup for next seq record either in KSIT or VX0 index and turn off rpl_flag_ksit if done
    • set_rpl_flag

      private void set_rpl_flag()
      store rpl_flag
    • set_vx0_ksds_next

      private void set_vx0_ksds_next()
      inc or dec vx0 for next key index entry
    • rpl_get_ksds_key

      private void rpl_get_ksds_key()
      get KSDS get by key
    • rpl_get_rrds_key

      private void rpl_get_rrds_key()
      get for open RRDS file Notes:
      1. Read vx0 XRBA for rel. rcd #
    • rpl_get_rrds_seq

      private void rpl_get_rrds_seq()
      get seq for RRDS file Notes:
      1. Read vx0 at rpl_cxrba to get ves xrba
    • find_ksds_key

      private boolean find_ksds_key()
      search vx0 for ksds key in rplarg and set cur_vx0_xrba entry if found else false.
      Returns:
      boolean to indicate success (true) or failure (false)
    • set_rpl_cur_rec

      private void set_rpl_cur_rec(boolean found)
      set rpl_flag_getok or rpl_flag_getnf and save along with rpl_flag_ksit possible following put or insert.
      Parameters:
      found - - boolean
    • reset_rpl_cur_rec_flags

      private void reset_rpl_cur_rec_flags()
      reset flags for RPL current record
    • find_ksir

      private boolean find_ksir()
      search ksit binary tree at cur_vx0_xrba (negative)
      1. Set cur_ves_xrba to record if found
      2. Set cur_rpl_ksir to last ksir for use by insert_ksir
      3. Set avl_r_xrba/par/low/high if ksir found requiring AVL rotation to keep tree balanced after KSIR is inserted.
      Returns:
      boolean to indicate success (true) or failure (false)
    • get_ksir_rec

      private boolean get_ksir_rec()
      set cur_ves_xrba to ksir rec unless deleted
      Returns:
      boolean to indicate success (true) or failure (false)
    • get_rrds_ves_xrba

      private boolean get_rrds_ves_xrba(boolean key)
      1. if random access by key rec #, then cur_vx0_rba = rec# * 8 else cur_vx0_xrba = cur_rpl_cxrba.
      2. Set cur_ves_xrba as follows if cur_vx0_xrba > eod set cur_vx0_xrba = -1 (not found) and return false
      3. Set cur_ves_xrba as follows:
        1. -1 if 0 return false (no rec found)
        2. xrba and return true.
      Note:
      1. VX0 XRBA's for valid records are stored +1. to distinguish 0 as unwritten VES XRBA.
      Parameters:
      key - - boolean
      Returns:
      boolean to indicate success (true) or failure (false)
    • svc_rpl_put

      private void svc_rpl_put()
      update or write new record in open VSAM ACB/VCDT cluster.
    • rpl_put_esds

      private void rpl_put_esds()
      put for open ESDS output file
    • rpl_put_ksds

      private void rpl_put_ksds()
      put for open KSDS output file
    • rpl_put_rrds

      private void rpl_put_rrds()
      put for open RRDS output file Notes:
      1. Always use rel rec # to calc
      2. Read vx0 XRBA for rel. rcd #
      3. If XRBA = 0, add rec to VES else rewrite
    • rewrite_ves_rec

      private boolean rewrite_ves_rec(int tiot_index, long xrba_index)
      rewrite RRDS or KSDS record at cur_ves_xrba and update index xrba if it changed due to variable length change.
      Parameters:
      tiot_index - - int
      xrba_index - - long
      Returns:
      boolean to indicate success (true) or failure (false)
    • add_ves_rec

      private boolean add_ves_rec(int tiot_index, long index_xrba)
      add RRDS or KSDS record to VES and update index XRBA address which may be in VX0 or in VES KSIR.
      Parameters:
      tiot_index - - int
      index_xrba - - long
      Returns:
      boolean to indicate success (true) or failure (false)
    • svc_rpl_erase

      private void svc_rpl_erase()
      erase current record retrieved from open VSAM ACB/VCDT cluster. Notes:
      1. The current XRBA in VX0 primary index is set to high values.
    • svc_rpl_point

      private void svc_rpl_point()
      set current position to specified key, record, or RBA in ESDS base
    • set_feedback

      private void set_feedback(byte pdf, byte rc, byte cmp, byte rn)
      store RPLFEEDB 4 byte field with: 0 - pdf_ Problem Determination Field 1 - rc_ return code (also stored in R15) 2 - cmp_ component code 3 - rn_ reason code for corresponding rc_
      Parameters:
      pdf - - byte
      rc - - byte
      cmp - - byte
      rn - - byte
    • read_ves_rec

      private boolean read_ves_rec()
      read record from VES into RPLAREA and set length in RPLLREC to the VES ESDS base cluster data file at specified xrba. Notes: 1. If ESDS, skip duplicate length after record. // RPI 672
      Returns:
      boolean to indicate success (true) or failure (false)
    • write_ves_rec

      private boolean write_ves_rec()
      write current RPL record in RPLAREA with length RPLLREC to the VES base cluster data file at specified xrba. Notes:
      1. Variable length records have 4 byte length preceeding record.
      2. ESDS variable length records also have 4 byte length following record to support BWD read backward option without any index.
      3. Used by ESDS, RRDS, and KSDS when not inserted record
      Returns:
      boolean to indicate success (true) or failure (false)
    • write_ves_cb

      private boolean write_ves_cb(long cb_xrba, int cb_len)
      write control block in ves at xrba into cb byte array Notes:
      Parameters:
      cb_xrba - - long
      cb_len - - int
      Returns:
      boolean to indicate success (true) or failure (false)
    • read_ves_cb

      private boolean read_ves_cb(long cb_xrba, int cb_len)
      read control block in ves at xrba into cb byte array Notes:
      Parameters:
      cb_xrba - - long
      cb_len - - int
      Returns:
      boolean to indicate success (true) or failure (false)
    • read_ksds_index

      private boolean read_ksds_index()
      read ksds index entry with key at cur_vx0_xrba and set cur_ves_xrba and cur_key
      Returns:
      boolean to indicate success (true) or failure (false)
    • read_ksir_key

      private boolean read_ksir_key()
      read ksir key at cur_ksir_rec + cur_vclr_koff into cur_key
      Returns:
      boolean to indicate success (true) or failure (false)
    • read_xrba_ptr

      private boolean read_xrba_ptr()
      read ves xrba prt in vx0 at cur_vx0_xrba and set cur_ves_xrba
      Returns:
      boolean to indicate success (true) or failure (false)
    • write_ksds_index

      private boolean write_ksds_index()
      write ksds primary index entry with last_ves_xrba ptr and key.
      Returns:
      boolean to indicate success (true) or failure (false)
    • write_xrba_ptr

      private boolean write_xrba_ptr(int tiot_index, long xrba_index, long xrba_rec)
      write ves rcd xrba ptr at vx0/ves(KSIR) index xrba in and update cache for reuse
      Parameters:
      tiot_index - - int
      xrba_index - - long
      xrba_rec - - long
      Returns:
      boolean to indicate success (true) or failure (false)
    • reuse_file

      private boolean reuse_file(int adcb)
      reset file length and tiot_eof addr for files being resused either due to reuse option or REPRO seq out options..
      Parameters:
      adcb - - int
      Returns:
      boolean to indicate success (true) or failure (false)
    • set_esds_bwd_next

      private boolean set_esds_bwd_next()
      backup to next record for ESDS SEQ BWD retrieval and return logical EOD error if at front of file.
      Returns:
      boolean to indicate success (true) or failure (false)
    • comp_key

      private int comp_key(int key1_loc, byte[] key_byte)
      compare key in RPLAREA+KEYOFF with key in last_vx0_key or cur_vx0_key array using comp_key_len set by rpl fetch -1, 0, 1 for low, equal, high Notes:
      1. Set matching_key_bytes for generic key processing
      Parameters:
      key1_loc - - int
      key_byte - - byte[]
      Returns:
      int - return code
    • rpl_key_high_values

      private boolean rpl_key_high_values()
      compare key in RPLAREA+KEYOFF with high values RPI 779 using cur_vclr_klen -1, 0, 1 for low, equal, high.
      Returns:
      boolean to indicate success (true) or failure (false)
    • get_vcb_buff

      private boolean get_vcb_buff(int tiot_index, long xrba, int rec_len)
      get VSAM Cache Buffer (VCB) for file tiot_index, xrba, rec_len
      1. If rec_len > max_vcb_lrec return false.
      2. search for allocated vcb If not found add new vcb up to max_vcb else replace least recently used allocated vcb.
      3. Set vcb_index and return true.
      Parameters:
      tiot_index - - int - index into tiot
      xrba - - long
      rec_len - - int
      Returns:
      boolean to indicate success (true) or failure (false)
    • update_vcb_mru

      private void update_vcb_mru()
      move current vcb at vcb_index to most recently used (vcb_mru).
    • find_vcb

      private boolean find_vcb()
      find matching vcb with same tiot, xrba, and record length if found set vcb_index and return true else false
      Returns:
      boolean to indicate success (true) or failure (false)
    • calc_vcb_hash

      private int calc_vcb_hash()
      calc vcb hash index from tiot + xrba + lrec Notes:
      1. If two vcb requests geenrate same hash only the latest will be found and the prior one will eventually be replaced via lru.
      Returns:
      int - hash code
    • read_ksit

      private boolean read_ksit()
      read KSIT into cb array and set cur_ksit xrbas
      Returns:
      boolean to indicate success (true) or failure (false)
    • read_ksir

      private boolean read_ksir(long xrba)
      read KSIR int cb and set cur_ksit xrba's
      Parameters:
      xrba - long input xrba value
      Returns:
      boolean to indicate success (true) or failure (false)
    • update_ksds_rec

      private boolean update_ksds_rec()
      rewrite ksds record following successful GET with UPD
      Returns:
      boolean to indicate success (true) or failure (false)
    • insert_ksds_rec

      private boolean insert_ksds_rec()
      insert ksds record following unsuccessful GET with UPD
      Returns:
      boolean to indicate success (true) or failure (false)
    • insert_ksit

      private boolean insert_ksit()
      insert new KSIT for cur_vx0 entry with KSIR for existing record and KSIR for new inserted record
      Returns:
      boolean to indicate success (true) or failure (false)
    • alloc_ves

      private long alloc_ves(int cb_len)
      return xrba of new ves cb/rec area and update eof xrba
      Parameters:
      cb_len - - int - length of cb to be allocated
      Returns:
      long - xrba
    • insert_ksir

      private boolean insert_ksir()
      insert new KSIR to existing KSIT at current KSIR and balance AVT tree by rotating KSIR's if needed.
      Returns:
      boolean to indicate success (true) or failure (false)
    • avl_update_height

      private boolean avl_update_height()
      search up KSIR nodes from insertion and perform the following steps:
      1. Increment height of all nodes on path prior to unbalanced node.
      2. Find first (and only) node which may be unbalanced (left vs right height differs by 2).
      3. If unbalanced node found, set avl_unbalanced and avl_r_xrba
      Notes:
      1. Only returns false if I/O error
      Returns:
      boolean to indicate success (true) or failure (false)
    • check_heights

      private boolean check_heights(String type, byte t1, byte t2, byte t3, byte t4)
      verify updated T1-T4 within +-1
      Parameters:
      type - - String - name of KSIR type
      t1 - -byte
      t2 - -byte
      t3 - -byte
      t4 - -byte
      Returns:
      boolean to indicate success (true) or failure (false)
    • unbalanced_ksir_error

      private void unbalanced_ksir_error(String type)
      display unbalanced KSIR found
      Parameters:
      type - - String - Name of KSIR type
    • avl_rotate_ksir

      private boolean avl_rotate_ksir()
      perform AVL rotation around the last avl_r_xrba found during find_ksir prior to insert. Note the KSIR to be rotated may be anywhere between the inserted KSIR and the KSIT. Only one rotation is required per insert. The AVL tree is named after its two inventors G.M. Adelson-Velsky and E.M. Landis. who published it in their 1962 paper "An algorithm for the organization of information." For good overview of the process to maintain balanced tree during random insertions, see * * http://sky.fit.qut.edu.au/~maire/avl/System/AVLTree.html In summary the process is as follows:
      1. Following binary search of tree to insert record at correct node, update current and parent nodes to 1 of 3 possible states:
        1. left/low side +1 depth (high bit in cur_ksir_low)
        2. even
        3. right/high side +1 depth (high bit in cur_ksir_high)
      2. If node found with new +2 state, rotate as follows to rebalance which ends the update process.
        1. LL - move left left node up one level by swapping n ode with left node.
        2. RR - move right right node up one level by swapping node with right node
        3. LR - move left right node up one level by swapping node with left right node
        4. RL - move right left node up one level by swapping mode with right left node.
      Returns:
      boolean to indicate success (true) or failure (false)
    • avl_rotate_left_left

      private boolean avl_rotate_left_left()
      avl rotate x to r, and r to x_high, and x_high to r_low.
      Returns:
      boolean to indicate success (true) or failure (false)
    • avl_rotate_left_right

      private boolean avl_rotate_left_right()
      avl rotate w (x_high) to r, r to w_high, w_low to x_high, and w_high to r_low.
      Returns:
      boolean to indicate success (true) or failure (false)
    • avl_rotate_right_right

      private boolean avl_rotate_right_right()
      avl rotate x to r, and r to x_low, and x_low to r_high.
      Returns:
      boolean to indicate success (true) or failure (false)
    • avl_rotate_right_left

      private boolean avl_rotate_right_left()
      avl rotate w (x_low) to r, r to w_low, w_high to x_low, and w_low to r_high.
      Returns:
      boolean to indicate success (true) or failure (false)
    • write_ksit

      private boolean write_ksit()
      write new KSIT at ves eof xrba
      Returns:
      boolean to indicate success (true) or failure (false)
    • write_ksir

      private boolean write_ksir()
      write ves KSIR at cur_ksir_xrba
      Returns:
      boolean to indicate success (true) or failure (false)