| 1 | KMPSUTL1        ;OAK/KAK - SAGG Utilities ;5/1/07  10:30 | 
|---|
| 2 | ;;2.0;SAGG;;Jul 02, 2007 | 
|---|
| 3 | ; | 
|---|
| 4 | MPLTF() ;-- returns the type of M platform | 
|---|
| 5 | ;--------------------------------------------------------------------- | 
|---|
| 6 | ; Returns:  CVMS   for Cache for OpenVMS platform | 
|---|
| 7 | ;           CWINNT for Cache for Windows NT platform | 
|---|
| 8 | ;--------------------------------------------------------------------- | 
|---|
| 9 | ; | 
|---|
| 10 | N MPLTF,ZV | 
|---|
| 11 | ; | 
|---|
| 12 | S ZV=$ZV | 
|---|
| 13 | S MPLTF=$S(ZV["VMS":"CVMS",ZV["Windows":"CWINNT",1:"UNK") | 
|---|
| 14 | Q MPLTF | 
|---|
| 15 | ; | 
|---|
| 16 | TSKSTAT(OPT)       ;-- status of scheduled task option | 
|---|
| 17 | ;--------------------------------------------------------------------- | 
|---|
| 18 | ; input  OPT = option name | 
|---|
| 19 | ; output RTN = status code^literal condition | 
|---|
| 20 | ;              ...^scheduled date@time (day)^numeric day-of-week | 
|---|
| 21 | ;              ...^expanded scheduled frequency^short form frequency | 
|---|
| 22 | ;              ...^task id^queued by^user status | 
|---|
| 23 | ; | 
|---|
| 24 | ; where status code^condition: | 
|---|
| 25 | ;            = 0^SCHEDULED | 
|---|
| 26 | ;            = 1^NOT SCHEDULED and 'scheduled date@time' will | 
|---|
| 27 | ;                   be UNKNOWN and 'numeric day of week' will be -1 | 
|---|
| 28 | ;            = 2^NOT RESCHEDULED | 
|---|
| 29 | ;            = 3^MISSING when OPT does not exist | 
|---|
| 30 | ;            = 9^UNKNOWN | 
|---|
| 31 | ; | 
|---|
| 32 | ; where user status = ACTIVE or NOT ACTIVE | 
|---|
| 33 | ;--------------------------------------------------------------------- | 
|---|
| 34 | ; | 
|---|
| 35 | N ACTV,DA,DAY,DOW,FREQ,RTN,TSK,TSKINFO,USER,Y | 
|---|
| 36 | ; | 
|---|
| 37 | S (DOW,FREQ)=-1 | 
|---|
| 38 | S RTN="9^UNKNOWN^NO DATE^-1^UNKNOWN^^^UNKNOWN^NOT ACTIVE" | 
|---|
| 39 | ; | 
|---|
| 40 | I '$D(^DIC(19,"B",OPT)) S $P(RTN,U,1,2)="3^MISSING" Q RTN | 
|---|
| 41 | S DA=$O(^DIC(19,"B",OPT,0)),DA=+$O(^DIC(19.2,"B",DA,0)) | 
|---|
| 42 | S TSKINFO=$G(^DIC(19.2,DA,0)),(DOW,Y)=$P(TSKINFO,U,2),FREQ=$P(TSKINFO,U,6) | 
|---|
| 43 | S:+Y $P(TSKINFO,U,2)=$$FMTE^XLFDT(Y) | 
|---|
| 44 | I DOW'="" S DAY=$$DOW^XLFDT(DOW),DOW=$$DOW^XLFDT(DOW,1) | 
|---|
| 45 | S TSK=+$G(^DIC(19.2,+DA,1)) | 
|---|
| 46 | I (DOW="")!(TSK="") S $P(RTN,U,1,2)="1^NOT SCHEDULED" | 
|---|
| 47 | E  D | 
|---|
| 48 | .S $P(RTN,U,1,2)="0^SCHEDULED" | 
|---|
| 49 | .I FREQ="" S $P(RTN,U,1,2)="2^NOT RESCHEDULED" | 
|---|
| 50 | .; queued to run at | 
|---|
| 51 | .S $P(RTN,U,3,4)=$S($P(TSKINFO,U,2)="":"NO DATE",1:$P(TSKINFO,U,2))_$S($D(DAY):" ("_DAY_")",1:"")_U_DOW | 
|---|
| 52 | ; rescheduling frequency | 
|---|
| 53 | I FREQ?1.3N1A D | 
|---|
| 54 | .S $P(RTN,U,5,6)=+FREQ_" "_$S(FREQ["D":"day",FREQ["M":"month",1:FREQ)_$S(+FREQ>1:"s",1:"")_U_FREQ | 
|---|
| 55 | E  S $P(RTN,U,5,6)=$S(FREQ="":"UNKNOWN",1:FREQ)_U_FREQ | 
|---|
| 56 | ; task id | 
|---|
| 57 | S $P(RTN,U,7)=TSK | 
|---|
| 58 | ; find if the user is active | 
|---|
| 59 | I TSK D | 
|---|
| 60 | .S TSKINFO=$G(^%ZTSK(TSK,0)) | 
|---|
| 61 | .S USER=+$P(TSKINFO,U,3) | 
|---|
| 62 | .S ACTV=+$$ACTIVE^XUSER(USER) | 
|---|
| 63 | .; queued by | 
|---|
| 64 | .S $P(RTN,U,8)=$P($G(^VA(200,USER,0)),U) | 
|---|
| 65 | I $G(ACTV) S $P(RTN,U,9)="ACTIVE" | 
|---|
| 66 | Q RTN | 
|---|