Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: AUFCMP

AUFCMP.m

Go to the documentation of this file.
  1. AUFCMP ; COMPARES FILEMAN FILES IN TWO UCIs [ 05/31/88 2:00 PM ]
  1. ;
  1. ; Ignores the following:
  1. ; ^DD(file,field,1,0)
  1. ; ^DD(file,field,21
  1. ; ^DD(file,field,"DT"
  1. ;
  1. ; If a field does not exist in one file, a message is displayed and
  1. ; all sub-nodes of that field are ignored.
  1. ;
  1. ; If the compare is limited to fields containing a particular GROUP,
  1. ; the second pass, which checks for entries in the secondary UCI
  1. ; not in the primary UCI, is not executed. On the first pass the
  1. ; the GROUP multiple in the secondary UCI is ignored.
  1. ;
  1. START ;
  1. W !,"This program compares FileMan files in two different UCIs."
  1. S U="^"
  1. D ^%GUCI
  1. S AUFCMPU1=%UCI
  1. W !!,"Primary UCI is ",AUFCMPU1
  1. D GET2ND
  1. I AUFCMPU2="" W !!,"Bye",! D EOJ Q
  1. D ^AUDSET
  1. I '$D(^UTILITY("AUDSET",$J)) W !!,"No files selected",! D EOJ Q
  1. R !!,"Only check fields with GROUP: ",GROUP I GROUP="" K GROUP
  1. S AUFCMPFL="" F AUFCMPL=0:0 S AUFCMPFL=$O(^UTILITY("AUDSET",$J,AUFCMPFL)) Q:AUFCMPFL'=+AUFCMPFL D AUFCMPFL
  1. D EOJ
  1. Q
  1. ;
  1. AUFCMPFL ;
  1. W !!,AUFCMPFL,!
  1. S AUFCMPG="DIC" D COMPARE
  1. S AUFCMPG="DD" D COMPARE
  1. S AUCDFILE=AUFCMPFL D SBTRACE S AUFCMPFL=AUCDFILE
  1. Q
  1. ;
  1. COMPARE ;
  1. S AUFCMPP="^["""_AUFCMPU1_"""]"_AUFCMPG_"("_AUFCMPFL_","_$S(AUFCMPG="DIC":"0,",1:"")
  1. S AUFCMPS="^["""_AUFCMPU2_"""]"_AUFCMPG_"("_AUFCMPFL_","_$S(AUFCMPG="DIC":"0,",1:"")
  1. I '$D(@($E(AUFCMPS,1,$L(AUFCMPS)-1)_")")) W " File not in ^"_AUFCMPG_" of secondary UCI" Q
  1. S AUGP=AUFCMPP,AUGS=AUFCMPS,AUGPASS=1
  1. D AUGCMP
  1. S AUGP=AUFCMPS,AUGS=AUFCMPP,AUGPASS=2
  1. D AUGCMP
  1. Q
  1. ;
  1. SBTRACE ; CHECK ALL SUB-FILES
  1. K AUCDSFL S AUCDC=1,AUCDSFL="",AUCDSFL(AUCDC)=AUCDFILE
  1. F AUCDL=0:0 S AUCDI=$O(AUCDSFL("")) Q:AUCDI="" S AUCDSF=AUCDSFL(AUCDI) D SBTRACE2 S AUCDI=$O(AUCDSFL("")) W "." K AUCDSFL(AUCDI)
  1. K AUCDC,AUCDI,AUCDSF,AUCDSFL,AUCDY,AUCDZ
  1. Q
  1. SBTRACE2 ;
  1. S AUCDI=0 F AUCDL=0:0 S AUCDI=$O(^DD(AUCDSF,"SB",AUCDI)) Q:AUCDI="" W "." S AUCDC=AUCDC+1,AUCDSFL(AUCDC)=AUCDI D SBTRACE3
  1. Q
  1. SBTRACE3 ;
  1. W !!,AUCDI,!
  1. S AUFCMPG="DD"
  1. S AUFCMPFL=AUCDI
  1. D COMPARE
  1. Q
  1. ;
  1. GET2ND ; GET SECONDARY UCI
  1. S AUFCMPU2=""
  1. R !!,"Secondary UCI: ",X Q:X=""!(X="^")
  1. ;X ^%ZOSF("UCICHECK")
  1. ;I X'=Y W !!,"Invalid UCI",! Q
  1. S AUFCMPU2=X
  1. Q
  1. ;
  1. EOJ ;
  1. K AUCDFILE,AUCDL
  1. K %UCI,%UCN,AUFCMPFL,AUFCMPG,AUFCMPL,AUFCMPP,AUFCMPS,AUFCMPU1,AUFCMPU2,X,Y
  1. Q
  1. ;
  1. AUGCMP ; COMPARES GLOBAL TREES [ 02/16/88 10:11 AM ]
  1. ; CREATED BY GIS 7/17/85 FOR MSM UNIX MUMPS (2.3)
  1. I $D(GROUP),AUFCMPG="DD",AUGPASS=2 Q
  1. D SEARCH K AUGP,AUGS,AUGPASS Q
  1. EDE0 ;W !!,">>>>>>> ",AUGPASS," <<<<<<<",!!
  1. ;N (AUGP,AUGS,AUGPASS,GROUP)
  1. S T="T",C=",",P=")",NT=$L(AUGP,C)-1,L=1,T1=""
  1. S TT=AUGP F I=1:1:30 S TT=TT_T_I_C
  1. EXTR S X=T_L,Y=$P(TT,C,1,L+NT)_P,@X=$O(@Y)
  1. I @X'="" D:$D(@(Y))#2 SUB S L=L+1,@(T_L)="" G EXTR
  1. S L=L-1 Q:L=0 G EXTR
  1. SUB W "." S ZZ=AUGS_$P(Y,AUGP,2)
  1. I $D(@Y)
  1. EDE1 ;W !,$ZR
  1. Q:$P($ZR,"DD(",2)?.".".N.".".N1",".".".N.".".N1",21,".E
  1. Q:$P($ZR,"DD(",2)?.".".N.".".N1",".".".N.".".N1",""DT""".E
  1. Q:$P($ZR,"DD(",2)?.".".N.".".N1",".".".N.".".N1",1,0)"
  1. EDE2 ;W !,$ZR
  1. I $D(SKIP),SKIP=$E($ZR,1,$L(SKIP)) Q
  1. K SKIP
  1. I $D(GROUP),$P($ZR,"DD(",2)?.".".N.".".N1",".".".N.".".N1",0)" D CHKGROUP I NOGROUP S SKIP=$E($ZR,1,$L($ZR)-3) Q
  1. I '$D(@ZZ),$P($ZR,"DD(",2)?.".".N.".".N1",".".".N.".".N1",0)" W !,$ZR," <",$P(@Y,"^",1)," field does not exist>" S SKIP=$E($ZR,1,$L($ZR)-3) Q
  1. I $D(GROUP),$P($ZR,"DD(",2)?.".".N.".".N1",".".".N1",20,".E Q
  1. I '$D(@ZZ) W !,$ZR,"=",@Y," <does not exist>" Q
  1. Q:AUGPASS=2
  1. I @ZZ'=@Y W !,$ZR," <differs>",!,@ZZ,!,@Y Q
  1. Q
  1. ;
  1. CHKGROUP ;
  1. S GDFN=0,NOGROUP=1,GROOT=$E($ZR,1,$L($ZR)-3)
  1. EDE3 ;W !,GDFN,"-",GROOT,"-",$ZR
  1. F GL=0:0 S GDFN=$O(@(GROOT_",20,GDFN)")) Q:GDFN="" I @(GROOT_",20,GDFN,0)")=GROUP S NOGROUP=0 Q
  1. I $D(@Y)
  1. EDE4 ;W !,"NOGROUP=",NOGROUP," ","$ZR=",$ZR,!
  1. Q