XBGCMP ; IHS/ADC/GTH - COMPARES TWO DIFFERENT GLOBALS ; [ 02/07/97 3:02 PM ] ;;4.0;XB;;Jul 20, 2009;Build 2 ; ;;This utility is to be used to compare two globals. The initial ;;globals entered must be identically subscripted. The utility will ;;indicate which nodes of the first global have values different ;;than similarly subscipted nodes of the second global. It will ;;also indicate if a node in one global exists and if a similarly ;;subscripted node in the other does not exist. You may utilize the ;;[UCI,VOLUME] syntax to compare across UCIs and volume groups. ;; ;;### ; NEW X D INIT A ; D ASK I XBQ G X1 D SETUP ; sets up up print/display, calls subrtn to process gbls G A X1 ; D EOJ Q ; INIT ; Setup D ^XBKVAR S (XBS,XBQ)=0 X ^%ZOSF("UCI") S XBVOL=$P(Y,",",2) Q ; ASK ; Get globals to be compared 1 ; R !,"First global to compare, i.e., NAME, NAME(1) or NAME(""B""): ^",X:DTIME D:X["?" HELP^XBHELP("XBGCMP","XBGCMP") G:X["?" 1 I "^"[X S XBQ=1 G X2 D CHECK I XBS S XBS=0 G 1 S XBG1=X 2 ; R !,"Second global to compare: ^",X:DTIME D:X["?" HELP^XBHELP("XBGCMP","XBGCMP") G:X["?" 2 I "^"[X S XBQ=1 G X2 D CHECK I XBS S XBS=0 G 2 S XBG2=X D CHECK2 I XBS S XBS=0 G 1 X2 ; Q ; CHECK ; Check each global I X["(",X'[")" S XBS=1 W !,*7," Must end in "")""" G X6 S XBT=$P(X,"(") I XBT["[" D . I XBT'["]" W !,*7," Invalid cross UCI notation" S XBS=1 G X4 . S XBT=$P(XBT,"]") . I XBT["""" F XBI=1:1:$L(XBT) I $E(XBT,XBI)="""" S $E(XBT,XBI)="",XBI=XBI-1 . I XBT?1"["3U1","3U!(XBT?1"["3U) . E W !,*7," Invalid cross UCI notation" S XBS=1 G X4 . I XBT'[","!($P(XBT,",",2)'=XBVOL) S X="["""_$P(XBT,"[",2)_"""]"_$P(X,"]",2) G X4 . S X="["""_$P($P(XBT,"[",2),",")_"""]"_$P(X,"]",2) X4 . Q S XBT(1)=$S($P(X,"(")["[":$P($P(X,"]",2),"("),1:$P(X,"(")) I $L(XBT(1))>8 W !,*7," Invalid global name" S XBS=1 G X6 I XBT(1)?1A.AN!(XBT(1)?1"XB".AN) E W !,*7," Invalid global name" S XBS=1 G X6 S XBT(2)=X,X="TRAP^XBGCMP",@^%ZOSF("TRAP"),X=XBT(2) I '$D(@("^"_X)) W !,*7," Global does not exist" S XBS=1 X6 ; Q ; TRAP ; Error trap for missing quotes I $$Z^ZIBNSSV("ERROR")["0 D PAUSE Q:$G(XBSTP) S XBL=IOSL-3 W ! . I $L(^TMP("XBGCMP",XBN,XB))>76 W !,$P(^(XB),"~"),!,$P(^(XB),"~",2),! S XBL=XBL-3.25 . E W !,$P(^TMP("XBGCMP",XBN,XB),"~")," ",$P(^(XB),"~",2),! S XBL=XBL-2 I '$G(XBSTP) W !,"Comparison completed with ",XBC," difference",$S(XBC'=1:"s",1:"")," found.",! KILL ^TMP("XBGCMP",XBN) I $D(ZTQUEUED) S ZTREQ="@" D EOJ Q ; PAUSE ; Quit display? I $E(IOST,1,2)="C-" S Y=$$DIR^XBDIR("E") S:$D(DIRUT)!($D(DUOUT)) XBSTP=1 KILL DIRUT,DUOUT W ! Q ; SCHED ; Schedules another task to print KILL ZTSAVE F %="XBN","XBG1","XBG2","XBC" S ZTSAVE(%)="" S ZTRTN="PRINT^XBGCMP",ZTDESC="PRINT COMPARISON OF TWO GLOBALS",ZTIO=XBION,ZTDTH=DT D ^%ZTLOAD KILL ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK Q ; EOJ ; KILL XB,XBA,XBB,XBC,XBI,XBL,XBG1,XBG2,XBION,XBN,XBQ,XBS,XBSTP,XBT,XBTEMP,XBTMP,XBVOL Q ; HELP ;EP - Dooda about the utility ;;@;!