%AUCFIX ; COUNT ENTIRES IN FILEMAN FILES AND FIX [ 02/16/88 8:00 AM ]
;
W !,"This program counts primary entries for FileMan files and fixes 0th node.",!
S U="^"
D ^%AUDSET
Q:'$D(^UTILITY("AUDSET",$J))
S AUCFIXFL="" F AUCFIXL=0:0 S AUCFIXFL=$O(^UTILITY("AUDSET",$J,AUCFIXFL)) Q:AUCFIXFL'=+AUCFIXFL D AUCFIXFL
D EOJ
Q
;
AUCFIXFL ;
W !,AUCFIXFL
I AUCFIXFL=3.081 W " skipping" Q
I '$D(^DIC(AUCFIXFL,0,"GL")) W !!,"No data global specified in ^DIC!" Q
S AUCFIXGB=^DIC(AUCFIXFL,0,"GL")
I '$D(@($S($E(AUCFIXGB,$L(AUCFIXGB))="(":$E(AUCFIXGB,1,$L(AUCFIXGB)-1),1:$E(AUCFIXGB,1,$L(AUCFIXGB)-1)_")"))) W !!,"Bad global!" Q
S AUCFIXGB=AUCFIXGB_"AUCFIXNX)"
S (AUCFIXHI,AUCFIXNX,AUCFIXC)=0
F AUCFIXL=0:0 S AUCFIXNX=$O(@(AUCFIXGB)) Q:AUCFIXNX'=+AUCFIXNX S AUCFIXHI=AUCFIXNX,AUCFIXC=AUCFIXC+1 W:'(AUCFIXC#50) "."
W !," Count=",AUCFIXC,?22,"High DFN=",AUCFIXHI
S AUCFIXNX="",AUCFIXX=$O(@(AUCFIXGB)),AUCFIXX=^(0),AUCFIXY=$P(AUCFIXX,U,4),AUCFIXX=$P(AUCFIXX,U,3)
I AUCFIXC=AUCFIXY,AUCFIXHI=AUCFIXX W ?50,"[correct]" Q
W ?50,"[incorrect -- fixed]" S $P(^(0),U,3)=AUCFIXHI,$P(^(0),U,4)=AUCFIXC
Q
;
EOJ ;
K AUCFIXHI,AUCFIXX,AUCFIXY,AUCFIXC,DIC,DIC(0),AUCFIXFL,AUCFIXGB,AUCFIXL,AUCFIXNX
Q
%AUCFIX ; COUNT ENTIRES IN FILEMAN FILES AND FIX [ 02/16/88 8:00 AM ]
+1 ;
+2 WRITE !,"This program counts primary entries for FileMan files and fixes 0th node.",!
+3 SET U="^"
+4 DO ^%AUDSET
+5 IF '$DATA(^UTILITY("AUDSET",$JOB))
QUIT
+6 SET AUCFIXFL=""
FOR AUCFIXL=0:0
SET AUCFIXFL=$ORDER(^UTILITY("AUDSET",$JOB,AUCFIXFL))
IF AUCFIXFL'=+AUCFIXFL
QUIT
DO AUCFIXFL
+7 DO EOJ
+8 QUIT
+9 ;
AUCFIXFL ;
+1 WRITE !,AUCFIXFL
+2 IF AUCFIXFL=3.081
WRITE " skipping"
QUIT
+3 IF '$DATA(^DIC(AUCFIXFL,0,"GL"))
WRITE !!,"No data global specified in ^DIC!"
QUIT
+4 SET AUCFIXGB=^DIC(AUCFIXFL,0,"GL")
+5 IF '$DATA(@($SELECT($EXTRACT(AUCFIXGB,$LENGTH(AUCFIXGB))="(":$EXTRACT(AUCFIXGB,1,$LENGTH(AUCFIXGB)-1),1:$EXTRACT(AUCFIXGB,1,$LENGTH(AUCFIXGB)-1)_")")))
WRITE !!,"Bad global!"
QUIT
+6 SET AUCFIXGB=AUCFIXGB_"AUCFIXNX)"
+7 SET (AUCFIXHI,AUCFIXNX,AUCFIXC)=0
+8 FOR AUCFIXL=0:0
SET AUCFIXNX=$ORDER(@(AUCFIXGB))
IF AUCFIXNX'=+AUCFIXNX
QUIT
SET AUCFIXHI=AUCFIXNX
SET AUCFIXC=AUCFIXC+1
IF '(AUCFIXC#50)
WRITE "."
+9 WRITE !," Count=",AUCFIXC,?22,"High DFN=",AUCFIXHI
+10 SET AUCFIXNX=""
SET AUCFIXX=$ORDER(@(AUCFIXGB))
SET AUCFIXX=^(0)
SET AUCFIXY=$PIECE(AUCFIXX,U,4)
SET AUCFIXX=$PIECE(AUCFIXX,U,3)
+11 IF AUCFIXC=AUCFIXY
IF AUCFIXHI=AUCFIXX
WRITE ?50,"[correct]"
QUIT
+12 WRITE ?50,"[incorrect -- fixed]"
SET $PIECE(^(0),U,3)=AUCFIXHI
SET $PIECE(^(0),U,4)=AUCFIXC
+13 QUIT
+14 ;
EOJ ;
+1 KILL AUCFIXHI,AUCFIXX,AUCFIXY,AUCFIXC,DIC,DIC(0),AUCFIXFL,AUCFIXGB,AUCFIXL,AUCFIXNX
+2 QUIT