Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: INHOTM1

INHOTM1.m

Go to the documentation of this file.
  1. INHOTM1(INBPN,INHSRVR) ;DGH,FRW ; 4 Mar 94 09:00; Output controller background processor - server [ 06/22/2001 2:31 PM ]
  1. ;;3.01;BHL IHS Interfaces with GIS;;July 1, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. EN ;Main entry point
  1. ;INPUT
  1. ; INHSRVR - server number
  1. ; INBPN - ien for output controller
  1. ;
  1. Q:'$G(INBPN)!'$G(INHSRVR)
  1. L +^INRHB("RUN","SRVR",INBPN,INHSRVR):5 E Q
  1. X $G(^INTHOS(1,2))
  1. Q:'$$RUN^INHOTM
  1. K INHER S X="ERROR^INHOTM1",@^%ZOSF("TRAP")
  1. S ^INRHB("RUN","SRVR",INBPN,INHSRVR)=$H
  1. ;***REPLACE WITH STANDARD CALL
  1. S U="^",DUZ=.5,DUZ(0)="@",IO=""
  1. S X=$$PRIO^INHB1 X:X ^%ZOSF("PRIORITY")
  1. ;Set up control variables
  1. S INHANG=$P($G(^INRHSITE(1,0)),U,4) S:'INHANG INHANG=10
  1. S INCUTOFF=$P($G(^INRHSITE(1,0)),U,15) S:'INCUTOFF INCUTOFF=99999
  1. S INHMWAIT=$P($G(^INRHSITE(1,2)),U,2) S:'INHMWAIT INHMWAIT=60
  1. ;
  1. S MODE=0,INHWAIT=-INHANG
  1. ;
  1. LOOP ;Loop through transactions in the server queue
  1. Q:'$$GETDEV
  1. S INHWAIT=INHWAIT+INHANG
  1. I '$$RUN^INHOTM!(INHWAIT>INHMWAIT) G HALT
  1. S ^INRHB("RUN","SRVR",INBPN,INHSRVR)=$H
  1. ;Get next transaction from queue
  1. L +^INLHSCH:3 E H INHANG G LOOP
  1. S DA=$$NEXTDA I 'DA L -^INLHSCH H INHANG G LOOP
  1. ;Determine how to process transaction
  1. S TYPE=$$TYPE^INHOTM(DA)_"^INHOTM",INHWAIT=0
  1. K ^INLHSCH(PRIO,H,DA),^INLHSCH("DEST",DEST,PRIO,DA)
  1. L -^INLHSCH
  1. ;Verify transaction is ok
  1. I 'TYPE D G LOOP
  1. . I 'DEST S MES="Transaction has no destination." D ENO^INHE("",DA,"",MES),ULOG^INHU(DA,"E",MES) K MES
  1. . I 'TYPE S MES="Destination has no method of processing." D ENO^INHE("",DA,DEST,MES),ULOG^INHU(DA,"E",MES) K MES
  1. . H INHANG
  1. ;Process transaction
  1. D @TYPE H INHANG G LOOP
  1. Q
  1. ;
  1. NEXTDA() ;Get next transaction off queue
  1. S DAY=+$H,TIME=$P($H,",",2),DA=""
  1. S P="" F S P=$O(^INLHSCH(P)) Q:(P'?1.NP)!(P>INCUTOFF)!DA D
  1. .S H=$O(^INLHSCH(P,"")) Q:H=""
  1. .S ND=+H,NT=$P(H,",",2) Q:ND>DAY!(NT>TIME&(ND=DAY))
  1. .S DA=$O(^INLHSCH(P,H,0)),PRIO=P Q:'DA
  1. Q +DA
  1. ;
  1. GETDEV() ;Perform device handling
  1. ;OUTPUT:
  1. ; function value - boolean flag
  1. ; 1 => ok , 0 => problems encountered
  1. ; DEV - $I of device (or NULL), device is open for use
  1. ;
  1. ;***NEEDS TO BE COMPLETED
  1. S DEV=""
  1. Q 1
  1. ;
  1. ERROR ;Error module for server
  1. S X="HALT^INHOTM1",@^%ZOSF("TRAP")
  1. X ^INTHOS(1,3)
  1. D ENR^INHE(INBPN,$S($D(INHER):INHER,1:$$ERRMSG^INHU1)) ;***CALL IS WRONG ENO^INHE
  1. ;*** SHOULD ALSO NOTE TRANSACTION IF DA EXISTS - MAY NOT BE CORRECT - MAY BE LAST DA PROCESSED
  1. ;
  1. HALT ;Halt process
  1. K ^INRHB("RUN","SRVR",INBPN,INHSRVR)
  1. L -^INRHB("RUN","SRVR",INBPN,INHSRVR)
  1. H
  1. ;