| 1 | VAQPST31 ;JRP/ALB - UTILITIES FOR INSTALLING EXPORTED ROUTINES;24-AUG-93 | 
|---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;**1**;NOV 17, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | EXIST(X) ;DETERMINE IF ROUTINE X EXISTS | 
|---|
| 5 | ;INPUT  : X - Name of routine | 
|---|
| 6 | ;OUTPUT : 1 - Routine exists | 
|---|
| 7 | ;         0 - Routine doesn't exist | 
|---|
| 8 | ;        "" - Error | 
|---|
| 9 | ; | 
|---|
| 10 | ;CHECK INPUT & EXISTANCE OF ^%ZOSF("TEST") | 
|---|
| 11 | Q:($G(X)="") "" | 
|---|
| 12 | Q:('$D(^%ZOSF("TEST"))) "" | 
|---|
| 13 | ;CHECK FOR EXISTANCE | 
|---|
| 14 | X ^%ZOSF("TEST") Q $T | 
|---|
| 15 | ; | 
|---|
| 16 | LOAD(X,ARRAY) ;LOAD ROUTINE X INTO ARRAY | 
|---|
| 17 | ;INPUT  : X - Name of routine | 
|---|
| 18 | ;         ARRAY - Array to copy into (full global reference) | 
|---|
| 19 | ;OUTPUT : None | 
|---|
| 20 | ;NOTES  : ARRAY will be in the format | 
|---|
| 21 | ;           ARRAY(Line_N,0)=Line number N of routine X | 
|---|
| 22 | ;       : ARRAY will be killed before loading routine.  If routine | 
|---|
| 23 | ;         could not be loaded, ARRAY() will not exit. | 
|---|
| 24 | ; | 
|---|
| 25 | ;CHECK INPUT, KILL ARRAY, TEST FOR ^%ZOSF("LOAD") | 
|---|
| 26 | Q:($G(ARRAY)="") | 
|---|
| 27 | K @ARRAY | 
|---|
| 28 | Q:($G(X)="") | 
|---|
| 29 | Q:('$D(^%ZOSF("LOAD"))) | 
|---|
| 30 | ;DECLARE VARIABLES | 
|---|
| 31 | N XCNP,DIF,TMP,TMP1,TMP2 | 
|---|
| 32 | ;SET REQUIRED VARIABLES | 
|---|
| 33 | S TMP=$P(ARRAY,"(",1) | 
|---|
| 34 | S TMP1=$P(ARRAY,"(",2) | 
|---|
| 35 | S TMP2=$P(TMP1,")",1) | 
|---|
| 36 | S:(TMP2="") DIF=TMP_"(" | 
|---|
| 37 | S:(TMP2'="") DIF=TMP_"("_TMP2_"," | 
|---|
| 38 | S XCNP=0 | 
|---|
| 39 | ;LOAD ROUTINE | 
|---|
| 40 | X ^%ZOSF("LOAD") | 
|---|
| 41 | Q | 
|---|
| 42 | ; | 
|---|
| 43 | COPY(OLDROU,NEWROU,XCN) ;COPY ROUTINE OLDROU TO ROUTINE NEWROU | 
|---|
| 44 | ;INPUT  : OLDROU - Name of existing routine | 
|---|
| 45 | ;         NEWROU - New name for routine | 
|---|
| 46 | ;         XCN - Line in existing routine to begin copying from | 
|---|
| 47 | ;               (defaults to line 1) | 
|---|
| 48 | ;OUTPUT : 0 - Success | 
|---|
| 49 | ;        -1 - Error | 
|---|
| 50 | ; | 
|---|
| 51 | ;CHECK INPUT & EXISTANCE OF ^%ZOSF("SAVE") | 
|---|
| 52 | Q:($G(OLDROU)="") -1 | 
|---|
| 53 | Q:($G(NEWROU)="") -1 | 
|---|
| 54 | S XCN=+$G(XCN) | 
|---|
| 55 | Q:('$D(^%ZOSF("SAVE"))) -1 | 
|---|
| 56 | ;CHECK FOR EXISTANCE OF OLDROU | 
|---|
| 57 | Q:('$$EXIST(OLDROU)) -1 | 
|---|
| 58 | ;DECLARE VARIABLES | 
|---|
| 59 | N ROOT1,ROOT2,X,DIE | 
|---|
| 60 | S ROOT1="^UTILITY(""VAQPST"","_$J_")" | 
|---|
| 61 | S ROOT2="^UTILITY(""VAQPST"","_$J_"," | 
|---|
| 62 | K @ROOT1 | 
|---|
| 63 | ;LOAD OLDROU | 
|---|
| 64 | D LOAD(OLDROU,ROOT1) | 
|---|
| 65 | Q:('$D(@ROOT1)) -1 | 
|---|
| 66 | ;CALL TO ^%ZOSF("SAVE") START WITH LINE AFTER XCN.  SUBTRACT | 
|---|
| 67 | ; ONE FROM THE VALUE PASSED TO MATCH STATED VALUE. | 
|---|
| 68 | S XCN=XCN-1 | 
|---|
| 69 | ;SAVE OLDROU AS NEWROU | 
|---|
| 70 | S X=NEWROU | 
|---|
| 71 | S DIE=ROOT2 | 
|---|
| 72 | X ^%ZOSF("SAVE") | 
|---|
| 73 | K @ROOT1 | 
|---|
| 74 | ;HAVE TO ASSUME THAT SAVE WAS SUCCESSFUL | 
|---|
| 75 | Q 0 | 
|---|
| 76 | ; | 
|---|
| 77 | SECOND(ROU,STRIP) ;RETURN SECOND LINE OF ROUTINE ROU | 
|---|
| 78 | ;INPUT  : ROU - Name of routine | 
|---|
| 79 | ;         STRIP - Flad indicating of leading <TAB>;; should be stripped | 
|---|
| 80 | ;           If 1, strip <TAB>;;  (default) | 
|---|
| 81 | ;           If 0, don't strip <TAB>;; | 
|---|
| 82 | ;OUTPUT : Second line of ROU | 
|---|
| 83 | ;         NULL returned on error | 
|---|
| 84 | ; | 
|---|
| 85 | ;CHECK INPUT | 
|---|
| 86 | Q:($G(ROU)="") "" | 
|---|
| 87 | Q:('$$EXIST(ROU)) "" | 
|---|
| 88 | S:($G(STRIP)="") STRIP=1 | 
|---|
| 89 | ;DECLARE VARIABLES | 
|---|
| 90 | N ROOT,LINE2 | 
|---|
| 91 | S ROOT="^UTILITY(""VAQPST"","_$J_")" | 
|---|
| 92 | ;LOAD ROUTINE | 
|---|
| 93 | D LOAD(ROU,ROOT) | 
|---|
| 94 | Q:('$D(@ROOT)) "" | 
|---|
| 95 | ;GET SECOND LINE | 
|---|
| 96 | S LINE2=$G(@ROOT@(2,0)) | 
|---|
| 97 | ;STRIP LEADING <TAB>;; | 
|---|
| 98 | S:(STRIP) LINE2=$P(LINE2,";;",2,$L(LINE2,";;")) | 
|---|
| 99 | K @ROOT | 
|---|
| 100 | Q LINE2 | 
|---|