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 |