DIUTL ;GFT;01:02 PM 8 Apr 2001 [ 12/09/2003 4:35 PM ]
;;22.0;VA FileMan;**76,1002**;Mar 30, 1999
;
WP(DIRF,DIWL,DIWR) ;Write out WP field (if any) stored at DIRF
N DIWF,Z,A1,D,X,DIW,DIWT,DN,I
K ^UTILITY($J,"W")
S DIWF="W|" S:'$G(IOM) IOM=80 S:'$G(DIWR) DIWR=IOM S:'$G(DIWL) DIWL=1
S A1=$P($G(@DIRF@(0)),U,3) F D=0:0 S D=$O(@DIRF@(D)) Q:D>A1&A1!'D S X=^(D,0) D ^DIWP G QWP:$G(DN)=0
D ^DIWW
QWP I $G(DN)'=0 Q 1
K DIOEND Q 0
;
IJ(N) ;build I & J arrays given subfile number N
N A K I,J
S J(0)=N,N=0
0 I $D(^DIC(J(0),0,"GL")) S I(0)=^("GL") Q
S A=$G(^DD(J(0),0,"UP")) Q:A=""
S I=$O(^DD(A,"SB",J(0),0)) Q:'I
S I=$P($P($G(^DD(A,I,0)),U,4),";") Q:I=""
I +I'=I S I=""""_I_""""
F J=N:-1:0 S J(J+1)=J(J) S:J I(J+1)=I(J)
S J(0)=A,I(1)=I,N=N+1 G 0
;
;
DIVR(DI,DIFLD) ;verify
N DIVZ,S,A,DA,DICL,V,Z,DDC,DR,N,Y,I,J,Q,W,V,T,DQI
K ^UTILITY("DIVR",$J),^DD(U,$J)
D IJ(DI)
I '$O(@(I(0)_"0)")) Q ;File must have some entries!
S S=";",Q="""",V=$O(J(""),-1),A=DI,DA=DIFLD
S DR=$P(^DD(DI,DIFLD,0),U,2),Z=$P(^(0),U,3),$P(Y(0),U,4)=$P(^(0),U,4),DDC=$P(^(0),U,5,999)
Q:DR["W"!(DR["C")
F T="N","S","V","P","K","F" Q:DR[T
W !!,"SINCE YOU HAVE CHANGED THE FIELD DEFINITION,",!,"EXISTING '",$P(^(0),U),"' DATA WILL NOW BE CHECKED FOR INCONSISTENCIES",!,"OK"
S %=1 D YN^DICN Q:%-1
;D ^%ZIS Q:POP
;U IO WON'T WORK BECAUSE Q+3^DIVR ASKS TO STORE IN TEMPLATE
D ^DIVR
;D ^%ZISC
Q
DIUTL ;GFT;01:02 PM 8 Apr 2001 [ 12/09/2003 4:35 PM ]
+1 ;;22.0;VA FileMan;**76,1002**;Mar 30, 1999
+2 ;
WP(DIRF,DIWL,DIWR) ;Write out WP field (if any) stored at DIRF
+1 NEW DIWF,Z,A1,D,X,DIW,DIWT,DN,I
+2 KILL ^UTILITY($JOB,"W")
+3 SET DIWF="W|"
IF '$GET(IOM)
SET IOM=80
IF '$GET(DIWR)
SET DIWR=IOM
IF '$GET(DIWL)
SET DIWL=1
+4 SET A1=$PIECE($GET(@DIRF@(0)),U,3)
FOR D=0:0
SET D=$ORDER(@DIRF@(D))
IF D>A1&A1!'D
QUIT
SET X=^(D,0)
DO ^DIWP
IF $GET(DN)=0
GOTO QWP
+5 DO ^DIWW
QWP IF $GET(DN)'=0
QUIT 1
+1 KILL DIOEND
QUIT 0
+2 ;
IJ(N) ;build I & J arrays given subfile number N
+1 NEW A
KILL I,J
+2 SET J(0)=N
SET N=0
0 IF $DATA(^DIC(J(0),0,"GL"))
SET I(0)=^("GL")
QUIT
+1 SET A=$GET(^DD(J(0),0,"UP"))
IF A=""
QUIT
+2 SET I=$ORDER(^DD(A,"SB",J(0),0))
IF 'I
QUIT
+3 SET I=$PIECE($PIECE($GET(^DD(A,I,0)),U,4),";")
IF I=""
QUIT
+4 IF +I'=I
SET I=""""_I_""""
+5 FOR J=N:-1:0
SET J(J+1)=J(J)
IF J
SET I(J+1)=I(J)
+6 SET J(0)=A
SET I(1)=I
SET N=N+1
GOTO 0
+7 ;
+8 ;
DIVR(DI,DIFLD) ;verify
+1 NEW DIVZ,S,A,DA,DICL,V,Z,DDC,DR,N,Y,I,J,Q,W,V,T,DQI
+2 KILL ^UTILITY("DIVR",$JOB),^DD(U,$JOB)
+3 DO IJ(DI)
+4 ;File must have some entries!
IF '$ORDER(@(I(0)_"0)"))
QUIT
+5 SET S=";"
SET Q=""""
SET V=$ORDER(J(""),-1)
SET A=DI
SET DA=DIFLD
+6 SET DR=$PIECE(^DD(DI,DIFLD,0),U,2)
SET Z=$PIECE(^(0),U,3)
SET $PIECE(Y(0),U,4)=$PIECE(^(0),U,4)
SET DDC=$PIECE(^(0),U,5,999)
+7 IF DR["W"!(DR["C")
QUIT
+8 FOR T="N","S","V","P","K","F"
IF DR[T
QUIT
+9 WRITE !!,"SINCE YOU HAVE CHANGED THE FIELD DEFINITION,",!,"EXISTING '",$PIECE(^(0),U),"' DATA WILL NOW BE CHECKED FOR INCONSISTENCIES",!,"OK"
+10 SET %=1
DO YN^DICN
IF %-1
QUIT
+11 ;D ^%ZIS Q:POP
+12 ;U IO WON'T WORK BECAUSE Q+3^DIVR ASKS TO STORE IN TEMPLATE
+13 DO ^DIVR
+14 ;D ^%ZISC
+15 QUIT