1 | HLCSFMN1 ;ALB/JRP - UTILITIES FOR FILER MONITOR;18-MAY-95
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;;Oct 13, 1995
|
---|
3 | GETINFO(FLRTYPE,OUTARR) ;Get filer information
|
---|
4 | ;INPUT : FLRTYPE - Flag indicating type of filer to get info on
|
---|
5 | ; IN = Incoming filer (default)
|
---|
6 | ; OUT = Outgoing filer
|
---|
7 | ; OUTARR - Array to put filer information into (full global ref)
|
---|
8 | ;OUTPUT : X - Number of outgoing filers running
|
---|
9 | ; OUTARR(PtrSubEntry) = TaskNumber ^ Last$H ^ StopFlag ^
|
---|
10 | ; Printable$H ^ ErrorMessage
|
---|
11 | ; PtrSubEntry = Pointer to subentry in file 869.3
|
---|
12 | ; TaskNumber = Task number of filer
|
---|
13 | ; Last$H = Last known $H (field #.03 of subentry)
|
---|
14 | ; StopFlag = Whether or not filer has been asked to stop
|
---|
15 | ; (field #.02 of subentry)
|
---|
16 | ; Yes - Filer has been asked to stop
|
---|
17 | ; No - Filer has not been asked to stop
|
---|
18 | ; Error - Task stopped due to error
|
---|
19 | ; Printable$H = Last$H in printable format
|
---|
20 | ; ErrorMessage = Printable error message - only used when
|
---|
21 | ; task stopped due to error
|
---|
22 | ;NOTES : OUTARR() will be initialized (KILLed) on entry
|
---|
23 | ;
|
---|
24 | ;Check input
|
---|
25 | Q:($G(OUTARR)="") 0
|
---|
26 | S FLRTYPE=$G(FLRTYPE)
|
---|
27 | S:(FLRTYPE'="OUT") FLRTYPE="IN"
|
---|
28 | ;Declare variables
|
---|
29 | N PTRSUB,FLRINFO,FLRDH,PRTDH,STOPFLAG,COUNT,ZTSK,TMP
|
---|
30 | ;Get filer data
|
---|
31 | K @OUTARR
|
---|
32 | D GETFLRS^HLCSUTL2(FLRTYPE,OUTARR)
|
---|
33 | ;Count number of filers
|
---|
34 | S PTRSUB=""
|
---|
35 | F COUNT=0:1 S PTRSUB=+$O(@OUTARR@(PTRSUB)) Q:('PTRSUB) D
|
---|
36 | .;Convert data
|
---|
37 | .S FLRINFO=@OUTARR@(PTRSUB)
|
---|
38 | .;Convert stop flag to printable format
|
---|
39 | .S STOPFLAG=+$P(FLRINFO,"^",3)
|
---|
40 | .S $P(FLRINFO,"^",3)=$S(STOPFLAG:"Yes",1:"No")
|
---|
41 | .;Convert $H to printable format
|
---|
42 | .S FLRDH=$P(FLRINFO,"^",2)
|
---|
43 | .S PRTDH=""
|
---|
44 | .S:(FLRDH'="") PRTDH=$$DH4PRT(FLRDH)
|
---|
45 | .S $P(FLRINFO,"^",4)=PRTDH
|
---|
46 | .;Get task's status
|
---|
47 | .K ZTSK
|
---|
48 | .S ZTSK=+FLRINFO
|
---|
49 | .D STAT^%ZTLOAD
|
---|
50 | .;Problem with task
|
---|
51 | .I (ZTSK(1)'=2) D
|
---|
52 | ..;Determine error message
|
---|
53 | ..S TMP=$S(FLRTYPE="OUT":"Outgoing ",1:"Incoming ")
|
---|
54 | ..;Task no longer defined
|
---|
55 | ..S:(ZTSK(1)=0) TMP="** "_TMP_"filer is no longer defined **"
|
---|
56 | ..;Task hasn't started yet
|
---|
57 | ..S:(ZTSK(1)=1) TMP=TMP_"filer has not started yet"
|
---|
58 | ..;Task finished
|
---|
59 | ..S:(ZTSK(1)=3) TMP=TMP_"filer stopped but didn't delete itself"
|
---|
60 | ..;Task not scheduled
|
---|
61 | ..S:(ZTSK(1)=4) TMP="** "_TMP_"filer has not been [re]scheduled **"
|
---|
62 | ..;Task errored out
|
---|
63 | ..S:(ZTSK(1)=5) TMP="** "_TMP_"filer has stopped due to error **"
|
---|
64 | ..;Store error message
|
---|
65 | ..S $P(FLRINFO,"^",5)=TMP
|
---|
66 | ..;Use 'Error' for stop flag - don't change if filer hasn't started yet
|
---|
67 | ..S:(ZTSK(1)'=1) $P(FLRINFO,"^",3)="Error"
|
---|
68 | .;Store converted data
|
---|
69 | .S @OUTARR@(PTRSUB)=FLRINFO
|
---|
70 | ;Return info
|
---|
71 | Q COUNT
|
---|
72 | DIFFDH(DH1,DH2) ;DETERMINE DIFFERENCES BETWEEN TWO VALUES OF $H
|
---|
73 | ;INPUT : DH1 - Beginning $H (defaults to current $H)
|
---|
74 | ; DH2 - Ending $H (defaults to current $H)
|
---|
75 | ;OUTPUT : Days ^ Time
|
---|
76 | ; Days = Number of days between DH1 & DH2
|
---|
77 | ; Time = Rest of time between DH1 & DH2 => HH:MM:SS
|
---|
78 | ;NOTES : Difference calculated by subtracting DH1 from DH2
|
---|
79 | ;
|
---|
80 | ;Check input
|
---|
81 | S DH1=$G(DH1)
|
---|
82 | S:(DH1="") DH1=$H
|
---|
83 | S DH2=$G(DH2)
|
---|
84 | S:(DH2="") DH2=$H
|
---|
85 | ;Declare variables
|
---|
86 | N DAY1,DAY2,DAYDIF,TIME1,TIME2,TIMEDIF,NEGATE,%
|
---|
87 | ;Break out day & seconds from $H
|
---|
88 | S DAY1=+$P(DH1,",",1)
|
---|
89 | S DAY2=+$P(DH2,",",1)
|
---|
90 | S TIME1=+$P(DH1,",",2)
|
---|
91 | S TIME2=+$P(DH2,",",2)
|
---|
92 | ;Make sure DH2 is after DH1
|
---|
93 | S NEGATE=0
|
---|
94 | I ((DAY1>DAY2)!((DAY1=DAY2)&(TIME1>TIME2))) D
|
---|
95 | .;Switch date/time
|
---|
96 | .S NEGATE=DAY2
|
---|
97 | .S DAY2=DAY1
|
---|
98 | .S DAY1=NEGATE
|
---|
99 | .S NEGATE=TIME2
|
---|
100 | .S TIME2=TIME1
|
---|
101 | .S TIME1=NEGATE
|
---|
102 | .;Negate answer when done
|
---|
103 | .S NEGATE=1
|
---|
104 | ;Determine day difference
|
---|
105 | S DAYDIF=DAY2-DAY1
|
---|
106 | ;Determine time difference
|
---|
107 | ;Same day - just subtract time
|
---|
108 | S:('DAYDIF) TIMEDIF=TIME2-TIME1
|
---|
109 | ;Different day - special case exists
|
---|
110 | I (DAYDIF) D
|
---|
111 | .;Seconds not different by 24 hours
|
---|
112 | .I (TIME2<TIME1) D Q
|
---|
113 | ..;Convert one day from difference to seconds
|
---|
114 | ..S DAYDIF=DAYDIF-1
|
---|
115 | ..;Add to ending time
|
---|
116 | ..S TIME2=TIME2+86400
|
---|
117 | ..;Subtract times
|
---|
118 | ..S TIMEDIF=TIME2-TIME1
|
---|
119 | .;Seconds different by 24 hours
|
---|
120 | .S TIMEDIF=TIME2-TIME1
|
---|
121 | ;Convert seconds to time
|
---|
122 | S %=TIMEDIF
|
---|
123 | D S^%DTC
|
---|
124 | S %=%_"000000"
|
---|
125 | S TIMEDIF=$E(%,2,3)_":"_$E(%,4,5)_":"_$E(%,6,7)
|
---|
126 | ;Negate results (if needed)
|
---|
127 | I (NEGATE) D
|
---|
128 | .S DAYDIF=0-DAYDIF
|
---|
129 | .;Don't negate 00:00:00
|
---|
130 | .F %=1:1:4 Q:($P(TIMEDIF,":",%))
|
---|
131 | .S:(%'=4) TIMEDIF="-"_TIMEDIF
|
---|
132 | Q DAYDIF_"^"_TIMEDIF
|
---|
133 | DH4PRT(DH) ;CONVERT $H TO PRINTABLE FORMAT
|
---|
134 | ;INPUT : DH - $H (defaults to current $H)
|
---|
135 | ;OUTPUT : Printable format of $H => DD-MMM-YY @ HH:MM:SS
|
---|
136 | ;
|
---|
137 | ;Check input
|
---|
138 | S DH=$G(DH)
|
---|
139 | S:(DH="") DH=$H
|
---|
140 | ;Declare variables
|
---|
141 | N %H,Y,X,%,CNVDATE,CNVTIME
|
---|
142 | ;Convert $H to external format
|
---|
143 | S %H=DH
|
---|
144 | D YX^%DTC
|
---|
145 | ;Convert to print format
|
---|
146 | S CNVDATE=$P(Y,"@",1)
|
---|
147 | S %=%_"000000"
|
---|
148 | S CNVTIME=$E(%,2,3)_":"_$E(%,4,5)_":"_$E(%,6,7)
|
---|
149 | S Y=$E(X,6,7)_"-"_$P(CNVDATE," ",1)_"-"_$E(X,2,3)_" @ "_CNVTIME
|
---|
150 | Q Y
|
---|
151 | GETATTR ;GET SCREEN ATTRIBUTES USED BY MONITOR
|
---|
152 | ;INPUT : IOST(0) - Terminal type [as set by entry into DHCP]
|
---|
153 | ;OUTPUT : The following screen attributes will be defined
|
---|
154 | ; IOINORM - Normal intensity
|
---|
155 | ; IOINHI - High Intensity (bold)
|
---|
156 | ; IOUON - Underline on
|
---|
157 | ; IOUOFF - Underline off
|
---|
158 | ; IOBON - Blink on
|
---|
159 | ; IOBOFF - Blink off
|
---|
160 | ; IORVON - Reverse video on
|
---|
161 | ; IORVOFF - Reverse video off
|
---|
162 | ; IOHOME - Move cursor to home
|
---|
163 | ; IOELEOL - Erase from cursor to end of line
|
---|
164 | ;
|
---|
165 | ;NOTES : If IOST(0) is not defined, a call to HOME^%ZIS will be made
|
---|
166 | ;
|
---|
167 | ;Check for IOST(0)
|
---|
168 | D:('$D(IOST(0))) HOME^%ZIS
|
---|
169 | ;Declare variables
|
---|
170 | N X
|
---|
171 | ;Get screen attributes
|
---|
172 | S X="IOINORM;IOINHI;IOUON;IOUOFF;IOBON;IOBOFF;IORVON;IORVOFF;IOHOME;IOELEOL"
|
---|
173 | D ENDR^%ZISS
|
---|
174 | Q
|
---|