%ZOSVKSS ;OAK/KAK - Automatic INTEGRIT Routine (cont.) (Cache) ;5/9/07 10:44 ;;8.0;KERNEL;**90,94,197,268,456**;Jul 26, 2004 ; ; Version for Cache ; RESTART ;-- called by routine C+6^%ZOSVKSE ; ;-- code from routine CHECKPNT ; K SUB,C N B,D,E,FLAG,LE,LL,LN,LNP,TL1 ; S (ERR,FLAG,NP,NB,LSNP,LNB)=0 ; S X="",@^%ZOSF("TRAP") ; V BLK S A=$V(2,-5) V A S A=",,"_($V(2043,0,1)*16777216+A)_"," ; S X="ERR^%ZOSVKSS",@^%ZOSF("TRAP") ; CHK Q:+$G(^XTMP("KMPS","STOP")) ; V BLK S LINK=$V(2040,0,"3O") S A=$V($P(A,",",3),-7,$P(A,",",4),400) S TL=$P(A,",",3)\16777216 S NP=NP+A,NB=NB+$P(A,",",2) ; ; big global data blocks (type 12) I FLAG=0,(TL=8)!(TL=12) S FLAG=1 V BLK S B=$V(2,-5) D .F Q:'B V B S B=$V(2040,0,"3O") F N=1:1 Q:$V(N-1*2+1,-6)="" S X=$V(N-1*2+2,-6) S:$A(X)=3 LNB=LNB+($A(X,2)*2048)+$ZWA(X,3),LSNP=LSNP+$A(X,2)+1 ; CHKB I LINK S BLK=LINK G CHK ; ; ragged edge I $P(A,",",3)#16777216,$P(A,",",3)\16777216-16 G ER6 ; END S X="",@^%ZOSF("TRAP") ; ; W "# ptrs = "_NP S LNBLK=+$G(LNBLK) ; na% => cannot calculate the percent efficiency of first pointer block I CUR=1 S ^XTMP("KMPS",KMPSSITE,NUM,$P(GLO,"^"),KMPSZU,KMPSDT,CUR)="1^na%^Pointer" I (NBLK+LNBLK) D .; W ", # blks = "_(NBLK+LNBLK)_", # ptrs/blk = "_(NP\(NBLK+LNBLK)) .; W ", eff = "_(((NBYTE+LNBYTE)*100)\((2036*NBLK)+(2048*LNBLK)))_"%" .S ^XTMP("KMPS",KMPSSITE,NUM,$P(GLO,"^"),KMPSZU,KMPSDT,CUR)=(NBLK+LNBLK)_"^"_(((NBYTE+LNBYTE)*100)\((2036*NBLK)+(2048*LNBLK)))_"%^"_$S(CUR=(LEV-1):"Bottom p",1:"P")_"ointer" S TL=$P(A,",",3)\16777216 ; ; m-code blocks (type 16) - do not store into ^XTMP("KMPS") ; I TL=16 W "Routine level: # rtns = "_NP ; ; global data blocks (type 8) and big global data blocks (type 12) I TL=8!(TL=12) D .; I NP W "Data level: # blks = "_NP_", eff = " W:NP (NB*100\(2036*NP))_"%" .I NP S ^XTMP("KMPS",KMPSSITE,NUM,$P(GLO,"^"),KMPSZU,KMPSDT,"D")=NP_"^"_$S(NP:NB*100\(2036*NP),1:"")_"%^Data" .; I LSNP W "Long String level: # blks = "_LSNP_",eff = " W:LSNP (LNB*100\(2048*LSNP))_"%" .I LSNP S ^XTMP("KMPS",KMPSSITE,NUM,$P(GLO,"^"),KMPSZU,KMPSDT,"L")=LSNP_"^"_$S(LSNP:LNB*100\(2048*LSNP),1:"")_"%^LongString" S NBLK=NP,LNBLK=LSNP,NBYTE=NB,LNBYTE=LNB Q ;-- end code from routine CHECKPNT ; ERR ;-- code from routine CHECK0 ; S (LE,LL,ERR)=0 ; ; global is too large for INTEGRIT - use ^DIAG to check this global I $ZE?1"".E S ERR=1 Q ; S D=BLK,LN=$P(A,",",4),TL=$P(A,",",3)\16777216 ; S X="ERROR^%ZOSVKSS",@^%ZOSF("TRAP") ; V BLK D CHECK1 Q:ERR ; K B F I=1:2:C-2 S B=C(I)-1#400,B(C(I)-B,B)="" D CM(1) Q:ERR ; K B F I=1:2:C-2 I C(I,1) D MB D CM(249) Q:ERR ; K B S NP=C\2+NP,NB=NB+LE,A=",,"_(TL*16777216+LL)_","_LN K C ; S X="ERR^%ZOSVKSS",@^%ZOSF("TRAP") ; G CHKB ; ERROR I $ZE?1"2048) D ER19 .F K=0:1:N S BL=(((($A(X,A+3)*256)+$A(X,A+2))*256)+$A(X,A+1)),A=A+3 S B=BL-1#400 I $D(B(BL-B,B)) D ER20 S B(BL-B,B)=C(I)_","_J_","_K Q ;-- end code from routine CHECK0 ; CHECK1 ;-- code from routine CHECK1 ; F C=1:2 Q:$V(C,-5)="" S SUB(C)=$V(C,-5) F I=1:2:C-2 D .S C(I)=$V(I+1,-6),C(I,1)=C(I)\8388608#2,C(I)=C(I)#8388608 .I C(I)=BLK G ER10 I $P(A,",",3)#16777216-C(1),$P(A,",",3)\16777216-16 G ER3 F E=1:2:C-2 S D=C(E) V D D CH Q:ERR I TL=16,LINK S D=LINK V D S LL=$V(2,-5) Q ; CH I $V(0,0)#256 G ER7 S TL1=$V(2043,0,1) I (TL=8)!(TL=12) D .I 'C(E,1),TL1'=8 G ER16 .I C(E,1),TL1'=12 G ER17 I (TL-8),(TL-12),$V(2043,0,1)-TL G ER12 S LE=LE+$V(2046,0,2) I $V(1,-5)'=SUB(E) G ER8 Q:TL=16 S LL=$V(2040,0,"3O") I E+2