Changeset 636 for FOIAVistA/tag/r/KERNEL-XU-A4A7-USC-XG-XLF-XNOA-XPD-XQ-XVIR-ZI-ZOSF-ZOSV-ZT-ZU-%Z-XIP--XQAB--XUC--XUR--ZIN--ZTED/XQ3.m
- Timestamp:
- Dec 4, 2009, 8:26:01 PM (14 years ago)
- Location:
- FOIAVistA/tag/r
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
FOIAVistA/tag/r/KERNEL-XU-A4A7-USC-XG-XLF-XNOA-XPD-XQ-XVIR-ZI-ZOSF-ZOSV-ZT-ZU-%Z-XIP--XQAB--XUC--XUR--ZIN--ZTED/XQ3.m
r628 r636 1 XQ3 ;LL/THM,SF/GJL,SEA/JLI - CLEANUP DANGLING POINTERS IN OPTION OR HELP FRAME FILES ;04/ 30/08 17:062 ;;8.0;KERNEL;**80 ,501**;Jul 10, 1995;Build 11 XQ3 ;LL/THM,SF/GJL,SEA/JLI - CLEANUP DANGLING POINTERS IN OPTION OR HELP FRAME FILES ;04/21/98 13:20 2 ;;8.0;KERNEL;**80**;Jul 10, 1995 3 3 Q 4 4 ENASK ;Ask to fix up dirty OPTION/HELP FRAME File 5 N IX,XUT,J,K,XQFL,X6 5 I '$D(%) W !,$C(7),"ENTRY MUST BE WITH THE VARIABLE '%' SET TO INDICATE DESIRED FILE.",$C(7),! Q 7 6 S XQFL=$S(%=1:"OPTION",%=2:"PROTOCOL",1:"HELP FRAME") … … 22 21 W !!,"Enter: NO or ^ to continue on without effecting the ",XQFL," File." 23 22 W ! G ENASK 24 REMOVE D:%=1 OPFIX D:%=2 PFIX D:'% HFFIX W !,"Your ",XQFL," File is OK " I 'XUT W "(no bad pointers)." 25 E W "now (",XUT," pointer" W:XUT>1 "s" W " fixed)." 26 W ! S X="Y" 23 REMOVE D:%=1 ENFIX D:%=2 PFIX D:'% HFFIX W !,"Your ",XQFL," File is OK " I 'X W "(no bad pointers)." 24 E W "now (",X," pointer" W:X>1 "s" W " fixed)." 25 W ! S X="Y" Q 26 ENFIX ;Kill any dangling pointers in the OPTION File (#19) 27 S (I,X)=0 ;X=Total Deletions 28 L1 S I=$O(^DIC(19,I)) I I>0 S (Y,J)=0 G L2 ;Loop through menus 27 29 Q 28 OPFIX ;Kill any dangling pointers in the OPTION File (#19) 29 N %,IX,J,XQ3 30 S (IX,XUT)=0 ;XUT=Total Deletions 31 F S IX=$O(^DIC(19,IX)) Q:'IX W:'(IX#100) ". " S (XQ3,J)=0 D L2 ;Loop through Options 32 D NPF 30 L2 S J=$O(^DIC(19,I,10,J)) I J>0 G ITEM ;Loop through menu items 31 I '$D(^DIC(19,I,10,0)) G L1 32 S (K,J)=0 F L=1:1 S J=$O(^DIC(19,I,10,J)) Q:J'>0 S K=J ;K=Last item 33 S J=^DIC(19,I,10,0),^(0)=$P(J,"^",1,2)_"^"_K_"^"_Y ;fix counters 34 G XREFS 35 ITEM S K=+^DIC(19,I,10,J,0) I $D(^DIC(19,K,0)) S Y=Y+1 G L2 ;Y=No. of items 36 W !,"Option ",$P(^DIC(19,I,0),U,1)," points to missing option ",K 37 S X=X+1 K ^DIC(19,I,10,J) ;Kill invalid menu item 38 G L2 39 XREFS S K=":" 40 L3 S K=$O(^DIC(19,I,10,K)) I K="" G L1 ;Loop through cross references 41 S L=-1 42 L4 S L=$O(^DIC(19,I,10,K,L)) I L="" G L3 43 S J=0 44 L5 S J=$O(^DIC(19,I,10,K,L,J)) I J'>0 G L4 45 I '$D(^DIC(19,I,10,J,0)) G KILLXR ;kill xref to invalid item 46 L6 S M=^DIC(19,I,10,J,0) I (M=L)!(M[L_"^") G L5 47 KILLXR K ^DIC(19,I,10,K,L,J) I $O(^DIC(19,I,10,K,L,-1))="" K ^DIC(19,I,10,K,L) 48 G L5 49 HFFIX ; Fix dangling pointers on help frame file 50 S (X,I)=0 F S I=$O(^DIC(9.2,I)) Q:I'>0 I $D(^(I,2)) D HF1,HF2,HF3 33 51 Q 34 L2 ;One Option 35 I '$D(^DIC(19,IX,10,0)) Q ;Not a Menu 36 K ^DIC(19,IX,10,"B") ;Rebuild "B" X-ref 37 F S J=$O(^DIC(19,IX,10,J)) Q:'J D ITEM ;Loop through menu items 38 S (K,J)=0 F S J=$O(^DIC(19,IX,10,J)) Q:J'>0 S K=J ;K=Last item 39 S J=^DIC(19,IX,10,0),^(0)=$P(J,"^",1,2)_"^"_K_"^"_XQ3 ;fix counters 52 HF1 S (Y,J)=0 F S J=$O(^DIC(9.2,I,2,J)) Q:J'>0 I $D(^(J,0)) S K=$P(^(0),U,2),Y=Y+1 I $L(K),'$D(^DIC(9.2,K)) S Y=Y-1,X=X+1 K ^DIC(9.2,I,2,J,0) 40 53 Q 41 ; 42 ITEM ;One Menu item 43 N DA,DIK 44 S K=+^DIC(19,IX,10,J,0) 45 I $D(^DIC(19,K,0)) S XQ3=XQ3+1,^DIC(19,IX,10,"B",K,J)="" Q ;Y=No. of items 46 W !,"Option ",$P(^DIC(19,IX,0),U,1)," points to missing option ",K 47 ;S XUT=XUT+1 K ^DIC(19,IX,10,J) ;Kill invalid menu item 48 S XUT=XUT+1,DIK="^DIC(19,DA(1),10,",DA=J,DA(1)=IX D ^DIK ;Trigger Menu-rebuild 54 HF2 S (K,J)=0 F S J=$O(^DIC(9.2,I,2,J)) Q:J'>0 S K=J 55 S J=^DIC(9.2,I,2,0),^(0)=$P(J,U,1,2)_U_K_U_Y 49 56 Q 50 ; 51 NPF ;Fix the New Person File Option Pointers 52 N IX,I2,J,P,DIK,DIE,DR,DA,XUT 53 S (XUT,IX)=0 54 F S IX=$O(^VA(200,IX)) Q:'IX D 55 . S P=+$G(^VA(200,IX,201)) 56 . I P,'$D(^DIC(19,P,0)) D 57 . . W !,"User: ",$P(^VA(200,IX,0),U),", Primary Menu points to missing option ",P 58 . . S XUT=XUT+1,DIE="^VA(200,",DA=IX,DR="201///@" D ^DIE 59 . . Q 60 . S I2=0 61 . F S I2=$O(^VA(200,IX,203,I2)) Q:'I2 D 62 . . S P=+$G(^VA(200,IX,203,I2,0)) 63 . . I P,'$D(^DIC(19,P,0)) D 64 . . . W !,"User: ",$P(^VA(200,IX,0),U),", Secondary Menu points to missing option ",P 65 . . . S XUT=XUT+1,DIK="^VA(200,DA(1),203,",DA=I2,DA(1)=IX D ^DIK 66 . . . Q 67 . . Q 68 . Q 69 I XUT W !,"Menu pointers fixed." 57 HF3 S K=":" F S K=$O(^DIC(9.2,I,2,K)) Q:K="" S J=-1 F S J=$O(^DIC(9.2,I,2,K,J)) Q:J="" D HF4 70 58 Q 71 HFFIX ; Fix dangling pointers on help frame file 72 N % 73 S (XUT,IX)=0 F S IX=$O(^DIC(9.2,IX)) Q:IX'>0 I $D(^(IX,2)) D HF1,HF2,HF3 74 Q 75 HF1 S (Y,J)=0 F S J=$O(^DIC(9.2,IX,2,J)) Q:J'>0 I $D(^(J,0)) S K=$P(^(0),U,2),Y=Y+1 I $L(K),'$D(^DIC(9.2,K)) S Y=Y-1,XUT=XUT+1 K ^DIC(9.2,IX,2,J,0) 76 Q 77 HF2 S (K,J)=0 F S J=$O(^DIC(9.2,IX,2,J)) Q:J'>0 S K=J 78 S J=^DIC(9.2,IX,2,0),^(0)=$P(J,U,1,2)_U_K_U_Y 79 Q 80 HF3 S K=":" F S K=$O(^DIC(9.2,IX,2,K)) Q:K="" S J=-1 F S J=$O(^DIC(9.2,IX,2,K,J)) Q:J="" D HF4 81 Q 82 HF4 S JJ=0 F S JJ=$O(^DIC(9.2,IX,2,K,J,JJ)) Q:JJ'>0 I '$D(^DIC(9.2,IX,2,JJ,0)) K ^DIC(9.2,IX,2,K,J,JJ) 59 HF4 S JJ=0 F S JJ=$O(^DIC(9.2,I,2,K,J,JJ)) Q:JJ'>0 I '$D(^DIC(9.2,I,2,JJ,0)) K ^DIC(9.2,I,2,K,J,JJ) 83 60 Q 84 61 PFIX ;Kill any dangling pointers in the PROTOCOL File (#101) 85 N % 86 S (IX,XUT)=0 ;XUT=Total Deletions 87 P1 S IX=$O(^ORD(101,IX)) I IX>0 S (Y,J)=0 G P2 ;Loop through protocols 62 S (I,X)=0 ;X=Total Deletions 63 P1 S I=$O(^ORD(101,I)) I I>0 S (Y,J)=0 G P2 ;Loop through protocols 88 64 Q 89 P2 S J=$O(^ORD(101,I X,10,J)) I J>0 G PITEM ;Loop through items90 I '$D(^ORD(101,I X,10,0)) G P191 S (K,J)=0 F L=1:1 S J=$O(^ORD(101,I X,10,J)) Q:J'>0 S K=J ;K=Last item92 S J=^ORD(101,I X,10,0),^(0)=$P(J,"^",1,2)_"^"_K_"^"_Y ;fix counters65 P2 S J=$O(^ORD(101,I,10,J)) I J>0 G PITEM ;Loop through items 66 I '$D(^ORD(101,I,10,0)) G P1 67 S (K,J)=0 F L=1:1 S J=$O(^ORD(101,I,10,J)) Q:J'>0 S K=J ;K=Last item 68 S J=^ORD(101,I,10,0),^(0)=$P(J,"^",1,2)_"^"_K_"^"_Y ;fix counters 93 69 G PXREFS 94 PITEM S K=+^ORD(101,IX,10,J,0) I $D(^ORD(101,K,0)) S Y=Y+1 G P2 ;Y=No. of items 95 W !,"Protocol ",$P(^ORD(101,IX,0),U,1)," points to missing protocol ",K 96 ;S XUT=XUT+1 K ^ORD(101,IX,10,J) ;Kill invalid menu item 97 S XUT=XUT+1,DIK="^ORD(101,IX,10,",DA=J,DA(1)=IX D ^DIK ;Delete invalid menu item 70 PITEM S K=+^ORD(101,I,10,J,0) I $D(^ORD(101,K,0)) S Y=Y+1 G P2 ;Y=No. of items 71 W !,"Option ",$P(^ORD(101,I,0),U,1)," points to missing option ",K 72 S X=X+1 K ^ORD(101,I,10,J) ;Kill invalid menu item 98 73 G P2 99 74 PXREFS S K=":" 100 P3 S K=$O(^ORD(101,I X,10,K)) I K="" G P1 ;Loop through cross references75 P3 S K=$O(^ORD(101,I,10,K)) I K="" G P1 ;Loop through cross references 101 76 S L=-1 102 P4 S L=$O(^ORD(101,I X,10,K,L)) I L="" G P377 P4 S L=$O(^ORD(101,I,10,K,L)) I L="" G P3 103 78 S J=0 104 P5 S J=$O(^ORD(101,I X,10,K,L,J)) I J'>0 G P4105 I '$D(^ORD(101,I X,10,J,0)) G PKILLXR ;kill xref to invalid item106 P6 S M=^ORD(101,I X,10,J,0) I (M=L)!(M[L_"^") G P5107 PKILLXR K ^ORD(101,I X,10,K,L,J) I $O(^ORD(101,IX,10,K,L,-1))="" K ^ORD(101,IX,10,K,L)79 P5 S J=$O(^ORD(101,I,10,K,L,J)) I J'>0 G P4 80 I '$D(^ORD(101,I,10,J,0)) G PKILLXR ;kill xref to invalid item 81 P6 S M=^ORD(101,I,10,J,0) I (M=L)!(M[L_"^") G P5 82 PKILLXR K ^ORD(101,I,10,K,L,J) I $O(^ORD(101,I,10,K,L,-1))="" K ^ORD(101,I,10,K,L) 108 83 G P5
Note:
See TracChangeset
for help on using the changeset viewer.