| 1 | SCCVLOG ;ALB/RMO,TMP - CST/AST Log Utilities - Log Event; [ 04/05/95  8:39 AM ] | 
|---|
| 2 | ;;5.3;Scheduling;**211**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | UPDREC(SCLOG,SCIEN,SCCVT) ;Update CST/AST last entry and number of records | 
|---|
| 5 | ; Input  -- SCLOG    CST/AST log IEN | 
|---|
| 6 | ;           SCIEN    Last entry IEN | 
|---|
| 7 | ;           SCCVT    'AST' or 'CST' for type of template | 
|---|
| 8 | ; Output -- None | 
|---|
| 9 | N SCDATA,SCCVFL | 
|---|
| 10 | S SCCVFL=$S(SCCVT="CST":"404.98",1:"404.99") | 
|---|
| 11 | S SCDATA(1.01)=SCIEN ;last entry converted | 
|---|
| 12 | S SCDATA(1.02)=$G(SCTOT(1.02)) ;number of records converted | 
|---|
| 13 | S SCDATA(2.06)=$G(SCTOT(2.06)) ;number of records not converted | 
|---|
| 14 | I $D(^SD(SCCVFL,+SCLOG,0)) D UPD^SCCVDBU(SCCVFL,SCLOG,.SCDATA) | 
|---|
| 15 | Q | 
|---|
| 16 | ; | 
|---|
| 17 | UPD(SCCVT,SCLOG,SCSTDT,SCENDT,SCOMBUL,SCTSK,SCVOL,SCACT) ;Update CST or AST log entry | 
|---|
| 18 | ; Input  -- SCCVT    'AST' or 'CST' for type of template | 
|---|
| 19 | ;           SCLOG    CST or AST log IEN | 
|---|
| 20 | ;           SCSTDT   Start date               [optional] | 
|---|
| 21 | ;           SCENDT   End date                 [optional] | 
|---|
| 22 | ;           SCOMBUL  Bulletin upon completion [optional] | 
|---|
| 23 | ;           SCTSK    Task #                   [optional] | 
|---|
| 24 | ;           SCVOL    Volume set               [optional] | 
|---|
| 25 | ;           SCACT    Action                   [optional] | 
|---|
| 26 | ; Output -- None | 
|---|
| 27 | N SCDATA,SCCVFL | 
|---|
| 28 | S SCCVFL=$S(SCCVT="CST":"404.98",1:"404.99") | 
|---|
| 29 | I $G(SCACT) D HIS($$NOW^XLFDT,SCLOG,SCACT,"",SCCVFL,$G(SCTSK)) | 
|---|
| 30 | S:$G(SCSTDT) SCDATA(.03)=SCSTDT ;start date | 
|---|
| 31 | S:$G(SCENDT) SCDATA(.04)=SCENDT ;end date | 
|---|
| 32 | S:$G(SCOMBUL)'="" SCDATA(.06)=SCOMBUL ;bulletin upon completion | 
|---|
| 33 | I $G(SCACT)=2,$P($G(^SD(SCCVFL,SCLOG,0)),U,8)'=3 D  ;initialize fields when starting, but not on a restart | 
|---|
| 34 | . S SCDATA(1.01)="@" ;last entry | 
|---|
| 35 | . S SCDATA(1.02)=0 ;number of records | 
|---|
| 36 | . S SCDATA(2.06)=0 ;number of records | 
|---|
| 37 | S:$G(SCTSK)'="" SCDATA(1.03)=SCTSK ;task # | 
|---|
| 38 | S:$G(SCVOL)'="" SCDATA(1.04)=SCVOL ;volume set | 
|---|
| 39 | I $D(SCDATA) D UPD^SCCVDBU(SCCVFL,SCLOG,.SCDATA) | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | HIS(SCEVDTM,SCLOG,SCACT,SCCVEVT,SCCVFL,SCTSK) ; CST/AST Log history | 
|---|
| 43 | ; Input  -- SCEVDTM  Event date/time | 
|---|
| 44 | ;           SCLOG    CST/AST log IEN | 
|---|
| 45 | ;           SCACT    Action | 
|---|
| 46 | ;           SCCVEVT  Last log status | 
|---|
| 47 | ;           SCCVFL   'AST' or 'CST' file # (404.98 or 404.99) | 
|---|
| 48 | ;           SCTSK    task # [optional] | 
|---|
| 49 | ; Output -- None | 
|---|
| 50 | N C,SCACTD,SCCVEVTD,SCDATA,SCHIS,SCIENS,SCLOG0,Y | 
|---|
| 51 | S SCHIS=+$O(^SD(SCCVFL,SCLOG,"E","AEV",SCEVDTM,SCACT,0)) | 
|---|
| 52 | G HISQ:SCHIS | 
|---|
| 53 | S SCIENS="+1,"_SCLOG | 
|---|
| 54 | S SCDATA(.01)=SCEVDTM ;event date/time | 
|---|
| 55 | S SCDATA(.02)=$S(SCCVEVT'=3:SCACT,1:7) ;action | 
|---|
| 56 | S SCLOG0=$G(^SD(SCCVFL,SCLOG,0)) | 
|---|
| 57 | S:$G(SCCVEVT)="" SCCVEVT=$S('$P(SCLOG0,U,9):$P(SCLOG0,U,5),1:3) | 
|---|
| 58 | S:$G(SCCVEVT)'="" SCDATA(.03)=SCCVEVT ;event | 
|---|
| 59 | IF '$G(SCTSK) N SCTSK S SCTSK=$P($G(^SD(SCCVFL,SCLOG,1)),U,3) ;task number | 
|---|
| 60 | I SCTSK D  ;task comment | 
|---|
| 61 | . S SCACTD=$$LOW^XLFSTR($$EXPAND^SCCVDSP2(SCCVFL_"75",.02,SCACT)) | 
|---|
| 62 | . I $G(SCCVEVT)'="",SCCVEVT<3 D | 
|---|
| 63 | . . S Y=$$EXPAND^SCCVDSP2(SCCVFL_"75",.03,SCCVEVT) | 
|---|
| 64 | . . S SCCVEVTD=$E(Y,1)_$$LOW^XLFSTR($E(Y,2,$L(Y))) | 
|---|
| 65 | . S:$G(SCCVEVT)<3 SCDATA(50,"WP",1)=SCCVEVTD_" "_SCACTD_" as task #"_SCTSK | 
|---|
| 66 | . S:$G(SCCVEVT)=3 SCDATA(50,"WP",1)="Template canceled by user #: "_$G(DUZ) | 
|---|
| 67 | . S SCDATA(50)=$NA(SCDATA(50,"WP")) | 
|---|
| 68 | D ADD^SCCVDBU(SCCVFL_"75",SCIENS,.SCDATA) | 
|---|
| 69 | I SCCVFL=404.98,"^3^5^"[(U_SCACT_U) D | 
|---|
| 70 | . ;Update file with estimate totals | 
|---|
| 71 | . I 'SCCVEVT,SCACT=5,$O(SCTOT(0)) D UPDTOTL^SCCVEGU1(SCLOG,.SCTOT) | 
|---|
| 72 | . ; | 
|---|
| 73 | . I $P($G(^SD(404.98,SCLOG,0)),U,6) D  ;send bulletin | 
|---|
| 74 | . . I SCCVEVT D  ;convert if complete or stopped | 
|---|
| 75 | . . . D SEND^SCCVLOG2(SCLOG,SCACT) | 
|---|
| 76 | . . ELSE  I SCACT=5 D  ;estimate only when complete | 
|---|
| 77 | . . . D MAILSUM^SCCVEGD0(SCLOG) | 
|---|
| 78 | HISQ Q | 
|---|
| 79 | ; | 
|---|
| 80 | CHKACT(SCLOG,SCCVEVT,SCACT,SCCVT) ;Check log entry action for a specific log event | 
|---|
| 81 | ; Input  -- SCLOG    CST/AST log IEN | 
|---|
| 82 | ;           SCCVEVT  CST/AST event | 
|---|
| 83 | ;           SCACT    Action | 
|---|
| 84 | ;           SCCVT    'AST' or 'CST' for type of template | 
|---|
| 85 | ; Output -- 1=Found and 0=Not Found | 
|---|
| 86 | N A,D,E,Y,SCCVFL | 
|---|
| 87 | S (D,Y)=0 | 
|---|
| 88 | S SCCVFL=$S(SCCVT="CST":"404.98",1:"404.99") | 
|---|
| 89 | F  S D=$O(^SD(SCCVFL,SCLOG,"E","AEV",D)) Q:'D!(Y)  D | 
|---|
| 90 | . S E="" | 
|---|
| 91 | . F E=$O(^SD(SCCVFL,SCLOG,"E","AEV",D,E)) Q:E=""!(Y)  I E=SCCVEVT D | 
|---|
| 92 | . . S A=0 | 
|---|
| 93 | . . F  S A=$O(^SD(SCCVFL,SCLOG,"E","AEV",D,E,A)) Q:'A!(Y)  I A=SCACT S Y=1 | 
|---|
| 94 | Q +$G(Y) | 
|---|
| 95 | ; | 
|---|
| 96 | STOP(SCLOG,SCREQ,SCSTOPF) ;Stop conversion/estimate | 
|---|
| 97 | ; Input  -- SCLOG    CST log IEN | 
|---|
| 98 | ;           SCREQ    CST request IEN | 
|---|
| 99 | ;           SCSTOPF  Force exit [optional] | 
|---|
| 100 | ; Output -- SCSTOPF  1=Stopped and 0=Not stopped | 
|---|
| 101 | N SCREQ0,SCLOG1,SCFORCEX | 
|---|
| 102 | ; | 
|---|
| 103 | ; -- force exit if calling routine says to | 
|---|
| 104 | S SCFORCEX=+$G(SCSTOPF) | 
|---|
| 105 | ; | 
|---|
| 106 | ; -- force exit if too many errors have occurred | 
|---|
| 107 | IF 'SCFORCEX,$G(SCCVMAXE),$G(SCCVERRH)>SCCVMAXE S SCFORCEX=1 | 
|---|
| 108 | ; | 
|---|
| 109 | S SCSTOPF=0 | 
|---|
| 110 | ; | 
|---|
| 111 | I +$$LSTACT(SCLOG)=5 G STOPQ ;already completed | 
|---|
| 112 | S SCREQ0=$G(^SD(404.98,SCLOG,"R",SCREQ,0)) | 
|---|
| 113 | S SCLOG1=$G(^SD(404.98,SCLOG,1)) | 
|---|
| 114 | I $S(SCFORCEX:1,$$S^%ZTLOAD:1,$P(SCREQ0,U,2)=2:1,$P(SCREQ0,U,5):$P(SCREQ0,U,5)<$$NOW^XLFDT,1:0) D | 
|---|
| 115 | . D UPD("CST",SCLOG,"","","","@","@",3) | 
|---|
| 116 | . ; | 
|---|
| 117 | I +$$LSTACT(SCLOG)=3 D | 
|---|
| 118 | . S SCSTOPF=1 | 
|---|
| 119 | . ; | 
|---|
| 120 | . ; stopping a running task | 
|---|
| 121 | . I $D(ZTQUEUED) S ZTSTOP=1 Q | 
|---|
| 122 | . ; | 
|---|
| 123 | . ; -- kill/stop a pending task | 
|---|
| 124 | . N ZTSK | 
|---|
| 125 | . S ZTSK=$P(SCLOG1,U,3) | 
|---|
| 126 | . ; -- get status | 
|---|
| 127 | . IF ZTSK]"" D ISQED^%ZTLOAD | 
|---|
| 128 | . ; -- kill task if task is pending | 
|---|
| 129 | . IF $G(ZTSK(0)) D KILL^%ZTLOAD | 
|---|
| 130 | . ; | 
|---|
| 131 | STOPQ Q | 
|---|
| 132 | ; | 
|---|
| 133 | LSTACT(SCLOG) ;Last action taken on CST log entry | 
|---|
| 134 | ; Input  -- SCLOG    CST log IEN | 
|---|
| 135 | ; Output -- Action^Description | 
|---|
| 136 | N SCACT,Y | 
|---|
| 137 | S SCACT=$P($G(^SD(404.98,SCLOG,0)),U,7) | 
|---|
| 138 | I $G(SCACT) S Y=SCACT_U_$$EXPAND^SCCVDSP2(404.9875,.02,SCACT) | 
|---|
| 139 | Q $G(Y) | 
|---|
| 140 | ; | 
|---|
| 141 | LSTEVT(SCLOG) ;Last event performed on CST log entry | 
|---|
| 142 | ; Input  -- SCLOG    CST log IEN | 
|---|
| 143 | ; Output -- event | 
|---|
| 144 | N SCEVT | 
|---|
| 145 | S SCEVT=$P($G(^SD(404.98,SCLOG,0)),U,5) | 
|---|
| 146 | Q SCEVT | 
|---|
| 147 | ; | 
|---|
| 148 | LSTREQ(SCLOG) ;Returns the # of the last request for a CST | 
|---|
| 149 | ; Input  -- SCLOG    CST log IEN | 
|---|
| 150 | ; Output -- Last request ien | 
|---|
| 151 | ; | 
|---|
| 152 | Q +$O(^SD(404.98,SCLOG,"R","A"),-1) | 
|---|
| 153 | ; | 
|---|