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 |