if ( g is "CAVOK") { rename(g,cavok); group g : dump; non_alpha na; constant isCavok=1; constant ceilingAndVisibilityOK="true"; constant cavokOrVisibility=1; } else { constant ceilingAndVisibilityOK="false"; constant isCavok=0; if (g is "//" || g is "///" || g is "////" || g is "/////" || g is "//////") { rename(g,missingVisibilityField1); group g : dump; non_alpha na; } if (g is "//" || g is "///" || g is "////" || g is "/////" || g is "//////") { rename(g,missingVisibilityField2); group g : dump; non_alpha na; } if (substr(g,-3,3) is "NDV" || is_integer(g,0,4) ) { rename(g,visibilityInMetres); group g : dump; non_alpha na; if (is_integer(visibilityInMetres,0,4)) { visibility=to_integer(visibilityInMetres,0,4); constant cavokOrVisibility=1; } } if (g is "NDV") { rename(g,ndv); modify ndv : hidden; group g : dump; non_alpha na; } if (substr(g,-2,2) is "KM" ) { rename(g,visibilityInKM); group g : dump; non_alpha na; #visibilityInKilometres=to_integer(visibilityInKM,0); #meta visibility evaluate(visibilityInKilometres * 1000); } if (is_integer(g,0,1)) { rename(g,visibilityInteger); group g : dump; non_alpha na; } if (substr(g, -2 ,2) is "SM" ) { rename(g,visibilityInStatuteMiles); group g : dump; non_alpha na; } if ( ( substr(g,4,1) is "N" || substr(g,4,1) is "S" || substr(g,4,1) is "E" || substr(g,4,1) is "W" || substr(g,4,2) is "NE" || substr(g,4,2) is "SE" || substr(g,4,2) is "NW" || substr(g,4,2) is "SW" || substr(g,4,1) is "/" ) && is_integer(g,0,4) ) { rename(g,directionalVariationInVisibility); group g : dump; non_alpha na; variationOfVisibility=to_integer(directionalVariationInVisibility); if (length(directionalVariationInVisibility) == 5) { directionOfVariation=to_string(directionalVariationInVisibility,4,1); } else { directionOfVariation=to_string(directionalVariationInVisibility,4,2); } variationOfVisibilityDirection=dict_search("metar/direction.table",directionOfVariation,1) : string_type; variationOfVisibilityDirectionAngle=dict_search("metar/direction.table",directionOfVariation,2) ; } include "metar/rvr1.def"; include "metar/rvr2.def"; include "metar/rvr3.def"; include "metar/rvr4.def"; }