| 1 | RGUTRRC ;CAIRO/DKM - Remote routine checksum utility;04-Sep-1998 11:26;DKM | 
|---|
| 2 | ;;2.1;RUN TIME LIBRARY;;Mar 22, 1999 | 
|---|
| 3 | ;================================================================= | 
|---|
| 4 | ; Performs a routine checksum on selected routines across all CPUs. | 
|---|
| 5 | ;================================================================= | 
|---|
| 6 | N RGX,RGY,RGRTN,RGCPU,RGUCI,RGCS,RGPID,RGZ,RGZ1,X | 
|---|
| 7 | S RGPID=$J | 
|---|
| 8 | D HOME^%ZIS | 
|---|
| 9 | D TITLE^RGUT("Remote Routine Checksum","1.0") | 
|---|
| 10 | RSEL X ^%ZOSF("RSEL") | 
|---|
| 11 | W !! | 
|---|
| 12 | Q:'$D(^UTILITY(RGPID)) | 
|---|
| 13 | K %IS,%ZIS | 
|---|
| 14 | D ^%ZIS | 
|---|
| 15 | G:POP RSEL | 
|---|
| 16 | U IO | 
|---|
| 17 | S RGUCI=$P($ZU(0),","),RGCPU=$P($ZU(0),",",2),RGRTN=$C(1) | 
|---|
| 18 | NXT S RGRTN=$O(^UTILITY(RGPID,RGRTN)) | 
|---|
| 19 | I RGRTN="" W !! Q | 
|---|
| 20 | W RGRTN,"..." | 
|---|
| 21 | K RGX,^RGUTL("RRC",RGPID) | 
|---|
| 22 | F RGY="CSA","CSB","CSC","PSA","PSB" D:RGY'=RGCPU JOBIT | 
|---|
| 23 | S RGCS=$$CHKSUM(RGRTN),RGCNT=0 | 
|---|
| 24 | W ?15,RGCPU," ",RGCS,! | 
|---|
| 25 | AGAIN I '$D(RGX) W ! G NXT | 
|---|
| 26 | S RGZ="",RGCNT=RGCNT+1 | 
|---|
| 27 | I RGCNT>20 D FAIL G NXT | 
|---|
| 28 | H:RGCNT>1 1 | 
|---|
| 29 | NXT2 S RGZ=$O(RGX(RGZ)) | 
|---|
| 30 | G:RGZ="" AGAIN | 
|---|
| 31 | G:'$D(^RGUTL("RRC",RGPID,RGZ)) NXT2 | 
|---|
| 32 | S RGZ1=^(RGZ) | 
|---|
| 33 | K ^(RGZ),RGX(RGZ) | 
|---|
| 34 | I RGCS=RGZ1 W ?15,RGZ," same",! | 
|---|
| 35 | E  W ?15,RGZ," different: ",RGZ1,"  ************",! | 
|---|
| 36 | G NXT2 | 
|---|
| 37 | FAIL S RGZ=$O(RGX(RGZ)) | 
|---|
| 38 | Q:RGZ="" | 
|---|
| 39 | W ?15,RGZ," failed to report",! | 
|---|
| 40 | G FAIL | 
|---|
| 41 | JOBIT Q:RGY=RGCPU | 
|---|
| 42 | S @$$TRAP^RGZOSF("NOCPU^RGUTRRC") | 
|---|
| 43 | J JOB^RGUTRRC(RGPID,RGRTN)[RGUCI,RGY]::1 | 
|---|
| 44 | I '$ZB W "Failed to start remote job on "_RGUCI_","_RGY,! | 
|---|
| 45 | E  S RGX(RGY)="" | 
|---|
| 46 | NOCPU Q | 
|---|
| 47 | JOB(RGJ,RGRTN) ; | 
|---|
| 48 | H 1 | 
|---|
| 49 | S RGCPU=$P($ZU(0),",",2),@$$TRAP^RGZOSF("JERR^RGUTRRC") | 
|---|
| 50 | I $$TEST^RGZOSF(RGRTN) S ^RGUTL("RRC",RGJ,RGCPU)=$$CHKSUM(RGRTN) | 
|---|
| 51 | E  S ^RGUTL("RRC",RGJ,RGCPU)=0 | 
|---|
| 52 | Q | 
|---|
| 53 | JERR S ^RGUTL("RRC",RGJ,RGCPU)=$$EC^%ZOSV | 
|---|
| 54 | Q | 
|---|
| 55 | CHKSUM(X) ; | 
|---|
| 56 | N Y | 
|---|
| 57 | X ^%ZOSF("RSUM") | 
|---|
| 58 | Q Y | 
|---|