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
|
---|