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

INHSYS07.m

Go to the documentation of this file.
  1. INHSYS07 ;JPD; 13 Nov 98 13:35;gis sys con data installation utility
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;CHCS TOOLS_450; GEN 4; 26-SEP-1996
  1. ;COPYRIGHT 1995 SAIC
  1. Q
  1. %GCMP ;Global file element compare
  1. N %FIL,%FILNM,%EL1,%EL2,DIC,Y,%THATVOL,%THATUCI,%THISVOL,%THISUCI,%GBL
  1. N %ROOT,%XIEN,%NIEN,%DONE,INY,GBL,%UTL,X,ND
  1. I ^%ZOSF("OS")'["VAX" W !,"Not implemented yet" Q
  1. D ENV^UTIL
  1. W @IOF
  1. Q:'$$GETFLE(.%FIL,.%NIEN,.%FILNM)
  1. S (%THATUCI,%THATVOL)="",%DONE=0
  1. F D Q:%DONE
  1. .U 0 R !,"Enter UCI you want to compare element from: ",%THATUCI:DTIME
  1. .I %THATUCI["?" W !,"Pick a valid UCI" Q
  1. .I %THATUCI="^"!'$L(%THATUCI) S %DONE=1 Q
  1. .I '$$UCICHECK^%ZTF(%THATUCI) W !,"Not a valid UCI" Q
  1. .I %THATUCI["," S %THATVOL=$P(%THATUCI,",",2),%THATUCI=$P(%THATUCI,","),%DONE=1 Q
  1. .U 0 R !,"Enter VOL you want to compare element from: ",%THATVOL:DTIME
  1. .I %THATVOL["?" W !,"Pick a valid volume set" Q
  1. .I %THATVOL="^"!'$L(%THATVOL) S %DONE=1 Q
  1. .I %THATVOL=^%ZOSF("VOL") W !,"You must pick a different Volume set" Q
  1. .I '$$UCICHECK^%ZTF(%THATUCI_","_%THATVOL) W !,"Not a valid UCI or Volume set" Q
  1. .S %DONE=1
  1. Q:'$L(%THATUCI)!'$L(%THATVOL)!(%THATVOL="^")!(%THATUCI="^")
  1. S X=%FILNM,%GBL=$P(%GBL,"^",2)
  1. S Y=$O(@("^[%THATUCI,%THATVOL]"_%GBL_"""B"","""_X_""","""")"))
  1. I Y="" W !,"File element does not exist in ["_%THATUCI_","_%THATVOL_"]"
  1. E D
  1. .S %ROOT="^[%THATUCI,%THATVOL]"_%GBL
  1. .S %XIEN=Y,ND=%ROOT_Y_")"
  1. .S %UTL="^UTILITY(""INHSYS"","_$J_","""_%FIL_""","
  1. .F S ND=$Q(@ND) Q:%XIEN'=+$P(ND,%GBL,2) D
  1. ..S INY=@ND,GBL=%UTL_$P(ND,%GBL,2),@GBL=INY
  1. .D CMP(%NIEN,"^"_%GBL,%FIL,%XIEN)
  1. Q
  1. CMP(%NIEN,%ROOT,%FL,%OIEN,%RSLV) ;Compare global entries
  1. ; %NIEN - ien of data in current environment
  1. ; %ROOT - Root node of file
  1. ; %FL - Fileman File number
  1. ; %OIEN - ien from other environment
  1. ; %RSLV - 1 - Resolve ptr values 0 - don't resolve
  1. N %UTILITY,%NODE,%L1,%L2,%P
  1. K ^UTILITY($J,%FL)
  1. S %RSLV=$G(%RSLV)
  1. ;Extract data from exisitng global
  1. D XTRK(%NIEN,%ROOT,"^UTILITY($J,"""_%FL_""",",%FL)
  1. ;resolve pointer values
  1. I %RSLV D EXPND^INHSYS09(%NIEN,%FL,%ROOT,%ROOT_%NIEN_",",1,%NIEN,0,%NIEN)
  1. ;Build temp storage for existing files
  1. S %NODE="^UTILITY($J,%FL,%NIEN)",%UTILITY(1,0)=0
  1. F S %NODE=$Q(@%NODE) Q:'$L(%NODE) Q:+$QS(%NODE,3)'=%NIEN D
  1. .S %UTILITY(1,0)=%UTILITY(1,0)+1
  1. .S %UTILITY(1,%UTILITY(1,0))=$P(%NODE,",",4,999)_"="_@%NODE
  1. S %UTILITY(1,0)=%UTILITY(1,0)+1,%UTILITY(1,%UTILITY(1,0))=""
  1. ;Build temp storage for new files
  1. S %NODE="^UTILITY(""INHSYS"",$J,%FL,%OIEN)",%UTILITY(2,0)=0
  1. F S %NODE=$Q(@%NODE) Q:'$L(%NODE) Q:+$QS(%NODE,4)'=%OIEN D
  1. .S %UTILITY(2,0)=%UTILITY(2,0)+1
  1. .S %UTILITY(2,%UTILITY(2,0))=$P(%NODE,",",5,999)_"="_@%NODE
  1. S %UTILITY(1,0)=%UTILITY(1,0)+1,%UTILITY(1,%UTILITY(1,0))=""
  1. D GCMP(.%UTILITY)
  1. K ^UTILITY($J)
  1. Q
  1. GCMP(%UTILITY) ;Compare values from %UTILITY nodes
  1. ; Input:
  1. ; %UTILITY - Global with files to compare
  1. N %L1,%L2,%FOUND
  1. S (%L1,%L2)=1,%FOUND=0
  1. ;Determine differences
  1. F Q:%UTILITY(1,0)<%L1!(%UTILITY(2,0)<%L2) D
  1. .I %UTILITY(1,%L1)'=%UTILITY(2,%L2) D
  1. ..D PG
  1. ..I '%FOUND W !,"The following difference(s) appear for the above entry:",!
  1. ..S %FOUND=1
  1. ..D DIFF(.%L1,.%L2,.%UTILITY)
  1. .S %L1=%L1+1,%L2=%L2+1
  1. I '%FOUND W !,"No differences found",!
  1. Q
  1. DIFF(%L1,%L2,%UTILITY) ;Diff found
  1. ;Input/Output:
  1. ; %L1 - Position in %UTILITY global node 1
  1. ; %L2 - Position in %UTILITY global node 2
  1. ;Establish point where diff took place
  1. S %P(1)=%L1,%P(2)=%L2,%P=0
  1. F Q:'$$DL(.%P,.%L1,.%L2,.%UTILITY)
  1. Q
  1. DL(%P,%L1,%L2,%UTILITY) ;
  1. ;%P - Position in Array
  1. ; %L1 - Position in %UTILITY global node 1
  1. ; %L2 - Position in %UTILITY global node 2
  1. N %A2,%A,%J,%K,%EXIT
  1. ;Increment %P by 1 and %A by %P and %P(%A) by 1
  1. S %P=%P+1#2,%A=%P+1,%P(%A)=%P(%A)+1
  1. S:%UTILITY(%A,0)'>%P(%A) %P(%A)=%UTILITY(%A,0)
  1. I %UTILITY(%A,%P(%A))="" D Q 0
  1. .S %A2=%P+1#2+1,%P(%A2)=%UTILITY(%A2,0)
  1. .S %J=%P(1),%K=%P(2)
  1. .D WRITE
  1. S %EXIT=0
  1. ;loop and look for same values between utility globals
  1. S %J=%P(1) F %K=%L2:1:%P(2) I %UTILITY(1,%J)=%UTILITY(2,%K) D WRITE S %EXIT=1 Q
  1. Q:%EXIT 0
  1. S %K=%P(2) F %J=%L1:1:%P(1) I %UTILITY(1,%J)=%UTILITY(2,%K) D WRITE S %EXIT=1 Q
  1. Q '%EXIT
  1. WRITE ;
  1. N %Z,%LI
  1. S %P(1)=%J,%P(2)=%K
  1. ;Write existing lines that are different
  1. W !,"Current Environment "_$G(^%ZOSF("VOL"))_" ***********************",!
  1. F %Z=%L1:1:%P(1) I %UTILITY(1,%Z)'="" D
  1. .S %LI=%UTILITY(1,%Z)
  1. .D PG
  1. .W ?2,%Z,")",?7,%ROOT,%NIEN,",",%LI,!
  1. ;
  1. ;Write new lines that are different
  1. W !,"Other Environment --------",!
  1. F %Z=%L2:1:%P(2) I %UTILITY(2,%Z)'="" D
  1. .S %LI=%UTILITY(2,%Z)
  1. .D PG
  1. .W ?2,%Z,")",?7,%ROOT,%OIEN,",",%LI,!
  1. W !,"***************",!
  1. ;set counters to new repositioned values
  1. S %L1=%P(1),%L2=%P(2)
  1. Q
  1. XTRK(%XIEN,%ROOT,%UTL,%FILE) ;xtract existing global
  1. ; Input:
  1. ; %XIEN - ien of file extracting data from
  1. ; %ROOT - global root in fileman format
  1. ; %UTL - temporary storage buffer
  1. ; %FILE - file 4000,4005,4006,4004,4011,4010,4012,4090.2,4012.1,4020
  1. ; Output - ^UTILITY global
  1. N ND,INY,GBL
  1. S ND=%ROOT_%XIEN_")"
  1. F S ND=$Q(@ND) Q:%XIEN'=+$P(ND,%ROOT,2) D
  1. .S INY=@ND,GBL=%UTL_$P(ND,%ROOT,2),@GBL=INY
  1. Q
  1. PG ;Page break
  1. I IOSL-5'>$Y D
  1. .I $E(IOST)="C",INCR,$$CR^UTSRD(0,IOSL-1)
  1. .W @IOF
  1. Q
  1. GETFLE(%FIL,%NIEN,%FILNM) ;Get file entry
  1. ; Output:
  1. ; %FIL - File Number
  1. ; %NIEN - Entry in file
  1. ; %FILNM - File name
  1. S DIC="^DIC(",DIC(0)="AEQ",DIC("A")="Enter File Name: "
  1. D ^DIC
  1. Q:Y=-1 0
  1. S %FIL=+Y
  1. S (%GBL,DIC)=^DIC($P(Y,U),0,"GL"),DIC("A")="Enter File Element Name: "
  1. D ^DIC
  1. Q:Y=-1 0
  1. S %NIEN=+Y,%FILNM=$P(Y,U,2)
  1. Q 1