Class vz390
java.lang.Object
vz390
vz390 is the zVSAM component of z390 called from sz390 to perform
VSAM access method services.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) intvariable - ACBAMBL AMB list(package private) intvariable - ACBDCBA addr of dynamically allocated DCB's(package private) intvariable - ACBDCBN total DCB's for this ACB(package private) intvariable - ACBDDNAM DDNAME > env.(package private) intvariable - ACBDSNAM DSNAME addr > VCDT[.VCLR/VPTH](package private) intvariable - ACBID x'A0'(package private) intvariable - ACBIFR VTAM interface routine (0 for VSAM)(package private) intvariable - ACBLEN half word length of ACB(package private) intvariable - ACBMACRF macrf flags(package private) intvariable - ACBMACR1_ADR access bu RBA or XRBA(package private) intvariable - ACBMACR2_AIX process alt.(package private) intvariable - ACBMACR3_CFX fix control blocks and buffers(package private) intvariable - ACBMACR1_CNV control interval access (not supported)(package private) intvariable - ACBMACR3_DFR defer puts until WRTBUF or required(package private) intvariable - ACBMACR1_DIR direct access(package private) intvariable - ACBMACR2_DSN subtask sharing based on DSN(package private) intvariable - ACBMACR2_GSR global shared resources(package private) intvariable - ACBMACR2_ICI improve control interval processing(package private) intvariable - ACBMACR1_IN input only(package private) intvariable - ACBMACR1_KEY key access(package private) intvariable - ACBMACR2_LSR local shared resources(package private) intvariable - ACBMACR2_NLOGON no logon required(package private) intvariable - ACBMACR1_OUT output add, update, delete(package private) intvariable - ACBMACR2_RST data set reusable (reset rba at open)(package private) intvariable - ACBMACR1_SEQ sequential access(package private) intvariable - ACBMACR3_SIS sequential insert strategy(package private) intvariable - ACBMACR2_SKP skip sequential access(package private) intvariable - ACBMACR1_UBF user buffer management (ignored)(package private) intvariable - ACBPFLGS offset to open flag(package private) bytevariable - ACBAIXP use aix vs primary key(package private) bytevariable - ACBAIXU ugrade aix indexes for VCLR(package private) bytevariable - ACBGET only(package private) bytevariable - ACB_OPEN open(package private) bytevariable - ACBPUT output add, update, delete(package private) intvariable - ACBOPENC unique open ACB count(package private) intvariable - ACBSTYPE x'11' - x'1F' for VSAM vs VTAM(package private) intvariable - ACBVAIXA addr VAIX in VCDT catalog for alt path(package private) intvariable - ACBVCLRA addr VCLR in VCDT catalog(package private) intvariable - ACBVCLRN name from label field (def VCDT entry)(package private) booleanvariable - rotate left or right side(package private) longvariable - r higher right(package private) bytevariable - r high branch height(package private) longvariable - r lower left(package private) bytevariable - r low branch height(package private) longvariable - r parent(package private) longvariable - AVL rotation ksir(package private) booleanvariable - rotation required for avl_r KSIR(package private) longvariable - x higher right(package private) bytevariable - r high branch height(package private) longvariable - x lower left(package private) bytevariable - r low branch height(package private) longvariable - AVL next lower/higher ksir from x for LR/RL rotate(package private) longvariable - x higher right(package private) bytevariable - r high branch height(package private) longvariable - x lower left(package private) bytevariable - r low branch height(package private) longvariable - AVL next lower/higher ksir to move up(package private) longvariable(package private) ByteBuffervariable(package private) byte[]variable(package private) byte[]variable(package private) bytevariable - RPLBASER error accessing ES base(package private) bytevariable - primary KSDS ro VRRDS index(package private) bytevariable - RPLAIXER error accessing AIX index(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable - ACBAMBL AMB list pointer(package private) intvariable - ACBDCBA addr of dyn alloc DCB table(package private) intvariable - ACBDCBT total DCB's for VES, VX0, and VNN upgrades(package private) bytevariable - ACBID x'A0'(package private) intvariable - ACBIFR VTAM interface routine 0 for VSAM(package private) shortvariable - ACBLEN length of ACB(package private) intvariable - ACBMACRF 4 bytes of option bits(package private) bytevariable(package private) intvariable - ACBOPENC unique open ACB count used to reset RPL pos(package private) bytevariable - ACBSTYPE x'11' - x'1F' VSAM vs VTAM types(package private) intvariable - ACBVAIXA addr of VAIX entry in VCDT catalog for path(package private) intvariable - ACBVCLRA addr of VCLR entry in VCDT catalog(package private) Stringvariable - ACBVCLRN label of ACB (def.(package private) byte[]variable(package private) ByteBuffervariable(package private) longvariable - next seq backward KSIR XRBA (-1 none)(package private) longvariable - next seq forward KSIR XRBA (-1 none)(package private) longvariable - higer KSIR XRBA (-1 none, high bit if last add)(package private) bytevariable - max height of high node(package private) intvariable - C'KSIR'(package private) longvariable - lower KSIR XRBA (-1 none, high bit if last add)(package private) bytevariable - max height of low node(package private) longvariable - parent KSIR or KSIT(package private) longvariable - xrba of cur record (may change for var update)(package private) longvariable(package private) longvariable - next first and lowest KSIR XRBA (-1 none, high bit if last add)(package private) intvariable - C'KSIT'(package private) longvariable - next last and higher KSIR XRBA (-1 none, high bit if last add)(package private) longvariable - top of balanced tree KSIR(package private) longvariable(package private) longvariable - current node on path to insert(package private) byte[]variable(package private) intvariable - cur RPL address(package private) intvariable - addr record area(package private) intvariable - argument with KSDS key, RRDS rec #, or RBA/XRBA(package private) longvariable - RPL cur position VES/VX0(package private) intvariable - addr ECB to post completion(package private) intvariable - feedback codes(package private) intvariable - RPL flags for UPD positioning etc.(package private) longvariable - XRBA of current KSIR(package private) longvariable - XRBA of current KSIT(package private) intvariable - RPL area length(package private) intvariable - generic key length(package private) intvariable - RPL record length for RECV PUT(package private) longvariable - RPL last rec VES/VX0 XRBA if neg = last KSIR XRBA(package private) intvariable - RPL next RPL address in chained requests(package private) intvariable - unique ACB open count to detect req'd pos reet(package private) intvariable - RPL option flags(package private) intvariable - cur aix section addr(package private) intvariable - VAIXFLAG option flags(package private) Stringvariable - VAIXID C'VAIX'(package private) intvariable - VAIXKLEN length of aix key in base cluster(package private) intvariable - VAIXKOFF offset of aix key in base cluster(package private) Stringvariable - VAIXNAME name of alternate index(package private) intvariable - VAIXRELA addr related VCLR base cluster catalog entry(package private) Stringvariable - VAIXRELN name of related VCLR base cluster(package private) intvariable - VAIXVXNA addr optional DSNAME (def.(package private) intvariable - addr next vcb buffer to alloc(package private) intvariable - file rec length(package private) intvariable - file tiot index(package private) longvariable - file xrba addr(package private) intvariable - addr loaded VCDT VSAM catalog(package private) intvariable - VCDTAIXT tot aix indexes(package private) intvariable - VCDTCLRT total base clusters(package private) intvariable(package private) Stringvariable - from ACB DDNAME/DSNAME(package private) Stringvariable - VCDTID C'VCDT'(package private) Stringvariable - VCDTNAME name of VCDT catalog(package private) Stringvariable(package private) intvariable - VCDTPTHA addr path entry(package private) intvariable - VCDTPTHT total paths(package private) intvariable - index of tiot entry + 1(package private) intvariable - VCLRAIXA addr of VAIX addr table(package private) intvariable - VCLRAIXN total alterante indexes with upgrade for cluster7(package private) intvariable - VCLRFLAG 4 bytes of flags(package private) Stringvariable - VCLRID C"VCLR"(package private) intvariable - VCLRKLEN KSDS primary key length(package private) intvariable - VCLRKOFF KSDS primary key offset(package private) intvariable - VCLRLAVG average record length for VREC(package private) intvariable - VCLRLREC max length or fixed length(package private) Stringvariable - VCLRNAME name of base cluster(package private) Stringvariable - VCLRTYPE type of base cluster(package private) intvariable - VCLRVESA addr DSNAME override for VES(package private) intvariable - VCLRVX0A addr DSNAME override for VX0(package private) intvariable(package private) intvariable(package private) intvariable(package private) longvariable(package private) intvariable - VPTHENTA addr of VAIX or VCLR entry for path(package private) Stringvariable - VPTHENTN name of path (VAIX or VCLR)(package private) intvariable - VPTHFLAG 4 byte option flags(package private) Stringvariable - VPTHID C'VPTH'(package private) Stringvariable - VPTHNAME name of path(package private) bytevariable(package private) intvariable(package private) intvariable(package private) longvariable(package private) longvariable(package private) longvariable(package private) longvariable(package private) intvariable - next backward KSIR or -1(package private) intvariable - next foward KSIR or -1(package private) intvariable - next highest KSIR or -1 (high bit if last add)(package private) intvariable - max height of high node(package private) intvariable - id C'KSIR'(package private) intvariable - C'KSIR'(package private) intvariable - KSIR length(package private) intvariable - next lower KSIR or -1 (high bit if last add)(package private) intvariable - max height of low node(package private) intvariable - parent KSIR or KSIT(package private) intvariable - xrba of cur record (may change for var update)(package private) intvariable - first and lowest KSIR XRBA(package private) intvariable - id(package private) intvariable - C'KSIT"(package private) intvariable - KSIT length(package private) intvariable - last and highest KSIR XRBA(package private) intvariable - top KSIR XRBA(package private) byte[]variable(package private) intvariable(package private) longvariable(package private) longvariable(package private) longvariable(package private) longvariable - last ves rec xrba(package private) longvariable(package private) intvariable - max height of AVL tree(package private) intvariable - max vcb alloc allowed(package private) intvariable - hash index with no dup allowed(package private) intvariable - max vcb record size allowed(package private) intvariable(package private) longvariable(package private) intvariable(package private) booleanvariable(package private) byte[]variable(package private) booleanvariable - true unless REPRO output(package private) bytevariable - default Problem Determination Field(package private) intvariable(package private) longvariable(package private) longvariable(package private) longvariable(package private) longvariable - prev ksir on path(package private) intvariable(package private) pz390variable(package private) bytevariable - rpl logical error(package private) bytevariable - operation sccessful(package private) bytevariable - rpl physical error(package private) intvariable(package private) bytevariable - z390 catch all(package private) bytevariable - RPLINBUF record area too small(package private) bytevariable - RPLDUP attempt to write dup pri or unique aix key(package private) bytevariable - RPLEODER end of data(package private) bytevariable - RPLINACC invalid RPL access for ACB MACRF(package private) bytevariable - RPLKEYLC key len > max or 0(package private) bytevariable - RPLINKEY invalid key req for ESDS/RRDS(package private) bytevariable - RPLRRADR invalid RBA req to RRDS(package private) bytevariable - RPLINLEN rec len > max or <> fixed len(package private) bytevariable - RPLIRRNO invalid RRDS record #(package private) bytevariable - RPLINVP invalid RPL options(package private) String[]variable(package private) bytevariable - ok(package private) bytevariable - RPLSEQCK skip seq key out of sequence(package private) String[]variable(package private) bytevariable - RPLINRBA RBA not a record address(package private) bytevariable - RPLNOREC record not found(package private) bytevariable - RPLRDERD data read error(package private) bytevariable - RPLRDERI index read error(package private) bytevariable - RPLWTERD data write error(package private) bytevariable - RPLWTERI index write error(package private) intvariable - RPL acb addr(package private) intvariable - RPL record area(package private) intvariable - RPL argment for KSDS key, RRDS #, ESDS/LDS RBA/XRBA(package private) intvariable - RPL cur pos XRBA in VES or VX0(package private) intvariable - RPL address ecb to post(package private) intvariable - RPL feedback(package private) intvariable - RPL flags for UPD positioning etc.(package private) intvariable - prev RPL GET record not found(package private) intvariable - prev RPL GET successful(package private) intvariable - get/put in KSIT(package private) intvariable - RPL ID(package private) intvariable - RPL current KSIR XRBA(package private) intvariable - RPL current KSIT XRBA(package private) intvariable - RPL length of record area(package private) intvariable - RPL length(package private) intvariable(package private) intvariable - RPL length of generic key(package private) intvariable - RPL length of record for recv PUT(package private) intvariable - RPL last rec XRBA in VES or VX0(package private) intvariable - RPL next RPL in chain(package private) intvariable - RPL unique open ACB count(package private) intvariable - RPL options 2 bytes and 2 bytes filler(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option direct access(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option leave rec in buffer(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option sequential access(package private) intvariable - RPL option skip sequential access(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL option(package private) intvariable - RPL type VSAM(package private) sz390variable(package private) intvariable(package private) intvariable(package private) intvariable - KSIR finds in AVL tree(package private) intvariable - KSIR insert record in tree(package private) intvariable - KSIT inserts trees(package private) intvariable - KSIR rotates to bal AVL tree(package private) intvariable - KSIR rotates to bal AVL tree(package private) intvariable - KSIR rotates to bal AVL tree(package private) intvariable - KSIR rotates to bal AVL tree(package private) intvariable - KSIR rotates to bal AVL tree(package private) intvariable - counter for unique ddnames "V??#NNNN"(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable - total vcb allocated + 1 to skip 0 index(package private) intvariable - total buffers reused (saved I/O)(package private) intvariable - total buffers requested(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) tz390variable(package private) intvariable - VAIXFLAG 4 bytes of option flags(package private) intvariable - VAIXRUSE reset aix eof at open(package private) intvariable - VAIXUAIX upgrade AIX for base cluster updates(package private) intvariable - VAIXUKEY inforce unique keys(package private) intvariable - VAIXID C'VAIX'(package private) intvariable - VAIXKLEN aix key length in VES(package private) intvariable - VAIXKOFF aix key offset in VES(package private) intvariable - VAIXLEN length of VAIX catalog entry(package private) intvariable - VAIXNAME name of AIX(package private) intvariable - VAIXRELA addr of related VCLR base cluster catalog entry(package private) intvariable - VAIXRELN name of related VCLR base cluster(package private) intvariable - VAIXVXNA addr optional VXN DSNAME (def.(package private) int[]variable(package private) booleanvariable(package private) ByteBuffervariable(package private) byte[]variable - vcb buffer(package private) intvariable(package private) int[]variable(package private) intvariable - index of alloc vcb(package private) int[]variable(package private) intvariable(package private) intvariable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) long[]variable(package private) intvariable - VCDTAIXA addr aix index(package private) intvariable - VCDTAIXT tot aix indexes(package private) intvariable - VCDTCLRA addr base cluster entry(package private) intvariable - VCDTCLRT tot base clusters(package private) intvariable - VCDTDCBA addr model DCB for ACB allocation(package private) intvariable - VCDTID C'VCDT'(package private) intvariable - VCDTNAME name of catalog(package private) intvariable - VCDTPTHA addr path(package private) intvariable - VCDTPTHT tot paths(package private) intvariable - VCLRAIXA addr of table with AIX upgrade catalog entries(package private) intvariable - VCLRAIXN total AIX with upgrade for cluster changes(package private) intvariable - VCLRCI optional CI size(package private) intvariable - VCLRFLAG option flags(package private) intvariable - VCLRESDS entry sequenced data set(package private) intvariable - VCLRKSDS key sequential (default)(package private) intvariable - VCLRLDS linear(package private) intvariable - VCLRRRDS relative record data set(package private) intvariable - VCLRRUSE reset EOF at ACB open(package private) intvariable - VCLRVREC variable record length(package private) intvariable - VCLRID C'VCLR'(package private) intvariable - VCLRKLEN KSDS primary key length(package private) intvariable - VCLRKOFF KSDS primary key offset(package private) intvariable - VCLRLAVG average record length for VREC(package private) intvariable - VCLRLEN length of VCLR catalog entry(package private) intvariable - VCLRLREC max or fixed record length(package private) intvariable - VCLRNAME name of base cluster(package private) intvariable - VCLRTYPE ESDS/RRDS/ESDS/LDS(package private) intvariable - VCLRVESA addr optional VES DSNAME (Def NAME.VES)(package private) intvariable - VCLRVX0A addr optional VX0 DSNAME (Def NAME.VX0)(package private) intvariable(package private) intvariable - VPTHENTA addr of entry VAIX or VCLR entry(package private) intvariable - VPTHENTN name of entry VAIX or VCLR path(package private) intvariable - VPTHFLAG 4 bytes of option flags(package private) intvariable - VPTHUAIX update all upgrade AIX's for base cluster(package private) intvariable - VPTHPAIX path is for VAIX vs alias VCLR(package private) intvariable - VPTHID C'VPTH'(package private) intvariable - VPTHLEN length of VPTH catalog entry(package private) intvariable - VPTHNAME name of path(package private) bytevariable(package private) bytevariable(package private) longvariable(package private) intvariable(package private) longvariable(package private) longvariable -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate booleanadd_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 longalloc_ves(int cb_len) return xrba of new ves cb/rec area and update eof xrbaprivate booleanperform AVL rotation around the last avl_r_xrba found during find_ksir prior to insert.private booleanavl rotate x to r, and r to x_high, and x_high to r_low.private booleanavl rotate w (x_high) to r, r to w_high, w_low to x_high, and w_high to r_low.private booleanavl rotate w (x_low) to r, r to w_low, w_high to x_low, and w_low to r_high.private booleanavl rotate x to r, and r to x_low, and x_low to r_high.private booleansearch up KSIR nodes from insertion and perform the following steps: Increment height of all nodes on path prior to unbalanced node.private voidbroken_ksir_link(String type, long xrba1, long xrba2) display error message for KSIR broken links and set feedback ves data errorprivate intcalc 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 booleancheck for consistency between VCDT and ACB options and ifprivate booleancheck_heights(String type, byte t1, byte t2, byte t3, byte t4) verify updated T1-T4 within +-1private booleanclose dynamically allocated ACB DCB'sprivate intcomp_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 processingprivate voidfetch acb fields from cur_acb_addrprivate voidfetch RPL, ACB, and VCDT fields for GET, PUT, etc.private voidfetch current vclr fields used by rpl_get/put.private booleansearch vx0 for ksds key in rplarg and set cur_vx0_xrba entry if found else false.private booleansearch 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 booleanfind_vcb()find matching vcb with same tiot, xrba, and record length if found set vcb_index and return true else falseprivate booleanfind 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 booleanposition to first KSIR in KSIT for either FWD or BWD seq.private booleanset cur_ves_xrba to ksir rec unless deletedprivate booleanget_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 booleanget_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 voidget VCDT path for use in VX?DCB file opensprivate voidinit_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 fieldsprivate voidInitialize ACB fieldsprivate voidInitialize VSAM "control block" fieldsprivate voidinit logical and physical reason codes for use in set_feedback tracingprivate voidInitialzie RPL fieldsprivate voidInitialize VAIX fieldsprivate voidInitialize VCDT fieldsprivate voidInitialize VCLR fieldsprivate voidInitialize VPTH fieldsvoidinit_vz390(tz390 shared_tz390, pz390 shared_pz390, sz390 shared_sz390) init vz390private booleaninsert ksds record following unsuccessful GET with UPDprivate booleaninsert new KSIR to existing KSIT at current KSIR and balance AVT tree by rotating KSIR's if needed.private booleaninsert new KSIT for cur_vx0 entry with KSIR for existing record and KSIR for new inserted recordprivate booleanload VCDT using ACB DSNAME or DDNAME If file spec includes dot, use suffix to find VCDT entry else use ACBNAME field.private booleanopen_acb_dcb(int dcb_addr) dynamically allocate and open DCB for VES, VX0, VXN'sprivate booleandynamically allocate and open dcbs required for VES, VX0, and any upgrade VXN's.private booleanread ksds index entry with key at cur_vx0_xrba and set cur_ves_xrba and cur_keyprivate booleanread_ksir(long xrba) read KSIR int cb and set cur_ksit xrba'sprivate booleanread record from current KSIR and postion to next KSIR or index entry or return eodprivate booleanread ksir key at cur_ksir_rec + cur_vclr_koff into cur_keyprivate booleanread KSIT into cb array and set cur_ksit xrbasprivate booleanread_ves_cb(long cb_xrba, int cb_len) read control block in ves at xrba into cb byte array Notes:private booleanread record from VES into RPLAREA and set length in RPLLREC to the VES ESDS base cluster data file at specified xrba.private booleanread ves xrba prt in vx0 at cur_vx0_xrba and set cur_ves_xrbaprivate voidreset flags for RPL current recordprivate booleanreuse_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 booleanrewrite_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 voidESDS get by rba or xrbaprivate voidESDS seq getprivate voidget KSDS get by keyprivate voidget next KSDS seq.private voidget for open RRDS file Notes: Read vx0 XRBA for rel.private voidget seq for RRDS file Notes: Read vx0 at rpl_cxrba to get ves xrbaprivate booleancompare key in RPLAREA+KEYOFF with high values RPI 779 using cur_vclr_klen -1, 0, 1 for low, equal, high.private voidput for open ESDS output fileprivate voidput for open KSDS output fileprivate voidput for open RRDS output file Notes: Always use rel rec # to calc Read vx0 XRBA for rel.private booleanbackup to next record for ESDS SEQ BWD retrieval and return logical EOD error if at front of file.private voidset_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 booleanset cur_vx0_xrba to next ksds index going forward or backward else set eodprivate voidstore cur_ves_xrba as RBA or XRBA in RPLARG and limit checkprivate voidset_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 voidset_rpl_cxrba(long xrba) set RPL cur pos xrba 1.private voidstore rpl_flagprivate voidsetup for next seq record either in KSIT or VX0 index and turn off rpl_flag_ksit if doneprivate voidset RPLLXRBA last rec XRBA VES for ESDS/RRDS VX0 for KSDS/VRRDSprivate voidset_rpl_lxrba(long xrba) set RPLLXRBA last rec XRBA VES for ESDS/RRDS VX0 for KSDS/VRRDSprivate voidinc or dec vx0 for next key index entryvoidClose open acb.voidOpen 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 voiderase current record retrieved from open VSAM ACB/VCDT cluster.private voidretrieve record from open VSAM ACB/VCDT cluster.private voidset current position to specified key, record, or RBA in ESDS baseprivate voidupdate or write new record in open VSAM ACB/VCDT cluster.voidsvc_vsam()Execute VSAM access method service requestedprivate voidunbalanced_ksir_error(String type) display unbalanced KSIR foundprivate booleanrewrite ksds record following successful GET with UPDprivate voidmove current vcb at vcb_index to most recently used (vcb_mru).private booleanwrite ksds primary index entry with last_ves_xrba ptr and key.private booleanwrite ves KSIR at cur_ksir_xrbaprivate booleanwrite new KSIT at ves eof xrbaprivate booleanwrite_ves_cb(long cb_xrba, int cb_len) write control block in ves at xrba into cb byte array Notes:private booleanwrite current RPL record in RPLAREA with length RPLLREC to the VES base cluster data file at specified xrba.private booleanwrite_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
-
Field Details
-
tz390
tz390 tz390variable -
pz390
pz390 pz390variable -
sz390
sz390 sz390variable -
cur_vsam_op
byte cur_vsam_opvariable -
vsam_op_open
byte vsam_op_openvariable -
vsam_op_close
byte vsam_op_closevariable -
cur_vcdt_addr
int cur_vcdt_addrvariable - addr loaded VCDT VSAM catalog -
cur_vcdt_id
String cur_vcdt_idvariable - VCDTID C'VCDT' -
cur_vcdt_name
String cur_vcdt_namevariable - VCDTNAME name of VCDT catalog -
cur_vcdt_clrt
int cur_vcdt_clrtvariable - VCDTCLRT total base clusters -
cur_vcdt_aixt
int cur_vcdt_aixtvariable - VCDTAIXT tot aix indexes -
cur_vcdt_ptht
int cur_vcdt_pthtvariable - VCDTPTHT total paths -
cur_vcdt_ptha
int cur_vcdt_pthavariable - VCDTPTHA addr path entry -
cur_vcdt_dcba
int cur_vcdt_dcbavariable -
vcdt_id
int vcdt_idvariable - VCDTID C'VCDT' -
vcdt_name
int vcdt_namevariable - VCDTNAME name of catalog -
vcdt_clrt
int vcdt_clrtvariable - VCDTCLRT tot base clusters -
vcdt_clra
int vcdt_clravariable - VCDTCLRA addr base cluster entry -
vcdt_aixt
int vcdt_aixtvariable - VCDTAIXT tot aix indexes -
vcdt_aixa
int vcdt_aixavariable - VCDTAIXA addr aix index -
vcdt_ptht
int vcdt_pthtvariable - VCDTPTHT tot paths -
vcdt_ptha
int vcdt_pthavariable - VCDTPTHA addr path -
vcdt_dcba
int vcdt_dcbavariable - VCDTDCBA addr model DCB for ACB allocation -
cur_vcdt_file_name
String cur_vcdt_file_namevariable - from ACB DDNAME/DSNAME -
cur_vcdt_path
String cur_vcdt_pathvariable -
cur_vcdt_tiot
int cur_vcdt_tiotvariable - index of tiot entry + 1 -
cur_vclr_id
String cur_vclr_idvariable - VCLRID C"VCLR" -
cur_vclr_name
String cur_vclr_namevariable - VCLRNAME name of base cluster -
cur_vclr_type
String cur_vclr_typevariable - VCLRTYPE type of base cluster -
cur_vclr_flag
int cur_vclr_flagvariable - VCLRFLAG 4 bytes of flags -
cur_vclr_lavg
int cur_vclr_lavgvariable - VCLRLAVG average record length for VREC -
cur_vclr_lrec
int cur_vclr_lrecvariable - VCLRLREC max length or fixed length -
cur_vclr_klen
int cur_vclr_klenvariable - VCLRKLEN KSDS primary key length -
cur_vclr_koff
int cur_vclr_koffvariable - VCLRKOFF KSDS primary key offset -
cur_vclr_vesa
int cur_vclr_vesavariable - VCLRVESA addr DSNAME override for VES -
cur_vclr_vx0a
int cur_vclr_vx0avariable - VCLRVX0A addr DSNAME override for VX0 -
cur_vclr_aixn
int cur_vclr_aixnvariable - VCLRAIXN total alterante indexes with upgrade for cluster7 -
cur_vclr_aixa
int cur_vclr_aixavariable - VCLRAIXA addr of VAIX addr table -
vclr_id
int vclr_idvariable - VCLRID C'VCLR' -
vclr_name
int vclr_namevariable - VCLRNAME name of base cluster -
vclr_type
int vclr_typevariable - VCLRTYPE ESDS/RRDS/ESDS/LDS -
vclr_flag
int vclr_flagvariable - VCLRFLAG option flags -
vclr_flag_vrec
int vclr_flag_vrecvariable - VCLRVREC variable record length -
vclr_flag_ruse
int vclr_flag_rusevariable - VCLRRUSE reset EOF at ACB open -
vclr_flag_ksds
int vclr_flag_ksdsvariable - VCLRKSDS key sequential (default) -
vclr_flag_rrds
int vclr_flag_rrdsvariable - VCLRRRDS relative record data set -
vclr_flag_esds
int vclr_flag_esdsvariable - VCLRESDS entry sequenced data set -
vclr_flag_lds
int vclr_flag_ldsvariable - VCLRLDS linear -
vclr_lavg
int vclr_lavgvariable - VCLRLAVG average record length for VREC -
vclr_lrec
int vclr_lrecvariable - VCLRLREC max or fixed record length -
vclr_klen
int vclr_klenvariable - VCLRKLEN KSDS primary key length -
vclr_koff
int vclr_koffvariable - VCLRKOFF KSDS primary key offset -
vclr_vesa
int vclr_vesavariable - VCLRVESA addr optional VES DSNAME (Def NAME.VES) -
vclr_vx0a
int vclr_vx0avariable - VCLRVX0A addr optional VX0 DSNAME (Def NAME.VX0) -
vclr_ci
int vclr_civariable - VCLRCI optional CI size -
vclr_aixn
int vclr_aixnvariable - VCLRAIXN total AIX with upgrade for cluster changes -
vclr_aixa
int vclr_aixavariable - VCLRAIXA addr of table with AIX upgrade catalog entries -
vclr_len
int vclr_lenvariable - VCLRLEN length of VCLR catalog entry -
cur_vaix_addr
int cur_vaix_addrvariable - cur aix section addr -
cur_vaix_id
String cur_vaix_idvariable - VAIXID C'VAIX' -
cur_vaix_name
String cur_vaix_namevariable - VAIXNAME name of alternate index -
cur_vaix_reln
String cur_vaix_relnvariable - VAIXRELN name of related VCLR base cluster -
cur_vaix_flag
int cur_vaix_flagvariable - VAIXFLAG option flags -
cur_vaix_klen
int cur_vaix_klenvariable - VAIXKLEN length of aix key in base cluster -
cur_vaix_koff
int cur_vaix_koffvariable - VAIXKOFF offset of aix key in base cluster -
cur_vaix_vxna
int cur_vaix_vxnavariable - VAIXVXNA addr optional DSNAME (def. NAME.VXN) -
cur_vaix_rela
int cur_vaix_relavariable - VAIXRELA addr related VCLR base cluster catalog entry -
vaix_id
int vaix_idvariable - VAIXID C'VAIX' -
vaix_name
int vaix_namevariable - VAIXNAME name of AIX -
vaix_reln
int vaix_relnvariable - VAIXRELN name of related VCLR base cluster -
vaix_flag
int vaix_flagvariable - VAIXFLAG 4 bytes of option flags -
vaix_flag_ruse
int vaix_flag_rusevariable - VAIXRUSE reset aix eof at open -
vaix_flag_ukey
int vaix_flag_ukeyvariable - VAIXUKEY inforce unique keys -
vaix_flag_uaix
int vaix_flag_uaixvariable - VAIXUAIX upgrade AIX for base cluster updates -
vaix_klen
int vaix_klenvariable - VAIXKLEN aix key length in VES -
vaix_koff
int vaix_koffvariable - VAIXKOFF aix key offset in VES -
vaix_vxna
int vaix_vxnavariable - VAIXVXNA addr optional VXN DSNAME (def. NAME.VXN) -
vaix_rela
int vaix_relavariable - VAIXRELA addr of related VCLR base cluster catalog entry -
vaix_len
int vaix_lenvariable - VAIXLEN length of VAIX catalog entry -
cur_vpth_id
String cur_vpth_idvariable - VPTHID C'VPTH' -
cur_vpth_name
String cur_vpth_namevariable - VPTHNAME name of path -
cur_vpth_entn
String cur_vpth_entnvariable - VPTHENTN name of path (VAIX or VCLR) -
cur_vpth_flag
int cur_vpth_flagvariable - VPTHFLAG 4 byte option flags -
cur_vpth_enta
int cur_vpth_entavariable - VPTHENTA addr of VAIX or VCLR entry for path -
vpth_id
int vpth_idvariable - VPTHID C'VPTH' -
vpth_name
int vpth_namevariable - VPTHNAME name of path -
vpth_entn
int vpth_entnvariable - VPTHENTN name of entry VAIX or VCLR path -
vpth_flag
int vpth_flagvariable - VPTHFLAG 4 bytes of option flags -
vpth_flag_aixp
int vpth_flag_aixpvariable - VPTHUAIX update all upgrade AIX's for base cluster -
vpth_flag_aixu
int vpth_flag_aixuvariable - VPTHPAIX path is for VAIX vs alias VCLR -
vpth_enta
int vpth_entavariable - VPTHENTA addr of entry VAIX or VCLR entry -
vpth_len
int vpth_lenvariable - VPTHLEN length of VPTH catalog entry -
open_acb_mod
boolean open_acb_modvariable - true unless REPRO output -
cur_acb_addr
int cur_acb_addrvariable -
cur_acb_id
byte cur_acb_idvariable - ACBID x'A0' -
cur_acb_stype
byte cur_acb_stypevariable - ACBSTYPE x'11' - x'1F' VSAM vs VTAM types -
cur_acb_len
short cur_acb_lenvariable - ACBLEN length of ACB -
cur_acb_ambl
int cur_acb_amblvariable - ACBAMBL AMB list pointer -
cur_acb_ifr
int cur_acb_ifrvariable - ACBIFR VTAM interface routine 0 for VSAM -
cur_acb_macrf
int cur_acb_macrfvariable - ACBMACRF 4 bytes of option bits -
cur_acb_oflgs
byte cur_acb_oflgsvariable -
cur_acb_vclrn
String cur_acb_vclrnvariable - ACBVCLRN label of ACB (def. VCLR/VPTH entry) -
cur_acb_vclra
int cur_acb_vclravariable - ACBVCLRA addr of VCLR entry in VCDT catalog -
cur_acb_vaixa
int cur_acb_vaixavariable - ACBVAIXA addr of VAIX entry in VCDT catalog for path -
cur_acb_dcbt
int cur_acb_dcbtvariable - ACBDCBT total DCB's for VES, VX0, and VNN upgrades -
cur_acb_dcba
int cur_acb_dcbavariable - ACBDCBA addr of dyn alloc DCB table -
cur_acb_openc
int cur_acb_opencvariable - ACBOPENC unique open ACB count used to reset RPL pos -
tot_dcb_alloc
int tot_dcb_allocvariable - counter for unique ddnames "V??#NNNN" -
acb_id
int acb_idvariable - ACBID x'A0' -
acb_stype
int acb_stypevariable - ACBSTYPE x'11' - x'1F' for VSAM vs VTAM -
acb_len
int acb_lenvariable - ACBLEN half word length of ACB -
acb_ambl
int acb_amblvariable - ACBAMBL AMB list -
acb_ifr
int acb_ifrvariable - ACBIFR VTAM interface routine (0 for VSAM) -
acb_macrf
int acb_macrfvariable - ACBMACRF macrf flags -
acb_macrf_key
int acb_macrf_keyvariable - ACBMACR1_KEY key access -
acb_macrf_adr
int acb_macrf_adrvariable - ACBMACR1_ADR access bu RBA or XRBA -
acb_macrf_cnv
int acb_macrf_cnvvariable - ACBMACR1_CNV control interval access (not supported) -
acb_macrf_seq
int acb_macrf_seqvariable - ACBMACR1_SEQ sequential access -
acb_macrf_dir
int acb_macrf_dirvariable - ACBMACR1_DIR direct access -
acb_macrf_in
int acb_macrf_invariable - ACBMACR1_IN input only -
acb_macrf_out
int acb_macrf_outvariable - ACBMACR1_OUT output add, update, delete -
acb_macrf_ubf
int acb_macrf_ubfvariable - ACBMACR1_UBF user buffer management (ignored) -
acb_macrf_skp
int acb_macrf_skpvariable - ACBMACR2_SKP skip sequential access -
acb_macrf_nlogon
int acb_macrf_nlogonvariable - ACBMACR2_NLOGON no logon required -
acb_macrf_rst
int acb_macrf_rstvariable - ACBMACR2_RST data set reusable (reset rba at open) -
acb_macrf_dsn
int acb_macrf_dsnvariable - ACBMACR2_DSN subtask sharing based on DSN -
acb_macrf_aix
int acb_macrf_aixvariable - ACBMACR2_AIX process alt. index versus base -
acb_macrf_lsr
int acb_macrf_lsrvariable - ACBMACR2_LSR local shared resources -
acb_macrf_gsr
int acb_macrf_gsrvariable - ACBMACR2_GSR global shared resources -
acb_macrf_ici
int acb_macrf_icivariable - ACBMACR2_ICI improve control interval processing -
acb_macrf_dfr
int acb_macrf_dfrvariable - ACBMACR3_DFR defer puts until WRTBUF or required -
acb_macrf_sis
int acb_macrf_sisvariable - ACBMACR3_SIS sequential insert strategy -
acb_macrf_cfx
int acb_macrf_cfxvariable - ACBMACR3_CFX fix control blocks and buffers -
acb_oflgs
int acb_oflgsvariable - ACBPFLGS offset to open flag -
acb_oflgs_open
byte acb_oflgs_openvariable - ACB_OPEN open -
acb_oflgs_in
byte acb_oflgs_invariable - ACBGET only -
acb_oflgs_out
byte acb_oflgs_outvariable - ACBPUT output add, update, delete -
acb_oflgs_aixp
byte acb_oflgs_aixpvariable - ACBAIXP use aix vs primary key -
acb_oflgs_aixu
byte acb_oflgs_aixuvariable - ACBAIXU ugrade aix indexes for VCLR -
acb_ddnam
int acb_ddnamvariable - ACBDDNAM DDNAME > env. var.> VCDT[.VCLR/VPTH) -
acb_dsnam
int acb_dsnamvariable - ACBDSNAM DSNAME addr > VCDT[.VCLR/VPTH] -
acb_vclrn
int acb_vclrnvariable - ACBVCLRN name from label field (def VCDT entry) -
acb_vclra
int acb_vclravariable - ACBVCLRA addr VCLR in VCDT catalog -
acb_vaixa
int acb_vaixavariable - ACBVAIXA addr VAIX in VCDT catalog for alt path -
acb_dcbt
int acb_dcbtvariable - ACBDCBN total DCB's for this ACB -
acb_dcba
int acb_dcbavariable - ACBDCBA addr of dynamically allocated DCB's -
acb_openc
int acb_opencvariable - ACBOPENC unique open ACB count -
cur_rpl_addr
int cur_rpl_addrvariable - cur RPL address -
cur_rpl_ecb
int cur_rpl_ecbvariable - addr ECB to post completion -
cur_rpl_feedb
int cur_rpl_feedbvariable - feedback codes -
cur_rpl_lkey
int cur_rpl_lkeyvariable - generic key length -
cur_rpl_area
int cur_rpl_areavariable - addr record area -
cur_rpl_arg
int cur_rpl_argvariable - argument with KSDS key, RRDS rec #, or RBA/XRBA -
cur_rpl_opt
int cur_rpl_optvariable - RPL option flags -
rpl_opt_loc
int rpl_opt_locvariable - RPL option leave rec in buffer -
rpl_opt_dir
int rpl_opt_dirvariable - RPL option direct access -
rpl_opt_seq
int rpl_opt_seqvariable - RPL option sequential access -
rpl_opt_skp
int rpl_opt_skpvariable - RPL option skip sequential access -
rpl_opt_asy
int rpl_opt_asyvariable - RPL option -
rpl_opt_kge
int rpl_opt_kgevariable - RPL option -
rpl_opt_gen
int rpl_opt_genvariable - RPL option -
rpl_opt_xrba
int rpl_opt_xrbavariable - RPL option -
rpl_opt_key
int rpl_opt_keyvariable - RPL option -
rpl_opt_adr
int rpl_opt_adrvariable - RPL option -
rpl_opt_cnv
int rpl_opt_cnvvariable - RPL option -
rpl_opt_bwd
int rpl_opt_bwdvariable - RPL option -
rpl_opt_lrd
int rpl_opt_lrdvariable - RPL option -
rpl_opt_waitx
int rpl_opt_waitxvariable - RPL option -
rpl_opt_upd
int rpl_opt_updvariable - RPL option -
rpl_opt_nsp
int rpl_opt_nspvariable - RPL option -
cur_rpl_next
int cur_rpl_nextvariable - RPL next RPL address in chained requests -
cur_rpl_lrec
int cur_rpl_lrecvariable - RPL record length for RECV PUT -
cur_rpl_lxrba
long cur_rpl_lxrbavariable - RPL last rec VES/VX0 XRBA if neg = last KSIR XRBA -
cur_rpl_cxrba
long cur_rpl_cxrbavariable - RPL cur position VES/VX0 -
cur_rpl_openc
int cur_rpl_opencvariable - unique ACB open count to detect req'd pos reet -
cur_rpl_larea
int cur_rpl_lareavariable - RPL area length -
cur_rpl_flag
int cur_rpl_flagvariable - RPL flags for UPD positioning etc. -
cur_rpl_ksit
long cur_rpl_ksitvariable - XRBA of current KSIT -
cur_rpl_ksir
long cur_rpl_ksirvariable - XRBA of current KSIR -
rpl_flag_getok
int rpl_flag_getokvariable - prev RPL GET successful -
rpl_flag_getnf
int rpl_flag_getnfvariable - prev RPL GET record not found -
rpl_flag_ksit
int rpl_flag_ksitvariable - get/put in KSIT -
rpl_id
int rpl_idvariable - RPL ID -
rpl_stype
int rpl_stypevariable - RPL type VSAM -
rpl_len
int rpl_lenvariable - RPL length -
rpl_ecb
int rpl_ecbvariable - RPL address ecb to post -
rpl_feedb
int rpl_feedbvariable - RPL feedback -
rpl_lkey
int rpl_lkeyvariable - RPL length of generic key -
rpl_acb
int rpl_acbvariable - RPL acb addr -
rpl_area
int rpl_areavariable - RPL record area -
rpl_arg
int rpl_argvariable - RPL argment for KSDS key, RRDS #, ESDS/LDS RBA/XRBA -
rpl_opt
int rpl_optvariable - RPL options 2 bytes and 2 bytes filler -
rpl_next
int rpl_nextvariable - RPL next RPL in chain -
rpl_lrec
int rpl_lrecvariable - RPL length of record for recv PUT -
rpl_lxrba
int rpl_lxrbavariable - RPL last rec XRBA in VES or VX0 -
rpl_cxrba
int rpl_cxrbavariable - RPL cur pos XRBA in VES or VX0 -
rpl_openc
int rpl_opencvariable - RPL unique open ACB count -
rpl_larea
int rpl_lareavariable - RPL length of record area -
rpl_flag
int rpl_flagvariable - RPL flags for UPD positioning etc. -
rpl_ksit
int rpl_ksitvariable - RPL current KSIT XRBA -
rpl_ksir
int rpl_ksirvariable - RPL current KSIR XRBA -
rpl_length
int rpl_lengthvariable -
pdf_def
byte pdf_defvariable - default Problem Determination Field -
rc_ok
byte rc_okvariable - operation sccessful -
rc_log
byte rc_logvariable - rpl logical error -
rc_phy
byte rc_phyvariable - rpl physical error -
cmp_ves
byte cmp_vesvariable - RPLBASER error accessing ES base -
cmp_vxn
byte cmp_vxnvariable - RPLAIXER error accessing AIX index -
cmp_vx0
byte cmp_vx0variable - primary KSDS ro VRRDS index -
rn_ok
byte rn_okvariable - ok -
rn_eod
byte rn_eodvariable - RPLEODER end of data -
rn_dup_key
byte rn_dup_keyvariable - RPLDUP attempt to write dup pri or unique aix key -
rn_out_of_seq
byte rn_out_of_seqvariable - RPLSEQCK skip seq key out of sequence -
rn_rcd_not_fnd
byte rn_rcd_not_fndvariable - RPLNOREC record not found -
rn_rba_not_rcd
byte rn_rba_not_rcdvariable - RPLINRBA RBA not a record address -
rn_area_len_err
byte rn_area_len_errvariable - RPLINBUF record area too small -
rn_inv_acc_type
byte rn_inv_acc_typevariable - RPLINACC invalid RPL access for ACB MACRF -
rn_inv_key_req
byte rn_inv_key_reqvariable - RPLINKEY invalid key req for ESDS/RRDS -
rn_inv_rpl_opt
byte rn_inv_rpl_optvariable - RPLINVP invalid RPL options -
rn_inv_rec_len
byte rn_inv_rec_lenvariable - RPLINLEN rec len > max or <> fixed len -
rn_inv_key_len
byte rn_inv_key_lenvariable - RPLKEYLC key len > max or 0 -
rn_inv_rec_num
byte rn_inv_rec_numvariable - RPLIRRNO invalid RRDS record # -
rn_inv_rba_req
byte rn_inv_rba_reqvariable - RPLRRADR invalid RBA req to RRDS -
rn_acb_not_open
byte rn_acb_not_openvariable - z390 catch all -
rn_log_reason
String[] rn_log_reasonvariable -
rn_read_data_err
byte rn_read_data_errvariable - RPLRDERD data read error -
rn_read_index_err
byte rn_read_index_errvariable - RPLRDERI index read error -
rn_write_data_err
byte rn_write_data_errvariable - RPLWTERD data write error -
rn_write_index_err
byte rn_write_index_errvariable - RPLWTERI index write error -
rn_phy_reason
String[] rn_phy_reasonvariable -
cur_ves_dcba
int cur_ves_dcbavariable -
cur_ves_tiot_index
int cur_ves_tiot_indexvariable -
cur_ves_rec
int cur_ves_recvariable -
cur_ves_xrba
long cur_ves_xrbavariable -
last_ves_xrba
long last_ves_xrbavariable - last ves rec xrba -
cur_vx0_dcba
int cur_vx0_dcbavariable -
cur_vx0_tiot_index
int cur_vx0_tiot_indexvariable -
cur_vx0_xrba
long cur_vx0_xrbavariable -
cur_vx0_ves_xrba
long cur_vx0_ves_xrbavariable -
null_rec
boolean null_recvariable -
null_rec_bytes
byte[] null_rec_bytesvariable -
cur_rec_bytes
byte[] cur_rec_bytesvariable -
cur_vxn_xrba
long cur_vxn_xrbavariable -
write_lrec
int write_lrecvariable -
read_lrec
int read_lrecvariable -
bwd_xrba
long bwd_xrbavariable -
cur_key
byte[] cur_keyvariable -
cur_key_buff
ByteBuffer cur_key_buffvariable -
last_key
byte[] last_keyvariable -
vx0_lrec
long vx0_lrecvariable -
comp_key_len
int comp_key_lenvariable -
high_key_rec
long high_key_recvariable -
low_key_rec
long low_key_recvariable -
next_key_rec
long next_key_recvariable -
last_key_rec
long last_key_recvariable -
last_key_vx0_xrba
long last_key_vx0_xrbavariable -
last_key_ves_xrba
long last_key_ves_xrbavariable -
last_key_gen_rc
int last_key_gen_rcvariable -
prev_key_rec
long prev_key_recvariable -
prev_key_vx0_xrba
long prev_key_vx0_xrbavariable -
prev_key_ves_xrba
long prev_key_ves_xrbavariable -
prev_key_gen_rc
int prev_key_gen_rcvariable -
tot_vsam_oper
int tot_vsam_opervariable -
tot_acb_open
int tot_acb_openvariable -
tot_acb_close
int tot_acb_closevariable -
tot_rpl_get
int tot_rpl_getvariable -
tot_rpl_put
int tot_rpl_putvariable -
tot_avl_find
int tot_avl_findvariable - KSIR finds in AVL tree -
max_avl_height
int max_avl_heightvariable - max height of AVL tree -
tot_avl_insert_ksit
int tot_avl_insert_ksitvariable - KSIT inserts trees -
tot_avl_insert_ksir
int tot_avl_insert_ksirvariable - KSIR insert record in tree -
tot_avl_rotate
int tot_avl_rotatevariable - KSIR rotates to bal AVL tree -
tot_avl_rotate_ll
int tot_avl_rotate_llvariable - KSIR rotates to bal AVL tree -
tot_avl_rotate_lr
int tot_avl_rotate_lrvariable - KSIR rotates to bal AVL tree -
tot_avl_rotate_rr
int tot_avl_rotate_rrvariable - KSIR rotates to bal AVL tree -
tot_avl_rotate_rl
int tot_avl_rotate_rlvariable - KSIR rotates to bal AVL tree -
tot_rpl_point
int tot_rpl_pointvariable -
tot_rpl_erase
int tot_rpl_erasevariable -
tot_ves_cache
int tot_ves_cachevariable -
tot_ves_read
int tot_ves_readvariable -
tot_ves_write
int tot_ves_writevariable -
tot_vxn_cache
int tot_vxn_cachevariable -
tot_vxn_read
int tot_vxn_readvariable -
tot_vxn_write
int tot_vxn_writevariable -
tot_vxn_find
int tot_vxn_findvariable -
max_vxn_height
int max_vxn_heightvariable -
comp_rc
int comp_rcvariable -
comp_key_gen_rc
int comp_key_gen_rcvariable -
cb_byte
byte[] cb_bytevariable -
cb
ByteBuffer cbvariable -
cur_ksit_xrba
long cur_ksit_xrbavariable -
cur_ksit_id
int cur_ksit_idvariable - C'KSIT' -
ksit_id_val
int ksit_id_valvariable - C'KSIT" -
cur_ksit_top
long cur_ksit_topvariable - top of balanced tree KSIR -
cur_ksit_fst
long cur_ksit_fstvariable - next first and lowest KSIR XRBA (-1 none, high bit if last add) -
cur_ksit_lst
long cur_ksit_lstvariable - next last and higher KSIR XRBA (-1 none, high bit if last add) -
ksit_id
int ksit_idvariable - id -
ksit_top
int ksit_topvariable - top KSIR XRBA -
ksit_fst
int ksit_fstvariable - first and lowest KSIR XRBA -
ksit_lst
int ksit_lstvariable - last and highest KSIR XRBA -
ksit_len
int ksit_lenvariable - KSIT length -
cbksit_byte
byte[] cbksit_bytevariable -
cur_ksir_xrba
long cur_ksir_xrbavariable -
xrba_high_bit
long xrba_high_bitvariable -
xrba_max_pos
long xrba_max_posvariable -
cur_ksir_id
int cur_ksir_idvariable - C'KSIR' -
ksir_id_val
int ksir_id_valvariable - C'KSIR' -
cur_ksir_par
long cur_ksir_parvariable - parent KSIR or KSIT -
cur_ksir_low
long cur_ksir_lowvariable - lower KSIR XRBA (-1 none, high bit if last add) -
cur_ksir_high
long cur_ksir_highvariable - higer KSIR XRBA (-1 none, high bit if last add) -
cur_ksir_fwd
long cur_ksir_fwdvariable - next seq forward KSIR XRBA (-1 none) -
cur_ksir_bwd
long cur_ksir_bwdvariable - next seq backward KSIR XRBA (-1 none) -
cur_ksir_rec
long cur_ksir_recvariable - xrba of cur record (may change for var update) -
cur_ksir_low_height
byte cur_ksir_low_heightvariable - max height of low node -
cur_ksir_high_height
byte cur_ksir_high_heightvariable - max height of high node -
ksir_id
int ksir_idvariable - id C'KSIR' -
ksir_par
int ksir_parvariable - parent KSIR or KSIT -
ksir_low
int ksir_lowvariable - next lower KSIR or -1 (high bit if last add) -
ksir_high
int ksir_highvariable - next highest KSIR or -1 (high bit if last add) -
ksir_bwd
int ksir_bwdvariable - next backward KSIR or -1 -
ksir_fwd
int ksir_fwdvariable - next foward KSIR or -1 -
ksir_rec
int ksir_recvariable - xrba of cur record (may change for var update) -
ksir_low_height
int ksir_low_heightvariable - max height of low node -
ksir_high_height
int ksir_high_heightvariable - max height of high node -
ksir_len
int ksir_lenvariable - KSIR length -
cur_node_xrba
long cur_node_xrbavariable - current node on path to insert -
prev_node_xrba
long prev_node_xrbavariable - prev ksir on path -
avl_left
boolean avl_leftvariable - rotate left or right side -
avl_unbalanced
boolean avl_unbalancedvariable - rotation required for avl_r KSIR -
avl_r_xrba
long avl_r_xrbavariable - AVL rotation ksir -
avl_r_par
long avl_r_parvariable - r parent -
avl_r_low
long avl_r_lowvariable - r lower left -
avl_r_high
long avl_r_highvariable - r higher right -
avl_r_low_height
byte avl_r_low_heightvariable - r low branch height -
avl_r_high_height
byte avl_r_high_heightvariable - r high branch height -
avl_x_xrba
long avl_x_xrbavariable - AVL next lower/higher ksir to move up -
avl_x_low
long avl_x_lowvariable - x lower left -
avl_x_high
long avl_x_highvariable - x higher right -
avl_x_low_height
byte avl_x_low_heightvariable - r low branch height -
avl_x_high_height
byte avl_x_high_heightvariable - r high branch height -
avl_w_xrba
long avl_w_xrbavariable - AVL next lower/higher ksir from x for LR/RL rotate -
avl_w_low
long avl_w_lowvariable - x lower left -
avl_w_high
long avl_w_highvariable - x higher right -
avl_w_low_height
byte avl_w_low_heightvariable - r low branch height -
avl_w_high_height
byte avl_w_high_heightvariable - r high branch height -
vcb_alloc
boolean vcb_allocvariable -
max_vcb
int max_vcbvariable - max vcb alloc allowed -
max_vcb_hash
int max_vcb_hashvariable - hash index with no dup allowed -
max_vcb_lrec
int max_vcb_lrecvariable - max vcb record size allowed -
tot_vcb
int tot_vcbvariable - total vcb allocated + 1 to skip 0 index -
tot_vcb_req
int tot_vcb_reqvariable - total buffers requested -
tot_vcb_hits
int tot_vcb_hitsvariable - total buffers reused (saved I/O) -
cur_vcb_tiot
int cur_vcb_tiotvariable - file tiot index -
cur_vcb_xrba
long cur_vcb_xrbavariable - file xrba addr -
cur_vcb_lrec
int cur_vcb_lrecvariable - file rec length -
ver_rpl_lrec
int ver_rpl_lrecvariable -
vcb_index
int vcb_indexvariable - index of alloc vcb -
vcb_tiot
int[] vcb_tiotvariable -
vcb_xrba
long[] vcb_xrbavariable -
vcb_lrec
int[] vcb_lrecvariable -
vcb_addr
int[] vcb_addrvariable -
cur_vcb_addr
int cur_vcb_addrvariable - addr next vcb buffer to alloc -
vcb_byte
byte[] vcb_bytevariable - vcb buffer -
vcb_buff
ByteBuffer vcb_buffvariable -
vcb_hash
int vcb_hashvariable -
vcb_hash_index
int[] vcb_hash_indexvariable -
vcb_lru
int vcb_lruvariable -
vcb_mru
int vcb_mruvariable -
next_vcb
int next_vcbvariable -
prev_vcb
int prev_vcbvariable -
vcb_mru_prev
int[] vcb_mru_prevvariable -
vcb_mru_next
int[] vcb_mru_nextvariable
-
-
Constructor Details
-
vz390
public vz390()Dummy constructor - no initialization needed
-
-
Method Details
-
init_vz390
init vz390- Parameters:
shared_tz390- shared tz390shared_pz390- shared pz390shared_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- Use DDNAME/DSNAME to load VCDT and find VCLR entry based on cat.name or search for VCLR with matching ACBNAME. RPI 681
- Verify ACB vs VCDT options
- Open VES, VX0, and any upgrade VXN's
- If REPRO and OUTPUT, then reset ves/vx0 eof RPI 701
-
svc_close_acb
public void svc_close_acb()Close open acb.- Close VESDCB
- Close VX0 if not ESDS or fixed RRDS
- 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- If file spec includes dot, use suffix to find VCDT entry else use ACBNAME field.
- 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- 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.
- 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()- dynamically allocate and open dcbs required for VES, VX0, and any upgrade VXN's.
- Alloc memory for last key if KSDS.
- Returns:
- boolean to indicate success (true) or failure (false)
-
init_acb_dcb
copy model dcb from vcdt_dcba to new dynamcially allocated dcb address and set DCBLRECLF and DCBDSNAM fields- Parameters:
dcb_addr- - intdcb_lrecl_f- - intdcb_dsname- - intdcb_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) - set RPLLXRBA last rec XRBA
- VES for ESDS/RRDS
- VX0 for KSDS/VRRDS
- Parameters:
xrba- - long
- set RPLLXRBA last rec XRBA
-
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()- set RPLLXRBA last rec XRBA
- VES for ESDS/RRDS
- VX0 for KSDS/VRRDS
- set RPLLXRBA last rec XRBA
-
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
display error message for KSIR broken links and set feedback ves data error- Parameters:
type- - Stringxrba1- - longxrba2- - 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:- Read vx0 XRBA for rel. rcd #
-
rpl_get_rrds_seq
private void rpl_get_rrds_seq()get seq for RRDS file Notes:- 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)- 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.
- 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) - if random access by key rec #, then cur_vx0_rba = rec# * 8 else cur_vx0_xrba = cur_rpl_cxrba.
- Set cur_ves_xrba as follows if cur_vx0_xrba > eod set cur_vx0_xrba = -1 (not found) and return false
- Set cur_ves_xrba as follows:
- -1 if 0 return false (no rec found)
- xrba and return true.
- 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:- Always use rel rec # to calc
- Read vx0 XRBA for rel. rcd #
- 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- - intxrba_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- - intindex_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:- 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- - byterc- - bytecmp- - bytern- - 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:- Variable length records have 4 byte length preceeding record.
- ESDS variable length records also have 4 byte length following record to support BWD read backward option without any index.
- 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- - longcb_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- - longcb_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- - intxrba_index- - longxrba_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:- Set matching_key_bytes for generic key processing
- Parameters:
key1_loc- - intkey_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- If rec_len > max_vcb_lrec return false.
- search for allocated vcb If not found add new vcb up to max_vcb else replace least recently used allocated vcb.
- Set vcb_index and return true.
- Parameters:
tiot_index- - int - index into tiotxrba- - longrec_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:- 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:- Increment height of all nodes on path prior to unbalanced node.
- Find first (and only) node which may be unbalanced (left vs right height differs by 2).
- If unbalanced node found, set avl_unbalanced and avl_r_xrba
- Only returns false if I/O error
- Returns:
- boolean to indicate success (true) or failure (false)
-
check_heights
verify updated T1-T4 within +-1- Parameters:
type- - String - name of KSIR typet1- -bytet2- -bytet3- -bytet4- -byte- Returns:
- boolean to indicate success (true) or failure (false)
-
unbalanced_ksir_error
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:- Following binary search of tree to
insert record at correct node, update current and parent nodes to 1
of 3 possible states:
- left/low side +1 depth (high bit in cur_ksir_low)
- even
- right/high side +1 depth (high bit in cur_ksir_high)
- If node found with new +2 state, rotate as follows
to rebalance which ends the update process.
- LL - move left left node up one level by swapping n ode with left node.
- RR - move right right node up one level by swapping node with right node
- LR - move left right node up one level by swapping node with left right node
- RL - move right left node up one level by swapping mode with right left node.
- Returns:
- boolean to indicate success (true) or failure (false)
- Following binary search of tree to
insert record at correct node, update current and parent nodes to 1
of 3 possible states:
-
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)
-