| 1 | SCUTBK ;ALB/MJK - Scheduling Broker Utilities ;[ 03/21/95  4:13 PM ] | 
|---|
| 2 | ;;5.3;Scheduling;**41,130**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | CHK ; -- all broker callbacks pass thru here | 
|---|
| 7 | Q | 
|---|
| 8 | ; | 
|---|
| 9 | LISTC(SCDATA,SC) ; -- broker callback to get list data | 
|---|
| 10 | N SCFILE,SCIENS,SCFIELDS,SCMAX,SCFROM,SCPART,SCXREF,SCREEN,SCID,SCVAL,SCROOT,SCERR,SCRSLT,SCFLD | 
|---|
| 11 | D CHK | 
|---|
| 12 | ; -- parse array to parameters | 
|---|
| 13 | D PARSE(.SC) | 
|---|
| 14 | S SCFLAGS=$G(SCFLAGS)_"PS" | 
|---|
| 15 | ; | 
|---|
| 16 | ; -- get specific field criteria  - screen code (below) left as reminder | 
|---|
| 17 | ;IF $G(SC("DDFILE")),$G(SC("DDFIELD")),$D(^DD(SC("DDFILE"),SC("DDFIELD"),12.1)) D | 
|---|
| 18 | ;. N DIC X ^(12.1) S:$D(DIC("S")) SCREEN=DIC("S") | 
|---|
| 19 | ; | 
|---|
| 20 | ; -- need to get from kernel broker somehow... | 
|---|
| 21 | D TMP | 
|---|
| 22 | ; | 
|---|
| 23 | D LIST^DIC(SCFILE,SCIENS,SCFIELDS,SCFLAGS,SCMAX,.SCFROM,SCPART,SCXREF,SCREEN,SCID,"^TMP(""SCRSLT"",$J)","SCERR") | 
|---|
| 24 | ; | 
|---|
| 25 | N Y,I,N | 
|---|
| 26 | ; | 
|---|
| 27 | S N=0 | 
|---|
| 28 | IF $G(SCFROM)]"" D | 
|---|
| 29 | . D SET("[Misc]") | 
|---|
| 30 | . D SET("MORE"_U_SCFROM_U_SCFROM("IEN")) | 
|---|
| 31 | ; | 
|---|
| 32 | D SET("[Data]") | 
|---|
| 33 | S I=0 F  S I=$O(^TMP("SCRSLT",$J,"DILIST",I)) Q:'I  D SET(^TMP("SCRSLT",$J,"DILIST",I,0)) | 
|---|
| 34 | ; | 
|---|
| 35 | IF $D(SCERR) D | 
|---|
| 36 | . D SET("[Errors]") | 
|---|
| 37 | ; | 
|---|
| 38 | M SCDATA=Y | 
|---|
| 39 | Q | 
|---|
| 40 | ; | 
|---|
| 41 | SET(X) ; | 
|---|
| 42 | S N=N+1 | 
|---|
| 43 | S Y(N)=X | 
|---|
| 44 | Q | 
|---|
| 45 | ; | 
|---|
| 46 | PARSE(SC) ; -- array parsing | 
|---|
| 47 | S SCFILE=$G(SC("FILE")) | 
|---|
| 48 | S SCIENS=$G(SC("IENS")) | 
|---|
| 49 | S SCFIELDS=$G(SC("FIELDS")) | 
|---|
| 50 | S SCFLAGS=$G(SC("FLAGS")) | 
|---|
| 51 | S SCMAX=$G(SC("MAX"),"*") | 
|---|
| 52 | M SCFROM=SC("FROM") | 
|---|
| 53 | S SCPART=$G(SC("PART")) | 
|---|
| 54 | S SCXREF=$G(SC("XREF")) | 
|---|
| 55 | S SCREEN=$G(SC("SCREEN")) | 
|---|
| 56 | S SCID=$G(SC("ID")) | 
|---|
| 57 | S SCROOT=$G(SC("ROOT")) | 
|---|
| 58 | ; -- for find | 
|---|
| 59 | S SCVAL=$G(SC("VALUE")) | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | FILEC(SCDATA,SCMODE,SCROOT,SCIENS) ; | 
|---|
| 63 | N SCRTN,SCFDA,SCERR,N,I | 
|---|
| 64 | D CHK | 
|---|
| 65 | D FDASET(.SCROOT,.SCFDA) | 
|---|
| 66 | ; -- set up placeholder DINUM's if any | 
|---|
| 67 | ; -- NOTE:  Can't use until multiple arrays can be passed by broker | 
|---|
| 68 | ;S I="" F  S I=$O(SCIENS(I)) Q:I=""  S SCRTN(+I)=+SCIENS(I) | 
|---|
| 69 | IF SCMODE="ADD" D | 
|---|
| 70 | . D UPDATE^DIE("","SCFDA","SCRTN","SCERR") | 
|---|
| 71 | ELSE  D | 
|---|
| 72 | . D FILE^DIE("","SCFDA","SCERR") | 
|---|
| 73 | S N=0 | 
|---|
| 74 | ; | 
|---|
| 75 | D SETF("[Data]") | 
|---|
| 76 | ; -- send back info on entry #'s for placeholders | 
|---|
| 77 | S I=0 F  S I=$O(SCRTN(I)) Q:'I  D SETF("+"_I_U_SCRTN(I)) | 
|---|
| 78 | ; | 
|---|
| 79 | IF $D(SCERR) D | 
|---|
| 80 | . D SETF("[Errors]") | 
|---|
| 81 | . D SETF("An error has occurred.") | 
|---|
| 82 | Q | 
|---|
| 83 | ; | 
|---|
| 84 | SETF(X) ; | 
|---|
| 85 | S N=N+1 | 
|---|
| 86 | S SCDATA(N)=X | 
|---|
| 87 | Q | 
|---|
| 88 | ; | 
|---|
| 89 | FDASET(SCROOT,SCFDA) ; | 
|---|
| 90 | N SCFILE,SCIEN,SCFIELD,SCVAL,SCERR,I | 
|---|
| 91 | ; | 
|---|
| 92 | S I=0 | 
|---|
| 93 | F  S I=$O(SCROOT(I)) Q:'I  S X=SCROOT(I) D | 
|---|
| 94 | . S SCFILE=$P(X,U) | 
|---|
| 95 | . S SCFIELD=$P(X,U,2) | 
|---|
| 96 | . S SCIEN=$P(X,U,3) | 
|---|
| 97 | . S SCVAL=$P(X,U,4) | 
|---|
| 98 | . D FDA^DILF(SCFILE,SCIEN_",",SCFIELD,"",SCVAL,"SCFDA","SCERR") | 
|---|
| 99 | Q | 
|---|
| 100 | ; | 
|---|
| 101 | TMP ; -- temporary envrionment variables sets until kernel tools arrives | 
|---|
| 102 | IF '$G(DUZ) D | 
|---|
| 103 | . S DUZ=.5,DUZ(0)="@",U="^",DTIME=300 | 
|---|
| 104 | . D NOW^%DTC S DT=X | 
|---|
| 105 | Q | 
|---|
| 106 | ; | 
|---|
| 107 | VALC(SCDATA,SC) ; -- calls Database Validator | 
|---|
| 108 | N SCFILE,SCIENS,SCFIELD,SCVALUE,SCVAL,SCRSLT,SCERR | 
|---|
| 109 | D CHK | 
|---|
| 110 | S SCFLAGS="E" | 
|---|
| 111 | S SCFILE=$G(SC("FILE")) | 
|---|
| 112 | S SCIENS=$G(SC("IENS")) | 
|---|
| 113 | S SCFIELD=$G(SC("FIELD")) | 
|---|
| 114 | S SCVAL=$G(SC("VALUE")) | 
|---|
| 115 | ; | 
|---|
| 116 | ; -- need to get from kernel broker somehow... | 
|---|
| 117 | D TMP | 
|---|
| 118 | ; | 
|---|
| 119 | D VAL^DIE(SCFILE,SCIENS,SCFIELD,SCFLAGS,SCVAL,.SCRSLT,"","SCERR") | 
|---|
| 120 | ; | 
|---|
| 121 | N Y,N | 
|---|
| 122 | S N=0 | 
|---|
| 123 | D SET("[FILLER]") | 
|---|
| 124 | D SET("[Data]") | 
|---|
| 125 | D SET($G(SCRSLT,U)) | 
|---|
| 126 | D SET($G(SCRSLT(0))) | 
|---|
| 127 | ; | 
|---|
| 128 | IF $D(SCERR) D | 
|---|
| 129 | . D SET("[Errors]") | 
|---|
| 130 | M SCDATA=Y | 
|---|
| 131 | Q | 
|---|