This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Thanks Larry. The 6Z and 18Z dcmosa decoding changes are made in 5.6.F. I will look at your other points for inclusion in our 5.6.F release and forward on to NCEP. Steve Chiswell Unidata User Support >From: "Larry D. Oolman" <address@hidden> >Organization: University of Wyoming >Keywords: 200202271840.g1RIesx15140 >I have been looking at the text portion of the surface >files producted by the dcmos decoders and have noted >several problems and personal preference changes. > >Larry Oolman >Department of Atmospheric Science >University of Wyoming >address@hidden >http://www-das.uwyo.edu > >1. g77 (at least under Linux) converts LF to spaces > with reads from strings. This produces one long > string with no line feeds. I use equivalences instead > of reads to fix the problem. > >*** gempak/source/gemlib/st/ststoi.f.dist Wed Jul 12 12:34:26 2000 >--- gempak/source/gemlib/st/ststoi.f Wed Feb 27 10:21:25 2002 >*************** >*** 28,33 **** >--- 28,35 ---- > INTEGER iarray (*) > C* > CHARACTER buff*4 >+ INTEGER ibuff >+ EQUIVALENCE (buff,ibuff) > C------------------------------------------------------------------------ > C* Check that actual length of string is greater than NCHAR. > C >*************** >*** 52,60 **** > ie = is + 3 > IF ( ie .gt. ichars ) ie = ichars > buff = string (is:ie) >! READ ( buff, 1000, IOSTAT = iostat ) iarray (i) >! 1000 FORMAT ( a4 ) >! IF ( iostat .ne. 0 ) iret = -2 > is = is + 4 > END DO > END IF >--- 54,60 ---- > ie = is + 3 > IF ( ie .gt. ichars ) ie = ichars > buff = string (is:ie) >! iarray(i) = ibuff > is = is + 4 > END DO > END IF > >2. The AVN now produces 6 Z and 18 Z MOS forecasts. The decoders need a > couple changes to deal with this. > >*** gempak/source/bridge/ms/msdate.f.dist Fri Sep 29 06:51:17 2000 >--- gempak/source/bridge/ms/msdate.f Wed Feb 27 10:35:50 2002 >*************** >*** 66,74 **** > iret = -3 > ELSE > C >! C* Reset hour if time is 1200 UTC. > C >! IF ( time ( 1:2 ) .eq. '12' ) irhour = 12 > END IF > C* > RETURN >--- 66,75 ---- > iret = -3 > ELSE > C >! C* Decode hour. > C >! CALL ST_INTG( time(1:2), irhour, iret ) >! IF ( iret .ne. 0 ) iret = -3 > END IF > C* > RETURN >*** gempak/source/bridge/ms/msdcda.f.dist Fri Sep 29 06:51:17 2000 >--- gempak/source/bridge/ms/msdcda.f Tue Feb 26 16:42:44 2002 >*************** >*** 39,48 **** > C* X/N -> TDYF, TNTF and N/X -> TNTF, TDYF > C > istrt = istart ( 1 ) >! IF ( istrt .ne. 0 ) istrt = istrt + 18 >! CALL MS_MXMN ( report, istrt, 4*INCR, ifcstm, 7, line, lineb, >! + ier ) >! IF ( irhour .eq. 0 ) THEN > iprm1 = iprms ( 2 ) > iprm2 = iprms ( 1 ) > ELSE >--- 39,53 ---- > C* X/N -> TDYF, TNTF and N/X -> TNTF, TDYF > C > istrt = istart ( 1 ) >! IF ( mod( irhour, 12 ) .eq. 0 ) THEN >! initft = 7 >! ELSE >! initft = 5 >! END IF >! IF ( istrt .ne. 0 ) istrt = istrt + 3 * ( initft - 1) >! CALL MS_MXMN ( report, istrt, 4*INCR, ifcstm, initft, line, >! + lineb, ier ) >! IF ( irhour .le. 6 ) THEN > iprm1 = iprms ( 2 ) > iprm2 = iprms ( 1 ) > ELSE > >3. I like to be able to list the information. I commented out the 256 > character restriction in sflist. > >*** gempak/source/programs/sf/sflist/sflprt.f.dist Wed Aug 29 08:11:22 20 > 01 >--- gempak/source/programs/sf/sflist/sflprt.f Sun Feb 24 15:09:02 2002 >*************** >*** 73,79 **** > IF ( tflg ) THEN > CALL SF_RSTR ( iflno, string, ihhmm, lenstr, > + ier ) >! IF ( lenstr .gt. 256 ) lenstr = 256 > C > C* Write data to output units. > C >--- 73,79 ---- > IF ( tflg ) THEN > CALL SF_RSTR ( iflno, string, ihhmm, lenstr, > + ier ) >! c IF ( lenstr .gt. 256 ) lenstr = 256 > C > C* Write data to output units. > C > >4. Finally, I like the two lines of station and date information in the AVN > and MRF MOS reports which dcmosa and dcmosm deletes. It does partially > reconstruct the station line. > >*** gempak/source/programs/dc/dcmosa/dcavnm.f.dist Fri Sep 29 06:53:01 20 > 00 >--- gempak/source/programs/dc/dcmosa/dcavnm.f Wed Feb 27 10:45:04 2002 >*************** >*** 185,190 **** >--- 185,191 ---- > C > good = .true. > IF ( getid ) THEN >+ jbpnt = ibpnt > CALL MS_STID ( bultin, ibpnt, stid, carr, num, > + ier ) > IF ( ier .ne. 0 ) THEN >*************** >*** 327,339 **** > C* Write the text data to the output file. > C > IF ( good ) THEN > CALL ST_UNP1 ( report, lenr, report, > + lenrnw, ierr ) > CALL ST_INCH ( ihhmm, time, ierr ) >- IF ( time .eq. '0 ' ) time = '0000' >- report = stid // date // ' ' // time // >- + ' UTC' // CHLF // >- + report ( :lenrnw ) > CALL SF_WSTR ( lunf, ihhmm, report, > + ierr ) > IF ( ierr .ne. 0 ) THEN >--- 328,338 ---- > C* Write the text data to the output file. > C > IF ( good ) THEN >+ report = bultin(jbpnt:ibpnt-1) >+ lenr = ibpnt - jbpnt > CALL ST_UNP1 ( report, lenr, report, > + lenrnw, ierr ) > CALL ST_INCH ( ihhmm, time, ierr ) > CALL SF_WSTR ( lunf, ihhmm, report, > + ierr ) > IF ( ierr .ne. 0 ) THEN >*** gempak/source/programs/dc/dcmosm/dcmrfm.f.dist Thu Aug 9 14:27:41 20 > 01 >--- gempak/source/programs/dc/dcmosm/dcmrfm.f Mon Feb 25 15:26:51 2002 >*************** >*** 202,207 **** >--- 202,208 ---- > C > good = .true. > IF ( getid ) THEN >+ jbpnt = ibpnt > CALL MS_STID ( bultin, ibpnt, stid, carr, num, > + ier ) > IF ( ier .ne. 0 ) THEN >*************** >*** 352,361 **** > C* Write the text data to the output file. > C > IF ( good ) THEN > CALL ST_UNP1 ( report, lenr, report, > + lenrnw, ierr ) >- report = stid // date // ' 0000 UTC' // >- + CHLF // report ( :lenrnw ) > CALL SF_WSTR ( lunf, ihhmm, report, > + ierr ) > IF ( ierr .ne. 0 ) THEN >--- 353,362 ---- > C* Write the text data to the output file. > C > IF ( good ) THEN >+ report = bultin(jbpnt:ibpnt-1) >+ lenr = ibpnt - jbpnt > CALL ST_UNP1 ( report, lenr, report, > + lenrnw, ierr ) > CALL SF_WSTR ( lunf, ihhmm, report, > + ierr ) > IF ( ierr .ne. 0 ) THEN >