| 1 | ORMTIME ; SLC/RJS - PROCESS TIME BASED EVENT ;9/29/99  09:35 [2/1/00 9:30am]
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**40,253**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN ; Main entry tag.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  N OCXPSDT,OCXZTSK,OCXERR,OCXORMTR,OCXSTDT,OCXLOCK,OCXPAR
 | 
|---|
| 7 |  K ^TMP("OCXORMTIME",$J)
 | 
|---|
| 8 |  S OCXLOCK=0
 | 
|---|
| 9 |  S OCXORMTR="ORMTIME: Startup"
 | 
|---|
| 10 |  S OCXSTDT=$$EDATE($$IDATE("NOW"))
 | 
|---|
| 11 |  S ^TMP("OCXORMTIME",$J,"STATUS")="ORMTIME: Attempting to lock ^OR(100,""AE"") at "_OCXSTDT_"."
 | 
|---|
| 12 |  L +^OR(100,"AE"):10
 | 
|---|
| 13 |  I  D
 | 
|---|
| 14 |  .S OCXLOCK=1
 | 
|---|
| 15 |  .D SCAN
 | 
|---|
| 16 |  .L -^OR(100,"AE")
 | 
|---|
| 17 |  .K ^TMP("OCXORMTIME")
 | 
|---|
| 18 |  .S OCXPAR=$$IDATE2("NOW")
 | 
|---|
| 19 |  .D PUT^XPAR("SYS","ORM ORMTIME LAST RUN",1,OCXPAR,.OCXERR)
 | 
|---|
| 20 |  S:'OCXLOCK ^TMP("OCXORMTIME",$J,"STATUS")="ORMTIME: Unable to lock ^OR(100,""AE"") at "_OCXSTDT_" attempt."
 | 
|---|
| 21 |  Q
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | SCAN ; Call ORMTIM01 for order checking, etc.  ORMTIM02 for misc time based tasks
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  D SCAN^ORMTIM01
 | 
|---|
| 26 |  D MISC^ORMTIM02
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | EDATE(Y) X ^DD("DD") S:(Y["@") Y=$P(Y,"@",1)_" at "_$P(Y,"@",2) Q Y
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | IDATE(X) N %DT,Y S %DT="F" D ^%DT Q Y
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | IDATE2(X) N %DT,Y S %DT="TF" D ^%DT Q Y
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 | REQUEUE(ORMQT) ; Code formerly queued ORMTIME tasks in Taskman.
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ; (This tag kept for compatibility with outside calls.)
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | STATUS ; Check status of last ORMTIME run. 
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  N ORMLAST
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; Get date/time of last ORMTIME run:
 | 
|---|
| 46 |  S ORMLAST=$$GET^XPAR("SYS","ORM ORMTIME LAST RUN",1,"I")
 | 
|---|
| 47 |  S ORMLAST=$$EDATE(ORMLAST) ; Convert to external format for display.
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ; Present information to user:
 | 
|---|
| 50 |  W !
 | 
|---|
| 51 |  W !,"     ORMTIME last ran "_ORMLAST_"."
 | 
|---|
| 52 |  W !
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | BULL ; Send a bulletin if ORMTIME's last run is greater than 24 hours.
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  N DIC,ORMMSG,X,XMSUB,XMTEXT,XMY,XMZ,Y,ORMLAST
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ; Don't send bulletin if ORMTIME STATUS mail group does not exist:
 | 
|---|
| 61 |  S DIC=3.8,DIC(0)="",X="ORMTIME STATUS"
 | 
|---|
| 62 |  D ^DIC Q:(+Y<0)
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  S ORMLAST=$$GET^XPAR("SYS","ORM ORMTIME LAST RUN",1,"I")
 | 
|---|
| 65 |  I $$FMDIFF^XLFDT($$IDATE2("NOW"),ORMLAST,2)>86400  D
 | 
|---|
| 66 |  .S XMY("G.ORMTIME STATUS")=""
 | 
|---|
| 67 |  .S XMSUB=" ORMTIME Warning"
 | 
|---|
| 68 |  .S ORMMSG(1,0)=" "
 | 
|---|
| 69 |  .S ORMMSG(2,0)="    The ORMTIME process last ran more than 24 hours ago. "
 | 
|---|
| 70 |  .S ORMMSG(3,0)=" "
 | 
|---|
| 71 |  .S ORMMSG(4,0)=" The ORMTIME background job handles activating and expiring orders,"
 | 
|---|
| 72 |  .S ORMMSG(5,0)=" some time based notifications, as well as purging of temporary CPRS"
 | 
|---|
| 73 |  .S ORMMSG(6,0)=" data. It is important that it runs regularly."
 | 
|---|
| 74 |  .S ORMMSG(7,0)=" "
 | 
|---|
| 75 |  .S ORMMSG(8,0)="    Assure that the scheduled option, ORMTIME RUN, is correctly implemented."
 | 
|---|
| 76 |  .S ORMMSG(9,0)=" "
 | 
|---|
| 77 |  .S XMTEXT="ORMMSG("
 | 
|---|
| 78 |  .D ^XMD
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|