39 used += snprintf ( c + used, lmax - used,
"%s%s%s%s%s", syn->
e.
YYYY, syn->
e.
MM, syn->
e.
DD, syn->
e.
HH, syn->
e.
mm );
42 used += snprintf ( c + used, lmax - used,
" %s%s", syn->
s0.
MiMi, syn->
s0.
MjMj );
46 used += snprintf ( c + used, lmax - used,
" %s", syn->
s0.
D_D );
50 used += snprintf ( c + used, lmax - used,
" %s%s%s", syn->
s0.
A1, syn->
s0.
bw, syn->
s0.
nbnbnb );
55 used += snprintf ( c + used, lmax - used,
" %s%s%s", syn->
s0.
YY, syn->
s0.
GG, syn->
s0.
iw );
60 used += snprintf ( c + used, lmax - used,
" %s%s", syn->
s0.
II, syn->
s0.
iii );
66 used += snprintf ( c + used, lmax - used,
" 99%s", syn->
s0.
LaLaLa );
70 used += snprintf ( c + used, lmax - used,
" 99///" );
75 used += snprintf ( c + used, lmax - used,
" %s%s", syn->
s0.
Qc, syn->
s0.
LoLoLoLo );
79 used += snprintf ( c + used, lmax - used,
" /////" );
83 if ( strcmp ( syn->
s0.
MiMi,
"OO" ) == 0 )
87 used += snprintf ( c + used, lmax - used,
" %s%s%s", syn->
s0.
MMM, syn->
s0.
Ula, syn->
s0.
Ulo );
91 used += snprintf ( c + used, lmax - used,
" %s%s", syn->
s0.
h0h0h0h0, syn->
s0.
im );
116 used += snprintf ( c + used, lmax - used,
" %s%s%s%s", syn->
s1.
ir, syn->
s1.
ix, syn->
s1.
h, syn->
s1.
VV );
120 used += snprintf ( c + used, lmax - used,
" %s%s%s", syn->
s1.
N, syn->
s1.
dd, syn->
s1.
ff );
121 if ( strlen ( syn->
s1.
fff ) )
123 used += snprintf ( c + used, lmax - used,
" 00%s", syn->
s1.
fff );
128 if ( syn->
s1.
TTT[0] )
130 used += snprintf ( c + used, lmax - used,
" 1%s%s", syn->
s1.
sn1, syn->
s1.
TTT );
136 used += snprintf ( c + used, lmax - used,
" 2%s%s", syn->
s1.
sn2, syn->
s1.
TdTdTd );
138 else if ( syn->
s1.
UUU[0] )
140 used += snprintf ( c + used, lmax - used,
" 29%s", syn->
s1.
UUU );
146 used += snprintf ( c + used, lmax - used,
" 3%s", syn->
s1.
PoPoPoPo );
152 used += snprintf ( c + used, lmax - used,
" 4%s", syn->
s1.
PPPP );
154 else if ( syn->
s1.
hhh[0] )
156 if ( syn->
s1.
a3[0] == 0 )
160 used += snprintf ( c + used, lmax - used,
" 4%s%s", syn->
s1.
a3, syn->
s1.
hhh );
164 if ( syn->
s1.
a[0] || syn->
s1.
ppp[0] )
166 if ( syn->
s1.
a[0] == 0 )
170 if ( syn->
s1.
ppp[0] == 0 )
172 strcpy ( syn->
s1.
ppp,
"///" );
174 used += snprintf ( c + used, lmax - used,
" 5%s%s", syn->
s1.
a, syn->
s1.
ppp );
180 if ( syn->
s1.
tr[0] == 0 )
184 if ( syn->
s1.
RRR[0] == 0 )
186 strcpy ( syn->
s1.
RRR,
"///" );
188 used += snprintf ( c + used, lmax - used,
" 6%s%s", syn->
s1.
RRR, syn->
s1.
tr );
193 if ( syn->
s1.
ww[0] == 0 )
195 strcpy ( syn->
s1.
ww,
"//" );
197 if ( syn->
s1.
W1[0] == 0 )
199 strcpy ( syn->
s1.
W1,
"/" );
201 if ( syn->
s1.
W2[0] == 0 )
203 strcpy ( syn->
s1.
W2,
"/" );
205 used += snprintf ( c + used, lmax - used,
" 7%s%s%s", syn->
s1.
ww, syn->
s1.
W1, syn->
s1.
W2 );
208 if ( ( syn->
s1.
Nh[0] && syn->
s1.
Nh[0] !=
'0' && syn->
s1.
Nh[0] !=
'/' ) ||
209 ( syn->
s1.
Cl[0] && syn->
s1.
Cl[0] !=
'0' && syn->
s1.
Cl[0] !=
'/' ) ||
210 ( syn->
s1.
Cm[0] && syn->
s1.
Cm[0] !=
'0' && syn->
s1.
Cm[0] !=
'/' ) ||
211 ( syn->
s1.
Ch[0] && syn->
s1.
Ch[0] !=
'0' && syn->
s1.
Ch[0] !=
'/' ) )
213 if ( syn->
s1.
Nh[0] == 0 )
215 strcpy ( syn->
s1.
Nh,
"/" );
217 if ( syn->
s1.
Cl[0] == 0 )
219 strcpy ( syn->
s1.
Cl,
"/" );
221 if ( syn->
s1.
Cm[0] == 0 )
223 strcpy ( syn->
s1.
Cm,
"/" );
225 if ( syn->
s1.
Ch[0] == 0 )
227 strcpy ( syn->
s1.
Ch,
"/" );
229 used += snprintf ( c + used, lmax - used,
" 8%s%s%s%s", syn->
s1.
Nh, syn->
s1.
Cl, syn->
s1.
Cm, syn->
s1.
Ch );
234 used += snprintf ( c + used, lmax - used,
" 9%s%s", syn->
s1.
GG, syn->
s1.
gg );
258 used += snprintf ( c + used, lmax - used,
" 222" );
261 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
Ds );
265 used += snprintf ( c + used, lmax - used,
"/" );
270 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
vs );
274 used += snprintf ( c + used, lmax - used,
"/" );
280 used += snprintf ( c + used, lmax - used,
" 0%s%s", syn->
s2.
ss, syn->
s2.
TwTwTw );
287 used += snprintf ( c + used, lmax - used,
" 1%s", syn->
s2.
PwaPwa );
291 used += snprintf ( c + used, lmax - used,
" 1//" );
296 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
HwaHwa );
300 used += snprintf ( c + used, lmax - used,
"//" );
308 used += snprintf ( c + used, lmax - used,
" 2%s", syn->
s2.
PwPw );
312 used += snprintf ( c + used, lmax - used,
" 2//" );
317 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
HwHw );
321 used += snprintf ( c + used, lmax - used,
"//" );
329 used += snprintf ( c + used, lmax - used,
" 3%s", syn->
s2.
dw1dw1 );
333 used += snprintf ( c + used, lmax - used,
" 3//" );
338 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
dw2dw2 );
342 used += snprintf ( c + used, lmax - used,
"//" );
350 used += snprintf ( c + used, lmax - used,
" 4%s", syn->
s2.
Pw1Pw1 );
354 used += snprintf ( c + used, lmax - used,
" 4//" );
359 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
Hw1Hw1 );
363 used += snprintf ( c + used, lmax - used,
"//" );
372 used += snprintf ( c + used, lmax - used,
" 5%s", syn->
s2.
Pw2Pw2 );
376 used += snprintf ( c + used, lmax - used,
" 5//" );
381 used += snprintf ( c + used, lmax - used,
"%s", syn->
s2.
Hw2Hw2 );
385 used += snprintf ( c + used, lmax - used,
"//" );
391 used += snprintf ( c + used, lmax - used,
" 70%s", syn->
s2.
HwaHwaHwa );
397 used += snprintf ( c + used, lmax - used,
" 8%s%s", syn->
s2.
sw, syn->
s2.
TbTbTb );
417 size_t used = 0, used0;
421 used += snprintf ( c + used, lmax - used,
" 333" );
446 used += snprintf ( c + used, lmax - used,
" 0%s", syn->
s3.
XoXoXoXo );
450 if ( syn->
s3.
snx[0] )
452 used += snprintf ( c + used, lmax - used,
" 1%s%s", syn->
s3.
snx, syn->
s3.
TxTxTx );
456 if ( syn->
s3.
snn[0] )
458 used += snprintf ( c + used, lmax - used,
" 2%s%s", syn->
s3.
snn, syn->
s3.
TnTnTn );
462 if ( syn->
s3.
E[0] || syn->
s3.
jjj[0] )
464 if ( syn->
s3.
E[0] == 0 )
468 if ( syn->
s3.
jjj[0] == 0 )
470 strcpy ( syn->
s3.
jjj,
"///" );
472 used += snprintf ( c + used, lmax - used,
" 3%s%s", syn->
s3.
E, syn->
s3.
jjj );
478 if ( syn->
s3.
E1[0] == 0 )
482 if ( syn->
s3.
sss[0] == 0 )
484 strcpy ( syn->
s3.
sss,
"///" );
486 if ( syn->
s3.
E1[0] !=
'/' || strcmp ( syn->
s3.
sss,
"999" ) )
488 used += snprintf ( c + used, lmax - used,
" 4%s%s", syn->
s3.
E1, syn->
s3.
sss );
495 if ( syn->
s3.
SSS[0] )
497 if ( strcmp ( syn->
s3.
SSS,
"///" ) )
499 used += snprintf ( c + used, lmax - used,
" 55%s", syn->
s3.
SSS );
506 used += snprintf ( c + used, lmax - used,
" 55%s", syn->
s3.
SSS );
509 for ( i = 0; i < 7; i++ )
513 used += snprintf ( c + used, lmax - used,
" %s%s", syn->
s3.
j524[i], syn->
s3.
FFFF24[i] );
521 if ( strcmp ( syn->
s3.
SS,
"//" ) )
523 used += snprintf ( c + used, lmax - used,
" 553%s", syn->
s3.
SS );
525 else if ( syn->
s3.
j5[0][0] || syn->
s3.
j5[1][0] ||
526 syn->
s3.
j5[2][0] || syn->
s3.
j5[3][0] ||
527 syn->
s3.
j5[4][0] || syn->
s3.
j5[5][0] ||
530 used += snprintf ( c + used, lmax - used,
" 553%s", syn->
s3.
SS );
533 for ( i = 0; i < 7; i++ )
535 if ( syn->
s3.
j5[i][0] )
537 used += snprintf ( c + used, lmax - used,
" %s%s", syn->
s3.
j5[i], syn->
s3.
FFFF[i] );
545 used += snprintf ( c + used, lmax - used,
" 55407 4%s", syn->
s3.
FFFF407 );
551 used += snprintf ( c + used, lmax - used,
" 55408 4%s", syn->
s3.
FFFF408 );
557 used += snprintf ( c + used, lmax - used,
" 55507 4%s", syn->
s3.
FFFF507 );
563 used += snprintf ( c + used, lmax - used,
" 55508 4%s", syn->
s3.
FFFF508 );
569 if ( syn->
s3.
Dl[0] == 0 )
573 if ( syn->
s3.
Dm[0] == 0 )
577 if ( syn->
s3.
Dh[0] == 0 )
582 used += snprintf ( c + used, lmax - used,
" 56%s%s%s", syn->
s3.
Dl, syn->
s3.
Dm, syn->
s3.
Dh );
586 if ( syn->
s3.
Da[0] || syn->
s3.
ec[0] )
588 if ( syn->
s3.
Da[0] == 0 )
592 if ( syn->
s3.
ec[0] == 0 )
597 used += snprintf ( c + used, lmax - used,
" 57%s%s%s", syn->
s3.
C, syn->
s3.
Da, syn->
s3.
ec );
603 used += snprintf ( c + used, lmax - used,
" 5%s%s", syn->
s3.
snp24, syn->
s3.
ppp24 );
609 if ( syn->
s3.
tr[0] == 0 )
613 if ( syn->
s3.
RRR[0] == 0 )
615 strcpy ( syn->
s3.
RRR,
"///" );
617 used += snprintf ( c + used, lmax - used,
" 6%s%s", syn->
s3.
RRR,syn->
s3.
tr );
622 used += snprintf ( c + used, lmax - used,
" 7%s", syn->
s3.
RRRR24 );
626 for ( i = 0; i < 4 ; i++ )
632 used += snprintf ( c + used, lmax - used,
" 8//%s", syn->
s3.
nub[i].
hshs );
636 used += snprintf ( c + used, lmax - used,
" 8" );
639 used += snprintf ( c + used, lmax - used,
"%s", syn->
s3.
nub[i].
Ns );
643 used += snprintf ( c + used, lmax - used,
"/" );
646 if ( syn->
s3.
nub[i].
C[0] )
648 used += snprintf ( c + used, lmax - used,
"%s", syn->
s3.
nub[i].
C );
652 used += snprintf ( c + used, lmax - used,
"/" );
655 used += snprintf ( c + used, lmax - used,
"%s", syn->
s3.
nub[i].
hshs );
674 used += snprintf ( c + used, lmax - used,
" 80000" );
677 if ( syn->
s3.
R8[i][0] || syn->
s3.
R8[i][0] || syn->
s3.
R8[i][0] || syn->
s3.
R8[i][0] )
679 if ( syn->
s3.
R8[i][0] == 0 )
681 syn->
s3.
R8[i][0] =
'/';
683 if ( syn->
s3.
R8[i][1] == 0 )
685 syn->
s3.
R8[i][1] =
'/';
687 if ( syn->
s3.
R8[i][2] == 0 )
689 syn->
s3.
R8[i][2] =
'/';
691 if ( syn->
s3.
R8[i][3] == 0 )
693 syn->
s3.
R8[i][3] =
'/';
695 used += snprintf ( c + used, lmax - used,
" %ld%s", i, syn->
s3.
R8[i] );
722 size_t used = 0, used0;
726 used += snprintf ( c + used, lmax - used,
" 444" );
735 if ( syn->
s4.
N1[0] == 0 )
739 if ( syn->
s4.
C1[0] == 0 )
743 if ( syn->
s4.
Ct[0] == 0 )
747 if ( syn->
s4.
H1H1[0] == 0 )
749 strcpy ( syn->
s4.
H1H1,
"//" );
751 used += snprintf ( c + used, lmax - used,
" %s%s%s%s", syn->
s4.
N1, syn->
s4.
C1, syn->
s4.
H1H1, syn->
s4.
Ct );
777 size_t used = 0, used0;
781 used += snprintf ( c + used, lmax - used,
" 555" );
790 if ( syn->
s5.
tr[0] == 0 )
794 if ( syn->
s5.
RRR[0] == 0 )
796 strcpy ( syn->
s5.
RRR,
"///" );
798 used += snprintf ( c + used, lmax - used,
" 6%s%s", syn->
s5.
RRR,syn->
s5.
tr );
802 for ( i = 0; i < syn->
s5.
d9.
n ; i++ )
833 if ( syn->
e.
YYYY[0] == 0 || syn->
e.
YYYY[0] ==
'0' )
845 if ( ( strcmp(syn->
s0.
MiMi,
"AA") == 0 && strcmp(syn->
s0.
MjMj,
"XX") == 0) &&
846 ( syn->
s0.
II[0] ==
'\0' || syn->
s0.
iii[0] ==
'\0' || strcmp ( syn->
s0.
II,
"00" ) == 0 ))
871 c += snprintf ( c, lmax - used,
" NIL" );
873 snprintf ( c, lmax - used - 1,
"=" );
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_synop_sec0(char **sec0, size_t lmax, struct synop_chunks *syn)
Prints the synop section 0 (header)
size_t print_synop_sec2(char **sec2, size_t lmax, struct synop_chunks *syn)
Prints the synop section 2.
size_t print_synop_sec1(char **sec1, size_t lmax, struct synop_chunks *syn)
Prints the synop section 1.
int print_synop_report(struct metreport *m)
prints a synop into a string
size_t print_synop_sec5(char **sec5, size_t lmax, struct synop_chunks *syn)
Prints the synop section 5.
size_t print_synop_sec3(char **sec3, size_t lmax, struct synop_chunks *syn)
Prints the synop section 3.
size_t print_synop_sec4(char **sec4, size_t lmax, struct synop_chunks *syn)
Prints the synop section 4.
#define SYNOP_SEC3_8
mask bit meaning optional/regional 8 part, section 3 for synop is solicited to or parsed with success
#define SYNOP_NMISC
number of misc3 struct to store the parsed results of 9SpSpspsp groups
#define SYNOP_SEC1
mask bit meaning section 1 or synop is solicited to or parsed with success
#define SYNOP_SEC3
mask bit meaning section 3 or synop is solicited to or parsed with success
#define SYNOP_SEC5
mask bit meaning section 5 or synop is solicited to or parsed with success
#define SYNOP_SEC4
mask bit meaning section 4 or synop is solicited to or parsed with success
#define SYNOP_SEC2
mask bit meaning section 2 or synop is solicited to or parsed with success
struct misc3 misc[SYNOP_NMISC]
all the information for a meteorological report in WMO text format from a BUFR file
char alphanum[REPORT_LENGTH]
struct synop_chunks synop
contains all possible substrings from a synop report is parsed with success
struct nub3 nub[SYNOP_NNUB]