| 1 | HLCSUTL2 ;ALB/JRP - COMMUNICATION SERVER UTILITIES;15-MAY-95 ;11/06/2000 06:39
|
---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**18,28,62**;Oct 13, 1995
|
---|
| 3 | CHK4STOP(PTRSUB,FLRTYPE,HLEXIT) ;DETERMINE IF FILER SHOULD STOP
|
---|
| 4 | ;INPUT : PTRSUB - Pointer to incoming or outgoing filer subentry
|
---|
| 5 | ; FLRTYPE - Indicates type of filer
|
---|
| 6 | ; IN = Incoming (default)
|
---|
| 7 | ; OUT = Outgoing
|
---|
| 8 | ; HLEXIT - =0 (must be set by calling routine)
|
---|
| 9 | ; HLEXIT("LASTCHK") - The last time the check was done. (Set by
|
---|
| 10 | ; this routine for input to the next call to this routine
|
---|
| 11 | ;OUTPUT : HLEXIT - Indicates whether Filer/task has been asked to stop
|
---|
| 12 | ; 0 = no; 1 = yes
|
---|
| 13 | ; HLEXIT("LASTCHK") - The last time the check was done.
|
---|
| 14 | ;NOTES : This checks the STOP FILER field (#.02) of the INCOMING
|
---|
| 15 | ; FILER TASK NUMBER and OUTGOING FILER TASK NUMBER multiples
|
---|
| 16 | ; (fields 20 & 30) of the HL COMMUNICATION SERVER PARAMETER
|
---|
| 17 | ; file (#869.3). If this field is set to YES, the filer
|
---|
| 18 | ; has been asked to stop. After checking this, TaskMan
|
---|
| 19 | ; will be asked if the task has been asked to stop [by
|
---|
| 20 | ; calling $$S^%ZTLOAD].
|
---|
| 21 | ; : FileMan is not used when determining if the STOP FILER field
|
---|
| 22 | ; has been set to YES
|
---|
| 23 | Q:$$HDIFF^XLFDT($H,$G(HLEXIT("LASTCHK")),2)<60
|
---|
| 24 | ;Check input
|
---|
| 25 | S PTRSUB=+$G(PTRSUB)
|
---|
| 26 | S FLRTYPE=$G(FLRTYPE)
|
---|
| 27 | ;Declare variables
|
---|
| 28 | N PTRMAIN,NODE
|
---|
| 29 | S NODE=$S(FLRTYPE="OUT":3,1:2)
|
---|
| 30 | ;Get entry in parameter file
|
---|
| 31 | S PTRMAIN=+$O(^HLCS(869.3,0))
|
---|
| 32 | I PTRMAIN D Q:HLEXIT
|
---|
| 33 | .;Lock/unlock zero node of multiple - force buffer update
|
---|
| 34 | .L +^HLCS(869.3,PTRMAIN,NODE,0):1
|
---|
| 35 | .L -^HLCS(869.3,PTRMAIN,NODE,0)
|
---|
| 36 | .;If subentry doesn't exist, filer won't die off
|
---|
| 37 | .I '$D(^HLCS(869.3,PTRMAIN,NODE,PTRSUB)) S HLEXIT=1 Q
|
---|
| 38 | .N NODE1
|
---|
| 39 | .;Get subentry zero node
|
---|
| 40 | .S NODE1=$G(^HLCS(869.3,PTRMAIN,NODE,PTRSUB,0))
|
---|
| 41 | .I NODE1="" S HLEXIT=1 Q
|
---|
| 42 | .;no record of task
|
---|
| 43 | .I $P(NODE1,"^")="" S HLEXIT=1 Q
|
---|
| 44 | .;STOP FILER field is piece 2
|
---|
| 45 | .I +$P(NODE1,"^",2) S HLEXIT=1
|
---|
| 46 | ;Filer asked to stop
|
---|
| 47 | ;Check if filer asked to stop via TaskMan
|
---|
| 48 | I +$$S^%ZTLOAD S HLEXIT=1
|
---|
| 49 | S HLEXIT("LASTCHK")=$H
|
---|
| 50 | Q
|
---|
| 51 | CNTFLR(FLRTYPE) ;RETURN NUMBER OF INCOMING/OUTGOING FILERS CURRENTLY RUNNING
|
---|
| 52 | ;INPUT : FLRTYPE - Indicates type of filer
|
---|
| 53 | ; IN = Incoming (default)
|
---|
| 54 | ; OUT = Outgoing
|
---|
| 55 | ;OUTPUT : X - Number of incoming/outgoing filers that are currently
|
---|
| 56 | ; running. This will typically be the number of entries
|
---|
| 57 | ; in the INCOMING FILER TASK NUMBER or OUTGOING FILER
|
---|
| 58 | ; TASK NUMBER multiples (fields 20 & 30) of the HL
|
---|
| 59 | ; COMMUNICATION SERVER PARAMETER file (#869.3). The
|
---|
| 60 | ; tasks associated with the entries will be checked to
|
---|
| 61 | ; determine if they have errored out - if so, they will
|
---|
| 62 | ; not be included in the count.
|
---|
| 63 | ; -1 - Error
|
---|
| 64 | ;
|
---|
| 65 | ;Check input
|
---|
| 66 | S FLRTYPE=$G(FLRTYPE)
|
---|
| 67 | ;Declare variables
|
---|
| 68 | N PTRMAIN,NODE,COUNT,PTRSUB,ZTSK
|
---|
| 69 | S NODE=$S(FLRTYPE="OUT":3,1:2)
|
---|
| 70 | ;Get entry in parameter file
|
---|
| 71 | S PTRMAIN=+$O(^HLCS(869.3,0))
|
---|
| 72 | Q:('PTRMAIN) -1
|
---|
| 73 | ;Lock/unlock zero node of multiple - force buffer update
|
---|
| 74 | L +^HLCS(869.3,PTRMAIN,NODE,0):1
|
---|
| 75 | L -^HLCS(869.3,PTRMAIN,NODE,0)
|
---|
| 76 | ;Count number of subentries
|
---|
| 77 | S PTRSUB=0
|
---|
| 78 | S COUNT=0
|
---|
| 79 | F S PTRSUB=+$O(^HLCS(869.3,PTRMAIN,NODE,PTRSUB)) Q:('PTRSUB) D
|
---|
| 80 | .;Get task number
|
---|
| 81 | .K ZTSK
|
---|
| 82 | .S ZTSK=+$G(^HLCS(869.3,PTRMAIN,NODE,PTRSUB,0))
|
---|
| 83 | .Q:('ZTSK)
|
---|
| 84 | .;Check status of task
|
---|
| 85 | .D STAT^%ZTLOAD
|
---|
| 86 | .;Task not defined, is inactive, or errored out
|
---|
| 87 | .Q:("12"'[ZTSK(1))
|
---|
| 88 | .;Increment count
|
---|
| 89 | .S COUNT=COUNT+1
|
---|
| 90 | Q COUNT
|
---|
| 91 | GETFLRS(FLRTYPE,ARRAY) ;RETURN LIST OF FILERS
|
---|
| 92 | ;INPUT : FLRTYPE - Indicates type of filer
|
---|
| 93 | ; IN = Incoming (default)
|
---|
| 94 | ; OUT = Outgoing
|
---|
| 95 | ; ARRAY - Array to return list of filers in (full global ref)
|
---|
| 96 | ;OUTPUT : ARRAY will have the following format
|
---|
| 97 | ; ARRAY(PtrSubEntry)=TaskNumber ^ LastKnown$H ^ Stop
|
---|
| 98 | ; PtrSubEntry - Pointer to subentry in HL COMMUNICATION
|
---|
| 99 | ; SERVER PARAMETER file (#869.3)
|
---|
| 100 | ; TaskNumber - Task number of filer
|
---|
| 101 | ; LastKnown$H - Value of LAST KNOWN $H (field #.03) for
|
---|
| 102 | ; subentry
|
---|
| 103 | ; Stop - Flag indicating if filer was asked to stop
|
---|
| 104 | ; (field #.02 for subentry)
|
---|
| 105 | ; 1 = YES
|
---|
| 106 | ; 0 = NO
|
---|
| 107 | ;NOTES : ARRAY will be initialized (KILLed) upon entry. If no
|
---|
| 108 | ; entries are found in ARRAY() then no filers are running.
|
---|
| 109 | ; : ARRAY() will not be defined on bad input
|
---|
| 110 | ;
|
---|
| 111 | ;Check input
|
---|
| 112 | Q:($G(ARRAY)="")
|
---|
| 113 | S FLRTYPE=$G(FLRTYPE)
|
---|
| 114 | ;Declare variables
|
---|
| 115 | N PTRMAIN,NODE,PTRSUB,ZERONODE,TASKNUM,LASTDH,STOP
|
---|
| 116 | S NODE=$S(FLRTYPE="OUT":3,1:2)
|
---|
| 117 | ;Initialize output array
|
---|
| 118 | K @ARRAY
|
---|
| 119 | ;Get entry in parameter file
|
---|
| 120 | S PTRMAIN=+$O(^HLCS(869.3,0))
|
---|
| 121 | Q:('PTRMAIN)
|
---|
| 122 | ;Lock/unlock zero node of multiple - force buffer update
|
---|
| 123 | L +^HLCS(869.3,PTRMAIN,NODE,0):1
|
---|
| 124 | L -^HLCS(869.3,PTRMAIN,NODE,0)
|
---|
| 125 | ;Get list of filers
|
---|
| 126 | S PTRSUB=0
|
---|
| 127 | F S PTRSUB=+$O(^HLCS(869.3,PTRMAIN,NODE,PTRSUB)) Q:('PTRSUB) D
|
---|
| 128 | .;Get filer information
|
---|
| 129 | .S ZERONODE=$G(^HLCS(869.3,PTRMAIN,NODE,PTRSUB,0))
|
---|
| 130 | .S TASKNUM=+ZERONODE
|
---|
| 131 | .S STOP=+$P(ZERONODE,"^",2)
|
---|
| 132 | .S LASTDH=$P(ZERONODE,"^",3)
|
---|
| 133 | .;Put info into output array
|
---|
| 134 | .S @ARRAY@(PTRSUB)=TASKNUM_"^"_LASTDH_"^"_STOP
|
---|
| 135 | Q
|
---|