16 extern unsigned long mmap[16];
32 void display_data(
char *hb5,
char *pc,
int dmonth,
int dday,
int dyear,
int dhour,
92 int j,inum,i,ier,ierr,qflow,len,k;
93 char *text,buf[300],
sbuf[150],hbuf[10];
96 Dimension width,height;
99 XmString cancel,file_string,print_string;
112 file_string=XmStringCreateLocalized(
"file");
113 print_string=XmStringCreateLocalized(
"print");
114 cancel=XmStringCreateLocalized(
"quit");
142 XtUnmanageChild(XmMessageBoxGetChild(
draw_dialog[j],
143 XmDIALOG_OK_BUTTON));
144 XtUnmanageChild(XmMessageBoxGetChild(
draw_dialog[j],
145 XmDIALOG_HELP_BUTTON));
146 XtUnmanageChild(XmMessageBoxGetChild(
draw_dialog[j],
147 XmDIALOG_CANCEL_BUTTON));
148 XtUnmanageChild(XmMessageBoxGetChild(
draw_dialog[j],
149 XmDIALOG_SEPARATOR));
152 XtSetArg(args[argcount],XmNwidth,
bmax_width);argcount++;
153 XtSetArg(args[argcount],XmNheight,
bmax_height);argcount++;
154 XtSetArg(args[argcount],XmNbackground,0);argcount++;
161 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
162 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
167 XtSetArg(args[argcount],XmNwidth,
bmax_width);argcount++;
168 XtSetArg(args[argcount],XmNheight,
bmax_height);argcount++;
169 XtSetArg(args[argcount],XmNresizePolicy,XmRESIZE_ANY);argcount++;
170 XtSetArg(args[argcount],XmNbackground,0);argcount++;
179 items[0].
label=
"Quit";
187 items[0].
label=
"Linear stage";
190 items[1].
label=
"Linear flow";
193 items[2].
label=
"Scale to data";
196 items[3].
label=
"Scale to flood";
210 sprintf(fbuf,
"/usr/local/apps/mm/monthly_qc/data/scratch.%d",
213 sprintf(
sbuf,
"get_data %s %s %d %d %d %d %d %s",
225 fread(&inum,
sizeof(
int),1,fp);
229 fread(&ier,
sizeof(
int),1,fp);
247 if(ier==1 && toupper(pc[0])==
'Q')
283 XtSetArg(args[0],XtNwidth,&width);
284 XtSetArg(args[1],XtNheight,&height);
289 XmStringFree(file_string);
290 XmStringFree(print_string);
291 XmStringFree(cancel);
310 int xparm1,yparm1,xparm2,yparm2;
313 time_t lbtim,letim,
stim,otim;
314 char abuf[100],tbuf[100];
315 int xmax,ymax,xmin,ymin,maxtimes,maxvalues,yheight;
317 int deltat,i,text_width,j,h,
qflag,ier;
319 float fxvalue,fyvalue,svalue,dxvalue;
320 int maxv,minv,smaxv,sminv,dvalue;
321 int xvalue,oday,yvalue,xvalue1,yvalue1,totlin,totdays,
hour,ierr,flow,ilinear;
323 char buf[200],ubuf[50],xbuf[50];
324 int inum,merr,ybegin,len;
326 double stage,wrn,fld,abs1,abs2;
329 int line_width,line_style,cap_style,join_style,lines;
356 XSetClipRectangles(
display,
gc1,0,0,rect,1,Unsorted);
380 xmax=width-xparm1-10;
382 ymax=height-yparm2-10;
388 sprintf(buf,
"%s %s not found in database",
392 (ymax+ymin)/2,buf,strlen(buf));
415 strcpy(buf,
"NO DATA");
432 lbtim=
ouptime(tm.tm_year,tm.tm_mon,tm.tm_mday,tm.tm_hour,tm.tm_min,0);
441 letim=
ouptime(tm.tm_year,tm.tm_mon,tm.tm_mday,tm.tm_hour,tm.tm_min,0);
445 totlin=(lbtim-letim)/(24L*3600L)+1;
447 totyears=(lbtim-letim)/(24L*3600L*365L)+1;
456 if(tm.tm_hour > 0 && tm.tm_hour <=6)
459 else if(tm.tm_hour > 6 && tm.tm_hour <=12)
462 else if(tm.tm_hour > 12 && tm.tm_hour <=18)
465 else if(tm.tm_hour > 18)
475 maxtimes=(lbtim-letim)/(deltat*3600L);
477 totdays=(lbtim-letim)/(24L*3600L)+1;
479 totlin=totdays*24/deltat+4;
489 for(i=0;i<=totlin;i++) {
491 stim=letim+((i-4)*deltat*3600L) +
hour*3600L;
493 fxvalue=xmin+(float)(xmax-xmin)/(float)(letim-lbtim)*
498 if(xvalue > width-xparm1)
501 if(xvalue < xs+xparm1)
508 if(gm->tm_mday==1 && gm->tm_mon==0) {
511 xvalue,height-yparm2);
514 sprintf(buf,
"%d/%d",gm->tm_mon+1,gm->tm_year);
517 sprintf(buf,
"%d",gm->tm_year);
519 text_width=XTextWidth(
info_font[1],buf,strlen(buf));
521 height-yparm2+yheight*2,buf,strlen(buf));
526 else if(gm->tm_mday==1 && totyears < 2) {
528 sprintf(buf,
"%d",gm->tm_mon+1);
529 text_width=XTextWidth(
info_font[1],buf,strlen(buf));
531 height-yparm2+yheight*2,buf,strlen(buf));
543 xvalue,height-yparm2);
545 if(oday != gm->tm_mday) {
547 if(gm->tm_hour==0 || htflag==1) {
549 sprintf(buf,
"%d/%d",gm->tm_mon+1,gm->tm_mday);
550 text_width=XTextWidth(
info_font[1],buf,strlen(buf));
552 height-yparm2+yheight*2,buf,strlen(buf));
566 if(h==0 || h==2 || h==4 || h==6 || h==8 ||
567 h==10 || h==12 || h==14 || h==16 ||
568 h==18 || h==20 || h==22)
573 else if(deltat==3 && totdays <= 2) {
576 if(h==0 || h==3 || h==6 || h==9 || h==12 ||
577 h==15 || h==18 || h==21)
584 if(h==0 || h==6 || h==12 || h==18)
596 else if(deltat==24) {
606 sprintf(buf,
"%d",gm->tm_hour);
607 text_width=XTextWidth(
info_font[1],buf,strlen(buf));
609 height-yparm2+yheight,buf,strlen(buf));
635 if(ierr >= 0 && ierr <= 2)
663 values[0].
zdate,(
double)minv,
667 values[0].
zdate,(
double)maxv,
670 if(ierr == 3 || merr == 3) {
682 maxvalues=(maxv-minv)/(deltav);
686 for(i=0;i<=maxvalues+2;i++) {
688 svalue=(float)minv+(i*deltav);
689 fyvalue=ymax-(float)(ymin-ymax)/(float)(minv-maxv)*
690 (float)(svalue-minv);
693 if(yvalue < ys+yparm1 || yvalue > height-yparm2)
698 if(lines==0 &&
save_rec[k].volume != 0)
706 width-xparm1,yvalue);
708 if(ilinear==0 || (ilinear==1 &&
712 sprintf(buf,
"%6.1f",svalue);
714 xvalue=width-xparm1+2;
722 sprintf(buf,
"%d",flow);
724 text_width=XTextWidth(
info_font[1],buf,strlen(buf));
726 xvalue=xs+xparm1-text_width;
737 yvalue+yheight/2,&buf[j],strlen(&buf[j]));
742 if(ilinear==0 || (ilinear==1 &&
745 values[0].
zdate,(
double)svalue,
762 sprintf(buf,
"%6.1f",svalue);
763 xvalue=width-xparm1+2;
769 sprintf(buf,
"%d",flow);
770 text_width=XTextWidth(
info_font[1],buf,strlen(buf));
771 xvalue=xs+xparm1-text_width;
782 yvalue+yheight/2,&buf[j],strlen(&buf[j]));
787 line_style=LineOnOffDash;
789 join_style=JoinRound;
791 XSetLineAttributes(
display,
gc1,line_width,line_style,
792 cap_style,join_style);
811 fyvalue=ymax-(float)(ymin-ymax)/(float)(minv-maxv)*
820 line_style=LineOnOffDash;
822 join_style=JoinRound;
824 XSetLineAttributes(
display,
gc1,line_width,line_style,
825 cap_style,join_style);
827 if(yvalue > ys+yparm1 &&
828 yvalue < height-yparm2)
830 width-xparm1,yvalue);
852 fyvalue=ymax-(float)(ymin-ymax)/(float)(minv-maxv)*
859 if(yvalue > ys+yparm1 &&
860 yvalue < height-yparm2)
862 width-xparm1,yvalue);
883 fyvalue=ymax-(float)(ymin-ymax)/(float)(minv-maxv)*
890 if(yvalue > ys+yparm1 &&
891 yvalue < height-yparm2)
893 width-xparm1,yvalue);
899 line_style=LineSolid;
901 join_style=JoinRound;
903 XSetLineAttributes(
display,
gc1,line_width,line_style,
904 cap_style,join_style);
917 ybegin=ymin+((ymax-ymin) - len*yheight)/2;
927 yvalue=ybegin+i*yheight;
929 yvalue,xbuf,strlen(xbuf));
947 ybegin=ymin+((ymax-ymin) - len*yheight)/2;
957 yvalue=ybegin+i*yheight;
959 yvalue,xbuf,strlen(xbuf));
968 for(i=0;i<inum;i++) {
970 tm.tm_year=values[i].
zdate/10000-1900;
971 tm.tm_mon=(values[i].
zdate-(tm.tm_year+1900)*10000)/100;
972 tm.tm_mday=values[i].
zdate-(tm.tm_year+1900)*10000-tm.tm_mon*100;
973 tm.tm_hour=values[i].
ztime/10000;
974 tm.tm_min=(values[i].
ztime-tm.tm_hour*10000)/100;
978 tm.tm_hour,tm.tm_min,0);
980 fxvalue=xmin+(float)(xmax-xmin)/(float)(letim-lbtim)*
983 svalue=values[i].
value;
985 fyvalue=ymax-(float)(ymin-ymax)/(float)(minv-maxv)*
986 (float)(svalue-minv);
991 dxvalue=-(float)(xmax-xmin)/(float)(letim-lbtim)*
999 if(ymax - yvalue == 0 && i > 0) {
1001 if(oqual !=
'S' && oqual !=
'V')
1021 xvalue-dvalue,yvalue,
1022 dvalue-1,ymax-yvalue+1);
1029 oqual=values[i].
qual;
1037 for(i=0;i<inum;i++) {
1039 tm.tm_year=values[i].
zdate/10000-1900;
1040 tm.tm_mon=(values[i].
zdate-(tm.tm_year+1900)*10000)/100;
1041 tm.tm_mday=values[i].
zdate-(tm.tm_year+1900)*10000-tm.tm_mon*100;
1042 tm.tm_hour=values[i].
ztime/10000;
1043 tm.tm_min=(values[i].
ztime-tm.tm_hour*10000)/100;
1045 tm.tm_mon=tm.tm_mon;
1046 stim=
ouptime(tm.tm_year+1900,tm.tm_mon,tm.tm_mday,tm.tm_hour,tm.tm_min,0);
1048 fxvalue=xmin+(float)(xmax-xmin)/(float)(letim-lbtim)*
1049 (float)(letim-
stim);
1051 svalue=values[i].
value;
1060 svalue=(double)flow;
1064 fyvalue=ymax-(float)(ymin-ymax)/(float)(minv-maxv)*
1065 (float)(svalue-minv);
1070 if(oqual !=
'S' && oqual !=
'V')
1078 if(otim-
stim < 7200L)
1095 oqual=values[i].
qual;
1112 sprintf(abuf,
" %d",flow);
1117 sprintf(abuf,
" at %02d/%02d/%02d %02dZ",
1136 sprintf(abuf,
" %d",flow);
1141 sprintf(abuf,
" at %02d/%02d/%02d %02dZ",
1158 int i,xdate,xtime,ndate,ntime;
1164 for(i=0;i<inum;i++) {
1209 hours=(lbtim-letim)/3600L;
1217 else if(hours < 144)
1220 else if(hours < 288)
1223 else if(hours < 576)
1226 else if(hours < 1152)
1229 else if(hours < 2304)
1232 else if(hours < 4608)
1272 else if(diff < 1000)
1275 else if(diff < 2000)
1278 else if(diff < 4000)
1281 else if(diff < 10000)
1284 else if(diff < 20000)
1287 else if(diff < 40000)
1290 else if(diff < 100000)
1293 else if(diff < 200000)
1296 else if(diff < 400000)
1299 else if(diff < 1000000)
1302 else if(diff < 2000000)
1305 else if(diff < 4000000)
1316 void options_draw(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
1321 Dimension width,height;
1340 XtSetArg(args[0],XtNwidth,&width);
1341 XtSetArg(args[1],XtNheight,&height);
1353 void quit_draw(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
1375 Dimension width,height;
1380 XtSetArg(args[0],XtNwidth,&width);
1381 XtSetArg(args[1],XtNheight,&height);
1409 else if(strcasecmp(pc,
"PCIRGZZ")==0)
1412 else if(strcasecmp(pc,
"PPH1GZZ")==0)
1415 else if(strcasecmp(pc,
"PPH2GZZ")==0)
1418 else if(strcasecmp(pc,
"PPQ1GZZ")==0)
1421 else if(strcasecmp(pc,
"PPQ2GZZ")==0)
1424 else if(strcasecmp(pc,
"PPD1GZZ")==0)
1427 else if(strcasecmp(pc,
"PPD2GZZ")==0)
1430 else if(strcasecmp(pc,
"PPMRGZZ")==0)
1433 else if(strcasecmp(pc,
"PCIRPZZ")==0)
1436 else if(strcasecmp(pc,
"PPH1PZZ")==0)
1439 else if(strcasecmp(pc,
"PPH2PZZ")==0)
1442 else if(strcasecmp(pc,
"PPQ1PZZ")==0)
1445 else if(strcasecmp(pc,
"PPQ2PZZ")==0)
1448 else if(strcasecmp(pc,
"PPD1PZZ")==0)
1451 else if(strcasecmp(pc,
"PPD2PZZ")==0)
1454 else if(strcasecmp(pc,
"PPMRPZZ")==0)
1457 else if(strcasecmp(pc,
"PCIRMZZ")==0)
1460 else if(strcasecmp(pc,
"PPH1MZZ")==0)
1463 else if(strcasecmp(pc,
"PPH2MZZ")==0)
1466 else if(strcasecmp(pc,
"PPQ1MZZ")==0)
1469 else if(strcasecmp(pc,
"PPQ2MZZ")==0)
1472 else if(strcasecmp(pc,
"PPD1MZZ")==0)
1475 else if(strcasecmp(pc,
"PPD2MZZ")==0)
1478 else if(strcasecmp(pc,
"PPMRMZZ")==0)
1481 else if(strcasecmp(pc,
"PPHRZZZ")==0)
1484 else if(strcasecmp(pc,
"PPH1ZZZ")==0)
1487 else if(strcasecmp(pc,
"PPH2ZZZ")==0)
1490 else if(strcasecmp(pc,
"PPQRZZZ")==0)
1493 else if(strcasecmp(pc,
"PPQ1ZZZ")==0)
1496 else if(strcasecmp(pc,
"PPQ2ZZZ")==0)
1499 else if(strcasecmp(pc,
"PPDRZZZ")==0)
1502 else if(strcasecmp(pc,
"PPD1ZZZ")==0)
1505 else if(strcasecmp(pc,
"PPD2ZZZ")==0)
1508 else if(strcasecmp(pc,
"PPMRZZZ")==0)
1511 else if(strcasecmp(pc,
"HGIRGZZ")==0)
1514 else if(strcasecmp(pc,
"HGIRPZZ")==0)
1517 else if(strcasecmp(pc,
"HGIRZZZ")==0) {
1524 else if(strcasecmp(pc,
"HPIRGZZ")==0)
1527 else if(strcasecmp(pc,
"HPIRZZZ")==0) {
1534 else if(strcasecmp(pc,
"LSIRGZZ")==0)
1537 else if(strcasecmp(pc,
"QRIRGZZ")==0)
1540 else if(strcasecmp(pc,
"QRIRPZZ")==0)
1543 else if(strcasecmp(pc,
"QRIRZZZ")==0)
1546 else if(strcasecmp(pc,
"TAIRGZZ")==0)
1549 else if(strcasecmp(pc,
"SWIRMZZ")==0)
1552 else if(strcasecmp(pc,
"TAIRMXZ")==0) {
1558 else if(strcasecmp(pc,
"TAIRMNZ")==0) {
1565 else if(strcasecmp(pc,
"TAIRGXZ")==0)
1568 else if(strcasecmp(pc,
"TAIRGNZ")==0)
1571 else if(strcasecmp(pc,
"TAIRZNZ")==0) {
1578 else if(strcasecmp(pc,
"TAIRZXZ")==0) {
1585 else if(strcasecmp(pc,
"UDIRGZZ")==0)
1588 else if(strcasecmp(pc,
"USIRGZZ")==0)
1591 else if(strcasecmp(pc,
"UQIRGZZ")==0)
1594 else if(strcasecmp(pc,
"UDIRZZZ")==0)
1597 else if(strcasecmp(pc,
"USIRZZZ")==0)
1600 else if(strcasecmp(pc,
"XRIRGZZ")==0)
1615 if(strncasecmp(
"P",ibuf,1)==0)
1616 strcpy(
sbuf,
"INCHES");
1618 else if(strncasecmp(
"T",ibuf,1)==0)
1619 strcpy(
sbuf,
"DEGREES F");
1621 else if(strncasecmp(
"X",ibuf,1)==0)
1622 strcpy(
sbuf,
"PERCENT");
1624 else if(strncasecmp(
"H",ibuf,1)==0)
1625 strcpy(
sbuf,
"FEET");
1627 else if(strncasecmp(
"L",ibuf,1)==0)
1628 strcpy(
sbuf,
"AC-FT");
1630 else if(strncasecmp(
"Q",ibuf,1)==0 && strlen(ibuf) > 3 &&
1631 strncasecmp(
"M",&ibuf[2],1)==0)
1632 strcpy(
sbuf,
"AC-FT");
1634 else if(strncasecmp(
"Q",ibuf,1)==0 && strlen(ibuf) > 5 &&
1635 strncasecmp(
"Z",&ibuf[4],1)==0)
1636 strcpy(
sbuf,
"KCFS");
1638 else if(strncasecmp(
"Q",ibuf,1)==0)
1641 else if(strncasecmp(
"US",ibuf,2)==0)
1642 strcpy(
sbuf,
"MILES PER HOUR");
1644 else if(strncasecmp(
"UD",ibuf,2)==0)
1645 strcpy(
sbuf,
"DEGREES");
1649 strcpy(
sbuf,
"VALUE");
1658 if(strncasecmp(
"HG",ibuf,2)==0)
1659 strcat(
sbuf,
"RIVER STAGE");
1661 else if(strncasecmp(
"HP",ibuf,2)==0)
1662 strcat(
sbuf,
"RESERVOIR POOL ELEVATION");
1664 else if(strncasecmp(
"LS",ibuf,2)==0)
1665 strcat(
sbuf,
"LAKE STORAGE");
1667 else if(strncasecmp(
"PC",ibuf,2)==0)
1668 strcat(
sbuf,
"PRECIPITATION ACCUMULATION");
1670 else if(strncasecmp(
"PP",ibuf,2)==0)
1671 strcat(
sbuf,
"PRECIPITATION INCREMENTAL");
1673 else if(strncasecmp(
"QC",ibuf,2)==0)
1674 strcat(
sbuf,
"RUNOFF VOLUME");
1676 else if(strncasecmp(
"QD",ibuf,2)==0)
1677 strcat(
sbuf,
"DISCHARGE-DIVERSION");
1679 else if(strncasecmp(
"QI",ibuf,2)==0)
1680 strcat(
sbuf,
"DISCHARGE-INFLOW");
1682 else if(strncasecmp(
"QR",ibuf,2)==0)
1683 strcat(
sbuf,
"DISCHARGE-RIVER");
1685 else if(strncasecmp(
"QT",ibuf,2)==0)
1686 strcat(
sbuf,
"DISCHARGE-OUTFLOW");
1688 else if(strncasecmp(
"SD",ibuf,2)==0)
1689 strcat(
sbuf,
"SNOW DEPTH");
1691 else if(strncasecmp(
"SW",ibuf,2)==0)
1692 strcat(
sbuf,
"SNOW WATER EQUIVALENT");
1694 else if(strncasecmp(
"TA",ibuf,2)==0)
1695 strcat(
sbuf,
"AIR TEMPERATURE");
1697 else if(strncasecmp(
"US",ibuf,2)==0)
1698 strcat(
sbuf,
"WIND SPEED");
1700 else if(strncasecmp(
"UD",ibuf,2)==0)
1701 strcat(
sbuf,
"WIND DIRECTION");
1703 else if(strncasecmp(
"UQ",ibuf,2)==0)
1704 strcat(
sbuf,
"WIND SPEED/DIRECTION");
1706 else if(strncasecmp(
"XR",ibuf,2)==0)
1707 strcat(
sbuf,
"RELATIVE HUMIDITY");
1710 strcat(
sbuf,
"UNKNOWN");
1714 if(strncasecmp(
"I",&ibuf[2],1)==0)
1715 strcat(
sbuf,
"INSTANTANEOUS");
1717 else if(strncasecmp(
"D",&ibuf[2],1)==0)
1718 strcat(
sbuf,
"DAILY");
1720 else if(strncasecmp(
"Q",&ibuf[2],1)==0)
1721 strcat(
sbuf,
"SIX HOURLY");
1723 else if(strncasecmp(
"M",&ibuf[2],1)==0)
1724 strcat(
sbuf,
"MONTHLY");
1727 strcat(
sbuf,
"UNKNOWN");
1731 if(strncasecmp(
"R",&ibuf[3],1)==0)
1732 strcat(
sbuf,
"OBSERVED");
1734 else if(strncasecmp(
"P",&ibuf[3],1)==0)
1735 strcat(
sbuf,
"PROCESSED");
1737 else if(strncasecmp(
"1",&ibuf[3],1)==0)
1738 strcat(
sbuf,
"PROCESSED LEVEL 1");
1740 else if(strncasecmp(
"2",&ibuf[3],1)==0)
1741 strcat(
sbuf,
"PROCESSED LEVEL 2");
1743 else if(strncasecmp(
"F",&ibuf[3],1)==0)
1744 strcat(
sbuf,
"FORECAST");
1747 strcat(
sbuf,
"UNKNOWN");
1751 if(strncasecmp(
"Z",&ibuf[4],1)==0)
1752 strcat(
sbuf,
"STP/SAO");
1754 else if(strncasecmp(
"G",&ibuf[4],1)==0)
1755 strcat(
sbuf,
"GOES");
1757 else if(strncasecmp(
"M",&ibuf[4],1)==0)
1758 strcat(
sbuf,
"METEOR");
1760 else if(strncasecmp(
"P",&ibuf[4],1)==0)
1761 strcat(
sbuf,
"PHONE");
1763 else if(strncasecmp(
"R",&ibuf[4],1)==0)
1764 strcat(
sbuf,
"RADIO");
1767 strcat(
sbuf,
"UNKNOWN");
1769 if(strncasecmp(
"Z",&ibuf[5],1)!=0)
1772 if(strncasecmp(
"X",&ibuf[5],1)==0)
1773 strcat(
sbuf,
"MAXIMUM:DAILY");
1775 else if(strncasecmp(
"N",&ibuf[5],1)==0)
1776 strcat(
sbuf,
"MINIMUM:DAILY");
1778 if(strncasecmp(
"Z",&ibuf[6],1)!=0)
1781 if(strncasecmp(
"F",&ibuf[6],1)==0)
1784 else if(strncasecmp(
"N",&ibuf[6],1)==0)
1800 for(i=0;i<inum;i++) {
void berror(Widget widget, char *string)
Widget BuildPulldownPushMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
Widget AttachToCascade(Widget parent, char *label, Widget sub_menu)
int get_delta_time(time_t lbtim, time_t letim)
XFontStruct * info_font[10]
void display_data(char *hb5, char *pc, int dmonth, int dday, int dyear, int dhour, int ddays)
void to_stage(char *hb5, char pe1, char pe2, struct stn_values *stn_values, int inum)
struct max_min get_max_min(struct stn_values *stn_values, int inum)
struct stn_values * stn_values
void draw_area(int k, int m, int xs, int ys, int xz, int yz)
void get_units(char *ibuf, char *sbuf)
void get_acronym(char *ibuf, char *sbuf)
float get_delta_valu(int diff)
int get_dbase(char *pc, int *num)
long ouptime(int, int, int, int, int, int)
double GetStage(char *ihb5, char pe1, char pe2, int zdate, int Flow, int *Warning)
static RatingTable rate_table
int GetFlow(char *ihb5, char pe1, char pe2, int zdate, double Stage, int *Warning)