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.
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
+ }