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

SCUTBK.m

Go to the documentation of this file.
SCUTBK ;ALB/MJK - Scheduling Broker Utilities ;[ 03/21/95  4:13 PM ]
 ;;5.3;Scheduling;**41,130,1015**;AUG 13, 1993;Build 21
 ;
 Q
 ;
CHK ; -- all broker callbacks pass thru here
 Q
 ;
LISTC(SCDATA,SC) ; -- broker callback to get list data
 N SCFILE,SCIENS,SCFIELDS,SCMAX,SCFROM,SCPART,SCXREF,SCREEN,SCID,SCVAL,SCROOT,SCERR,SCRSLT,SCFLD
 D CHK
 ; -- parse array to parameters
 D PARSE(.SC)
 S SCFLAGS=$G(SCFLAGS)_"PS"
 ;
 ; -- get specific field criteria  - screen code (below) left as reminder
 ;IF $G(SC("DDFILE")),$G(SC("DDFIELD")),$D(^DD(SC("DDFILE"),SC("DDFIELD"),12.1)) D
 ;. N DIC X ^(12.1) S:$D(DIC("S")) SCREEN=DIC("S")
 ;
 ; -- need to get from kernel broker somehow...
 D TMP
 ;
 D LIST^DIC(SCFILE,SCIENS,SCFIELDS,SCFLAGS,SCMAX,.SCFROM,SCPART,SCXREF,SCREEN,SCID,"^TMP(""SCRSLT"",$J)","SCERR")
 ;
 N Y,I,N
 ;
 S N=0
 IF $G(SCFROM)]"" D
 . D SET("[Misc]")
 . D SET("MORE"_U_SCFROM_U_SCFROM("IEN"))
 ;
 D SET("[Data]")
 S I=0 F  S I=$O(^TMP("SCRSLT",$J,"DILIST",I)) Q:'I  D SET(^TMP("SCRSLT",$J,"DILIST",I,0))
 ;
 IF $D(SCERR) D
 . D SET("[Errors]")
 ;
 M SCDATA=Y
 Q
 ;
SET(X) ;
 S N=N+1
 S Y(N)=X
 Q
 ;
PARSE(SC) ; -- array parsing
 S SCFILE=$G(SC("FILE"))
 S SCIENS=$G(SC("IENS"))
 S SCFIELDS=$G(SC("FIELDS"))
 S SCFLAGS=$G(SC("FLAGS"))
 S SCMAX=$G(SC("MAX"),"*")
 M SCFROM=SC("FROM")
 S SCPART=$G(SC("PART"))
 S SCXREF=$G(SC("XREF"))
 S SCREEN=$G(SC("SCREEN"))
 S SCID=$G(SC("ID"))
 S SCROOT=$G(SC("ROOT"))
 ; -- for find
 S SCVAL=$G(SC("VALUE"))
 Q
 ;
FILEC(SCDATA,SCMODE,SCROOT,SCIENS) ;
 N SCRTN,SCFDA,SCERR,N,I
 D CHK
 D FDASET(.SCROOT,.SCFDA)
 ; -- set up placeholder DINUM's if any
 ; -- NOTE:  Can't use until multiple arrays can be passed by broker
 ;S I="" F  S I=$O(SCIENS(I)) Q:I=""  S SCRTN(+I)=+SCIENS(I)
 IF SCMODE="ADD" D
 . D UPDATE^DIE("","SCFDA","SCRTN","SCERR")
 ELSE  D
 . D FILE^DIE("","SCFDA","SCERR")
 S N=0
 ;
 D SETF("[Data]")
 ; -- send back info on entry #'s for placeholders
 S I=0 F  S I=$O(SCRTN(I)) Q:'I  D SETF("+"_I_U_SCRTN(I))
 ;
 IF $D(SCERR) D
 . D SETF("[Errors]")
 . D SETF("An error has occurred.")
 Q
 ;
SETF(X) ;
 S N=N+1
 S SCDATA(N)=X
 Q
 ;
FDASET(SCROOT,SCFDA) ;
 N SCFILE,SCIEN,SCFIELD,SCVAL,SCERR,I
 ;
 S I=0
 F  S I=$O(SCROOT(I)) Q:'I  S X=SCROOT(I) D
 . S SCFILE=$P(X,U)
 . S SCFIELD=$P(X,U,2)
 . S SCIEN=$P(X,U,3)
 . S SCVAL=$P(X,U,4)
 . D FDA^DILF(SCFILE,SCIEN_",",SCFIELD,"",SCVAL,"SCFDA","SCERR")
 Q
 ;
TMP ; -- temporary envrionment variables sets until kernel tools arrives
 IF '$G(DUZ) D
 . S DUZ=.5,DUZ(0)="@",U="^",DTIME=300
 . D NOW^%DTC S DT=X
 Q
 ;
VALC(SCDATA,SC) ; -- calls Database Validator
 N SCFILE,SCIENS,SCFIELD,SCVALUE,SCVAL,SCRSLT,SCERR
 D CHK
 S SCFLAGS="E"
 S SCFILE=$G(SC("FILE"))
 S SCIENS=$G(SC("IENS"))
 S SCFIELD=$G(SC("FIELD"))
 S SCVAL=$G(SC("VALUE"))
 ;
 ; -- need to get from kernel broker somehow...
 D TMP
 ;
 D VAL^DIE(SCFILE,SCIENS,SCFIELD,SCFLAGS,SCVAL,.SCRSLT,"","SCERR")
 ;
 N Y,N
 S N=0
 D SET("[FILLER]")
 D SET("[Data]")
 D SET($G(SCRSLT,U))
 D SET($G(SCRSLT(0)))
 ;
 IF $D(SCERR) D
 . D SET("[Errors]")
 M SCDATA=Y
 Q