W3FI85

The W3FI85 routine generates a bufr message (WMO CODE FM94).
           There may be  a section 2 INCLUDED IN THE BUFR MESSAGE
           IF THE USER FOLLOWS PROPER PROCEDURE.  MESSAGES ARE 
           CONSTRUCTED IN ACCORDANCE WITH BUFR EDITION 2. ENTRIES
           FOR SECTION 1 MUST BE PASSED TO THIS ROUTINE IN THE ISECT1 ARRAY.
           ENTRIES FOR SECTION 3 MUST BE PASSED TO THIS ROUTINE IN ISECT3.

USAGE: CALL W3FI85(ISTEP,IUNITB,IUNITD,IBFSIZ,ISECT1,ISECT3,
                   JIF,JDESC,NEWNR,IDATA,RDATA,ATEXT,KASSOC,
                   KIF,KDESC,NRDESC,ISEC2D,ISEC2B,
                   KDATA,KARY,KBUFR,IERRTN)

   Input argument list:
      ISTEP    - KEY FOR SELECTION OF PROCESSING STEP
             1  = PROCESS INTEGER/TEXT ARRAY INTO KDATA
             2  = PROCESS REAL/TEXT ARRAY INTO KDATA
             3  = CONSTRUCT BUFR MESSAGE
      IUNITB   - UNIT NUMBER OF DEVICE CONTAINING TABLE B
      IUNITD   - UNIT NUMBER OF DEVICE CONTAINING TABLE D
      IBFSIZ   - SIZE IN BYTES OF BUFR MESSAGE ARRAY (KBUFR)
                   SHOULD BE A MULTIPLE OF WORD SIZE.
      ISECT1   - CONTAINS INFORMATION TO ENTER INTO SECTION 1
           ( 1) EDITION NUMBER
           ( 2) BUFR MASTER TABLE NUMBER
                    0 = METEOROLOGICAL
                    OTHERS NOT YET DEFINED
           ( 3) ORIGINATING CENTER - SUBCENTER NUMBER
           ( 4) ORIGINATING CENTER NUMBER
           ( 5) UPDATE SEQUENCE NUMBER
           ( 6) OPTIONAL SECTION FLAG
                    SHOULD BE SET TO ZERO UNLESS USER
                    WRITE ADDITIONAL CODE TO ENTER LOCAL
                    INFORMATION INTO SECTION 3
           ( 7) BUFR MESSAGE TYPE
           ( 8) BUFR MESSAGE SUB_TYPE
           ( 9) MASTER TABLE VERSION NUMBER
           (10) LOCAL TABLE VERSION NUMBER
           (11) YEAR OF CENTURY    - REPRESENTATIVE OF DATA
           (12) MONTH              - REPRESENTATIVE OF DATA
           (13) DAY                - REPRESENTATIVE OF DATA
           (14) HOUR               - REPRESENTATIVE OF DATA
           (15) MINUTE             - REPRESENTATIVE OF DATA
           (16)-(20)  UNUSED
 
      ISECT3   - VALUES TO BE INSERTED INTO SECTION 3, AND
                 TO CONTROL REPORT REDUCTION FOR OVERSIZED MESSAGES
           (1)  NUMBER OF SUBSETS
                    DEFINES THE NUMBER OF SUBSETS BEING PASSED TO THE
                    ENCODER ROUTINE FOR INCLUSION INTO A BUFR MESSAGE.
                    IF THE USER HAS SPECIFIED THE USE OF THE
                    SUBSET/REPORT REDUCTION ACTIVATION SWITCH, THEN
                    A PART OF THOSE SUBSETS MAY BE USED FOR THE CURRENT
                    MESSAGE AND THE REMAINDER RETAINED FOR A
                    SUBSEQUENT MESSAGE.
           (2)  OBSERVED FLAG
                    0 = OBSERVED DATA
                    1 = OTHER DATA
           (3)  COMPRESSED FLAG
                    0 = NONCOMPRESSED
                    1 = COMPRESSED
           (4)  SUBSET/REPORT REDUCTION ACTIVATION SWITCH
                    USED TO CONTROL THE NUMBER OF REPORTS ENTERED INTO
                    A BUFR MESSAGE WHEN MAXIMUM MESSAGE SIZE IS EXCEEDED
                    0 = OPTION NOT ACTIVE
                    1 = OPTION IS ACTIVE. UNUSED SUBSETS WILL BE
                        SHIFTED TO LOW ORDER POSITIONS OF ENTRY ARRAY.
                    2 = OPTION IS ACTIVE. UNUSED SUBSETS WILL REMAIN
                        IN ENTRY POSITIONS.
 
                        NOTE:- IF THIS FLAG IS SET TO ANY OTHER
                        VALUES, PROGRAM WILL BE TERMINATED WITH AN
                        ERROR CONDITION.
           (5)  NUMBER OF REPORTS TO DECREMENT BY, IF OVERSIZED MESSAGE
                    (MINIMUM VALUE = ONE).  IF ZERO IS ENTERED, IT WILL
                    BE REPLACED BY ONE.
           (6) NUMBER OF UNUSED REPORTS RETURNED TO USER
           (7) NUMBER OF REPORTS INCLUDED IN MESSAGE
           (8) NUMBER OF TABLE B ENTRIES AVAILABLE TO DECODER
           (9) NUMBER OF TABLE D ENTRIES AVAILABLE TO DECODER
          (10) TEXT INPUT FLAG
                    0  = ASCII INPUT
                    1  = EBCIDIC INPUT
 
      JIF      - JDESC INPUT FORMAT FLAG
                       0  = F X Y
                       1  = DECIMAL FORMAT
      JDESC    - LIST OF DESCRIPTORS TO GO INTO SECTION 3
                  EACH DESCRIPTOR = F * 16384 + X * 256 + Y
                      THEY MAY OR MAY NOT BE AN EXACT MATCH OF THE
                      WORKING DESCRIPTOR LIST IN KDESC.  THIS SET OF
                      DESCRIPTORS MAY CONTAIN SEQUENCE DESCRIPTORS TO
                      PROVIDE ADDITIONAL COMPRESSION WITHIN THE BUFR
                      MESSAGE.  THERE MAY BE AS FEW AS ONE SEQUENCE
                      DESCRIPTOR, OR AS MANY DESCRIPTORS AS THERE ARE
                      IN KDESC.
      NEWNR    - NR OF DESCRIPTORS IN JDESC
      IDATA    - INTEGER ARRAY DIMENSIONED BY THE NUMBER OF
                 DESCRIPTORS TO BE USED
      RDATA    - REAL ARRAY DIMENSIONED BY THE NUMBER OF
                 DESCRIPTORS TO BE USED
      ATEXT    - ARRAY CONTAINING ALL TEXT DATA ASSOCIATED WITH A
                 SPECIFIC REPORT.  ALL DATA IDENTIFIED AS TEXT DATA MUST
                 BE IN ASCII.
      KASSOC   - INTEGER ARRAY DIMENSIONED BY THE NUMBER OF DESCRIPTORS
                 TO BE USED, CONTAINING THE ASSOCIATED FIELD VALUES
                 FOR ANY ENTRY IN THE DESCRIPTOR LIST.
      KIF      - KDESC INPUT FORMAT FLAG
                       0  = F X Y
                       1  = DECIMAL FORMAT
      KDESC    - LIST OF DESCRIPTORS TO GO INTO SECTION 3
                      FULLY EXPANDED SET OF WORKING DESCRIPTORS. THERE
                      SHOULD BE AN ELEMENT DESCRIPTOR FOR EVERY DATA
                      ENTRY, BUT THERE SHOULD BE
                             NO SEQUENCE DESCRIPTORS
      NRDESC   - NR OF DESCRIPTORS IN KDESC
      ISEC2D - DATA OR TEXT TO BE ENTERED INTO SECTION 2
      ISEC2B - NUMBER OF BYTES OF DATA IN ISEC2D
 
      JIF      - JDESC INPUT FORMAT FLAG
                       0  = F X Y
                       1  = DECIMAL FORMAT
      JDESC    - LIST OF DESCRIPTORS TO GO INTO SECTION 3
                  EACH DESCRIPTOR = F * 16384 + X * 256 + Y
                      THEY MAY OR MAY NOT BE AN EXACT MATCH OF THE
                      WORKING DESCRIPTOR LIST IN KDESC.  THIS SET OF
                      DESCRIPTORS MAY CONTAIN SEQUENCE DESCRIPTORS TO
                      PROVIDE ADDITIONAL COMPRESSION WITHIN THE BUFR
                      MESSAGE.  THERE MAY BE AS FEW AS ONE SEQUENCE
                      DESCRIPTOR, OR AS MANY DESCRIPTORS AS THERE ARE
                      IN KDESC.
      NEWNR    - NR OF DESCRIPTORS IN JDESC
      IDATA    - INTEGER ARRAY DIMENSIONED BY THE NUMBER OF
                 DESCRIPTORS TO BE USED
      RDATA    - REAL ARRAY DIMENSIONED BY THE NUMBER OF
                 DESCRIPTORS TO BE USED
      ATEXT    - ARRAY CONTAINING ALL TEXT DATA ASSOCIATED WITH A
                 SPECIFIC REPORT.  ALL DATA IDENTIFIED AS TEXT DATA MUST
                 BE IN ASCII.
      KASSOC   - INTEGER ARRAY DIMENSIONED BY THE NUMBER OF DESCRIPTORS
                 TO BE USED, CONTAINING THE ASSOCIATED FIELD VALUES
                 FOR ANY ENTRY IN THE DESCRIPTOR LIST.
      KIF      - KDESC INPUT FORMAT FLAG
                       0  = F X Y
                       1  = DECIMAL FORMAT
      KDESC    - LIST OF DESCRIPTORS TO GO INTO SECTION 3
                      FULLY EXPANDED SET OF WORKING DESCRIPTORS. THERE
                      SHOULD BE AN ELEMENT DESCRIPTOR FOR EVERY DATA
                      ENTRY, BUT THERE SHOULD BE
                             NO SEQUENCE DESCRIPTORS
      NRDESC   - NR OF DESCRIPTORS IN KDESC
      ISEC2D - DATA OR TEXT TO BE ENTERED INTO SECTION 2
      ISEC2B - NUMBER OF BYTES OF DATA IN ISEC2D
 
   Output argument list:
      KDATA    - SOURCE DATA ARRAY . A 2-DIMENSION INTEGER ARRAY
                       WHERE KDATA(SUBSET,PARAM)
                              SUBSET = SUBSET NUMBER
                              PARAM  = PARAMETER NUMBER
      KARY     - WORKING ARRAY FOR MESSAGE UNDER CONSTRUCTION
             (1) UNUSED
             (2) PARAMETER POINTER
             (3) MESSAGE BIT POINTER
             (4) DELAYED REPLICATION FLAG
                    0 = NO DELAYED REPLICATION
                    1 = CONTAINS DELAYED REPLICATION
             (5) BIT POINTER FOR START OF SECTION 4
             (6) UNUSED
             (7) NR OF BITS FOR PARAMETER/DATA PACKING
             (8) TOTAL BITS FOR ASCII DATA
             (9) SCALE CHANGE VALUE
            (10) INDICATOR (USED IN W3FI85)
                                 1 = NUMERIC DATA
                                 2 = TEXT DATA
            (11) POINTER TO CURRENT POS IN KDESC
            (12) UNUSED
            (13) UNUSED
            (14) UNUSED
            (15) DATA TYPE
            (16) UNUSED
            (17) UNUSED
            (18) WORDS ADDED FOR TEXT OR ASSOCIATED FIELDS
            (19) LOCATION FOR TOTAL BYTE COUNT
            (20) SIZE OF SECTION 0
            (21) SIZE OF SECTION 1
            (22) SIZE OF SECTION 2
            (23) SIZE OF SECTION 3
            (24) SIZE OF SECTION 4
            (25) SIZE OF SECTION 5
            (26) NR BITS ADDED BY TABLE C OPERATOR
            (27) BIT WIDTH OF ASSOCIATED FIELD
            (28) JDESC INPUT FORM FLAG
                       0 = DESCRIPTOR IN F X Y FORM
                                   F IN JDESC(1,I)
                                   X IN JDESC(2,I)
                                   Y IN JDESC(3,I)
                       1 = DESCRIPTOR IN DECIMAL FORM IN JDESC(1,I)
            (29) KDESC INPUT FORM FLAG
                       0 = DESCRIPTOR IN F X Y FORM
                                   F IN KDESC(1,I)
                                   X IN KDESC(2,I)
                                   Y IN KDESC(3,I)
                       1 = DESCRIPTOR IN DECIMAL FORM IN KDESC(1,I)
            (30) BUFR MESSAGE TOTAL BYTE COUNT
      KBUFR    - ARRAY TO CONTAIN COMPLETED BUFR MESSAGE
      IERRTN   - ERROR RETURN FLAG
      KSEQ     - WORKING ARRAY FOR TABLE D INITIAL SEARCH KEY
      KNUM     - WORKING ARRAY FOR TABLE D NUMBER OF DESC'S IN SEQ
      KLIST    - WORKING ARRAY FOR TABLE D SEQUENCES
      ANAME    - TABLE B  DESCRIPTOR NAMES
      AUNITS   - TABLE B  DESCRIPTOR UNITS
      LDESC    - TABLE B  DECIMAL EQUIV OF F X Y VALUES
      KSCALE   - TABLE B  STANDARD SCALE VALUES
      KFRVAL   - TABLE B  REFERENCE VALUES
      KRFVSW   - TABLE B  SWITCHES TO INDICATE IF HAVE NEW/OLD REF VAL
      NEWRFV   - TABLE B  NEW REFERENCE VALUES
      KWIDTH   - ARRAY OF BIT WIDTHS FOR EACH ENTRY IN TABLE B
 
  REMARKS:
          IERRTN    = 0    NORMAL RETURN, BUFR MESSAGE RESIDES IN KBUFR
                           IF ISECT3(4)= 0, ALL REPORTS HAVE BEEN
                                            PROCESSED INTO A BUFR
                                            MESSAGE
                           IF ISECT3(4)= 1, A BUFR MESSAGE HAS BEEN
                                           GENERATED WITH ALL OR PART OF
                                           THE DATA PASSED TO THIS
                                           ROUTINE. ISECT3(6) CONTAINS
                                           THE NUMBER OF REPORTS THAT
                                           WERE NOT USED BUT ARE BEING
                                           HELD FOR THE NEXT MESSAGE.
                    = 1    BUFR MESSAGE CONSTRUCTION WAS HALTED
                           BECAUSE CONTENTS EXCEEDED MAXIMUM SIZE
                           (ONLY WHEN ISECT3(4) = 0)
                    = 2    BUFR MESSAGE CONSTRUCTION WAS HALTED
                           BECAUSE OF ENCOUNTER WITH A DESCRIPTOR
                           NOT FOUND IN TABLE B.
                    = 3    ROUTINE WAS CALLED WITH NO SUBSETS
                    = 4    ERROR OCCURED WHILE READING TABLE B
                    = 5    AN ATTEMPT WAS MADE TO EXPAND JDESC
                           INTO KDESC, BUT A DESCRIPTOR INDICATING
                           DELAYED REPLICATION WAS ENCOUNTERED
                    = 6    ERROR OCCURED WHILE READING TABLE D
                    = 7    DATA VALUE COULD NOT BE CONTAINED
                           IN SPECIFIED BIT WIDTH
                    = 8    DELAYED REPLICATION NOT PERMITTED
                           IN COMPRESSED DATA FORMAT
                    = 9    AN OPERATOR DESCRIPTOR 2 04 YYY OPENING
                           AN ASSOCIATED FIELD (YYY NOT EQ ZERO)
                           WAS NOT FOLLOWED BY THE DEFINING DESCRIPTOR
                           0 31 021 (7957 DECIMAL).
                    = 10   DELAYED REPLICATION DESCRIPTOR WAS NOT
                           FOLLOWED BY DESCRIPTOR FOR DELAYED
                           REPLICATION FACTOR.
                                 0 31 001
                                 0 31 002
                                 0 31 011
                                 0 31 012
                    = 11   ENCOUNTERED A REFERENCE VALUE THAT FORCED A
                           DATA ELEMENT TO BECOME NEGATIVE
                    = 12   NO MATCHING TABLE D ENTRY FOR SEQUENCE
                           DESCRIPTOR.
                    = 13   ENCOUNTERED A NON-ACCEPTABLE DATA ENTRY FLAG.
                           ISECT3(6) SHOULD BE 0 OR 1.
                    = 14   CONVERTING DESCRIPTORS FXY->DECIMAL,
                           NUMBER TO CONVERT = 0
                    = 15   NO DESCRIPTORS SPECIFIED FOR SECTION 3
                    = 16   INCOMPLETE TABLE B, NUMBER OF DESCRIPTORS
                           IN TABLE B DOES NOT MATCH NUMBER OF
                           DESCRIPTORS NEEDED TO CONSTRUCT BUFR MESSAGE
                    = 20   INCORRECT ENTRY OF REPLICATION OR SEQUENCE
                           DESCRIPTOR IN LIST OF REFERENCE VALUE CHANGES
                    = 21   INCORRECT OPERATOR DESCRIPTOR IN LIST OF
                           REFERENCE VALUE CHANGES
                    = 22   ATTEMPTING TO ENTER NEW REFERENCE VALUE INTO
                           TABLE B, BUT DESCRIPTOR DOES NOT EXIST IN
                           CURRENT MODIFIED TABLE B

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