SCCVU1 ;ALB/RMO,TMP - SCHED VISITS CONVERT/ARCHIVE UTILITIES; [ 10/10/95 2:39 PM ]
;;5.3;Scheduling;**211,1015**;Aug 13, 1993;Build 21
;
CHKDT(SCRESULT,SC,SCCVTYP) ; -- Check date range
; Input -- SC Array:
; SC("STARTDT") Start date
; ("ENDDT") End date
; -- SCCVTYP "CST" for convert function
; "AST" for archive function
; Output -- SCRESULT (#=Error number | 0=No Error)^Message
;
N SCENDT,SCERRMSG,SCERRNB,SCSTDT
;
S SCERRNB=0
;
S SCSTDT=$G(SC("STARTDT"))
S SCENDT=$G(SC("ENDDT"))
;
;Check if start date or end date not defined
I 'SCSTDT,'SCENDT D
. S SCERRNB=4049006.005
. D GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG)
;
;Verify date range
I 'SCERRNB S SCERRNB=$$VERDT^SCCVU2(SCSTDT,SCENDT,"",.SCERRMSG)
;
S SCRESULT=SCERRNB
I SCERRNB S SCRESULT=SCRESULT_U_$$BLDSTR(.SCERRMSG)
;
CHKDTQ Q
;
CHKDUP(SCRESULT,SC,SCCVT) ; -- Check duplicate log entries
; Input -- SC Array:
; SC("TYPE") Conversion type
; ("STARTDT") Start date
; ("ENDDT") End date
; ("TEMPLNO") Template number ien
; -- SCCVT "CST" for convert function
; "AST" for archive function
; Output -- SCRESULT (#=Error number | 0=No Error)^Message
;
N SCCVTYP,SCENDT,SCERRMSG,SCERRNB,SCLOG,SCSTDT
;
S SCERRNB=0
;
S SCCVTYP=$G(SC("TYPE"))
S SCSTDT=$G(SC("STARTDT"))
S SCENDT=$G(SC("ENDDT"))
S SCLOG=$G(SC("TEMPLNO"))
;
;Check if type, date range and Template number ien are defined
I 'SCCVTYP!('SCSTDT)!('SCENDT)!('SCLOG) D
. S SCERRNB=4049006.002
. D GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG)
;
;Check duplicate log entries
I 'SCERRNB S SCERRNB=$$CHKDUP^SCCVU2(SCCVTYP,SCSTDT,SCENDT,SCLOG,.SCERRMSG)
;
S SCRESULT=SCERRNB
I SCERRNB S SCRESULT=SCRESULT_U_$$BLDSTR(.SCERRMSG)
;
CHKDUPQ Q
;
PROCREQ(SCRESULT,SC) ; -- Process conversion/estimate request
; Input -- SC Array:
; SC("TEMPLNO") Template number ien
; ("REQNUM") Request number ien
; Output -- SCRESULT (#=Error number | 0=No Error)^Message
;
N SCERRMSG,SCERRNB,SCLOG,SCREQ,SCREQACT,SCREQEVT
S SCERRNB=0
;
S SCLOG=$G(SC("TEMPLNO"))
S SCREQ=$G(SC("REQNUM"))
;
;Quit if Template number ien or request ien are not defined
I 'SCLOG!('SCREQ) D
. S SCERRNB=4049006.003
. D GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG)
;
S SCRESULT=$S('SCERRNB:0,1:SCERRNB_U_$$BLDSTR(.SCERRMSG))
;
G:SCERRNB PROCREQQ
;
; Set request action
S SCREQACT=$P($G(^SD(404.98,SCLOG,"R",SCREQ,0)),U,2)
S SCREQEVT=$P($G(^SD(404.98,SCLOG,"R",SCREQ,0)),U,3)
;
; Queue conversion request to start or re-start
I "^1^3^"[(U_SCREQACT_U) D
. D QUE^SCCVE(SCLOG,SCREQ)
. IF SCREQEVT D JOURNAL(SCLOG)
;
; Process conversion request to stop
I SCREQACT=2 D STOP^SCCVE(SCLOG,SCREQ)
;
PROCREQQ Q
;
TASKSTA(SCRESULT,SCLOG) ; -- Retrieve task status description
; Input -- SCLOG Template number ien
; Output --
; SCRESULT (0^Task status description^status code or Error #^Message)
;
N SCERRNB,SCTSKD,ZTCPU
;
S SCERRNB=0
S SCTSKD="Unknown"
;
;Quit if Template number ien is not defined
I '$G(SCLOG) D G TASKSTAQ
. S SCERRNB=4049006.004
. D GETERR^SCCVLOG1(SCERRNB,"","","",0,.SCERRMSG)
;
;Get task status description
I 'SCERRNB D
. S ZTSK=$P($G(^SD(404.98,SCLOG,1)),U,3),ZTCPU=$P($G(^(1)),U,4)
. I ZTSK D
. . D STAT^%ZTLOAD
. . S SCTSKD=ZTSK(2)_U_ZTSK(1)
;
S SCRESULT=SCERRNB_U_SCTSKD
;
TASKSTAQ Q
;
BLDSTR(E) ; -- Build error message string
; Input -- E Error message array
; Output -- Error message string for display purposes
N I,Y,STOP
S Y=""
S (I,STOP)=0
F S I=$O(E(I)) Q:'I D Q:STOP
. I ($L(Y)+$L(E(I)))<240 S Y=Y_" "_E(I) Q
. S STOP=1
Q $G(Y)
DTOK(SC) ; -- Verify that date range is OK
N SCERR,SCOK
S SCOK=1
D CHKDT(.SCERR,.SC)
G:$G(SCERR) DTOKQ
S SC("TEMPLNO")=DA,SC("TYPE")=1
D CHKDUP(.SCERR,.SC,"CST")
;
DTOKQ ;
I +$G(SCERR) W !!,*7,$P(SCERR,U,2),!! S SCOK=0
Q SCOK
;
CNVTSCH(SCLOG) ; -- Function determines if any convert was scheduled
; Returns 0 if none scheduled, 1 if any ever scheduled
N SCSCH,Z
S SCSCH=0
S Z=0 F S Z=$O(^SD(404.98,SCLOG,"R",Z)) Q:'Z I $P($G(^(Z,0)),U,3) S SCSCH=1 Q
Q SCSCH
;
JOURNAL(SCLOG) ; -- display journal message and global growth estimates
N DIC,DR,DIQ,DA,SCDATA,SCTOT,FLD
S DIC="404.98",DA=SCLOG,DR="207:211",DIQ="SCDATA",DIQ(0)="E"
D EN^DIQ1
S SCTOT=0
F FLD=207:1:211 S SCTOT=SCTOT+$G(SCDATA(404.98,SCLOG,FLD,"E"))
;
W !
W !,">>> The estimated global growth profile for this template is the following:"
W !
W !,?10,"Global",?25,"Blocks",?40,"[Block Size: ",$$BLKSIZE^SCCVEGU1()," bytes]"
W !,?10,"---------",?25,"-----------"
W !,?10,"^SCE",?25,$J($FN($G(SCDATA(404.98,SCLOG,207,"E")),","),11)
W !,?10,"^AUPNVSIT",?25,$J($FN($G(SCDATA(404.98,SCLOG,208,"E")),","),11)
W !,?10,"^AUPNVPRV",?25,$J($FN($G(SCDATA(404.98,SCLOG,209,"E")),","),11)
W !,?10,"^AUPNVPOV",?25,$J($FN($G(SCDATA(404.98,SCLOG,210,"E")),","),11)
W !,?10,"^AUPNVCPT",?25,$J($FN($G(SCDATA(404.98,SCLOG,211,"E")),","),11)
W !,?10,"---------",?25,"-----------"
W !,?10,"Total",?25,$J($FN(SCTOT,","),11)
;
W !
W !,">>> Please verify that enough global disk space and journal space"
W !," are available for these anticipated increases."
W !
W !,">>> Also, please verify that system backup is not scheduled to"
W !," run within the start and stop times of this conversion job."
W !
D PAUSE^SCCVU
Q
;
SCCVU1 ;ALB/RMO,TMP - SCHED VISITS CONVERT/ARCHIVE UTILITIES; [ 10/10/95 2:39 PM ]
+1 ;;5.3;Scheduling;**211,1015**;Aug 13, 1993;Build 21
+2 ;
CHKDT(SCRESULT,SC,SCCVTYP) ; -- Check date range
+1 ; Input -- SC Array:
+2 ; SC("STARTDT") Start date
+3 ; ("ENDDT") End date
+4 ; -- SCCVTYP "CST" for convert function
+5 ; "AST" for archive function
+6 ; Output -- SCRESULT (#=Error number | 0=No Error)^Message
+7 ;
+8 NEW SCENDT,SCERRMSG,SCERRNB,SCSTDT
+9 ;
+10 SET SCERRNB=0
+11 ;
+12 SET SCSTDT=$GET(SC("STARTDT"))
+13 SET SCENDT=$GET(SC("ENDDT"))
+14 ;
+15 ;Check if start date or end date not defined
+16 IF 'SCSTDT
IF 'SCENDT
Begin DoDot:1
+17 SET SCERRNB=4049006.005
+18 DO GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG)
End DoDot:1
+19 ;
+20 ;Verify date range
+21 IF 'SCERRNB
SET SCERRNB=$$VERDT^SCCVU2(SCSTDT,SCENDT,"",.SCERRMSG)
+22 ;
+23 SET SCRESULT=SCERRNB
+24 IF SCERRNB
SET SCRESULT=SCRESULT_U_$$BLDSTR(.SCERRMSG)
+25 ;
CHKDTQ QUIT
+1 ;
CHKDUP(SCRESULT,SC,SCCVT) ; -- Check duplicate log entries
+1 ; Input -- SC Array:
+2 ; SC("TYPE") Conversion type
+3 ; ("STARTDT") Start date
+4 ; ("ENDDT") End date
+5 ; ("TEMPLNO") Template number ien
+6 ; -- SCCVT "CST" for convert function
+7 ; "AST" for archive function
+8 ; Output -- SCRESULT (#=Error number | 0=No Error)^Message
+9 ;
+10 NEW SCCVTYP,SCENDT,SCERRMSG,SCERRNB,SCLOG,SCSTDT
+11 ;
+12 SET SCERRNB=0
+13 ;
+14 SET SCCVTYP=$GET(SC("TYPE"))
+15 SET SCSTDT=$GET(SC("STARTDT"))
+16 SET SCENDT=$GET(SC("ENDDT"))
+17 SET SCLOG=$GET(SC("TEMPLNO"))
+18 ;
+19 ;Check if type, date range and Template number ien are defined
+20 IF 'SCCVTYP!('SCSTDT)!('SCENDT)!('SCLOG)
Begin DoDot:1
+21 SET SCERRNB=4049006.002
+22 DO GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG)
End DoDot:1
+23 ;
+24 ;Check duplicate log entries
+25 IF 'SCERRNB
SET SCERRNB=$$CHKDUP^SCCVU2(SCCVTYP,SCSTDT,SCENDT,SCLOG,.SCERRMSG)
+26 ;
+27 SET SCRESULT=SCERRNB
+28 IF SCERRNB
SET SCRESULT=SCRESULT_U_$$BLDSTR(.SCERRMSG)
+29 ;
CHKDUPQ QUIT
+1 ;
PROCREQ(SCRESULT,SC) ; -- Process conversion/estimate request
+1 ; Input -- SC Array:
+2 ; SC("TEMPLNO") Template number ien
+3 ; ("REQNUM") Request number ien
+4 ; Output -- SCRESULT (#=Error number | 0=No Error)^Message
+5 ;
+6 NEW SCERRMSG,SCERRNB,SCLOG,SCREQ,SCREQACT,SCREQEVT
+7 SET SCERRNB=0
+8 ;
+9 SET SCLOG=$GET(SC("TEMPLNO"))
+10 SET SCREQ=$GET(SC("REQNUM"))
+11 ;
+12 ;Quit if Template number ien or request ien are not defined
+13 IF 'SCLOG!('SCREQ)
Begin DoDot:1
+14 SET SCERRNB=4049006.003
+15 DO GETERR^SCCVLOG1(SCERRNB,"","","",1,.SCERRMSG)
End DoDot:1
+16 ;
+17 SET SCRESULT=$SELECT('SCERRNB:0,1:SCERRNB_U_$$BLDSTR(.SCERRMSG))
+18 ;
+19 IF SCERRNB
GOTO PROCREQQ
+20 ;
+21 ; Set request action
+22 SET SCREQACT=$PIECE($GET(^SD(404.98,SCLOG,"R",SCREQ,0)),U,2)
+23 SET SCREQEVT=$PIECE($GET(^SD(404.98,SCLOG,"R",SCREQ,0)),U,3)
+24 ;
+25 ; Queue conversion request to start or re-start
+26 IF "^1^3^"[(U_SCREQACT_U)
Begin DoDot:1
+27 DO QUE^SCCVE(SCLOG,SCREQ)
+28 IF SCREQEVT
DO JOURNAL(SCLOG)
End DoDot:1
+29 ;
+30 ; Process conversion request to stop
+31 IF SCREQACT=2
DO STOP^SCCVE(SCLOG,SCREQ)
+32 ;
PROCREQQ QUIT
+1 ;
TASKSTA(SCRESULT,SCLOG) ; -- Retrieve task status description
+1 ; Input -- SCLOG Template number ien
+2 ; Output --
+3 ; SCRESULT (0^Task status description^status code or Error #^Message)
+4 ;
+5 NEW SCERRNB,SCTSKD,ZTCPU
+6 ;
+7 SET SCERRNB=0
+8 SET SCTSKD="Unknown"
+9 ;
+10 ;Quit if Template number ien is not defined
+11 IF '$GET(SCLOG)
Begin DoDot:1
+12 SET SCERRNB=4049006.004
+13 DO GETERR^SCCVLOG1(SCERRNB,"","","",0,.SCERRMSG)
End DoDot:1
GOTO TASKSTAQ
+14 ;
+15 ;Get task status description
+16 IF 'SCERRNB
Begin DoDot:1
+17 SET ZTSK=$PIECE($GET(^SD(404.98,SCLOG,1)),U,3)
SET ZTCPU=$PIECE($GET(^(1)),U,4)
+18 IF ZTSK
Begin DoDot:2
+19 DO STAT^%ZTLOAD
+20 SET SCTSKD=ZTSK(2)_U_ZTSK(1)
End DoDot:2
End DoDot:1
+21 ;
+22 SET SCRESULT=SCERRNB_U_SCTSKD
+23 ;
TASKSTAQ QUIT
+1 ;
BLDSTR(E) ; -- Build error message string
+1 ; Input -- E Error message array
+2 ; Output -- Error message string for display purposes
+3 NEW I,Y,STOP
+4 SET Y=""
+5 SET (I,STOP)=0
+6 FOR
SET I=$ORDER(E(I))
IF 'I
QUIT
Begin DoDot:1
+7 IF ($LENGTH(Y)+$LENGTH(E(I)))<240
SET Y=Y_" "_E(I)
QUIT
+8 SET STOP=1
End DoDot:1
IF STOP
QUIT
+9 QUIT $GET(Y)
DTOK(SC) ; -- Verify that date range is OK
+1 NEW SCERR,SCOK
+2 SET SCOK=1
+3 DO CHKDT(.SCERR,.SC)
+4 IF $GET(SCERR)
GOTO DTOKQ
+5 SET SC("TEMPLNO")=DA
SET SC("TYPE")=1
+6 DO CHKDUP(.SCERR,.SC,"CST")
+7 ;
DTOKQ ;
+1 IF +$GET(SCERR)
WRITE !!,*7,$PIECE(SCERR,U,2),!!
SET SCOK=0
+2 QUIT SCOK
+3 ;
CNVTSCH(SCLOG) ; -- Function determines if any convert was scheduled
+1 ; Returns 0 if none scheduled, 1 if any ever scheduled
+2 NEW SCSCH,Z
+3 SET SCSCH=0
+4 SET Z=0
FOR
SET Z=$ORDER(^SD(404.98,SCLOG,"R",Z))
IF 'Z
QUIT
IF $PIECE($GET(^(Z,0)),U,3)
SET SCSCH=1
QUIT
+5 QUIT SCSCH
+6 ;
JOURNAL(SCLOG) ; -- display journal message and global growth estimates
+1 NEW DIC,DR,DIQ,DA,SCDATA,SCTOT,FLD
+2 SET DIC="404.98"
SET DA=SCLOG
SET DR="207:211"
SET DIQ="SCDATA"
SET DIQ(0)="E"
+3 DO EN^DIQ1
+4 SET SCTOT=0
+5 FOR FLD=207:1:211
SET SCTOT=SCTOT+$GET(SCDATA(404.98,SCLOG,FLD,"E"))
+6 ;
+7 WRITE !
+8 WRITE !,">>> The estimated global growth profile for this template is the following:"
+9 WRITE !
+10 WRITE !,?10,"Global",?25,"Blocks",?40,"[Block Size: ",$$BLKSIZE^SCCVEGU1()," bytes]"
+11 WRITE !,?10,"---------",?25,"-----------"
+12 WRITE !,?10,"^SCE",?25,$JUSTIFY($FNUMBER($GET(SCDATA(404.98,SCLOG,207,"E")),","),11)
+13 WRITE !,?10,"^AUPNVSIT",?25,$JUSTIFY($FNUMBER($GET(SCDATA(404.98,SCLOG,208,"E")),","),11)
+14 WRITE !,?10,"^AUPNVPRV",?25,$JUSTIFY($FNUMBER($GET(SCDATA(404.98,SCLOG,209,"E")),","),11)
+15 WRITE !,?10,"^AUPNVPOV",?25,$JUSTIFY($FNUMBER($GET(SCDATA(404.98,SCLOG,210,"E")),","),11)
+16 WRITE !,?10,"^AUPNVCPT",?25,$JUSTIFY($FNUMBER($GET(SCDATA(404.98,SCLOG,211,"E")),","),11)
+17 WRITE !,?10,"---------",?25,"-----------"
+18 WRITE !,?10,"Total",?25,$JUSTIFY($FNUMBER(SCTOT,","),11)
+19 ;
+20 WRITE !
+21 WRITE !,">>> Please verify that enough global disk space and journal space"
+22 WRITE !," are available for these anticipated increases."
+23 WRITE !
+24 WRITE !,">>> Also, please verify that system backup is not scheduled to"
+25 WRITE !," run within the start and stop times of this conversion job."
+26 WRITE !
+27 DO PAUSE^SCCVU
+28 QUIT
+29 ;