The latest version of CALPUFF modeling system by Exponent is version 7.0 and is available here. The meteorological preprocessors include SURFGEN v7.0, for preparing a SURF file starting from ASOS 1-minute data. ASOS 1-minute data are available from the NOAA repository: ftp://ftp.ncdc.noaa.gov/pub/data/asos-onemin/ ASOS 1-minute data are made of two "pages", so it is necessary to download both the 6405 and 6406 files for any station of interest. Files are organized in directories named "6405-year" and "6406-year". Is such directories there is a file for each station and each month. Not all ASOS 1-minute data are currently handled by SURFGEN. in cases when the number of fields is less than 12, SURFGEN is extracting missing values of wind speed and direction. It is however possible that the space-separated fields are less than 12, as can be seen from the EPA AERMINUTE user's guide, Figure 1. The ASOS 1-minute format is also documented in the manuals td6405.pdf and td6406.pdf An example of file that has less than 12 fields (they are 8 ) is ftp://ftp.ncdc.noaa.gov/pub/data/asos-onemin/6405-2013/64050KRNT201312.dat
94248KRNT RNT2013120107291529   0.083 N                             181    14   187   20
94248KRNT RNT2013120107301530   0.076 N                             179    13   183   16
When given in input to SURFGEN V7.0 the .LST log file shows that data are extracted as missing:
 READ_ASOS1: data for period 2013120107291529
 WS,WD,TK,IRH      =  9999.00000 9999.00000 285.372223 40
 PRES,PRATE,IPCODE =  1009.07623 0.00000000E+00 0
 READ_ASOS1: data for period 2013120107301530
 WS,WD,TK,IRH      =  9999.00000 9999.00000 285.372223 40
 PRES,PRATE,IPCODE =  1009.13269 0.00000000E+00 0
Another example of file with less than 12 space-separated fields (they are 11) is ftp://ftp.ncdc.noaa.gov/pub/data/asos-onemin/6405-2013/64050KSEA201312.dat
24233KSEA SEA2013120100140814   0.124 N                 0.134 N     182    10   173   12    16L60+
24233KSEA SEA2013120100150815   0.124 N                 0.127 N     185     9   201   10    16L60+
24233KSEA SEA2013120100160816   0.125 N                 0.132 N     187     8   180   11    16L60+
  In order to parse such files the SURFGEN 7.0 program must be modified by inserting after line 2292 of surfgen.for the block:
      else if (ncol6405.EQ.8) then
c ---    Wind direction (9)
         if(INDEX(acol6405(5),'M').EQ.0) then
            read(acol6405(5),*) iwd
            wd=FLOAT(iwd)
         endif
c ---    Wind speed (10)
         if(INDEX(acol6405(6),'M').EQ.0) then
            read(acol6405(6),*) iwskt
c ---       Adjust speed (conditional)
            if(cwsadj(k).EQ.'ASOSBIAS') then
               ws=(FLOAT(iwskt)+add_kt)*fkt2mps
            else
               ws=FLOAT(iwskt)*fkt2mps
            endif
      else if (ncol6405.EQ.11) then
c ---    Wind direction (7)
         if(INDEX(acol6405(7),'M').EQ.0) then
            read(acol6405(7),*) iwd
            wd=FLOAT(iwd)
         endif
c ---    Wind speed (8)
         if(INDEX(acol6405(8),'M').EQ.0) then
            read(acol6405(8),*) iwskt
c ---       Adjust speed (conditional)
            if(cwsadj(k).EQ.'ASOSBIAS') then
               ws=(FLOAT(iwskt)+add_kt)*fkt2mps
            else
               ws=FLOAT(iwskt)*fkt2mps
            endif
         endif
In order to compile the code with gfortran, the code requires also some modifications to the reading format in several places, because of the use on non-standard zero-length format that generates an error:
            read(acol6405(5),'(i)') iwd
                                1
Error: Nonnegative width required in format string at (1)
This can be fixed changing the lines with such formats with:
            read(acol6405(5),*) iwd
The compilation with gfortran can be made as:
gfortran -o surfgen.exe modules.for surfgen.for
The result:
 READ_ASOS1: data for period 2013120107291529
 WS,WD,TK,IRH      =    7.4588003       181.00000       285.37222              40
 PRES,PRATE,IPCODE =    1009.0762       0.0000000               0
 READ_ASOS1: data for period 2013120107301530
 WS,WD,TK,IRH      =    6.9443998       179.00000       285.37222              40