1 | HLCSFMN0 ;ALB/JRP - INCOMING/OUTGOING FILER MONITOR;19-MAY-95 ;10/15/99 06:57
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**15,57**;Oct 13, 1995
|
---|
3 | HEADER(FLRTYPE) ;Display column header
|
---|
4 | ;INPUT : FLRTYPE - Flag indicating type of filer header is for
|
---|
5 | ; IN = Incoming filer (default)
|
---|
6 | ; OUT = Outgoing filer
|
---|
7 | ; The following screen attributes:
|
---|
8 | ; IOELEOL, IOUON, IOUOFF
|
---|
9 | ;OUTPUT : None
|
---|
10 | ;NOTES : Existance of IOUON & IOUOFF is assumed
|
---|
11 | ; : Header begins on current line (i.e. calling application
|
---|
12 | ; must put cursor at beginning of line)
|
---|
13 | ; : Cursor will be put at the beginning of line after header
|
---|
14 | ; when completed
|
---|
15 | ;
|
---|
16 | ;Check input
|
---|
17 | N X S X=0 X ^%ZOSF("RM")
|
---|
18 | ;Turn off terminal line wrap
|
---|
19 | S FLRTYPE=$G(FLRTYPE)
|
---|
20 | N WHTESPCE,DASHES
|
---|
21 | ;Set whitespace between columns
|
---|
22 | S WHTESPCE=$J(" ",3)
|
---|
23 | ;Convert filer type to long format
|
---|
24 | S FLRTYPE=$S(FLRTYPE="OUT":"Outgoing",1:"Incoming")
|
---|
25 | ;Print column headers
|
---|
26 | W "Task Number of ",WHTESPCE,"Asked"
|
---|
27 | W IOELEOL,!
|
---|
28 | W IOUON,FLRTYPE," Filer ",IOUOFF,WHTESPCE
|
---|
29 | W IOUON,"To Stop",IOUOFF,WHTESPCE
|
---|
30 | W IOUON,"Last Known Date/Time",IOUOFF,WHTESPCE
|
---|
31 | W IOUON,"Time Difference",$J(" ",13),IOUOFF
|
---|
32 | W IOELEOL,!
|
---|
33 | ;Screen attributes have no value - print dashes
|
---|
34 | I ((IOUON'="")&(IOUOFF'="")) S X=IOM X ^%ZOSF("RM") QUIT
|
---|
35 | ;Turn terminal line wrap back on
|
---|
36 | ;Set longest set of dashes used
|
---|
37 | S DASHES=$TR($J(" ",28)," ","-")
|
---|
38 | ;Print dashes
|
---|
39 | W $E(DASHES,1,15),WHTESPCE,$E(DASHES,1,7),WHTESPCE
|
---|
40 | W $E(DASHES,1,20),WHTESPCE,DASHES
|
---|
41 | W IOELEOL,!
|
---|
42 | S X=IOM X ^%ZOSF("RM")
|
---|
43 | ;Turn terminal line wrap back on
|
---|
44 | Q
|
---|
45 | PROMPT() ;Prompt user for action and execute the selected action
|
---|
46 | ;INPUT : INFILER(PtrSubEntry) = TaskNumber ^ Last$H ^ StopFlag ^
|
---|
47 | ; Printable$H ^ ErrorMessage
|
---|
48 | ; OUTFILER(PtrSubEntry) = TaskNumber ^ Last$H ^ StopFlag ^
|
---|
49 | ; Printable$H ^ ErrorMessage
|
---|
50 | ; PtrSubEntry = Pointer to subentry in file 869.3
|
---|
51 | ; TaskNumber = Task number of filer
|
---|
52 | ; Last$H = Last known $H (field #.03 of subentry)
|
---|
53 | ; StopFlag = Whether or not filer has been asked to stop
|
---|
54 | ; (field #.02 of subentry)
|
---|
55 | ; Yes - Filer has been asked to stop
|
---|
56 | ; No - Filer has not been asked to stop
|
---|
57 | ; Error - Task stopped due to error
|
---|
58 | ; Printable$H = Last$H in printable format
|
---|
59 | ; ErrorMessage = Printable error message - only used when
|
---|
60 | ; task stopped due to error
|
---|
61 | ; INTOP = Pointer to first incoming filer in list to display
|
---|
62 | ; OUTTOP = Pointer to first outgoing filer in list to display
|
---|
63 | ; The following screen attributes
|
---|
64 | ; IOINORM, IOINHI, IOELEOL
|
---|
65 | ;OUTPUT : 0 = User didn't choose to quit
|
---|
66 | ; 1 = User choose to quit
|
---|
67 | ; INTOP & OUTTOP will be adjusted accordingly
|
---|
68 | ; NEXT action - INTOP & OUTTOP will be moved down 4 entries
|
---|
69 | ; in the list. If the end of a list is
|
---|
70 | ; reached, INTOP/OUTTOP will be set to the
|
---|
71 | ; last entry in the list.
|
---|
72 | ; BACKUP action - INTOP & OUTTOP will be moved up 4 entries
|
---|
73 | ; in the list. If the top of a list is
|
---|
74 | ; reached, INTOP/OUTTOP will be set to the
|
---|
75 | ; first entry in the list.
|
---|
76 | ; START actions - INTOP & OUTTOP will not be changed
|
---|
77 | ; STOP actions - INTOP & OUTTOP will not be changed
|
---|
78 | ; DELETE actions - INTOP & OUTTOP will not be changed
|
---|
79 | ;NOTES : Prompt will be displayed at current cursor position
|
---|
80 | ; : All input is assumed
|
---|
81 | ; : When the STOP action is choosen, the first filer in the
|
---|
82 | ; list of filers will be stopped
|
---|
83 | ;
|
---|
84 | ;Declare variables
|
---|
85 | N ANS,ANS1,LOOP,TMP,ARRAYREF,TMPARR,NEWTOP
|
---|
86 | ;Turn off terminal line wrap
|
---|
87 | N X S X=0 X ^%ZOSF("RM")
|
---|
88 | ;Display prompt
|
---|
89 | W "(",IOINHI,"+I",IOINORM,") Start incoming filer "
|
---|
90 | W "(",IOINHI,"-I",IOINORM,") Stop incoming filer "
|
---|
91 | W "(",IOINHI,"*I",IOINORM,") Delete incoming filer"
|
---|
92 | W IOELEOL,!
|
---|
93 | W "(",IOINHI,"+O",IOINORM,") Start outgoing filer "
|
---|
94 | W "(",IOINHI,"-O",IOINORM,") Stop outgoing filer "
|
---|
95 | W "(",IOINHI,"*O",IOINORM,") Delete outgoing filer"
|
---|
96 | W IOELEOL,!
|
---|
97 | W " (",IOINHI,"N",IOINORM,") Next 4 lines in list "
|
---|
98 | W " (",IOINHI,"B",IOINORM,") Back 4 lines in list "
|
---|
99 | W " (",IOINHI,"Q",IOINORM,") Quit"
|
---|
100 | W IOELEOL,!
|
---|
101 | W "Type selection: ",IOELEOL
|
---|
102 | ;Get users response
|
---|
103 | R ANS#1:5 Q:('$T) 0
|
---|
104 | ;User hit <RET>
|
---|
105 | Q:(ANS="") 0
|
---|
106 | ;User choose to quit
|
---|
107 | I ("Qq^"[ANS) D Q 1
|
---|
108 | .;Echo rest of response
|
---|
109 | .W:(ANS="Q") "UIT"
|
---|
110 | .W:(ANS="q") "uit"
|
---|
111 | .W:(ANS="^") " QUIT"
|
---|
112 | .H 1
|
---|
113 | ;NEXT action
|
---|
114 | I ("Nn"[ANS) D Q 0
|
---|
115 | .;Echo rest of response
|
---|
116 | .W:(ANS="N") "EXT"
|
---|
117 | .W:(ANS="n") "ext"
|
---|
118 | .H 1
|
---|
119 | .F ARRAYREF="INFILER","OUTFILER" D
|
---|
120 | ..;Move down 4 entries in list
|
---|
121 | ..S NEWTOP=$S(ARRAYREF="INFILER":INTOP,1:OUTTOP)
|
---|
122 | ..F LOOP=1:1:4 S NEWTOP=+$O(@ARRAYREF@(NEWTOP)) Q:('NEWTOP)
|
---|
123 | ..;Went past bottom of list - set to last entry in list
|
---|
124 | ..I ('NEWTOP) S NEWTOP="" S NEWTOP=+$O(@ARRAYREF@(NEWTOP),-1)
|
---|
125 | ..;Save new value into appropriate variable
|
---|
126 | ..S:(ARRAYREF="INFILER") INTOP=NEWTOP
|
---|
127 | ..S:(ARRAYREF="OUTFILER") OUTTOP=NEWTOP
|
---|
128 | ;BACKUP action
|
---|
129 | I ("Bb"[ANS) D Q 0
|
---|
130 | .;Echo rest of response
|
---|
131 | .W:(ANS="B") "ACKUP"
|
---|
132 | .W:(ANS="b") "ackup"
|
---|
133 | .H 1
|
---|
134 | .F ARRAYREF="INFILER","OUTFILER" D
|
---|
135 | ..;Move up 4 entries in list
|
---|
136 | ..S NEWTOP=$S(ARRAYREF="INFILER":INTOP,1:OUTTOP)
|
---|
137 | ..F LOOP=1:1:4 S NEWTOP=+$O(@ARRAYREF@(NEWTOP),-1) Q:('NEWTOP)
|
---|
138 | ..;Went past top of list - set to first entry in list
|
---|
139 | ..I ('NEWTOP) S NEWTOP="" S NEWTOP=+$O(@ARRAYREF@(NEWTOP))
|
---|
140 | ..;Save new value into appropriate variable
|
---|
141 | ..S:(ARRAYREF="INFILER") INTOP=NEWTOP
|
---|
142 | ..S:(ARRAYREF="OUTFILER") OUTTOP=NEWTOP
|
---|
143 | ;START/STOP/DELETE action
|
---|
144 | I ("+-*"[ANS) D Q 0
|
---|
145 | .;Remember action
|
---|
146 | .S ANS1=ANS
|
---|
147 | .;Get type of filer
|
---|
148 | .R ANS#1:3 Q:('$T)
|
---|
149 | .;Invalid response
|
---|
150 | .S ANS=$TR(ANS,"io","IO")
|
---|
151 | .Q:("IO"'[ANS)
|
---|
152 | .;Echo complete selection
|
---|
153 | .W " ",$S(ANS1="+":"START",ANS1="-":"STOP",1:"DELETE")," "
|
---|
154 | .W $S(ANS="O":"OUTGOING",1:"INCOMING")," FILER"
|
---|
155 | .H 1
|
---|
156 | .;START action
|
---|
157 | .I (ANS1="+") D Q
|
---|
158 | ..;Start incoming filer
|
---|
159 | ..I (ANS="I") S TMP=$$TASKFLR^HLCS1("IN")
|
---|
160 | ..;Start outgoing filer
|
---|
161 | ..I (ANS="O") S TMP=$$TASKFLR^HLCS1("OUT")
|
---|
162 | .;STOP action
|
---|
163 | .I (ANS1="-") D Q
|
---|
164 | ..S ARRAYREF=$S(ANS="I":"INFILER",1:"OUTFILER")
|
---|
165 | ..;Get first filer in list that hasn't been asked to stop
|
---|
166 | ..S TMP=0
|
---|
167 | ..F S TMP=+$O(@ARRAYREF@(TMP)) Q:('TMP) Q:($P(@ARRAYREF@(TMP),"^",3)="No")
|
---|
168 | ..;No filer to stop
|
---|
169 | ..Q:('TMP)
|
---|
170 | ..;Stop incoming filer
|
---|
171 | ..I (ANS="I") D STOPFLR^HLCSUTL1(TMP,"IN")
|
---|
172 | ..;Stop outgoing filer
|
---|
173 | ..I (ANS="O") D STOPFLR^HLCSUTL1(TMP,"OUT")
|
---|
174 | .;DELETE action
|
---|
175 | .S ARRAYREF=$S(ANS="I":"INFILER",1:"OUTFILER")
|
---|
176 | .;Find all tasks that have stopped due to error
|
---|
177 | .K TMPARR
|
---|
178 | .S LOOP=0
|
---|
179 | .F S LOOP=+$O(@ARRAYREF@(LOOP)) Q:('LOOP) D
|
---|
180 | ..;Make sure task stopped due to error
|
---|
181 | ..S TMP=@ARRAYREF@(LOOP)
|
---|
182 | ..Q:($P(TMP,"^",3)'="Error")
|
---|
183 | ..;Get task number
|
---|
184 | ..S TMP=+TMP
|
---|
185 | ..;Store by task number
|
---|
186 | ..S TMPARR(TMP)=LOOP
|
---|
187 | .;No selection required
|
---|
188 | .Q:('$O(TMPARR("")))
|
---|
189 | .;Make selection - autoselects on single entry
|
---|
190 | .S TMP=$$SELECT^HLCSFMN2("TMPARR","filer task number")
|
---|
191 | .;Delete selection
|
---|
192 | .I (TMP>0) D
|
---|
193 | ..;Delete incoming filer
|
---|
194 | ..I (ANS="I") D DELFLR^HLCSUTL1(TMPARR(TMP),"IN")
|
---|
195 | ..;Delete outgoing filer
|
---|
196 | ..I (ANS="O") D DELFLR^HLCSUTL1(TMPARR(TMP),"OUT")
|
---|
197 | .;Whitespace - needed for screen refreshing
|
---|
198 | .W !!!!!
|
---|
199 | ;Invalid response
|
---|
200 | Q 0
|
---|