- %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