[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
20020227: GEMPAK MOS decoders 2nd try
- Subject: 20020227: GEMPAK MOS decoders 2nd try
- Date: Wed, 27 Feb 2002 13:33:30 -0700
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
>