SDQPROP ;ALB/MJK - Query Object Property Methods ;8/12/96
;;5.3;Scheduling;**131,1015**;Aug 13, 1993;Build 21
;
DATE(SDQ,SDBEG,SDEND,SDACT,SDERR) ; -- set/get date range property
; API ID: 82
; API NAME: SDQ DATE RANGE
;
DATEG ; -- goto entry point
; -- do validation checks
IF '$$QRY^SDQVAL(.SDQ,$G(SDERR)) G DATEQ
IF '$$ACTION^SDQVAL(.SDACT,$G(SDERR)) G DATEQ
IF SDACT="SET",'$$QRYINACT^SDQVAL(.SDQ,$G(SDERR)) G DATEQ
IF SDACT="SET",SDBEG=0 S SDBEG=2900101
IF SDACT="SET",'$$RANGE^SDQVAL(.SDBEG,.SDEND,$G(SDERR)) G DATEQ
;
IF SDACT="SET" D
. S @SDQUERY@(SDQ,"BEGIN DATE")=SDBEG
. S @SDQUERY@(SDQ,"END DATE")=SDEND
IF SDACT="GET" D
. S SDBEG=$G(@SDQUERY@(SDQ,"BEGIN DATE"))
. S SDEND=$G(@SDQUERY@(SDQ,"END DATE"))
;
DATEQ Q
;
;
FILTER(SDQ,SDFIL,SDACT,SDERR) ; -- set/get filter property
; API ID: 83
; API NAME: SDQ FILTER
;
FILTERG ; -- goto entry point
; -- do validation checks
IF '$$QRY^SDQVAL(.SDQ,$G(SDERR)) G FILTERQ
IF '$$ACTION^SDQVAL(.SDACT,$G(SDERR)) G FILTERQ
IF SDACT="SET",'$$QRYINACT^SDQVAL(.SDQ,$G(SDERR)) G FILTERQ
IF SDACT="SET",'$$FILTER^SDQVAL(.SDFIL,$G(SDERR)) G FILTERQ
;
IF SDACT="SET" S @SDQUERY@(SDQ,"FILTER")=SDFIL
IF SDACT="GET" S SDFIL=$G(@SDQUERY@(SDQ,"FILTER"),"IF 1")
;
FILTERQ Q
;
;
INDEX(SDQ,SDIDX,SDACT,SDERR) ; -- set/get index property
; API ID: 85
; API NAME: SDQ INDEX NAME
;
INDEXG ; -- goto entry point
; -- do validation checks
IF '$$QRY^SDQVAL(.SDQ,$G(SDERR)) G INDEXQ
IF '$$ACTION^SDQVAL(.SDACT,$G(SDERR)) G INDEXQ
IF SDACT="SET",'$$QRYINACT^SDQVAL(.SDQ,$G(SDERR)) G INDEXQ
IF SDACT="SET",'$$INDEX^SDQVAL(.SDQ,.SDIDX,$G(SDERR)) G INDEXQ
;
IF SDACT="SET" D SETIDX(.SDQ,.SDIDX)
IF SDACT="GET" S SDIDX=$G(@SDQUERY@(SDQ,"INDEX EXTERNAL"))
;
INDEXQ Q
;
;
SETIDX(SDQ,SDIDX) ; -- set index related info
N SDIDXI,SDTYPE,SDVAL
S SDIDXI=$O(^TMP("SDQUERY CLASS",$J,SDQ,"INDEX","B",SDIDX,0))
S X=$G(^TMP("SDQUERY CLASS",$J,SDQ,"INDEX",SDIDXI,0))
S @SDQUERY@(SDQ,"INDEX EXTERNAL")=$P(X,"^",1)
S @SDQUERY@(SDQ,"INDEX INTERNAL")=$P(X,"^",2)
S (SDTYPE,@SDQUERY@(SDQ,"INDEX TYPE"))=$P(X,"^",3)
;
; -- at which subscript is ien located + subscripts in global root
S @SDQUERY@(SDQ,"IEN SUBSCRIPT")=$S(SDTYPE=1:3,SDTYPE=2:3,SDTYPE=4:4,1:999)+$P($G(^TMP("SDQUERY CLASS",$J,SDQ,"GL SUBSCRIPTS")),"^",3)
;
; -- get override entry validator if defined, otherwise use default
S SDVAL=$G(^TMP("SDQUERY CLASS",$J,SDQ,"INDEX",SDIDXI,"VALIDATOR"))
IF SDVAL="" D
. IF SDTYPE=1 S SDVAL="D REG^SDQUT(.SDQ,.SDGREF)" ; regular
. IF SDTYPE=2 S SDVAL="D REGDT^SDQUT(.SDQ,.SDGREF)" ; regular date range
. ; IF SDTYPE=3 S SDVAL="D COM^SDQUT(.SDQ,.SDGREF)" ; composite
. IF SDTYPE=4 S SDVAL="D COMDT^SDQUT(.SDQ,.SDGREF)" ; composite date range
;
S @SDQUERY@(SDQ,"VALIDATOR")=SDVAL
Q
;
;
ACTIVE(SDQ,SDSTAT,SDACT,SDERR) ; -- activate query
; API ID: 88
; API NAME: SDQ ACTIVE STATUS
;
ACTIVEG ; -- goto entry point
; -- do validation checks
IF '$$QRY^SDQVAL(.SDQ,$G(SDERR)) G ACTIVEQ
IF '$$ACTION^SDQVAL(.SDACT,$G(SDERR)) G ACTIVEQ
;
; -- did above produce errors?
; -- if so, it's important to stop processing to prevent other errors
IF $G(SDERR)="",$O(^TMP("DIERR",$J,0)) G ACTIVEQ
IF $G(SDERR)]"",$O(@SDERR@("DIERR",0)) G ACTIVEQ
;
IF SDACT="SET" D G ACTIVEQ
. IF '$$STATUS^SDQVAL(.SDSTAT,$G(SDERR)) Q
. IF SDSTAT="TRUE",'$$PROP^SDQVAL(.SDQ,$G(SDERR)) Q
. IF SDSTAT="TRUE",'$G(@SDQUERY@(SDQ,"ACTIVE")) D START(.SDQ)
. IF SDSTAT="FALSE",$G(@SDQUERY@(SDQ,"ACTIVE")) D STOP(.SDQ)
;
IF SDACT="GET" D G ACTIVEQ
. S SDSTAT=$S(@SDQUERY@(SDQ,"ACTIVE"):"TRUE",1:"FALSE")
;
ACTIVEQ Q
;
;
START(SDQ) ; -- set up active query
N Y,SDTYPE,SDIDX,SDGL,SDMST,SDBEG
S SDTYPE=$G(@SDQUERY@(SDQ,"INDEX TYPE"))
S SDIDX=$G(@SDQUERY@(SDQ,"INDEX INTERNAL"))
S SDMST=$G(@SDQUERY@(SDQ,"MASTER VALUE"))
S SDBEG=$G(@SDQUERY@(SDQ,"BEGIN DATE"))
S SDGL=$G(^TMP("SDQUERY CLASS",$J,SDQ,"GL"))
S Y=""
;
IF SDTYPE=1 S Y=SDGL_""""_SDIDX_""","""_SDMST_""")" ; regular
IF SDTYPE=2 S Y=SDGL_""""_SDIDX_""","_(SDBEG-.000001)_")" ; regular d/t
IF SDTYPE=3 S Y=SDGL_""""_SDIDX_""","""_SDMST_""")" ; composite
IF SDTYPE=4 S Y=SDGL_""""_SDIDX_""","""_SDMST_""","_(SDBEG-.000001)_")" ; composite d/t
;
S @SDQUERY@(SDQ,"GLOBAL REF")=Y
S @SDQUERY@(SDQ,"CURSOR")=0
S @SDQUERY@(SDQ,"ACTIVE")=1
S @SDQUERY@(SDQ,"MORE")=1
S @SDQUERY@(SDQ,"BOF")=1
S @SDQUERY@(SDQ,"EOF")=0
S @SDQUERY@(SDQ,"COUNT")=0
K ^TMP("SDQUERY LIST",$J,SDQ)
D NEXT^SDQNAV(.SDQ,$G(SDERR))
STARTQ Q
;
;
STOP(SDQRY) ; -- stop query / also called from CREATE^SDQ to set up query
;
S @SDQUERY@(SDQ,"GLOBAL REF")=""
S @SDQUERY@(SDQ,"CURSOR")=0
S @SDQUERY@(SDQ,"ACTIVE")=0
S @SDQUERY@(SDQ,"MORE")=0
S @SDQUERY@(SDQ,"BOF")=0
S @SDQUERY@(SDQ,"COUNT")=0
K ^TMP("SDQUERY LIST",$J,SDQ)
Q
;
SDQPROP ;ALB/MJK - Query Object Property Methods ;8/12/96
+1 ;;5.3;Scheduling;**131,1015**;Aug 13, 1993;Build 21
+2 ;
DATE(SDQ,SDBEG,SDEND,SDACT,SDERR) ; -- set/get date range property
+1 ; API ID: 82
+2 ; API NAME: SDQ DATE RANGE
+3 ;
DATEG ; -- goto entry point
+1 ; -- do validation checks
+2 IF '$$QRY^SDQVAL(.SDQ,$GET(SDERR))
GOTO DATEQ
+3 IF '$$ACTION^SDQVAL(.SDACT,$GET(SDERR))
GOTO DATEQ
+4 IF SDACT="SET"
IF '$$QRYINACT^SDQVAL(.SDQ,$GET(SDERR))
GOTO DATEQ
+5 IF SDACT="SET"
IF SDBEG=0
SET SDBEG=2900101
+6 IF SDACT="SET"
IF '$$RANGE^SDQVAL(.SDBEG,.SDEND,$GET(SDERR))
GOTO DATEQ
+7 ;
+8 IF SDACT="SET"
Begin DoDot:1
+9 SET @SDQUERY@(SDQ,"BEGIN DATE")=SDBEG
+10 SET @SDQUERY@(SDQ,"END DATE")=SDEND
End DoDot:1
+11 IF SDACT="GET"
Begin DoDot:1
+12 SET SDBEG=$GET(@SDQUERY@(SDQ,"BEGIN DATE"))
+13 SET SDEND=$GET(@SDQUERY@(SDQ,"END DATE"))
End DoDot:1
+14 ;
DATEQ QUIT
+1 ;
+2 ;
FILTER(SDQ,SDFIL,SDACT,SDERR) ; -- set/get filter property
+1 ; API ID: 83
+2 ; API NAME: SDQ FILTER
+3 ;
FILTERG ; -- goto entry point
+1 ; -- do validation checks
+2 IF '$$QRY^SDQVAL(.SDQ,$GET(SDERR))
GOTO FILTERQ
+3 IF '$$ACTION^SDQVAL(.SDACT,$GET(SDERR))
GOTO FILTERQ
+4 IF SDACT="SET"
IF '$$QRYINACT^SDQVAL(.SDQ,$GET(SDERR))
GOTO FILTERQ
+5 IF SDACT="SET"
IF '$$FILTER^SDQVAL(.SDFIL,$GET(SDERR))
GOTO FILTERQ
+6 ;
+7 IF SDACT="SET"
SET @SDQUERY@(SDQ,"FILTER")=SDFIL
+8 IF SDACT="GET"
SET SDFIL=$GET(@SDQUERY@(SDQ,"FILTER"),"IF 1")
+9 ;
FILTERQ QUIT
+1 ;
+2 ;
INDEX(SDQ,SDIDX,SDACT,SDERR) ; -- set/get index property
+1 ; API ID: 85
+2 ; API NAME: SDQ INDEX NAME
+3 ;
INDEXG ; -- goto entry point
+1 ; -- do validation checks
+2 IF '$$QRY^SDQVAL(.SDQ,$GET(SDERR))
GOTO INDEXQ
+3 IF '$$ACTION^SDQVAL(.SDACT,$GET(SDERR))
GOTO INDEXQ
+4 IF SDACT="SET"
IF '$$QRYINACT^SDQVAL(.SDQ,$GET(SDERR))
GOTO INDEXQ
+5 IF SDACT="SET"
IF '$$INDEX^SDQVAL(.SDQ,.SDIDX,$GET(SDERR))
GOTO INDEXQ
+6 ;
+7 IF SDACT="SET"
DO SETIDX(.SDQ,.SDIDX)
+8 IF SDACT="GET"
SET SDIDX=$GET(@SDQUERY@(SDQ,"INDEX EXTERNAL"))
+9 ;
INDEXQ QUIT
+1 ;
+2 ;
SETIDX(SDQ,SDIDX) ; -- set index related info
+1 NEW SDIDXI,SDTYPE,SDVAL
+2 SET SDIDXI=$ORDER(^TMP("SDQUERY CLASS",$JOB,SDQ,"INDEX","B",SDIDX,0))
+3 SET X=$GET(^TMP("SDQUERY CLASS",$JOB,SDQ,"INDEX",SDIDXI,0))
+4 SET @SDQUERY@(SDQ,"INDEX EXTERNAL")=$PIECE(X,"^",1)
+5 SET @SDQUERY@(SDQ,"INDEX INTERNAL")=$PIECE(X,"^",2)
+6 SET (SDTYPE,@SDQUERY@(SDQ,"INDEX TYPE"))=$PIECE(X,"^",3)
+7 ;
+8 ; -- at which subscript is ien located + subscripts in global root
+9 SET @SDQUERY@(SDQ,"IEN SUBSCRIPT")=$SELECT(SDTYPE=1:3,SDTYPE=2:3,SDTYPE=4:4,1:999)+$PIECE($GET(^TMP("SDQUERY CLASS",$JOB,SDQ,"GL SUBSCRIPTS")),"^",3)
+10 ;
+11 ; -- get override entry validator if defined, otherwise use default
+12 SET SDVAL=$GET(^TMP("SDQUERY CLASS",$JOB,SDQ,"INDEX",SDIDXI,"VALIDATOR"))
+13 IF SDVAL=""
Begin DoDot:1
+14 ; regular
IF SDTYPE=1
SET SDVAL="D REG^SDQUT(.SDQ,.SDGREF)"
+15 ; regular date range
IF SDTYPE=2
SET SDVAL="D REGDT^SDQUT(.SDQ,.SDGREF)"
+16 ; IF SDTYPE=3 S SDVAL="D COM^SDQUT(.SDQ,.SDGREF)" ; composite
+17 ; composite date range
IF SDTYPE=4
SET SDVAL="D COMDT^SDQUT(.SDQ,.SDGREF)"
End DoDot:1
+18 ;
+19 SET @SDQUERY@(SDQ,"VALIDATOR")=SDVAL
+20 QUIT
+21 ;
+22 ;
ACTIVE(SDQ,SDSTAT,SDACT,SDERR) ; -- activate query
+1 ; API ID: 88
+2 ; API NAME: SDQ ACTIVE STATUS
+3 ;
ACTIVEG ; -- goto entry point
+1 ; -- do validation checks
+2 IF '$$QRY^SDQVAL(.SDQ,$GET(SDERR))
GOTO ACTIVEQ
+3 IF '$$ACTION^SDQVAL(.SDACT,$GET(SDERR))
GOTO ACTIVEQ
+4 ;
+5 ; -- did above produce errors?
+6 ; -- if so, it's important to stop processing to prevent other errors
+7 IF $GET(SDERR)=""
IF $ORDER(^TMP("DIERR",$JOB,0))
GOTO ACTIVEQ
+8 IF $GET(SDERR)]""
IF $ORDER(@SDERR@("DIERR",0))
GOTO ACTIVEQ
+9 ;
+10 IF SDACT="SET"
Begin DoDot:1
+11 IF '$$STATUS^SDQVAL(.SDSTAT,$GET(SDERR))
QUIT
+12 IF SDSTAT="TRUE"
IF '$$PROP^SDQVAL(.SDQ,$GET(SDERR))
QUIT
+13 IF SDSTAT="TRUE"
IF '$GET(@SDQUERY@(SDQ,"ACTIVE"))
DO START(.SDQ)
+14 IF SDSTAT="FALSE"
IF $GET(@SDQUERY@(SDQ,"ACTIVE"))
DO STOP(.SDQ)
End DoDot:1
GOTO ACTIVEQ
+15 ;
+16 IF SDACT="GET"
Begin DoDot:1
+17 SET SDSTAT=$SELECT(@SDQUERY@(SDQ,"ACTIVE"):"TRUE",1:"FALSE")
End DoDot:1
GOTO ACTIVEQ
+18 ;
ACTIVEQ QUIT
+1 ;
+2 ;
START(SDQ) ; -- set up active query
+1 NEW Y,SDTYPE,SDIDX,SDGL,SDMST,SDBEG
+2 SET SDTYPE=$GET(@SDQUERY@(SDQ,"INDEX TYPE"))
+3 SET SDIDX=$GET(@SDQUERY@(SDQ,"INDEX INTERNAL"))
+4 SET SDMST=$GET(@SDQUERY@(SDQ,"MASTER VALUE"))
+5 SET SDBEG=$GET(@SDQUERY@(SDQ,"BEGIN DATE"))
+6 SET SDGL=$GET(^TMP("SDQUERY CLASS",$JOB,SDQ,"GL"))
+7 SET Y=""
+8 ;
+9 ; regular
IF SDTYPE=1
SET Y=SDGL_""""_SDIDX_""","""_SDMST_""")"
+10 ; regular d/t
IF SDTYPE=2
SET Y=SDGL_""""_SDIDX_""","_(SDBEG-.000001)_")"
+11 ; composite
IF SDTYPE=3
SET Y=SDGL_""""_SDIDX_""","""_SDMST_""")"
+12 ; composite d/t
IF SDTYPE=4
SET Y=SDGL_""""_SDIDX_""","""_SDMST_""","_(SDBEG-.000001)_")"
+13 ;
+14 SET @SDQUERY@(SDQ,"GLOBAL REF")=Y
+15 SET @SDQUERY@(SDQ,"CURSOR")=0
+16 SET @SDQUERY@(SDQ,"ACTIVE")=1
+17 SET @SDQUERY@(SDQ,"MORE")=1
+18 SET @SDQUERY@(SDQ,"BOF")=1
+19 SET @SDQUERY@(SDQ,"EOF")=0
+20 SET @SDQUERY@(SDQ,"COUNT")=0
+21 KILL ^TMP("SDQUERY LIST",$JOB,SDQ)
+22 DO NEXT^SDQNAV(.SDQ,$GET(SDERR))
STARTQ QUIT
+1 ;
+2 ;
STOP(SDQRY) ; -- stop query / also called from CREATE^SDQ to set up query
+1 ;
+2 SET @SDQUERY@(SDQ,"GLOBAL REF")=""
+3 SET @SDQUERY@(SDQ,"CURSOR")=0
+4 SET @SDQUERY@(SDQ,"ACTIVE")=0
+5 SET @SDQUERY@(SDQ,"MORE")=0
+6 SET @SDQUERY@(SDQ,"BOF")=0
+7 SET @SDQUERY@(SDQ,"COUNT")=0
+8 KILL ^TMP("SDQUERY LIST",$JOB,SDQ)
+9 QUIT
+10 ;