37 printf (
"raw points %lu\n", r->
n );
38 for ( i = 0; i < r->
n ; i++ )
44 printf (
"i=%3ld, dt=%4d, flags=%08X, P=%6.1lf, h=%6.0lf, dlat=%7.4lf, dlon=%7.4lf, T=%6.1lf, Td=%6.1lf, dd=%03.0lf, ff=%5.1lf\n",
49 printf (
"i=%3ld, dt=%4d, flags=%08X, P=%6.1lf, h=%6.0lf, dlat=%7.4lf, dlon=%7.4lf, ",
53 printf (
"T=%6.1lf, ", r->
raw[i].
T - 273.15 );
57 printf (
"T= ///./, " );
62 printf (
"T=%6.1lf, ", r->
raw[i].
Td - 273.15 );
66 printf (
"Td= ///./, " );
71 printf (
"dd=%03.0lf, ", r->
raw[i].
dd );
75 printf (
"dd=///, " );
80 printf (
"ff=%5.1lf\n", r->
raw[i].
ff );
84 printf (
"ff= //./\n" );
102 printf (
"raw share wind points %lu\n", w->
n );
103 for ( i = 0; i < w->
n ; i++ )
106 printf (
"i=%3ld, dt=%4d, flags=%08X, P=%6.1lf, dlat=%7.4lf, dlon=%7.4lf, ws_blw=%5.1lf, ws_abv=%5.1lf\n",
111 printf (
"i=%3ld, dt=%4d, flags=%08X, P=%6.1lf, dlat=%7.4lf, dlon=%7.4lf, ",
116 printf (
"ws_blw=%5.1lf, ", w->
raw[i].
ws_blw );
120 printf (
"ws_blw= ///./, " );
125 printf (
"ws_abv=%5.1lf\n", w->
raw[i].
ws_abv );
129 printf (
"ws_abv= ///./\n" );
150 used += snprintf ( c + used, lmax - used,
"%s", t->
t.
datime );
152 used += snprintf ( c + used, lmax - used,
" %s%s", t->
a.
s1.
MiMi, t->
a.
s1.
MjMj );
156 used += snprintf ( c + used, lmax - used,
" %s", t->
a.
s1.
D_D );
159 used += snprintf ( c + used, lmax - used,
" %s%s", t->
a.
s1.
YYGG, t->
a.
s1.
id );
164 used += snprintf ( c + used, lmax - used,
" %s%s", t->
a.
s1.
II, t->
a.
s1.
iii );
170 used += snprintf ( c + used, lmax - used,
" 99%s", t->
a.
s1.
LaLaLa );
174 used += snprintf ( c + used, lmax - used,
" 99///" );
179 used += snprintf ( c + used, lmax - used,
" %s%s", t->
a.
s1.
Qc, t->
a.
s1.
LoLoLoLo );
183 used += snprintf ( c + used, lmax - used,
" /////" );
188 used += snprintf ( c + used, lmax - used,
" %s%s%s", t->
a.
s1.
MMM, t->
a.
s1.
Ula, t->
a.
s1.
Ulo );
193 used += snprintf ( c + used, lmax - used,
" %s%s", t->
a.
s1.
h0h0h0h0, t->
a.
s1.
im );
218 used += snprintf ( c + used, lmax - used,
" 99%s", t->
a.
s2.
lev0.
PnPnPn );
222 for ( i = 0; i < t->
a.
s2.
n ; i++ )
226 used += snprintf ( c + used, lmax - used,
" %s", t->
a.
s2.
std[i].
dndnfnfnfn );
248 if ( t->
a.
s3.
n == 0 )
250 used += snprintf ( c + used, lmax - used,
" 88999" );
254 for ( i = 0; i < t->
a.
s3.
n ; i++ )
256 used += snprintf ( c + used, lmax - used,
" 88%s", t->
a.
s3.
trop[i].
PnPnPn );
282 if ( t->
a.
s4.
n == 0 )
284 used += snprintf ( c + used, lmax - used,
" 77999" );
288 for ( i = 0; i < t->
a.
s4.
n ; i++ )
292 used += snprintf ( c + used, lmax - used,
" 77%s", t->
a.
s4.
windx[i].
PmPmPm );
296 used += snprintf ( c + used, lmax - used,
" 66%s", t->
a.
s4.
windx[i].
PmPmPm );
326 used += snprintf ( c + used, lmax - used,
" 31313" );
327 used += snprintf ( c + used, lmax - used,
" %s%s%s", t->
a.
s7.
sr, t->
a.
s7.
rara, t->
a.
s7.
sasa );
328 used += snprintf ( c + used, lmax - used,
" 8%s%s", t->
a.
s7.
GG, t->
a.
s7.
gg );
332 used += snprintf ( c + used, lmax - used,
" 9%s%s", t->
a.
s7.
sn, t->
a.
s7.
TwTwTw );
355 if (
t->a.e.YYYY[0] == 0 ||
t->a.e.YYYY[0] ==
'0')
375 used += snprintf (
c, lmax - used,
"=" );
393 used += snprintf (
c + used, lmax - used,
"%s",
t->
t.datime );
395 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s1.MiMi,
t->b.s1.MjMj );
397 if (
t->b.s1.D_D[0] &&
t->a.s1.II[0] == 0 )
399 used += snprintf (
c + used, lmax - used,
" %s",
t->b.s1.D_D );
402 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s1.YYGG,
t->b.s1.a4 );
407 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s1.II,
t->b.s1.iii );
411 if (
t->b.s1.LaLaLa[0] )
413 used += snprintf (
c + used, lmax - used,
" 99%s",
t->b.s1.LaLaLa );
417 used += snprintf (
c + used, lmax - used,
" 99///" );
420 if (
t->b.s1.Qc[0] &&
t->b.s1.LoLoLoLo[0] )
422 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s1.Qc,
t->b.s1.LoLoLoLo );
426 used += snprintf (
c + used, lmax - used,
" /////" );
429 if (
t->b.s1.MMM[0] &&
t->b.s1.Ula[0] &&
t->b.s1.Ulo[0] )
431 used += snprintf (
c + used, lmax - used,
" %s%s%s",
t->b.s1.MMM,
t->b.s1.Ula,
t->b.s1.Ulo );
434 if (
t->b.s1.h0h0h0h0[0] )
436 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s1.h0h0h0h0,
t->b.s1.im );
461 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s5.th[i].nini,
t->b.s5.th[i].PnPnPn );
462 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s5.th[i].TnTnTan,
t->b.s5.th[i].DnDn );
484 used += snprintf (
c + used, lmax - used,
" 21212" );
488 used += snprintf (
c + used, lmax - used,
" %s%s",
t->b.s6.wd[i].nini,
t->b.s6.wd[i].PnPnPn );
489 used += snprintf (
c + used, lmax - used,
" %s",
t->b.s6.wd[i].dndnfnfnfn );
510 used += snprintf (
c + used, lmax - used,
" 31313" );
511 used += snprintf (
c + used, lmax - used,
" %s%s%s",
t->b.s7.sr,
t->b.s7.rara,
t->b.s7.sasa );
512 used += snprintf (
c + used, lmax - used,
" 8%s%s",
t->b.s7.GG,
t->b.s7.gg );
514 if (
t->b.s7.TwTwTw[0] )
516 used += snprintf (
c + used, lmax - used,
" 9%s%s",
t->b.s7.sn,
t->b.s7.TwTwTw );
539 used += snprintf (
c + used, lmax - used,
" 41414 " );
542 used += snprintf (
c + used, lmax - used,
"%s",
t->b.s8.Nh );
546 used += snprintf (
c + used, lmax - used,
"/" );
551 used += snprintf (
c + used, lmax - used,
"%s",
t->b.s8.Cl );
555 used += snprintf (
c + used, lmax - used,
"/" );
560 used += snprintf (
c + used, lmax - used,
"%s",
t->b.s8.h );
564 used += snprintf (
c + used, lmax - used,
"/" );
569 used += snprintf (
c + used, lmax - used,
"%s",
t->b.s8.Cm );
573 used += snprintf (
c + used, lmax - used,
"/" );
578 used += snprintf (
c + used, lmax - used,
"%s",
t->b.s8.Ch );
582 used += snprintf (
c + used, lmax - used,
"/" );
609 if (
t->b.e.YYYY[0] == 0 ||
t->b.e.YYYY[0] ==
'0')
629 used += snprintf (
c, lmax - used,
"=" );
648 used += snprintf (
c + used, lmax - used,
"%s",
t->
t.datime );
650 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s1.MiMi,
t->c.s1.MjMj );
652 if (
t->c.s1.D_D[0] &&
t->a.s1.II[0] == 0 )
654 used += snprintf (
c + used, lmax - used,
" %s",
t->c.s1.D_D );
657 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s1.YYGG,
t->c.s1.id );
662 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s1.II,
t->c.s1.iii );
666 if (
t->c.s1.LaLaLa[0] )
668 used += snprintf (
c + used, lmax - used,
" 99%s",
t->c.s1.LaLaLa );
672 used += snprintf (
c + used, lmax - used,
" 99///" );
675 if (
t->c.s1.Qc[0] &&
t->c.s1.LoLoLoLo[0] )
677 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s1.Qc,
t->c.s1.LoLoLoLo );
681 used += snprintf (
c + used, lmax - used,
" /////" );
684 if (
t->c.s1.MMM[0] &&
t->c.s1.Ula[0] &&
t->c.s1.Ulo[0] )
686 used += snprintf (
c + used, lmax - used,
" %s%s%s",
t->c.s1.MMM,
t->c.s1.Ula,
t->c.s1.Ulo );
689 if (
t->c.s1.h0h0h0h0[0] )
691 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s1.h0h0h0h0,
t->c.s1.im );
714 for ( i = 0; i <
t->c.s2.n ; i++ )
716 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s2.std[i].PnPn,
t->c.s2.std[i].hnhnhn );
717 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s2.std[i].TnTnTan,
t->c.s2.std[i].DnDn );
718 used += snprintf (
c + used, lmax - used,
" %s",
t->c.s2.std[i].dndnfnfnfn );
741 if (
t->c.s3.n == 0 )
743 used += snprintf (
c + used, lmax - used,
" 88999" );
747 for ( i = 0; i <
t->c.s3.n ; i++ )
749 used += snprintf (
c + used, lmax - used,
" 88%s",
t->c.s3.trop[i].PnPnPn );
750 used += snprintf (
c + used, lmax - used,
" %s%s",
t->c.s3.trop[i].TnTnTan,
t->c.s3.trop[i].DnDn );
751 used += snprintf (
c + used, lmax - used,
" %s",
t->c.s3.trop[i].dndnfnfnfn );
775 if (
t->c.s4.n == 0 )
777 used += snprintf (
c + used, lmax - used,
" 77999" );
781 for ( i = 0; i <
t->c.s4.n ; i++ )
783 if (
t->c.s4.windx[i].no_last_wind )
785 used += snprintf (
c + used, lmax - used,
" 77%s",
t->c.s4.windx[i].PmPmPm );
789 used += snprintf (
c + used, lmax - used,
" 66%s",
t->c.s4.windx[i].PmPmPm );
791 used += snprintf (
c + used, lmax - used,
" %s",
t->c.s4.windx[i].dmdmfmfmfm );
792 if (
t->c.s4.windx[i].vbvb[0] &&
t->c.s4.windx[i].vava[0] )
794 used += snprintf (
c + used, lmax - used,
" 4%s%s",
t->c.s4.windx[i].vbvb,
t->c.s4.windx[i].vava );
818 used += snprintf (
c + used, lmax - used,
" 31313" );
819 used += snprintf (
c + used, lmax - used,
" %s%s%s",
t->c.s7.sr,
t->c.s7.rara,
t->c.s7.sasa );
820 used += snprintf (
c + used, lmax - used,
" 8%s%s",
t->c.s7.GG,
t->c.s7.gg );
822 if (
t->c.s7.TwTwTw[0] )
824 used += snprintf (
c + used, lmax - used,
" 9%s%s",
t->c.s7.sn,
t->c.s7.TwTwTw );
847 if (
t->c.e.YYYY[0] == 0 ||
t->c.e.YYYY[0] ==
'0')
867 used += snprintf (
c, lmax - used,
"=" );
885 used += snprintf (
c + used, lmax - used,
"%s",
t->
t.datime );
887 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s1.MiMi,
t->d.s1.MjMj );
889 if (
t->d.s1.D_D[0] &&
t->a.s1.II[0] == 0 )
891 used += snprintf (
c + used, lmax - used,
" %s",
t->d.s1.D_D );
894 used += snprintf (
c + used, lmax - used,
" %s/",
t->d.s1.YYGG );
899 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s1.II,
t->d.s1.iii );
903 if (
t->d.s1.LaLaLa[0] )
905 used += snprintf (
c + used, lmax - used,
" 99%s",
t->d.s1.LaLaLa );
909 used += snprintf (
c + used, lmax - used,
" 99///" );
912 if (
t->d.s1.Qc[0] &&
t->d.s1.LoLoLoLo[0] )
914 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s1.Qc,
t->d.s1.LoLoLoLo );
918 used += snprintf (
c + used, lmax - used,
" /////" );
921 if (
t->d.s1.MMM[0] &&
t->d.s1.Ula[0] &&
t->d.s1.Ulo[0] )
923 used += snprintf (
c + used, lmax - used,
" %s%s%s",
t->d.s1.MMM,
t->d.s1.Ula,
t->d.s1.Ulo );
926 if (
t->d.s1.h0h0h0h0[0] )
928 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s1.h0h0h0h0,
t->d.s1.im );
953 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s5.th[i].nini,
t->d.s5.th[i].PnPnPn );
954 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s5.th[i].TnTnTan,
t->d.s5.th[i].DnDn );
976 used += snprintf (
c + used, lmax - used,
" 21212" );
980 used += snprintf (
c + used, lmax - used,
" %s%s",
t->d.s6.wd[i].nini,
t->d.s6.wd[i].PnPnPn );
981 used += snprintf (
c + used, lmax - used,
" %s",
t->d.s6.wd[i].dndnfnfnfn );
1002 used += snprintf (
c + used, lmax - used,
" 31313" );
1003 used += snprintf (
c + used, lmax - used,
" %s%s%s",
t->d.s7.sr,
t->d.s7.rara,
t->d.s7.sasa );
1004 used += snprintf (
c + used, lmax - used,
" 8%s%s",
t->d.s7.GG,
t->d.s7.gg );
1006 if (
t->d.s7.TwTwTw[0] )
1008 used += snprintf (
c + used, lmax - used,
" 9%s%s",
t->d.s7.sn,
t->d.s7.TwTwTw );
1030 if (
t->d.e.YYYY[0] == 0 ||
t->d.e.YYYY[0] ==
'0')
1049 used += snprintf (
c, lmax - used,
"=" );
Include header file for binary bufr2tac.
size_t print_wigos_id(char **wid, size_t lmax, struct metreport *m)
#define PRINT_BITMASK_WIGOS
Bit mask to member print_mask in struct metreport to print WIGOS Identifier.
size_t print_geo(char **geo, size_t lmax, struct metreport *m)
#define PRINT_BITMASK_GEO
Bit mask to member print_mask in struct metreport to print geographic position.
size_t print_temp_b_sec5(char **sec5, size_t lmax, struct temp_chunks *t)
Prints the section 5 of part B of a TEMP report.
size_t print_temp_c_sec2(char **sec2, size_t lmax, struct temp_chunks *t)
Prints the section 2 of part C of a TEMP report.
size_t print_temp_d_sec5(char **sec5, size_t lmax, struct temp_chunks *t)
Prints the section 5 of part D of a TEMP report.
size_t print_temp_c_sec4(char **sec4, size_t lmax, struct temp_chunks *t)
Prints the section 4 of part C of a TEMP report.
size_t print_temp_c_sec7(char **sec7, size_t lmax, struct temp_chunks *t)
Prints the section 7 of part C of a TEMP report.
size_t print_temp_b_sec6(char **sec6, size_t lmax, struct temp_chunks *t)
Prints the section 6 of part B of a TEMP report.
size_t print_temp_b_sec8(char **sec8, size_t lmax, struct temp_chunks *t)
Prints the section 8 of part B of a TEMP report.
int print_temp_d(struct metreport *m)
Prints the part D of a TEMP report into a string.
size_t print_temp_a_sec2(char **sec2, size_t lmax, struct temp_chunks *t)
Prints the section 2 of part A of a TEMP report.
int print_temp_raw_wind_shear_data(struct temp_raw_wind_shear_data *w)
Prints for debug a struct temp_raw_data.
size_t print_temp_d_sec7(char **sec7, size_t lmax, struct temp_chunks *t)
Prints the section 7 of part D of a TEMP report.
size_t print_temp_c_sec1(char **sec1, size_t lmax, struct temp_chunks *t)
Prints the section 1 of part C of a TEMP report.
size_t print_temp_d_sec6(char **sec6, size_t lmax, struct temp_chunks *t)
Prints the section 6 of part D of a TEMP report.
size_t print_temp_b_sec7(char **sec7, size_t lmax, struct temp_chunks *t)
Prints the section 7 of part B of a TEMP report.
size_t print_temp_b_sec1(char **sec1, size_t lmax, struct temp_chunks *t)
Prints the section 1 of part B of a TEMP report.
size_t print_temp_a_sec4(char **sec4, size_t lmax, struct temp_chunks *t)
Prints the section 4 of part A of a TEMP report.
size_t print_temp_a_sec1(char **sec1, size_t lmax, struct temp_chunks *t)
Prints the section 1 of part A of a TEMP report.
size_t print_temp_c_sec3(char **sec3, size_t lmax, struct temp_chunks *t)
Prints the section 3 of part C of a TEMP report.
int print_temp_a(struct metreport *m)
Prints the part A of a TEMP report into a string.
size_t print_temp_d_sec1(char **sec1, size_t lmax, struct temp_chunks *t)
Prints the section 1 of part D of a TEMP report.
int print_temp_c(struct metreport *m)
Prints the part C of a TEMP report into a string.
size_t print_temp_a_sec3(char **sec3, size_t lmax, struct temp_chunks *t)
Prints the section 3 of part A of a TEMP report.
int print_temp_raw_data(struct temp_raw_data *r)
Prints for debug a struct temp_raw_data.
int print_temp_report(struct metreport *m)
print the four parts of a decoded TEMP report from a BUFR file into strings
int print_temp_b(struct metreport *m)
Prints the part B of a TEMP report into a string.
size_t print_temp_a_sec7(char **sec7, size_t lmax, struct temp_chunks *t)
Prints the section 7 of part A of a TEMP report.
#define MISSING_REAL
The missing default value for real values.
#define TEMP_SEC_6
mask bit meaning sec 6 of a part of TEMP report parsed with success
#define TEMP_SEC_5
mask bit meaning sec 5 of a part of TEMP report parsed with success
#define TEMP_SEC_2
mask bit meaning sec 2 of a part of TEMP report parsed with success
#define TEMP_NMAX_POINTS
maximum number of significant points
all the information for a meteorological report in WMO text format from a BUFR file
char alphanum[REPORT_LENGTH]
char alphanum3[REPORT_LENGTH]
char alphanum2[REPORT_LENGTH]
char alphanum4[REPORT_LENGTH]
struct temp_main_level_data lev0
struct temp_std_level_data std[TEMP_NSTAND_MAX]
struct temp_main_level_data trop[TEMP_NTROP_MAX]
struct temp_max_wind_data windx[TEMP_NMAXWIND_MAX]
Store the whole TEMP report.
Stores the array of all data profile points as it in bufr sequence.
struct temp_raw_point_data raw[TEMP_NMAX_POINTS *4]
array of Wind shear data points at a pressure level
struct temp_raw_wind_shear_point raw[TEMP_NMAX_POINTS]