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

AUCDIC2.m

Go to the documentation of this file.
AUCDIC2 ; CHECK DICTIONARY NAMES AND DATA GLOBALS [ 06/13/87  8:47 AM ]
 ;
 S (Y,AUCDUCI)="" X:$D(^%ZOSF("UCI"))#2 ^("UCI") I Y'="" S AUCDUCI="["""_$P(Y,",",1)_""""_$S($P(Y,",",2)'="":","""_$P(Y,",",2)_"""",1:"")_"]"
 K Y
 W !!,"Now checking dictionary names and data globals." S AUCDFILE="" F AUCDL=0:0 S AUCDFILE=$O(^UTILITY("AUDSET",$J,AUCDFILE)) Q:AUCDFILE=""  W !,?5,"Checking ",AUCDFILE D AUCDNC
 K AUCDFILE,AUCDANS,AUCDC,AUCDG,AUCDGG,AUCDGNM,AUCDGNR,AUCDNDD,AUCDNDIC,AUCDNTBL,AUCDX,AUCDY,AUCDL,AUCDY
 Q
 ;
AUCDNC ;
 S AUCDNDIC=$S($D(^DIC(AUCDFILE,0))#2:^(0),1:""),AUCDNDIC=$P(AUCDNDIC,U,1)
 D GCHK
 I AUCDNDIC'="",$D(^DD(AUCDFILE,0,"NM",AUCDNDIC))#2 K ^DD(AUCDFILE,0,"NM") S ^DD(AUCDFILE,0,"NM",AUCDNDIC)=""
 S AUCDNDD=$O(^DD(AUCDFILE,0,"NM",""))
 I AUCDNDIC=AUCDNDD,AUCDNDIC=AUCDGNM,AUCDFILE=AUCDGNR Q
 I AUCDNDIC'="",AUCDNDIC=AUCDNDD G GNMCHK
 I AUCDNDIC'="",AUCDNDD="" W !,?10,"No name in ^DD.  Using name in ^DIC." S AUCDNDD=AUCDNDIC,^DD(AUCDFILE,0,"NM",AUCDNDIC)="" G GNMCHK
 I AUCDNDIC="",AUCDNDD'="" W !,?10,"No name in ^DIC.  Using name in ^DD."  S AUCDNDIC=AUCDNDD,$P(^DIC(AUCDFILE,0),U,1)=AUCDNDIC,^DIC("B",AUCDNDIC,AUCDFILE)="" G GNMCHK
 I AUCDNDIC="",AUCDNDD="",AUCDGNM'="",AUCDFILE=AUCDGNR W !,?10,"No name in ^DIC or ^DD.  Using name in data global." S (AUCDNDIC,AUCDNDD)=AUCDGNM,$P(^DIC(AUCDFILE,0),U,1)=AUCDNDIC,^DIC("B",AUCDNDIC,AUCDFILE)="",^DD(AUCDFILE,0,"NM",AUCDNDD)="" Q
 I AUCDNDIC'="",AUCDNDD'="",AUCDNDIC'=AUCDNDD W !,?10,"Name in ^DIC and ^DD differ.  Using name in ^DIC." K ^DD(AUCDFILE,0,"NM") S AUCDNDD=AUCDNDIC,^DD(AUCDFILE,0,"NM",AUCDNDD)="" G GNMCHK
 W !,?10,"Unable to deduce name.  Searching DIC(""B"")." D DICB
 G:AUCDNDIC'="" GNMCHK
 D READNAME
 G GNMCHK
 ;
READNAME W !,?10,"Unable to deduce name.  Enter File Name or ""^"":  ",AUCDX I $L(AUCDX)>2,$L(AUCDX)<31,AUCDX?.ANP S (AUCDNDIC,AUCDNDD)=AUCDX,$P(^DIC(AUCDFILE,0),U,1)=AUCDNDIC,^DIC("B",AUCDNDIC,AUCDFILE)="",^DD(AUCDFILE,0,"NM",AUCDNDD)="" Q
 I AUCDX'="^" W *7,"  ??" G READNAME
 S ^UTILITY("AUDSET",$J,AUCDFILE,"ERR",1)= "File "_AUCDFILE_" has no name."
 Q
 ;
GCHK ; CHECK DATA GLOBAL
 S (AUCDGNM,AUCDGNR)=""
 S AUCDGG=0,AUCDG=$S($D(^DIC(AUCDFILE,0,"GL"))#2:^("GL"),1:"") S:AUCDG?1"^"1U.UN1"(".UNP!(AUCDG?1"^"1"%"1U.UN1"(".UNP) AUCDGG=1
 I AUCDG="" W !,?10,"File ",AUCDFILE," has no data global specified in ^DIC." D READGBL G:AUCDG'="" GCHK Q
 I 'AUCDGG W !,?10,"File ",AUCDFILE," data global=",AUCDG," is invalid." D READGBL G:AUCDG'="" GCHK Q
 S AUCDG="^"_AUCDUCI_$E(AUCDG,2,99),^UTILITY("AUDSET",$J,AUCDFILE)=AUCDG
 Q:AUCDG["%"
 S AUCDX=$E(AUCDG,1,$L(AUCDG)-1)_$S($E(AUCDG,$L(AUCDG))=",":")",1:""),AUCDX=$D(@AUCDX)
 S AUCDY=$L(AUCDG),AUCDY=$E(AUCDG,1,AUCDY-1)_$E(")",$E(AUCDG,AUCDY)=","),AUCDY=$S(AUCDY[")":$E(AUCDY,1,$L(AUCDY)-1)_",0)",1:AUCDY_"(0)")
 I 'AUCDX W !,?10,"Data global ",AUCDG," does not exist.  Creating 0th node!" S @AUCDY="CREATED BY AUCD"_U_AUCDFILE Q
 S AUCDX=$D(@AUCDY)
 I AUCDX S AUCDGNM=@AUCDY,AUCDGNR=+$P(AUCDGNM,U,2),AUCDGNM=$P(AUCDGNM,U,1) S:'AUCDGNR AUCDGNR="" G GCHK2
 W !,?10,"File ",AUCDFILE," data global exists but has no 0th node.",!,?12,"Creating 0th node.  Piece 3 and 4 must be set!" S @AUCDY="CREATED BY AUCD"_U_AUCDFILE
 Q
 ;
GCHK2 ; CHECK 3RD AND 4TH PIECE
 S AUCDX=$P(@AUCDY,U,3,4),AUCDX1=$P(AUCDX,U,2),AUCDX=+AUCDX
 S AUCDX2=$O(@AUCDY)
 I 'AUCDX2,AUCDX!(AUCDX1) W !,?10,"Data global 0th node inconsistent with data.  Fixing." S $P(@AUCDY,U,3)=0,$P(@AUCDY,U,4)=0 G GCHK3
 I AUCDX2,'AUCDX!('AUCDX1) W !,?10,"Data global 0th node inconsistent with data.  Run ^%AUCOUNT to fix." G GCHK3
 I AUCDX,'$D(@(AUCDG_AUCDX_")")) W !,?10,"Data global 0th node inconsistent with data.  Run ^%AUCOUNT to fix." G GCHK3
GCHK3 ; CHECK FILE NUMBER IN DATA GLOBAL
 K AUCDX1,AUCDX2
 Q:AUCDGNR=AUCDFILE
 W !,?10,"Data global has different number than ^DIC.  ",$P(@AUCDY,U,1,2)
G2R1 R !,?12,"Change number in data global? (Y/N) ",AUCDX I AUCDX'="Y"&(AUCDX'="N") W *7,"  ??" G G2R1
 I AUCDX="Y" S AUCDX=@AUCDY,AUCDX1=$P(AUCDX,U,2),AUCDX2=+AUCDX1,AUCDX3=$P(AUCDX1,AUCDX2,2),$P(AUCDX,U,2)=AUCDFILE_AUCDX3,@AUCDY=AUCDX,AUCDGNR=AUCDFILE K AUCDX1,AUCDX2,AUCDX3 Q
 D READGBL 
 I AUCDG="" W !,?10,"Removing ^DIC(",AUCDFILE,",""0"",""GL"") node." K ^DIC(AUCDFILE,0,"GL")
 G GCHK
 ;
READGBL R !!,"Enter Data Global or ""^"": ",AUCDG
 I AUCDG="^" S AUCDG="",^UTILITY("AUDSET",$J,AUCDFILE,"ERR",2)="File "_AUCDFILE_" data global missing or invalid." Q
 I AUCDG'?1"^"1U.UN1"(".UNP,AUCDG'?1"^"1"%"1U.UN1"(".UNP W *7,"  ??" G READGBL
 S ^DIC(AUCDFILE,0,"GL")=AUCDG
 Q
 ;
DICB ; CHECK DIC("B"
 K AUCDNTBL S (AUCDX,AUCDC)=0 F AUCDL=0:0 S AUCDX=$O(^DIC("B",AUCDX)) Q:AUCDX=""  I $D(^(AUCDX,AUCDFILE)) S AUCDC=AUCDC+1,AUCDNTBL(AUCDC)=AUCDX
 Q:'AUCDC
 I AUCDC=1 S AUCDANS=1 D NAMESET K AUCDNTBL Q
 W !,?12,"Multiple entries were found in ^DIC(""B""). Select one name or enter ""^""",!,?12,"  All unselected names will be removed." D PICKNAME
 I AUCDANS'="^" D NAMESET K AUCDNTBL(AUCDANS) W !
 S AUCDX="" F AUCDL=0:0 S AUCDX=$O(AUCDNTBL(AUCDX)) Q:AUCDX=""  W !,?12,"Deleting ^DIC(""B"",""",AUCDNTBL(AUCDX),""",",AUCDFILE,")" K ^DIC("B",AUCDNTBL(AUCDX),AUCDFILE)
 W !
 K AUCDNTBL
 Q
PICKNAME ;
 F AUCDX=1:1:AUCDC W !,?14,AUCDNTBL(AUCDX)
P1 R !!,?14,"Which one: ",AUCDANS Q:AUCDANS="^"  S:AUCDANS="" AUCDANS="?" I '$D(AUCDNTBL(AUCDANS)) W *7,"  ??" G P1
 Q
NAMESET ;
 W !,?12,"Setting names to '",AUCDNTBL(AUCDANS),"'"
 S (AUCDNDIC,AUCDNDD)=AUCDNTBL(AUCDANS),$P(^DIC(AUCDFILE,0),U,1)=AUCDNDIC,^DIC("B",AUCDNDIC,AUCDFILE)="" K ^DD(AUCDFILE,0,"NM") S ^DD(AUCDFILE,0,"NM",AUCDNDD)=""
 Q
 ;
GNMCHK ; CHECK DATA GLOBAL NAME AGAINST ^DIC
 Q:'AUCDGG
 I AUCDGNM'=""!(AUCDGNR),AUCDNDIC'=AUCDGNM W !,?10,"Data global name does not match ^DIC.",!,?12,"Data global: ",AUCDGNM,!,?12,"       ^DIC: ",AUCDNDIC D GNMFIX
 S AUCDX=AUCDG_"0)" I AUCDGNM="",AUCDGNR="",$D(@AUCDX)#2 S $P(@AUCDX,U,1)=AUCDNDIC
 Q
GNMFIX ;
 R !,?12,"Change name in data global? (Y/N) ",AUCDX I AUCDX'="Y"&(AUCDX'="N") W *7,"  ??" G GNMFIX
 I AUCDX="Y" S AUCDX=AUCDG_"0)",$P(@AUCDX,U,1)=AUCDNDIC,AUCDGNM=AUCDNDIC Q
GNMR1 R !,?12,"Change names in ^DIC and ^DD to name in data global? (Y/N) ",AUCDX I AUCDX'="Y"&(AUCDX'="N") W *7,"  ??" G GNMR1
 I AUCDX'="Y" S ^UTILITY("AUDSET",$J,AUCDFILE,"ERR",3)="File "_AUCDFILE_" data global name does not match ^DIC name." Q
 K ^DIC("B",AUCDNDIC,AUCDFILE),^DD(AUCDFILE,0,"NM") S (AUCDNDIC,AUCDNDD)=AUCDGNM,$P(^DIC(AUCDFILE,0),U,1)=AUCDNDIC,^DIC("B",AUCDNDIC,AUCDFILE)="",^DD(AUCDFILE,0,"NM",AUCDNDD)=""
 Q