W3FI72

The W3FI72 routine makes a complete grib message from a user supplied
           array of floating point or integer data.

USAGE:  CALL W3FI72(ITYPE,FLD,IFLD,IBITL,IPFLAG,ID,PDS,
                    IGFLAG,IGRID,IGDS,ICOMP,IBFLAG,IBMAP,
                    IBLEN,IBDSFL,IBDSFL,NPTS,KBUF,ITOT,JERR)
 
   Input argument list:
      ITYPE    - 0 = FLOATING POINT DATA SUPPLIED IN ARRAY 'FLD'
                 1 = INTEGER DATA SUPPLIED IN ARRAY 'IFLD'
      FLD      - REAL ARRAY OF DATA (AT PROPER GRIDPOINTS) TO BE
                 CONVERTED TO GRIB FORMAT IF ITYPE=0.
                 SEE REMARKS #1 & 2.
      IFLD     - INTEGER ARRAY OF DATA (AT PROPER GRIDPOINTS) TO BE
                 CONVERTED TO GRIB FORMAT IF ITYPE=1.
                 SEE REMARKS #1 & 2.
      IBITL    - 0 = COMPUTER COMPUTES LENGTH FOR PACKING DATA FROM
                     POWER OF 2 (NUMBER OF BITS) BEST FIT OF DATA
                     USING 'VARIABLE' BIT PACKER W3FI58.
                 8, 12, ETC. COMPUTER RESCALES DATA TO FIT INTO THAT
                     'FIXED' NUMBER OF BITS USING W3FI59.
                 SEE REMARKS #3.
 
      IPFLAG   - 0 = MAKE PDS FROM USER SUPPLIED ARRAY (ID)
                 1 = USER SUPPLYING PDS
                 NOTE: IF PDS IS GREATER THAN 30, USE IPLFAG=1.
                 THE USER COULD CALL W3FI68 BEFORE HE CALLS
                 W3FI72. THIS WOULD MAKE THE FIRST 30 BYTES OF
                 THE PDS, USER THEN WOULD MAKE BYTES AFTER 30.
      ID       - INTEGER ARRAY OF  VALUES THAT W3FI68 WILL USE
                 TO MAKE AN EDITION 1 PDS IF IPFLAG=0.  (SEE THE
                 DOCBLOCK FOR W3FI68 FOR LAYOUT OF ARRAY)
      PDS      - CHARACTER ARRAY OF VALUES (VALID PDS SUPPLIED
                 BY USER) IF IPFLAG=1. LENGTH MAY EXCEED 28 BYTES
                 (CONTENTS OF BYTES BEYOND 28 ARE PASSED
                 THROUGH UNCHANGED).
 
      IGFLAG   - 0 = MAKE GDS BASED ON 'IGRID' VALUE.
                 1 = MAKE GDS FROM USER SUPPLIED INFO IN 'IGDS'
                     AND 'IGRID' VALUE.
                 SEE REMARKS #4.
      IGRID    - #   = GRID IDENTIFICATION (TABLE B)
                 255 = IF USER DEFINED GRID; IGDS MUST BE SUPPLIED
                       AND IGFLAG MUST =1.
      IGDS     - INTEGER ARRAY CONTAINING USER GDS INFO (SAME
                 FORMAT AS SUPPLIED BY W3FI71 - SEE DOCKBLOCK FOR
                 LAYOUT) IF IGFLAG=1.
      ICOMP    - RESOLUTION AND COMPONENT FLAG FOR BIT 5 OF GDS(17)
                 0 = EARTH ORIENTED WINDS
                 1 = GRID ORIENTED WINDS
 
      IBFLAG   - 0 = MAKE BIT MAP FROM USER SUPPLIED DATA
                 # = BIT MAP PREDEFINED BY CENTER
                 SEE REMARKS #5.
      IBMAP    - INTEGER ARRAY CONTAINING BIT MAP
      IBLEN    - LENGTH OF BIT MAP WILL BE USED TO VERIFY LENGTH
                 OF FIELD (ERROR IF IT DOESN'T MATCH).
 
      IBDSFL   - INTEGER ARRAY CONTAINING TABLE 11 FLAG INFO
                 BDS OCTET 4:
                 (1) 0 = GRID POINT DATA
                     1 = SPHERICAL HARMONIC COEFFICIENTS
                 (2) 0 = SIMPLE PACKING
                     1 = SECOND ORDER PACKING
                 (3) ... SAME VALUE AS 'ITYPE'
                     0 = ORIGINAL DATA WERE FLOATING POINT VALUES
                     1 = ORIGINAL DATA WERE INTEGER VALUES
                 (4) 0 = NO ADDITIONAL FLAGS AT OCTET 14
                     1 = OCTET 14 CONTAINS FLAG BITS 5-12
                 (5) 0 = RESERVED - ALWAYS SET TO 0
          BYTE 6 OPTION 1 NOT AVAILABLE (AS OF 5-16-93)
                 (6) 0 = SINGLE DATUM AT EACH GRID POINT
                     1 = MATRIX OF VALUES AT EACH GRID POINT
          BYTE 7 OPTION 0 WITH SECOND ORDER PACKING N/A (AS OF 5-16-93)
                 (7) 0 = NO SECONDARY BIT MAPS
                     1 = SECONDARY BIT MAPS PRESENT
                 (8) 0 = SECOND ORDER VALUES HAVE CONSTANT WIDTH
                     1 = SECOND ORDER VALUES HAVE DIFFERENT WIDTHS
 
   Output argument list:
      NPTS     - NUMBER OF GRIDPOINTS IN ARRAY FLD OR IFLD
      KBUF     - ENTIRE GRIB MESSAGE ('GRIB' TO '7777')
                 EQUIVALENCE TO INTEGER ARRAY TO MAKE SURE IT
                 IS ON WORD BOUNARY.
      ITOT     - TOTAL LENGTH OF GRIB MESSAGE IN BYTES
      JERR     - = 0, COMPLETED MAKING GRIB FIELD WITHOUT ERROR
                   1, IPFLAG NOT 0 OR 1
                   2, IGFLAG NOT 0 OR 1
                   3, ERROR CONVERTING IEEE F.P. NUMBER TO IBM370 F.P.
                   4, W3FI71 ERROR/IGRID NOT DEFINED
                   5, W3FK74 ERROR/GRID REPRESENTATION TYPE NOT VALID
                   6, GRID TOO LARGE FOR PACKER DIMENSION ARRAYS
                      SEE AUTOMATION DIVISION FOR REVISION!
                   7, LENGTH OF BIT MAP NOT EQUAL TO SIZE OF FLD/IFLD
                   8, W3FI73 ERROR, ALL VALUES IN IBMAP ARE ZERO

   Output files:
      FT06F001 - STANDARD FORTRAN OUTPUT PRINT FILE
 
REMARKS:
    1)  IF BIT MAP TO BE INCLUDED IN MESSAGE, NULL DATA SHOULD
        BE INCLUDED IN FLD OR IFLD.  THIS ROUTINE WILL TAKE CARE
        OF 'DISCARDING' ANY NULL DATA BASED ON THE BIT MAP.
    2)  UNITS MUST BE THOSE IN GRIB DOCUMENTATION:  NMC O.N. 388
        OR WMO PUBLICATION 306.
    3)  IN EITHER CASE, INPUT NUMBERS WILL BE MULTIPLIED BY
        '10 TO THE NTH' POWER FOUND IN ID(25) OR PDS(27-28),
        THE D-SCALING FACTOR, PRIOR TO BINARY PACKING.
    4)  ALL NMC PRODUCED GRIB FIELDS WILL HAVE A GRID DEFINITION
        SECTION INCLUDED IN THE GRIB MESSAGE.  ID(6) WILL BE
        SET TO '1'.
        - GDS WILL BE BUILT BASED ON GRID NUMBER (IGRID), UNLESS
          IGFLAG=1 (USER SUPPLYING IGDS).  USER MUST STILL SUPPLY
          IGRID EVEN IF IGDS PROVIDED.
    5)  IF BIT MAP USED THEN ID(7) OR PDS(8) MUST INDICATE THE
        PRESENCE OF A BIT MAP.
    6)  ARRAY KBUF SHOULD BE EQUIVALENCED TO AN INTEGER VALUE OR
        ARRAY TO MAKE SURE IT IS ON A WORD BOUNDARY.
    7)  SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.

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