[613] | 1 | DDFIX ;SFCIOFO/S0/MKO VARIOUS DD AND DIC FIXES ;9:17 AM 15 Mar 1999
|
---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | FIXPT ; ==> Fix Bad "PT" Nodes <==
|
---|
| 6 | ;
|
---|
| 7 | N EP,ESC
|
---|
| 8 | I '$D(XPDNM) S EP="PT" D DEVICE
|
---|
| 9 | I $D(ESC) G EXIT
|
---|
| 10 | DEQPT N DICFILE,DDFILE,DDFIELD,PGLEN,PG,RPTDT,X
|
---|
| 11 | U IO
|
---|
| 12 | D RPTDT
|
---|
| 13 | S PGLEN=IOSL-5,PG=0
|
---|
| 14 | I '$D(XPDNM) D PTHDR
|
---|
| 15 | ; Loop thru DIC(<file #>,
|
---|
| 16 | S DICFILE=1.99999
|
---|
| 17 | F S DICFILE=$O(^DIC(DICFILE)) Q:DICFILE'>1.99999!$D(ESC) D
|
---|
| 18 | . ; Loop thru DD(DICFILE,0,"PT",<file #>
|
---|
| 19 | . S DDFILE=1.99999
|
---|
| 20 | . F S DDFILE=$O(^DD(DICFILE,0,"PT",DDFILE)) Q:DDFILE'>1.99999!$D(ESC) D
|
---|
| 21 | .. I $D(^DD(DDFILE,0))#2 D Q ; File Exists
|
---|
| 22 | ... ; Check Fields Exists
|
---|
| 23 | ... S DDFIELD=0
|
---|
| 24 | ... F S DDFIELD=$O(^DD(DICFILE,0,"PT",DDFILE,DDFIELD)) Q:'DDFIELD!$D(ESC) D
|
---|
| 25 | .... I $D(^DD(DDFILE,DDFIELD,0))#2 D Q ; Field is still in DD
|
---|
| 26 | ..... I ($P(^(0),U,2)'["P")&($P(^(0),U,2)'["V") D Q ; Field Still A Pointer?
|
---|
| 27 | ...... S X="*File: "_DDFILE_" Field: "_DDFIELD_" is Not a Pointer Type." D RPTOUT
|
---|
| 28 | ...... S X=" Deleting ""PT"" node: "_$NA(^DD(DICFILE,0,"PT",DDFILE,DDFIELD)) D RPTOUT,K1 Q
|
---|
| 29 | ..... I $P(^(0),U,2)["P",+$P($P(^(0),U,2),"P",2)'=DICFILE D Q ; Field Still Point To Same File?
|
---|
| 30 | ...... S X="*File: "_DDFILE_" Field: "_DDFIELD_" Does Not Point To File: "_DICFILE_"." D RPTOUT
|
---|
| 31 | ...... S X=" Deleting ""PT"" Node: "_$NA(^DD(DICFILE,0,"PT",DDFILE,DDFIELD)) D RPTOUT,K1 Q
|
---|
| 32 | .... ; **Field No Longer Exists
|
---|
| 33 | .... S X="*Field: "_DDFIELD_" in File: "_DDFILE_" does Not Exist." D RPTOUT
|
---|
| 34 | .... S X=" Deleting ""PT"" node: "_$NA(^DD(DICFILE,0,"PT",DDFILE,DDFIELD)) D RPTOUT,K1 Q
|
---|
| 35 | .. ; **File No Longer Exists
|
---|
| 36 | .. S X="*File: "_DDFILE_" Does Not Exist." D RPTOUT
|
---|
| 37 | .. S X=" Deleting ""PT"" node: "_$NA(^DD(DICFILE,0,"PT",DDFILE)) D RPTOUT
|
---|
| 38 | .. K ^DD(DICFILE,0,"PT",DDFILE)
|
---|
| 39 | G EXIT ; GoTo Common Exit
|
---|
| 40 | K1 ; Kill at Field Level
|
---|
| 41 | K ^DD(DICFILE,0,"PT",DDFILE,DDFIELD)
|
---|
| 42 | Q
|
---|
| 43 | PTHDR ; Fix "PT" nodes Report Header
|
---|
| 44 | I $E(IOST,1,2)="C-" D Q:$D(ESC)
|
---|
| 45 | . I PG D PAUSE Q:$D(ESC)
|
---|
| 46 | . W @IOF
|
---|
| 47 | I PG W @IOF
|
---|
| 48 | S PG=PG+1
|
---|
| 49 | W "Fix ""PT"" Nodes Report "_RPTDT,?(IOM-10),"Page: "_PG,!
|
---|
| 50 | N X
|
---|
| 51 | S X="",$P(X,"-",(IOM-1))="" W X,!
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | FIXNM ; ==> Fix Duplicate 'NM' Nodes <==
|
---|
| 55 | ; From patch DI*21*50, routine DIPR50
|
---|
| 56 | ;
|
---|
| 57 | N EP,ESC
|
---|
| 58 | I '$D(XPDNM) S EP="NM" D DEVICE
|
---|
| 59 | I $D(ESC) G EXIT
|
---|
| 60 | DEQNM N DDFILE,DDNAME,DDNEW,PGLEN,PG,RPTDT,X
|
---|
| 61 | U IO
|
---|
| 62 | D RPTDT
|
---|
| 63 | S PGLEN=IOSL-5,PG=0
|
---|
| 64 | I '$D(XPDNM) D NMHDR
|
---|
| 65 | S DDFILE=1.99999
|
---|
| 66 | F S DDFILE=$O(^DD(DDFILE)) Q:'DDFILE!$D(ESC) D
|
---|
| 67 | . ; Check and repair duplicate "NM" nodes
|
---|
| 68 | . S DDNAME=$O(^DD(DDFILE,0,"NM","")) Q:DDNAME=""
|
---|
| 69 | . I $O(^DD(DDFILE,0,"NM",DDNAME))="" Q
|
---|
| 70 | . S X="*File/Subfile: "_DDFILE_" has duplicate 'NM' nodes."
|
---|
| 71 | . D RPTOUT
|
---|
| 72 | . S DDNEW=$S($D(^DIC(DDFILE,0))#2:$P(^(0),U),1:$P(^DD(DDFILE,0)," SUB-FIELD"))
|
---|
| 73 | . Q:DDNEW=""
|
---|
| 74 | . K ^DD(DDFILE,0,"NM")
|
---|
| 75 | . S ^DD(DDFILE,0,"NM",DDNEW)=""
|
---|
| 76 | . S X=" ""NM"" node will be set to: "_DDNEW
|
---|
| 77 | . D RPTOUT
|
---|
| 78 | G EXIT ; GoTo Common Exit Point
|
---|
| 79 | NMHDR ; Fix "NM" nodes Report Header
|
---|
| 80 | I $E(IOST,1,2)="C-" D Q:$D(ESC)
|
---|
| 81 | . I PG D PAUSE Q:$D(ESC)
|
---|
| 82 | . W @IOF
|
---|
| 83 | I PG W @IOF
|
---|
| 84 | S PG=PG+1
|
---|
| 85 | W "Fix Duplicate ""NM"" Nodes Report "_RPTDT,?(IOM-10),"Page: "_PG,!
|
---|
| 86 | N X
|
---|
| 87 | S X="",$P(X,"-",(IOM-1))="" W X,!
|
---|
| 88 | Q
|
---|
| 89 | ;
|
---|
| 90 | FIXAG ; ==> Application Group Multiple Bad Xrefs <==
|
---|
| 91 | ; From patch DI*21*58, routine DIPR58
|
---|
| 92 | ;
|
---|
| 93 | N EP,ESC
|
---|
| 94 | I '$D(XPDNM) S EP="AG" D DEVICE
|
---|
| 95 | I $D(ESC) G EXIT
|
---|
| 96 | DEQAG N DDAGPKG,DDFILE,IEN,PGLEN,PG,RPTDT,X
|
---|
| 97 | U IO
|
---|
| 98 | D RPTDT
|
---|
| 99 | S PGLEN=IOSL-5,PG=0
|
---|
| 100 | I '$D(XPDNM) D AGHDR
|
---|
| 101 | S DDFILE=1.99999
|
---|
| 102 | F S DDFILE=$O(^DIC(DDFILE)) Q:DDFILE<1.99999 D
|
---|
| 103 | . I '$D(^DIC(DDFILE,"%")) Q ; No App. Group Multiple
|
---|
| 104 | . S DDAGPKG=""
|
---|
| 105 | . F S DDAGPKG=$O(^DIC(DDFILE,"%","B",DDAGPKG)) Q:DDAGPKG="" D
|
---|
| 106 | .. S IEN=0
|
---|
| 107 | .. F S IEN=$O(^DIC(DDFILE,"%","B",DDAGPKG,IEN)) Q:'IEN D
|
---|
| 108 | ... I $P($G(^DIC(DDFILE,"%",IEN,0)),U)=DDAGPKG Q
|
---|
| 109 | ... S X="Deleting App. Group "_DDAGPKG_" ""B"" xref: "_$NA(^DIC(DDFILE,"%","B",DDAGPKG,IEN))
|
---|
| 110 | ... D RPTOUT
|
---|
| 111 | ... K ^DIC(DDFILE,"%","B",DDAGPKG,IEN)
|
---|
| 112 | AC ; Loop Thru "AC" xref and Remove Any Entries That Point to
|
---|
| 113 | ; Files That Do Not Exist
|
---|
| 114 | S DDAGPKG=""
|
---|
| 115 | F S DDAGPKG=$O(^DIC("AC",DDAGPKG)) Q:DDAGPKG="" D
|
---|
| 116 | . S DDFILE=1.99999
|
---|
| 117 | . F S DDFILE=$O(^DIC("AC",DDAGPKG,DDFILE)) Q:DDFILE<1.99999 D
|
---|
| 118 | .. I $D(^DIC(DDFILE,0))[0 D Q
|
---|
| 119 | ... S X="Deleting ""AC"" xref: "_$NA(^DIC("AC",DDAGPKG,DDFILE))
|
---|
| 120 | ... D RPTOUT
|
---|
| 121 | ... K ^DIC("AC",DDAGPKG,DDFILE)
|
---|
| 122 | .. S IEN=0
|
---|
| 123 | .. F S IEN=$O(^DIC("AC",DDAGPKG,DDFILE,IEN)) Q:'IEN D
|
---|
| 124 | ... I $P($G(^DIC(DDFILE,"%",IEN,0)),U)'=DDAGPKG D
|
---|
| 125 | .... S X="Deleting ""AC"" xref: "_$NA(^DIC("AC",DDAGPKG,DDFILE,IEN))
|
---|
| 126 | .... D RPTOUT
|
---|
| 127 | .... K ^DIC("AC",DDAGPKG,DDFILE,IEN)
|
---|
| 128 | G EXIT ; GoTo Common Exit Point
|
---|
| 129 | AGHDR ; Fix Application Group Xrefs Report Header
|
---|
| 130 | I $E(IOST,1,2)="C-" D Q:$D(ESC)
|
---|
| 131 | . I PG D PAUSE Q:$D(ESC)
|
---|
| 132 | . W @IOF
|
---|
| 133 | I PG W @IOF
|
---|
| 134 | S PG=PG+1
|
---|
| 135 | W "Fix Application Group Xrefs Report "_RPTDT,?(IOM-10),"Page: "_PG,!
|
---|
| 136 | N X
|
---|
| 137 | S X="",$P(X,"-",(IOM-1))="" W X,!
|
---|
| 138 | Q
|
---|
| 139 | ;
|
---|
| 140 | ; Common For All Entry Points
|
---|
| 141 | ;
|
---|
| 142 | DEVICE ; Output Device Selection
|
---|
| 143 | S %ZIS="MQ"
|
---|
| 144 | D ^%ZIS
|
---|
| 145 | I POP S ESC=1 Q ;User Escaped Device Selection
|
---|
| 146 | I $D(IO("Q")) D
|
---|
| 147 | . S ZTDESC=$S(EP="PT":"FIX PT NODES",EP="NM":"FIX DUPLICATE 'NM' NODES",EP="AG":"FIX APPLICATION GROUP XREFS",1:"")
|
---|
| 148 | . S ZTRTN=$S(EP="PT":"DEQPT",EP="NM":"DEQNM",EP="AG":"DEQAG",1:"")_"^DDFIX"
|
---|
| 149 | . S ZTSAVE("EP")=""
|
---|
| 150 | . D ^%ZTLOAD
|
---|
| 151 | . I $D(ZTSK)#2 W !,"Report queued!",!,"Task number: "_$G(ZTSK),!
|
---|
| 152 | . S ESC=1
|
---|
| 153 | . K ZTSK,ZTDESC,ZTRTN,ZTSAVE
|
---|
| 154 | . D HOME^%ZIS
|
---|
| 155 | Q
|
---|
| 156 | RPTDT ; Get Report Date/Time
|
---|
| 157 | N %,%H,X,Y
|
---|
| 158 | S %H=$H
|
---|
| 159 | D YX^%DTC
|
---|
| 160 | S RPTDT=$P(Y,"@")_"@"_$E($P(Y,"@",2),1,5)
|
---|
| 161 | Q
|
---|
| 162 | RPTOUT ; Print Messages
|
---|
| 163 | I $D(XPDNM) D MES^XPDUTL(X) Q ; KIDS install being used
|
---|
| 164 | W X,! ; KIDS install not being used
|
---|
| 165 | I $Y'>PGLEN Q
|
---|
| 166 | I EP="PT" D PTHDR Q
|
---|
| 167 | I EP="NM" D NMHDR Q
|
---|
| 168 | I EP="AG" D AGHDR Q
|
---|
| 169 | Q
|
---|
| 170 | PAUSE ; End of Page Pause
|
---|
| 171 | N DIR,Y
|
---|
| 172 | S DIR(0)="E"
|
---|
| 173 | D ^DIR
|
---|
| 174 | I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) K DTOUT,DUOUT,DIRUT,DIROUT S ESC=1 Q
|
---|
| 175 | Q
|
---|
| 176 | EXIT ; Common Exit Point
|
---|
| 177 | I $E(IOST,1,2)="P-" D ^%ZISC
|
---|
| 178 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
| 179 | K EP
|
---|
| 180 | Q
|
---|