noaaish 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/Guardfile +24 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +9 -0
- data/java/ishJava.class +0 -0
- data/java/ishJava.java +1371 -0
- data/lib/noaaish/extractor.rb +63 -0
- data/lib/noaaish/fetch.rb +36 -0
- data/lib/noaaish/gunzip.rb +27 -0
- data/lib/noaaish/translator.rb +36 -0
- data/lib/noaaish/version.rb +3 -0
- data/lib/noaaish.rb +19 -0
- data/noaaish.gemspec +27 -0
- data/spec/fixtures/943900-99999-2014 +263 -0
- data/spec/fixtures/943900-99999-2014.gz +0 -0
- data/spec/lib/noaaish/fetch_spec.rb +33 -0
- data/spec/lib/noaaish/gunzip_spec.rb +31 -0
- data/spec/spec_helper.rb +9 -0
- metadata +139 -0
data/java/ishJava.java
ADDED
@@ -0,0 +1,1371 @@
|
|
1
|
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
2
|
+
*
|
3
|
+
* Produce simplified form from ISH file.
|
4
|
+
*
|
5
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
6
|
+
* Date: Developer PR/CR # Description of changes
|
7
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
8
|
+
*
|
9
|
+
* 03/10/2011 ras ???? Created.
|
10
|
+
*
|
11
|
+
* 06/06/2012 ras ???? Added AW1-AW4 (Automated Present Weather)
|
12
|
+
* Corrected problem when OC1 was missing
|
13
|
+
*
|
14
|
+
* 06/21/2012 ras ???? Modified Wind Dir logic to set value to 990 when
|
15
|
+
* Type code is 'V'
|
16
|
+
* Added MW4 (Manual Present Weather)
|
17
|
+
*
|
18
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
19
|
+
*
|
20
|
+
* 07/12/2013 srw Modified NOAA's standard reformatting script
|
21
|
+
* original available at ftp://ftp.ncdc.noaa.gov/pub/data/noaa/ishJava.java
|
22
|
+
* --> Disabled NOAA's command line arguments (infile, outfile, logging flags)
|
23
|
+
* --> Input: STDIN
|
24
|
+
* --> Output: STDOUT
|
25
|
+
* --> Logging disabled
|
26
|
+
* --> Removed disabled sections
|
27
|
+
*
|
28
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
29
|
+
|
30
|
+
import java.io.*;
|
31
|
+
import java.lang.Math.*;
|
32
|
+
|
33
|
+
import java.util.Date;
|
34
|
+
import java.util.*;
|
35
|
+
import java.text.DateFormat;
|
36
|
+
import java.text.SimpleDateFormat;
|
37
|
+
import java.text.NumberFormat;
|
38
|
+
import java.text.DecimalFormat;
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Mainline logic.
|
42
|
+
*/
|
43
|
+
public class ishJava
|
44
|
+
{
|
45
|
+
static String sProgramName = "ishJava.java";
|
46
|
+
static String sDebugName = "ishJava";
|
47
|
+
//static String sInFileName = "";
|
48
|
+
//static String sOutFileName = "";
|
49
|
+
static FileOutputStream fDebug = null;
|
50
|
+
|
51
|
+
static boolean bVerbose = false;
|
52
|
+
static boolean bOnce = false;
|
53
|
+
static boolean bStdErr = false;
|
54
|
+
|
55
|
+
static String sOutputRecord = "";
|
56
|
+
static String sControlSection = "";
|
57
|
+
static String sMandatorySection = "";
|
58
|
+
static int iCounter = 0;
|
59
|
+
static int iLength = 0;
|
60
|
+
static int iOffset = 25;
|
61
|
+
static int iObsKey = 0;
|
62
|
+
static int iWork = 0;
|
63
|
+
static String[] sWW1234;
|
64
|
+
static String[] sAW1234;
|
65
|
+
static float fWork = 0;
|
66
|
+
static float fWorkSave = 0;
|
67
|
+
static String sConcat = "";
|
68
|
+
static String sConcatDate = "";
|
69
|
+
static String sConcatMonth = "";
|
70
|
+
static String sMessage = "";
|
71
|
+
|
72
|
+
static final int iPROD = 0; // Only print basic run info
|
73
|
+
static final int iDEBUG = 1; // Print lots of info, such as debug messages
|
74
|
+
static int iLogLevel = 0; // Default value for this run.
|
75
|
+
static String p_sFilter1 = "None";
|
76
|
+
static String p_sFilter2 = "None";
|
77
|
+
|
78
|
+
static NumberFormat fmt03 = new DecimalFormat("000"); // 3-char int (keep leading zeros)
|
79
|
+
static NumberFormat fmt4_1 = new DecimalFormat("#0.0"); // 4-char float
|
80
|
+
static NumberFormat fmt6_1 = new DecimalFormat("###0.0"); // 6-char float
|
81
|
+
static NumberFormat fmt5_2 = new DecimalFormat("##0.00"); // 5-char float
|
82
|
+
static NumberFormat fmt02 = new DecimalFormat("#0"); // 2-char int
|
83
|
+
|
84
|
+
// Fields making up the Control Data Section.
|
85
|
+
static String sCDS = "";
|
86
|
+
static String sCDS_Fill1 = "";
|
87
|
+
static String sCDS_ID = "";
|
88
|
+
static String sCDS_Wban = "";
|
89
|
+
static String sCDS_Year = "";
|
90
|
+
static String sCDS_Month = "";
|
91
|
+
static String sCDS_Day = "";
|
92
|
+
static String sCDS_Hour = "";
|
93
|
+
static String sCDS_Minute = "";
|
94
|
+
static String sCDS_Fill2 = "";
|
95
|
+
// Fields making up the Mandatory Data Section.
|
96
|
+
static String sMDS = "";
|
97
|
+
static String sMDS_Dir = "";
|
98
|
+
static String sMDS_DirQ = "";
|
99
|
+
static String sMDS_DirType = "";
|
100
|
+
static String sMDS_Spd = "";
|
101
|
+
static String sMDS_Fill2 = "";
|
102
|
+
static String sMDS_Clg = "";
|
103
|
+
static String sMDS_Fill3 = "";
|
104
|
+
static String sMDS_Vsb = "";
|
105
|
+
static String sMDS_Fill4 = "";
|
106
|
+
static String sMDS_TempSign = "";
|
107
|
+
static String sMDS_Temp = "";
|
108
|
+
static String sMDS_Fill5 = "";
|
109
|
+
static String sMDS_DewpSign = "";
|
110
|
+
static String sMDS_Dewp = "";
|
111
|
+
static String sMDS_Fill6 = "";
|
112
|
+
static String sMDS_Slp = "";
|
113
|
+
static String sMDS_Fill7 = "";
|
114
|
+
|
115
|
+
// REM offset
|
116
|
+
static int iREM_IndexOf = 0;
|
117
|
+
|
118
|
+
// Fields making up the OC1 element
|
119
|
+
// Sample Element=[OC1...]
|
120
|
+
static int iOC1_IndexOf = 0;
|
121
|
+
static int iOC1_Length = 8;
|
122
|
+
static String sOC1 = "";
|
123
|
+
static String sOC1_Fill1 = "";
|
124
|
+
static String sOC1_Gus = "";
|
125
|
+
static String sOC1_Fill2 = "";
|
126
|
+
|
127
|
+
// Fields making up the GF1 element
|
128
|
+
static int iGF1_IndexOf = 0;
|
129
|
+
static int iGF1_Length = 26;
|
130
|
+
static String sGF1 = "";
|
131
|
+
static String sGF1_Fill1 = "";
|
132
|
+
static String sGF1_Skc = "";
|
133
|
+
static String sGF1_Fill2 = "";
|
134
|
+
static String sGF1_Low = "";
|
135
|
+
static String sGF1_Fill3 = "";
|
136
|
+
static String sGF1_Med = "";
|
137
|
+
static String sGF1_Fill4 = "";
|
138
|
+
static String sGF1_Hi = "";
|
139
|
+
static String sGF1_Fill5 = "";
|
140
|
+
|
141
|
+
// static int iMW_Counter = 0;
|
142
|
+
// Fields making up the MW1-7 elements
|
143
|
+
static int iMW1_IndexOf = 0;
|
144
|
+
static int iMW1_Length = 6;
|
145
|
+
static String sMW1 = "";
|
146
|
+
static String sMW1_Fill1 = "";
|
147
|
+
static String sMW1_Ww = "";
|
148
|
+
static String sMW1_Fill2 = "";
|
149
|
+
|
150
|
+
static int iMW2_IndexOf = 0;
|
151
|
+
static int iMW2_Length = 6;
|
152
|
+
static String sMW2 = "";
|
153
|
+
static String sMW2_Fill1 = "";
|
154
|
+
static String sMW2_Ww = "";
|
155
|
+
static String sMW2_Fill2 = "";
|
156
|
+
|
157
|
+
static int iMW3_IndexOf = 0;
|
158
|
+
static int iMW3_Length = 6;
|
159
|
+
static String sMW3 = "";
|
160
|
+
static String sMW3_Fill1 = "";
|
161
|
+
static String sMW3_Ww = "";
|
162
|
+
static String sMW3_Fill2 = "";
|
163
|
+
|
164
|
+
static int iMW4_IndexOf = 0;
|
165
|
+
static int iMW4_Length = 6;
|
166
|
+
static String sMW4 = "";
|
167
|
+
static String sMW4_Fill1 = "";
|
168
|
+
static String sMW4_Ww = "";
|
169
|
+
static String sMW4_Fill2 = "";
|
170
|
+
|
171
|
+
// Fields making up the AY1 element
|
172
|
+
static int iAY1_IndexOf = 0;
|
173
|
+
static int iAY1_Length = 8;
|
174
|
+
static String sAY1 = "";
|
175
|
+
static String sAY1_Fill1 = "";
|
176
|
+
static String sAY1_Pw = "";
|
177
|
+
static String sAY1_Fill2 = "";
|
178
|
+
|
179
|
+
// Fields making up the MA1 element
|
180
|
+
static int iMA1_IndexOf = 0;
|
181
|
+
static int iMA1_Length = 15;
|
182
|
+
static String sMA1 = "";
|
183
|
+
static String sMA1_Fill1 = "";
|
184
|
+
static String sMA1_Alt = "";
|
185
|
+
static String sMA1_Fill2 = "";
|
186
|
+
static String sMA1_Stp = "";
|
187
|
+
static String sMA1_Fill3 = "";
|
188
|
+
|
189
|
+
// Max/Min fields
|
190
|
+
static String sMaxTemp = "";
|
191
|
+
static String sMinTemp = "";
|
192
|
+
|
193
|
+
// Fields making up the KA1 element
|
194
|
+
static int iKA1_IndexOf = 0;
|
195
|
+
static int iKA1_Length = 13;
|
196
|
+
static String sKA1 = "";
|
197
|
+
static String sKA1_Fill1 = "";
|
198
|
+
static String sKA1_Code = "";
|
199
|
+
static String sKA1_Temp = "";
|
200
|
+
static String sKA1_Fill2 = "";
|
201
|
+
|
202
|
+
// Fields making up the KA2 element
|
203
|
+
static int iKA2_IndexOf = 0;
|
204
|
+
static int iKA2_Length = 13;
|
205
|
+
static String sKA2 = "";
|
206
|
+
static String sKA2_Fill1 = "";
|
207
|
+
static String sKA2_Code = "";
|
208
|
+
static String sKA2_Temp = "";
|
209
|
+
static String sKA2_Fill2 = "";
|
210
|
+
|
211
|
+
// Precip fields
|
212
|
+
static String sPcp01 = "*****";
|
213
|
+
static String sPcp01t = " ";
|
214
|
+
static String sPcp06 = "*****";
|
215
|
+
static String sPcp06t = " ";
|
216
|
+
static String sPcp24 = "*****";
|
217
|
+
static String sPcp24t = " ";
|
218
|
+
static String sPcp12 = "*****";
|
219
|
+
static String sPcp12t = " ";
|
220
|
+
|
221
|
+
// Fields making up the AA1 element
|
222
|
+
static int iAA1_IndexOf = 0;
|
223
|
+
static int iAA1_Length = 11;
|
224
|
+
static String sAA1 = "";
|
225
|
+
static String sAA1_Fill1 = "";
|
226
|
+
static String sAA1_Hours = "";
|
227
|
+
static String sAA1_Pcp = "";
|
228
|
+
static String sAA1_Trace = "";
|
229
|
+
static String sAA1_Fill2 = "";
|
230
|
+
|
231
|
+
// Fields making up the AA2 element
|
232
|
+
static int iAA2_IndexOf = 0;
|
233
|
+
static int iAA2_Length = 11;
|
234
|
+
static String sAA2 = "";
|
235
|
+
static String sAA2_Fill1 = "";
|
236
|
+
static String sAA2_Hours = "";
|
237
|
+
static String sAA2_Pcp = "";
|
238
|
+
static String sAA2_Trace = "";
|
239
|
+
static String sAA2_Fill2 = "";
|
240
|
+
|
241
|
+
// Fields making up the AA3 element
|
242
|
+
static int iAA3_IndexOf = 0;
|
243
|
+
static int iAA3_Length = 11;
|
244
|
+
static String sAA3 = "";
|
245
|
+
static String sAA3_Fill1 = "";
|
246
|
+
static String sAA3_Hours = "";
|
247
|
+
static String sAA3_Pcp = "";
|
248
|
+
static String sAA3_Trace = "";
|
249
|
+
static String sAA3_Fill2 = "";
|
250
|
+
|
251
|
+
// Fields making up the AA4 element
|
252
|
+
static int iAA4_IndexOf = 0;
|
253
|
+
static int iAA4_Length = 11;
|
254
|
+
static String sAA4 = "";
|
255
|
+
static String sAA4_Fill1 = "";
|
256
|
+
static String sAA4_Hours = "";
|
257
|
+
static String sAA4_Pcp = "";
|
258
|
+
static String sAA4_Trace = "";
|
259
|
+
static String sAA4_Fill2 = "";
|
260
|
+
|
261
|
+
// Fields making up the AJ1 element
|
262
|
+
static int iAJ1_IndexOf = 0;
|
263
|
+
static int iAJ1_Length = 17;
|
264
|
+
static String sAJ1 = "";
|
265
|
+
static String sAJ1_Fill1 = "";
|
266
|
+
static String sAJ1_Sd = "";
|
267
|
+
static String sAJ1_Fill2 = "";
|
268
|
+
|
269
|
+
// Fields making up the AW1-4 elements
|
270
|
+
static int iAW1_IndexOf = 0;
|
271
|
+
static int iAW1_Length = 6;
|
272
|
+
static String sAW1 = "";
|
273
|
+
static String sAW1_Fill1 = "";
|
274
|
+
static String sAW1_Zz = "";
|
275
|
+
static String sAW1_Fill2 = "";
|
276
|
+
|
277
|
+
static int iAW2_IndexOf = 0;
|
278
|
+
static int iAW2_Length = 6;
|
279
|
+
static String sAW2 = "";
|
280
|
+
static String sAW2_Fill1 = "";
|
281
|
+
static String sAW2_Zz = "";
|
282
|
+
static String sAW2_Fill2 = "";
|
283
|
+
|
284
|
+
static int iAW3_IndexOf = 0;
|
285
|
+
static int iAW3_Length = 6;
|
286
|
+
static String sAW3 = "";
|
287
|
+
static String sAW3_Fill1 = "";
|
288
|
+
static String sAW3_Zz = "";
|
289
|
+
static String sAW3_Fill2 = "";
|
290
|
+
|
291
|
+
static int iAW4_IndexOf = 0;
|
292
|
+
static int iAW4_Length = 6;
|
293
|
+
static String sAW4 = "";
|
294
|
+
static String sAW4_Fill1 = "";
|
295
|
+
static String sAW4_Zz = "";
|
296
|
+
static String sAW4_Fill2 = "";
|
297
|
+
|
298
|
+
static String sHeader = " USAF WBAN YR--MODAHRMN DIR SPD GUS CLG SKC L M H VSB "+
|
299
|
+
"MW MW MW MW AW AW AW AW W TEMP DEWP SLP ALT STP MAX MIN PCP01 "+
|
300
|
+
"PCP06 PCP24 PCPXX SD\n";
|
301
|
+
|
302
|
+
public static void main(String[] args)
|
303
|
+
{
|
304
|
+
try
|
305
|
+
{
|
306
|
+
//BufferedReader fInReader = new BufferedReader(new FileReader(sInFileName));
|
307
|
+
BufferedReader fInReader = new BufferedReader(new InputStreamReader(System.in));
|
308
|
+
|
309
|
+
//FileWriter fFixed = new FileWriter(sOutFileName);
|
310
|
+
//BufferedWriter fFixedWriter = new BufferedWriter(fFixed);
|
311
|
+
BufferedWriter fFixedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
|
312
|
+
|
313
|
+
fFixedWriter.write(sHeader); // Put header into output file.
|
314
|
+
|
315
|
+
try
|
316
|
+
{
|
317
|
+
String line = null;
|
318
|
+
while (( line = fInReader.readLine()) != null)
|
319
|
+
{
|
320
|
+
iCounter++;
|
321
|
+
// iOffset = 25;
|
322
|
+
iLength = line.length();
|
323
|
+
|
324
|
+
// See where the REM section begins
|
325
|
+
iREM_IndexOf = line.indexOf("REM");
|
326
|
+
if (iREM_IndexOf == -1)
|
327
|
+
{
|
328
|
+
iREM_IndexOf = 9999; // If no REM section then set to high value
|
329
|
+
}
|
330
|
+
|
331
|
+
getCDS(line); // Fields making up the Control Data Section.
|
332
|
+
|
333
|
+
sConcat = sCDS_ID+"-"+sCDS_Wban+"-"+sCDS_Year+"-"+sCDS_Month+"-"+sCDS_Day+" "+sCDS_Hour+":"+sCDS_Minute;
|
334
|
+
sConcatDate = sCDS_Year+"-"+sCDS_Month+"-"+sCDS_Day;
|
335
|
+
sConcatMonth = sCDS_Year+"-"+sCDS_Month;
|
336
|
+
|
337
|
+
|
338
|
+
getMDS(line); // Fields making up the Mandatory Data Section.
|
339
|
+
getOC1(line); // Fields making up the OC1 element.
|
340
|
+
getGF1(line); // Fields making up the GF1 element.
|
341
|
+
getMW1(line); // Fields making up the MW1 element.
|
342
|
+
getMW2(line); // Fields making up the MW2 element.
|
343
|
+
getMW3(line); // Fields making up the MW3 element.
|
344
|
+
getMW4(line); // Fields making up the MW3 element. // 06/21/2012 ras
|
345
|
+
getAY1(line); // Fields making up the AY1 element.
|
346
|
+
getMA1(line); // Fields making up the MA1 element.
|
347
|
+
sMaxTemp = "***";
|
348
|
+
sMinTemp = "***";
|
349
|
+
getKA1(line); // Fields making up the KA1 element.
|
350
|
+
getKA2(line); // Fields making up the KA2 element.
|
351
|
+
sPcp01 = "*****";
|
352
|
+
sPcp01t = " ";
|
353
|
+
sPcp06 = "*****";
|
354
|
+
sPcp06t = " ";
|
355
|
+
sPcp24 = "*****";
|
356
|
+
sPcp24t = " ";
|
357
|
+
sPcp12 = "*****";
|
358
|
+
sPcp12t = " ";
|
359
|
+
getAA1(line); // Fields making up the AA1 element.
|
360
|
+
getAA2(line); // Fields making up the AA2 element.
|
361
|
+
getAA3(line); // Fields making up the AA3 element.
|
362
|
+
getAA4(line); // Fields making up the AA4 element.
|
363
|
+
getAJ1(line); // Fields making up the AJ1 element.
|
364
|
+
getAW1(line); // Fields making up the AW1 element. // 06/06/2012 ras
|
365
|
+
getAW2(line); // Fields making up the AW2 element. // 06/06/2012 ras
|
366
|
+
getAW3(line); // Fields making up the AW3 element. // 06/06/2012 ras
|
367
|
+
getAW4(line); // Fields making up the AW4 element. // 06/06/2012 ras
|
368
|
+
|
369
|
+
// Begin formatting output record..............................................................
|
370
|
+
|
371
|
+
// Post-processing format changes
|
372
|
+
if ( sCDS_Wban.equals("99999") ) // Show WBAN=99999 as missing "*****" in output file
|
373
|
+
{
|
374
|
+
sCDS_Wban = "*****";
|
375
|
+
}
|
376
|
+
// Build Control Data Section
|
377
|
+
sControlSection = sCDS_ID+" "+sCDS_Wban+" "+sCDS_Year+sCDS_Month+sCDS_Day+sCDS_Hour+sCDS_Minute;
|
378
|
+
|
379
|
+
// Sort Present Weather elements
|
380
|
+
sWW1234 = new String[] {sMW1_Ww,sMW2_Ww,sMW3_Ww,sMW4_Ww};
|
381
|
+
Arrays.sort(sWW1234);
|
382
|
+
|
383
|
+
// Sort Present Weather (Automated) elements
|
384
|
+
sAW1234 = new String[] {sAW1_Zz,sAW2_Zz,sAW3_Zz,sAW4_Zz};
|
385
|
+
Arrays.sort(sAW1234);
|
386
|
+
|
387
|
+
// Build Mandatory Data Section + the rest of the record
|
388
|
+
sMandatorySection = sMDS_Dir+" "+sMDS_Spd+" "+sOC1_Gus+" "+sMDS_Clg
|
389
|
+
+" "+sGF1_Skc+" "+sGF1_Low+" "+sGF1_Med+" "+sGF1_Hi+" "+sMDS_Vsb
|
390
|
+
+" "+sWW1234[3]+" "+sWW1234[2]+" "+sWW1234[1]+" "+sWW1234[0]
|
391
|
+
+" "+sAW1234[3]+" "+sAW1234[2]+" "+sAW1234[1]+" "+sAW1234[0]+" "+sAY1_Pw
|
392
|
+
+" "+sMDS_Temp+" "+sMDS_Dewp+" "+sMDS_Slp+" "+sMA1_Alt+" "+sMA1_Stp
|
393
|
+
+" "+sMaxTemp+" "+sMinTemp+" "+sPcp01+sPcp01t+sPcp06+sPcp06t+sPcp24+sPcp24t+sPcp12+sPcp12t
|
394
|
+
+sAJ1_Sd;
|
395
|
+
|
396
|
+
sOutputRecord = sControlSection+" "+sMandatorySection; // Put it all together
|
397
|
+
fFixedWriter.write(sOutputRecord+"\n"); // Write out the record
|
398
|
+
|
399
|
+
} // while read
|
400
|
+
|
401
|
+
}
|
402
|
+
catch (IOException ex) {
|
403
|
+
System.err.println(sProgramName+": IOException 2. Error=[" + ex.getMessage()+"]");
|
404
|
+
System.err.println(sProgramName+": Stack trace follows:");
|
405
|
+
ex.printStackTrace();
|
406
|
+
System.exit(2);
|
407
|
+
}
|
408
|
+
|
409
|
+
fInReader.close();
|
410
|
+
fFixedWriter.flush();
|
411
|
+
fFixedWriter.close();
|
412
|
+
|
413
|
+
} catch (Exception e) { //Catch exception if any
|
414
|
+
sMessage=sProgramName+": Unspecified Exception 1. Error=[" + e.getMessage()+"]";
|
415
|
+
bStdErr=true;
|
416
|
+
System.err.println(sProgramName+": Stack trace follows:");
|
417
|
+
e.printStackTrace();
|
418
|
+
System.exit(1);
|
419
|
+
}
|
420
|
+
|
421
|
+
} // End of main()
|
422
|
+
|
423
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
424
|
+
// formatInt - Right-justifies an int.
|
425
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
426
|
+
public static String formatInt(int i, int len)
|
427
|
+
{
|
428
|
+
final String blanks = " ";
|
429
|
+
String s = Integer.toString(i);
|
430
|
+
if (s.length() < len)
|
431
|
+
s = blanks.substring(0, len - s.length()) + s;
|
432
|
+
return s;
|
433
|
+
}
|
434
|
+
|
435
|
+
|
436
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
437
|
+
// formatFloat - Right-justifies a float.
|
438
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
439
|
+
public static String formatFloat(float i, int len)
|
440
|
+
{
|
441
|
+
final String blanks = " ";
|
442
|
+
String s = Float.toString(i);
|
443
|
+
if (s.length() < len)
|
444
|
+
s = blanks.substring(0, len - s.length()) + s;
|
445
|
+
return s;
|
446
|
+
}
|
447
|
+
|
448
|
+
|
449
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
450
|
+
// getCDS - Get CDS section and format its output.
|
451
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
452
|
+
public static void getCDS(String p_sRecd)
|
453
|
+
{
|
454
|
+
// Extract fields making up the Control Data Section.
|
455
|
+
sCDS = p_sRecd.substring(0,60);
|
456
|
+
sCDS_Fill1 = p_sRecd.substring(0,4);
|
457
|
+
sCDS_ID = p_sRecd.substring(4,10);
|
458
|
+
sCDS_Wban = p_sRecd.substring(10,15);
|
459
|
+
sCDS_Year = p_sRecd.substring(15,19);
|
460
|
+
sCDS_Month = p_sRecd.substring(19,21);
|
461
|
+
sCDS_Day = p_sRecd.substring(21,23);
|
462
|
+
sCDS_Hour = p_sRecd.substring(23,25);
|
463
|
+
sCDS_Minute = p_sRecd.substring(25,27);
|
464
|
+
sCDS_Fill2 = p_sRecd.substring(27,60);
|
465
|
+
} // End of getCDS
|
466
|
+
|
467
|
+
|
468
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
469
|
+
// getMDS - Get MDS section and format its output.
|
470
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
471
|
+
public static void getMDS(String p_sRecd)
|
472
|
+
{
|
473
|
+
// Extract fields making up the Mandatory Data Section.
|
474
|
+
sMDS = p_sRecd.substring(60,105);
|
475
|
+
sMDS_Dir = p_sRecd.substring(60,63);
|
476
|
+
sMDS_DirQ = p_sRecd.substring(63,64);
|
477
|
+
sMDS_DirType = p_sRecd.substring(64,65);
|
478
|
+
sMDS_Spd = p_sRecd.substring(65,69);
|
479
|
+
sMDS_Fill2 = p_sRecd.substring(69,70);
|
480
|
+
sMDS_Clg = p_sRecd.substring(70,75);
|
481
|
+
sMDS_Fill3 = p_sRecd.substring(75,78);
|
482
|
+
sMDS_Vsb = p_sRecd.substring(78,84);
|
483
|
+
sMDS_Fill4 = p_sRecd.substring(84,87);
|
484
|
+
sMDS_TempSign = p_sRecd.substring(87,88);
|
485
|
+
sMDS_Temp = p_sRecd.substring(88,92);
|
486
|
+
sMDS_Fill5 = p_sRecd.substring(92,93);
|
487
|
+
sMDS_DewpSign = p_sRecd.substring(93,94);
|
488
|
+
sMDS_Dewp = p_sRecd.substring(94,98);
|
489
|
+
sMDS_Fill6 = p_sRecd.substring(98,99);
|
490
|
+
sMDS_Slp = p_sRecd.substring(99,104);
|
491
|
+
sMDS_Fill7 = p_sRecd.substring(104,105);
|
492
|
+
|
493
|
+
if(sMDS_Dir.equals("999"))
|
494
|
+
{
|
495
|
+
sMDS_Dir = "***";
|
496
|
+
}
|
497
|
+
|
498
|
+
if(sMDS_DirType.equals("V")) // 06/21/2012 ras
|
499
|
+
{
|
500
|
+
sMDS_Dir = "990";
|
501
|
+
}
|
502
|
+
|
503
|
+
if(sMDS_Spd.equals("9999"))
|
504
|
+
{
|
505
|
+
sMDS_Spd = "***";
|
506
|
+
}
|
507
|
+
else
|
508
|
+
{
|
509
|
+
|
510
|
+
iWork = Integer.parseInt(sMDS_Spd); // Convert to integer
|
511
|
+
iWork = (int)(((float)iWork / 10.0) * 2.237 + .5); // Convert Meters Per Second to Miles Per Hour
|
512
|
+
sMDS_Spd = formatInt(iWork,3);
|
513
|
+
|
514
|
+
}
|
515
|
+
|
516
|
+
if(sMDS_Clg.equals("99999"))
|
517
|
+
{
|
518
|
+
sMDS_Clg = "***";
|
519
|
+
}
|
520
|
+
else
|
521
|
+
{
|
522
|
+
try
|
523
|
+
{
|
524
|
+
iWork = Integer.parseInt(sMDS_Clg); // Convert to integer
|
525
|
+
}
|
526
|
+
catch (Exception e)
|
527
|
+
{
|
528
|
+
sMDS_Clg = "***"; // Data error. Set to missing.
|
529
|
+
}
|
530
|
+
if( ! sMDS_Clg.equals("***") )
|
531
|
+
{
|
532
|
+
iWork = (int)(((float)iWork * 3.281) / 100.0 + .5); // Convert Meters to Hundreds of Feet
|
533
|
+
sMDS_Clg = formatInt(iWork,3);
|
534
|
+
}
|
535
|
+
}
|
536
|
+
|
537
|
+
if(sMDS_Vsb.equals("999999"))
|
538
|
+
{
|
539
|
+
sMDS_Vsb = "****";
|
540
|
+
}
|
541
|
+
else
|
542
|
+
{
|
543
|
+
fWork = Float.parseFloat(sMDS_Vsb); // Convert to floating point
|
544
|
+
fWork = ((float)(fWork * (float) 0.000625)); // Convert Meters to Miles using CDO's value
|
545
|
+
fWorkSave = fWork; // Save this value for possible display
|
546
|
+
if (fWork > 99.9)
|
547
|
+
{
|
548
|
+
fWork = (float)99.0; // Set to value that will fit
|
549
|
+
}
|
550
|
+
|
551
|
+
if (fWork == (float)10.058125) // Match CDO 2011-04-28 ras
|
552
|
+
{
|
553
|
+
fWork = (float)10.0;
|
554
|
+
}
|
555
|
+
sMDS_Vsb = fmt4_1.format(fWork);
|
556
|
+
sMDS_Vsb = String.format("%4s",sMDS_Vsb);
|
557
|
+
}
|
558
|
+
|
559
|
+
if(sMDS_Temp.equals("9999"))
|
560
|
+
{
|
561
|
+
sMDS_Temp = "****";
|
562
|
+
}
|
563
|
+
else
|
564
|
+
{
|
565
|
+
iWork = Integer.parseInt(sMDS_Temp); // Convert to integer
|
566
|
+
if (sMDS_TempSign.equals("-"))
|
567
|
+
{
|
568
|
+
iWork*=-1;
|
569
|
+
}
|
570
|
+
if(iWork < -178)
|
571
|
+
{
|
572
|
+
iWork = (int)(((float)iWork / 10.0) * 1.8 + 32.0 - .5); // Handle temps below 0F
|
573
|
+
}
|
574
|
+
else
|
575
|
+
{
|
576
|
+
iWork = (int)(((float)iWork / 10.0) * 1.8 + 32.0 + .5);
|
577
|
+
}
|
578
|
+
sMDS_Temp = formatInt(iWork,4);
|
579
|
+
}
|
580
|
+
|
581
|
+
if(sMDS_Dewp.equals("9999"))
|
582
|
+
{
|
583
|
+
sMDS_Dewp = "****";
|
584
|
+
}
|
585
|
+
else
|
586
|
+
{
|
587
|
+
iWork = Integer.parseInt(sMDS_Dewp); // Convert to integer
|
588
|
+
if (sMDS_DewpSign.equals("-"))
|
589
|
+
{
|
590
|
+
iWork*=-1;
|
591
|
+
}
|
592
|
+
if(iWork < -178)
|
593
|
+
{
|
594
|
+
iWork = (int)(((float)iWork / 10.0) * 1.8 + 32.0 - .5); // Handle temps below 0F
|
595
|
+
}
|
596
|
+
else
|
597
|
+
{
|
598
|
+
iWork = (int)(((float)iWork / 10.0) * 1.8 + 32.0 + .5);
|
599
|
+
}
|
600
|
+
sMDS_Dewp = formatInt(iWork,4);
|
601
|
+
}
|
602
|
+
|
603
|
+
if(sMDS_Slp.equals("99999"))
|
604
|
+
{
|
605
|
+
sMDS_Slp = "******";
|
606
|
+
}
|
607
|
+
else
|
608
|
+
{
|
609
|
+
fWork = Float.parseFloat(sMDS_Slp); // Convert to floating point
|
610
|
+
fWork = ((float)(fWork / 10.0)); // Convert convert Hectopascals to Millibars
|
611
|
+
sMDS_Slp = fmt6_1.format(fWork);
|
612
|
+
sMDS_Slp = String.format("%6s",sMDS_Slp);
|
613
|
+
}
|
614
|
+
} // End of getMDS
|
615
|
+
|
616
|
+
|
617
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
618
|
+
// getOC1 - Get OC1 element and format its output.
|
619
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
620
|
+
public static void getOC1(String p_sRecd)
|
621
|
+
{
|
622
|
+
sOC1 = "";
|
623
|
+
sOC1_Fill1 = "";
|
624
|
+
sOC1_Gus = "***";
|
625
|
+
sOC1_Fill2 = "";
|
626
|
+
iOC1_IndexOf = p_sRecd.indexOf("OC1");
|
627
|
+
if ( (iOC1_IndexOf >= 0) && (iOC1_IndexOf < iREM_IndexOf) )
|
628
|
+
{
|
629
|
+
sOC1 = p_sRecd.substring(iOC1_IndexOf,iOC1_IndexOf+iOC1_Length);
|
630
|
+
sOC1_Fill1 = sOC1.substring(1,3); // 3
|
631
|
+
sOC1_Gus = sOC1.substring(3,7); // 4
|
632
|
+
sOC1_Fill2 = sOC1.substring(7,8); // 1
|
633
|
+
|
634
|
+
if(sOC1_Gus.equals("9999")) // 06/06/2012 ras
|
635
|
+
{
|
636
|
+
sOC1_Gus = "***";
|
637
|
+
}
|
638
|
+
else
|
639
|
+
{
|
640
|
+
try
|
641
|
+
{
|
642
|
+
iWork = Integer.parseInt(sOC1_Gus); // Convert to integer
|
643
|
+
}
|
644
|
+
catch (Exception e)
|
645
|
+
{
|
646
|
+
sOC1_Gus = "***"; // Data error. Set to missing.
|
647
|
+
}
|
648
|
+
if( ! sOC1_Gus.equals("***") )
|
649
|
+
{
|
650
|
+
iWork = (int)(((float)iWork / 10.0) * 2.237 + .5); // Convert Meters Per Second to Miles Per Hour
|
651
|
+
sOC1_Gus = formatInt(iWork,3);
|
652
|
+
}
|
653
|
+
}
|
654
|
+
}
|
655
|
+
} // End of getOC1
|
656
|
+
|
657
|
+
|
658
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
659
|
+
// getGF1 - Get GF1 element and format its output.
|
660
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
661
|
+
public static void getGF1(String p_sRecd)
|
662
|
+
{
|
663
|
+
sGF1 = "";
|
664
|
+
sGF1_Fill1 = "";
|
665
|
+
sGF1_Skc = "***";
|
666
|
+
sGF1_Fill2 = "";
|
667
|
+
sGF1_Low = "*";
|
668
|
+
sGF1_Fill3 = "";
|
669
|
+
sGF1_Med = "*";
|
670
|
+
sGF1_Fill4 = "";
|
671
|
+
sGF1_Hi = "*";
|
672
|
+
sGF1_Fill5 = "";
|
673
|
+
iGF1_IndexOf = p_sRecd.indexOf("GF1");
|
674
|
+
if ( (iGF1_IndexOf >= 0) && (iGF1_IndexOf < iREM_IndexOf) )
|
675
|
+
{
|
676
|
+
sGF1 = p_sRecd.substring(iGF1_IndexOf,iGF1_IndexOf+iGF1_Length);
|
677
|
+
sGF1_Fill1 = sGF1.substring(1,3);
|
678
|
+
sGF1_Skc = sGF1.substring(3,5);
|
679
|
+
sGF1_Fill2 = sGF1.substring(5,11);
|
680
|
+
sGF1_Low = sGF1.substring(11,13);
|
681
|
+
sGF1_Fill3 = sGF1.substring(13,20);
|
682
|
+
sGF1_Med = sGF1.substring(20,22);
|
683
|
+
sGF1_Fill4 = sGF1.substring(22,23);
|
684
|
+
sGF1_Hi = sGF1.substring(23,25);
|
685
|
+
sGF1_Fill5 = sGF1.substring(25,26);
|
686
|
+
}
|
687
|
+
|
688
|
+
if ( (iGF1_IndexOf >= 0) && (iGF1_IndexOf < iREM_IndexOf) )
|
689
|
+
{
|
690
|
+
if(sGF1_Skc.equals("99"))
|
691
|
+
{
|
692
|
+
sGF1_Skc = "***";
|
693
|
+
}
|
694
|
+
else
|
695
|
+
{
|
696
|
+
try
|
697
|
+
{
|
698
|
+
iWork = Integer.parseInt(sGF1_Skc); // Convert to integer
|
699
|
+
}
|
700
|
+
catch (Exception e)
|
701
|
+
{
|
702
|
+
sGF1_Skc = "***"; // Data error. Set to missing.
|
703
|
+
}
|
704
|
+
if( ! sGF1_Skc.equals("***") )
|
705
|
+
{
|
706
|
+
if(iWork == 0) { sGF1_Skc = "CLR"; }
|
707
|
+
else { if((iWork >= 1) && (iWork <= 4)) { sGF1_Skc = "SCT"; }
|
708
|
+
else { if((iWork >= 5) && (iWork <= 7)) { sGF1_Skc = "BKN"; }
|
709
|
+
else { if(iWork == 8) { sGF1_Skc = "OVC"; }
|
710
|
+
else { if(iWork == 9) { sGF1_Skc = "OBS"; }
|
711
|
+
else { if(iWork == 10) { sGF1_Skc = "POB"; }}}}}}
|
712
|
+
}
|
713
|
+
}
|
714
|
+
if(sGF1_Low.equals("99")) // Low cloud type
|
715
|
+
{
|
716
|
+
sGF1_Low = "*";
|
717
|
+
}
|
718
|
+
else
|
719
|
+
{
|
720
|
+
sGF1_Low = sGF1_Low.substring(1,2);
|
721
|
+
}
|
722
|
+
|
723
|
+
if(sGF1_Med.equals("99")) // Med cloud type
|
724
|
+
{
|
725
|
+
sGF1_Med = "*";
|
726
|
+
}
|
727
|
+
else
|
728
|
+
{
|
729
|
+
sGF1_Med = sGF1_Med.substring(1,2);
|
730
|
+
}
|
731
|
+
|
732
|
+
if(sGF1_Hi.equals("99")) // High cloud type
|
733
|
+
{
|
734
|
+
sGF1_Hi = "*";
|
735
|
+
}
|
736
|
+
else
|
737
|
+
{
|
738
|
+
sGF1_Hi = sGF1_Hi.substring(1,2);
|
739
|
+
}
|
740
|
+
}
|
741
|
+
} // End of getGF1
|
742
|
+
|
743
|
+
|
744
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
745
|
+
// getMW1 - Get MW1 element and format its output.
|
746
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
747
|
+
public static void getMW1(String p_sRecd)
|
748
|
+
{
|
749
|
+
sMW1 = "";
|
750
|
+
sMW1_Fill1 = "";
|
751
|
+
sMW1_Ww = "**";
|
752
|
+
sMW1_Fill2 = "";
|
753
|
+
iMW1_IndexOf = p_sRecd.indexOf("MW1");
|
754
|
+
if ( (iMW1_IndexOf >= 0) && (iMW1_IndexOf < iREM_IndexOf) )
|
755
|
+
{
|
756
|
+
sMW1 = p_sRecd.substring(iMW1_IndexOf,iMW1_IndexOf+iMW1_Length);
|
757
|
+
sMW1_Fill1 = sMW1.substring(1,3); // 3
|
758
|
+
sMW1_Ww = sMW1.substring(3,5); // 2
|
759
|
+
sMW1_Fill2 = sMW1.substring(5,6); // 1
|
760
|
+
}
|
761
|
+
} // End of getMW1
|
762
|
+
|
763
|
+
|
764
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
765
|
+
// getMW2 - Get MW2 element and format its output.
|
766
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
767
|
+
public static void getMW2(String p_sRecd)
|
768
|
+
{
|
769
|
+
sMW2 = "";
|
770
|
+
sMW2_Fill1 = "";
|
771
|
+
sMW2_Ww = "**";
|
772
|
+
sMW2_Fill2 = "";
|
773
|
+
iMW2_IndexOf = p_sRecd.indexOf("MW2");
|
774
|
+
if ( (iMW2_IndexOf >= 0) && (iMW2_IndexOf < iREM_IndexOf) )
|
775
|
+
{
|
776
|
+
sMW2 = p_sRecd.substring(iMW2_IndexOf,iMW2_IndexOf+iMW2_Length);
|
777
|
+
sMW2_Fill1 = sMW2.substring(1,3); // 3
|
778
|
+
sMW2_Ww = sMW2.substring(3,5); // 2
|
779
|
+
sMW2_Fill2 = sMW2.substring(5,6); // 1
|
780
|
+
}
|
781
|
+
} // End of getMW2
|
782
|
+
|
783
|
+
|
784
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
785
|
+
// getMW3 - Get MW3 element and format its output.
|
786
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
787
|
+
public static void getMW3(String p_sRecd)
|
788
|
+
{
|
789
|
+
sMW3 = "";
|
790
|
+
sMW3_Fill1 = "";
|
791
|
+
sMW3_Ww = "**";
|
792
|
+
sMW3_Fill2 = "";
|
793
|
+
iMW3_IndexOf = p_sRecd.indexOf("MW3");
|
794
|
+
if ( (iMW3_IndexOf >= 0) && (iMW3_IndexOf < iREM_IndexOf) )
|
795
|
+
{
|
796
|
+
sMW3 = p_sRecd.substring(iMW3_IndexOf,iMW3_IndexOf+iMW3_Length);
|
797
|
+
sMW3_Fill1 = sMW3.substring(1,3); // 3
|
798
|
+
sMW3_Ww = sMW3.substring(3,5); // 2
|
799
|
+
sMW3_Fill2 = sMW3.substring(5,6); // 1
|
800
|
+
}
|
801
|
+
} // End of getMW3
|
802
|
+
|
803
|
+
|
804
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
805
|
+
// getMW4 - Get MW4 element and format its output.
|
806
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
807
|
+
public static void getMW4(String p_sRecd)
|
808
|
+
{
|
809
|
+
sMW4 = "";
|
810
|
+
sMW4_Fill1 = "";
|
811
|
+
sMW4_Ww = "**";
|
812
|
+
sMW4_Fill2 = "";
|
813
|
+
iMW4_IndexOf = p_sRecd.indexOf("MW4");
|
814
|
+
if ( (iMW4_IndexOf >= 0) && (iMW4_IndexOf < iREM_IndexOf) )
|
815
|
+
{
|
816
|
+
sMW4 = p_sRecd.substring(iMW4_IndexOf,iMW4_IndexOf+iMW4_Length);
|
817
|
+
sMW4_Fill1 = sMW4.substring(1,3); // 3
|
818
|
+
sMW4_Ww = sMW4.substring(3,5); // 2
|
819
|
+
sMW4_Fill2 = sMW4.substring(5,6); // 1
|
820
|
+
}
|
821
|
+
} // End of getMW4
|
822
|
+
|
823
|
+
|
824
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
825
|
+
// getAY1 - Get AY1 element and format its output.
|
826
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
827
|
+
public static void getAY1(String p_sRecd)
|
828
|
+
{
|
829
|
+
sAY1 = "";
|
830
|
+
sAY1_Fill1 = "";
|
831
|
+
sAY1_Pw = "*";
|
832
|
+
sAY1_Fill2 = "";
|
833
|
+
iAY1_IndexOf = p_sRecd.indexOf("AY1");
|
834
|
+
if ( (iAY1_IndexOf >= 0) && (iAY1_IndexOf < iREM_IndexOf) )
|
835
|
+
{
|
836
|
+
sAY1 = p_sRecd.substring(iAY1_IndexOf,iAY1_IndexOf+iAY1_Length);
|
837
|
+
sAY1_Fill1 = sAY1.substring(1,3); // 3
|
838
|
+
sAY1_Pw = sAY1.substring(3,4); // 1
|
839
|
+
sAY1_Fill2 = sAY1.substring(4,8); // 4
|
840
|
+
}
|
841
|
+
} // End of getAY1
|
842
|
+
|
843
|
+
|
844
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
845
|
+
// getMA1 - Get MA1 element and format its output.
|
846
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
847
|
+
public static void getMA1(String p_sRecd)
|
848
|
+
{
|
849
|
+
sMA1 = "";
|
850
|
+
sMA1_Fill1 = "";
|
851
|
+
sMA1_Alt = "*****";
|
852
|
+
sMA1_Fill2 = "";
|
853
|
+
sMA1_Stp = "******";
|
854
|
+
sMA1_Fill3 = "";
|
855
|
+
iMA1_IndexOf = p_sRecd.indexOf("MA1");
|
856
|
+
if ( (iMA1_IndexOf >= 0) && (iMA1_IndexOf < iREM_IndexOf) )
|
857
|
+
{
|
858
|
+
sMA1 = p_sRecd.substring(iMA1_IndexOf,iMA1_IndexOf+iMA1_Length);
|
859
|
+
sMA1_Fill1 = sMA1.substring(1,3); // 3
|
860
|
+
sMA1_Alt = sMA1.substring(3,8); // 5
|
861
|
+
sMA1_Fill2 = sMA1.substring(8,9); // 1
|
862
|
+
sMA1_Stp = sMA1.substring(9,14); // 5
|
863
|
+
sMA1_Fill3 = sMA1.substring(14,15); // 1
|
864
|
+
|
865
|
+
if(sMA1_Alt.equals("99999"))
|
866
|
+
{
|
867
|
+
sMA1_Alt = "*****";
|
868
|
+
}
|
869
|
+
else
|
870
|
+
{
|
871
|
+
try
|
872
|
+
{
|
873
|
+
fWork = Float.parseFloat(sMA1_Alt); // Convert to floating point
|
874
|
+
}
|
875
|
+
catch (Exception e)
|
876
|
+
{
|
877
|
+
sMA1_Alt = "*****"; // Data error. Set to missing.
|
878
|
+
}
|
879
|
+
if( ! sMA1_Alt.equals("*****") )
|
880
|
+
{
|
881
|
+
fWork = ((float)((fWork / 10.0)*100.0) / (float) 3386.39); // Convert Hectopascals to Inches
|
882
|
+
sMA1_Alt = fmt5_2.format(fWork);
|
883
|
+
sMA1_Alt = String.format("%5s",sMA1_Alt);
|
884
|
+
}
|
885
|
+
}
|
886
|
+
if(sMA1_Stp.equals("99999"))
|
887
|
+
{
|
888
|
+
sMA1_Stp = "******";
|
889
|
+
}
|
890
|
+
else
|
891
|
+
{
|
892
|
+
try
|
893
|
+
{
|
894
|
+
fWork = Float.parseFloat(sMA1_Stp); // Convert to floating point
|
895
|
+
}
|
896
|
+
catch (Exception e)
|
897
|
+
{
|
898
|
+
sMA1_Stp = "******"; // Data error. Set to missing.
|
899
|
+
}
|
900
|
+
if( ! sMA1_Stp.equals("******") )
|
901
|
+
{
|
902
|
+
fWork = ((float)(fWork / 10.0)); // Convert convert Hectopascals to Millibars
|
903
|
+
sMA1_Stp = fmt6_1.format(fWork);
|
904
|
+
sMA1_Stp = String.format("%6s",sMA1_Stp);
|
905
|
+
}
|
906
|
+
}
|
907
|
+
}
|
908
|
+
} // End of getMA1
|
909
|
+
|
910
|
+
|
911
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
912
|
+
// getKA1 - Get KA1 element and format its output.
|
913
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
914
|
+
public static void getKA1(String p_sRecd)
|
915
|
+
{
|
916
|
+
sKA1 = "";
|
917
|
+
sKA1_Fill1 = "";
|
918
|
+
sKA1_Code = "*";
|
919
|
+
sKA1_Temp = "***";
|
920
|
+
sKA1_Fill2 = "";
|
921
|
+
iKA1_IndexOf = p_sRecd.indexOf("KA1");
|
922
|
+
if ( (iKA1_IndexOf >= 0) && (iKA1_IndexOf < iREM_IndexOf) )
|
923
|
+
{
|
924
|
+
sKA1 = p_sRecd.substring(iKA1_IndexOf,iKA1_IndexOf+iKA1_Length);
|
925
|
+
sKA1_Fill1 = sKA1.substring(1,6); // 6
|
926
|
+
sKA1_Code = sKA1.substring(6,7); // 1
|
927
|
+
sKA1_Temp = sKA1.substring(7,12); // 5
|
928
|
+
sKA1_Fill2 = sKA1.substring(12,13); // 1
|
929
|
+
if(sKA1_Temp.equals("+9999"))
|
930
|
+
{
|
931
|
+
sKA1_Temp = "***";
|
932
|
+
}
|
933
|
+
else
|
934
|
+
{
|
935
|
+
try
|
936
|
+
{
|
937
|
+
fWork = Float.parseFloat(sKA1_Temp); // Convert to floating point
|
938
|
+
}
|
939
|
+
catch (Exception e)
|
940
|
+
{
|
941
|
+
sKA1_Temp = "***"; // Data error. Set to missing.
|
942
|
+
}
|
943
|
+
if( ! sKA1_Temp.equals("***") )
|
944
|
+
{
|
945
|
+
if(fWork < -178)
|
946
|
+
{
|
947
|
+
fWork = (int)(((float)fWork / 10.0) * 1.8 + 32.0 - .5); // Handle temps below 0F
|
948
|
+
}
|
949
|
+
else
|
950
|
+
{
|
951
|
+
fWork = (int)(((float)fWork / 10.0) * 1.8 + 32.0 + .5);
|
952
|
+
}
|
953
|
+
if(sKA1_Code.equals("N"))
|
954
|
+
{
|
955
|
+
sMinTemp = formatInt( (int) fWork,3);
|
956
|
+
}
|
957
|
+
else
|
958
|
+
{
|
959
|
+
if(sKA1_Code.equals("M"))
|
960
|
+
{
|
961
|
+
sMaxTemp = formatInt( (int) fWork,3);
|
962
|
+
}
|
963
|
+
}
|
964
|
+
}
|
965
|
+
}
|
966
|
+
}
|
967
|
+
} // End of getKA1
|
968
|
+
|
969
|
+
|
970
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
971
|
+
// getKA2 - Get KA2 element and format its output.
|
972
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
973
|
+
public static void getKA2(String p_sRecd)
|
974
|
+
{
|
975
|
+
sKA2 = "";
|
976
|
+
sKA2_Fill1 = "";
|
977
|
+
sKA2_Code = "*";
|
978
|
+
sKA2_Temp = "***";
|
979
|
+
sKA2_Fill2 = "";
|
980
|
+
iKA2_IndexOf = p_sRecd.indexOf("KA2");
|
981
|
+
if ( (iKA2_IndexOf >= 0) && (iKA2_IndexOf < iREM_IndexOf) )
|
982
|
+
{
|
983
|
+
sKA2 = p_sRecd.substring(iKA2_IndexOf,iKA2_IndexOf+iKA2_Length);
|
984
|
+
sKA2_Fill1 = sKA2.substring(1,6); // 6
|
985
|
+
sKA2_Code = sKA2.substring(6,7); // 1
|
986
|
+
sKA2_Temp = sKA2.substring(7,12); // 5
|
987
|
+
sKA2_Fill2 = sKA2.substring(12,13); // 1
|
988
|
+
if(sKA2_Temp.equals("+9999"))
|
989
|
+
{
|
990
|
+
sKA2_Temp = "***";
|
991
|
+
}
|
992
|
+
else
|
993
|
+
{
|
994
|
+
try
|
995
|
+
{
|
996
|
+
fWork = Float.parseFloat(sKA2_Temp); // Convert to floating point
|
997
|
+
}
|
998
|
+
catch (Exception e)
|
999
|
+
{
|
1000
|
+
sKA2_Temp = "***"; // Data error. Set to missing.
|
1001
|
+
}
|
1002
|
+
if( ! sKA2_Temp.equals("***") )
|
1003
|
+
{
|
1004
|
+
if(fWork < -178)
|
1005
|
+
{
|
1006
|
+
fWork = (int)(((float)fWork / 10.0) * 1.8 + 32.0 - .5); // Handle temps below 0F
|
1007
|
+
}
|
1008
|
+
else
|
1009
|
+
{
|
1010
|
+
fWork = (int)(((float)fWork / 10.0) * 1.8 + 32.0 + .5);
|
1011
|
+
}
|
1012
|
+
if(sKA2_Code.equals("N"))
|
1013
|
+
{
|
1014
|
+
sMinTemp = formatInt( (int) fWork,3);
|
1015
|
+
}
|
1016
|
+
else
|
1017
|
+
{
|
1018
|
+
if(sKA2_Code.equals("M"))
|
1019
|
+
{
|
1020
|
+
sMaxTemp = formatInt( (int) fWork,3);
|
1021
|
+
}
|
1022
|
+
}
|
1023
|
+
}
|
1024
|
+
}
|
1025
|
+
}
|
1026
|
+
} // End of getKA2
|
1027
|
+
|
1028
|
+
|
1029
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1030
|
+
// getAA1 - Get AA1 element and format its output.
|
1031
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1032
|
+
public static void getAA1(String p_sRecd)
|
1033
|
+
{
|
1034
|
+
sAA1 = "";
|
1035
|
+
sAA1_Fill1 = "";
|
1036
|
+
sAA1_Hours = "";
|
1037
|
+
sAA1_Pcp = "";
|
1038
|
+
sAA1_Trace = "";
|
1039
|
+
sAA1_Fill2 = "";
|
1040
|
+
iAA1_IndexOf = p_sRecd.indexOf("AA1");
|
1041
|
+
if ( (iAA1_IndexOf >= 0) && (iAA1_IndexOf < iREM_IndexOf) )
|
1042
|
+
{
|
1043
|
+
sAA1 = p_sRecd.substring(iAA1_IndexOf,iAA1_IndexOf+iAA1_Length);
|
1044
|
+
sAA1_Fill1 = sAA1.substring(1,3); // 3
|
1045
|
+
sAA1_Hours = sAA1.substring(3,5); // 2
|
1046
|
+
sAA1_Pcp = sAA1.substring(5,9); // 4
|
1047
|
+
sAA1_Trace = sAA1.substring(9,10); // 1
|
1048
|
+
sAA1_Fill2 = sAA1.substring(10,11); // 1
|
1049
|
+
if( sAA1_Pcp.equals("9999") )
|
1050
|
+
{
|
1051
|
+
sAA1_Pcp = "*****";
|
1052
|
+
}
|
1053
|
+
else
|
1054
|
+
{
|
1055
|
+
try
|
1056
|
+
{
|
1057
|
+
fWork = Float.parseFloat(sAA1_Pcp); // Convert to floating point
|
1058
|
+
}
|
1059
|
+
catch (Exception e)
|
1060
|
+
{
|
1061
|
+
sAA1_Pcp = "*****"; // Data error. Set to missing.
|
1062
|
+
}
|
1063
|
+
if( ! sAA1_Pcp.equals("*****") )
|
1064
|
+
{
|
1065
|
+
setPcp(sAA1_Hours,sAA1_Trace);
|
1066
|
+
}
|
1067
|
+
}
|
1068
|
+
}
|
1069
|
+
} // End of getAA1
|
1070
|
+
|
1071
|
+
|
1072
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1073
|
+
// getAA2 - Get AA2 element and format its output.
|
1074
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1075
|
+
public static void getAA2(String p_sRecd)
|
1076
|
+
{
|
1077
|
+
sAA2 = "";
|
1078
|
+
sAA2_Fill1 = "";
|
1079
|
+
sAA2_Hours = "";
|
1080
|
+
sAA2_Pcp = "";
|
1081
|
+
sAA2_Trace = "";
|
1082
|
+
sAA2_Fill2 = "";
|
1083
|
+
iAA2_IndexOf = p_sRecd.indexOf("AA2");
|
1084
|
+
if ( (iAA2_IndexOf >= 0) && (iAA2_IndexOf < iREM_IndexOf) )
|
1085
|
+
{
|
1086
|
+
sAA2 = p_sRecd.substring(iAA2_IndexOf,iAA2_IndexOf+iAA2_Length);
|
1087
|
+
sAA2_Fill1 = sAA2.substring(1,3); // 3
|
1088
|
+
sAA2_Hours = sAA2.substring(3,5); // 2
|
1089
|
+
sAA2_Pcp = sAA2.substring(5,9); // 4
|
1090
|
+
sAA2_Trace = sAA2.substring(9,10); // 1
|
1091
|
+
sAA2_Fill2 = sAA2.substring(10,11); // 1
|
1092
|
+
if( sAA2_Pcp.equals("9999") )
|
1093
|
+
{
|
1094
|
+
sAA2_Pcp = "*****";
|
1095
|
+
}
|
1096
|
+
else
|
1097
|
+
{
|
1098
|
+
try
|
1099
|
+
{
|
1100
|
+
fWork = Float.parseFloat(sAA2_Pcp); // Convert to floating point
|
1101
|
+
}
|
1102
|
+
catch (Exception e)
|
1103
|
+
{
|
1104
|
+
sAA2_Pcp = "*****"; // Data error. Set to missing.
|
1105
|
+
}
|
1106
|
+
if( ! sAA2_Pcp.equals("*****") )
|
1107
|
+
{
|
1108
|
+
setPcp(sAA2_Hours,sAA2_Trace);
|
1109
|
+
}
|
1110
|
+
}
|
1111
|
+
}
|
1112
|
+
} // End of getAA2
|
1113
|
+
|
1114
|
+
|
1115
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1116
|
+
// getAA3 - Get AA3 element and format its output.
|
1117
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1118
|
+
public static void getAA3(String p_sRecd)
|
1119
|
+
{
|
1120
|
+
sAA3 = "";
|
1121
|
+
sAA3_Fill1 = "";
|
1122
|
+
sAA3_Hours = "";
|
1123
|
+
sAA3_Pcp = "";
|
1124
|
+
sAA3_Trace = "";
|
1125
|
+
sAA3_Fill2 = "";
|
1126
|
+
iAA3_IndexOf = p_sRecd.indexOf("AA3");
|
1127
|
+
if ( (iAA3_IndexOf >= 0) && (iAA3_IndexOf < iREM_IndexOf) )
|
1128
|
+
{
|
1129
|
+
sAA3 = p_sRecd.substring(iAA3_IndexOf,iAA3_IndexOf+iAA3_Length);
|
1130
|
+
sAA3_Fill1 = sAA3.substring(1,3); // 3
|
1131
|
+
sAA3_Hours = sAA3.substring(3,5); // 2
|
1132
|
+
sAA3_Pcp = sAA3.substring(5,9); // 4
|
1133
|
+
sAA3_Trace = sAA3.substring(9,10); // 1
|
1134
|
+
sAA3_Fill2 = sAA3.substring(10,11); // 1
|
1135
|
+
if( sAA3_Pcp.equals("9999") )
|
1136
|
+
{
|
1137
|
+
sAA3_Pcp = "*****";
|
1138
|
+
}
|
1139
|
+
else
|
1140
|
+
{
|
1141
|
+
try
|
1142
|
+
{
|
1143
|
+
fWork = Float.parseFloat(sAA3_Pcp); // Convert to floating point
|
1144
|
+
}
|
1145
|
+
catch (Exception e)
|
1146
|
+
{
|
1147
|
+
sAA3_Pcp = "*****"; // Data error. Set to missing.
|
1148
|
+
}
|
1149
|
+
if( ! sAA3_Pcp.equals("*****") )
|
1150
|
+
{
|
1151
|
+
setPcp(sAA3_Hours,sAA3_Trace);
|
1152
|
+
}
|
1153
|
+
}
|
1154
|
+
}
|
1155
|
+
} // End of getAA3
|
1156
|
+
|
1157
|
+
|
1158
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1159
|
+
// getAA4 - Get AA4 element and format its output.
|
1160
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1161
|
+
public static void getAA4(String p_sRecd)
|
1162
|
+
{
|
1163
|
+
sAA4 = "";
|
1164
|
+
sAA4_Fill1 = "";
|
1165
|
+
sAA4_Hours = "";
|
1166
|
+
sAA4_Pcp = "";
|
1167
|
+
sAA4_Trace = "";
|
1168
|
+
sAA4_Fill2 = "";
|
1169
|
+
iAA4_IndexOf = p_sRecd.indexOf("AA4");
|
1170
|
+
if ( (iAA4_IndexOf >= 0) && (iAA4_IndexOf < iREM_IndexOf) )
|
1171
|
+
{
|
1172
|
+
sAA4 = p_sRecd.substring(iAA4_IndexOf,iAA4_IndexOf+iAA4_Length);
|
1173
|
+
sAA4_Fill1 = sAA4.substring(1,3); // 3
|
1174
|
+
sAA4_Hours = sAA4.substring(3,5); // 2
|
1175
|
+
sAA4_Pcp = sAA4.substring(5,9); // 4
|
1176
|
+
sAA4_Trace = sAA4.substring(9,10); // 1
|
1177
|
+
sAA4_Fill2 = sAA4.substring(10,11); // 1
|
1178
|
+
if( sAA4_Pcp.equals("9999") )
|
1179
|
+
{
|
1180
|
+
sAA4_Pcp = "*****";
|
1181
|
+
}
|
1182
|
+
else
|
1183
|
+
{
|
1184
|
+
try
|
1185
|
+
{
|
1186
|
+
fWork = Float.parseFloat(sAA4_Pcp); // Convert to floating point
|
1187
|
+
}
|
1188
|
+
catch (Exception e)
|
1189
|
+
{
|
1190
|
+
sAA4_Pcp = "*****"; // Data error. Set to missing.
|
1191
|
+
}
|
1192
|
+
if( ! sAA4_Pcp.equals("*****") )
|
1193
|
+
{
|
1194
|
+
setPcp(sAA4_Hours,sAA4_Trace);
|
1195
|
+
}
|
1196
|
+
}
|
1197
|
+
}
|
1198
|
+
} // End of getAA4
|
1199
|
+
|
1200
|
+
|
1201
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1202
|
+
// setPcp - Take AA elements and set Precip values.
|
1203
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1204
|
+
public static void setPcp(String p_sHours, String p_sTrace)
|
1205
|
+
{
|
1206
|
+
fWork = (fWork / (float) 10.0) * (float) .03937008; // Convert precip depths from Millimeters to Inches
|
1207
|
+
if( p_sHours.equals("01") )
|
1208
|
+
{
|
1209
|
+
sPcp01 = fmt5_2.format(fWork);
|
1210
|
+
sPcp01 = String.format("%5s",sPcp01);
|
1211
|
+
if( p_sTrace.equals("2") )
|
1212
|
+
{
|
1213
|
+
sPcp01t = "T";
|
1214
|
+
}
|
1215
|
+
}
|
1216
|
+
else
|
1217
|
+
{
|
1218
|
+
if( p_sHours.equals("06") )
|
1219
|
+
{
|
1220
|
+
sPcp06 = fmt5_2.format(fWork);
|
1221
|
+
sPcp06 = String.format("%5s",sPcp06);
|
1222
|
+
if( p_sTrace.equals("2") )
|
1223
|
+
{
|
1224
|
+
sPcp06t = "T";
|
1225
|
+
}
|
1226
|
+
}
|
1227
|
+
else
|
1228
|
+
{
|
1229
|
+
if( p_sHours.equals("24") )
|
1230
|
+
{
|
1231
|
+
sPcp24 = fmt5_2.format(fWork);
|
1232
|
+
sPcp24 = String.format("%5s",sPcp24);
|
1233
|
+
if( p_sTrace.equals("2") )
|
1234
|
+
{
|
1235
|
+
sPcp24t = "T";
|
1236
|
+
}
|
1237
|
+
}
|
1238
|
+
else
|
1239
|
+
{
|
1240
|
+
sPcp12 = fmt5_2.format(fWork);
|
1241
|
+
sPcp12 = String.format("%5s",sPcp12);
|
1242
|
+
if( p_sTrace.equals("2") )
|
1243
|
+
{
|
1244
|
+
sPcp12t = "T";
|
1245
|
+
}
|
1246
|
+
}
|
1247
|
+
}
|
1248
|
+
}
|
1249
|
+
} // End of setPcp
|
1250
|
+
|
1251
|
+
|
1252
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1253
|
+
// getAJ1 - Get AJ1 element and format its output.
|
1254
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1255
|
+
public static void getAJ1(String p_sRecd)
|
1256
|
+
{
|
1257
|
+
sAJ1 = "";
|
1258
|
+
sAJ1_Fill1 = "";
|
1259
|
+
sAJ1_Sd = "**";
|
1260
|
+
sAJ1_Fill2 = "";
|
1261
|
+
iAJ1_IndexOf = p_sRecd.indexOf("AJ1");
|
1262
|
+
if ( (iAJ1_IndexOf >= 0) && (iAJ1_IndexOf < iREM_IndexOf) )
|
1263
|
+
{
|
1264
|
+
sAJ1 = p_sRecd.substring(iAJ1_IndexOf,iAJ1_IndexOf+iAJ1_Length);
|
1265
|
+
sAJ1_Fill1 = sAJ1.substring(1,3); // 3
|
1266
|
+
sAJ1_Sd = sAJ1.substring(3,7); // 4
|
1267
|
+
sAJ1_Fill2 = sAJ1.substring(7,17); // 10
|
1268
|
+
if( sAJ1_Sd.equals("9999") )
|
1269
|
+
{
|
1270
|
+
sAJ1_Sd = "**";
|
1271
|
+
}
|
1272
|
+
else
|
1273
|
+
{
|
1274
|
+
try
|
1275
|
+
{
|
1276
|
+
fWork = Float.parseFloat(sAJ1_Sd); // Convert to floating point
|
1277
|
+
}
|
1278
|
+
catch (Exception e)
|
1279
|
+
{
|
1280
|
+
sAJ1_Sd = "**"; // Data error. Set to missing.
|
1281
|
+
}
|
1282
|
+
if( ! sAJ1_Sd.equals("**") )
|
1283
|
+
{
|
1284
|
+
iWork = (int) (fWork * (float) .3937008 + .5); // Convert precip depths from Millimeters to Inches
|
1285
|
+
sAJ1_Sd = fmt02.format(iWork);
|
1286
|
+
sAJ1_Sd = String.format("%2s",sAJ1_Sd);
|
1287
|
+
}
|
1288
|
+
}
|
1289
|
+
}
|
1290
|
+
} // End of getAJ1
|
1291
|
+
|
1292
|
+
|
1293
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1294
|
+
// getAW1 - Get AW1 element and format its output.
|
1295
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1296
|
+
public static void getAW1(String p_sRecd)
|
1297
|
+
{
|
1298
|
+
sAW1 = "";
|
1299
|
+
sAW1_Fill1 = "";
|
1300
|
+
sAW1_Zz = "**";
|
1301
|
+
sAW1_Fill2 = "";
|
1302
|
+
iAW1_IndexOf = p_sRecd.indexOf("AW1");
|
1303
|
+
if ( (iAW1_IndexOf >= 0) && (iAW1_IndexOf < iREM_IndexOf) )
|
1304
|
+
{
|
1305
|
+
sAW1 = p_sRecd.substring(iAW1_IndexOf,iAW1_IndexOf+iAW1_Length);
|
1306
|
+
sAW1_Fill1 = sAW1.substring(1,3); // 3
|
1307
|
+
sAW1_Zz = sAW1.substring(3,5); // 2
|
1308
|
+
sAW1_Fill2 = sAW1.substring(5,6); // 1
|
1309
|
+
}
|
1310
|
+
} // End of getAW1
|
1311
|
+
|
1312
|
+
|
1313
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1314
|
+
// getAW2 - Get AW2 element and format its output.
|
1315
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1316
|
+
public static void getAW2(String p_sRecd)
|
1317
|
+
{
|
1318
|
+
sAW2 = "";
|
1319
|
+
sAW2_Fill1 = "";
|
1320
|
+
sAW2_Zz = "**";
|
1321
|
+
sAW2_Fill2 = "";
|
1322
|
+
iAW2_IndexOf = p_sRecd.indexOf("AW2");
|
1323
|
+
if ( (iAW2_IndexOf >= 0) && (iAW2_IndexOf < iREM_IndexOf) )
|
1324
|
+
{
|
1325
|
+
sAW2 = p_sRecd.substring(iAW2_IndexOf,iAW2_IndexOf+iAW2_Length);
|
1326
|
+
sAW2_Fill1 = sAW2.substring(1,3); // 3
|
1327
|
+
sAW2_Zz = sAW2.substring(3,5); // 2
|
1328
|
+
sAW2_Fill2 = sAW2.substring(5,6); // 1
|
1329
|
+
}
|
1330
|
+
} // End of getAW2
|
1331
|
+
|
1332
|
+
|
1333
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1334
|
+
// getAW3 - Get AW3 element and format its output.
|
1335
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1336
|
+
public static void getAW3(String p_sRecd)
|
1337
|
+
{
|
1338
|
+
sAW3 = "";
|
1339
|
+
sAW3_Fill1 = "";
|
1340
|
+
sAW3_Zz = "**";
|
1341
|
+
sAW3_Fill2 = "";
|
1342
|
+
iAW3_IndexOf = p_sRecd.indexOf("AW3");
|
1343
|
+
if ( (iAW3_IndexOf >= 0) && (iAW3_IndexOf < iREM_IndexOf) )
|
1344
|
+
{
|
1345
|
+
sAW3 = p_sRecd.substring(iAW3_IndexOf,iAW3_IndexOf+iAW3_Length);
|
1346
|
+
sAW3_Fill1 = sAW3.substring(1,3); // 3
|
1347
|
+
sAW3_Zz = sAW3.substring(3,5); // 2
|
1348
|
+
sAW3_Fill2 = sAW3.substring(5,6); // 1
|
1349
|
+
}
|
1350
|
+
} // End of getAW3
|
1351
|
+
|
1352
|
+
|
1353
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1354
|
+
// getAW4 - Get AW4 element and format its output.
|
1355
|
+
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
1356
|
+
public static void getAW4(String p_sRecd)
|
1357
|
+
{
|
1358
|
+
sAW4 = "";
|
1359
|
+
sAW4_Fill1 = "";
|
1360
|
+
sAW4_Zz = "**";
|
1361
|
+
sAW4_Fill2 = "";
|
1362
|
+
iAW4_IndexOf = p_sRecd.indexOf("AW4");
|
1363
|
+
if ( (iAW4_IndexOf >= 0) && (iAW4_IndexOf < iREM_IndexOf) )
|
1364
|
+
{
|
1365
|
+
sAW4 = p_sRecd.substring(iAW4_IndexOf,iAW4_IndexOf+iAW4_Length);
|
1366
|
+
sAW4_Fill1 = sAW4.substring(1,3); // 3
|
1367
|
+
sAW4_Zz = sAW4.substring(3,5); // 2
|
1368
|
+
sAW4_Fill2 = sAW4.substring(5,6); // 1
|
1369
|
+
}
|
1370
|
+
} // End of getAW4
|
1371
|
+
}
|