TITLE 'IDA019RC - VSAM S C I B R O U T I N E *00001000 ' 00002000 IDA019RC CSECT , 0001 00003000 @MAINENT DS 0H 0001 00004000 USING *,@15 0001 00005000 B @PROLOG 0001 00006000 DC AL1(16) 0001 00007000 DC C'IDA019RC 78.172' 0001 00008000 DROP @15 00009000 @PROLOG BALR @11,0 0001 00010000 @PSTART DS 0H 0001 00011000 USING @PSTART,@11 0001 00012000 * IF IXHLV=ZERO THEN /* IS THIS AN EMPTY INDX RECD */ 00013000 CLI IXHLV(RBUFC),0 0048 00014000 BNE @RF00048 0048 00015000 * DO; /* YES */ 00016000 * R15=EIGHT; /* SET RETURN CODE AND */ 00017000 LA R15,8 0050 00018000 * RETURN; /* RETURN TO CALLER */ 00019000 @EL00001 DS 0H 0051 00020000 @EF00001 DS 0H 0051 00021000 @ER00001 BR @14 0051 00022000 * END; /* */ 00023000 * IXSKLEN=AMDKEYLN; /* PUT KEY LEN INTO PARAMETER 0053 00024000 * LIST @X04SVES*/ 00025000 @RF00048 L @10,AMBDSB(,RAMB) 0053 00026000 LH @10,AMDKEYLN(,@10) 0053 00027000 STH @10,IXSKLEN(,RWORK3) 0053 00028000 * RESPECIFY 0054 00029000 * RWORK1 RSTD; /* @X04SVES*/ 00030000 * GEN REFS(IBFLPF,IBFLPL,IXHLEO,IXHLL,IXHSEO,IXSEKON,IXSHEP,IXSLEP, 00031000 * IXSPEC,IXSSEP,IXHFLPLN,IXSKLEN,IXSNOSR); 0055 00032000 * /*@X04SVES*/ 00033000 C1 EQU 1 CONSTANT = 1 00034000 X03 EQU X'03' MASK 03 00035000 X80 EQU X'80' MASK 80 00036000 XFF EQU X'FF' MINUS 1 00037000 SR RWORK1,RWORK1 CLEAR REGISTER 00038000 STC RWORK1,IXSPEC(RWORK3) CLEAR PREVIOUS COUNTER 00039000 SR RWORK0,RWORK0 CLEAR REGISTER 00040000 IC RWORK0,IXHFLPLN(RBUFC) PICK UP F+L+POINTER LENGTH 00041000 STC RWORK0,IXSEKON(RWORK3) SAVE IN WORK AREA 00042000 OI IXSBFLG(RWORK3),X80 SET FLAG SHOWING SECTION SEARCH 00043000 ICM RWORK1,X03,IXHLL(RBUFC) GET RECORD LENGTH FROM HEADER 00044000 AR RWORK1,RBUFC ADD TO BEGINNING ADD. OF BUFFER 00045000 SR RWORK1,RWORK0 BACK UP OVER F,L, POINTER 00046000 ST RWORK1,IXSLEP(RWORK3) SAVE LOW KEY ADDRESS 00047000 SR RWORK1,RWORK1 CLEAR REG 00048000 ICM RWORK1,X03,IXHSEO(RBUFC) GET OFFSET TO 1ST SECTION 00049000 AR RWORK1,RBUFC ADD BEGINNING ADD TO FORM TRUE 00050000 SR R15,R15 ADDRESS 00051000 COMFN1 SR RWORK2,RWORK2 CLEAR REGISTERS 00052000 COMFN2 SR RWORK4,RWORK4 ... 00053000 SR RWORK5,RWORK5 ... 00054000 COMFN3 ST RWORK1,IXSHEP(RWORK3) SAVE STARTING POINT 00055000 IC RWORK2,IBFLPF(RWORK1) PICK UP F FIELD 00056000 CR RWORK2,R15 COMPARE IT TO NO. HITS 00057000 BNE SCIB2 MISMATCH 00058000 TM IBFLPL(RWORK1),XFF IS THE L FIELD ZERO 00059000 BZ SCIB9 YES, DISCONTINUE THIS SEARCH 00060000 IC RWORK5,IBFLPL(RWORK1) GET LENGTH OF KEY 00061000 SR RWORK1,RWORK5 MOVE POINTER TO BEGINNING OF 00062000 COMAI IC RWORK4,DZ(RPARM1,R15) KEY--PICK UP ARG. CHARACTER 00063000 IC RWORK2,DZ(RWORK1) PICK UP INDEX CHARACTER 00064000 CR RWORK4,RWORK2 ARE THEY EQUAL 00065000 BNE SCIB1 NO 00066000 LA R15,C1(R15) YES, BUMP UP NO. HITS 00067000 LA RWORK1,C1(RWORK1) MOVE POINTER TO NEXT CHARACTER 00068000 BCT RWORK5,COMAI BACK TO COMPARE IF ANY ARE LEFT 00069000 SCIB9 TM IXSBFLG(RWORK3),X80 IS THIS A SECTION SEARCH 00070000 BNZ SCIB10 YES 00071000 SR R15,R15 CLEAR REG INDICATING SUCCESS 00072000 TM IXSNOSR(RWORK3),XFF IS HIT ENTRY A SPN RCD @X04SVES 00073000 BNZ SCIB12 YES, GO ADJUST HIT POS.@X04SVES 00074000 *SCIB91: 0056 00075000 * RETURN; /* RETURN TO CALLER */ 00076000 B @EL00001 0056 00077000 * GEN; 0057 00078000 SCIB1 BH SCIB3 IS THE ARG GREATER--YES 00079000 B SCIB9 NO, SEARCH COMPLETE 00080000 SCIB2 BL SCIB9 IF F LESS THAN N GO 00081000 SCIB3 TM IXSBFLG(RWORK3),X80 F HIGHER, IS THIS SECT. SEARCH 00082000 BZ SCIB5 NO, INNER SECT, SEARCH 00083000 * 00084000 * THE FOLLOWING CODE IS REQUIRED TO TEST FOR END OF BUFFER, THAT IS, 00085000 * NO MORE SECTIONS FOLLOW TO BE SEARCHED. IF NOT END OF SECTION 00086000 * POINTERS MUST BE UPDATED TO NEXT SECTION. ALSO THE LOW KEY ADD. 00087000 * OF THE NEXT SECTION MUST BE SAVED. THE NO OF CHARACTERS WHICH HAVE 00088000 * COMPARED EQUAL (HITS) IS ALSO SAVED FOR LATER USE IN SEARCHING 00089000 * WITHIN THE SECTION. 00090000 * 00091000 ICM RWORK2,X03,IXHLEO(RBUFC) GET DISP. OF HIGH SECT. 00092000 AR RWORK2,RBUFC MAKE THAT A POINTER 00093000 CR RWORK2,RWORK1 HAVE WE MOVED BEYOND END 00094000 BNL SCIB7 YES, NO MATCH IN THIS BUFFER 00095000 L RWORK1,IXSHEP(RWORK3) POINT BACK TO OLD BASE 00096000 LR RWORK5,RWORK1 GET SAME ADDRESS IN RW5 00097000 IC RWORK4,IBFLPL(RWORK1) GET L FROM INDEX 00098000 STC R15,IXSPEC(RWORK3) SAVE FOR PREVIOUS ENTRY COUNT 00099000 SR RWORK5,RWORK4 MOVE BACK TO KEY AREA 00100000 SH RWORK5,HLF2 MOVE TO POINTER 00101000 ICM RWORK4,X03,DZ(RWORK5) PICK UP DISP. TO NEXT SECTION 00102000 SR RWORK5,RWORK0 MOVE ADDRESS PAST POINT, L,F 00103000 ST RWORK5,IXSLEP(RWORK3) SAVE LOW ENTRY OF SECT IN WORK 00104000 SR RWORK1,RWORK4 UPDATE TO NEXT SECTION 00105000 B COMFN1 BACK TO CONTINUE SEARCH 00106000 * 00107000 * THE FOLLOWING CODE UPDATES POINTERS TO CONTINUE SEARCH 00108000 * WITHIN A SECTION. WE CANNOT EXIT WITHOUT LOCATING AN ENTRY 00109000 * SINCE A SECTION SEARCH CAUSED US TO DO THE INNER SECTION SEARCH 00110000 * 00111000 SCIB5 L RWORK1,IXSHEP(RWORK3) START WITH ORIGINAL POINTER 00112000 STC R15,IXSPEC(RWORK3) SAVE NO. MATCHES @X04SVES 00113000 SR RWORK5,RWORK5 CLEAR REGISTER @X04SVES 00114000 STC RWORK5,IXSNOSR(RWORK3) RESET SPN RCD CI COUNT @X04SVES 00115000 LA RWORK5,C1 INITIALIZE SPN RCD CNT @X04SVES 00116000 IC RWORK4,IBFLPL(RWORK1) GET L VALUE 00117000 SR RWORK1,RWORK4 BACK OVER KEY 00118000 SCIB6 SR RWORK1,RWORK0 BACK OVER POINTER,L,F @X04SVES 00119000 SCIB62 IC RWORK4,IBFLPF(RWORK1) PICK UP F FIELD @X04SVES 00120000 LH RWORK2,IXSKLEN(RWORK3) PICK UP KEY LENGTH @X04SVES 00121000 CR RWORK2,RWORK4 SAME,MEADING SPN. RCD. @X04SVES 00122000 BNE COMFN2 NO @X04SVES 00123000 STC RWORK5,IXSNOSR(RWORK3) YES,SAVE CI COUNT @X04SVES 00124000 LA RWORK5,C1(RWORK5) BUMP CI COUNT @X04SVES 00125000 B SCIB6 @X04SVES 00126000 * 00127000 * BLOCK HAS BEEN SEARCHED AND NO SECTION ENTRY WAS GREATER THAN OR 00128000 * EQUAL TO THE KEY - EXIT TO CALLER WITH R15 = 4 00129000 * 00130000 SCIB7 LH R15,HLF4 SET CODE 00131000 B SCIB91 RETURN 00132000 * 00133000 * THE FOLLOWING CODE IS ENTERED WHEN A SECTION SEARCH HAS BEEN 00134000 * TERMINATED BY A SATISFIED SEARCH. AT THIS POINT IT IS NECESSARY 00135000 * TO INITIALIZE FOR AN INNER SECTION SEARCH 00136000 * 00137000 SCIB10 IC R15,IXSPEC(RWORK3) RESTORE NO. MATCHES TO WHAT IT 00138000 * WAS AT BEGINNING OF SECTION 00139000 L RWORK4,IXSHEP(RWORK3) GET AND STORE 00140000 ST RWORK4,IXSSEP(RWORK3) ADDRESS OF SECTION ENTRY 00141000 * IN WORK AREA 00142000 L RWORK1,IXSLEP(RWORK3) PICK UP ADDRESS OF 1ST. ENTRY 00143000 * IN THIS SECTION 00144000 XI IXSBFLG(RWORK3),X80 TURN OFF SECTION SEARCH 00145000 SR RWORK4,RWORK4 CLEAR CI COUNT @X04SVES 00146000 STC RWORK4,IXSNOSR(RWORK3) SAVE IN PARAMETER LIST @X04SVES 00147000 LA RWORK5,C1 RESET COUNT TO ONE @X04SVES 00148000 B SCIB62 GO TEST FOR SPN RCD @X04SVES 00149000 * @X04SVES 00150000 * THE FOLLOWING CODE IS ENTERED WHENEVER THE SEARCH WAS @X04SVES 00151000 * SATISFIED BY A SPANNED RECORD ENTRY. THE POINTER TO THE @X04SVES 00152000 * HIT ENTRY IS ADJUSTED TO POINT TO THE RIGHTMOST CI OF @X04SVES 00153000 * THE SPANNED RECORD ENTRY. @X04SVES 00154000 * @X04SVES 00155000 SCIB12 IC RWORK4,IXSNOSR(RWORK3) GET NO. OF SEG TO RIGHT@X04SVES 00156000 IC RWORK5,IXSEKON(RWORK3) GET LENGTH OF F,L,PTR @X04SVES 00157000 MR RWORK4,RWORK4 MULTIPLY @X04SVES 00158000 L RWORK4,IXSHEP(RWORK3) GET HIT ENTRY @X04SVES 00159000 AR RWORK4,RWORK5 MOVE ADDRESS TO RIGHT @X04SVES 00160000 ST RWORK4,IXSHEP(RWORK3) END OF SPANNED ENTRY @X04SVES 00161000 * RETURN; /* RETURN TO CALLER @X04SVES*/ 00162000 B @EL00001 0058 00163000 * GEN; 0059 00164000 * /* @X04SVES*/ 00165000 DS 0H ASSURE ALIGNMENT 00166000 HLF2 DC H'2' HALFWORD = 2 00167000 HLF4 DC H'4' HALFWORD = 4 00168000 DZ EQU 0 DEFINE ZERO DISPLACEMENT 00169000 * GEN(IDAPATCH); /* */ 00170000 IDAPATCH 00171000 * END IDA019RC 0061 00172000 * 0061 00173000 */* THE FOLLOWING INCLUDE STATEMENTS WERE FOUND IN THIS PROGRAM. */ 00174000 */*%INCLUDE SYSLIB (IDAIXSPL) */ 00175000 */*%INCLUDE SYSLIB (IDAREGS ) */ 00176000 */*%INCLUDE SYSLIB (IDAIRD ) */ 00177000 */*%INCLUDE SYSLIB (IDAAMDSB) */ 00178000 */*%INCLUDE SYSLIB (IDAAMB ) */ 00179000 * 0061 00180000 * ; 0061 00181000 B @EL00001 0061 00182000 @DATA DS 0H 00183000 @DATD DSECT 00184000 DS 0F 00185000 IDA019RC CSECT 00186000 DS 0F 00187000 @DATD DSECT 00188000 DS 0D 00189000 ORG *+1-(*-@DATD)/(*-@DATD) INSURE DSECT DATA 00190000 @ENDDATD EQU * 00191000 IDA019RC CSECT 00192000 DS 0F 00193000 @SIZDATD DC AL1(0) 00194000 DC AL3(@ENDDATD-@DATD) 00195000 DS 0D 00196000 HWORD4 DC H'4' 00197000 @00 EQU 00 EQUATES FOR REGISTERS 0-15 00198000 @01 EQU 01 00199000 @02 EQU 02 00200000 @03 EQU 03 00201000 @04 EQU 04 00202000 @05 EQU 05 00203000 @06 EQU 06 00204000 @07 EQU 07 00205000 @08 EQU 08 00206000 @09 EQU 09 00207000 @10 EQU 10 00208000 @11 EQU 11 00209000 @12 EQU 12 00210000 @13 EQU 13 00211000 @14 EQU 14 00212000 @15 EQU 15 00213000 RWORK0 EQU @00 00214000 RRPL EQU @01 00215000 RPLH EQU @02 00216000 RAMB EQU @03 00217000 RBUFC EQU @04 00218000 RWORK1 EQU @05 00219000 RWORK2 EQU @06 00220000 RWORK3 EQU @07 00221000 RWORK4 EQU @08 00222000 RWORK5 EQU @09 00223000 RPARM1 EQU @12 00224000 R14 EQU @14 00225000 R15 EQU @15 00226000 R1 EQU @01 00227000 R10 EQU @10 00228000 R11 EQU @11 00229000 R13 EQU @13 00230000 IDAIXSPL EQU 0 00231000 IXSKLEN EQU IDAIXSPL+14 00232000 IXSNOSR EQU IDAIXSPL+16 00233000 IXSBFLG EQU IDAIXSPL+17 00234000 IXSEKON EQU IDAIXSPL+18 00235000 IXSPEC EQU IDAIXSPL+19 00236000 IXSHEP EQU IDAIXSPL+20 00237000 IXSSEP EQU IDAIXSPL+24 00238000 IXSLEP EQU IDAIXSPL+28 00239000 IDAIXH EQU 0 00240000 IXHLL EQU IDAIXH 00241000 IXHFLPLN EQU IDAIXH+2 00242000 IXHLV EQU IDAIXH+16 00243000 IXHLEO EQU IDAIXH+20 00244000 IXHSEO EQU IDAIXH+22 00245000 IDAIBFLP EQU 0 00246000 IBFLPF EQU IDAIBFLP 00247000 IBFLPL EQU IDAIBFLP+1 00248000 IBFLP3 EQU IDAIBFLP+2 00249000 IBFLP2 EQU IBFLP3 00250000 IDASELL EQU 0 00251000 IDAIXK EQU 0 00252000 IDAAMDSB EQU 0 00253000 AMDATTR EQU IDAAMDSB+1 00254000 AMDNEST EQU IDAAMDSB+4 00255000 AMDKEYLN EQU IDAAMDSB+8 00256000 AMDHLRBA EQU IDAAMDSB+28 00257000 AMDSSRBA EQU IDAAMDSB+32 00258000 AMDATTR3 EQU IDAAMDSB+40 00259000 AMDSTAT EQU IDAAMDSB+48 00260000 IDAAMB EQU 0 00261000 AMBDSB EQU IDAAMB+20 00262000 AMBEOVR EQU IDAAMB+24 00263000 AMBFLG0 EQU AMBEOVR 00264000 AMBFLG1 EQU IDAAMB+25 00265000 AMBDSORG EQU IDAAMB+26 00266000 AMBIOBAD EQU IDAAMB+28 00267000 AMBINFL EQU IDAAMB+42 00268000 AMBDEBPT EQU IDAAMB+44 00269000 AMBOFLGS EQU IDAAMB+48 00270000 AMBFLG2 EQU IDAAMB+49 00271000 AMBEOVPT EQU IDAAMB+56 00272000 AMBCSWD1 EQU IDAAMB+84 00273000 AMBAFLG EQU AMBCSWD1 00274000 AGO .@UNREFD START UNREFERENCED COMPONENTS 00275000 AMBTRACE EQU IDAAMB+120 00276000 AMBVIOT EQU IDAAMB+116 00277000 AMBSZCP EQU IDAAMB+114 00278000 AMBSZFW EQU IDAAMB+112 00279000 AMBSZWR EQU IDAAMB+110 00280000 AMBSZRD EQU IDAAMB+108 00281000 AMBEXEX EQU IDAAMB+100 00282000 AMBWSHD EQU IDAAMB+96 00283000 AMBCPA EQU IDAAMB+92 00284000 AMBBM2SH EQU IDAAMB+88 00285000 AMBRDCNT EQU AMBCSWD1+2 00286000 @NM00015 EQU AMBCSWD1+1 00287000 @NM00014 EQU AMBAFLG 00288000 AMBCFX EQU AMBAFLG 00289000 AMBSIS EQU AMBAFLG 00290000 AMBDFR EQU AMBAFLG 00291000 AMBICI EQU AMBAFLG 00292000 AMBGSR EQU AMBAFLG 00293000 AMBLSR EQU AMBAFLG 00294000 @NM00013 EQU AMBAFLG 00295000 AMBUPLH EQU IDAAMB+80 00296000 AMBPAMBL EQU IDAAMB+76 00297000 AMBPIXP EQU IDAAMB+72 00298000 @NM00012 EQU IDAAMB+68 00299000 AMBIWA EQU IDAAMB+64 00300000 AMBWKA EQU IDAAMB+60 00301000 AMBAMBXN EQU AMBEOVPT 00302000 AMBEDB EQU IDAAMB+52 00303000 AMBRPT EQU IDAAMB+50 00304000 AMBPUG EQU AMBFLG2 00305000 AMBBUSY EQU AMBOFLGS 00306000 AMBEXFG EQU AMBOFLGS 00307000 @NM00011 EQU AMBOFLGS 00308000 AMBOPEN EQU AMBOFLGS 00309000 @NM00010 EQU AMBOFLGS 00310000 AMBDEBAD EQU AMBDEBPT+1 00311000 AMBIFLGS EQU AMBDEBPT 00312000 AMBAMETH EQU IDAAMB+43 00313000 AMBUPX EQU AMBINFL 00314000 AMBUCRA EQU AMBINFL 00315000 AMBSCRA EQU AMBINFL 00316000 AMBCAT EQU AMBINFL 00317000 @NM00009 EQU AMBINFL 00318000 @NM00008 EQU AMBINFL 00319000 AMBTIOT EQU IDAAMB+40 00320000 @NM00007 EQU IDAAMB+38 00321000 AMBDDSN EQU IDAAMB+35 00322000 AMBCDSN EQU IDAAMB+32 00323000 AMBIOMB EQU AMBIOBAD 00324000 @NM00006 EQU AMBDSORG+1 00325000 AMBDORGA EQU AMBDSORG+1 00326000 @NM00005 EQU AMBDSORG 00327000 AMBINBUF EQU AMBFLG1 00328000 AMBJRN EQU AMBFLG1 00329000 AMBUBF EQU AMBFLG1 00330000 AMBSPEED EQU AMBFLG1 00331000 AMBPCAT EQU AMBFLG1 00332000 AMBMCAT EQU AMBFLG1 00333000 AMBTYPE EQU AMBFLG1 00334000 AMBCREAT EQU AMBFLG1 00335000 @NM00004 EQU AMBFLG0 00336000 AMBPSDS EQU AMBFLG0 00337000 AMBCACB EQU IDAAMB+16 00338000 AMBPH EQU IDAAMB+12 00339000 AMBBUFC EQU IDAAMB+8 00340000 AMBLINK EQU IDAAMB+4 00341000 AMBLEN EQU IDAAMB+2 00342000 AMBRSC EQU IDAAMB+1 00343000 AMBID EQU IDAAMB 00344000 AMDEXCP EQU AMDSTAT+44 00345000 AMDNCAS EQU AMDSTAT+40 00346000 AMDNCIS EQU AMDSTAT+36 00347000 AMDASPA EQU AMDSTAT+32 00348000 AMDRETR EQU AMDSTAT+28 00349000 AMDUPR EQU AMDSTAT+24 00350000 AMDIREC EQU AMDSTAT+20 00351000 AMDDELR EQU AMDSTAT+16 00352000 AMDNLR EQU AMDSTAT+12 00353000 AMDNEXT EQU AMDSTAT+10 00354000 AMDNIL EQU AMDSTAT+8 00355000 AMDSTSP EQU AMDSTAT 00356000 @NM00003 EQU IDAAMDSB+41 00357000 @NM00002 EQU AMDATTR3 00358000 AMDLM EQU AMDATTR3 00359000 AMDWAIT EQU AMDATTR3 00360000 AMDBIND EQU AMDATTR3 00361000 AMDFAULT EQU AMDATTR3 00362000 AMDUNQ EQU AMDATTR3 00363000 AMDPARDB EQU IDAAMDSB+36 00364000 AMDMAXRR EQU AMDSSRBA 00365000 AMDNSLOT EQU AMDHLRBA 00366000 AMDLRECL EQU IDAAMDSB+24 00367000 AMDCINV EQU IDAAMDSB+20 00368000 AMDFSCI EQU IDAAMDSB+16 00369000 AMDFSCA EQU IDAAMDSB+14 00370000 AMDCIPCA EQU IDAAMDSB+12 00371000 AMDPCTCI EQU IDAAMDSB+11 00372000 AMDPCTCA EQU IDAAMDSB+10 00373000 AMDRKP EQU IDAAMDSB+6 00374000 AMDAXRKP EQU AMDNEST 00375000 AMDLEN EQU IDAAMDSB+2 00376000 AMDSPAN EQU AMDATTR 00377000 AMDRRDS EQU AMDATTR 00378000 AMDRANGE EQU AMDATTR 00379000 AMDORDER EQU AMDATTR 00380000 AMDREPL EQU AMDATTR 00381000 AMDSDT EQU AMDATTR 00382000 AMDWCK EQU AMDATTR 00383000 AMDDST EQU AMDATTR 00384000 AMDSBID EQU IDAAMDSB 00385000 IXKEY EQU IDAIXK 00386000 IXSELL EQU IDASELL 00387000 IBFLP1 EQU IBFLP2 00388000 IXHFSO EQU IDAIXH+18 00389000 IXHFLGS EQU IDAIXH+17 00390000 IXHXX EQU IDAIXH+12 00391000 IXHHP EQU IDAIXH+8 00392000 IXHBRBA EQU IDAIXH+4 00393000 IXHPTLS EQU IDAIXH+3 00394000 @NM00001 EQU IXSBFLG 00395000 IXSLELV EQU IXSBFLG 00396000 IXSSSRH EQU IXSBFLG 00397000 IXSILN EQU IDAIXSPL+13 00398000 IXSTLN EQU IDAIXSPL+12 00399000 IXSARG EQU IDAIXSPL+8 00400000 IXSBUFC EQU IDAIXSPL+4 00401000 IXSSTRBA EQU IDAIXSPL 00402000 .@UNREFD ANOP END UNREFERENCED COMPONENTS 00403000 SCIB91 EQU @EL00001 00404000 @ENDDATA EQU * 00405000 END IDA019RC,(C'PLS1953',0701,78172) 00406000