W3FI64

The W3FI64 routine unpacks an array of upper-air reports that are
           packed in the format described by nmc Office Note 29,
           or unpacks an array of surface reports that are packed
           in the format described by NMC Office Note 124. 

USAGE:    CALL W3FI64(COCBUF,LOCRPT,NEXT)

   Input argument list:
      COCBUF   - CHARACTER*10 ARRAY CONTAINING A BLOCK OF PACKED
               - REPORTS IN NMC OFFICE NOTE 29/124 FORMAT.
      NEXT     - MARKER INDICATING RELATIVE LOCATION (IN BYTES) OF
               - END OF LAST REPORT IN COCBUF.  EXCEPTION: NEXT MUST
               - BE SET TO ZERO PRIOR TO UNPACKING THE FIRST REPORT OF
               - A NEW BLOCK OF REPORTS.  SUBSEQUENTLY, THE VALUE OF
               - NEXT RETURNED BY THE PREVIOUS CALL TO W3FI64 SHOULD
               - BE USED AS INPUT.  (SEE OUTPUT ARGUMENT LIST BELOW.)
               - IF NEXT IS NEGATIVE, W3FI64 WILL RETURN IMMEDIATELY
               - WITHOUT ACTION.
 
   Output argument list:
      LOCRPT   - ARRAY CONTAINING ONE UNPACKED REPORT WITH POINTERS
               - AND COUNTERS TO DIRECT THE USER.  LOCRPT MUST BEGIN
               - ON A FULLWORD BOUNDARY.  FORMAT IS MIXED, USER MUST
               - EQUIVALENCE REAL AND CHARACTER ARRAYS TO THIS ARRAY
               - (SEE BELOW AND REMARKS FOR CONTENT).

    ***************************************************************
    WORD   CONTENT                   UNIT                 FORMAT
    ----   ----------------------    -------------------  ---------
      1    LATITUDE                  0.01 DEGREES         REAL
      2    LONGITUDE                 0.01 DEGREES WEST    REAL
      3    UNUSED
      4    OBSERVATION TIME          0.01 HOURS (UTC)     REAL
      5    RESERVED (3RD BYTE IS     4-CHARACTERS         CHAR*8
           ON29 "25'TH CHAR.; 4TH    LEFT-JUSTIFIED
           BYTE IS ON29 "26'TH
           CHAR." (SEE ON29)
      6    RESERVED (3RD BYTE IS     3-CHARACTERS         CHAR*8
           ON29 "27'TH CHAR. (SEE    LEFT-JUSTIFIED
           ON29)
      7    STATION ELEVATION         METERS               REAL
      8    INSTRUMENT TYPE           ON29 TABLE R.2       INTEGER
      9    REPORT TYPE               ON29 TABLE R.1 OR    INTEGER
                                     ON124 TABLE S.3
     10    UNUNSED
     11    STN. ID. (FIRST 4 CHAR.)  4-CHARACTERS         CHAR*8
                                     LEFT-JUSTIFIED
 
     12    STN. ID. (LAST  2 CHAR.)  2-CHARACTERS         CHAR*8
                                     LEFT-JUSTIFIED
 
     13    CATEGORY  1, NO. LEVELS   COUNT                INTEGER
     14    CATEGORY  1, DATA INDEX   COUNT                INTEGER
     15    CATEGORY  2, NO. LEVELS   COUNT                INTEGER
     16    CATEGORY  2, DATA INDEX   COUNT                INTEGER
     17    CATEGORY  3, NO. LEVELS   COUNT                INTEGER
     18    CATEGORY  3, DATA INDEX   COUNT                INTEGER
     19    CATEGORY  4, NO. LEVELS   COUNT                INTEGER
     20    CATEGORY  4, DATA INDEX   COUNT                INTEGER
     21    CATEGORY  5, NO. LEVELS   COUNT                INTEGER
     22    CATEGORY  5, DATA INDEX   COUNT                INTEGER
     23    CATEGORY  6, NO. LEVELS   COUNT                INTEGER
     24    CATEGORY  6, DATA INDEX   COUNT                INTEGER
     25    CATEGORY  7, NO. LEVELS   COUNT                INTEGER
     26    CATEGORY  7, DATA INDEX   COUNT                INTEGER
     27    CATEGORY  8, NO. LEVELS   COUNT                INTEGER
     28    CATEGORY  8, DATA INDEX   COUNT                INTEGER
     29    CATEGORY 51, NO. LEVELS   COUNT                INTEGER
     30    CATEGORY 51, DATA INDEX   COUNT                INTEGER
     31    CATEGORY 52, NO. LEVELS   COUNT                INTEGER
     32    CATEGORY 52, DATA INDEX   COUNT                INTEGER
     33    CATEGORY  9, NO. LEVELS   COUNT                INTEGER
     34    CATEGORY  9, DATA INDEX   COUNT                INTEGER
  35-42    ZEROED OUT - NOT USED                          INTEGER
 
  43-END   UNPACKED DATA GROUPS      (SEE REMARKS)        MIXED
    ***************************************************************
 
      NEXT     - MARKER INDICATING RELATIVE LOCATION (IN BYTES)
               - OF END OF CURRENT REPORT IN COCBUF.  NEXT WILL BE
               - SET TO -1 IF W3FI64 ENCOUNTERS STRING 'END RECORD'
               - IN PLACE OF THE NEXT REPORT.  THIS IS THE END OF THE
               - BLOCK.  NO UNPACKING TAKES PLACE. NEXT IS SET TO-2
               - WHEN INTERNAL (LOGIC) ERRORS HAVE BEEN DETECTED.
               - NEXT IS SET TO -3 WHEN DATA COUNT CHECK FAILS.  IN
               - BOTH OF THE LATTER CASES SOME DATA (E.G., HEADER
               - INFORMATION) MAY BE UNPACKED INTO LOCRPT.
 
    Output files:
      FT06F001 - PRINTOUT
 
REMARKS: 
        After first reading and processing the Office Note 85
    (first) date record, the user's FORTRAN program begins a read
    loop as follows..  for each iteration a blocked input report is
    read into array cocbuf.  Now test the first ten characters in
    cocbuf for the string 'endof file' (SIC).  This string signals
    the end of input.  Otherwise, set the marker 'next' to zero and
    begin the unpacking loop.
         Each iteration of the unpacking loop consists of a call to
    w3fi64 with the current value of 'next'.  If 'next' is -1 upon
    returning from w3fi64, it has reached the end of the input
    record, and the user's program should read the next record as
    above.  If 'next' is -2 or -3 upon returning, there is a grievous
    error in the current packed input record, and the user's program
    should print it for examination by automation division personnel.
    If 'next' is positive, the output structure locrpt contains
    an unpacked report, and the user's program should process it at
    this point, subsequently repeating the unpacking loop.

 
W3lib.tar Library contains Fortran 90 decoder/encoder routines for GRIB edition 1. (Fortran90)
Date posted: 2/22/2007