AEA
This AEA routine converts ASCII to EBCDIC or EBCDIC to ASCII by charater.
USAGE: CALL AEA (IA, IE, NC)
Input argument list:
IA - CHARACTER*1 ARRAY OF ASCII DATA IF NC < 0
IE - CHARACTER*1 ARRAY OF EBCDIC DATA IF NC > 0
NC - INTEGER, CONTAINS CHARACTER COUNT TO CONVERT....
IF NC .LT. 0, CONVERT ASCII TO EBCDIC
IF NC .GT. 0, CONVERT EBCDIC TO ASCII
Output argument list:
IA - CHARACTER*1 ARRAY OF ASCII DATA IF NC > 0
IE - CHARACTER*1 ARRAY OF EBCDIC DATA IF NC < 0
ARGS_MOD
The Fortran Module ARGS_MOD acts as a wrapper to the system routines
IARGC and GETARG.
USAGE: args_mod
ERREXIT
This ERREXIT routine exit with an return code.
USAGE: CALL ERREXIT(IRET)
Input argument list:
IRET - INTEGER RETURN CODE
ERRMSG
The ERRMSG rountine writes a message to standard error.
USAGE: CALL ERRMSG(CMSG)
Input arguments:
CMSG CHARACTER*(*) MESSAGE TO WRITE
Remark:
This is a machine-dependent subprogram.
FPARSEI
The FPARSEI routine parses integers from a character string.
USAGE: CALL FPARSEI(CARG,MARG,KARG)
Input argument list:
CARG - CHARACTER*(*) STRING OF ASCII DIGITS TO PARSE.
INTEGERS MAY BE SEPARATED BY A COMMA OR BY BLANKS.
MARG - INTEGER MAXIMUM NUMBER OF INTEGERS TO PARSE.
Output argument list:
KARG - INTEGER (MARG) NUMBERS PARSED.
(FROM 0 TO MARG VALUES MAY BE RETURNED.)
REMARKS:
To determine the actual number of integers found in the string,
KARG should be set to fill values before the call to fparsei and
the number of non-fill values should be counted after the call.
FPARSER
The FPARSER routine parses real numbers from a character string.
USAGE: CALL FPARSER(CARG,MARG,RARG)
Input argument list:
CARG - CHARACTER*(*) STRING OF ASCII DIGITS TO PARSE.
REAL NUMBERS MAY BE SEPARATED BY A COMMA OR BY BLANKS.
MARG - INTEGER MAXIMUM NUMBER OF REAL NUMBERS TO PARSE.
Output argument list:
RARG - REAL (MARG) NUMBERS PARSED.
(FROM 0 TO MARG VALUES MAY BE RETURNED.)
REMARKS:
TO DETERMINE THE ACTUAL NUMBER OF REAL NUMBERS FOUND IN THE STRING,
RARG SHOULD BE SET TO FILL VALUES BEFORE THE CALL TO FPARSER AND
THE NUMBER OF NON-FILL VALUES SHOULD BE COUNTED AFTER THE CALL.
GBLEVENTS
The GBLEVENTS routine runs in two modes: PREVENTS and POSTEVENTS.
In the PREVENTS mode, prepares observational prepbufr reports for
subsequent quality control and analysis programs. This is donE
through the following: interpolation of global spectral simga
first guess to prepbufr observation locations with encoding of
first guess values into prepbufr reports; encoding of "PREVENT"
and/or "virtmp" events into prepbufr reports; and encoding of
observation errors from the error specification file into
prepbufr reports.
In the POSTEVENTS mode, after all quality control and analysis
programs have run, interpolates the global SPECTRAL SIMGA
analysis to prepbufr observation locations and encodes these
analyzed values into prepbufr reports.
The remainder of this abstract applies only to the prevents mode.
The "PREVENT" event can change a quality marker to flag an observation
datum for non-use by subsequent qc and analysiS programs (filtering).
USAGE: CALL GBLEVENTS(IDATEP,IUNITF,IUNITE,IUNITP,IUNITS,SUBSET,
NEWTYP)
Input argument list:
IDATEP - CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
IUNITF - 2-WORD ARRAY:
- WORD 1 - UNIT NUMBER OF FIRST INPUT SPECTRAL (GLOBAL)
- SIGMA FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN
- IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS VALID AT
- THE DATE IN IDATEP, IF HH IN IDATEP IS NOT A
- MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST
- TIME PRIOR TO THE DATE IN IDATEP THAT IS A MULTIPLE
- OF 3
- WORD 2 - UNIT NUMBER OF SECOND INPUT SPECTRAL (GLOBAL)
- SIGMA FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN
- IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS EMPTY, IF
- HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS
- VALID AT THE CLOSEST TIME AFTER THE DATE IN IDATEP
- THAT IS A MULTIPLE OF 3
IUNITE - UNIT NUMBER OF INPUT OBSERVATION ERROR FILE
- (USED ONLY IN PREVENTS MODE)
IUNITP - UNIT NUMBER OF OUTPUT PREPBUFR DATA SET
IUNITS - UNIT NUMBER OF "PREVENT" EVENTS DATA FILTERING
- SUMMARY PRINT FILE
- (USED ONLY IN PREVENTS MODE)
SUBSET - THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
- REPORT BEING PROCESSED
NEWTYP - INDICATOR IF THE BUFR MESSAGE TABLE A ENTRY HAS
- CHANGED FROM THAT OF THE PREVIOUS REPORT (=0 - NO,
=1 - YES)
Input files:
UNIT 05 - STANDARD INPUT (DATA CARDS - SEE NAMELIST
DOCUMENTATION BELOW)
(NOTE: IF STANDARD INPUT FILE IS NULL, THEN THIS
SUBROUTINE RUNS IN POSTEVENTS MODE)
UNIT AA - PREPBUFR DATA SET
- (WHERE AA IS UNIT NUMBER DEFINED AS IUNITP IN
- INPUT ARGUMENT LIST)
UNIT BB - SPECTRAL (GLOBAL) SIGMA GUESS (PREVENTS MODE) OR
- ANALYSIS (POSTEVENTS MODE) FILE
- (WHERE BB IS UNIT NUMBER DEFINED AS IUNITF(1) IN
- INPUT ARGUMENT LIST)
UNIT CC - SPECTRAL (GLOBAL) SIGMA GUESS (PREVENTS MODE) OR
- ANALYSIS (POSTEVENTS MODE) FILE
- (WHERE CC IS UNIT NUMBER DEFINED AS IUNITF(2) IN
- INPUT ARGUMENT LIST)
UNIT DD - OBSERVATION ERROR FILE (WHERE DD IS UNIT NUMBER
- DEFINED AS IUNITE IN INPUT ARGUMENT LIST)
- (USED ONLY IN PREVENTS MODE)
Output files:
UNIT 06 - STANDARD OUTPUT PRINT
UNIT AA - PREPBUFR DATA SET
- (WHERE AA IS UNIT NUMBER DEFINED AS IUNITP IN
- INPUT ARGUMENT LIST)
UNIT DD - "PREVENT" EVENTS DATA FILTERING SUMMARY PRINT FILE
- (WHERE DD IS UNIT NUMBER DEFINED AS IUNITS IN
- INPUT ARGUMENT LIST)
- (USED ONLY IN PREVENTS MODE)
GBYTE
The GBYTE routine unpacks a byte into a target word. The
unpacked byte is right-justified in the target word, and the
remainder of the word is zero-filled.
USAGE: CALL GBYTE(IPACKD,IUNPKD,NOFF,NBITS)
Input argument list:
IPACKD THE WORD OR ARRAY CONTAINING THE BYTE TO BE UNPACKED.
IUNPKD THE WORD WHICH WILL CONTAIN THE UNPACKED BYTE.
NOFF THE NUMBER OF BITS TO SKIP, LEFT TO RIGHT, IN 'IPACKD'
IN ORDER TO LOCATE THE BYTE TO BE UNPACKED.
NBITS NUMBER OF BITS IN THE BYTE TO BE UNPACKED. MAXIMUM OF
64 BITS ON 64 BIT MACHINE, 32 BITS ON 32 BIT MACHINE.
Output argument list:
IUNPKD CONTAINS THE REQUESTED UNPACKED BYTE.
GBYTES
The GBYTES routine unpacks a series of bytes into a target
array. Each unpacked byte is right-justified in its target
word, and the remainder of the word is zero-filled.
USAGE: CALL GBYTES(IPACKD,IUNPKD,NOFF,NBITS,NSKIP,ITER)
Input argument list:
IPACKD THE WORD OR ARRAY CONTAINING THE PACKED BYTES.
IUNPKD THE ARRAY WHICH WILL CONTAIN THE UNPACKED BYTES.
NOFF THE INITIAL NUMBER OF BITS TO SKIP, LEFT TO
RIGHT, IN 'IPACKD' IN ORDER TO LOCATE
THE FIRST BYTE TO UNPACK.
NBITS NUMBER OF BITS IN THE BYTE TO BE UNPACKED.
MAXIMUM OF 64 BITS ON 64 BIT MACHINE, 32 BITS
ON 32 BIT MACHINE.
ISKIP THE NUMBER OF BITS TO SKIP BETWEEN EACH BYTE
IN 'IPACKD' IN ORDER TO LOCATE THE NEXT BYTE
TO BE UNPACKED.
ITER THE NUMBER OF BYTES TO BE UNPACKED.
Output argument list:
IUNPKD CONTAINS THE REQUESTED UNPACKED BYTES.
GETBIT
The GETBIT routine reads number of bits required to pack a given field
for particular binary and decimal scalings is computed.
the field is rounded off to the decimal scaling for packing.
the minimum and maximum rounded field values are also returned.
grib bitmap masking for valid data is optionally used.
USAGE: CALL GTBITS(IBM,IBS,IDS,LEN,MG,G,GMIN,GMAX,NBIT)
Input argument list:
IBM - INTEGER BITMAP FLAG (=0 FOR NO BITMAP)
IBS - INTEGER BINARY SCALING
(E.G. IBS=3 TO ROUND FIELD TO NEAREST EIGHTH VALUE)
IDS - INTEGER DECIMAL SCALING
(E.G. IDS=3 TO ROUND FIELD TO NEAREST MILLI-VALUE)
(NOTE THAT IDS AND IBS CAN BOTH BE NONZERO,
E.G. IDS=1 AND IBS=1 ROUNDS TO THE NEAREST TWENTIETH)
LEN - INTEGER LENGTH OF THE FIELD AND BITMAP
MG - INTEGER (LEN) BITMAP IF IBM=1 (0 TO SKIP, 1 TO KEEP)
G - REAL (LEN) FIELD
Output argument list:
GROUND - REAL (LEN) FIELD ROUNDED TO DECIMAL AND BINARY SCALING
(SET TO ZERO WHERE BITMAP IS 0 IF IBM=1)
GMIN - REAL MINIMUM VALID ROUNDED FIELD VALUE
GMAX - REAL MAXIMUM VALID ROUNDED FIELD VALUE
NBIT - INTEGER NUMBER OF BITS TO PACK
GETGB
The GETGB routine finds and unpacks a grib message. The routine reads
a grib index file (or optionally the grib file itself) to get the
index buffer (i.e. table of contents) for the grib file. The index
buffer is saved for use by future prospective calls. It finds in
the index buffer a reference to the grib message requested.
The grib message request specifies the number of messages to skip
and the unpacked pds and gds parameters. (A requested parameter
of -1 means to allow any value of this parameter to be found.)
If the requested grib message is found, then it is read from thE
grib file and unpacked. Its message number is returned along with
the unpacked pds and gds parameters, the unpacked bitmap (if any),
and the unpacked data. If the grib message is not found, then the
return code will be nonzero.
USAGE: CALL GETGB(LUGB,LUGI,JF,J,JPDS,JGDS,
KF,K,KPDS,KGDS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
- PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
Output arguments:
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbm as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
do not engage the same logical unit from more than one processor.
GETGB1
The GETGB1 routine reads and unpacks a grib message. The routine
reads an associated grib index file (unless it already was read).
and finds in the index file a reference to the grib message requested.
the grib message request specifies the number of messages to skip
and the unpacked pds and gds parameters. (a requested parameter
of -1 means to allow any value of this parameter to be found.)
If the requested grib message is found, then it is read from the
grib file and unpacked. Its message number is returned along with
the unpacked pds and gds parameters, the unpacked bitmap (if any),
and the unpacked data. If the grib message is not found, then the
return code will be nonzero.
USAGE: CALL GETGB1(LUGB,LUGI,JF,J,JPDS,JGDS,
GRIB,KF,K,KPDS,KGDS,LB,F,IRET)
Input arguments:
LUGB LOGICAL UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI LOGICAL UNIT OF THE UNBLOCKED GRIB INDEX FILE
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO REOPEN INDEX FILE AND SEARCH FROM BEGINNING)
JPDS INTEGER (25) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
LOOK IN DOC BLOCK OF W3FI63 FOR ARRAY KPDS
FOR LIST OF ORDER OF UNPACKED PDS VALUES. IN
MOST CASES YOU ONLY NEED TO SET 4 OR 5 VALUES
TO PICK UP RECORD.
JGDS INTEGER (22) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
Output arguments:
GRIB GRIB DATA ARRAY BEFORE IT IS UNPACKED
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (25) UNPACKED PDS PARAMETERS
KGDS INTEGER (22) UNPACKED GDS PARAMETERS
LB LOGICAL (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
GETGB1R
The GETGB1R routine reads and unpack a grib message.
USAGE: CALL GETGB1R(LUGB,LSKIP,LGRIB,KF,KPDS,KGDS,KENS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LSKIP INTEGER NUMBER OF BYTES TO SKIP
LGRIB INTEGER NUMBER OF BYTES TO READ
Output arguments:
KF INTEGER NUMBER OF DATA POINTS UNPACKED
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
97 ERROR READING GRIB FILE
OTHER W3FI63 GRIB UNPACKER RETURN CODE
GETGB1RE
The GETGB1RE routine reads and unpacks a grib message.
USAGE: CALL GETGB1RE(LUGB,LSKIP,LGRIB,KF,KPDS,KGDS,KENS,
KPROB,XPROB,KCLUST,KMEMBR,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LSKIP INTEGER NUMBER OF BYTES TO SKIP
LGRIB INTEGER NUMBER OF BYTES TO READ
Output arguments:
KF INTEGER NUMBER OF DATA POINTS UNPACKED
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
KPROB INTEGER (2) PROBABILITY ENSEMBLE PARMS
XPROB REAL (2) PROBABILITY ENSEMBLE PARMS
KCLUST INTEGER (16) CLUSTER ENSEMBLE PARMS
KMEMBR INTEGER (8) CLUSTER ENSEMBLE PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
97 ERROR READING GRIB FILE
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
There is no protection against unpacking too much data.
subprogram can be called from a multiprocessing environment.
do not engage the same logical unit from more than one processor.
GETGB1S
The GETGB1S routine finds a grib message.
USAGE: CALL GETGB1S(CBUF,NLEN,NNUM,J,JPDS,JGDS,JENS,
K,KPDS,KGDS,KENS,LSKIP,LGRIB,IRET)
Input arguments:
CBUF CHARACTER*1 (NLEN*NNUM) BUFFER CONTAINING INDEX DATA
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
Output arguments:
K INTEGER MESSAGE NUMBER FOUND
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
K ENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
LSKIP INTEGER NUMBER OF BYTES TO SKIP
LGRIB INTEGER NUMBER OF BYTES TO READ
IRET INTEGER RETURN CODE
0 ALL OK
1 REQUEST NOT FOUND
REMARKS:
The subprogram can be called from a multiprocessing environment.
GETGBE
The GETGBE routine finds and unpacks a grib message.
USAGE: CALL GETGBE(LUGB,LUGI,JF,J,JPDS,JGDS,JENS,
KF,K,KPDS,KGDS,KENS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
- PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
Output arguments:
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbem as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
do not engage the same logical unit from more than one processor.
GETGBEH
The GETGBEH routines finds a grib message.
USAGE: CALL GETGBEH(LUGB,LUGI,J,JPDS,JGDS,JENS,
KG,KF,K,KPDS,KGDS,KENS,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
(ONLY USED IF LUGI=0)
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
Output arguments:
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
KF INTEGER NUMBER OF DATA POINTS IN THE MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
99 REQUEST NOT FOUND
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbemh as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
do not engage the same logical unit from more than one processor.
GETGBEM
The GETGBEM routine finds and unpacks a grib message.
USAGE: CALL GETGBEM(LUGB,LUGI,JF,J,JPDS,JGDS,JENS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KF,K,KPDS,KGDS,KENS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
Specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
do not engage the same logical unit from more than one processor.
GETGBEMH
The GETGBEMH routine finds a grib message.
USAGE: CALL GETGBEMH(LUGB,LUGI,J,JPDS,JGDS,JENS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KG,KF,K,KPDS,KGDS,KENS,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
(ONLY USED IF LUGI=0)
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
KF INTEGER NUMBER OF DATA POINTS IN THE MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
99 REQUEST NOT FOUND
REMARKS:
Specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
do not engage the same logical unit from more than one processor.
GETGBEMP
The GETGBEMP routine finds a grib message.
USAGE: CALL GETGBEMP(LUGB,LUGI,JG,J,JPDS,JGDS,JENS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KG,K,KPDS,KGDS,KENS,G,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JG INTEGER MAXIMUM NUMBER OF BYTES IN THE GRIB MESSAGE
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
G CHARACTER*1 (KG) GRIB MESSAGE
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF BYTES GREATER THAN JG
99 REQUEST NOT FOUND
REMARKS:
specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
do not engage the same logical unit from more than one processor.
GETGBENS
The GETGBENS routine finds and unpacks a grib message.
USAGE: CALL GETGBENS(LUGB,LUGI,JF,J,JPDS,JGDS,JENS,
KF,K,KPDS,KGDS,KENS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
Output arguments:
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbem as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
do not engage the same logical unit from more than one processor.
GETGBEP
The GETGBEP routine finds a grib message.
USAGE: CALL GETGBEP(LUGB,LUGI,JG,J,JPDS,JGDS,JENS,
KG,K,KPDS,KGDS,KENS,G,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JG INTEGER MAXIMUM NUMBER OF BYTES IN THE GRIB MESSAGE
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
Output arguments:
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
G CHARACTER*1 (KG) GRIB MESSAGE
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF BYTES GREATER THAN JG
99 REQUEST NOT FOUND
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbemp as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
DO NOT engage the same logical unit from more than one processor.
GETGBEX
The GETGBEX routine finds and unpacks a grib message.
USAGE: CALL GETGBEX(LUGB,LUGI,JF,J,JPDS,JGDS,JENS,
KF,K,KPDS,KGDS,KENS,KPROB,XPROB,KCLUST,KMEMBR,
LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
Output arguments:
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
KPROB INTEGER (2) PROBABILITY ENSEMBLE PARMS
XPROB REAL (2) PROBABILITY ENSEMBLE PARMS
KCLUST INTEGER (16) CLUSTER ENSEMBLE PARMS
KMEMBR INTEGER (8) CLUSTER ENSEMBLE PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbexm as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
DO NOT engage the same logical unit from more than one processor.
GETGBEXM
The GETGBEXM routine finds and unpacks a grib message.
USAGE: CALL GETGBEXM(LUGB,LUGI,JF,J,JPDS,JGDS,JENS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KF,K,KPDS,KGDS,KENS,KPROB,XPROB,KCLUST,KMEMBR,
LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
B
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
JENS INTEGER (200) ENSEMBLE PDS PARMS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(23)=2)
(=-1 FOR WILDCARD)
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
KENS INTEGER (200) UNPACKED ENSEMBLE PDS PARMS
KPROB INTEGER (2) PROBABILITY ENSEMBLE PARMS
XPROB REAL (2) PROBABILITY ENSEMBLE PARMS
KCLUST INTEGER (16) CLUSTER ENSEMBLE PARMS
KMEMBR INTEGER (8) CLUSTER ENSEMBLE PARMS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
Specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
GETGBH
The GETGBH routine finds a grib message.
USAGE: CALL GETGBH(LUGB,LUGI,J,JPDS,JGDS,
KG,KF,K,KPDS,KGDS,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
(ONLY USED IF LUGI=0)
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
Output arguments:
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
KF INTEGER NUMBER OF DATA POINTS IN THE MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
99 REQUEST NOT FOUND
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbmh as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
DO NOT engage the same logical unit from more than one processor.
GETGBM
The GETGBM routine finds and unpacks a grib message.
USAGE: CALL GETGBM(LUGB,LUGI,JF,J,JPDS,JGDS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KF,K,KPDS,KGDS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JF INTEGER MAXIMUM NUMBER OF DATA POINTS TO UNPACK
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KF INTEGER NUMBER OF DATA POINTS UNPACKED
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
LB LOGICAL*1 (KF) UNPACKED BITMAP IF PRESENT
F REAL (KF) UNPACKED DATA
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF DATA POINTS GREATER THAN JF
99 REQUEST NOT FOUND
OTHER W3FI63 GRIB UNPACKER RETURN CODE
REMARKS:
Specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
GETGBMH
The GETGBMH routine finds a grib message.
USAGE: CALL GETGBMH(LUGB,LUGI,J,JPDS,JGDS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KG,KF,K,KPDS,KGDS,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
(ONLY USED IF LUGI=0)
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
KF INTEGER NUMBER OF DATA POINTS IN THE MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
99 REQUEST NOT FOUND
REMARKS:
Specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
GETGBMP
The GETGBMP routine finds a grib message.
USAGE: CALL GETGBMP(LUGB,LUGI,JG,J,JPDS,JGDS,
MBUF,CBUF,NLEN,NNUM,MNUM,
KG,K,KPDS,KGDS,G,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JG INTEGER MAXIMUM NUMBER OF BYTES IN THE GRIB MESSAGE
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
MBUF INTEGER LENGTH OF INDEX BUFFER IN BYTES
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
(INITIALIZE BY SETTING J=-1)
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
(INITIALIZE BY SETTING J=-1)
NNUM INTEGER NUMBER OF INDEX RECORDS
(INITIALIZE BY SETTING J=-1)
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
(INITIALIZE BY SETTING J=-1)
Output arguments:
CBUF CHARACTER*1 (MBUF) INDEX BUFFER
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
MNUM INTEGER NUMBER OF INDEX RECORDS SKIPPED
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
G CHARACTER*1 (KG) GRIB MESSAGE
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF BYTES GREATER THAN JG
99 REQUEST NOT FOUND
REMARKS:
Specify an index file if feasible to increase speed.
subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
GETGBP
The GETGBP routine finds a grib message.
USAGE: CALL GETGBP(LUGB,LUGI,JG,J,JPDS,JGDS,
KG,K,KPDS,KGDS,G,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
(=0 TO GET INDEX BUFFER FROM THE GRIB FILE)
JG INTEGER MAXIMUM NUMBER OF BYTES IN THE GRIB MESSAGE
J INTEGER NUMBER OF MESSAGES TO SKIP
(=0 TO SEARCH FROM BEGINNING)
(<0 TO READ INDEX BUFFER AND SKIP -1-J MESSAGES)
JPDS INTEGER (200) PDS PARAMETERS FOR WHICH TO SEARCH
(=-1 FOR WILDCARD)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
JGDS INTEGER (200) GDS PARAMETERS FOR WHICH TO SEARCH
(ONLY SEARCHED IF JPDS(3)=255)
(=-1 FOR WILDCARD)
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
Output arguments:
KG INTEGER NUMBER OF BYTES IN THE GRIB MESSAGE
K INTEGER MESSAGE NUMBER UNPACKED
(CAN BE SAME AS J IN CALLING PROGRAM
IN ORDER TO FACILITATE MULTIPLE SEARCHES)
KPDS INTEGER (200) UNPACKED PDS PARAMETERS
KGDS INTEGER (200) UNPACKED GDS PARAMETERS
G CHARACTER*1 (KG) GRIB MESSAGE
IRET INTEGER RETURN CODE
0 ALL OK
96 ERROR READING INDEX FILE
97 ERROR READING GRIB FILE
98 NUMBER OF BYTES GREATER THAN JG
99 REQUEST NOT FOUND
REMARKS:
In order to unpack grib from a multiprocessing environment
where each processor is attempting to read from its own pair of
logical units, one must directly call subprogram getgbmp as below,
allocating a private copy of cbuf, nlen and nnum to each processor.
DO NOT ENGAGE THE SAME LOGICAL UNIT FROM MORE THAN ONE PROCESSOR.
GETGI
The GETGI routine reads a grib index filei and return its contents.
USAGE: CALL GETGI(LUGI,MNUM,MBUF,CBUF,NLEN,NNUM,IRET)
Input arguments:
LUGI INTEGER UNIT OF THE UNBLOCKED GRIB INDEX FILE
MNUM INTEGER NUMBER OF INDEX RECORDS TO SKIP (USUALLY 0)
MBUF INTEGER LENGTH OF CBUF IN BYTES
Output arguments:
CBUF CHARACTER*1 (MBUF) BUFFER TO RECEIVE INDEX DATA
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
IRET INTEGER RETURN CODE
0 ALL OK
1 CBUF TOO SMALL TO HOLD INDEX BUFFER
2 ERROR READING INDEX FILE BUFFER
3 ERROR READING INDEX FILE HEADER
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
GETGIR
The GETGIR routine reads a grib file and returns its index contents.
USAGE: CALL GETGIR(LUGB,MSK1,MSK2,MNUM,MBUF,CBUF,NLEN,NNUM,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB FILE
MSK1 INTEGER NUMBER OF BYTES TO SEARCH FOR FIRST MESSAGE
MSK2 INTEGER NUMBER OF BYTES TO SEARCH FOR OTHER MESSAGES
MNUM INTEGER NUMBER OF INDEX RECORDS TO SKIP (USUALLY 0)
MBUF INTEGER LENGTH OF CBUF IN BYTES
Output arguments:
CBUF CHARACTER*1 (MBUF) BUFFER TO RECEIVE INDEX DATA
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER NUMBER OF INDEX RECORDS
(=0 IF NO GRIB MESSAGES ARE FOUND)
IRET INTEGER RETURN CODE
0 ALL OK
1 CBUF TOO SMALL TO HOLD INDEX DATA
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
GTBITS
The GTBITS routine computes number of bits and round field.
USAGE: CALL GTBITS(IBM,IDS,LEN,MG,G,GMIN,GMAX,NBIT)
Input argument list:
IBM - INTEGER BITMAP FLAG (=0 FOR NO BITMAP)
IDS - INTEGER DECIMAL SCALING
(E.G. IDS=3 TO ROUND FIELD TO NEAREST MILLI-VALUE)
LEN - INTEGER LENGTH OF THE FIELD AND BITMAP
MG - INTEGER (LEN) BITMAP IF IBM=1 (0 TO SKIP, 1 TO KEEP)
G - REAL (LEN) FIELD
Output argument list:
GROUND - REAL (LEN) FIELD ROUNDED TO DECIMAL SCALING
(SET TO ZERO WHERE BITMAP IS 0 IF IBM=1)
GMIN - REAL MINIMUM VALID ROUNDED FIELD VALUE
GMAX - REAL MAXIMUM VALID ROUNDED FIELD VALUE
NBIT - INTEGER NUMBER OF BITS TO PACK
HOSTNAME
The HOSTNAME function returns current hostname.
USAGE: hostname=HOSTNAME()
Input argument list:
None
Output argument list:
HOSTNAME - CHARACTER(15) HOSTNAME
IDSDEF
The IDSDEF routine sets default decimal scalings.
USAGE: CALL IDSDEF(IPTV,IDS)
Input arguments:
IPTV PARAMTER TABLE VERSION (ONLY 1 OR 2 IS RECOGNIZED)
Output arguments:
IDS INTEGER (255) DECIMAL SCALINGS
(UNKNOWN DECIMAL SCALINGS WILL NOT BE SET)
INSTRUMENT
The INSTRUMENT routine monitors wall-clock times.
USAGE: CALL INSTRUMENT(K,KALL,TTOT,TMIN,TMAX)
Input argument list:
K - INTEGER POSITIVE SECTION NUMBER
OR MAXIMUM SECTION NUMBER IN THE FIRST INVOCATION
OR ZERO TO RESET ALL WALL-CLOCK STATISTICS
OR NEGATIVE SECTION NUMBER TO SKIP MONITORING
AND JUST RETURN STATISTICS.
Output argument list:
KALL - INTEGER NUMBER OF TIMES SECTION IS CALLED
TTOT - REAL TOTAL SECONDS SPENT IN SECTION
TMIN - REAL MINIMUM SECONDS SPENT IN SECTION
TMAX - REAL MAXIMUM SECONDS SPENT IN SECTION
REMARKS:
This subprogram should not be invoked from a multitasking region.
normally, time spent inside this subprogram is not counted.
wall-clock times are kept to the nearest millisecond.
ISRCHNE
The ISRCHNE function searches vector given a target.
USAGE: index=ISRCHNE(n, x, incx, target)
Input argument list:
n - Number of elements to be searched
x - Real or integer array of dimension (n-1) * |incx| + 1.
Array x contains the vector to be searched.
incx - Increment between elements of the searched array.
target - Value for which to search in the array.
Output value
index - Index of the first element equal or not equal to target. If
target is not found, n+1 is returned. If n <= 0, 0 is
returned.
REMARKS:
This code and documentation was taken directly from the
man page for routine ISRCHNE on a CRAY UNICOS system.
IW3JDN
The IW3JDN function computes julian day number.
USAGE: II = IW3JDN(IYEAR,MONTH,IDAY)
Input variables:
IYEAR ARG LIST INTEGER YEAR ( 4 DIGITS)
MONTH ARG LIST INTEGER MONTH OF YEAR (1 - 12)
IDAY ARG LIST INTEGER DAY OF MONTH (1 - 31)
Output variables:
IW3JDN FUNTION INTEGER JULIAN DAY NUMBER
For example:
JAN. 1,1960 IS JULIAN DAY NUMBER 2436935
JAN. 1,1987 IS JULIAN DAY NUMBER 2446797
REMARKS:
Julian period was devised by Joseph Scaliger in 1582.
Julian day number #1 started on Jan. 1,4713 B.C. Three major
chronological cycles begin on the same day. A 28-year solar
cycle, a 19-year luner cycle, a 15-year indiction cycle, used
in ancient Rome to regulate taxes. It will take 7980 years
to complete the period, the product of 28, 19, and 15.
Scaliger named the period, date, and number after his father
Julius (not after the Julian calendar). This seems to have
caused a lot of confusion in text books. Scaliger name is
spelled three different ways. Julian date and Julian day
number are interchanged. A Julian date is used by astronomers
to compute accurate time, It has a fraction. When truncated to
an integer it is called an Julian day number. This function
was in a letter to the editor of the communications of the acm
volume 11 / number 10 / october 1968. The Julian day number
can be converted to a year, month, day, day of week, day of
year by calling subroutine W3FS26.
IW3MAT
The IW3MAT function tests for match two integer arrays.
USAGE: II = IW3MAT(L1,L2,N)
Input variables:
L1 ARG LIST INTEGER ARRAY TO MATCH WITH L2
L2 ARG LIST INTEGER ARRAY TO MATCH WITH L1
N ARG LIST NUMBER OF INTEGER WORDS TO TEST FOR MATCH
Output variables:
IW3MAT FUNCTION LOGICAL .TRUE. IF L1 AND L2 MATCH ON ALL WORDS,
LOGICAL .FALSE. IF NOT MATCH ON ANY WORD
IW3PDS
The IW3PDS function tests for match of two PDS.
USAGE: II = IW3PDS(L1,L2,KEY)
II = IW3PDB(L1,L2,KEY) ALIAS
Input variables:
L1 ARG LIST CHARACTER ARRAY TO MATCH WITH L2,
L1 CAN ALSO BE A 3 WORD INTEGER ARRAY
L2 ARG LIST CHARACTER ARRAY TO MATCH WITH L1,
L2 CAN ALSO BE A 3 WORD INTEGER ARRAY
KEY ARG LIST 0, DO NOT INCLUDE THE DATE (BYTES 13-17) IN
MATCH.
1, MATCH 24 BYTES OF PDS
2, MATCH BYTES 1-3, 5-12 OF PDS
3, MATCH BYTES 1-3, 7-12 OF PDS
Output variables:
IW3PDB FUNCTION LOGICAL .TRUE. IF L1 AND L2 MATCH ON ALL CHAR.,
LOGICAL .FALSE. IF NOT MATCH ON ANY CHAR.
REMARK:
Alias added because of name change in grib write up.
name of pdb (product definition block) was changd to
PDS (Product Definition Section).
IW3UNP29
The IW3UNP29 routine reads and unpacks one report into the unpacked
Office Note ON29/124 format.
USAGE: II = IW3UNP29(NUNIT, OBS, IER)
Input argument list:
NUNIT - FORTRAN UNIT NUMBER FOR SEQUENTIAL DATA SET CONTAINING
- PACKED JBUFR REPORTS OR PACKED AND BLOCKED OFFICE NOTE
- 29/124 REPORTS
Output argument list:
OBS - ARRAY CONTAINING ONE REPORT IN UNPACKED OFFICE NOTE
- 29/124 FORMAT. FORMAT IS MIXED, USER MUST EQUIVALENCE
- INTEGER AND CHARACTER ARRAYS TO THIS ARRAY (SEE
- DOCBLOCK FOR W3FI64 IN /nwprod/w3libs/w3lib.source
- OR WRITEUPS ON W3FI64, ON29, ON124 FOR HELP)
- THE LENGTH OF THE ARRAY SHOULD BE AT LEAST 1608
IER - RETURN FLAG (EQUAL TO FUNCTION VALUE) - SEE REMARKS
Input files:
UNIT AA - SEQUENTIAL JBUFR OR OFFICE NOTE 29/124 DATA SET ("AA"
- IS UNIT NUMBER SPECIFIED BY INPUT ARGUMENT "NUNIT")
Output files:
UNIT 06 - PRINTOUT
IXGB
The IXGB routine makes index record.
USAGE: CALL WRGI1R(LUGB,LSKIP,LGRIB,LUGI)
Input arguments:
LUGB INTEGER LOGICAL UNIT OF INPUT GRIB FILE
LSKIP INTEGER NUMBER OF BYTES TO SKIP BEFORE GRIB MESSAGE
LGRIB INTEGER NUMBER OF BYTES IN GRIB MESSAGE
NLEN INTEGER LENGTH OF EACH INDEX RECORD IN BYTES
NNUM INTEGER INDEX RECORD NUMBER TO MAKE
Output arguments:
MLEN INTEGER ACTUAL VALID LENGTH OF INDEX RECORD
CBUF CHARACTER*1 (MBUF) BUFFER TO RECEIVE INDEX DATA
LENGDS
The LENGDS function returns the length of a grid.
USAGE: CALL LENGDS(KGDS)
Input arguments:
KGDS INTEGER (200) GDS PARAMETERS IN W3FI63 FORMAT
Output arguments:
LENGDS INTEGER SIZE OF GRID
MOVA2I
The MOVA2I function moves a bit string from a CHARACTER*1 to INTEGER.
USAGE: I = MOVA2I(A)
Input argument :
A CHARACTER*1 variable that holds the bitstring to extract
Return argument :
MOVA2I INTEGER Value of the bitstring in character a
ORDERS
The ORDERS routine is a fast and stable multipurpose sort.
USAGE: CALL ORDERS(IN,ISORT,IDATA,INDEX,N,M,I1,I2)
Input arguments:
IN - INDICATOR OF KEY FORM AND INDEX STATE
IN = 0 INITIALIZE INDEXES AND SORT CHARACTERS
IN = 1 INITIALIZE INDEXES AND SORT INTEGERS
IN = 2 INITIALIZE INDEXES AND SORT REAL NUMBERS
IN = 10 SORT CHARACTERS WITH INDEXES AS IS
IN = 11 SORT INTEGERS WITH INDEXES AS IS
IN = 12 SORT REAL NUMBERS WITH INDEXES ASIS
ISORT - WORK ARRAY WITH THE SAME DIMENSION AS IDATA
IDATA - ARRAY OF SORT KEYS AS DESCRIBED BY IN
INDEX - ARRAY OF INDEXES REPRESENTING THE SORTED IDATA
N - DIMENSION OF ISORT, IDATA, AND INDEX
M - OFFSET (IN KEY-WORDS) BETWEEN SUCCESSIVE MEMBERS OF IDATA
I1 - BYTE LENGTH OF THE KEY-WORDS
I2 - NOT USED; INCLUDED FOR COMPATABILITY WITH ORIGINAL CRAY
ROUTINE
Output arguments:
INDEX - ARRAY OF INDEXES REPRESENTING THE SORTED 'IDATA'
REMARKS:
The one byte radix method was selected for orders because it
offers a good ratio of memory requirement to operation count
for producing a sort. Because of recursive manipulation of indexes
in one of the loops, this may actually take slightly longer on some
vector machines than a (more work intensive) one bit radix method.
In general, though, the one byte method is faster. Any larger radix
presents exponentially increasing memory required. NOTE that the
implementation uses very little local data space, and only modesT
user-supplied memory.
PDSENS
The PDSENS routine packs grib pds extension 41- for ensemble.
USAGE: CALL PDSENS.F(KENS,KPROB,XPROB,KCLUST,KMEMBR,ILAST,MSGA)
Input argument list:
KENS(5) - BYTES 41-45 (GENERAL SECTION, ALWAYS PRESENT.)
KPROB(2) - BYTES 46-47 (PROBABILITY SECTION, PRESENT ONLY IF NEEDE
XPROB(2) - BYTES 48-51&52-55 (PROBABILITY SECTION, IF NEEDED.)
KCLUST(16) - BYTES 61-76 (CLUSTERING SECTION, IF NEEDED.)
KMEMBR(80) - BYTES 77-86 (CLUSTER MEMBERSHIP SECTION, IF NEEDED.)
ILAST - LAST BYTE TO BE PACKED (IF GREATER OR EQUAL TO FIRST BY
IN ANY OF FOUR SECTIONS ABOVE, WHOLE SECTION IS PACKED.
Output argument list: (INCLUDING WORK ARRAYS)
MSGA - FULL PDS SECTION, INCLUDING NEW ENSEMBLE EXTENSION
REMARKS:
Use PDSEUP routine for unpacking pds ensemble extension.
Subprogram can be called from a multiprocessing environment.
PDSEUP
The PDSEUP routine unpacks grib PDS extension 41- for ensemble.
USAGE: CALL PDSENS.F(KENS,KPROB,XPROB,KCLUST,KMEMBR,ILAST,MSGA)
Input argument list:
ILAST - LAST BYTE TO BE UNPACKED (IF GREATER/EQUAL TO FIRST BYT
IN ANY OF FOUR SECTIONS BELOW, WHOLE SECTION IS PACKED.
MSGA - FULL PDS SECTION, INCLUDING NEW ENSEMBLE EXTENSION
Output argument list: (INCLUDING WORK ARRAYS)
KENS(5) - BYTES 41-45 (GENERAL SECTION, ALWAYS PRESENT.)
KPROB(2) - BYTES 46-47 (PROBABILITY SECTION, PRESENT ONLY IF NEEDE
XPROB(2) - BYTES 48-51&52-55 (PROBABILITY SECTION, IF NEEDED.)
KCLUST(16) - BYTES 61-76 (CLUSTERING SECTION, IF NEEDED.)
KMEMBR(80) - BYTES 77-86 (CLUSTER MEMBERSHIP SECTION, IF NEEDED.)
REMARKS:
Use pdsens.f for packing pds ensemble extension.
Subprogram can be called from a multiprocessing environment.
PUTGB
The PUTGB routine packs and writes a grib message.
USAGE: CALL PUTGB(LUGB,KF,KPDS,KGDS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
KF INTEGER NUMBER OF DATA POINTS
KPDS INTEGER (200) PDS PARAMETERS
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
KGDS INTEGER (200) GDS PARAMETERS
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
LB LOGICAL*1 (KF) BITMAP IF PRESENT
F REAL (KF) DATA
Output arguments:
IRET INTEGER RETURN CODE
0 ALL OK
OTHER W3FI72 GRIB PACKER RETURN CODE
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
PUTGBE
The PUTGBE routine packs and writes a grib message.
USAGE: CALL PUTGBE(LUGB,KF,KPDS,KGDS,KENS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
KF INTEGER NUMBER OF DATA POINTS
KPDS INTEGER (200) PDS PARAMETERS
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
KGDS INTEGER (200) GDS PARAMETERS
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
KENS INTEGER (200) ENSEMBLE PDS PARMS
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
LB LOGICAL*1 (KF) BITMAP IF PRESENT
F REAL (KF) DATA
Output arguments:
IRET INTEGER RETURN CODE
0 ALL OK
OTHER W3FI72 GRIB PACKER RETURN CODE
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
PUTGBEN
The PUTGBEN routine packs and writes a grib message.
USAGE: CALL PUTGBEN(LUGB,KF,KPDS,KGDS,KENS,IBS,NBITS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
KF INTEGER NUMBER OF DATA POINTS
KPDS INTEGER (200) PDS PARAMETERS
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
KGDS INTEGER (200) GDS PARAMETERS
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
KENS INTEGER (200) ENSEMBLE PDS PARMS
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
IBS INTEGER BINARY SCALE FACTOR (0 TO IGNORE)
NBITS INTEGER NUMBER OF BITS IN WHICH TO PACK (0 TO IGNORE)
LB LOGICAL*1 (KF) BITMAP IF PRESENT
F REAL (KF) DATA
Output arguments:
IRET INTEGER RETURN CODE
0 ALL OK
OTHER W3FI72 GRIB PACKER RETURN CODE
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
PUTGBENS
The PUTGBENS routine packs and writes a grib message.
USAGE: CALL PUTGBENS(LUGB,KF,KPDS,KGDS,KENS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
KF INTEGER NUMBER OF DATA POINTS
KPDS INTEGER (200) PDS PARAMETERS
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
KGDS INTEGER (200) GDS PARAMETERS
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
KENS INTEGER (200) ENSEMBLE PDS PARMS
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
LB LOGICAL*1 (KF) BITMAP IF PRESENT
F REAL (KF) DATA
Output arguments:
IRET INTEGER RETURN CODE
0 ALL OK
OTHER W3FI72 GRIB PACKER RETURN CODE
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logicaL unit from more than one processor.
PUTGBEX
The PUTGBEX routine packs and writes a grib message.
USAGE: CALL PUTGBE(LUGB,KF,KPDS,KGDS,KENS,
KPROB,XPROB,KCLUST,KMEMBR,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
KF INTEGER NUMBER OF DATA POINTS
KPDS INTEGER (200) PDS PARAMETERS
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
KGDS INTEGER (200) GDS PARAMETERS
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
KENS INTEGER (200) ENSEMBLE PDS PARMS
(1) - APPLICATION IDENTIFIER
(2) - ENSEMBLE TYPE
(3) - ENSEMBLE IDENTIFIER
(4) - PRODUCT IDENTIFIER
(5) - SMOOTHING FLAG
KPROB INTEGER (2) PROBABILITY ENSEMBLE PARMS
XPROB REAL (2) PROBABILITY ENSEMBLE PARMS
KCLUST INTEGER (16) CLUSTER ENSEMBLE PARMS
KMEMBR INTEGER (8) CLUSTER ENSEMBLE PARMS
LB LOGICAL*1 (KF) BITMAP IF PRESENT
F REAL (KF) DATA
Output arguments:
IRET INTEGER RETURN CODE
0 ALL OK
OTHER W3FI72 GRIB PACKER RETURN CODE
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
PUTGBN
The PUTGBN routine packs and writes a grib message.
USAGE: CALL PUTGBN(LUGB,KF,KPDS,KGDS,NBITS,LB,F,IRET)
Input arguments:
LUGB INTEGER UNIT OF THE UNBLOCKED GRIB DATA FILE
KF INTEGER NUMBER OF DATA POINTS
KPDS INTEGER (200) PDS PARAMETERS
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
KGDS INTEGER (200) GDS PARAMETERS
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
IBS INTEGER BINARY SCALE FACTOR (0 TO IGNORE)
NBITS INTEGER NUMBER OF BITS IN WHICH TO PACK (0 TO IGNORE)
LB LOGICAL*1 (KF) BITMAP IF PRESENT
F REAL (KF) DATA
Output arguments:
IRET INTEGER RETURN CODE
0 ALL OK
OTHER W3FI72 GRIB PACKER RETURN CODE
REMARKS:
Subprogram can be called from a multiprocessing environment.
DO NOT engage the same logical unit from more than one processor.
Q9IE32
The Q9IE32 routine converts IBM370 floating point numbers to ieee
floating point numbers.
USAGE: CALL Q9IE32(A, B, N, ISTAT)
Input argument list:
A - REAL*4 ARRAY OF IBM370 32 BIT FLOATING POINT NUMBERS
N - NUMBER OF POINTS TO CONVERT
Output argument list:
B - REAL*4 ARRAY OF IEEE 32 BIT FLOATING POINT NUMBERS
ISTAT - NUMBER OF POINT GREATER THAN 10E+38, NUMBERS ARE SET TO
IEEE INFINITY, ONE IS ADDED TO ISTAT. NUMBERS LESS THAN
E-38 ARE SET TO ZERO , ONE IS NOT ADDED TO ISTAT.
REMARKS:
See ieee task 754 standard floating point arithmetic
for more information about ieee floating point.
R63W72
The R63W72 routine determines the integer pds and gds parameters
for the grib1 packing routine w3fi72 given the parameters
returned from the grib1 unpacking routine w3fi63.
USAGE: CALL R63W72(KPDS,KGDS,IPDS,IGDS)
Input argument list:
KPDS - INTEGER (200) PDS PARAMETERS FROM W3FI63
KGDS - INTEGER (200) GDS PARAMETERS FROM W3FI63
Output argument list:
IPDS - INTEGER (200) PDS PARAMETERS FOR W3FI72
IGDS - INTEGER (200) GDS PARAMETERS FOR W3FI72
REMARKS:
KGDS and IGDS extend beyond their dimensions here
if pl parameters are present.
SBYTE
The SBYTE routine packs the byte into a target word or array.
bits surrounding the byte in the target area are unchanged.
USAGE: CALL SBYTE (IPACKD,IUNPKD,NOFF,NBITS)
Input arguments:
IPACKD THE WORD OR ARRAY WHICH WILL CONTAIN THE
PACKED BYTE. BYTE MAY CROSS WORD BOUNDARIES.
IUNPKD THE WORD CONTAINING THE RIGHT-JUSTIFIED BYTE
TO BE PACKED.
NOFF THE NUMBER OF BITS TO SKIP, LEFT TO RIGHT,
IN 'IPACKD' IN ORDER TO LOCATE WHERE THE
BYTE IS TO BE PACKED.
NBITS NUMBER OF BITS IN THE BYTE TO BE PACKED.
MAXIMUM OF 64 BITS ON 64 BIT MACHINE, 32
BITS ON 32 BIT MACHINE.
Output arguments:
IPACKD WORD OR CONSECUTIVE WORDS CONTAINING THE
REQUESTED BYTE.
SBYTES
The SBYTES routine packs the byte into a target word or array.
bits surrounding the byte in the target area are unchanged.
USAGE: CALL SBYTES (IPACKD,IUNPKD,NOFF,NBITS,ISKIP,ITER)
Input arguments:
IPACKD THE WORD OR ARRAY WHICH WILL CONTAIN THE
PACKED BYTE. BYTE MAY CROSS WORD BOUNDARIES.
IUNPKD THE WORD CONTAINING THE RIGHT-JUSTIFIED BYTE
TO BE PACKED.
NOFF THE NUMBER OF BITS TO SKIP, LEFT TO RIGHT,
IN 'IPACKD' IN ORDER TO LOCATE WHERE THE
BYTE IS TO BE PACKED.
NBITS NUMBER OF BITS IN THE BYTE TO BE PACKED.
MAXIMUM OF 64 BITS ON 64 BIT MACHINE, 32
BITS ON 32 BIT MACHINE.
ISKIP THE NUMBER OF BITS TO SKIP BETWEEN EACH
BYTE IN 'IUNPKD' IN ORDER TO LOCATE THE
NEXT BYTE TO BE PACKED.
ITER THE NUMBER OF BYTES TO BE PACKED.
Output arguments:
IPACKD WORD OR CONSECUTIVE WORDS CONTAINING THE
REQUESTED BYTE.
SKGB
The SKGB routine searchs for next grib message.
USAGE: CALL SKGB(LUGB,ISEEK,MSEEK,LSKIP,LGRIB)
Input arguments:
LUGB INTEGER LOGICAL UNIT OF INPUT GRIB FILE
ISEEK INTEGER NUMBER OF BYTES TO SKIP BEFORE SEARCH
MSEEK INTEGER MAXIMUM NUMBER OF BYTES TO SEARCH
Output arguments:
LSKIP INTEGER NUMBER OF BYTES TO SKIP BEFORE MESSAGE
LGRIB INTEGER NUMBER OF BYTES IN MESSAGE
(0 IF NOT FOUND)
SUMMARY
The SUMMARY routine makes system call to return various useful parameters.
USAGE: SUMMARY()
Input arguments:
NONE
Output arguments:
A LIST OF SYSTEM RESOURCE STATISTICS IS PRINTED TO STDOUT.
W3AI00
The W3AI00 routine converts ieee floating point numbers to 16 bit
packed office note 84 format.
USAGE: CALL W3AI00 (REAL8, PACK, LABEL)
Input arguments:
REAL8 ARRAY OF CRAY FLOATING POINT NUMBERS
LABEL SIX 8-BYTE INTEGER WORDS.
MUST HAVE FIRST 8 OF 12 32 BIT
WORD OFFICE NOTE 84 LABEL. WORD 6 MUST HAVE
IN BITS 31-00 THE NUMBER OF REAL WORDS IN ARRAY
REAL8 IF J IS GREATER THAN 32743. J IN BITS
15-0 OF THE 4TH ID WORD IS SET ZERO.
Output arguments:
PACK PACKED OUTPUT ARRAY OF INTEGER WORDS OF
SIZE 6 + (J+3)/4 , J = NO. POINTS IN LABEL
(FROM WORD 4 BITS 15-00).
LABEL WILL BE COPIED TO PACK WORDS 1-4. PACK
WILL CONTAIN THE FOLLOWING IN WORDS 5-6
WORD 5 BITS 63-48 NUMBER OF BYTES IN WHOLE
RECORD. WILL NOT BE
CORRECT IF J > 32743.
WORD 5 BITS 47-32 EXCLUSIVE-OR CHECKSUM BY 16
BIT WORDS OF WHOLE ARRAY PACK
EXCLUDING CHECKSUM ITSELF.
WORD 5 BITS 31-00 CENTER VALUE A = MEAN OF
MAX AND MIN VALUES.
CONVERTED TO IBM 32
FLOATING POINT NUMBER.
WORD 6 BITS 63-48 ZERO.
WORD 6 BITS 47-32 16 BIT SHIFT VALUE N. THE
LEAST INTEGER SUCH THAT
ABS(X-A)/2**N LT 1 FOR
ALL X IN REAL8. LIMITED
TO +-127.
WORD 6 BITS 31-00 NUMBER OF WORDS IN REAL8
IF > 32743, RIGHT ADJUSTED
IF <= 32743 SET ZERO.
REMARKS:
Pack and label may be equivalenced. N, the number of
points in a grid is now in 32 bit id word 12.
W3AI01
The W3AI01 routine unpacks a record in office note 84 format and
converts the packed data to ieee real floating point numbers.
USAGE: CALL W3AI01 (PACK, REAL8, LABEL)
Input arguments:
PACK INTEGER ARRAY WITH DATA IN OFFICE NOTE 84
FORMAT TO BE UNPACKED.
Output arguments:
REAL8 REAL ARRAY OF N WORDS. WHERE N IS GIVEN IN
WORD 6 OF PACK. WORD 6 OF PACK MUST
CONTAIN CENTER AND SCALING VALUES.
LABEL SIX WORD INTEGER LABEL COPIED FROM PACK, 12
OFFICE NOTE 84 32 BIT ID'S THAT ARE STORED INTO
SIX 64-BIT WORDS.
REMARKS:
Label and pack may be equivalenced.
W3AI08
The W3AI08 routine unpacks a grib field to the exact grid specified
in the message, isolate the bit map and make the values
of the product description section (PDS) and the grid
description section (GDS) available in return arrays.
USAGE: CALL W3AI08(MSGA,KPDS,KGDS,KBMS,DATA,KPTR,KRET)
Input argument list:
MSGA - GRIB FIELD - "GRIB" THRU "7777" CHAR*1
Output argument list:
DATA - ARRAY CONTAINING DATA ELEMENTS
KPDS - ARRAY CONTAINING PDS ELEMENTS. (VERSION 0)
(1) - ID OF CENTER
(2) - MODEL IDENTIFICATION
(3) - GRID IDENTIFICATION
(4) - GDS/BMS FLAG
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING CENTURY
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - GRIB SPECIFICATION EDITION NUMBER
KPDS - ARRAY CONTAINING PDS ELEMENTS. (VERSION 1)
(1) - ID OF CENTER
(2) - MODEL IDENTIFICATION
(3) - GRID IDENTIFICATION
(4) - GDS/BMS FLAG
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING CENTURY
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - TOTAL LENGTH OF GRIB MESSAGE (INCLUDING SECTION 0)
KGDS - ARRAY CONTAINING GDS ELEMENTS.
(1) - DATA REPRESENTATION TYPE
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUNDINAL DIRECTION OF INCREMENT
(11) - SCANNING MODE FLAG
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESERVED
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LONGIT DIR INCREMENT
(10) - LATIT DIR INCREMENT
(11) - SCANNING MODE FLAG
(12) - LATITUDE INTERSECTION
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESERVED
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
KBMS - BITMAP DESCRIBING LOCATION OF OUTPUT ELEMENTS.
KPTR - ARRAY CONTAINING STORAGE FOR FOLLOWING PARAMETERS
(1) - UNUSED
(2) - UNUSED
(3) - LENGTH OF PDS
(4) - LENGTH OF GDS
(5) - LENGTH OF BMS
(6) - LENGTH OF BDS
(7) - VALUE OF CURRENT BYTE
(8) - UNUSED
(9) - GRIB START BYTE NR
(10) - GRIB/GRID ELEMENT COUNT
KRET - FLAG INDICATING QUALITY OF COMPLETION
REMARKS:
Values for return flag (kret)
KRET = 0 - NORMAL RETURN, NO ERRORS
= 1 - 'GRIB' NOT FOUND IN FIRST 100 CHARS
= 2 - '7777' NOT IN CORRECT LOCATION
= 3 - UNPACKED FIELD IS LARGER THAN 32768
= 4 - GDS/ GRID NOT ONE OF CURRENTLY ACCEPTED VALUES
= 5 - GRID NOT CURRENTLY AVAIL FOR CENTER INDICATED
= 8 - TEMP GDS INDICATED, BUT GDS FLAG IS OFF
= 9 - GDS INDICATES SIZE MISMATCH WITH STD GRID
=10 - INCORRECT CENTER INDICATOR
W3AI15
The W3AI15 routine converts integers to ACSII.
USAGE: CALL W3AI15 (NBUFA,NBUFB,N1,N2,MINUS)
Input argument:
NBUFA - INPUT ARRAY (INTEGER*4)
N1 - NUMBER OF INTEGERS IN NBUFA TO BE CONVERTED
N2 - DESIRED CHARACTER WIDTH OF ASCII NUMBER FIELD
MINUS - CHARACTER TO BE INSERTED IN THE HIGH ORDER POSITION
OF A NEGATIVE NUMBER FIELD
Output argument:
NBUFB - OUTPUT ARRAY (INTEGER*4)
W3AI18
The W3AI18 routine builds a line of information composed of
user specified character strings.
USAGE: CALL W3AI18(ITEM, I1, I2, LINE, L, K, N)
Input argument list:
ITEM - CHARACTER STRING TO BE ADDED TO LINE ARRAY
I1 - NUMBER OF CHARACTER STRINGS TO BE ADDED TO LINE ARRAY
I2 - NUMBER OF CHARACTERS PER STRING TO ADD TO LINE
L - CHARACTER LENGTH OF LINE TO BE BUILT (2.LE.L.LE.256)
K - NUMBER OF BLKANK CHARACTERS TO PRECEDE A CHARACTER
STRING (0.LE.K.LE.256)
N - POINTER SET EQUAL TO 0 WHEN BEGINNING A LINE
Output argument list:
LINE - ARRAY IN WHICH CHARACTER STRING ARE PLACED WHILE
BUILDING ALINE; MUST BE OF TYPE INTEGER
N - CHARACTER COUNT, ERROR INDICATOR
Exit states:
N = -1 CHARACTER STRING WILL NOT FIT IN THE LINE ARRAY;
OTHERWISE, EACH TIME A CHACTER STRING IS ADDED
TO THE LINE, N IS INCREMENTED BY (I2 + K)
REMARKS:
Each character string included in the item array must
start on a full word boundary and be equal in length.
Each successive string must start on the nest fullword
boundary following the end of the previous string.
On a Cray this is 8.
The dimensions of the item array should be at least the
value of (i1*(i2+j))/4, where the integer j is in the
range 0.le.j.le.3 and the sum (i2+j) is 4 or a multiple
of 4. on a Cray this is 8 or a multiple of 8. On a Cray
(i1*(i2+j))/8, range is 0.le.j.le.7
The maximum dimension of line is 64 word or 256 bytes.
on a Cray it is 32 words or 256 bytes.
The user should set n = 0 each time a line is stated to
tell w3ai18 to fill the line array with blank characters.
Each time a character string is added to the line, the
variable (n) is incremented by (i2 + k). if a character
string will not fit in the line array, w3ai18 sets n = -1
and returns to the user. The user will not be able to
program a recovery procedure for the line being full if
more than one character string is in the item array.
W3AI19
The W3AI19 routine fills a record block with logical records or
lines of information.
USAGE: CALL W3AI19 (LINE, L, NBLK, N, NEXT)
Input argument list:
LINE - ARRAY ADDRESS OF LOGICAL RECORD TO BE BLOCKED
L - NUMBER OF CHARACTERS IN LINE TO BE BLOCKED
N - MAXIMUM CHARACTER SIZE OF NBLK
NEXT - FLAG, INITIALIZED TO 0
Output argument list:
NBLK - BLOCK FILLED WITH LOGICAL RECORDS
NEXT - CHARACTER COUNT, ERROR INDICATOR
EXIT STATES:
NEXT = -1 LINE WILL NOT FIT INTO REMAINDER OF BLOCK;
OTHERWISE, NEXT IS SET TO (NEXT + L)
NEXT = -2 N IS ZERO OR LESS
NEXT = -3 L IS ZERO OR LESS
W3AI24
The W3AI24 function tests for match of two strings.
USAGE: II = W3AI24(STRING1,STRING2,LENGTH)
Input argument list:
STRING1 CHARACTER ARRAY TO MATCH WITH STRING2
STRING2 CHARACTER ARRAY TO MATCH WITH STRING1
Output argument list:
W3AI24 LOGICAL .TRUE. IF S1 AND S2 MATCH ON ALL CHAR.,
LOGICAL .FALSE. IF NOT MATCH ON ANY CHAR.
W3AI38
The W3AI38 routine converts ebcdic to ascii by character.
USAGE: CALL W3AI38 (IE, NC)
Input argument list:
IE - CHARACTER*1 ARRAY OF EBCDIC DATA
NC - INTEGER, CONTAINS CHARACTER COUNT TO CONVERT....
Output argument list:
IE - CHARACTER*1 ARRAY OF ASCII DATA
REMARKS:
Software version of ibm370 translate instruction, by
changing the two tables we could do a 64, 96, 128 ASCII
character set, change lower case to upper, etc.
The AEA routine converts data at a rate of 1.5 million
characters per sec.
Cray utility usccti convert ASCII to IBM EBCDIC
Cray utility uscctc convert IBM EBCDIC to ASCII
They convert data at a rate of 2.1 million characters per sec.
CRAY UTILITY TR WILL ALSO DO A ASCII, EBCDIC CONVERSION.
TR CONVERT DATA AT A RATE OF 5.4 MILLION CHARACTERS PER SEC.
TR IS IN LIBRARY /USR/LIB/LIBCOS.A ADD TO SEGLDR CARD.
W3AI39
The W3AI39 routine translates ASCII field to EBCDIC.
USAGE: CALL W3AI39 (NFLD,N)
Input argument list:
NFLD - CHARACTER*1 ARRAY OF ASCII DATA
N - INTEGER, CONTAINS CHARACTER COUNT TO CONVERT....
Output argument list:
NFLD - CHARACTER*1 ARRAY OF EBCDIC DATA
REMARKS:
Software version of ibm370 translate instruction, bY
changing the table we could do a 64, 96, ASCII
character set, change lower case to upper, etc.
TR converts data at a rate of 5.4 million characters per sec.
TR is in library /usr/lib/libcos.a add to segldr card.
W3AI40
The W3AI40 routine packs constant size binary strings into an array.
USAGE: CALL W3AI40 (KFLD,KOUT,KLEN,KNUM,KOFF)
Input argument list:
KFLD INTEGER INPUT ARRAY OF RIGHT ADJUSTED STRINGS
KLEN INTEGER NUMBER OF BITS PER STRING (0 < KLEN < 33)
KNUM INTEGER NUMBER OF STRINGS IN 'KFLD' TO PACK
KOFF INTEGER NUMBER SPECIFYING THE BIT OFFSET OF THE
FIRST OUTPUT STRING. THE OFFSET VALUE IS RESET TO
INCLUDE THE LOW ORDER BIT OF THE LAST PACKED STRING
Output argument list:
KOUT INTEGER OUTPUT ARRAY TO HOLD PACKED STRING(S)
Exit states:
ERROR KOFF < 0 IF KLEN HAS AN ILLEGAL VALUE OR KNUM < 1
THEN KOUT HAS NO STRINGS STORED.
REMARKS:
This subroutine should be written in assembler language.
The FORTRAN version runs two or three times slower than the
asembler version. The FORTRAN version can be converted to
run on other computers with a few changes. The bit manipulation
functions are the same in IBM370 vs FORTRAN 4.1, MICROSOFT
FORTRAN 4.10, VAX FORTRAN. Most modern FORTRAN compiler have
AND, OR, SHIFT functions. If you are running on a PC, VAX and
your input was made on a IBM370, APOLLO SUN, H.P.. etc.
You may have to add more code to reverse the order O bytes in
an integer word. NCAR sbytes can be used instead of this subroutine.
Please use NCAR sbytes subroutine instead of this subroutine.
W3AI41
The W3AI41 routine unpack consecutive binary strings of the same size
from one user supplied array and store them in the same order
right aligned in another array. w3ai41 is the reverse of w3ai40.
USAGE: CALL W3AI41 (KFLD, KOUT, KLEN, KNUM, KOFF)
Input argument list:
KFLD INTEGER ARRAY CONTINING BINARY STRING(S)
KLEN INTEGER NUMBER OF BITS PER STRING (0 < KLEN < 65)
KNUM INTEGER NUMBER OF STRINGS TO UNPACK. THIS VALUE MUST
NOT EXCEED THE DIMENSION OF 'KOUT'.
KOFF INTEGER NUMBER SPECIFYING THE BIT OFFSET OF THE
FIRST STRING 'KFLD'. THE OFFSET VALUE IS RESET TO
INCLUDE THE LOW ORDER BIT OF THE LAST STRING UNPACKED
('KOFF' > 0 )
Output argument list:
KOUT INTEGER*4 ARRAY HOLDING UNPACKED STRING(S)
Exit states:
ERROR 'KOFF' < 0 IF 'KLEN' HAS AN ILLEGAL VALUE OR 'KNUM' < 1
THEN 'KOUT' HAS NO STRINGS STORED.
REMARKS:
This subroutine should be written in assembler language.
The FORTRAN version runs two or three times slower than the
asembler version. The FORTRAN version can be converted to
run on other computers with a few changes. The bit manipulation
functions are the same in IBM370 vs FORTRAN 4.1, MICROSOFT
FORTRAN 4.10, VAX FORTRAN. Most modern FORTRAN compiler have
AND, OR, SHIFT functions. If you are running on a PC, VAX and
your input was made on a IBM370, APOLLO SUN, H.P.. etc.
You may have to add more code to reverse the order O bytes in
an integer word. NCAR sbytes can be used instead of this subroutine.
Please use NCAR sbytes subroutine instead of this subroutine.
W3AQ15
The W3AQ15 routine converts 32 or 64 bit binary time (GMT) into
a 16 bit string and store these 4 packed decimal
numbers into bytes 39 and 40 of the output array.
USAGE: CALL W3AQ15(ITIME, QDESCR)
Input argument list:
ITIME INTEGER WORD CONTAINING TIME IN BINARY
Output argument list:
QDESCR ARRAY CONTAINING TRANSMISSION QUEUE DESCRIPTOR
NOTE- TIME WILL BE PLACED IN 39 AND 40TH
BYTE OF THIS ARRAY AS 4 (4 BIT) BCD.
REMARKS:
The user can obtain the current time in GMT by invocking
The w3 library routine w3fq02 which fills an eight word array
with the current date and time. The 5th word from this array
contains the time which can be passed to w3aq15 as the input
parameter-itime.
W3AS00
The W3AS00 routine gets parm field from command-line.
USAGE: CALL W3AS00(NCH_PARM, CPARM, IRET_PARM)
Output argument list: (INCLUDING WORK ARRAYS)
NCH_PARM NO. OF CHARACTERS IN THE PARM FIELD
CPARM C*(*) CPARM -- THE DESTINATION FOR THE PARMFIELD
OBTAINED FROM THE COMMAND LINE;
USER SHOULD DEFINE THE CHARACTER STRING FOR
A SIZE .LE. 101-BYTES, WHICH WOULD BE
BIG ENOUGH FOR THE 100-CHAR IBM LIMIT PLUS
ONE EXTRA BYTE FOR MY NULL-TERMINATOR.
IRET_PARM RETURN CODE
0: NORMAL RETURN
-1: ABNORMAL EXIT. THE USER HAS FAILED
TO DEFINE THE CPARM DESTINATION
AS A CHARACTER STRING.
+1: WARNING:
THE GIVEN ARG IN THE COMMAND LINE WAS
TOO LONG TO FIT IN THE DESTINATION: CPARM,
SO I HAVE TRUNCATED IT.
+2: WARNING: NO ARGS AT ALL ON COMMAND LINE,
SO I COULD NOT FETCH THE PARM FIELD.
+3: WARNING: NO "PARM="-ARGUMENT EXISTS
AMONG THE ARGS ON THE COMMAND LINE,
SO I COULD NOT FETCH THE PARM FIELD.
Output files:
FT06F001 SOME CHECKOUT PRINTOUT
REMARKS:
To emulate the ibm parm field, the user should key_in on the
command line:
PARM='IN BETWEEN THE SINGLE_QUOTES IS THE PARM FIELD'
What is returned from w3as00() from the parm= arg is
the parm field: which starts with the location beyond the
equal_sign of the keyword "parm=", and includes everything
which was within the bounds of the single-quote signs.
But the quote signs themselves will disappear; and a null-
terminator will be added.
The starting "parm=" is a key word for the parms, and should
not be used to start any other argument.
W3CTZDAT
The W3CTZDAT routine changes the time zone of a date and time.
USAGE: CALL W3CTZDAT(NTZ,IDAT,JDAT)
Input variables:
NTZ INTEGER NEW TIME ZONE DIFFERENTIAL FROM UTC
IN SIGNED HH OR HHMM FORMAT
(IF NTZ IS INVALID, NO CHANGE IS MADE.)
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
Output variables:
JDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
W3DIFDAT
The W3DIFDAT routine returns a time interval between two dates.
USAGE: CALL W3DIFDAT(JDAT,IDAT,IT,RINC)
Input variables:
JDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
IT INTEGER RELATIVE TIME INTERVAL FORMAT TYPE
(-1 FOR FIRST REDUCED TYPE (HOURS ALWAYS POSITIVE),
0 FOR SECOND REDUCED TYPE (HOURS CAN BE NEGATIVE),
1 FOR DAYS ONLY, 2 FOR HOURS ONLY, 3 FOR MINUTES ONLY,
4 FOR SECONDS ONLY, 5 FOR MILLISECONDS ONLY)
Output variables:
RINC REAL (5) NCEP RELATIVE TIME INTERVAL
(DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS)
(TIME INTERVAL IS POSITIVE IF JDAT IS LATER THAN IDAT.)
W3DOXDAT
The W3DOXDAT routine returns week day, year day, and julian day.
USAGE: CALL W3DOXDAT(IDAT,JDOW,JDOY,JDAY)
Input variables:
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
Output variables:
JDOW INTEGER DAY OF WEEK (1-7, WHERE 1 IS SUNDAY)
JDOY INTEGER DAY OF YEAR (1-366, WHERE 1 IS JANUARY 1)
JDAY INTEGER JULIAN DAY (DAY NUMBER FROM JAN. 1,4713 B.C.)
W3FA01
The W3FA01 routine calculates the dewpoint temperature and the
pressure and temperature of the lifting condensation level.
USAGE: CALL W3FA01(P,T,RH,TD,PLCL,TLCL)
Input variables:
P PARCEL PRESSURE IN MILLIBARS
T PARCEL TEMPERATURE IN DEGREES CELSIUS
RH PARCEL RELATIVE HUMIDITY IN PERCENT
Output variables:
TD DEWPOINT TEMPERATURE IN DEGREES CELSIUS
PLCL PRESSURE OF LCL IN MILLIBARS
TLCL TEMPERATURE AT LCL IN DEGREES CELSIUS
W3FA03
The W3FA03 routine computes the standard height, temperature, and potential
temperature given the pressure in millibars ( > 8.68 MB ).
USAGE: CALL W3FA03(PRESS,HEIGHT,TEMP,THETA)
Input argument list:
PRESS PRESSURE IN MILLIBARS
Output argument list:
HEIGHT HEIGHT IN METERS
TEMP TEMPERATURE IN DEGREES KELVIN
THETA POTENTIAL TEMPERATURE IN DEGREES KELVIN
REMARKS:
Not valid for pressures less than 8.68 millibars, declare
all parameters as type real.
W3FA03V
The W3FA03V routine computes the standard height, temperature, and potential
temperature given the pressure in millibars ( > 8.68 MB ).
USAGE: CALL W3FA03V(PRESS,HEIGHT,TEMP,THETA,N)
Input argument list:
PRESS PRESSURE ARRAY IN MILLIBARS
Output argument list:
HEIGHT HEIGHT ARRAY IN METERS
TEMP TEMPERATURE ARRAY IN DEGREES KELVIN
THETA POTENTIAL TEMPERATURE ARRAY IN DEGREES KELVIN
N NUMBER OF POINTS IN ARRAY PRESS
REMARKS:
Not valid for pressures less than 8.68 millibars, declare
all parameters as type real.
WARNING:
Height, temp, theta are now all arrays, you must
have arrays of size n or you will wipe out memory.
W3FA04
The W3FA04 routine computes the standard pressure, temperature, and
potential temperature given the height in meters ( < 32 km ).
USAGE: CALL W3FA04 (HEIGHT, PRESS, TEMP, THETA)
Input variables:
HEIGHT HEIGHT IN METERS
Output variables:
PRESS STANDARD PRESSURE IN MILLIBARS
TEMP TEMPERATURE IN DEGREES KELVIN
THETA POTENTIAL TEMPERATURE IN DEGREES KELVIN
REMARKS:
Not valid for heights greater than 32 km.
declare all parameters as type real*4
W3FA06
The W3FA06 routine calculates the lifted index of the parcel.
USAGE: CALL W3FA06(P,T,RH,T5,TLI)
INPUT VARIABLES:
P PARCEL PRESSURE IN MILLIBARS
T PARCEL TEMPERATAURE IN DEGREES CELSIUS
RH PARCEL RELATIVE HUMIDITY IN PERCENT
T5 TEMPERATURE AT THE 500MB LEVEL IN DEG. CELSIUS
OUTPUT VARIABLES:
TLI LIFTED INDEX IN DEGREES CELSIUS
TLI = 9.9999 ITERATION DIVERGES;
RETURN TO USER PROGRAM
W3FA09
The W3FA09 function computes saturation vapor pressure in kilopascals.
USAGE: VP = W3FA09 (TK)
Input argument list:
TK REAL*8 TEMPERATURE IN KELVINS. IF TK < 223.16, THE VALUE
223.16 WILL BE USED. IF TK > 323.16, THE VALUE 323.16
WILL BE USED AS THE ARGUMENT. 'TK' ITSELF IS UNCHANGED.
Output argument list:
VP SATURATION VAPOR PRESSURE IN KILOPASCALS.
0.0063558 < VP < 12.3395
REMARKS:
W3FA09 may be declared real*8 so that a real*8 value is
returned, but no increase in accuracy is implied.
W3FA11
The W3FA11 routine computes double precision coefficients used in
generating legendre polynomials in subroutine w3fa12.
USAGE: CALL W3FA11 (EPS,JCAP)
Input variables:
JCAP ZONAL WAVE NUMBER THIRTY, ETC.
Output variables:
EPS REAL COEFFICIENTS USED IN
COMPUTING LEGENDRE POLYNOMIALS.
DIMENSION OF EPS IS (JCAP+2)*(JCAP+1)
W3FA12
The W3FA12 routine computes legendre polynomials at a
given latitude.
USAGE: CALL W3FA12 (PLN,COLRAD,JCAP,EPS)
Input variables:
COLRAD COLATITUDE IN RADIANS OF DESIRED POINT.
JCAP FOR RHOMBOIADAL TRUNCATION OF ZONAL WAVE
EPS COEFF. USED IN RECURSION EQUATION.
DIMENSION OF EPS IS (JCAP+2)*(JCAP+1)
Output variables:
PLN REAL LOCATIONS CONTAIN LEGENDRE
POLNOMIALS , SIZE IS (JCAP+2)*(JCAP+1)
W3FA13
The W3FA13 routine computes trig functions used in 2.5 by 2.5 lat,lon
mapping routines.
USAGE: CALL W3FA13(TRIGS,RCOS)
Input variables:
NONE
Output variables:
TRIGS 216 TRIG VALUES, USED BY SUBROUTINE W3FA12.
RCOS 37 COLATITUDES USED BY SUBROUTINES W3FT09,W3FT11
W3FB00
The W3FB00 routine converts the coordinates of a location on earth
from the natural coordinate system of latitude/longitude
to the grid (i,j) coordinate system overlaid on the polar
stereographic map projection true at 60 N.
USAGE: CALL W3FB00 (ALAT, ALONG, XMESHL, XI, XJ)
Input variables:
ALAT LATITUDE IN DEG. (-20.0(S. HEMIS) ) ALAT ) 90.0)
ALONG WEST LONGITUDE IN DEGREES
XMESHL MESH LENGTH OF GRID IN KILOMETERS AT 60N
Output variables:
XI I OF THE POINT RELATIVE TO NORTH POLE
XJ J OF THE POINT RELATIVE TO NORTH POLE
REMARKS:
The grid used in this subroutine has its origin (i=0,j=0)
at the north pole, so if the user's grid has its origin at a
point other than the north pole, a translation is required to
get i and j. The subroutine grid is oriented so that longitude
80W is parallel to the gridlines of i=constant. the radius of
the earth is taken to be 6371.2 km.
All parameters in the call statement must be real.
This code will not vectorize on a cray. You will have put
it line to vectorize it.
W3FB01
The W3FB01 routine converts the coordinates of a location from the
grid(i,j) coordinate system overlaid on the polar
stereographic map projection true at 60N to the natural
coordinate system of latitude/longitude on the earth.
USAGE: CALL W3FB01 (XI, XJ, XMESHL, ALAT, ALONG)
Input variables:
XI I OF THE POINT RELATIVE TO NORTH POLE
XJ J OF THE POINT RELATIVE TO NORTH POLE
XMESHL MESH LENGTH OF GRID IN KILOMETERS AT 60N
Output variables:
ALAT LATITUDE IN DEG. (-20.0(S. HEMIS) < ALAT < 90.0)
ALONG WEST LONGITUDE IN DEGREES
REMARKS:
The grid used in this subroutine has its origin (i=0,j=0)
at the north pole, so if the user's grid has its origin at a
point other than the north pole, a translation is required to
get i and j for input into w3fb01. The subroutine grid is
oriented so that longitude 80w is parallel to gridlines of
i=constant. The earth's radius is taken to be 6371.2 km.
All parameters in the call statement must be reaL.
W3FB02
The W3FB02 routine computes i and j coordinates for a latitude/longitude
point on the southern hemisphere polar stereographic map
projection.
USAGE: CALL W3FB02 (ALAT, ALONG, XMESHL, XI, XJ)
Input variables:
ALAT REAL*4 LATITUDE (S.H. LATITUDES ARE NEGATIVE)
ALONG REAL*4 WEST LONGITUDE
XMESHL REAL*4 GRID INTERVAL IN KM.
Output variables:
XI REAL*4 I COORDINATE
XJ REAL*4 J COORDINATE
W3FB03
The W3FB03 routine converts i,j grid coordinates to the corresponding
latitude/longitude on a southern hemisphere polar
stereographic map projection.
USAGE: CALL W3FBO3 (XI, XJ, XMESHL, TLAT, TLONG)
Input variables:
XI REAL I COORDINATE
XJ REAL J COORDINATE
XMESHL REAL GRID INTERVAL IN KM.
Output variables:
TLAT REAL S.H. LATITUDE
TLONG REAL LONGITUDE
W3FB04
The W3FB04 routine converts the coordinates of a location on
earth from the natural coordinate system of
latitude/longitude to the grid (i,j) coordinate
system overlaid on a polar stereographic map
projection true at 60 degrees n or s latitude.
USAGE: CALL W3FB04 (ALAT, ALONG, XMESHL, ORIENT, XI, XJ)
Input variables:
ALAT LATITUDE IN DEGREES (<0 IF SH)
ALONG WEST LONGITUDE IN DEGREES
XMESHL MESH LENGTH OF GRID IN KM AT 60 DEG LAT(<0 IF SH)
(190.5 LFM GRID, 381.0 NH PE GRID,-381.0 SH PE GRID)
ORIENT ORIENTATION WEST LONGITUDE OF THE GRID
(105.0 LFM GRID, 80.0 NH PE GRID, 260.0 SH PE GRID)
Output variables:
XI I OF THE POINT RELATIVE TO NORTH OR SOUTH POLE
XJ J OF THE POINT RELATIVE TO NORTH OR SOUTH POLE
REMARKS:
All parameters in the calling statement must be real.
The range of allowable latitudes is from a pole to 30
degrees into the opposite hemisphere. The grid used in
this subroutine has its origin (i=0,j=0) at the pole in
either hemisphere, so if the user's grid has its
origin at a point other than the pole, a translation is
needed to get i and j. The gridlines of i=constant are
parallel to a longitude designated by the user.
The earth's radius is taken to be 6371.2 km.
WARNING:
This code is not vectorized. You will have put
it line to vectorize it.
W3FB05
The W3FB05 routine converts the coordinates of a location from
the grid(i,j) coordinate system overlaid on the polar
stereographic map projection true at 60 degrees N or S
latitude to the natural coordinate system of
latitude/longitude on the earth.
USAGE: CALL W3FB05 (XI, XJ, XMESHL, ORIENT, ALAT, ALONG)
Input variables:
XI I OF THE POINT RELATIVE TO THE NORTH OR S. POLE
XJ J OF THE POINT RELATIVE TO THE NORTH OR S. POLE
XMESHL MESH LENGTH OF GRID IN KM AT 60 DEGREES(<0 IF SH)
(190.5 LFM GRID, 381.0 NH PE GRID,-381.0 SH PE GRID)
ORIENT ORIENTATION WEST LONGITUDE OF THE GRID
(105.0 LFM GRID, 80.0 NH PE GRID, 260.0 SH PE GRID)
Output variables:
ALAT LATITUDE IN DEGREES (<0 IF SH)
ALONG WEST LONGITUDE IN DEGREES
REMARKS:
All parameters in the calling statement must be
real. The range of allowable latitudes is from a pole to
30 degrees into the opposite hemisphere.
The grid used in this subroutine has its origin (i=0,j=0)
at the pole, so if the user's grid has its origin at a point
other than a pole, a translation is required to get i and j for
input into w3fb05. The subroutine grid is oriented so that
gridlines of i=constant are parallel to a west longitude
supplied by the user. The earth's radius is taken to be 6371.2 km.
WARNING:
This code will not vectorize, it is normaly used in a
double do loop with w3ft01, w3ft00, etc. to vectorize it,
put it in line, put w3ft01, w3ft00, etc. in line.
W3FB06
The W3FB06 routine converts the coordinates of a location on
earth given in the natural coordinate system of
latitude/longitude to a grid coordinate system
overlaid on a polar stereographic map projection
true at 60 degrees n or s latitude.
USAGE: CALL W3FB06 (ALAT,ALON,ALAT1,ALON1,DX,ALONV,XI,XJ)
Input argument list:
ALAT - LATITUDE IN DEGREES (NEGATIVE IN SOUTHERN HEMIS)
ALON - EAST LONGITUDE IN DEGREES, REAL*4
ALAT1 - LATITUDE OF LOWER LEFT POINT OF GRID (POINT (1,1))
ALON1 - LONGITUDE OF LOWER LEFT POINT OF GRID (POINT (1,1))
ALL REAL*4
DX - MESH LENGTH OF GRID IN METERS AT 60 DEG LAT
MUST BE SET NEGATIVE IF USING
SOUTHERN HEMISPHERE PROJECTION.
190500.0 LFM GRID,
381000.0 NH PE GRID, -381000.0 SH PE GRID, ETC.
ALONV - THE ORIENTATION OF THE GRID. I.E.,
THE EAST LONGITUDE VALUE OF THE VERTICAL MERIDIAN
WHICH IS PARALLEL TO THE Y-AXIS (OR COLUMNS OF
OF THE GRID)ALONG WHICH LATITUDE INCREASES AS
THE Y-COORDINATE INCREASES. REAL*4
FOR EXAMPLE:
255.0 FOR LFM GRID,
280.0 NH PE GRID, 100.0 SH PE GRID, ETC.
Output argument list:
XI - I COORDINATE OF THE POINT SPECIFIED BY ALAT, ALON
XJ - J COORDINATE OF THE POINT; BOTH REAL*4
REMARKS:
Formulae and notation loosely based on Hoke, Hayes,
and Renninger's "map projections and grid systems...",
March 1981 AFGWC/TN-79/003
W3FB07
The W3FB07 routine converts the coordinates of a location on earth
given in a grid coordinate system overlaid on a polar
stereographic map projection true at 60 degrees N or S
latitude to the natural coordinate system of
latitude/longitude.
USAGE: CALL W3FB07(XI,XJ,ALAT1,ALON1,DX,ALONV,ALAT,ALON)
Input argument list:
XI - I COORDINATE OF THE POINT REAL*4
XJ - J COORDINATE OF THE POINT REAL*4
ALAT1 - LATITUDE OF LOWER LEFT POINT OF GRID (POINT 1,1)
LATITUDE <0 FOR SOUTHERN HEMISPHERE; REAL*4
ALON1 - LONGITUDE OF LOWER LEFT POINT OF GRID (POINT 1,1)
EAST LONGITUDE USED THROUGHOUT; REAL*4
DX - MESH LENGTH OF GRID IN METERS AT 60 DEG LAT
MUST BE SET NEGATIVE IF USING
SOUTHERN HEMISPHERE PROJECTION; REAL*4
190500.0 LFM GRID,
381000.0 NH PE GRID, -381000.0 SH PE GRID, ETC.
ALONV - THE ORIENTATION OF THE GRID. I.E.,
THE EAST LONGITUDE VALUE OF THE VERTICAL MERIDIAN
WHICH IS PARALLEL TO THE Y-AXIS (OR COLUMNS OF
THE GRID) ALONG WHICH LATITUDE INCREASES AS
THE Y-COORDINATE INCREASES. REAL*4
FOR EXAMPLE:
255.0 FOR LFM GRID,
280.0 NH PE GRID, 100.0 SH PE GRID, ETC.
Output argument list:
ALAT - LATITUDE IN DEGREES (NEGATIVE IN SOUTHERN HEMI.)
ALON - EAST LONGITUDE IN DEGREES, REAL*4
REMARKS:
Formulae and notation loosely based on Hoke, Hayes,
and Renninger's " map projections and grid systems...",
March 1981 AFGWC/TN-79/003
W3FB08
The W3FB08 routine converts a location on earth given in
the coordinate system of latitude/longitudei
to an (i,j) coordinate system overlaid on a
mercator map projection.
USAGE: CALL W3FB08 (ALAT,ALON,ALAT1,ALON1,ALATIN,DX,XI,XJ)
Input argument list:
ALAT - LATITUDE IN DEGREES (NEGATIVE IN SOUTHERN HEMIS)
ALON - EAST LONGITUDE IN DEGREES, REAL*4
ALAT1 - LATITUDE OF LOWER LEFT CORNER OF GRID (POINT (1,1))
ALON1 - LONGITUDE OF LOWER LEFT CORNER OF GRID (POINT (1,1))
ALL REAL*4
ALATIN - THE LATITUDE AT WHICH THE MERCATOR CYLINDER
INTERSECTS THE EARTH
DX - MESH LENGTH OF GRID IN METERS AT ALATIN
Output argument list:
XI - I COORDINATE OF THE POINT SPECIFIED BY ALAT, ALON
XJ - J COORDINATE OF THE POINT; BOTH REAL*4
REMARKS:
Formulae and notation loosely based on Hoke, Hayes,
and Renninger's " map projections and grid systems...",
March 1981 AFGWC/TN-79/003
W3FB09
The W3FB09 routine converts a location on earth given in
an i,j coordinate system overlaid on a mercator
map projection to the coordinate system of
latitude/longitude.
USAGE: CALL W3FB09 (XI,XJ,ALAT1,ALON1,ALATIN,DX,ALAT,ALON)
Input argument list:
XI - I COORDINATE OF THE POINT
XJ - J COORDINATE OF THE POINT; BOTH REAL*4
ALAT1 - LATITUDE OF LOWER LEFT CORNER OF GRID (POINT (1,1))
ALON1 - LONGITUDE OF LOWER LEFT CORNER OF GRID (POINT (1,1))
ALL REAL*4
ALATIN - THE LATITUDE AT WHICH THE MERCATOR CYLINDER
INTERSECTS THE EARTH
DX - MESH LENGTH OF GRID IN METERS AT ALATIN
Output argument list:
ALAT - LATITUDE IN DEGREES (NEGATIVE IN SOUTHERN HEMIS)
ALON - EAST LONGITUDE IN DEGREES, REAL*4
- OF THE POINT SPECIFIED BY (I,J)
REMARKS:
Formulae and notation loosely based on Hoke, Hayes,
and Renninger's " map projections and grid systems...",
MARCH 1981 AFGWC/TN-79/003
W3FB10
The W3FB10 routine computes the bearing and great circle distance.
from point (1) to point (2) assuming a spherical earth. The
North and South poles are special cases. If latitude of point
(1) is within 1e-10 degrees of the North pole, bearing is the
negative longitude of point (2) by convention. If latitude of
point (1) is within 1e-10 degrees of the south pole, bearing is
the longitude of point (2) by convention. If point (2) is within
1e-6 radians of the antipode of point (1), the bearing will be
set to zero. If point (1) and point (2) are within 1e-10 radians
of each other, both bearing and distance will be set to zero.
USAGE: CALL W3FB10(DLAT1, DLON1, DLAT2, DLON2, BEARD, GCDKM)
Input argument list:
DLAT1 - REAL LATITUDE OF POINT (1) IN DEGREES NORTH.
DLON1 - REAL LONGITUDE OF POINT (1) IN DEGREES EAST.
DLAT2 - REAL LATITUDE OF POINT (2) IN DEGREES NORTH.
DLON2 - REAL LONGITUDE OF POINT (2) IN DEGREES EAST.
Output argument list:
BEARD - REAL BEARING OF POINT (2) FROM POINT (1) IN
COMPASS DEGREES WITH NORTH = 0.0, VALUES FROM
-180.0 TO +180.0 DEGREES.
GCDKM - REAL GREAT CIRCLE DISTANCE FROM POINT (1) TO
POINT (2) IN KILOMETERS.
REMARKS:
According to the NMC Handbook, the earth's radius is
6371.2 kilometers. This is what we use, even though the value
recommended by the Smithsonian Meteorological Handbook is
6371.221 KM. (I wouldn't want you to think that i didn't know
what the correct value was.)
METHOD: The poles are special cases, and handled separately.
Otherwise, from spherical trigonometry, the law of cosines is used
to calculate the third side of the spherical triangle having
sides from the pole to points (1) and (2) (the colatitudes).
Then the law of sines is used to calculate the angle at point
(1). A test is applied to see whether the arcsine result may be
be used as such, giving an acute angle as the bearing, or whether
The arcsine result should be subtracted from pi, giving an obtuse
angle as the bearing. This test is derived by constructing a
right spherical triangle using the pole, point (2), and the
meridian through point(1). The latitude of the right-angled
vertex then provides a test--if latitude (1) is greater than this
latitude, the bearing angle must be obtuse, otherwise acute.
If the two points are within 1e-6 radians of each other
a flat earth is assumed, and the four-quadrant arctangent
function is used to find the bearing. The y-displacement is
the difference in latitude and the x-displacement is the
difference in longitude times cosine latitude, both in radians.
distance is then the diagonal.
Fundamental trigonometric identities are used freely, such
as that cos(x) = sin(pi/2 - x), etc. See almost any mathematical
Handbook, such as the C.R.C. standard math tables under 'relations
in any spherical triangle', or the National Bureau of Standards
'Handbook of mathematical functions' under section 4.3.149,
formulas for solution of spherical triangles.
Double precision is used internally because of the wide
range of geographic values that may be used.
W3FB11
The W3FB11 routine converts the coordinates of a location on earth given in
the natural coordinate system of latitude/longitude to a grid
coordinate system overlaid on a Lambert conformal tangent cone
projection true at a given N or S latitude.
USAGE: CALL W3FB11 (ALAT,ELON,ALAT1,ELON1,DX,ELONV,ALATAN,XI,XJ)
InpuT argument list:
ALAT - LATITUDE IN DEGREES (NEGATIVE IN SOUTHERN HEMIS)
ELON - EAST LONGITUDE IN DEGREES, REAL*4
ALAT1 - LATITUDE OF LOWER LEFT POINT OF GRID (POINT (1,1))
ELON1 - LONGITUDE OF LOWER LEFT POINT OF GRID (POINT (1,1))
ALL REAL*4
DX - MESH LENGTH OF GRID IN METERS AT TANGENT LATITUDE
ELONV - THE ORIENTATION OF THE GRID. I.E.,
THE EAST LONGITUDE VALUE OF THE VERTICAL MERIDIAN
WHICH IS PARALLEL TO THE Y-AXIS (OR COLUMNS OF
OF THE GRID) ALONG WHICH LATITUDE INCREASES AS
THE Y-COORDINATE INCREASES. REAL*4
THIS IS ALSO THE MERIDIAN (ON THE BACK SIDE OF THE
TANGENT CONE) ALONG WHICH THE CUT IS MADE TO LAY
THE CONE FLAT.
ALATAN - THE LATITUDE AT WHICH THE LAMBERT CONE IS TANGENT TO
(TOUCHING) THE SPHERICAL EARTH.
SET NEGATIVE TO INDICATE A
SOUTHERN HEMISPHERE PROJECTION.
Output argument list:
XI - I COORDINATE OF THE POINT SPECIFIED BY ALAT, ELON
XJ - J COORDINATE OF THE POINT; BOTH REAL*4
REMARKS:
Formulae and notation loosely based on Hoke, Hayes,
and Renninger's "Map projections and grid systems...",
March 1981 AFGWC/TN-79/003
W3FB12
The W3FB12 routine converts the coordinates of a location on earth given in a
grid coordinate system overlaid on a Lambert conformal tangent
cone projection true at a given N or S latitude to the
natural coordinate system of latitude/longitude.
USAGE: CALL W3FB12(XI,XJ,ALAT1,ELON1,DX,ELONV,ALATAN,ALAT,ELON,IERR,
IERR)
Input argument list:
XI - I COORDINATE OF THE POINT REAL*4
XJ - J COORDINATE OF THE POINT REAL*4
ALAT1 - LATITUDE OF LOWER LEFT POINT OF GRID (POINT 1,1)
LATITUDE <0 FOR SOUTHERN HEMISPHERE; REAL*4
ELON1 - LONGITUDE OF LOWER LEFT POINT OF GRID (POINT 1,1)
EAST LONGITUDE USED THROUGHOUT; REAL*4
DX - MESH LENGTH OF GRID IN METERS AT TANGENT LATITUDE
ELONV - THE ORIENTATION OF THE GRID. I.E.,
THE EAST LONGITUDE VALUE OF THE VERTICAL MERIDIAN
WHICH IS PARALLEL TO THE Y-AXIS (OR COLUMNS OF
THE GRID) ALONG WHICH LATITUDE INCREASES AS
THE Y-COORDINATE INCREASES. REAL*4
THIS IS ALSO THE MERIDIAN (ON THE OTHER SIDE OF THE
TANGENT CONE) ALONG WHICH THE CUT IS MADE TO LAY
THE CONE FLAT.
ALATAN - THE LATITUDE AT WHICH THE LAMBERT CONE IS TANGENT TO
(TOUCHES OR OSCULATES) THE SPHERICAL EARTH.
SET NEGATIVE TO INDICATE A
SOUTHERN HEMISPHERE PROJECTION; REAL*4
Output argument list:
ALAT - LATITUDE IN DEGREES (NEGATIVE IN SOUTHERN HEMI.)
ELON - EAST LONGITUDE IN DEGREES, REAL*4
IERR - .EQ. 0 IF NO PROBLEM
.GE. 1 IF THE REQUESTED XI,XJ POINT IS IN THE
FORBIDDEN ZONE, I.E. OFF THE LAMBERT MAP
IN THE OPEN SPACE WHERE THE CONE IS CUT.
IF IERR.GE.1 THEN ALAT=999. AND ELON=999.
REMARKS:
Formulae and notation loosely based on Hoke, Hayes,
and Renninger's "Map projections and grid systems...",
March 1981 AFGWC/TN-79/003
W3FC02
The W3FC02 routine given the grid-oriented wind components on a Northern
hemisphere polar stereographic grid point, compute the direction
and speed of the wind at that point.
USAGE: CALL W3FC02 (FFID, FFJD, FGU, FGV, DIR, SPD)
Input variables:
FFID ARG LIST REAL*4 I(NORTH POLE) - I(POINT)
FFJD ARG LIST REAL*4 J(NORTH POLE) - J(POINT)
FGU ARG LIST REAL*4 GRID-ORIENTED U-COMPONENT
FGV ARG LIST REAL*4 GRID-ORIENTED V-COMPONENT
Output variables:
DIR ARG LIST REAL*4 WIND DIRECTION, DEGREES
SPD ARG LIST REAL*4 WIND SPEED
W3FC05
The W3FC05 routine computes the wind direction and speed from given the true
(earth oriented) wind components.
USAGE: CALL W3FC05 (U, V, DIR, SPD)
Input argument list:
U - REAL EARTH-ORIENTED U-COMPONENT
V - REAL EARTH-ORIENTED V-COMPONENT
Output argument list: (INCLUDING WORK ARRAYS)
DIR - REAL WIND DIRECTION, DEGREES. VALUES WILL
BE FROM 0 TO 360 INCLUSIVE.
SPD - REAL WIND SPEED IN SAME UNITS AS INPUT
REMARKS:
If speed is less than 1e-10 then direction will be set
to zero.
W3FC06
The W3FC06 routine computes earth-oriented (true) wind components
from given the wind direction and speed.
USAGE: CALL W3FC06 (DIR, SPD, U, V)
Input variables:
DIR - REAL*4 - WIND DIRECTION, DEGREES
SPD - REAL*4 - WIND SPEED, ANY UNITS
Output variables:
U - REAL*4 - EARTH-ORIENTED U-COMPONENT
V - REAL*4 - EARTH-ORIENTED V-COMPONENT
W3FC07
The W3FC07 routine computes the earth-oriented wind components at
the given grid-oriented wind components on a Northern
hemisphere polar stereographic grid point. If the
input winds are at the North pole, the output components
will be made consistent with the WMO standards for
reporting winds at the North pole.
(see Office Note 241 for WMO definition.)
USAGE: CALL W3FC07 (FFID, FFJD, FGU, FGV, FU, FV)
Input argument list:
FFID - REAL I-DISPLACEMENT FROM POINT TO NORTH POLE
FFJD - REAL J-DISPLACEMENT FROM POINT TO NORTH POLE
FGU - REAL GRID-ORIENTED U-COMPONENT
FGV - REAL GRID-ORIENTED V-COMPONENT
Output argument list:
FU - REAL EARTH-ORIENTED U-COMPONENT, POSITIVE FROM WEST
MAY REFERENCE THE SAME LOCATION AS FGU.
FV - REAL EARTH-ORIENTED V-COMPONENT, POSITIVE FROM SOUTH
MAY REFERENCE THE SAME LOCATION AS FGV.
REMARKS:
Calculate ffid and ffjd as follows:
FFID = REAL(IP - I)
FFJD = REAL(JP - J)
where (ip,jp) is the grid coordinates of the North pole
and (I,J) is the grid coordinates of the point where
fgu and fgv occur.
W3FC08
The W3FC08 routine computes the grid-oriented U and V wind components
at the given the earth-oriented wind components on a Northern
hemisphere polar stereographic grid point.
USAGE: CALL W3FC08 (FFID, FFJD, FU, FV, FGU, FGV)
Input argument list:
FFID - REAL I-DISPLACEMENT FROM POINT TO NORTH POLE IN
GRID UNITS
FFJD - REAL J-DISPLACEMENT FROM POINT TO NORTH POLE IN
GRID UNITS
FU - REAL EARTH-ORIENTED U-COMPONENT, POSITIVE FROM WEST
FV - REAL EARTH-ORIENTED V-COMPONENT, POSITIVE FROM EAST
Output argument list:
FGU - REAL GRID-ORIENTED U-COMPONENT. MAY REFERENCE
SAME LOCATION AS FU.
FGV - REAL GRID-ORIENTED V-COMPONENT. MAY REFERENCE
SAME LOCATION AS FV.
REMARKS:
FFID and FFJD may be calculated as follows:
FFID = REAL(IP - I)
FFJD = REAL(JP - J)
Where (ip, jp) are the grid coordinates of the north pole and
(i,j) are the grid coordinates of the point.
W3FI01
The W3FI01 routine determines machine word length in bytes.
USAGE: CALL W3FI01(LW)
Output argument list: (including work arrays)
LW - MACHINE WORD LENGTH IN BYTES
REMARKS:
Subprogram can be called from a multiprocessing environment.
W3FI02
The W3FI02 routine transfers array from 16 to 64 bit words.
USAGE: CALL W3FI02(IN,IDEST,NUM)
Input argument list:
IN - STARTING ADDRESS FOR ARRAY OF 16 BIT IBM HALF-WORDS
NUM - NUMBER OF NUMBERS IN 'IN' TO TRANSFER.
Output argument list: (INCLUDING WORK ARRAYS)
IDEST - STARTING ADDRESS FOR ARRAY OF OUTPUT INTEGERS
W3FI03
The W3FI03 routine transfers default integer words to 16 bit IBM half-words.
USAGE: CALL W3FI03(IN,IDEST,NUM,IER)
Input argument list:
IN - STARTING ADDRESS FOR ARRAY OF DEFAULT INTEGERS
NUM - NUMBER OF NUMBERS IN 'IN' TO TRANSFER.
Output argument list: (INCLUDING WORK ARRAYS)
IDEST - STARTING ADDRESS FOR ARRAY OF 16 BIT IBM HALF-WORDS
IER - ERROR RETURN CODE AS FOLLOWS:
IER = 0 - TRANSFER SUCCESSFUL, ALL NUMBERS
- TRANSFERRED WITHOUT OVERFLOW
IER = 1 - THE TRANSFER OF ONE OR MORE NUMBERS
- RESULTED IN AN OVERFLOW
W3FI04
The W3FI04 routine computes word size, the type of character
set, ASCII or EBCDIC, and if the computer is Big-Endian,
or Little-Endian.
USAGE: CALL W3FI04 (IENDN, ITYPEC, LW)
Output argument list:
IENDN - INTEGER FOR BIG-ENDIAN OR LITTLE-ENDIAN
= 0 BIG-ENDIAN
= 1 LITTLE-ENDIAN
= 2 CANNOT COMPUTE
ITYPEC - INTEGER FOR TYPE OF CHARACTER SET
= 0 ASCII CHARACTER SET
= 1 EBCDIC CHARACTER SET
= 2 NOT ASCII OR EBCDIC
LW - INTEGER FOR WORDS SIZE OF COMPUTER IN BYTES
= 4 FOR 32 BIT COMPUTERS
= 8 FOR 64 BIT COMPUTERS
W3FI18
The W3FI18 routine finds the i,j coordinate point in a 65x65 grid-point
array as being either inside, outside, or on the boundary
of the NMC Octagon centered in the 65x65 array.
USAGE: CALL W3FI18 (I, J, NW)
Input argument list:
I - COORDINATE IDENTIFICATION OF A POINT IN THE 65X65 ARRAY
J - COORDINATE IDENTIFICATION OF A POINT IN THE 65X65 ARRAY
Output argument list:
NW - INTEGER RETURN CODE
Exit states:
NW = -1 POINT IS OUTSIDE THE OCTAGON
NW = 0 POINT IS ON THE OCTAGON BOUNDARY
NW = +1 POINT IS INSIDE THE OCTAGON
W3FI19
The W3FI19 routine finds the i,j coordinate point in a 65x65 grid-point
array as being either inside, outside, or on the boundary
of the 53X57 NMC Rectangle centered in the 65x65 array.
USAGE: CALL W3FI19 (I, J, NW)
Input argument list:
I - COORDINATE IDENTIFICATION OF A POINT IN THE 65X65 ARRAY
J - COORDINATE IDENTIFICATION OF A POINT IN THE 65X65 ARRAY
Output argument list:
NW - INTEGER RETURN CODE
Exit states:
NW = -1 POINT IS OUTSIDE THE RECTANGLE
NW = 0 POINT IS ON THE RECTANGLE BOUNDARY
NW = +1 POINT IS INSIDE THE RECTANGLE
W3FI20
The W3FI20 routine extracts the NMC 1977 point Octagon grid points out of
a 65X65 (4225 POINT) array.
USAGE: CALL W3FI20 (A,B)
Input variables:
A REAL*4 (65 X 65 GRID, 4225 POINT) ARRAY
GRID IS OFFICE NOTE 84 TYPE 27 OR 1B HEX
Output variables:
B 1977 POINT ARRAY (OCTAGON) OFFICE NOTE 84 TYPE
0 OR HEX 0.
REMARKS: Arrays a and b may be the same array or be equivalenced,
in which case the first 1977 words of 'a' are written over.
W3FI32
The W3FI32 routine converts an array of the 27 data field identifiers
into an array of the first 8 identification words of the
format described in NMC Office Note 84 (89-06-15, PAGE-35).
USAGE: CALL W3FI32(LARRAY, KIDNT)
Input argument list:
LARRAY - INTEGER ARRAY CONTAINING 27 DATA FIELD
IDENTIFIERS (SEE O.N. 84)
Output argument list:
KIDNT - INTEGER ARRAY OF 6 WORDS, 12 OFFICE NOTE 84 32 BIT
WORDS, FIRST 4 WORDS ARE MADE BY W3FI32, IF YOU ARE
USING PACKER W3AI00, IT WILL COMPUTE WORD 5 AND 6.
(OFFICE NOTE 84 WORDS 9,10, 11 AND 12). IF J THE
WORD COUNT IN WORD 27 OF LARRAY IS GREATER THAN
32743 THEN BITS 15-0 OF THE 4TH ID WORD ARE SET TO
ZERO, J IS STORED IN BITS 31-0 OF THE 6TH ID WORD.
ID WORD 5 IS SET ZERO, BIT 63-32 OF THE 6TH ID
WORD ARE SET ZERO. NOTE: BIS ARE NUMBER LEFT TO
RIGHT ON THE CRAY AS 63-0.
Output files:
UNIT6 - STANDARD FORTRAN PRINT FILE
REMARKS:
Exit states printed messages:
If any number n in (larray(i),i=1,27) is erroneously large:
'value in larray(i)=n is too large to pack'
If any number n in (larray(i),i=1,27) is erroneously negative:
'value in larray(i)=n should not be negative'
In either of the above situations, that portion of the packed
word corresponding to larray(i) will be set to binary ones.
W3FI47
The W3FI47 routine converts a Office note 85 label in IBM370 format
to Office Note 85 Cray format.
USAGE: CALL W3FI47(ILABEL,NLABEL)
Input variables:
ILABEL 4 WORDS (32 BYTES) CHARACTERS ARE IN EBCDIC OR
BINARY.
Output variables:
NLABEL 4 WORDS (32 BYTES), CHARACTERS ARE IN ASCII OR
BINARY.
W3FI48
The W3FI48 routine converts Office Note 85 label from the Cray
format into a Nas-9050 label.
USAGE: CALL W3FI48 (ILABEL, NLABEL)
INPUT VARIABLES:
ILABEL 4 64-BIT WORDS OR 32 CHARACTERS
CHARACTERS ARE IN ASCII OR BINARY.
OUTPUT VARIABLES:
NLABEL 4 64-BIT WORDS OR 32 CHARACTERS,
CHARACTERS ARE IN EBCDIC OR BINARY.
REMARKS:
See Office Note 85.
W3FI52
The W3FI52 routine computes scaling constants used by grdprt.
USAGE: CALL W3FI52(IDENT,CNST,IER)
Input argument list:
IDENT FIRST 5 ID'S IN OFFICE NOTE 84 FORMAT
Output argument list:
CNST 4 CONSTANT'S USED BY GRDPRT,W3FP05, OR W3FP03
IER 0 = NORMAL RETURN
1 = ID'S IN IDENT ARE NOT IN O.N. 84 FORMAT
W3FI58
The W3FI58 routine converts an array of integer numbers into an array
of positive differences (number(s) - minimum value) and
packs the magnitude of each difference right-adjusted into
the least number of bits that holds the largest difference.
USAGE: CALL W3FI58(IFIELD,NPTS,NWORK,NPFLD,NBITS,LEN,KMIN)
Input argument list:
IFIELD - ARRAY OF INTEGER DATA FOR PROCESSING
NPTS - NUMBER OF DATA VALUES TO PROCESS IN IFIELD (AND NWORK)
WHERE, NPTS > 0
Output argument list:
NWORK - WORK ARRAY WITH INTEGER DIFFERENCE
NPFLD - ARRAY FOR PACKED DATA
(USER IS RESPONSIBLE FOR AN ADEQUATE DIMENSION.)
NBITS - NUMBER OF BITS USED TO PACK DATA WHERE, 0 < NBITS < 32
(THE MAXIMUM DIFFERENCE WITHOUT OVERFLOW IS 2**31 -1)
LEN - NUMBER OF PACKED BYTES IN NPFLD (SET TO 0 IF NO PACKING)
WHERE, LEN = (NBITS * NPTS + 7) / 8 WITHOUT REMAINDER
KMIN - MINIMUM VALUE (SUBTRACTED FROM EACH DATUM). IF THIS
PACKED DATA IS BEING USED FOR GRIB DATA, THE
PROGRAMER WILL HAVE TO CONVERT THE KMIN VALUE TO AN
IBM370 32 BIT FLOATING POINT NUMBER.
NOTE: LEN = 0, NBITS = 0, AND NO PACKING PERFORMED IF
(1) KMAX = KMIN (A CONSTANT FIELD)
(2) NPTS < 1 (SEE INPUT ARGUMENT)
W3FI59
The W3FI59 routine converts an array of single precision real numbers
into an array of positive scaled differences
(number(s) - minimum value), in integer format and
packs the argument-specified number of significant bits
from each difference.
USAGE: CALL W3FI59(FIELD,NPTS,NBITS,NWORK,NPFLD,ISCALE,LEN,RMIN)
Input argument list:
FIELD - ARRAY OF FLOATING POINT DATA FOR PROCESSING (REAL)
NPTS - NUMBER OF DATA VALUES TO PROCESS IN FIELD (AND NWORK)
WHERE, NPTS > 0
NBITS - NUMBER OF SIGNIFICANT BITS OF PROCESSED DATA TO BE PACKED
WHERE, 0 < NBITS < 32+1
Output argument list:
NWORK - ARRAY FOR INTEGER CONVERSION (INTEGER)
IF PACKING PERFORMED (SEE NOTE BELOW), THE ARRAY WILL
CONTAIN THE PRE-PACKED, RIGHT ADJUSTED, SCALED, INTEGER
DIFFERENCES UPON RETURN TO THE USER.
(THE USER MAY EQUIVALENCE FIELD AND NWORK. SAME SIZE.)
NPFLD - ARRAY FOR PACKED DATA (INTEGER)
(DIMENSION MUST BE AT LEAST (NBITS * NPTS) / 64 + 1 )
ISCALE- POWER OF 2 FOR RESTORING DATA, SUCH THAT
DATUM = (DIFFERENCE * 2**ISCALE) + RMIN
LEN - NUMBER OF PACKED BYTES IN NPFLD (SET TO 0 IF NO PACKING)
WHERE, LEN = (NBITS * NPTS + 7) / 8 WITHOUT REMAINDER
RMIN - MINIMUM VALUE (REFERENCE VALUE SUBTRACTED FROM INPUT DATA)
THIS IS A CRAY FLOATING POINT NUMBER, IT WILL HAVE TO BE
CONVERTED TO AN IBM370 32 BIT FLOATING POINT NUMBER AT
SOME POINT IN YOUR PROGRAM IF YOU ARE PACKING GRIB DATA.
REMARKS:
LEN = 0 AND NO PACKING PERFORMED IF
(1) RMAX = RMIN (A CONSTANT FIELD)
(2) NBITS VALUE OUT OF RANGE (SEE INPUT ARGUMENT)
(3) NPTS VALUE LESS THAN 1 (SEE INPUT ARGUMENT)
W3FI61
The W3FI61 routine builds 40 char communications prefix.
USAGE: CALL W3FI61 (LOC,ICAT,AREG,IBCKUP,IDATYP,IERR)
Input argument list:
ICAT - CATALOG NUMBER
AREG - AFOS REGIONAL ADDRESSING FLAGS (6 POSITIONS)
SELECT ANY OR ALL OF THE FOLLOWING. SELECTIONS
WILL AUTOMATICALLY BE LEFT JUSTIFIED AND BLANK
FILLED TO 6 POSITIONS.
IF BULLETINS AND/OR MESSAGES ARE NOT TO BE ROUTED
TO AFOS, THEN LEAVE THE FIELD FILLED WITH BLANKS.
E - EASTERN REGION
C - CENTRAL REGION
W - WESTERN REGION
S - SOUTHERN REGION
A - ATLANTIC REGION
P - PACIFIC REGION
IERR - ERROR RETURN
IBCKUP - BACKUP INDICATOR W/HEADER KEY
0 = NOT A BACKUP
1 = FD BACKUP
2 = DF BACKUP
BACK UP IS ONLY PERMITTED FOR FD AND DF BULLETINS
IDATYP - DATA TYPE INDICATOR
0 = EBCIDIC DATA
11 = BINARY DATA
12 = PSUEDO-ASCII DATA
3 = ASCII DATA
Output argument list:
LOC - NAME OF THE ARRAY TO RECEIVE THE COMMUNICATIONS PREFIX
REMARKS:
Error returns:
IERR = 0 NORMAL RETURN
= 1 INCORRECT BACKUP FLAG
= 2 A REGIONAL ADDRESSING FLAG IS
NON-BLANK AND NON-STANDARD ENTRY
= 3 DATA TYPE IS NON-STANDARD ENTRY
W3FI62
The W3FI62 routine builds 80-CHAR on295 queue descriptor.
USAGE: CALL W3FI62 (LOC,TTAAII,KARY,IERR)
Input argument list:
TTAAII - FIRST 6 CHARACTERS OF WMO HEADER
KARY - INTEGER ARRAY CONTAINING USER INFORMATION
(1) = DAY OF MONTH
(2) = HOUR OF DAY
(3) = HOUR * 100 + MINUTE
(4) = CATALOG NUMBER
(5) = NUMBER OF 80 BYTE INCREMENTS
(6) = NUMBER OF BYTES IN LAST INCREMENT
(7) = TOTAL SIZE OF MESSAGE
WMO HEADER + BODY OF MESSAGE IN BYTES
(NOT INCLUDING QUEUE DESCRIPTOR)
Output argument list: (INCLUDING WORK ARRAYS)
LOC - LOCATION TO RECEIVE QUEUE DESCRIPTOR
KARY - SEE INPUT ARGUMENT LIST
IERR - ERROR RETURN
REMARKS:
If total size is entered (kary(7)) then kary(5) and
kary(6) will be calculated.
If kary(5) and kary(6) are provided then kary(7) will
be ignored.
WARNING:
Equivalence array loc to integer array so it starts on
a word boundary for sbyte subroutine.
Error returns:
IERR = 1 Total byte count and/or 80 byte increment
count is missing. One or the other is
required to complete the queue descriptor.
IERR = 2 Total size too small.
W3FI63
The W3FI63 routine unpacks a grib (edition 1) field to the exact grid
specified in the grib message, isolate the bit map, and make
the values of the product descripton section (PDS) and the
grid description section (GDS) available in return arrays.
USAGE: CALL W3FI63(MSGA,KPDS,KGDS,KBMS,DATA,KPTR,KRET)
Input argument list:
MSGA - GRIB FIELD - "GRIB" THRU "7777" CHAR*1
(MESSAGE CAN BE PRECEDED BY JUNK CHARS)
Output argument list:
DATA - ARRAY CONTAINING DATA ELEMENTS
KPDS - ARRAY CONTAINING PDS ELEMENTS. (EDITION 1)
(1) - ID OF CENTER
(2) - GENERATING PROCESS ID NUMBER
(3) - GRID DEFINITION
(4) - GDS/BMS FLAG (RIGHT ADJ COPY OF OCTET 8)
(5) - INDICATOR OF PARAMETER
(6) - TYPE OF LEVEL
(7) - HEIGHT/PRESSURE , ETC OF LEVEL
(8) - YEAR INCLUDING (CENTURY-1)
(9) - MONTH OF YEAR
(10) - DAY OF MONTH
(11) - HOUR OF DAY
(12) - MINUTE OF HOUR
(13) - INDICATOR OF FORECAST TIME UNIT
(14) - TIME RANGE 1
(15) - TIME RANGE 2
(16) - TIME RANGE FLAG
(17) - NUMBER INCLUDED IN AVERAGE
(18) - VERSION NR OF GRIB SPECIFICATION
(19) - VERSION NR OF PARAMETER TABLE
(20) - NR MISSING FROM AVERAGE/ACCUMULATION
(21) - CENTURY OF REFERENCE TIME OF DATA
(22) - UNITS DECIMAL SCALE FACTOR
(23) - SUBCENTER NUMBER
(24) - PDS BYTE 29, FOR NMC ENSEMBLE PRODUCTS
128 IF FORECAST FIELD ERROR
64 IF BIAS CORRECTED FCST FIELD
32 IF SMOOTHED FIELD
WARNING: CAN BE COMBINATION OF MORE THAN 1
(25) - PDS BYTE 30, NOT USED
(26-35) - RESERVED
(36-N) - CONSECUTIVE BYTES EXTRACTED FROM PROGRAM
DEFINITION SECTION (PDS) OF GRIB MESSAGE
KGDS - ARRAY CONTAINING GDS ELEMENTS.
(1) - DATA REPRESENTATION TYPE
(19) - NUMBER OF VERTICAL COORDINATE PARAMETERS
(20) - OCTET NUMBER OF THE LIST OF VERTICAL COORDINATE
PARAMETERS
OR
OCTET NUMBER OF THE LIST OF NUMBERS OF POINTS
IN EACH ROW
OR
255 IF NEITHER ARE PRESENT
(21) - FOR GRIDS WITH PL, NUMBER OF POINTS IN GRID
(22) - NUMBER OF WORDS IN EACH ROW
LATITUDE/LONGITUDE GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
GAUSSIAN GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF EXTREME POINT
(8) - LO(2) LONGITUDE OF EXTREME POINT
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - N - NR OF CIRCLES POLE TO EQUATOR
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - NV - NR OF VERT COORD PARAMETERS
(13) - PV - OCTET NR OF LIST OF VERT COORD PARAMETERS
OR
PL - LOCATION OF THE LIST OF NUMBERS OF POINTS IN
EACH ROW (IF NO VERT COORD PARAMETERS
ARE PRESENT
OR
255 IF NEITHER ARE PRESENT
POLAR STEREOGRAPHIC GRIDS
(2) - N(I) NR POINTS ALONG LAT CIRCLE
(3) - N(J) NR POINTS ALONG LON CIRCLE
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV GRID ORIENTATION
(8) - DX - X DIRECTION INCREMENT
(9) - DY - Y DIRECTION INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE (RIGHT ADJ COPY OF OCTET 28)
SPHERICAL HARMONIC COEFFICIENTS
(2) - J PENTAGONAL RESOLUTION PARAMETER
(3) - K " " "
(4) - M " " "
(5) - REPRESENTATION TYPE
(6) - COEFFICIENT STORAGE MODE
MERCATOR GRIDS
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF LAST GRID POINT
(8) - LO(2) LONGITUDE OF LAST GRID POINT
(9) - LATIT - LATITUDE OF PROJECTION INTERSECTION
(10) - RESERVED
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LONGITUDINAL DIR GRID LENGTH
(13) - LATITUDINAL DIR GRID LENGTH
LAMBERT CONFORMAL GRIDS
(2) - NX NR POINTS ALONG X-AXIS
(3) - NY NR POINTS ALONG Y-AXIS
(4) - LA1 LAT OF ORIGIN (LOWER LEFT)
(5) - LO1 LON OF ORIGIN (LOWER LEFT)
(6) - RESOLUTION (RIGHT ADJ COPY OF OCTET 17)
(7) - LOV - ORIENTATION OF GRID
(8) - DX - X-DIR INCREMENT
(9) - DY - Y-DIR INCREMENT
(10) - PROJECTION CENTER FLAG
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
(12) - LATIN 1 - FIRST LAT FROM POLE OF SECANT CONE INTER
(13) - LATIN 2 - SECOND LAT FROM POLE OF SECANT CONE INTER
STAGGERED ARAKAWA ROTATED LAT/LON GRIDS (TYPE 203)
(2) - N(I) NR POINTS ON LATITUDE CIRCLE
(3) - N(J) NR POINTS ON LONGITUDE MERIDIAN
(4) - LA(1) LATITUDE OF ORIGIN
(5) - LO(1) LONGITUDE OF ORIGIN
(6) - RESOLUTION FLAG (RIGHT ADJ COPY OF OCTET 17)
(7) - LA(2) LATITUDE OF CENTER
(8) - LO(2) LONGITUDE OF CENTER
(9) - DI LONGITUDINAL DIRECTION OF INCREMENT
(10) - DJ LATITUDINAL DIRECTION INCREMENT
(11) - SCANNING MODE FLAG (RIGHT ADJ COPY OF OCTET 28)
KBMS - BITMAP DESCRIBING LOCATION OF OUTPUT ELEMENTS.
(ALWAYS CONSTRUCTED)
KPTR - ARRAY CONTAINING STORAGE FOR FOLLOWING PARAMETERS
(1) - TOTAL LENGTH OF GRIB MESSAGE
(2) - LENGTH OF INDICATOR (SECTION 0)
(3) - LENGTH OF PDS (SECTION 1)
(4) - LENGTH OF GDS (SECTION 2)
(5) - LENGTH OF BMS (SECTION 3)
(6) - LENGTH OF BDS (SECTION 4)
(7) - VALUE OF CURRENT BYTE
(8) - BIT POINTER
(9) - GRIB START BIT NR
(10) - GRIB/GRID ELEMENT COUNT
(11) - NR UNUSED BITS AT END OF SECTION 3
(12) - BIT MAP FLAG (COPY OF BMS OCTETS 5,6)
(13) - NR UNUSED BITS AT END OF SECTION 2
(14) - BDS FLAGS (RIGHT ADJ COPY OF OCTET 4)
(15) - NR UNUSED BITS AT END OF SECTION 4
KRET - FLAG INDICATING QUALITY OF COMPLETION
REMARKS:
When decoding is completed, data at each grid point has been
returned in the units specified in the grib manual.
Values for return flag (kret)
KRET = 0 - Normal return, no errors
= 1 - 'GRIB' not found in first 100 chars
= 2 - '7777' not in correct location
= 3 - Unpacked field is larger than 260000
= 4 - GDS/ Grid not one of currently accepted values
= 5 - Grid not currently avail for center indicated
= 8 - Temp GDS indicated, but GDS flag is off
= 9 - GDS indicates size mismatch with std grid
=10 - Incorrect center indicator
=11 - Binary data section (BDS) not completely processed.
program is not set to process flag combinations
shown in octets 4 and 14.
=12 - Binary data section (BDS) not completely processed.
program is not set to process flag combinations
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.
W3FI65
The W3FI65 routine packs an array of upper-air reports into the format
described by NMC Office Note 29, or packs an array of surface
reports into the format described by NMC Office Note 124.
USAGE: CALL W3FI65(LOCRPT,COCBUF)
Input argument list:
LOCRPT - INTEGER ARRAY CONTAINING ONE UNPACKED REPORT.
- LOCRPT MUST BEGIN ON A FULLWORD BOUNDARY. FORMAT
- IS MIXED, USER MUST EQUIVALENCE REAL AND CHARACTER
- ARRAYS TO THIS ARRAY (SEE W3FI64 WRITE-UP FOR
- CONTENT).
Output argument list:
COCBUF - CHARACTER*10 ARRAY CONTAINING A PACKED REPORT IN
- NMC OFFICE NOTE 29/124 FORMAT.
REMARKS:
After first creating and writing out the Office Note 85
(first) date record, the user's FORTRAN program begins a packing
loop as follows.. each iteration of the packing loop consists of
a call first to w3fi65 to pack the report into cocbuf, then a call
to w3fi66 with the current value of 'nflag' (set to zero for first
call) to block the packed report into a record (see w3fi66 write-
up). If 'nflag' is -1 upon returning from w3fi66, the remaining
portion of the record is not large enough to hold the current
packed report. The user should write out the record, set 'nflag'
to zero, call w3fi66 to write the packed report to the beginning
of the next record, and repeat the packing loop. If 'nflag' is
positive, a packed report has been blocked into the record and
the user should continue the packing loop.
When all reports have been packed and blocked, the user
should write out this last record (which is not full but contains
fill information supplied by w3fi66). One final record containing
the string 'endof file' (SIC) followed by blank fill must be
written out to signal the end of the data set.
NOTE1: The packed report will have the categories ordered as
follows: 1, 2, 3, 4, 5, 6, 7, 51, 52, 8, 9.
NOTE2: The input unpacked report must be in the format specified
in the w3fi64 office note 29 report unpacker write-up.
NOTE3: The unused porion of cocbuf is not cleared.
W3FI66
The W3FI66 routine blocks reports which have been packed into NMC Office
Note 29 character format into fixed-length records.
USAGE: CALL W3FI66(COCBUF,COCBLK,NFLAG,NSIZE)
Input argument list:
COCBUF - CHARACTER*10 ARRAY CONTAINING A SINGLE PACKED REPORT
- IN OFFICE NOTE 29/124 FORMAT.
COCBLK - CHARACTER*10 ARRAY HOLDING A BLOCK OF PACKED REPORTS
- UP TO AND INCLUDING THE PREVIOUS ONE
NFLAG - MARKER INDICATING RELATIVE LOCATION (IN BYTES)
- OF END OF LAST REPORT IN COCBLK. EXCEPTION:
- NFLAG MUST BE SET TO ZERO PRIOR TO BLOCKING THE FIRST
- PACKED REPORT INTO A NEW BLOCK. SUBSEQUENTLY, THE
- VALUE OF NFLAG RETURNED BY THE PREVIOUS CALL TO W3FI66
- SHOULD BE USED AS INPUT. (SEE OUTPUT ARGUMENT LIST
- BELOW.) IF NFLAG IS NEGATIVE, W3FI66 WILL RETURN
- IMMEDIATELY WITHOUT ACTION.
NSIZE - MAXIMUM NUMBER OF CHARACTERS IN COCBLK ARRAY
(SHOULD BE A MULTIPLE OF 4)
Output argument list:
COCBLK - CHARACTER*10 ARRAY HOLDING A BLOCK OF PACKED REPORTS
- UP TO AND INCLUDING THE CURRENT ONE
NFLAG - MARKER INDICATING RELATIVE LOCATION (IN BYTES)
- OF END OF CURRENT REPORT IN COCBLK. NFLAG
- WILL BE SET TO -1 IF W3FI66 CANNOT FIT THE CURRENT
- PACKED REPORT INTO THE REMAINDER OF THE BLOCK (I.E.,
- THE BLOCK IS FULL). NFLAG WILL NOT CHANGE FROM ITS
- INPUT ARGUMENT VALUE IF THE STRING "END REPORT" IS
- NOT FOUND AT THE END OF THE CURRENT REPORT. (CURRENT
- PACKED REPORT HAS INVALID LENGTH AND IS NOT BLOCKED)
Output files:
FT06F001 - PRINTOUT
REMARKS:
The user must set nflag to zero each time the array is
to be filled with packed reports in Office Note 29/124 format.
w3fi66 will then insert the first report and fill the remainder
of the output array cocblk with the string 'end record'.
An attempt is made to insert a report in the output array
each time w3fi66 is called. If the remaining portion of the
output array is not large enough to hold the current report,
w3fi66 sets nflag to -1. The user should then output the
blocked record, set nflag to zero, and call w3fi66 again with
the same report in the input array.
After a given report is successfully blocked into cocblk,
w3fi66 sets nflag as a pointer for the next report to be blocked.
This pointer is a relative address and a character count.
The three characters specifying the length of the report
are checked for valid character numbers and the value is tested
for pointing to the end of the report (string "end report"). If
invalid, the report is not inserted into the block and there is
an immediate return to the user. In this case, the value of
nflag does not change from its input value.
W3FI67
The W3FI67 routine decodes a bufr message and place information
extracted from the bufr message into selected arrays
for the user.
USAGE: CALL W3FI67(IPTR,IDENT,MSGA,ISTACK,MSTACK,KDATA,KNR,INDEX)
Input argument list:
MSGA - ARRAY CONTAINING SUPPOSED BUFR MESSAGE
Output argument list: (INCLUDING WORK ARRAYS)
ISTACK - ORIGINAL ARRAY OF DESCRIPTORS EXTRACTED FROM
SOURCE BUFR MESSAGE.
MSTACK(A,B) - LEVEL B - DESCRIPTOR NUMBER
LEVEL A = 1 DESCRIPTOR
= 2 10**N SCALING TO RETURN TO ORIGINAL VALUE
IPTR - UTILITY ARRAY
IPTR( 1)- ERROR RETURN
IPTR( 2)- BYTE COUNT SECTION 1
IPTR( 3)- POINTER TO START OF SECTION 1
IPTR( 4)- BYTE COUNT SECTION 2
IPTR( 5)- POINTER TO START OF SECTION 2
IPTR( 6)- BYTE COUNT SECTION 3
IPTR( 7)- POINTER TO START OF SECTION 3
IPTR( 8)- BYTE COUNT SECTION 4
IPTR( 9)- POINTER TO START OF SECTION 4
IPTR(10)- START OF REQUESTED SUBSET, RESERVED FOR DAR
IPTR(11)- CURRENT DESCRIPTOR PTR IN IWORK
IPTR(12)- LAST DESCRIPTOR POS IN IWORK
IPTR(13)- LAST DESCRIPTOR POS IN ISTACK
IPTR(14)- NUMBER OF TABLE B ENTRIES
IPTR(15)- REQUESTED SUBSET POINTER, RESERVED FOR DAR
IPTR(16)- INDICATOR FOR EXISTANCE OF SECTION 2
IPTR(17)- NUMBER OF REPORTS PROCESSED
IPTR(18)- ASCII/TEXT EVENT
IPTR(19)- POINTER TO START OF BUFR MESSAGE
IPTR(20)- NUMBER OF LINES FROM TABLE D
IPTR(21)- TABLE B SWITCH
IPTR(22)- TABLE D SWITCH
IPTR(23)- CODE/FLAG TABLE SWITCH
IPTR(24)- ADITIONAL WORDS ADDED BY TEXT INFO
IPTR(25)- CURRENT BIT NUMBER
IPTR(26)- DATA WIDTH CHANGE
IPTR(27)- DATA SCALE CHANGE
IPTR(28)- DATA REFERENCE VALUE CHANGE
IPTR(29)- ADD DATA ASSOCIATED FIELD
IPTR(30)- SIGNIFY CHARACTERS
IPTR(31)- NUMBER OF EXPANDED DESCRIPTORS IN MSTACK
IPTR(32)- CURRENT DESCRIPTOR SEGMENT F
IPTR(33)- CURRENT DESCRIPTOR SEGMENT X
IPTR(34)- CURRENT DESCRIPTOR SEGMENT Y
IPTR(35)- UNUSED
IPTR(36)- NEXT DESCRIPTOR MAY BE UNDECIPHERABLE
IPTR(37)- UNUSED
IPTR(38)- UNUSED
IPTR(39)- DELAYED REPLICATION FLAG
0 - NO DELAYED REPLICATION
1 - MESSAGE CONTAINS DELAYED REPLICATION
IPTR(40)- NUMBER OF CHARACTERS IN TEXT FOR CURR DESCRIPTOR
IDENT - ARRAY CONTAINS MESSAGE INFORMATION EXTRACTED FROM
BUFR MESSAGE -
IDENT( 1)-EDITION NUMBER (BYTE 4, SECTION 1)
IDENT( 2)-ORIGINATING CENTER (BYTES 5-6, SECTION 1)
IDENT( 3)-UPDATE SEQUENCE (BYTE 7, SECTION 1)
IDENT( 4)-OPTIONAL SECTION (BYTE 8, SECTION 1)
IDENT( 5)-BUFR MESSAGE TYPE (BYTE 9, SECTION 1)
0 = SURFACE (LAND)
1 = SURFACE (SHIP)
2 = VERTICAL SOUNDINGS OTHER THAN SATELLITE
3 = VERTICAL SOUNDINGS (SATELLITE)
4 = SNGL LVL UPPER-AIR OTHER THAN SATELLITE
5 = SNGL LVL UPPER-AIR (SATELLITE)
6 = RADAR
IDENT( 6)-BUFR MSG SUB-TYPE (BYTE 10, SECTION 1)
TYPE SBTYP
2 7 = PROFILER
IDENT( 7)- (BYTES 11-12, SECTION 1)
IDENT( 8)-YEAR OF CENTURY (BYTE 13, SECTION 1)
IDENT( 9)-MONTH OF YEAR (BYTE 14, SECTION 1)
IDENT(10)-DAY OF MONTH (BYTE 15, SECTION 1)
IDENT(11)-HOUR OF DAY (BYTE 16, SECTION 1)
IDENT(12)-MINUTE OF HOUR (BYTE 17, SECTION 1)
IDENT(13)-RSVD BY ADP CENTERS(BYTE 18, SECTION 1)
IDENT(14)-NR OF DATA SUBSETS (BYTE 5-6, SECTION 3)
IDENT(15)-OBSERVED FLAG (BYTE 7, BIT 1, SECTION 3)
IDENT(16)-COMPRESSION FLAG (BYTE 7, BIT 2, SECTION 3)
IDENT(17)-MASTER TABLE NUMBER(BYTE 4, SECTION 1, ED 2 OR GTR)
KDATA - ARRAY CONTAINING DECODED REPORTS FROM BUFR MESSAGE.
KDATA(REPORT NUMBER,PARAMETER NUMBER)
ARRAYS CONTAINING DATA FROM TABLE B
ANAME - DESCRIPTOR NAME
AUNITS - UNITS FOR DESCRIPTOR
MSCALE - SCALE FOR VALUE OF DESCRIPTOR
MREF - REFERENCE VALUE FOR DESCRIPTOR
MWIDTH - BIT WIDTH FOR VALUE OF DESCRIPTOR
INDEX - POINTER TO AVAILABLE SUBSET
REMARKS:
Error returns:
IPTR(1) = 1 'BUFR' NOT FOUND IN FIRST 125 CHARACTERS
= 2 '7777' NOT FOUND IN LOCATION DETERMINED BY
BY USING COUNTS FOUND IN EACH SECTION. ONE OR
MORE SECTIONS HAVE AN ERRONEOUS BYTE COUNT OR
CHARACTERS '7777' ARE NOT IN TEST MESSAGE.
= 3 MESSAGE CONTAINS A DESCRIPTOR WITH F=0 THAT DOES
NOT EXIST IN TABLE B.
= 4 MESSAGE CONTAINS A DESCRIPTOR WITH F=3 THAT DOES
NOT EXIST IN TABLE D.
= 5 MESSAGE CONTAINS A DESCRIPTOR WITH F=2 WITH THE
VALUE OF X OUTSIDE THE RANGE 1-5.
= 6 DESCRIPTOR ELEMENT INDICATED TO HAVE A FLAG VALUE
DOES NOT HAVE AN ENTRY IN THE FLAG TABLE.
(TO BE ACTIVATED)
= 7 DESCRIPTOR INDICATED TO HAVE A CODE VALUE DOES
NOT HAVE AN ENTRY IN THE CODE TABLE.
(TO BE ACTIVATED)
= 8 ERROR READING TABLE D
= 9 ERROR READING TABLE B
= 10 ERROR READING CODE/FLAG TABLE
= 11 DESCRIPTOR 2 04 004 NOT FOLLOWED BY 0 31 021
= 12 DATA DESCRIPTOR OPERATOR QUALIFIER DOES NOT FOLLOW
DELAYED REPLICATION DESCRIPTOR.
= 13 BIT WIDTH ON ASCII CHARACTERS NOT A MULTIPLE OF 8
= 14 SUBSETS = 0, NO CONTENT BULLETIN
= 20 EXCEEDED COUNT FOR DELAYED REPLICATION PASS
= 21 EXCEEDED COUNT FOR NON-DELAYED REPLICATION PASS
= 22 SECTION 1 COUNT EXCEEDS 10000
= 23 SECTION 2 COUNT EXCEEDS 10000
= 24 SECTION 3 COUNT EXCEEDS 10000
= 25 SECTION 4 COUNT EXCEEDS 10000
= 27 NON ZERO LOWEST ON TEXT DATA
= 28 NBINC NOT NR OF CHARACTERS
= 29 TABLE B APPEARS TO BE DAMAGED
= 99 NO MORE SUBSETS (REPORTS) AVAILABLE IN CURRENT
BUFR MESAGE
= 400 NUMBER OF SUBSETS EXCEEDS CAPABILITY OF ROUTINE
= 401 NUMBER OF PARAMETERS (AND ASSOCIATED FIELDS)
EXCEEDS LIMITS OF THIS PROGRAM.
= 500 VALUE FOR NBINC HAS BEEN FOUND THAT EXCEEDS
STANDARD WIDTH PLUS ANY BIT WIDTH CHANGE.
CHECK ALL BIT WIDTHS UP TO POINT OF ERROR.
= 501 CORRECTED WIDTH FOR DESCRIPTOR IS 0 OR LESS
on the initial call to w3fi67 with a bufr message the argument
index must be set to zero (index = 0). On the return from w3fi67
'index' will be set to the next available subset/report. When
there are no more subsets available a 99 err return will occur.
If the original bufr message does not contain delayed replication
the bufr message will be completely decoded and 'index' will point
to the first decoded subset. The users will then have the option
of indexing through the subsets on their own or by recalling this
routine (without resetting 'index') to have the routine do the
indexing.
If the original bufr message does contain delayed replication
one subset/report will be decoded at a time and passed back to
the user. This is not an option.
=============================================
TO USE THIS ROUTINE
---------------------------------------------
1. READ IN BUFR MESSAGE
2. SET INDEX = 0
3. CALL W3FI67( )
4. IF (IPTR(1).EQ.99) THEN
NO MORE SUBSETS
EITHER GO TO 1
OR TERMINATE IN NO MORE BUFR MESSAGES
END IF
5. IF (IPTR(1).NE.0) THEN
ERROR CONDITION
EITHER GO TO 1
OR TERMINATE IN NO MORE BUFR MESSAGES
END IF
6. THE VALUE OF INDEX INDICATES THE ACTIVE SUBSET SO
IF INTERESTED IN GENERATING AN IFOD MESSAGE
CALL W3FL05 ( )
ELSE
PROCESS DECODED INFORMATION AS REQUIRED
END IF
7. GO TO 3
=============================================
THE ARRAYS TO CONTAIN THE OUTPUT INFORMATION ARE DEFINED
AS FOLLOWS:
KDATA(A,B) IS THE A DATA ENTRY (INTEGER VALUE)
WHERE A IS THE MAXIMUM NUMBER OF REPORTS/SUBSETS
(FOR THIS VERSION OF THE DECODER A=500)
THAT MAY BE CONTAINED IN THE BUFR MESSAGE, AND
WHERE B IS THE MAXIMUM NUMBER OF DESCRIPTOR
COMBINATIONS THAT MAY BE PROCESSED.
UPPER AIR DATA AND SOME SATELLITE DATA REQUIRE
A VALUE FOR B OF 1600, BUT FOR MOST OTHER DATA
A VALUE FOR B OF 500 WILL SUFFICE
MSTACK(1,B) CONTAINS THE DESCRIPTOR THAT MATCHES THE
DATA ENTRY
MSTACK(2,B) IS THE SCALE (POWER OF 10) TO BE APPLIED TO
THE DATA
W3FI68
The W3FI68 routine converts an array of 25, or 27 integer words
into a grib product definition section (PDS) of 28
bytes , or 30 bytes. If pds bytes > 30, they are
set to zero.
USAGE: CALL W3FI68 (ID, PDS)
Input argument list:
ID - 25, 27 WORD INTEGER ARRAY
Output argument list:
PDS - 28 30, OR GREATER CHARACTER PDS FOR EDITION 1
REMARKS:
LAYOUT OF 'ID' ARRAY:
ID(1) = NUMBER OF BYTES IN PRODUCT DEFINITION SECTION (PDS)
ID(2) = PARAMETER TABLE VERSION NUMBER
ID(3) = IDENTIFICATION OF ORIGINATING CENTER
ID(4) = MODEL IDENTIFICATION (ALLOCATED BY ORIGINATING CENTER)
ID(5) = GRID IDENTIFICATION
ID(6) = 0 IF NO GDS SECTION, 1 IF GDS SECTION IS INCLUDED
ID(7) = 0 IF NO BMS SECTION, 1 IF BMS SECTION IS INCLUDED
ID(8) = INDICATOR OF PARAMETER AND UNITS (TABLE 2)
ID(9) = INDICATOR OF TYPE OF LEVEL (TABLE 3)
ID(10) = VALUE 1 OF LEVEL (0 FOR 1-100,102,103,105,107
109,111,113,115,117,119,125,160,200,201
LEVEL IS IN ID WORD 11)
ID(11) = VALUE 2 OF LEVEL
ID(12) = YEAR OF CENTURY
ID(13) = MONTH OF YEAR
ID(14) = DAY OF MONTH
ID(15) = HOUR OF DAY
ID(16) = MINUTE OF HOUR (IN MOST CASES SET TO 0)
ID(17) = FCST TIME UNIT
ID(18) = P1 PERIOD OF TIME
ID(19) = P2 PERIOD OF TIME
ID(20) = TIME RANGE INDICATOR
ID(21) = NUMBER INCLUDED IN AVERAGE
ID(22) = NUMBER MISSING FROM AVERAGES
ID(23) = CENTURY (20, CHANGE TO 21 ON JAN. 1, 2001)
ID(24) = SUBCENTER IDENTIFICATION
ID(25) = SCALING POWER OF 10
ID(26) = FLAG BYTE, 8 ON/OFF FLAGS
BIT NUMBER VALUE ID(26) DEFINITION
1 0 0 FULL FCST FIELD
1 128 FCST ERROR FIELD
2 0 0 ORIGINAL FCST FIELD
1 64 BIAS CORRECTED FCST FIELD
3 0 0 ORIGINAL RESOLUTION RETAINED
1 32 SMOOTHED FIELD
NOTE: ID(26) CAN BE THE SUM OF BITS 1, 2, 3.
BITS 4-8 NOT USED, SET TO ZERO
IF ID(1) IS 28, YOU DO NOT NEED ID(26) AND ID(27).
ID(27) = UNUSED, SET TO 0 SO PDS BYTE 30 IS SET TO ZERO.
W3FI69
The W3FI69 routine converts an edition 1 grib produce definition
section (PDS) to a 25, or 27 word integer array.
USAGE: CALL W3FI69 (PDS, ID)
Input argument list:
PDS - 28 TO 100 CHARACTER PRODUCT DEFINITION SECTION
(PDS)
Output argument list:
ID - 25, OR 27 WORD INTEGER ARRAY
REMARKS:
List caveats, other helpful hints or information.
W3FI70
The W3FI70 routine computes the four scaling constants used by
GRDPRT, W3FP03, or W3FP05 from the 28 byte (PDS)
product definition section of grib edition one.
USAGE: CALL W3FI70(PDS,CNST,IER)
Input variables:
PDS 28 BYTE (PDS) GRIB PRODUCT DEFINITION SECTION
Output variables:
CNST 4 CONSTANT'S USED BY GRDPRT,W3FP05, OR W3FP03
IER 0 = NORMAL RETURN
1 = ID'S IN IDENT ARE NOT IN O.N. 388 FORMAT
W3FI71
The W3FI71 routine makes a 18, 37, 55, 64, or 91 word integer array
used by w3fi72 grib packer to make the grid descriptioni
section (gds) - section 2.
USAGE: CALL W3FI71 (IGRID, IGDS, IERR)
Input argument list:
IGRID - GRIB GRID NUMBER, OR OFFICE NOTE 84 GRID NUMBER
Output argument list:
IGDS - 18, 37, 55, 64, OR 91 WORD INTEGER ARRAY WITH
INFORMATION TO MAKE A GRIB GRID DESCRIPTION SECTION.
IERR - 0 CORRECT EXIT
1 GRID TYPE IN IGRID IS NOT IN TABLE
REMARKS:
1) OFFICE NOTE GRID TYPE 26 IS 6 IN GRIB, 26 IS AN
INTERNATIONAL EXCHANGE GRID.
2) VALUES RETURNED IN 18, 37, 55, 64, OR 91 WORD INTEGER ARRAY
IGDS VARY DEPENDING ON GRID REPRESENTATION TYPE.
LAT/LON GRID:
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6)
IGDS( 4) = NO. OF POINTS ALONG A LATITUDE
IGDS( 5) = NO. OF POINTS ALONG A LONGITUDE MERIDIAN
IGDS( 6) = LATITUDE OF ORIGIN (SOUTH - IVE)
IGDS( 7) = LONGITUDE OF ORIGIN (WEST -IVE)
IGDS( 8) = RESOLUTION FLAG (CODE TABLE 7)
IGDS( 9) = LATITUDE OF EXTREME POINT (SOUTH - IVE)
IGDS(10) = LONGITUDE OF EXTREME POINT (WEST - IVE)
IGDS(11) = LATITUDE INCREMENT
IGDS(12) = LONGITUDE INCREMENT
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = ... THROUGH ...
IGDS(18) = ... NOT USED FOR THIS GRID
IGDS(19) - IGDS(91) FOR GRIDS 37-44, NUMBER OF POINTS
IN EACH OF 73 ROWS.
GAUSSIAN GRID:
IGDS( 1) = ... THROUGH ...
IGDS(10) = ... SAME AS LAT/LON GRID
IGDS(11) = NUMBER OF LATITUDE LINES BETWEEN A POLE
AND THE EQUATOR
IGDS(12) = LONGITUDE INCREMENT
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = ... THROUGH ...
IGDS(18) = ... NOT USED FOR THIS GRID
SPHERICAL HARMONICS:
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6)
IGDS( 4) = J - PENTAGONAL RESOLUTION PARAMETER
IGDS( 5) = K - PENTAGONAL RESOLUTION PARAMETER
IGDS( 6) = M - PENTAGONAL RESOLUTION PARAMETER
IGDS( 7) = REPRESENTATION TYPE (CODE TABLE 9)
IGDS( 8) = REPRESENTATION MODE (CODE TABLE 10)
IGDS( 9) = ... THROUGH ...
IGDS(18) = ... NOT USED FOR THIS GRID
POLAR STEREOGRAPHIC:
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6)
IGDS( 4) = NO. OF POINTS ALONG X-AXIS
IGDS( 5) = NO. OF POINTS ALONG Y-AXIS
IGDS( 6) = LATITUDE OF ORIGIN (SOUTH -IVE)
IGDS( 7) = LONGITUTE OF ORIGIN (WEST -IVE)
IGDS( 8) = RESOLUTION FLAG (CODE TABLE 7)
IGDS( 9) = LONGITUDE OF MERIDIAN PARALLEL TO Y-AXIS
IGDS(10) = X-DIRECTION GRID LENGTH (INCREMENT)
IGDS(11) = Y-DIRECTION GRID LENGTH (INCREMENT)
IGDS(12) = PROJECTION CENTER FLAG (0=NORTH POLE ON PLANE,
1=SOUTH POLE ON PLANE,
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = ... THROUGH ...
IGDS(18) = .. NOT USED FOR THIS GRID
MERCATOR:
IGDS( 1) = ... THROUGH ...
IGDS(12) = ... SAME AS LAT/LON GRID
IGDS(13) = LATITUDE AT WHICH PROJECTION CYLINDER
INTERSECTS EARTH
IGDS(14) = SCANNING MODE FLAGS
IGDS(15) = ... THROUGH ...
IGDS(18) = .. NOT USED FOR THIS GRID
LAMBERT CONFORMAL:
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6)
IGDS( 4) = NO. OF POINTS ALONG X-AXIS
IGDS( 5) = NO. OF POINTS ALONG Y-AXIS
IGDS( 6) = LATITUDE OF ORIGIN (SOUTH -IVE)
IGDS( 7) = LONGITUTE OF ORIGIN (WEST -IVE)
IGDS( 8) = RESOLUTION FLAG (CODE TABLE 7)
IGDS( 9) = LONGITUDE OF MERIDIAN PARALLEL TO Y-AXIS
IGDS(10) = X-DIRECTION GRID LENGTH (INCREMENT)
IGDS(11) = Y-DIRECTION GRID LENGTH (INCREMENT)
IGDS(12) = PROJECTION CENTER FLAG (0=NORTH POLE ON PLANE,
1=SOUTH POLE ON PLANE,
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = NOT USED
IGDS(15) = FIRST LATITUDE FROM THE POLE AT WHICH THE
SECANT CONE CUTS THE SPERICAL EARTH
IGDS(16) = SECOND LATITUDE ...
IGDS(17) = LATITUDE OF SOUTH POLE (MILLIDEGREES)
IGDS(18) = LONGITUDE OF SOUTH POLE (MILLIDEGREES)
ARAKAWA SEMI-STAGGERED E-GRID ON ROTATED LAT/LON GRID
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6) [201]
IGDS( 4) = NI - TOTAL NUMBER OF ACTUAL DATA POINTS
INCLUDED ON GRID
IGDS( 5) = NJ - DUMMY SECOND DIMENSION; SET=1
IGDS( 6) = LA1 - LATITUDE OF FIRST GRID POINT
IGDS( 7) = LO1 - LONGITUDE OF FIRST GRID POINT
IGDS( 8) = RESOLUTION AND COMPONENT FLAG (CODE TABLE 7)
IGDS( 9) = LA2 - NUMBER OF MASS POINTS ALONG
SOUTHERNMOST ROW OF GRID
IGDS(10) = LO2 - NUMBER OF ROWS IN EACH COLUMN
IGDS(11) = DI - LONGITUDINAL DIRECTION INCREMENT
IGDS(12) = DJ - LATITUDINAL DIRECTION INCREMENT
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = ... THROUGH ...
IGDS(18) = ... NOT USED FOR THIS GRID (SET TO ZERO)
ARAKAWA FILLED E-GRID ON ROTATED LAT/LON GRID
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6) [202]
IGDS( 4) = NI - TOTAL NUMBER OF ACTUAL DATA POINTS
INCLUDED ON GRID
IGDS( 5) = NJ - DUMMY SECOND DIMENTION; SET=1
IGDS( 6) = LA1 - LATITUDE LATITUDE OF FIRST GRID POINT
IGDS( 7) = LO1 - LONGITUDE OF FIRST GRID POINT
IGDS( 8) = RESOLUTION AND COMPONENT FLAG (CODE TABLE 7)
IGDS( 9) = LA2 - NUMBER OF (ZONAL) POINTS IN EACH ROW
IGDS(10) = LO2 - NUMBER OF (MERIDIONAL) POINTS IN EACH
COLUMN
IGDS(11) = DI - LONGITUDINAL DIRECTION INCREMENT
IGDS(12) = DJ - LATITUDINAL DIRECTION INCREMENT
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = ... THROUGH ...
IGDS(18) = ... NOT USED FOR THIS GRID
ARAKAWA STAGGERED E-GRID ON ROTATED LAT/LON GRID
IGDS( 1) = NUMBER OF VERTICAL COORDINATES
IGDS( 2) = PV, PL OR 255
IGDS( 3) = DATA REPRESENTATION TYPE (CODE TABLE 6) [203]
IGDS( 4) = NI - NUMBER OF DATA POINTS IN EACH ROW
IGDS( 5) = NJ - NUMBER OF ROWS
IGDS( 6) = LA1 - LATITUDE OF FIRST GRID POINT
IGDS( 7) = LO1 - LONGITUDE OF FIRST GRID POINT
IGDS( 8) = RESOLUTION AND COMPONENT FLAG (CODE TABLE 7)
IGDS( 9) = LA2 - CENTRAL LATITUDE
IGDS(10) = LO2 - CENTRAL LONGTITUDE
IGDS(11) = DI - LONGITUDINAL DIRECTION INCREMENT
IGDS(12) = DJ - LATITUDINAL DIRECTION INCREMENT
IGDS(13) = SCANNING MODE FLAGS (CODE TABLE 8)
IGDS(14) = ... THROUGH ...
IGDS(18) = ... NOT USED FOR THIS GRID
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.
W3FI73
The W3FI73 routine constructs a grib bit map section (BMS).
USAGE: CALL W3FI73 (IBFLAG, IBMAP, IBLEN, BMS, LENBMS, IER)
Input argument list:
IBFLAG - 0, IF BIT MAP SUPPLIED BY USER
- #, NUMBER OF PREDEFINED CENTER BIT MAP
IBMAP - INTEGER ARRAY CONTAINING USER BIT MAP
IBLEN - LENGTH OF BIT MAP
Output argument list:
BMS - COMPLETED GRIB BIT MAP SECTION
LENBMS - LENGTH OF BIT MAP SECTION
IER - 0 NORMAL EXIT, 8 = IBMAP VALUES ARE ALL ZERO
REMARKS:
Subprogram can be called from a multiprocessing environment.
W3FI74
The W3FI74 routine constructs a grib grid definition section (GDS).
USAGE: CALL W3FI74 (IGDS, ICOMP, GDS, LENGDS, NPTS, IGERR)
Input argument list:
IGDS - INTEGER ARRAY SUPPLIED BY W3FI71
ICOMP - TABLE 7- RESOLUTION & COMPONENT FLAG (BIT 5)
FOR GDS(17) WIND COMPONENTS
Output argument list:
GDS - COMPLETED GRIB GRID DEFINITION SECTION
LENGDS - LENGTH OF GDS
NPTS - NUMBER OF POINTS IN GRID
IGERR - 1, GRID REPRESENTATION TYPE NOT VALID
REMARKS:
Subprogram can be called from a multiprocessing environment.
W3FI75
The W3FI75 routine packs a grib field and forms octets (1-11)
of the binary data section (BDS).
USAGE: CALL W3FI75 (IBITL,ITYPE,ITOSS,FLD,IFLD,IBMAP,IBDSFL,
NPTS,BDS11,IPFLD,PFLD,LEN,LENBDS,IBERR,PDS,IGDS)
Input argument list:
IBITL - 0, COMPUTER COMPUTES PACKING LENGTH FROM POWER
OF 2 THAT BEST FITS THE DATA.
8, 12, ETC. COMPUTER RESCALES DATA TO FIT INTO
SET NUMBER OF BITS.
ITYPE - 0 = IF INPUT DATA IS FLOATING POINT (FLD)
1 = IF INPUT DATA IS INTEGER (IFLD)
ITOSS - 0 = NO BIT MAP IS INCLUDED (DON'T TOSS DATA)
1 = TOSS NULL DATA ACCORDING TO IBMAP
FLD - REAL ARRAY OF DATA TO BE PACKED IF ITYPE=0
IFLD - INTEGER ARRAY TO BE PACKED IF ITYPE=1
IBMAP - BIT MAP SUPPLIED FROM USER
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) 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
(6) 0 = SINGLE DATUM AT EACH GRID POINT
1 = MATRIX OF VALUES AT EACH GRID POINT
(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
NPTS - NUMBER OF GRIDPOINTS IN ARRAY TO BE PACKED
IGDS - ARRAY OF GDS INFORMATION
Output argument list:
BDS11 - FIRST 11 OCTETS OF BDS
PFLD - PACKED GRIB FIELD
LEN - LENGTH OF PFLD
LENBDS - LENGTH OF BDS
IBERR - 1, ERROR CONVERTING IEEE F.P. NUMBER TO IBM370 F.P.
REMARKS:
Subprogram can be called from a multiprocessing environment.
W3FI76
The W3FI76 routine converts to IBM370 floating point number.
USAGE: CALL W3FI76 (FVAL, KEXP, KMANT, NBITS)
Input argument list:
PVAL - FLOATING POINT NUMBER TO BE CONVERTED
KBITS - NUMBER OF BITS IN COMPUTER WORD (32 OR 64)
Output argument list:
KEXP - 8 BIT SIGNED EXPONENT
KMANT - 24 BIT MANTISSA (FRACTION)
REMARKS:
Subprogram can be called from a multiprocessing environment.
W3FI78
The W3FI78 routine decodes a bufr message and places information
extracted from the bufr message into selected arrays
USAGE: CALL W3FI78(IPTR,IDENT,MSGA,ISTACK,MSTACK,KDATA,KNR,INDEX,
MAXR,MAXD,IUNITB,IUNITD)
Input argument list:
MSGA - ARRAY CONTAINING SUPPOSED BUFR MESSAGE
SIZE IS DETERMINED BY USER, CAN BE GREATER
THAN 10000 BYTES.
MAXR - MAXIMUM NUMBER OF REPORTS/SUBSETS THAT MAY BE
CONTAINED IN A BUFR MESSAGE
MAXD - MAXIMUM NUMBER OF DESCRIPTOR COMBINATIONS THAT
MAY BE PROCESSED; UPPER AIR DATA AND SOME SATELLITE
DATA REQUIRE A VALUE FOR MAXD OF 1600, BUT FOR MOST
OTHER DATA A VALUE FOR MAXD OF 500 WILL SUFFICE
IUNITB - UNIT NUMBER OF DATA SET HOLDING TABLE B
IUNITD - UNIT NUMBER OF DATA SET HOLDING TABLE D
Output argument list: (INCLUDING WORK ARRAYS)
ISTACK - ORIGINAL ARRAY OF DESCRIPTORS EXTRACTED FROM
SOURCE BUFR MESSAGE.
MSTACK(A,B)-LEVEL B - DESCRIPTOR NUMBER (LIMITED TO VALUE OF
INPUT ARGUMENT MAXD)
LEVEL A = 1 DESCRIPTOR
= 2 10**N SCALING TO RETURN TO ORIGINAL VALUE
IPTR - UTILITY ARRAY
IPTR( 1)- ERROR RETURN
IPTR( 2)- BYTE COUNT SECTION 1
IPTR( 3)- POINTER TO START OF SECTION 1
IPTR( 4)- BYTE COUNT SECTION 2
IPTR( 5)- POINTER TO START OF SECTION 2
IPTR( 6)- BYTE COUNT SECTION 3
IPTR( 7)- POINTER TO START OF SECTION 3
IPTR( 8)- BYTE COUNT SECTION 4
IPTR( 9)- POINTER TO START OF SECTION 4
IPTR(10)- START OF REQUESTED SUBSET, RESERVED FOR DAR
IPTR(11)- CURRENT DESCRIPTOR PTR IN IWORK
IPTR(12)- LAST DESCRIPTOR POS IN IWORK
IPTR(13)- LAST DESCRIPTOR POS IN ISTACK
IPTR(14)- NUMBER OF TABLE B ENTRIES
IPTR(15)- REQUESTED SUBSET POINTER, RESERVED FOR DAR
IPTR(16)- INDICATOR FOR EXISTANCE OF SECTION 2
IPTR(17)- NUMBER OF REPORTS PROCESSED
IPTR(18)- ASCII/TEXT EVENT
IPTR(19)- POINTER TO START OF BUFR MESSAGE
IPTR(20)- NUMBER OF LINES FROM TABLE D
IPTR(21)- TABLE B SWITCH
IPTR(22)- TABLE D SWITCH
IPTR(23)- CODE/FLAG TABLE SWITCH
IPTR(24)- ADITIONAL WORDS ADDED BY TEXT INFO
IPTR(25)- CURRENT BIT NUMBER
IPTR(26)- DATA WIDTH CHANGE
IPTR(27)- DATA SCALE CHANGE
IPTR(28)- DATA REFERENCE VALUE CHANGE
IPTR(29)- ADD DATA ASSOCIATED FIELD
IPTR(30)- SIGNIFY CHARACTERS
IPTR(31)- NUMBER OF EXPANDED DESCRIPTORS IN MSTACK
IPTR(32)- CURRENT DESCRIPTOR SEGMENT F
IPTR(33)- CURRENT DESCRIPTOR SEGMENT X
IPTR(34)- CURRENT DESCRIPTOR SEGMENT Y
IPTR(35)- UNUSED
IPTR(36)- NEXT DESCRIPTOR MAY BE UNDECIPHERABLE
IPTR(37)- UNUSED
IPTR(38)- UNUSED
IPTR(39)- DELAYED REPLICATION FLAG
0 - NO DELAYED REPLICATION
1 - MESSAGE CONTAINS DELAYED REPLICATION
IPTR(40)- NUMBER OF CHARACTERS IN TEXT FOR CURR DESCRIPTOR
IDENT - ARRAY CONTAINS MESSAGE INFORMATION EXTRACTED FROM
BUFR MESSAGE -
IDENT( 1)-EDITION NUMBER (BYTE 4, SECTION 1)
IDENT( 2)-ORIGINATING CENTER (BYTES 5-6, SECTION 1)
IDENT( 3)-UPDATE SEQUENCE (BYTE 7, SECTION 1)
IDENT( 4)-OPTIONAL SECTION (BYTE 8, SECTION 1)
IDENT( 5)-BUFR MESSAGE TYPE (BYTE 9, SECTION 1)
0 = SURFACE (LAND)
1 = SURFACE (SHIP)
2 = VERTICAL SOUNDINGS OTHER THAN SATELLITE
3 = VERTICAL SOUNDINGS (SATELLITE)
4 = SNGL LVL UPPER-AIR OTHER THAN SATELLITE
5 = SNGL LVL UPPER-AIR (SATELLITE)
6 = RADAR
IDENT( 6)-BUFR MSG SUB-TYPE (BYTE 10, SECTION 1)
TYPE SBTYP
2 7 = PROFILER
IDENT( 7)- (BYTES 11-12, SECTION 1)
IDENT( 8)-YEAR OF CENTURY (BYTE 13, SECTION 1)
IDENT( 9)-MONTH OF YEAR (BYTE 14, SECTION 1)
IDENT(10)-DAY OF MONTH (BYTE 15, SECTION 1)
IDENT(11)-HOUR OF DAY (BYTE 16, SECTION 1)
IDENT(12)-MINUTE OF HOUR (BYTE 17, SECTION 1)
IDENT(13)-RSVD BY ADP CENTERS(BYTE 18, SECTION 1)
IDENT(14)-NR OF DATA SUBSETS (BYTE 5-6, SECTION 3)
IDENT(15)-OBSERVED FLAG (BYTE 7, BIT 1, SECTION 3)
IDENT(16)-COMPRESSION FLAG (BYTE 7, BIT 2, SECTION 3)
IDENT(17)-MASTER TABLE NUMBER(BYTE 4, SECTION 1, ED 2 OR GTR)
KDATA - ARRAY CONTAINING DECODED REPORTS FROM BUFR MESSAGE.
KDATA(REPORT NUMBER,PARAMETER NUMBER)
(REPORT NUMBER LIMITED TO VALUE OF INPUT ARGUMENT
MAXR AND PARAMETER NUMBER LIMITED TO VALUE OF INPUT
ARGUMENT MAXD)
ARRAYS CONTAINING DATA FROM TABLE B
ANAME - DESCRIPTOR NAME
AUNITS - UNITS FOR DESCRIPTOR
MSCALE - SCALE FOR VALUE OF DESCRIPTOR
MREF - REFERENCE VALUE FOR DESCRIPTOR
MWIDTH - BIT WIDTH FOR VALUE OF DESCRIPTOR
INDEX - POINTER TO AVAILABLE SUBSET
REMARKS:
Error returns:
IPTR(1) = 1 'BUFR' NOT FOUND IN FIRST 125 CHARACTERS
= 2 '7777' NOT FOUND IN LOCATION DETERMINED BY
BY USING COUNTS FOUND IN EACH SECTION. ONE OR
MORE SECTIONS HAVE AN ERRONEOUS BYTE COUNT OR
CHARACTERS '7777' ARE NOT IN TEST MESSAGE.
= 3 MESSAGE CONTAINS A DESCRIPTOR WITH F=0 THAT DOES
NOT EXIST IN TABLE B.
= 4 MESSAGE CONTAINS A DESCRIPTOR WITH F=3 THAT DOES
NOT EXIST IN TABLE D.
= 5 MESSAGE CONTAINS A DESCRIPTOR WITH F=2 WITH THE
VALUE OF X OUTSIDE THE RANGE 1-5.
= 6 DESCRIPTOR ELEMENT INDICATED TO HAVE A FLAG VALUE
DOES NOT HAVE AN ENTRY IN THE FLAG TABLE.
(TO BE ACTIVATED)
= 7 DESCRIPTOR INDICATED TO HAVE A CODE VALUE DOES
NOT HAVE AN ENTRY IN THE CODE TABLE.
(TO BE ACTIVATED)
= 8 ERROR READING TABLE D
= 9 ERROR READING TABLE B
= 10 ERROR READING CODE/FLAG TABLE
= 11 DESCRIPTOR 2 04 004 NOT FOLLOWED BY 0 31 021
= 12 DATA DESCRIPTOR OPERATOR QUALIFIER DOES NOT FOLLOW
DELAYED REPLICATION DESCRIPTOR.
= 13 BIT WIDTH ON ASCII CHARACTERS NOT A MULTIPLE OF 8
= 14 SUBSETS = 0, NO CONTENT BULLETIN
= 20 EXCEEDED COUNT FOR DELAYED REPLICATION PASS
= 21 EXCEEDED COUNT FOR NON-DELAYED REPLICATION PASS
= 27 NON ZERO LOWEST ON TEXT DATA
= 28 NBINC NOT NR OF CHARACTERS
= 29 TABLE B APPEARS TO BE DAMAGED
= 99 NO MORE SUBSETS (REPORTS) AVAILABLE IN CURRENT
BUFR MESAGE
= 400 NUMBER OF SUBSETS EXCEEDS THE VALUE OF INPUT
ARGUMENT MAXR; MUST INCREASE MAXR TO VALUE OF
IDENT(14) IN CALLING PROGRAM
= 401 NUMBER OF PARAMETERS (AND ASSOCIATED FIELDS)
EXCEEDS LIMITS OF THIS PROGRAM.
= 500 VALUE FOR NBINC HAS BEEN FOUND THAT EXCEEDS
STANDARD WIDTH PLUS ANY BIT WIDTH CHANGE.
CHECK ALL BIT WIDTHS UP TO POINT OF ERROR.
= 501 CORRECTED WIDTH FOR DESCRIPTOR IS 0 OR LESS
ON THE INITIAL CALL TO W3FI78 WITH A BUFR MESSAGE THE ARGUMENT
INDEX MUST BE SET TO ZERO (INDEX = 0). ON THE RETURN FROM W3FI78
'INDEX' WILL BE SET TO THE NEXT AVAILABLE SUBSET/REPORT. WHEN
THERE ARE NO MORE SUBSETS AVAILABLE A 99 ERR RETURN WILL OCCUR.
IF THE ORIGINAL BUFR MESSAGE DOES NOT CONTAIN DELAYED REPLICATION
THE BUFR MESSAGE WILL BE COMPLETELY DECODED AND 'INDEX' WILL POINT
TO THE FIRST DECODED SUBSET. THE USERS WILL THEN HAVE THE OPTION
OF INDEXING THROUGH THE SUBSETS ON THEIR OWN OR BY RECALLING THIS
ROUTINE (WITHOUT RESETTING 'INDEX') TO HAVE THE ROUTINE DO THE
INDEXING.
IF THE ORIGINAL BUFR MESSAGE DOES CONTAIN DELAYED REPLICATION
ONE SUBSET/REPORT WILL BE DECODED AT A TIME AND PASSED BACK TO
THE USER. THIS IS NOT AN OPTION.
================================
TO USE THIS ROUTINE
--------------------------------
1. READ IN BUFR MESSAGE
2. SET INDEX = 0
3. CALL W3FI78( )
4. IF (IPTR(1).EQ.99) THEN
NO MORE SUBSETS
EITHER GO TO 1
OR TERMINATE IN NO MORE BUFR MESSAGES
END IF
5. IF (IPTR(1).NE.0) THEN
ERROR CONDITION
EITHER GO TO 1
OR TERMINATE IN NO MORE BUFR MESSAGES
END IF
6. THE VALUE OF INDEX INDICATES THE ACTIVE SUBSET SO
IF INTERESTED IN GENERATING AN IFOD MESSAGE
CALL W3FL05 ( )
ELSE
PROCESS DECODED INFORMATION AS REQUIRED
END IF
7. GO TO 3
THE ARRAYS TO CONTAIN THE OUTPUT INFORMATION ARE DEFINED
AS FOLLOWS:
KDATA(A,B) IS THE A DATA ENTRY (INTEGER VALUE)
WHERE A IS THE MAXIMUM NUMBER OF REPORTS/SUBSETS
THAT MAY BE CONTAINED IN THE BUFR MESSAGE (THIS
IS NOW SET TO "MAXR" WHICH IS PASSED AS AN INPUT
ARGUMENT TO W3FI78), AND WHERE B IS THE MAXIMUM
NUMBER OF DESCRIPTOR COMBINATIONS THAT MAY
BE PROCESSED (THIS IS NOW SET TO "MAXD" WHICH
IS ALSO PASSED AS AN INPUT ARGUMENT TO W3FI78;
UPPER AIR DATA AND SOME SATELLITE DATA REQUIRE
A VALUE FOR MAXD OF 1600, BUT FOR MOST OTHER
DATA A VALUE FOR MAXD OF 500 WILL SUFFICE)
MSTACK(1,B) CONTAINS THE DESCRIPTOR THAT MATCHES THE
DATA ENTRY (MAX. VALUE FOR B IS NOW "MAXD"
WHICH IS PASSED AS AN INPUT ARGUMENT TO W3FI78)
MSTACK(2,B) IS THE SCALE (POWER OF 10) TO BE APPLIED TO
THE DATA (MAX. VALUE FOR B IS NOW "MAXD"
WHICH IS PASSED AS AN INPUT ARGUMENT TO W3FI78)
W3FI82
The W3FI82 routine converts to array of second differences and
returns the original first value and the first
first-difference as separate values.
USAGE: CALL W3FI82 (IFLD,FVAL1,FDIFF1,NPTS)
Input argument list:
IFLD - INTEGER INPUT ARRAY
NPTS - NUMBER OF POINTS IN ARRAY
Output argument list:
IFLD - SECOND DIFFERENCED FIELD
FVAL1 - FLOATING POINT ORIGINAL FIRST VALUE
FDIFF1 - " " FIRST FIRST-DIFFERENCE
REMARKS:
Subprogram can be called from a multiprocessing environment.
W3FI83
The W3FI83 routine restores delta packed data to original values
restore from boustrephedonic alignment.
USAGE: CALL W3FI83(DATA,NPTS,FVAL1,FDIFF1,ISCAL2,
ISC10,KPDS,KGDS)
Input argument list:
DATA - SECOND ORDER DIFFERENCES
NPTS - NUMBER OF POINTS IN ARRAY
FVAL1 - ORIGINAL FIRST ENTRY IN ARRAY
FDIFF1 - ORIGINAL FIRST FIRST-DIFFERENCE
ISCAL2 - POWER-OF-TWO EXPONENT FOR UNSCALING
ISC10 - POWER-OF-TEN EXPONENT FOR UNSCALING
KPDS - ARRAY OF INFORMATION FOR PDS
KGDS - ARRAY OF INFORMATION FOR GDS
Output argument list:
DATA - EXPANDED ORIGINAL DATA VALUES
REMARKS:
Subprogram can be called from a multiprocessing environment.
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
W3FI88
The W3FI88 routine decodes a bufr message and places information
extracted from the bufr message into selected arrays
for the user.
USAGE: CALL W3FI88(IPTR,IDENT,MSGA,ISTACK,MSTACK,KDATA,KNR,INDEX,
LDATA,LSTACK,MAXR,MAXD,IUNITB,IUNITD)
Input argument list:
MSGA - ARRAY CONTAINING SUPPOSED BUFR MESSAGE
SIZE IS DETERMINED BY USER, CAN BE GREATER
THAN 15000 BYTES.
MAXR - MAXIMUM NUMBER OF REPORTS/SUBSETS THAT MAY BE
CONTAINED IN A BUFR MESSAGE
MAXD - MAXIMUM NUMBER OF DESCRIPTOR COMBINATIONS THAT
MAY BE PROCESSED; UPPER AIR DATA AND SOME SATELLITE
DATA REQUIRE A VALUE FOR MAXD OF 1700, BUT FOR MOST
OTHER DATA A VALUE FOR MAXD OF 500 WILL SUFFICE
IUNITB - UNIT NUMBER OF DATA SET HOLDING TABLE B, THIS IS THE
NUMBER OF A PAIR OF DATA SETS
IUNITB+1 - UNIT NUMBER FOR A DATASET TO CONTAIN TABLE B ENTRIES
FROM MASTER TABLE B AND TABLE B ENTRIES EXTRACTED
FROM TYPE 11 BUFR MESSAGES THAT WERE USED TO DECODE
CURRENT BUFR MESSAGES.
IUNITD - UNIT NUMBER OF DATA SET HOLDING TABLE D
Output argument list: (INCLUDING WORK ARRAYS)
ISTACK - ORIGINAL ARRAY OF DESCRIPTORS EXTRACTED FROM
SOURCE BUFR MESSAGE.
MSTACK(A,B)-LEVEL B - DESCRIPTOR NUMBER (LIMITED TO VALUE OF
INPUT ARGUMENT MAXD)
LEVEL A = 1 DESCRIPTOR
= 2 10**N SCALING TO RETURN TO ORIGINAL VALUE
IPTR - UTILITY ARRAY (SHOULD HAVE AT LAST 42 ENTRIES)
IPTR( 1)- ERROR RETURN
IPTR( 2)- BYTE COUNT SECTION 1
IPTR( 3)- POINTER TO START OF SECTION 1
IPTR( 4)- BYTE COUNT SECTION 2
IPTR( 5)- POINTER TO START OF SECTION 2
IPTR( 6)- BYTE COUNT SECTION 3
IPTR( 7)- POINTER TO START OF SECTION 3
IPTR( 8)- BYTE COUNT SECTION 4
IPTR( 9)- POINTER TO START OF SECTION 4
IPTR(10)- START OF REQUESTED SUBSET, RESERVED FOR DAR
IPTR(11)- CURRENT DESCRIPTOR PTR IN IWORK
IPTR(12)- LAST DESCRIPTOR POS IN IWORK
IPTR(13)- LAST DESCRIPTOR POS IN ISTACK
IPTR(14)- NUMBER OF MASTER TABLE B ENTRIES
IPTR(15)- REQUESTED SUBSET POINTER, RESERVED FOR DAR
IPTR(16)- INDICATOR FOR EXISTANCE OF SECTION 2
IPTR(17)- NUMBER OF REPORTS PROCESSED
IPTR(18)- ASCII/TEXT EVENT
IPTR(19)- POINTER TO START OF BUFR MESSAGE
IPTR(20)- NUMBER OF ENTRIES FROM TABLE D
IPTR(21)- NR TABLE B ENTRIES
IPTR(22)- NR TABLE B ENTRIES FROM CURRENT MESSAGE
IPTR(23)- CODE/FLAG TABLE SWITCH
IPTR(24)- ADITIONAL WORDS ADDED BY TEXT INFO
IPTR(25)- CURRENT BIT NUMBER
IPTR(26)- DATA WIDTH CHANGE - ADD TO TABLE B WIDTH
IPTR(27)- DATA SCALE CHANGE - MODIFIES TABLE B SCALE
IPTR(28)- DATA REFERENCE VALUE CHANGE - ?????????
IPTR(29)- ADD DATA ASSOCIATED FIELD
IPTR(30)- SIGNIFY CHARACTERS
IPTR(31)- NUMBER OF EXPANDED DESCRIPTORS IN MSTACK
IPTR(32)- CURRENT DESCRIPTOR SEGMENT F
IPTR(33)- CURRENT DESCRIPTOR SEGMENT X
IPTR(34)- CURRENT DESCRIPTOR SEGMENT Y
IPTR(35)- DATA/DESCRIPTOR REPLICATION IN PROGRESS
0 = NO
1 = YES
IPTR(36)- NEXT DESCRIPTOR MAY BE UNDECIPHERABLE
IPTR(37)- MACHINE TEXT TYPE FLAG
0 = EBCIDIC
1 = ASCII
IPTR(38)- DATA/DESCRIPTOR REPLICATION FLAG
0 - DOES NOT EXIST IN CURRENT MESSAGE
1 - EXISTS IN CURRENT MESSAGE
IPTR(39)- DELAYED REPLICATION FLAG
0 - NO DELAYED REPLICATION
1 - MESSAGE CONTAINS DELAYED REPLICATION
IPTR(40)- NUMBER OF CHARACTERS IN TEXT FOR CURR DESCRIPTOR
IPTR(41)- NUMBER OF ANCILLARY TABLE B ENTRIES
IPTR(42)- NUMBER OF ANCILLARY TABLE D ENTRIES
IPTR(43)- NUMBER OF ADDED TABLE B ENTRIES ENCOUNTERED WHILE
PROCESSING A BUFR MESSAGE. THESE ENTRIES ONLY
EXIST DURNG PROCESSING OF CURRENT BUFR MESSAGE
IPTR(44)- BITS PER WORD
IPTR(45)- BYTES PER WORD
IDENT - ARRAY CONTAINS MESSAGE INFORMATION EXTRACTED FROM
BUFR MESSAGE -
IDENT(1) -EDITION NUMBER (BYTE 4, SECTION 1)
IDENT(2) -ORIGINATING CENTER (BYTES 5-6, SECTION 1)
IDENT(3) -UPDATE SEQUENCE (BYTE 7, SECTION 1)
IDENT(4) -OPTIONAL SECTION (BYTE 8, SECTION 1)
IDENT(5) -BUFR MESSAGE TYPE (BYTE 9, SECTION 1)
0 = SURFACE DATA (LAND)
1 = SURFACE DATA (SHIP)
2 = VERTICAL SOUNDINGS (OTHER THAN SATELLITE)
3 = VERTICAL SOUNDINGS (SATELLITE)
4 = SINGLE LVL UPPER-AIR DATA(OTHER THAN SATELLITE)
5 = SINGLE LEVEL UPPER-AIR DATA (SATELLITE)
6 = RADAR DATA
7 = SYNOPTIC FEATURES
8 = PHYSICAL/CHEMICAL CONSTITUENTS
9 = DISPERSAL AND TRANSPORT
10 = RADIOLOGICAL DATA
11 = BUFR TABLES (COMPLETE, REPLACEMENT OR UPDATE)
12 = SURFACE DATA (SATELLITE)
21 = RADIANCES (SATELLITE MEASURED)
31 = OCEANOGRAPHIC DATA
IDENT(6) -BUFR MSG SUB-TYPE (BYTE 10, SECTION 1)
TYPE SBTYP
2 7 = PROFILER
IDENT(7) - (BYTES 11-12, SECTION 1)
IDENT(8) -YEAR OF CENTURY (BYTE 13, SECTION 1)
IDENT(9) -MONTH OF YEAR (BYTE 14, SECTION 1)
IDENT(10)-DAY OF MONTH (BYTE 15, SECTION 1)
IDENT(11)-HOUR OF DAY (BYTE 16, SECTION 1)
IDENT(12)-MINUTE OF HOUR (BYTE 17, SECTION 1)
IDENT(13)-RSVD BY ADP CENTERS(BYTE 18, SECTION 1)
IDENT(14)-NR OF DATA SUBSETS (BYTE 5-6, SECTION 3)
IDENT(15)-OBSERVED FLAG (BYTE 7, BIT 1, SECTION 3)
IDENT(16)-COMPRESSION FLAG (BYTE 7, BIT 2, SECTION 3)
IDENT(17)-MASTER TABLE NUMBER(BYTE 4, SECTION 1, ED 2 OR GTR)
KDATA - ARRAY CONTAINING DECODED REPORTS FROM BUFR MESSAGE.
KDATA(REPORT NUMBER,PARAMETER NUMBER)
(REPORT NUMBER LIMITED TO VALUE OF INPUT ARGUMENT
MAXR AND PARAMETER NUMBER LIMITED TO VALUE OF INPUT
ARGUMENT MAXD)
INDEX - POINTER TO AVAILABLE SUBSET
===========================================================
ARRAYS CONTAINING DATA FROM TABLE B
NEW - BASE ARRAYS CONTAINING DATA FROM TABLE B
KFXY1 - DECIMAL DESCRIPTOR VALUE OF F X Y VALUES
ANAME1 - DESCRIPTOR NAME
AUNIT1 - UNITS FOR DESCRIPTOR
ISCAL1 - SCALE FOR VALUE OF DESCRIPTOR
IRFVL1 - REFERENCE VALUE FOR DESCRIPTOR
IWIDE1 - BIT WIDTH FOR VALUE OF DESCRIPTOR
===========================================================
NEW - ANCILLARY ARRAYS CONTAINING DATA FROM TABLE B
CONTAINING TABLE B ENTRIES EXTRACTED
FROM TYPE 11 BUFR MESSAGES
KFXY2 - DECIMAL DESCRIPTOR VALUE OF F X Y VALUES
ANAME2 - DESCRIPTOR NAME
AUNIT2 - UNITS FOR DESCRIPTOR
ISCAL2 - SCALE FOR VALUE OF DESCRIPTOR
IRFVL2 - REFERENCE VALUE FOR DESCRIPTOR
IWIDE2 - BIT WIDTH FOR VALUE OF DESCRIPTOR
===========================================================
NEW - ADDED ARRAYS CONTAINING DATA FROM TABLE B
CONTAINING TABLE B ENTRIES EXTRACTED
FROM NON-TYPE 11 BUFR MESSAGES
THESE EXIST FOR THE LIFE OF CURRENT BUFR MESSAGE
KFXY3 - DECIMAL DESCRIPTOR VALUE OF F X Y VALUES
ANAME3 - DESCRIPTOR NAME
AUNIT3 - UNITS FOR DESCRIPTOR
ISCAL3 - SCALE FOR VALUE OF DESCRIPTOR
IRFVL3 - REFERENCE VALUE FOR DESCRIPTOR
IWIDE3 - BIT WIDTH FOR VALUE OF DESCRIPTOR
===========================================================
REMARKS:
Error returns:
IPTR(1) = 1 'BUFR' NOT FOUND IN FIRST 125 CHARACTERS
= 2 '7777' NOT FOUND IN LOCATION DETERMINED BY
BY USING COUNTS FOUND IN EACH SECTION. ONE OR
MORE SECTIONS HAVE AN ERRONEOUS BYTE COUNT OR
CHARACTERS '7777' ARE NOT IN TEST MESSAGE.
= 3 MESSAGE CONTAINS A DESCRIPTOR WITH F=0 THAT DOES
NOT EXIST IN TABLE B.
= 4 MESSAGE CONTAINS A DESCRIPTOR WITH F=3 THAT DOES
NOT EXIST IN TABLE D.
= 5 MESSAGE CONTAINS A DESCRIPTOR WITH F=2 WITH THE
VALUE OF X OUTSIDE THE RANGE 1-6.
= 6 DESCRIPTOR ELEMENT INDICATED TO HAVE A FLAG VALUE
DOES NOT HAVE AN ENTRY IN THE FLAG TABLE.
(TO BE ACTIVATED)
= 7 DESCRIPTOR INDICATED TO HAVE A CODE VALUE DOES
NOT HAVE AN ENTRY IN THE CODE TABLE.
(TO BE ACTIVATED)
= 8 ERROR READING TABLE D
= 9 ERROR READING TABLE B
= 10 ERROR READING CODE/FLAG TABLE
= 11 DESCRIPTOR 2 04 004 NOT FOLLOWED BY 0 31 021
= 12 DATA DESCRIPTOR OPERATOR QUALIFIER DOES NOT FOLLOW
DELAYED REPLICATION DESCRIPTOR.
= 13 BIT WIDTH ON ASCII CHARACTERS NOT A MULTIPLE OF 8
= 14 SUBSETS = 0, NO CONTENT BULLETIN
= 20 EXCEEDED COUNT FOR DELAYED REPLICATION PASS
= 21 EXCEEDED COUNT FOR NON-DELAYED REPLICATION PASS
= 22 EXCEEDED COMBINED BIT WIDTH, BIT WIDTH > 32
= 23 NO ELEMENT DESCRIPTORS FOLLOWING 2 03 YYY
= 27 NON ZERO LOWEST ON TEXT DATA
= 28 NBINC NOT NR OF CHARACTERS
= 29 TABLE B APPEARS TO BE DAMAGED
= 30 TABLE D ENTRY WITH MORE THAN 18 IN SEQUENCE
BEING ENTERED FROM TYPE 11 MESSAGE
= 99 NO MORE SUBSETS (REPORTS) AVAILABLE IN CURRENT
BUFR MESAGE
= 400 NUMBER OF SUBSETS EXCEEDS THE VALUE OF INPUT
ARGUMENT MAXR; MUST INCREASE MAXR TO VALUE OF
IDENT(14) IN CALLING PROGRAM
= 401 NUMBER OF PARAMETERS (AND ASSOCIATED FIELDS)
EXCEEDS LIMITS OF THIS PROGRAM.
= 500 VALUE FOR NBINC HAS BEEN FOUND THAT EXCEEDS
STANDARD WIDTH PLUS ANY BIT WIDTH CHANGE.
CHECK ALL BIT WIDTHS UP TO POINT OF ERROR.
= 501 CORRECTED WIDTH FOR DESCRIPTOR IS 0 OR LESS
= 888 NON-NUMERIC CHARACTER IN CONVERSION REQUEST
= 890 CLASS 0 ELEMENT DESCRIPTOR W/WIDTH OF 0
ON THE INITIAL CALL TO W3FI88 WITH A BUFR MESSAGE THE ARGUMENT
INDEX MUST BE SET TO ZERO (INDEX = 0). ON THE RETURN FROM W3FI88
'INDEX' WILL BE SET TO THE NEXT AVAILABLE SUBSET/REPORT. WHEN
THERE ARE NO MORE SUBSETS AVAILABLE A 99 ERR RETURN WILL OCCUR.
IF THE ORIGINAL BUFR MESSAGE DOES NOT CONTAIN DELAYED REPLICATION
THE BUFR MESSAGE WILL BE COMPLETELY DECODED AND 'INDEX' WILL POINT
TO THE FIRST DECODED SUBSET. THE USERS WILL THEN HAVE THE OPTION
OF INDEXING THROUGH THE SUBSETS ON THEIR OWN OR BY RECALLING THIS
ROUTINE (WITHOUT RESETTING 'INDEX') TO HAVE THE ROUTINE DO THE
INDEXING.
IF THE ORIGINAL BUFR MESSAGE DOES CONTAIN DELAYED REPLICATION
ONE SUBSET/REPORT WILL BE DECODED AT A TIME AND PASSED BACK TO
THE USER. THIS IS NOT AN OPTION.
=============================================
TO USE THIS ROUTINE
=============================================
THE ARRAYS TO CONTAIN THE OUTPUT INFORMATION ARE DEFINED
AS FOLLOWS:
KDATA(A,B) IS THE A DATA ENTRY (INTEGER VALUE)
WHERE A IS THE MAXIMUM NUMBER OF REPORTS/SUBSETS
THAT MAY BE CONTAINED IN THE BUFR MESSAGE (THIS
IS NOW SET TO "MAXR" WHICH IS PASSED AS AN INPUT
ARGUMENT TO W3FI88), AND WHERE B IS THE MAXIMUM
NUMBER OF DESCRIPTOR COMBINATIONS THAT MAY
BE PROCESSED (THIS IS NOW SET TO "MAXD" WHICH
IS ALSO PASSED AS AN INPUT ARGUMENT TO W3FI88;
UPPER AIR DATA AND SOME SATELLITE DATA REQUIRE
A VALUE FOR MAXD OF 1700, BUT FOR MOST OTHER
DATA A VALUE FOR MAXD OF 500 WILL SUFFICE)
MSTACK(1,B) CONTAINS THE DESCRIPTOR THAT MATCHES THE
DATA ENTRY (MAX. VALUE FOR B IS NOW "MAXD"
WHICH IS PASSED AS AN INPUT ARGUMENT TO W3FI88)
MSTACK(2,B) IS THE SCALE (POWER OF 10) TO BE APPLIED TO
THE DATA (MAX. VALUE FOR B IS NOW "MAXD"
WHICH IS PASSED AS AN INPUT ARGUMENT TO W3FI88)
W3FI92
The W3FI92 routine builds 80 character queue descriptor using
information supplied by user, placing the completed
queue descriptor in the location specified by the user.
USAGE: CALL W3FI92 (LOC,TTAAII,KARY,KWBX,IERR)
Input argument list:
TTAAII - FIRST 6 CHARACTERS OF WMO HEADER
KARY - INTEGER ARRAY CONTAINING USER INFORMATION
(1) = DAY OF MONTH
(2) = HOUR OF DAY
(3) = HOUR * 100 + MINUTE
(4) = CATALOG NUMBER
(5) = NUMBER OF 80 BYTE INCREMENTS
(6) = NUMBER OF BYTES IN LAST INCREMENT
(7) = TOTAL SIZE OF MESSAGE
WMO HEADER + BODY OF MESSAGE IN BYTES
(NOT INCLUDING QUEUE DESCRIPTOR)
KWBX - = 4 CHARACTERS, REPRESENTING TH FCST MODEL
THAT THE BULLETIN WAS DERIVED FROM.
Output argument list: (INCLUDING WORK ARRAYS)
LOC - LOCATION TO RECEIVE QUEUE DESCRIPTOR
KARY - SEE INPUT ARGUMENT LIST
IERR - ERROR RETURN
REMARKS:
If total size is entered (kary(7)) then kary(5) and
kary(6) will be calculated.
If kary(5) and kary(6) are provided then kary(7) will
be ignored.
W3FM07
The W3FM07 routine smooths data on a rectangular grid using a
nine-point smoothing operator.
USAGE: CALL W3FM07 (FIN, FOUT, CWORK, GAMMA, NCOL, NROW)
Input argument list:
FIN - REAL SIZE(NCOL*NROW) ARRAY OF DATA TO BE SMOOTHED
CWORK - REAL SIZE(2*NCOL*(NROW+2)) WORK ARRAY
GAMMA - COMPLEX SMOOTHING PARAMETER. THE IMAGINARY PART MUST
BE POSITIVE.
NCOL - INTEGER NUMBER OF COLUMNS IN THE GRID
NROW - INTEGER NUMBER OF ROWS IN THE GRID
Output argument list:
FOUT - REAL SIZE(NCOL*NROW) ARRAY OF SMOOTHED DATA. MAY
BE THE SAME ARRAY AS 'FIN' OR OVERLAP IT IN ANY
FASHION.
W3FM08
The W3FM08 routine nine point smoother/desmoother. Smoothers
pass uses an equivalent linear smoother with stencil
(.25 .5 .25) and the desmoother uses with
stenciL (-.25 1.5 -.25).
USAGE: CALL W3FM08 (A,Z,LI,LJ)
Input argument list:
A - REAL SIZE (LI,LJ) ARRAY TO HOLD FIELD TO BE SMOOTHED
Z - REAL SIZE (LI,LJ) WORK AREA
LI - INTEGER NUMBER OF COLUMNS
LJ - INTEGER NUMBER OF ROWS
Output argument list:
A - ARRAY HOLDING SMOOTHED FIELD
W3FP04
The W3FP04 routine prints array of data points at their
approximate latitude/longitude positions on a
polar stereographic projection.
USAGE: CALL W3FP04(IFLD,ALAT,ALON,TITLE,IDIM,CMIL,CMIR,CMJB,CMJT,
INUM,XFAC,IERR)
Input variables:
IFLD REAL OR INTEGER FULLWORD ARRAY OF DATA POINTS
ALAT REAL ARRAY OF LATITUDE POSITIONS (>0 FOR NH,
<0 FOR SH) FOR THE DATA TO BE PLOTTED
ALON REAL ARRAY OF LONGITUDES (WEST OF GREENWICH)
TITLE INTEGER SIZE 10 ALPHANUMERIC ARRAY OF
CHARACTERS FOR TITLE TO BE WRITTEN ON PRINTOUT
IDIM INTEGER NUMBER OF DATA VALUES TO PLOT (SIZE OF
ARRAYS IFLD, ALAT AND ALON)
CMIL REAL LEFT SIDE OF GRID - MINIMUM COARSE MESH
I COORDINATE (MINIMUM VALUE OF 1.0)
CMIR REAL RIGHT SIDE OF GRID - MAXIMUM COARSE MESH
I COORDINATE (MAXIMUM VALUE OF 65.0)
CMJB REAL BOTTOM OF GRID - MINIMUM COARSE MESH
J COORDINATE (MINIMUM VALUE OF 1.0)
CMJT REAL TOP OF GRID - MAXIMUM COARSE MESH J
COORDINATE (MAXIMUM VALUE OF 65.0)
INUM INTEGER THREE DIGIT NUMBER FOR THE FOLLOWING:
HUNDREDS DIGIT = TYPE OF DATA
1 = FIXED POINT
2 = FLOATING POINT
3 = ALPHANUMERIC
TENS DIGIT = HEMISPHERIC REFERENCE
0 = NORTHERN HEMISPHERE
1 = SOUTHERN HEMISPHERE
UNITS DIGIT = NUMBER OF CHARACTERS TO PLOT
MINIMUM = 1 CHARACTER
MAXIMUM = 4 CHARACTERS
XFAC REAL MAP SCALE FACTOR (DESIRED MAP SCALE = XFAC
* 1:30,000,000 (STANDARD NMC 65X65 GRID SCALE))
Output variables:
TAPE6 PRINTED MAP WHEN EXECUTION IS SUCCESSFUL
IERR INTEGER RETURN CODE
REMARKS:
BECAUSE THIS CODE COULD PRODUCE CONSIDERABLE OUTPUT
THE SUBSET OF THE NMC 65X65 GRID WHICH CAN BE PRINTED IS A
FUNCTION OF THE MAP SCALE FACTOR, E.G. FOR XFAC=5 THE MAXIMUM
RANGE OF I AND J IS 27.0, FOR XFAC=2 THE RANGE IS 64.0.
W3FP05
The W3FP05 routine prints a two-dimensional grid of any shape
with contouring.
USAGE: CALL W3FP05 (RDATA,KTBL,CNST,TITLE,KRECT,KCONTR,LINEV,IWIDTH)
Input variables:
RDATA REAL ARRAY OF GRID DATA TO BE PRINTED.
KTBL INTEGER ARRAY WITH SHAPE OF ARRAY.
CNST REAL ARRAY OF FOUR ELEMENTS, USED IN
SCALING FOR PRINTING AND CONTOURING.
TITLE IS A ARRAY OF 132 CHARACTERS OR LESS OF
HOLLERITH DATA, 1ST CHAR. MUST BE BLANK.
PRINTED AT BOTTOM OF THE MAP.
KRECT 1 IF GRID IS RECTANGULAR, 0 OTHERWISE.
KCONTR 1 FOR CONTOURING , 0 OTHERWISE.
LINEV 0 IS FOR 6 LINES PER VERTICAL INCH,
NON-ZERO 8 LINES PER VERTICAL INCH.
IWIDTH NUMBER OF CHARACTERS IN PRINT LINE,
132 IS STANDARD PRINTER.
Output variables:
TAPE6 MAPS ON STANDARD FORTRAN PRINT FILE
REMARKS:
Normal subroutine return, unless number of rows
is greater than 200, prints error message and exits.
W3FP06
The W3FP06 routine provides a title for data fields formulated
according to NMC O.N. 84.
USAGE: CALL W3FP06 (ARG1, ARG2, N)
Input variables:
ARG1 12 WORD FIELD LABEL DESCRIBING THE DATA (6
INTEGER WORDS) OFFICE NOTE 84
N INTEGER NUMBER OF LINES OF OUTPUT DESIRED
= 1 FIRST 88 CHAR. THE ABBREVIATED TITLE
(LINE 1 STARTS AT ARG2(1))
= 2 FIRST 216 CHAR. DECIMAL VALUES OF THE
PARAMETERS
= 3 ALL 324 CHAR., HEXIDECIMAL DUMP OF THE 12
WORD FIELD LABEL (LINE 3 CHAR. 221
Output variables:
ARG2 CHARACTER*324 SIZE ARRAY TO CONTAIN
THE TITLE IN ACSII
REMARKS:
SEE NMC O.N. 84 FOR DATA FIELD ABBREVIATIONS
W3FP10
The W3FP10 routine prints a two-dimensional grid of any shape
with contouring.
USAGE: CALL W3FP10 (RDATA,KTBL,CNST,TITLE,KRECT,KCONTR,LINEV,IWIDTH)
Input arguments:
RDATA = REAL ARRAY OF GRID DATA TO BE PRINTED.
KTBL = INTEGER ARRAY WITH SHAPE OF ARRAY.
CNST = REAL ARRAY OF FOUR ELEMENTS, USED IN
SCALING FOR PRINTING AND CONTOURING.
TITLE = IS A ARRAY OF 132 CHARACTERS OR LESS OF
HOLLERITH DATA, 1ST CHAR. MUST BE BLANK.
PRINTED AT BOTTOM OF THE MAP.
KRECT = 1 IF GRID IS RECTANGULAR, 0 OTHERWISE.
KCONTR = 1 FOR CONTOURING , 0 OTHERWISE.
LINEV = 0 IS FOR 6 LINES PER VERTICAL INCH,
NON-ZERO 8 LINES PER VERTICAL INCH.
IWIDTH = NUMBER OF CHARACTERS IN PRINT LINE,
132 IS STANDARD PRINTER.
Input files: NONE
Output arguments: NONE
Output files: Standard FORTRAN print file
Return conditions:
NORMAL SUBROUTINE RETURN, UNLESS NUMBER
OF ROWS IS GREATER THAN 200, PRINTS ERROR
MESSAGE AND EXITS.
REMARKS:
SPECIAL VERSION OF W3FP05, 1ST POINT IS UPPER LEFT HAND
CORNER. WRITTEN ON REQUEST OF PETER CHASE BECAUSE SOME
GRIB FIELDS CAN START WITH THE UPPER LEFT HAND CORNER
AS THE 1ST POINT OF A GRID.
W3FP11
The W3FP11 routine converts grib formatted product definition section
version 1 to a one line readable title.
USAGE: CALL W3FP11 (IPDS0, IPDS, TITL, IERR )
Input argument list:
IPDS0 - GRIB SECTION 0 READ AS CHARACTER*8
IPDS - GRIB PDS SECTION READ AS CHARACTER*28
Output argument list:
TITL - CHARACTER*86 OUTPUT PRINT LINE
IERR 0 - COMPLETED SATISFACTORILY
1 - GRIB SECTION 0, CAN NOT FIND 'GRIB'
2 - GRIB IS NOT VERSION 1
3 - LENGTH OF PDS SECTION IS LESS THAN 28
4 - COULD NOT MATCH TYPE INDICATOR
5 - COULD NOT MATCH TYPE LEVEL
6 - COULD NOT INTERPRET ORIGINATOR OF CODE
7 - COULD NOT INTERPRET SUB CENTER 7 ORIGINATOR OF CODE
8 - COULD NOT INTERPRET SUB CENTER 9 ORIGINATOR OF CODE
9 - PARAMETER TABLE VERSION NOT 1 OR 2
W3FP12
The W3FP12 routine the product definition section according to the
specifications set by wmo. using o.n. 84 id's
(1st 8 words) as the input data.
USAGE: CALL W3FP12 (ID8, IFLAG, IDPDS, ICENT, ISCALE, IER)
Input argument list:
ID8 - FIRST 8 ID WORKDS (O.N.84) INTEGER*4
ICENT - CENTURY, 2 DIGITS, FOR 1991 IT IS 20.
IFLAG - INDICATION OF INCLUSION OR OMISSION OF GRID DEFINITION
AND/OR BIT MAP CODE CHARACTER*1
ISCALE - 10 SCALER INTEGER*4
Output argument list: (INCLUDING WORK ARRAYS)
IDPDS - GRIB PRODUCT DEFINITION SECTION CHARACTER*1 (28)
IER = 0 COMPLETED SMOOTHLY
= 1 INDICATOR PARAMETER N.A. TO GRIB
= 2 LEVEL INDICATOR N.A. TO GRIB
= 3 TIME RANGE N.A. TO GRIB NOTATION
= 4 LAYERS OR LEVELS N.A. TO GRIB
W3FP13
The W3FP13 routine converts grib version 1 formatted
product definition section to an Office Note
84 id label.
USAGE: CALL W3FP13 (GRIB, PDS, ID8, IERR )
Input argument list:
GRIB - GRIB SECTION 0 READ AS CHARACTER*8
PDS - GRIB PDS SECTION 1 READ AS CHARACTER*1 PDS(*)
Output argument list: (INCLUDING WORK ARRAYS)
ID8 - 12 INTEGER*4 FORMATTED O.N. 84 ID.
6 INTEGER 64 BIT WORDS ON CRAY
IERR 0 - COMPLETED SATISFACTORILY
1 - GRIB BLOCK 0 NOT CORRECT
2 - LENGTH OF PDS NOT CORRECT
3 - COULD NOT MATCH TYPE INDICATOR
4 - GRID TYPE NOT IN TABLES
5 - COULD NOT MATCH TYPE LEVEL
6 - COULD NOT INTERPRET ORIGINATOR OF CODE
REMARKS:
SOME OF THE ID'S WILL NOT BE EXACT TO THE O.N. 84
FOR LOCATING FIELD ON THE DATASET. THESE DIFFERENCES
ARE MAINLY DUE TO TRUNCATION ERRORS WITH LAYERS.
FOR EXAMPLE: .18019 SIG .47191 SIG R H FOR 36.O HRS
WILL CONVERT TO: .18000 SIG .47000 SIG R H FOR 36.0 HRS
THE ABOVE ID'S NOW FORCED TO BE EXACT
IF J THE WORD COUNT IS GREATER THEN 32743, J IS STORED
IN THE 12TH ID WORD. BITS 16-31 OF THE 8TH ID WORD ARE
SET TO ZERO.
W3FQ07
The W3FQ07 routine sends fax,varian,afos,awips, maps & bulls.
USAGE: CALL W3FQ07(LPARM, NUMBYT, OUTFIL, CARDFIL, KRTN)
Input argument list:
LPARM - CHARACTER*1 100 BYTE ARRAY CONTAINING ASCII
FLAGS AND KEY WORDS.
NUMBYT - INTEGER NUMBER OF BYTES OF ASCII DATA IN LPARM.
OUTFIL - INTEGER UNIT NUMBER OF FILE TO POST TO THE
TELECOMMUNICATIONS GATEWAY COMPUTER SYSTEM.
CARDFIL - INTEGER UNIT NUMBER OF FILE TO READ TO GET DATA
CONTROL CARD IN LUE OF PARM. THIS IS ONLY NECESSARY
WHEN PARM(5:5) = 'A'.
Output argument list:
KRTN - SEE RETURN CONDITIONS.
Return conditions:
KRTN = 0 GOOD RETURN, FILE POSTED FOR TRANSMISSION
KRTN = 1 GOOD RETURN, FILE NOT POSTED FOR TRANSMISSION
TEST FLAG WAS ON IE K=TEST OR THERE WAS AN "N"
THE 1ST BYTE OF THE INPUT DATA CARD.
KRTN = 2 BAD RETURN, POSTING NOT ATTEMPTED, THE "K" KEY
WAS MISSING.
KRTN = 3 BAD RETURN, POSTING NOT ATTEMPTED, PARM LESS THAN
THAN 6 BYTES.
KRTN = 4 BAD RETURN, CARD READER EMPTY.
KRTN = 5 BAD RETURN, ERROR RETURN FROM SUB DBN_ALERT.
Input files:
FTNNF001 - FILE THAT CONTAINS THE DATA TO SEND.
WHERE 'NN' CAN BE ANY NUMBER FROM 01 TO 99
EXCEPT 5 OR 6. THIS FILE MUST BE ASSIGNED WITH U:NN.
FTXXF001 - INPUT CARDS, ONLY NECESSARY IF LPARM(3-6) ='CARD'.
A SAMPLE DATA CARD IS:
M=FT24F001,K=AFOS
(ALL ON ONE CARD STARTING IN COL 1).
IF COL 1 = 'N' THEN THE DATA SET IS NOT POSTED
TO THE MONITIOR,IE., W3FQ07 WILL RETURN TO CALLING
PROGRAM WITH OUT SENDING THE PRODUCT.
(XX HAS DEFAULT OF 05. HOWEVER THIS NUMBER CAN
BE ANY UNIT NUMBER YOU WISH.
Output files:
FT06F001 - PRINT FILE.
REMARKS:
THE KEY WORDS THAT ARE PASSED TO SUB IN LPARM MAY
BE IN ANY ORDER IN THE LPARM ARRAY OR DATA CARD.
THERE IS ONE KEY WORD THAT IS MANDATORY.
THEY ARE:
K=KKKKKKK
WHERE KKKKKKKK IS UP TO A 24 BYTE ASCII KEYWORD LEFT-JUSTIFIED
WHICH IDENTIFIES WHAT DBNET IS TO DO WITH THE INPUT DATA FILE.
'KKKKKKKK' IS GENERALLY A KEYWORD SUCH AS:
'FAXX', 'TRAN','AFOS','AWIP' BUT MAY BE:
ANY ONE OF THESE type-keys.
type-keys FUNCTIONS
AFOS, Posts AFOS utf map file to CRAY OSO'S statusfile.
AWIP, Posts AWIPS map file to CRAY OSO'S statusfile.
FAXX, Posts nmc6bit map file to CRAY OSO'S statusfile.
GRIB, Posts wmo grib file to CRAY OSO'S statusfile.
TRAN, Posts wmo bulletin file to CRAY OSO'S statusfile.
XTRN, Posts xtrn file to CRAY OSO'S statusfile.
IG_DATA_ipsa1, Sends data file to the intergraph ipsa1.
IG_DATA_ipsa2, Sends data file to the intergraph ipsa2.
IG_DATA_lzr_srv1, Sends data file to the intergraph lzr_srv1.
IG_PLTF_ipsa1, Sends AFOS plot file to the intergraph ipsa1.
IG_PLTF_ipsa2, Sends AFOS plot file to the intergraph ipsa2.
IG_PLTF_lzr_srv1, Sends AFOS plot file to the intergraph lzr_srv1.
IG_6BIT_lzr_srv1, Sends nmc6bit file to the intergraph lzr_srv1.
TPC_6BIT_nhc-hp13, Sends nmc6bit file to nhc-hp13 at TPC.
OSO_IG_6BIT_lzr_srv1, Posts nmc6bit file to CRAY OSO'S
statusfile and then Sends nmc6bit file
to the intergraph lzr_srv1.
OSO_TPC_6BIT_nhc-hp13, Posts nmc6bit file to CRAY OSO'S
statusfile and then Sends nmc6bit file
to nhc-hp13 at TPC.
WHERE OUTFIL IS THE FILE NUMBER CONTAING THE DATA.
A SAMPLE:
M=PETERS,K=FAXX WHERE A ',' OR A ' ' TERMINATES THE KEY WORD.
WHERE A COMMA OR BLANK TERMINATES THE KEY WORD.
THE M= IS AN OPTIONAL KEY WORD. THE 'M' KEY WORD IS THE MODEL NAME
IF IF MISSING THE "MISSING" IS USED OTHER WISE IT MAY BY ANY
24 BYTE ASCII STRING.
A SAMPLE:
M=AVN,K=AFOS,
WHERE A COMMA OR BLANK TERMINATES THE KEY WORD.
W3FP12
The W3FS13 routine converts year, month and day to day of year.
USAGE: CALL W3FS13(IYR, IMO, IDA, JDY)
Input variables:
IYR ARG LIST INTEGER YEAR OF CENTURY, 00-99 OR YEAR OF ERA,
1901-2099
IMO ARG LIST INTEGER MONTH OF YEAR, 1-12
IDA ARG LIST INTEGER DAY OF MONTH, 1-31
Output variables:
JDY ARG LIST INTEGER DAY OF YEAR, 1-366
REMARKS:
THIS PROCEDURE IS VALID ONLY FROM THE YEARS 1901-2099
INCLUSIVE.
W3FS15
The W3FS15 routine updates or backdates a fullword date/time
word (O.N. 84) by a specified number of hours.
USAGE: CALL W3FS15 (IDATE, JTAU, NDATE)
Input argument list:
IDATE - PACKED BINARY DATE/TIME AS FOLLOWS:
BYTE 1 IS YEAR OF CENTURY 00-99
BYTE 2 IS MONTH 01-12
BYTE 3 IS DAY OF MONTH 01-31
BYTE 4 IS HOUR 00-23
SUBROUTINE TAKES ADVANTAGE OF FORTRAN ADDRESS
PASSING, IDATE AND NDATE MAY BE
A CHARACTER*1 ARRAY OF FOUR, THE LEFT 32
BITS OF 64 BIT INTEGER WORD. AN OFFICE NOTE 85
LABEL CAN BE STORED IN 4 INTEGER WORDS.
IF INTEGER THE 2ND WORD IS USED. OUTPUT
IS STORED IN LEFT 32 BITS. FOR A OFFICE NOTE 84
LABEL THE 7TH WORD IS IN THE 4TH CRAY 64 BIT
INTEGER, THE LEFT 32 BITS.
JTAU - INTEGER NUMBER OF HOURS TO UPDATE (IF POSITIVE)
OR BACKDATE (IF NEGATIVE)
Output argument list:
NDATE - NEW DATE/TIME WORD RETURNED IN THE
SAME FORMAT AS 'IDATE'. 'NDATE' AND 'IDATE' MAY
BE THE SAME VARIABLE.
NOTES:
THE FORMAT OF THE DATE/TIME WORD IS THE SAME AS THE
SEVENTH WORD OF THE PACKED DATA FIELD LABEL (SEE O.N. 84) AND
THE THIRD WORD OF A BINARY DATA SET LABEL (SEE O.N. 85).
EXIT STATES:
AN ERROR FOUND BY OUT OF RANGE TESTS ON THE GIVEN DATE/TIME
INFORMATION WILL BE INDICATED BY RETURNING A BINARY ZERO WORD
IN 'NDATE'.
W3FS21
The W3FS21 routine calculates the number of minutes since
0000, 1 JANUARY 1978.
USAGE: CALL W3FS21 (IDATE, NMIN)
Input argument list:
IDATE - INTEGER SIZE 5 ARRAY CONTAINING YEAR OF CENTURY,
MONTH, DAY, HOUR AND MINUTE. IDATE(1) MAY BE
A TWO DIGIT YEAR OR 4. IF 2 DIGITS AND GE THAN 78
1900 IS ADDED TO IT. IF LT 78 THEN 2000 IS ADDED
TO IT. IF 4 DIGITS THE SUBROUTINE WILL WORK
CORRECTLY TO THE YEAR 3300 A.D.
Output argument list:
NMIN - INTEGER NUMBER OF MINUTES SINCE 1 JANUARY 1978
W3FS26
The W3FS26 routine computes year (4 digits), month, day,
day of week, day of year from julian day number.
This subroutine will work from 1583 A.D. to 3300 A.D.
USAGE: CALL W3FS26(JLDAYN,IYEAR,MONTH,IDAY,IDAYWK,IDAYYR)
Input variables:
JLDAYN ARG LIST INTEGER JULIAN DAY NUMBER
Output variables:
IYEAR ARG LIST INTEGER YEAR (4 DIGITS)
MONTH ARG LIST INTEGER MONTH
IDAY ARG LIST INTEGER DAY
IDAYWK ARG LIST INTEGER DAY OF WEEK (1 IS SUNDAY, 7 IS SAT)
IDAYYR ARG LIST INTEGER DAY OF YEAR (1 TO 366)
REMARKS:
A JULIAN DAY NUMBER CAN BE COMPUTED BY USING ONE OF THE
FOLLOWING STATEMENT FUNCTIONS. A DAY OF WEEK CAN BE COMPUTED
FROM THE JULIAN DAY NUMBER. A DAY OF YEAR CAN BE COMPUTED FROM
A JULIAN DAY NUMBER AND YEAR.
IYEAR (4 DIGITS)
JDN(IYEAR,MONTH,IDAY) = IDAY - 32075
+ 1461 * (IYEAR + 4800 + (MONTH - 14) / 12) / 4
+ 367 * (MONTH - 2 - (MONTH -14) / 12 * 12) / 12
- 3 * ((IYEAR + 4900 + (MONTH - 14) / 12) / 100) / 4
IYR (4 DIGITS) , IDYR(1-366) DAY OF YEAR
JULIAN(IYR,IDYR) = -31739 + 1461 * (IYR + 4799) / 4
-3 * ((IYR + 4899) / 100) / 4 + IDYR
DAY OF WEEK FROM JULIAN DAY NUMBER, 1 IS SUNDAY, 7 IS SATURDAY.
JDAYWK(JLDAYN) = MOD((JLDAYN + 1),7) + 1
DAY OF YEAR FROM JULIAN DAY NUMBER AND 4 DIGIT YEAR.
JDAYYR(JLDAYN,IYEAR) = JLDAYN -
(-31739+1461*(IYEAR+4799)/4-3*((IYEAR+4899)/100)/4)
THE FIRST FUNCTION WAS IN A LETTER TO THE EDITOR COMMUNICATIONS
OF THE ACM VOLUME 11 / NUMBER 10 / OCTOBER, 1968. THE 2ND
FUNCTION WAS DERIVED FROM THE FIRST. THIS SUBROUTINE WAS ALSO
INCLUDED IN THE SAME LETTER. JULIAN DAY NUMBER 1 IS
JAN 1,4713 B.C. A JULIAN DAY NUMBER CAN BE USED TO REPLACE A
DAY OF CENTURY, THIS WILL TAKE CARE OF THE DATE PROBLEM IN
THE YEAR 2000, OR REDUCE PROGRAM CHANGES TO ONE LINE CHANGE
OF 1900 TO 2000. JULIAN DAY NUMBERS CAN BE USED FOR FINDING
RECORD NUMBERS IN AN ARCHIVE OR DAY OF WEEK, OR DAY OF YEAR.
W3FT00
The W3FT00 routine transforms data contained in a grid
array by translation, rotation about a common point
and dilatation to a new grid array.
USAGE: CALL W3FT00 (FA,FB,IA,JA,IB,JB,AIP,AJP,BIP,BJP,SC,ARG,LIN)
Input argument list:
FA REAL ORIGIONAL FIELD DIMENSIONED (IA,IJ)
IA INTEGER I-DIMENSION OF THE INPUT ARRAY FA
JA INTEGER J-DIMENSION OF THE INPUT ARRAY FA
IB INTEGER I-DIMENSION OF THE OUTPUT ARRAY FB
JB INTEGER J-DIMENSION OF THE OUTPUT ARRAY FB
AIP REAL COMMON POINT I-COORDINATE OF THE ORIGIONAL
FIELD ASSUMING A RIGHT HAND CARTESIAN COORDINATE
SYSTEM. THE POINT NEED NOT BE IN EITHER GRID AND
CAN HAVE FRACTIONAL INDICES).
AJP REAL COMMON POINT J-COORDINATE AS AIP ABOVE
BIP REAL COMMON POINT I-COORDINATE FOR TRANSFORMED
GRID
BJP REAL COMMON POINT J-COORDINATE FOR TRANSFORMED
GRID
SC REAL SCALE CHANGE (DILATION) EXPRESSED AS
A RATIO OF THE TRANSFORMED TO THE ORIGIONAL FIELD
ARG REAL DEGREE MEASURE OF THE ANGLE REQUIRED TO
ROTATE THE J-ROW OF THE ORIGIONAL GRID INTO
COINCIDENCE WITH THE NEW GRID. (+ COUNTER-
CLOCKWISE, - CLOCKWISE)
LIN INTEGER INTERPOLATION METHOD SWITCH
.EQ. 1 BILINEAR INTERPOLATION
.NE. 1 BIQUADRATIC INTERPOLATION
Output argument list:
FB REAL TRANSFORMED FIELD DIMENSIONED (IB,JB)
REMARKS:
IN GENERAL 'FA' AND 'FB' CANNOT BE EQUIVALENCED
ALTHOUGH THERE ARE SITUATIONS IN WHICH IT WOULD BE SAFE TO DO
SO. CARE SHOULD BE TAKEN THAT ALL OF THE NEW GRID POINTS LIE
WITHIN THE ORIGIONAL GRID, NO ERROR CHECKS ARE MADE.
W3FT01
The W3FT01 routine interpolates values in a data field
for a given grid coordinate in a data array, estimates
a data value for that point using either a linear
or quadratic interpolation method.
USAGE: CALL W3FT01 (STI, STJ, FLD, HI, II, JJ, NCYCLK, LIN)
Input argument list:
STI REAL*4 I GRID COORDINATE OF THE POINT FOR WHICH
AN INTERPOLATED VALUE IS DESIRED
STJ REAL*4 J GRID COORDINATE OF THE POINT FOR WHICH
AN INTERPOLATED VALUE IS DESIRED
FLD REAL*4 SIZE(II,JJ) DATA FIELD
II INTEGER*4 NUMBER OF COLUMNS IN 'FLD'
JJ INTEGER*4 NUMBER OF ROWS IN 'FLD'
NCYCLK INTEGER*4 CODE TO SPECIFY IF GRID IS CYCLIC OR
NOT:
= 0 NON-CYCLIC IN II, NON-CYCLIC IN JJ
= 1 CYCLIC IN II, NON-CYCLIC IN JJ
= 2 CYCLIC IN JJ, NON-CYCLIC IN II
= 3 CYCLIC IN II, CYCLIC IN JJ
LIN INTEGER*4 CODE SPECIFYING INTERPOLATION METHOD:
= 1 LINEAR INTERPOLATION
.NE.1 QUADRATIC INTERPOLATION
Output argument list:
HI REAL*4 DATA FIELD VALUE AT (STI,STJ) OBTAINED
BY INTERPOLATION.
W3FT02
The W3FT02 routine interpolates, using a fancy non-linear
method, gridded quantitative precipitation forecasts
to a specific interior point.
USAGE: CALL W3FT02(RAIN, IMAX, JMAX, PI, PJ, AMOUNT)
Input argument list:
RAIN REAL*4 GRID FIELD OF (FORECAST) PRECIPITATION
IMAX INTEGER*4 I-DIMENSION OF RAIN FIELD
JMAX INTEGER *4 J-DIMENSION OF RAIN FIELD
PI REAL*4 I-COORDINATE OF INTERPOLATION POINT
PJ REAL*4 J-COORDINATE OF INTERPOLATION POINT
Output argument list:
AMOUNT REAL*4 AMOUNT OF PRECIP INTERPOLATED TO PI,PJ
W3FT03
The W3FT03 routine does either bilinear or biquadratic
interpolation for a point within a two-dimensional
data array.
USAGE: CALL W3FT03(FL,HI,STI,STJ,MAXI,MAXJ,KQUAD)
Input argument list:
FL ARG LIST REAL*4 TWO-DIMENSIONAL CARTESIAN ARRAY OF DATA
MAXI ARG LIST INTEGER*4 I-DIMENSION OF FL
MAXJ ARG LIST INTEGER*4 J-DIMENSION OF FL
STI ARG LIST REAL*4 I-COORDINATE TO WHICH A VALUE IS TO BE
INTERPOLATED
STJ ARG LIST REAL*4 J-COORDINATE TO WHICH A VALUE IS TO BE
INTERPOLATED
KQUAD ARG LIST INTEGER*4 INTERPOLATION METHOD:
IF = 2, BIQUADRATIC INTERPOLATION IS DONE,
IF = ANY OTHER VALUE, DO BILINEAR.
Output argument list:
HI ARG LIST REAL*4 INTERPOLATED OUTPUT VALUE
REMARKS:
NO ERROR CHECKS ARE MADE. IT IS LEFT FOR THE USER TO
DETERMINE THAT THE POINT FOR WHICH INTERPOLATION IS DESIRED
LIES WITHIN THE GRID.
W3FT05
The W3FT05 routine converts a northern hemisphere 2.5
degree lat.,lon. 145 by 37 grid to a polar
stereographic 65 by 65 grid. The polar
stereographic map projection is true at 60 deg. North,
the mesh length is 381 km. and the oriention is
80 deg. west.
Input argument list:
ALOLA 145*37 GRID 2.5 LAT,LON GRID N. HEMI.
5365 POINT GRID IS TYPE 29 OR 1D HEX O.N. 84
LINEAR 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output argument list:
APOLA 65*65 GRID OF NORTHERN HEMI.
4225 POINT GRID IS TYPE 27 OR 1B HEX O.N. 84
W1 65*65 SCRATCH FIELD
W2 65*65 SCRATCH FIELD
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. IF THEY ARE
OVER WRITTEN BY THE USER, A WARNING MESSAGE WILL BE PRINTED
AND W1 AND W2 WILL BE RECOMPUTED.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
3. THE GRID POINTS VALUES ON THE EQUATOR HAVE BEEN EXTRAPOLATED
OUTWARD TO ALL THE GRID POINTS OUTSIDE THE EQUATOR ON THE 65*65
GRID (ABOUT 1100 POINTS).
4. YOU SHOULD USE THE CRAY VECTORIZED VERSION W3FT05V ON THE CRAY
IT HAS 3 PARAMETERS IN THE CALL, RUNS ABOUT 10 TIMES FASTER. USES
MORE MEMORY.
W3FT05V
The W3FT05V routine converts a northern hemisphere 2.5 degree
lat.,lon. 145 by 37 grid to a polar stereographic 65 by 65
grid. The polar stereographic map projection is true at
60 deg. north , the mesh length is 381 km. and the oriention
is 80 deg. west.
USAGE: CALL W3FT05V(ALOLA,APOLA,INTERP)
Input argument list:
ALOLA - 145*37 GID 2.5 LAT,LON GRID N. HEMISPHERE
5365 POINT GRID IS O.N. 84 TYPE 29 OR 1D HEX
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output argument list:
APOLA - 65*65 GRID OF NORTHERN HEMISPHERE.
4225 POINT GRID IS O.N.84 TYPE 27 OR 1B HEX
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
3. THE GRID POINTS VALUES ON THE EQUATOR HAVE BEEN EXTRAPOLATED
OUTWARD TO ALL THE GRID POINTS OUTSIDE THE EQUATOR ON THE 65*65
GRID (ABOUT 1100 POINTS).
W3FT06
The W3FT06 routine converts a southern hemisphere 2.5 degree
lat., lon. 145 by 37 grid to a polar stereographic
65 by 65 grid. the polar stereographic map projection
is true at 60 deg. south, the mesh length is 381 km. and
the oriention is 260 deg. west (100E).
USAGE: CALL W3FT06(ALOLA,APOLA,W1,W2,LINEAR)
Input variables:
ALOLA 145*37 DEG 2.5 LAT,LON GRID S. HEMI.
5365 POINT GRID IS TYPE 30 OR 1E HEX O.N. 84
LINEAR 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output variables:
APOLA 65*65 GRID OF SOUTHERN HEMI.
4225 POINT GRID IS TYPE 28 OR 1C HEX O.N. 84
W1 65*65 SCRATCH FIELD
W2 65*65 SCRATCH FIELD
FT06F001 ERROR MESSAGE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. IF THEY ARE
OVER WRITTEN BY THE USER, A WARNING MESSAGE WILL BE PRINTED
AND W1 AND W2 WILL BE RECOMPUTED.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC10 TO DO THIS.
3. THE GRID POINTS VALUES ON THE EQUATOR HAVE BEEN EXTRAPOLATED
OUTWARD TO ALL THE GRID POINTS OUTSIDE THE EQUATOR ON THE 65*65
GRID (ABOUT 1100 POINTS).
4. YOU SHOULD USE THE CRAY VECTORIZED VERION W3FT06V ON THE CRAY
IT HAS 3 PARAMETERS IN THE CALL, RUNS ABOUT TIMES FASTER, USES
MORE MEMORY.
W3FT06V
The W3FT06V routine converts a southern hemisphere 2.5 degree
lat., lon. 145 by 37 grid to a polar stereographic
65 by 65 grid. The polar stereographic map projection is
true at 60 deg. south , the mesh length is 381 km. and the
oriention is 260 deg. west.
USAGE: CALL W3FT06V(ALOLA,APOLA,INTERP)
Input variables:
ALOLA - 145*37 GID 2.5 LAT,LON GRID S. HEMISHERE
5365 POINT GRID IS O.N.84 TYPE 30 OR 1E HEX
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output variables:
APOLA - 65*65 GRID OF NORTHERN HEMI.
4225 POINT GRID IS O.N.84 TYPE 28 OR 1C HEX
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC10 TO DO THIS.
3. THE GRID POINTS VALUES ON THE EQUATOR HAVE BEEN EXTRAPOLATED
OUTWARD TO ALL THE GRID POINTS OUTSIDE THE EQUATOR ON THE 65*65
GRID (ABOUT 1100 POINTS).
W3FT07
The W3FT07 routine transforms data contained in a given
grid array by translation, rotation about a common
point and dilatation in order to create a new grid
array according to specifications.
USAGE: CALL W3FT07(FLDA,IA,JA,AIPOLE,AJPOLE,BIPOLE,BJPOLE,DSCALE,
ANGLE,LINEAR,LDEFQQ,DEFALT,FLDB,IB,JB)
Input argument list:
FLDA(IA,JA) - REAL*4 ORIGINAL SOURCE GRID-POINT DATA FIELD
AIPOLE,AJPOLE - REAL*4 COMMON POINT I- AND J-COORDINATES OF THE
ORIGINAL FIELD, ASSUMING A RIGHT-HAND CARTESIAN
COORDINATE SYSTEM. THE POINT NEED NOT BE INSIDE
THE BOUNDS OF EITHER GRID
AND CAN HAVE FRACTIONAL VALUES.
COMMON POINT ABOUT WHICH TO ROTATE THE GRIDPOINTS
BIPOLE,BJPOLE - REAL*4 COMMON POINT I- AND J-COORDINATES FOR
TRANSFORMED DESTINATION GRID
DSCALE - REAL*4 SCALE-CHANGE (DILATION) EXPRESSED AS
A RATIO OF THE TRANSFORMED FIELD TO THE ORIGINAL
FIELD
DSCALE = GRDLENKM(DESTINATION) / GRDLENKM(SOURCE)
ANGLE - REAL*4 DEGREE MEASURE OF THE ANGLE REQUIRED TO
ROTATE THE J-ROW OF THE ORIGINAL GRID INTO
COINCIDENCE WITH THE NEW GRID. (+ COUNTER-
CLOCKWISE, - CLOCKWISE)
ANGLE = VERTLONW(SOURCE) - VERTLONW(DESTINATION)
LINEAR - LOGICAL*4 INTERPOLATION-METHOD SELECTION SWITCH:
.TRUE. BI-LINEAR INTERPOLATION
.FALSE. BI-QUADRATIC INTERPOLATION
LDEFQQ - LOGICAL*4 DEFAULT-VALUE SWITCH:
IF .TRUE. THEN
USE DEFAULT-VALUE FOR DESTINATION POINT
OUT-OF-BOUNDS OF GIVEN GRID;
ELSE
EXTRAPOLATE COARSELY FROM NEARBY BNDRY POINT
DEFALT - REAL*4 THE DEFAULT-VALUE TO USE IF LDEFQQ = .TRUE.
Output argument list:
FLDB(IB,JB) - REAL*4 RESULTING TRANSFORMED DESTINATION FIELD
REMARKS:
LIST CAVEATS, OTHER HELPFUL HINTS OR INFORMATION
IN GENERAL 'FLDA' AND 'FLDB' CANNOT BE EQUIVALENCED
ALTHOUGH THERE ARE SITUATIONS IN WHICH IT WOULD BE SAFE TO DO
SO. CARE SHOULD BE TAKEN THAT ALL OF THE NEW GRID POINTS LIE
WITHIN THE ORIGINAL GRID, NO ERROR CHECKS ARE MADE.
W3FT08
The W3FT08 routine computes 2.5 x 2.5 N. hemi. grid
of 145 x 37 points from spectral coefficients in a
rhomboidal 30 resolution representing a scaler field.
USAGE: CALL W3FT08(FLN,GN,PLN,EPS,FL,WORK,TRIGS)
Input variables:
FLN 961 COMPLEX COEFF.
PLN 992 REAL SPACE FOR LEGENDRE POLYNOMIALS.
EPS 992 REAL SPACE FOR
COEFFS. USED IN COMPUTING PLN.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 29 OR 1D HEX O.N. 84
REMARKS:
THIS SUBROUTINE WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT IS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME IS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY YOU CAN CUT THE RUNNING TIME
70 PERCENT. W3FT38 HAS THESE IMPROVEMENTS.
W3FT09
The W3FT09 routine computes 2.5 x 2.5 N. hemi. grid
of 145 x 37 points from spectral coefficients in
a rhomboidal 30 resolution representing a vector field.
USAGE: CALL W3FT09(VLN,GN,PLN,EPS,FL,WORK,TRIGS,RCOS)
Input variables:
VLN ARG LIST 992 COMPLEX COEFF.
PLN ARG LIST 992 SPACE FOR LEGENDRE POLYNOMIALS.
EPS ARG LIST 992 REAL SPACE FOR
COEFFS. USED IN COMPUTING PLN.
FL ARG LIST 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK ARG LIST 144 WORK SPACE FOR SUBR. W3FT12
TRIGS ARG LIST 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
RCOS ARG LIST 37 RECIPROCAL COSINE LATITUDES OF
2.5 X 2.5 GRID MUST BE COMPUTED BEFORE
FIRST CALL TO W3FT11 USING SR W3FA13.
Output variables:
GN ARG LIST (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 29 OR 1D O.N. 84
REMARKS:
THIS SUBROUTINE WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT IS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME IS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY YOU CAN CUT THE RUNNING
TIME 70 PERCENT.
W3FT10
The W3FT10 routine computes 2.5 x 2.5 S. hemi. grid
of 145 x 37 points from spectral coefficients in
a rhomboidal 30 resolution representing a scaler field.
USAGE: CALL W3FT10(FLN,GN,PLN,EPS,FL,WORK,TRIGS)
Input variables:
FLN 961 COMPLEX COEFF.
PLN 992 REAL SPACE FOR LEGENDRE POLYNOMIALS.
EPS 992 REAL SPACE FOR
COEFFS. USED IN COMPUTING PLN.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 30 OR 1E O.N. 84
REMARKS:
THIS SUBROUTINE WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT IS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME IS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY YOU CAN CUT THE RUNNING TIME
70 PERCENT.
W3FT11
The W3FT11 routine computes 2.5 x 2.5 S. hemi. grid
of 145 x 37 points from spectral coefficients in
a rhomboidal 30 resolution representing a vector field.
USAGE: CALL W3FT11(VLN,GN,PLN,EPS,FL,WORK,TRIGS,RCOS)
Input variables:
VLN 992 COMPLEX COEFF.
PLN 992 REAL SPACE FOR LEGENDRE POLYNOMIALS.
EPS 992 REAL SPACE FOR
COEFFS. USED IN COMPUTING PLN.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
RCOS 37 RECIPROCAL COSINE LATITUDES OF
2.5 X 2.5 GRID MUST BE COMPUTED BEFORE
FIRST CALL TO W3FT11 USING SUBR. W3FA13.
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 30 OR 1E HEX O.N. 84
REMARKS:
THIS SUBROUTINE WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT IS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME IS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY YOU CAN CUT THE RUNNING TIME
70 PERCENT.
W3FT12
The W3FT12 routine Fast Fourier to compute 145 grid values at
desired latitude from 31 complex Fourier coefficients.
This subroutinE is special purpose for converting
coefficients to a 2.5 degree lat,lon grid.
USAGE: CALL W3FT12(COEF,WORK,GRID,TRIGS)
Input variables:
COEF 31 COMPLEX FOURIER COEFFICIENTS.
TRIGS 216 TRIG FUNCTIONS ASSUMED PRECOMPUTED
BY W3FA13 BEFORE FIRST CALL TO W3FT12.
WORK 144 REAL WORK SPACE
Output variables:
GRID 145 GRID VALUES, GRID(1)=GRID(145)
W3FT16
The W3FT16 routine converts a northern hemisphere 1.0 degree
lat., lon. 95 by 91 grid to a WAFS 1.25 degree thinned
3447 point grid.
USAGE: CALL W3FT16(ALOLA,BTHIN,INTERP)
Input variables:
ALOLA - 95 * 91 GRID 1.0 DEG. LAT,LON GRID
NORTHERN HEMISPHERE 8645 POINT GRID.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output variables:
BTHIN - 3447 POINT THINNED GRID OF N. HEMISPERE
3447 GRID IS FOR GRIB GRIDS 37-40.
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 10 OTHER ARRAYS
ARE SAVED AND REUSED ON THE NEXT CALL.
W3FT17
The W3FT17 routine converts a southern hemisphere
1.0 degree lat.,lon. 95 by 91 grid to a WAFS 1.25
degree thinned 3447 point grid.
USAGE: CALL W3FT17(ALOLA,BTHIN,INTERP)
Input arguments:
ALOLA - 95 * 91 GRID 1.0 DEG. LAT,LON GRID
SOUTHERN HEMISPHERE 8645 POINT GRID.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
BTHIN - 3447 POINT THINNED GRID OF S. HEMISPERE
3447 GRID IS FOR GRIB GRIDS 41-44.
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 10 OTHER ARRAYS
ARE SAVED AND REUSED ON THE NEXT CALL.
W3FT201
The W3FT201 routine converts a global 1.0 degree lat.,lon.
361 by 181 grid to a polar stereographic 65 by 65 grid.
the polar stereographic map projection is true at 60 deg.
N. , The mesh length is 381 km. and the oriention is
105 deg. W. This is the same as w3ft43v except the
oriention is 105 deg. W.
USAGE: CALL W3FT201(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*181 GRID 1.0 DEG. LAT,LON GRID
65341 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE TO MAKE 361 * 181.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 65*65 GRID OF NORTHERN HEMISPHERE.
4225 POINT GRID IS AWIPS GRID TYPE 201
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
3. ALL POINTS BELOW EQUATOR ARE ON THIS GRID.
W3FT202
The W3FT202 routine converts a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a polar stereographic 65 by
43 grid. The polar stereographic map projection is true
at 60 deg. N., The mesh length is 190.5 km. and the
oriention is 105 deg. W.
USAGE: CALL W3FT202(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 LAT,LON GRID N. HEMISPHERE
32851 POINT GRID IS O.N. 84 TYPE ?? OR ?? HEX
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 65*43 GRID OF NORTHERN HEMISPHERE.
2795 POINT GRID IS AWIPS GRID TYPE 202
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*43 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
3. THE GRID POINTS VALUES ON THE EQUATOR HAVE BEEN EXTRAPOLATED
OUTWARD TO ALL THE GRID POINTS OUTSIDE THE EQUATOR ON THE 65*43
GRID (ABOUT 1100 POINTS).
W3FT203
The W3FT203 routine converts a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a polar stereographic
45 by 39 grid. The polar stereographic map projection is
true at 60 deg. N., The mesh length is 190.5 km. and the
oriention is 150 deg. W.
USAGE: CALL W3FT203(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 LAT,LON GRID N. HEMISPHERE
32851 POINT GRID IS O.N. 84 TYPE ?? OR ?? HEX
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 45*39 GRID OF NORTHERN HEMISPHERE.
1755 POINT GRID IS AWIPS GRID TYPE 203
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 45*39 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT204
The W3FT204 routine converts a n. s. hemisphere 1.0 degree
lat.,lon. 361 by 181 grid to a National - Hawaii
(Mercator) 93*68 AWIPS 204 grid.
USAGE: CALL W3FT204(ALOLA,AMERC,INTERP)
Input arguments:
ALOLA - 361*181 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
65341 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
AMERC - 93*68 GRID NATIONAL - HAWAII (MERCATOR)
6324 POINT GRID IS AWIPS GRID TYPE 204
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 20 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
W3FT205
The W3FT205 routine converts a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a polar stereographic
45 by 39 grid. The polar stereographic map projection
is true at 60 deg. N., the mesh length is 190.5 km. and
the oriention is 60 deg. W. pole point is at
(i,j) = (27,57). New map is awips map 205.
USAGE: CALL W3FT205(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 LAT,LON GRID N. HEMISPHERE
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGH SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 45*39 GRID OF NORTHERN HEMISPHERE.
1755 POINT GRID IS AWIPS GRID TYPE 205
INPUT FILES: NONE
OUTPUT FILES: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 45*39 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT206
The W3FT206 routine converts a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a Lambert Conformal 51 by 41
AWIPS grib 206.
USAGE: CALL W3FT206(ALOLA,ALAMB,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
ALAMB - 51*41 REGIONAL - CENTRAL US MARD
(LAMBERT CONFORMAL). 2091 POINT GRID
IS AWIPS GRID TYPE 206
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 11 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 51*41 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT207
The W3FT207 routine converts a northern hemisphere 1.0
degree lat.,lon. 361 by 91 grid to a polar
stereographic 49 by 35 grid. The polar stereographic
map projection is true at 60 deg. N. , the mesh
length is 95.25 km. and the oriention is 150 deg. W.
USAGE: CALL W3FT207(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 49*35 GRID OF NORTHERN HEMISPHERE.
1715 POINT GRID IS AWIPS GRID TYPE 207
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 49*35 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT208
The W3FT208 routine convert a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a regional - Hawaii
(Mercator) 29*27 awips 208 grid.
USAGE: CALL W3FT208(ALOLA,AMERC,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
AMERC - 29*27 GRID OF NORTHERN MERCATOR
783 POINT GRID IS AWIPS GRID TYPE 208
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 20 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
W3FT209
The W3FT209 routine converts a northern hemisphere 1.0
degree lat.,lon. 361 by 91 grid to a Lambert Conformal
101 by 81 awips grib 209.
USAGE: CALL W3FT209(ALOLA,ALAMB,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
ALAMB - 101*81 REGIONAL - CENTRAL US MARD DOUBLE RES.
(LAMBERT CONFORMAL). 8181 POINT GRID IS AWIPSi
GRID TYPE 209
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 11 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 101*81 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT21
The W3FT21 routine computes 2.5 x 2.5 N. hemi. grid
of 145 x 37 points from spectral coefficients in
a rhomboidal 30 resolution representing a scalar field.
USAGE: CALL W3FT21(FLN,GN,PLN,EPS,FL,WORK,TRIGS,L1,L2,I2)
Input variables:
FLN 961 COMPLEX COEFF.
PLN 992 REAL SPACE FOR LEGENDRE POLYNOMIALS
EPS 992 REAL SPACE FOR COEFFS. USED IN COMPUTING PLN.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS, USED
IN W3FT12, COMPUTED BY W3FA13
L1 STARTING WAVE NUMBER
L2 ENDING WAVE NUMBER
I2 MODE OF SPECTRAL COEFFICIENTS
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 29 OR 1D HEX O.N. 84
REMARKS:
THIS SUBROUTINE WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT IS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME IS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY YOU CAN CUT THE RUNNING
TIME 70 PERCENT.
W3FT210
The W3FT210 routine converts a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a regional - Puerto Rico
(Mercator) 25*25 AWIPS 210 grid.
USAGE: CALL W3FT210(ALOLA,AMERC,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
AMERC - 25*25 GRID OF NORTHERN MERCATOR
625 POINT GRID IS AWIPS GRID TYPE 210
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 20 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
W3FT211
The W3FT211 routine converts a northern hemisphere 1.0
degree lat.,lon. 361 by 91 grid to a Lambert Conformal
93 by 65 AWIPS grib 211.
USAGE: CALL W3FT211(ALOLA,ALAMB,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
ALAMB - 93*65 REGIONAL - CONUS
(LAMBERT CONFORMAL). 6045 POINT GRID
IS AWIPS GRID TYPE 211
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 11 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 93*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT212
The W3FT212 routine converts a northern hemisphere 1.0
degree lat.,lon. 361 by 91 grid to a Lambert
Conformal 185 by 129 AWIPS grib 212.
USAGE: CALL W3FT212(ALOLA,ALAMB,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
ALAMB - 185*129 REGIONAL - CONUS
DOUBLE RESOLUTION
(LAMBERT CONFORMAL). 23865 POINT GRID
IS AWIPS GRID TYPE 212
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 11 OTHER ARRAY
ARE SAVED AND REUSED ON THE NEXT CALL.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 185*129 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT213
The W3FT213 routine converts a northern hemisphere 1.0 degree
lat.,lon. 361 by 91 grid to a Polar Stereographic
129 by 85 grid. The Polar Stereographic map projection
is true at 60 deg. N. , The mesh length is 95.25 km. and
the oriention is 105 deg. W.
awips grid 213 National - Conus - double resolution
USAGE: CALL W3FT213(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 129*85 GRID OF NORTHERN HEMISPHERE.
10965 POINT GRID IS AWIPS GRID TYPE 213
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 129*85 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT214
The W3FT214 routine converts a northern hemisphere 1.0
degree lat.,lon. 361 by 91 grid to a Polar Stereographic
97 by 69 grid. The Polar Stereographic map projection is
true at 60 deg. N. , The mesh length is 47.625 km. and
the oriention is 150 deg. W.
AWIPS grid 214 Regional - Alaska - double resolution
USAGE: CALL W3FT214(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
32851 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE AND CUT TO 361 * 91.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 97*69 GRID OF NORTHERN HEMISPHERE.
6693 POINT GRID IS AWIPS GRID TYPE 214
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 97*69 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
W3FT26
The W3FT26 routine converts a 360x181 1-degree grid into
a NH or SH 360X91 1-Degree grid. This NH/SH grid is
flipped for grib purposes and then converted to the
desired 1.25 degree WAFS (quadrant) thinned grid.
USAGE: CALL W3FT26 (MAPNUM,FLD,HI,IGPTS,NSTOP)
Input argument list:
MAPNUM - NUMBER OF GRID, 37 TO 44
FLD - NORTHERN OR SOUTHERN HEM. SPECTRAL FIELD
Output argument list:
HI - INTERPOLATED WAFS FIELD (3447 POINTS)
IGPTS - NUMBER OF POINTS IN INTERPOLATED FIELD
NSTOP - 24, WHEN MAPNUM .NE. 37 THRU 44
W3FT32
The W3FT32 routine interpolates scalar quantity from any
given NMC field (in Office Note 84) to any other field.
The routine can do bilinearly or biquadratically and It
will not rotate wind components.
USAGE: CALL W3FT32(FIELD, MAPIN, DATA, MAPOUT, INTERP, IER)
Input arguments:
FIELD - REAL*4 - TWO DIMENSIONAL ARRAY.
MAPIN - INTEGER*4 - NMC MAP NUMBER (K) FOR GIVEN INPUT FIELD.
MAPOUT - INTEGER*4 - NMC MAP NUMBER (K) FOR WANTED OUTPUT FIELD.
INTERP - INTEGER*4 - SET INTERPOLATION METHOD:
EQ 1 - LINEAR
NE 1 - BIQUADRATIC
Output arguments:
DATA - REAL*4 - ARRAY TO HOLD OUTPUT MAP (UNPACKED).
IER - INTEGER*4 - COMPLETION CONDITION FLAG
INPUT FILES: NONE
OUTPUT FILES: NONE
RETURN CONDITIONS:
IER = 0 - NO DIFFICULTIES
1 - MAPIN NOT RECOGNIZED
2 - MAPOUT NOT RECOGNIZED
3 - PARTICULAR POLA MAPOUT NOT RECOGNIZED
4 - PARTICULAR LOLA MAPOUT NOT RECOGNIZED
5 - PARTICULAR LOLA MAPIN NOT RECOGNIZED
6 - PARTICULAR POLA MAPOUT NOT RECOGNIZED
7 - PARTICULAR LOLA MAPIN NOT RECOGNIZED
8 - PARTICULAR LOLA MAPOUT NOT RECOGNIZED
THESE FLAGS ARE SET AT VARIOUS TEST LOCATIONS
PLEASE REFER TO THE CODE LISTING FOR DETAILS
W3FT33
The W3FT33 routine thickens one thinned WAFS grib grid
to A real array of 5329 numbers (73,73) 1.25 degree
grid.
USAGE: CALL W3FT33(AIN, OUT, NSFLAG)
Input argument list:
AIN - REAL 3447 WORD ARRAY WITH UNPACKED THINNED WAFS
GRIB TYPE 37-44.
NSFLAG - INTEGER = 1 AIN IS WAFS GRIB GRID 37-40 N. HEMI.
= -1 AIN IS WAFS GRIB GRID 41-44 S. HEMI.
Output argument list:
OUT - REAL (73,73) WORD ARRAY WITH THICKENED WAFS GRIB
GRID 37-44.
REMARKS:
The pole point for u and v wind components will have only
one point. If you need the pole row corrected see page 9 section
1 in Office Note 388. You need both u and v to make the
correction.
W3FT38
The W3FT38 routine computes 2.5 x 2.5 N. Hemi. grid of
145 x 37 points from spectral coefficients in a
Rhomboidal 30 resolution representing a scaler field.
USAGE: CALL W3FT38(FLN,GN,PLN,FL,WORK,TRIGS)
Input variables:
FLN 961 COMPLEX COEFF.
PLN (32,31,37) REAL SPACE WITH LEGENDRE POLYNOMIALS
COMPUTED BY W3FA12.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 29 OR 1D HEX O.N. 84
REMARKS:
MEMORY, IT WAS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME WAS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY THE RUNNING TIME WAS CUT
70 PERCENT. ADD FOLLOWING CODE TO MAIN PROGRAM TO COMPUTE EPS, PLN,
TRIGS, AND RCOS ONE TIME IN PROGRAM.
W3FT39
The W3FT39 routine computes 2.5 x 2.5 N. HEMI. grid of
145 x 37 points from spectral coefficients in a
Rhomboidal 30 resolution representing a vector field.
USAGE: CALL W3FT39(VLN,GN,PLN,FL,WORK,TRIGS,RCOS)
Input variables:
VLN ARG LIST 992 COMPLEX COEFF.
PLN ARG LIST (32,31,37) REAL SPACE WITH LEGENDRE POLYNOMIALS
COMPUTED BY W3FA12.
FL ARG LIST 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK ARG LIST 144 WORK SPACE FOR SUBR. W3FT12
TRIGS ARG LIST 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
RCOS ARG LIST 37 RECIPROCAL COSINE LATITUDES OF
2.5 X 2.5 GRID MUST BE COMPUTED BEFORE
FIRST CALL TO W3FT11 USING SR W3FA13.
Output variables:
GN ARG LIST (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 29 OR 1D O.N. 84
REMARKS:
W3FT09 WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT WAS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME WAS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY THE RUNNING TIME WAS CUT
70 PERCENT. ADD FOLLOWING CODE TO MAIN PROGRAM TO COMPUTE EPS, PLN,
TRIGS, AND RCOS ONE TIME IN PROGRAM.
W3FT40
The W3FT40 routine computes 2.5 x 2.5 S. HEMI. grid
of 145 x 37 points from spectral coefficients in
a Rhomboidal 30 resolution representing a scaler field.
USAGE: CALL W3FT40(FLN,GN,PLN,FL,WORK,TRIGS)
Input variables:
FLN 961 COMPLEX COEFF.
PLN (32,31,37) REAL SPACE WITH LEGENDRE POLYNOMIALS
COMPUTED BY W3FA12.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 30 OR 1E O.N. 84
REMARKS:
W3FT10 WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT WAS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME WAS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY THE RUNNING TIME WAS CUT
70 PERCENT. ADD FOLLOWING CODE TO MAIN PROGRAM TO COMPUTE EPS, PLN,
TRIGS, AND RCOS ONE TIME IN PROGRAM.
W3FT41
The W3FT41 routine computes 2.5 x 2.5 S. HEMI. grid of
145 x 37 points from spectral coefficients in a
Rhomboidal 30 resolution representing a vector field.
USAGE: CALL W3FT41(VLN,GN,PLN,FL,WORK,TRIGS,RCOS)
Input variables:
VLN 992 COMPLEX COEFF.
PLN (32,31,37) REAL SPACE WITH LEGENDRE POLYNOMIALS
COMPUTED BY W3FA12.
FL 31 COMPLEX SPACE FOR FOURIER COEFF.
WORK 144 REAL WORK SPACE FOR SUBR. W3FT12
TRIGS 216 PRECOMPUTED TRIG FUNCS. USED
IN W3FT12, COMPUTED BY W3FA13
RCOS 37 RECIPROCAL COSINE LATITUDES OF
2.5 X 2.5 GRID MUST BE COMPUTED BEFORE
FIRST CALL TO W3FT11 USING SUBR. W3FA13.
Output variables:
GN (145,37) GRID VALUES.
5365 POINT GRID IS TYPE 30 OR 1E HEX O.N. 84
REMARKS:
W3FT11 WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
MEMORY, IT WAS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME WAS
USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
TO USE PLN AS A THREE DIMENSION ARRAY THE RUNNING TIME WAS CUT
70 PERCENT. ADD FOLLOWING CODE TO MAIN PROGRAM TO COMPUTE EPS, PLN,
TRIGS, AND RCOS ONE TIME IN PROGRAM.
W3FT43V
The W3FT43V routine converts a global 1.0 degree lat.,lon.
361 by 181 grid to a Polar Stereographic 65 by 65 grid.
the Polar Stereographic map projection is true at 60 deg. N.
The mesh length is 381 km. and the oriention is 80 deg. W.
USAGE: CALL W3FT43V(ALOLA,APOLA,INTERP)
Input arguments:
ALOLA - 361*181 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
65341 POINT GRID. 360 * 181 ONE DEGREE
GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
TO RIGHT SIDE TO MAKE 361 * 181.
INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
Output arguments:
APOLA - 65*65 GRID OF NORTHERN HEMISPHERE.
4225 POINT GRID IS O.N.84 TYPE 27 OR 1B HEX
Input files: NONE
Output files: ERROR MESSAGE TO FORTRAN OUTPUT FILE
REMARKS:
1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 20 OTHER ARRAYS
ARE SAVED AND REUSED ON THE NEXT CALLS TO THE SUBROUTINE.
2. WIND COMPONENTS ARE NOT ROTATED TO THE 65*65 GRID ORIENTATION
AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
3. THE ABOUT 1100 POINTS BELOW THE EQUATOR WILL BE IN THIS MAP.
W3LOCDAT
The W3LOCDAT routine returns the local date and time
in the ncep absolute date and time data structure.
USAGE: CALL W3LOCDAT(IDAT)
Output variables:
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
W3MISCAN
The W3MISCAN routine reads one ssm/i scan line (64 retrievals)
from the NCEP bufr ssm/i dump file. Each scan is time
checked against the user-requested time window and
satellite id combinations. When a valid scan is read
the program returns to the calling program. The user
must pass in the type of the input ssm/i dump file, either
derived products (regardless of source) or brightness
temperatures (7-channels). If the latter is chosen, the
user has the further option of processing, in addition
to the brightness temperatures, in-line calculation of
wind speed product via the Goodberlet algorithm, and/or
in-line calculation of both wind speed and total column
precipitable water (tpw) products using the neural net
3 algorithm. If the wind speed or tpw is calculated here
(either algorithm), this subroutine will check for brightness
temperatures outside of a preset range and will return a
missing wind speed/tpw if any b. temp is unreasonable. Also,
for calculated wind speeds and tpw, this program will check
to see if the b. temps are over land or ice, and if they are
it will also return missing values since these data are
valid only over ocean.
USAGE: CALL W3MISCAN(INDTA,INLSF,INGBI,INGBD,LSAT,LPROD,LBRIT,
NNALG,GBALG,KDATE,LDATE,IGNRTM,IBUFTN,IER)
Input argument list:
INDTA - UNIT NUMBER OF NCEP BUFR SSM/I DUMP DATA SET
INLSF - UNIT NUMBER OF DIRECT ACCESS NESDIS LAND/SEA FILE
- (VALID ONLY IF LBRIT AND EITHER NNALG OR GBALG TRUE)
INGBI - UNIT NUMBER OF GRIB INDEX FILE FOR GRIB FILE
- CONTAINING GLOBAL 1-DEGREE SEA-SURFACE TEMP FIELD
- (VALID ONLY IF LBRIT AND EITHER NNALG OR GBALG TRUE)
INGBD - UNIT NUMBER OF GRIB FILE CONTAINING GLOBAL 1-DEGREE
- SEA-SURFACE TEMP FIELD (VALID ONLY IF LBRIT AND EITHER
- NNALG OR GBALG TRUE)
LSAT - 10-WORD LOGICAL ARRAY (240:249) INDICATING WHICH
SATELLITE IDS SHOULD BE PROCESSED (SEE REMARKS)
LPROD - LOGICAL INDICATING IF THE INPUT BUFR FILE CONTAINS
- PRODUCTS (REGARDLESS OF SOURCE) - IN THIS CASE ONE OR
- MORE AVAILABLE PRODUCTS CAN BE PROCESSED AND RETURNED
LBRIT - LOGICAL INDICATING IF THE INPUT BUFR FILE CONTAINS
- BRIGHTNESS TEMPERATURES - IN THIS CASE B. TEMPS ARE
- PROCESSED AND RETURNED ALONG WITH, IF REQUESTED, IN-
- LINE GENERATED PRODUCTS FROM ONE OR BOTH ALGORITHMS
- (SEE NEXT TWO SWITCHES)
THE FOLLOWING TWO SWITCHES APPLY ONLY IF LBRIT IS TRUE
NNALG - LOGICAL INDICATING IF THE SUBROUTINE SHOULD
- CALCULATE AND RETURN SSM/I WIND SPEED AND TPW
- VIA THE NEURAL NET 3 ALGORITHM (NOTE: B O T H
- WIND SPEED AND TPW ARE RETURNED HERE)
GBALG - LOGICAL INDICATING IF THE SUBROUTINE SHOULD
- CALCULATE AND RETURN SSM/I WIND SPEED VIA THE
- GOODBERLET ALGORITHM
KDATE - REQUESTED EARLIEST YEAR(YYYY), MONTH, DAY, HOUR,
- MIN FOR ACCEPTING SCANS
LDATE - REQUESTED LATEST YEAR(YYYY), MONTH, DAY, HOUR,
- MIN FOR ACCEPTING SCANS
IGNRTM - SWITCH TO INDICATE WHETHER SCANS SHOULD BE TIME-
- CHECKED (= 0) OR NOT TIME CHECKED (=1) {IF =1, ALL
- SCANS READ IN ARE PROCESSED REGARDLESS OF THEIR TIME.
- THE INPUT ARGUMENTS "KDATE" AND "LDATE" (EARLIEST AND
- LATEST DATE FOR PROCESSING DATA) ARE IGNORED IN THE
- TIME CHECKING FOR SCANS. (NOTE: THE EARLIEST AND
- LATEST DATES SHOULD STILL BE SPECIFIED TO THE
- "EXPECTED" TIME RANGE, BUT THEY WILL NOT BE USED FOR
- TIME CHECKING IN THIS CASE)}
Output argument list:
IBUFTN - OUTPUT BUFFER HOLDING DATA FOR A SCAN (1737 WORDS -
- SEE REMARKS FOR FORMAT. SOME WORDS MAY BE MISSING
- DEPENDING UPON LPROD, LBRIT, NNALG AND GBALG
IER - ERROR RETURN CODE (SEE REMARKS)
Input files:
UNIT AA - (WHERE AA IS EQUAL TO INPUT ARGUMENT 'INDTA') NCEP
- BUFR SSM/I DUMP DATA SET HOLDING SCANS (SEE REMARKS
- REGARDING ASSIGN)
UNIT BB - (WHERE BB IS EQUAL TO INPUT ARGUMENT 'INLSF')
- DIRECT ACCESS NESDIS LAND/SEA FILE (SEE REMARKS
- REGARDING ASSIGN) (VALID ONLY IF LBRIT AND EITHER
- NNALG OR GBALG TRUE)
UNIT CC - (WHERE CC IS EQUAL TO INPUT ARGUMENT 'INGBI') GRIB
- INDEX FILE FOR GRIB FILE CONTAINING GLOBAL 1-DEGREE
- SEA-SURFACE TEMPERATURE FIELD (SEE REMARKS
- REGARDING CREATION AND ASSIGN) (VALID ONLY IF LBRIT
- AND EITHER NNALG OR GBALG TRUE)
UNIT DD - (WHERE DD IS EQUAL TO INPUT ARGUMENT 'INGBD')
- UNBLOCKED GRIB FILE CONTAINING GLOBAL 1-DEGREE SEA-
- SURFACE TEMPERATURE FIELD (SEE REMARKS REGARDING
- ASSIGN) (VALID ONLY IF LBRIT AND EITHER NNALG OR
- GBALG TRUE)
Output files:
UNIT 06 - PRINTOUT
REMARKS:
RETURN CODE IER CAN HAVE THE FOLLOWING VALUES:
IER = 0 SUCCESSFUL RETURN OF SCAN
IER = 1 ALL SCANS HAVE BEEN READ, ALL DONE
IER = 2 ABNORMAL RETURN - INPUT BUFR FILE IN UNIT
'INDTA' IS EITHER EMPTY (NULL) OR IS NOT BUFR
IER = 3 ABNORMAL RETURN - REQUESTED EARLIEST AND
LATEST DATES ARE BACKWARDS
IER = 4 ABNORMAL RETURN - ERROR OPENING RANDOM
ACCESS FILE HOLDING LAND/SEA TAGS
IER = 5 ABNORMAL RETURN - THE NUMBER OF DECODED
"LEVELS" IS NOT WHAT IS EXPECTED
IER = 6 ABNORMAL RETURN - SEA-SURFACE TEMPERATURE
NOT FOUND IN GRIB INDEX FILE - ERROR RETURNED
FROM GRIB DECODER GETGB IS 96
IER = 7 ABNORMAL RETURN - SEA-SURFACE TEMPERATURE
GRIB MESSAGE HAS A DATE THAT IS EITHER:
1) MORE THAN 7-DAYS PRIOR TO THE EARLIEST
REQUESTED DATE OR 2) MORE THAN 7-DAYS AFTER
THE LATEST REQUESTED DATE
IER = 8 ABNORMAL RETURN - BYTE-ADDRESSABLE READ ERROR
FOR GRIB FILE CONTAINING SEA-SURFACE
TEMPERATURE FIELD - ERROR RETURNED FROM GRIB
DECODER GETGB IS 97-99
IER = 9 ABNORMAL RETURN - ERROR RETURNED FROM GRIB
DECODER - GETGB - FOR SEA-SURFACE
TEMPERATURE FIELD - > 0 BUT NOT 96-99
INPUT ARGUMENT LSAT IS SET-UP AS FOLLOWS:
LSAT(X) = TRUE -- PROCESS SCANS FROM SATELLITE ID X (WHERE X
IS CODE FIGURE FROM BUFR CODE TABLE 0-01-007)
LSAT(X) = FALSE - DO NOT PROCESS SCANS FROM SATELLITE ID X
X = 240 IS F-7 DMSP SATELLITE (THIS SATELLITE IS
NO LONGER AVAILABLE)
X = 241 IS F-8 DMSP SATELLITE (THIS SATELLITE IS
NO LONGER AVAILABLE)
X = 242 IS F-9 DMSP SATELLITE (THIS SATELLITE IS
NO LONGER AVAILABLE)
X = 243 IS F-10 DMSP SATELLITE (THIS SATELLITE IS
NO LONGER AVAILABLE)
X = 244 IS F-11 DMSP SATELLITE (THIS IS AVAILABLE
AS OF 8/96 BUT IS NOT CONSIDERED TO BE AN
OPERATIONAL DMSP SSM/I SATELLITE)
X = 245 IS F-12 DMSP SATELLITE (THIS SATELLITE IS
NO LONGER AVAILABLE)
X = 246 IS F-13 DMSP SATELLITE (THIS IS AVAILABLE
AND IS CONSIDERED TO BE AN OPERATIONAL
ODD DMSP SSM/I SATELLITE AS OF 8/1996)
X = 247 IS F-14 DMSP SATELLITE (THIS IS AVAILABLE
AS OF 5/97 BUT IS NOT CONSIDERED TO BE AN
OPERATIONAL DMSP SSM/I SATELLITE)
X = 248 IS F-15 DMSP SATELLITE (THIS IS AVAILABLE
AS OF 2/2000 AND IS CONSIDERED TO BE AN
OPERATIONAL ODD DMSP SSM/I SATELLITE AS OF
2/2000)
X = 249 IS RESERVED FOR A FUTURE DMSP SATELLITE
NOTE: HERE "EVEN" MEANS VALUE IN IBUFTN(1) IS AN ODD NUMBER
WHILE "ODD" MEANS VALUE IN IBUFTN(1) IS AN EVEN NUMBER
CONTENTS OF ARRAY 'IBUFTN' HOLDING ONE COMPLETE SCAN (64 INDIVIDUAL
RETRIEVLAS (1737 WORDS)
=====> ALWAYS RETURNED:
WORD CONTENTS
---- --------
1 SATELLITE ID (244 IS F-11; 246 IS F-13; 247 IS F-14;
248 IS F-15)
2 4-DIGIT YEAR FOR SCAN
3 2-DIGIT MONTH OF YEAR FOR SCAN
4 2-DIGIT DAY OF MONTH FOR SCAN
5 2-DIGIT HOUR OF DAY FOR SCAN
6 2-DIGIT MINUTE OF HOUR FOR SCAN
7 2-DIGIT SECOND OF MINUTE FOR SCAN
8 SCAN NUMBER IN ORBIT
9 ORBIT NUMBER FOR SCAN
10 RETRIEVAL #1 LATITUDE (*100 DEGREES: + N, - S)
11 RETRIEVAL #1 LONGITUDE (*100 DEGREES EAST)
12 RETRIEVAL #1 POSITION NUMBER
13 RETRIEVAL #1 SURFACE TAG (CODE FIGURE)
=====> FOR LPROD = TRUE (INPUT PRODUCTS FILE: NOTE ALL PRODUCTS
BELOW ARE AVAILABLE IN THE FNOC "OPERATIONAL" PRODUCTS
DATA DUMP; MOST NCEP PRODUCTS DATA DUMPS CONTAIN ONLY
WIND SPEED AND TOTAL PRECIPITABLE WATER):
14 RETRIEVAL #1 CLOUD WATER (*100 KILOGRAM/METER**2)
15 RETRIEVAL #1 RAIN RATE (*1000000 MILLIMETERS/SECOND)
16 RETRIEVAL #1 WIND SPEED (*10 METERS/SECOND)
17 RETRIEVAL #1 SOIL MOISTURE (MILLIMETERS)
18 RETRIEVAL #1 SEA-ICE CONCENTRATION (PER CENT)
19 RETRIEVAL #1 SEA-ICE AGE (CODE FIGURE)
20 RETRIEVAL #1 ICE EDGE (CODE FIGURE)
21 RETRIEVAL #1 TOTAL PRECIP. WATER (*10 MILLIMETERS)
22 RETRIEVAL #1 SURFACE TEMPERATURE (*100 DEG. KELVIN)
23 RETRIEVAL #1 SNOW DEPTH (MILLIMETERS)
24 RETRIEVAL #1 RAIN FLAG (CODE FIGURE)
25 RETRIEVAL #1 CALCULATED SURFACE TYPE (CODE FIGURE)
=====> FOR LBRIT = TRUE (INPUT BRIGHTNESS TEMPERATURE FILE):
26 RETRIEVAL #1 19 GHZ V BRIGHTNESS TEMP (*100 DEG. K)
27 RETRIEVAL #1 19 GHZ H BRIGHTNESS TEMP (*100 DEG. K)
28 RETRIEVAL #1 22 GHZ V BRIGHTNESS TEMP (*100 DEG. K)
29 RETRIEVAL #1 37 GHZ V BRIGHTNESS TEMP (*100 DEG. K)
30 RETRIEVAL #1 37 GHZ H BRIGHTNESS TEMP (*100 DEG. K)
31 RETRIEVAL #1 85 GHZ V BRIGHTNESS TEMP (*100 DEG. K)
32 RETRIEVAL #1 85 GHZ H BRIGHTNESS TEMP (*100 DEG. K)
=====> FOR LBRIT = TRUE AND NNALG = TRUE (INPUT BRIGHTNESS
TEMPERATURE FILE):
33 RETRIEVAL #1 NEURAL NET 3 ALGORITHM WIND SPEED
(GENERATED IN-LINE) (*10 METERS/SECOND)
34 RETRIEVAL #1 NEURAL NET 3 ALGORITHM TOTAL PRECIP.
WATER (GENERATED IN-LINE) (*10 MILLIMETERS)
=====> FOR LBRIT = TRUE AND GBALG = TRUE (INPUT BRIGHTNESS
TEMPERATURE FILE):
35 RETRIEVAL #1 GOODBERLET ALGORITHM WIND SPEED
(GENERATED IN-LINE) (*10 METERS/SECOND)
36 RETRIEVAL #1 GOODBERLET ALGORITHM RAIN FLAG
(CODE FIGURE)
37-1737 REPEAT 10-36 FOR 63 MORE RETRIEVALS
(NOTE: ALL MISSING DATA OR DATA NOT SELECTED BY
CALLING PROGRAM ARE SET TO 99999)
W3MOVDAT
The W3MOVDAT routine returns the date and time that is a given
NCEP relative time interval from an NCEP absolute date
and time. The output is in the NCEP absolute date and
time data structure.
USAGE: CALL W3MOVDAT(RINC,IDAT,JDAT)
Input variables:
RINC REAL (5) NCEP RELATIVE TIME INTERVAL
(DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS)
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
Output variables:
JDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
(JDAT IS LATER THAN IDAT IF TIME INTERVAL IS POSITIVE.)
W3NOGDS
The W3NOGDS routine makes a complete grib message from a
user supplied array of floating point or integer data
The user has the option of supplying the PDS or an
integer array that will be used to create a PDS
(with the routine W3FI68). The user must also
supply other necessary info; See usage section below.
USAGE: CALL W3NOGDS(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
W3NOGDS. 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.
2 = NO GDS WILL BE INCLUDED...for international grids
*** THIS IS AN EXCEPTION TO 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 OR 2
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.
W3PRADAT
The W3PRADAT routine forms various character strings useful
in describing an NCEP absolute date and time.
USAGE: CALL W3PRADAT(IDAT,CDAT)
Input variables:
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
Output variables:
CDAT CHARACTER*10 (8) STRINGS DESCRIBING DATE AND TIME
CDAT(1) IS THE NAME OF THE DAY OF THE WEEK;
CDAT(2) IS THE NAME OF THE MONTH;
CDAT(3) IS THE DAY OF MONTH, YEAR;
CDAT(4) IS THE DATE IN YYYY-MM-DD FORMAT;
CDAT(5) IS THE DATE IN YYYY.DOY FORMAT;
CDAT(6) IS THE TIME IN HH:MM:SS FORMAT;
CDAT(7) IS THE MILLISECONDS IN .XXX FORMAT;
CDAT(8) IS THE TIME ZONE.)
W3PRRDAT
The W3PRRDAT routine forms various character strings useful
in describing an ncep relative time interval.
USAGE: CALL W3PRRDAT(RINC,CINC)
Input variables:
RINC REAL (5) NCEP RELATIVE TIME INTERVAL
(DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS)
Output variables:
CINC CHARACTER*10 (8) STRINGS DESCRIBING TIME INTERVAL
CINC(1) IS THE SIGNED INTEGER NUMBER OF DAYS;
CINC(2) IS THE TIME IN HH:MM:SS FORMAT;
CINC(3) IS THE MILLISECONDS IN .XXX FORMAT;
CINC(4) IS THE SIGNED REAL NUMBER OF DAYS;
CINC(5) IS THE SIGNED REAL NUMBER OF HOURS;
CINC(6) IS THE SIGNED REAL NUMBER OF MINUTES;
CINC(7) IS THE SIGNED REAL NUMBER OF SECONDS;
CINC(8) IS THE SIGNED REAL NUMBER OF MILLISECONDS.
W3REDDAT
The W3REDDAT routine reduces an NCEP relative time interval
into one of seven canonical forms, depending on thei
input it value.
First reduced format type (IT=-1):
RINC(1) is an arbitrary integer.
RINC(2) is an integer between 00 and 23, inclusive.
RINC(3) is an integer between 00 and 59, inclusive.
RINC(4) is an integer between 00 and 59, inclusive.
RINC(5) is an integer between 000 and 999, inclusive.
If RINC(1) is negative, then the time interval is negative.
Second reduced format type (IT=0):
If the time interval is not negative, then the format is:
RINC(1) is zero or a positive integer.
RINC(2) is an integer between 00 and 23, inclusive.
RINC(3) is an integer between 00 and 59, inclusive.
RINC(4) is an integer between 00 and 59, inclusive.
RINC(5) is an integer between 000 and 999, inclusive.
Otherwise if the time interval is negative, then the format is:
RINC(1) is zero or a negative integer.
RINC(2) is an integer between 00 and -23, inclusive.
RINC(3) is an integer between 00 and -59, inclusive.
RINC(4) is an integer between 00 and -59, inclusive.
RINC(5) is an integer between 000 and -999, inclusive.
Days format type (IT=1):
RINC(1) is arbitrary.
RINC(2) is zero.
RINC(3) is zero.
RINC(4) is zero.
RINC(5) is zero.
Hours format type (IT=2):
RINC(1) is zero.
RINC(2) is arbitrary.
RINC(3) is zero.
RINC(4) is zero.
RINC(5) is zero.
(This format should not express time intervals longer than 300 years.)
Minutes format type (IT=3):
RINC(1) is zero.
RINC(2) is zero.
RINC(3) is arbitrary.
RINC(4) is zero.
RINC(5) is zero.
(This format should not express time intervals longer than five years.)
Seconds format type (IT=4):
RINC(1) is zero.
RINC(2) is zero.
RINC(3) is zero.
RINC(4) is arbitrary.
RINC(5) is zero.
(This format should not express time intervals longer than one month.)
Milliseconds format type (IT=5):
RINC(1) is zero.
RINC(2) is zero.
RINC(3) is zero.
RINC(4) is zero.
RINC(5) is arbitrary.
(This format should not express time intervals longer than one hour.)
USAGE: CALL W3REDDAT(IT,RINC,DINC)
Input variables:
IT INTEGER RELATIVE TIME INTERVAL FORMAT TYPE
(-1 FOR FIRST REDUCED TYPE (HOURS ALWAYS POSITIVE),
0 FOR SECOND REDUCED TYPE (HOURS CAN BE NEGATIVE),
1 FOR DAYS ONLY, 2 FOR HOURS ONLY, 3 FOR MINUTES ONLY,
4 FOR SECONDS ONLY, 5 FOR MILLISECONDS ONLY)
RINC REAL (5) NCEP RELATIVE TIME INTERVAL
(DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS)
Output variables:
DINC REAL (5) NCEP RELATIVE TIME INTERVAL
(DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS)
W3TAGB
The W3TAGB routine prints identifying information for
operational codes. called at the beginning of a code,
w3tagb prints the program name, the year and julian day
of its compilation, and the responsible organization.
On a 2nd line it prints the starting date-time. Called at
the end of a job, entry routine, w3tage prints a line with
the c ending date-time and a 2nd line stating the program name
and that it has ended.
USAGE: CALL W3TAGB(PROG, KYR, JD, LF, ORG)
Input variables:
PROG PROGRAM NAME CHARACTER*1
KYR YEAR OF COMPILATION INTEGER
JD JULIAN DAY OF COMPILATION INTEGER
LF HUNDRETHS OF JULIAN DAY OF COMPILATION
INTEGER (RANGE IS 0 TO 99 INCLUSIVE)
ORG ORGANIZATION CODE (SUCH AS WD42)
CHARACTER*1
Output variables:
DDATE YEAR AND JULIAN DAY (NEAREST HUNDRETH)
OF COMPILATION REAL
REMARKS:
FULL WORD USED IN ORDER TO HAVE AT LEAST
SEVEN DECIMAL DIGITS ACCURACY FOR VALUE OF DDATE.
SUBPROGRAM CLOCK AND DATE MAY DIFFER FOR EACH TYPE
COMPUTER. YOU MAY HAVE TO CHANGE THEM FOR ANOTHER
TYPE OF COMPUTER.
W3TRNARG
The W3TRNARG routine reads argument lines from standard input
and obtains, subdirectory, bufr tankname, characters to
append for adding an orbit, and options for limiting the
time window.
USAGE: CALL W3TRNARG(SUBDIR,LSUBDR,TANKID,LTNKID,APPCHR,LAPCHR,
TLFLAG,IYMDHB,IYMDHE,IERR)
Output argument list:
SUBDIR - NAME OF SUB-DIRECTORY INCLUDING BUFR DATA TYPE WHERE
BUFR DATA TANK IS LOCATED.
LSUBDR - NUMBER OF CHARACTERS IN 'SUBDIR'.
TANKID - NAME OF FILE INCLUDING BUFR DATA SUB-TYPE CONTAINING
BUFR DATA TANK.
LTNKID - NUMBER OF CHARACTERS IN 'TANKID'.
APPCHR - CHARACTERS TO BE APPENDED TO 'TANKID' GIVING A
UNIQUELY NAMED FILE TO CONTAIN THE ORIGINAL TANK
WITH ONE ORBIT APPENDED TO IT.
LAPCHR - NUMBER OF CHARACTERS IN 'APPCHR'.
TLFLAG - 8 CHARACTER FLAG INDICATING WHETHER TIME ACCEPTANCE
CHECKS ATRE TO BE PERFORMED.
= 'TIMLIM ' : PERFORM TIME ACCEPTANCE CHECKS.
= 'NOTIMLIM' : DO NOT PERFORM TIME ACCEPTANCE CHECKS.
JDATE AND KDATE ARE DISREGARDED.
IYMDHB - START OF TIME ACCEPTANCE WINDOW, IN FORM YYYYMMDDHH.
IYMDHE - END OF TIME ACCEPTANCE WINDOW, IN FORM YYYYMMDDHH.
Input files :
UNIT 05 - STANDARD INPUT FOR PASSING IN ARGUMENTS. ARGUMENTS
(FOR LIST-DIRECTED I/O) ARE AS FOLLOWS :
RECORD 1 - (1) SUBDIRECTORY. CONTAINS BUFR DATA TYPE
(2) TANKFILE. CONTAINS BUFR DATA SUB-TYPE
(3) APPEND CHARACTERS. APPENDED TO TANKFILE
TO GIVE UNIQUE OUTPUT FILE NAME.
(4) DATE IN YYYYMMDDHH FORMAT.
NEXT THREE RECORDS ARE OPTIONAL :
RECORD 2 - (1) TIME LIMIT FLAG. MAY BE EITHER
'TIMLIM ' OR 'NOTIMLIM'. SEE
DESCRIPTION OF 'TLFLAG' ABOVE.
(DEFAULT IS 'NOTIMLIM')
RECORD 3 - (1) HOURS BEFORE CURRENT TIME.
RECORD 4 - (1) HOURS AFTER CURRENT TIME.
IF 'TIMLIM ' IS SPECIFIED IN RECORD 2, THE
QUANTITIES IN RECORDS 3 AND 4 ARE USED TO
COMPUTE THE LIMITS OF THE TIME ACCEPTANCE WINDOW.
IF RECORDS 3 AND 4 ARE OMITTED, THE VALUES
DEFAULT TO -48 (48 HOURS BEFORE CURRENT TIME)
AND +12 (12 HOURS AFTER CURRENT TIME).
IF 'NOTIMLIM ' IS SPECIFIED IN RECORD 2, THEN
THESE QUANTITIES ARE NOT USED REGARDLESS OF WHETHER
OR NOT THEY WERE SPECIFIED.
W3UNPK77
The W3UNPK77 routine decodes a single report from bufr messages
in a jbufr-type data file. Currently wind profiler,
nexrad (vad) wind and goes sounding/radiance data types
are valid. Report is returned in quasi-office note 29
unpacked format (see remarks 4.).
USAGE: CALL W3UNPK77(IDATE,IHE,IHL,LUNIT,RDATA,IRET)
Input argument list:
IDATE - 4-WORD ARRAY HOLDING "CENTRAL" DATE TO PROCESS
- (YYYY, MM, DD, HH)
IHE - NUMBER OF WHOLE HOURS RELATIVE TO "IDATE" FOR DATE OF
- EARLIEST BUFR MESSAGE THAT IS TO BE DECODED; EARLIEST
- DATE IS "IDATE" + "IHE" HOURS (IF "IHE" IS POSITIVE,
- LATEST MESSAGE DATE IS AFTER "IDATE"; IF "IHE" IS
- NEGATIVE LATEST MESSAGE DATE IS PRIOR TO "IDATE")
- EXAMPLE: IF IHE=1, THEN EARLIEST DATE IS 1-HR AFTER
- IDATE; IF IHE=-3, THEN EARLIEST DATE IS 3-HR PRIOR
- TO IDATE
IHL - NUMBER OF WHOLE HOURS RELATIVE TO "IDATE" FOR DATE OF
- LATEST BUFR MESSAGE THAT IS TO BE DECODED; LATEST
- DATE IS "IDATE" + ("IHL" HOURS PLUS 59 MIN) IF "IHL"
- IS POSITIVE (LATEST MESSAGE DATE IS AFTER "IDATE"),
- AND "IDATE" + ("IHL"+1 HOURS MINUS 1 MIN) IF "IHL"
- IS NEGATIVE (LATEST MESSAGE DATE IS PRIOR TO "IDATE")
- EXAMPLE: IF IHL=3, THEN LATEST DATE IS 3-HR 59-MIN
- AFTER IDATE; IF IHL=-2, THEN LATEST DATE IS 1-HR 1-MIN
- PRIOR TO IDATE
LUNIT - FORTRAN UNIT NUMBER FOR INPUT DATA FILE
IRET - CONTROLS DEGREE OF UNIT 6 PRINTOUT (.GE. 0 -LIMITED
- PRINTOUT; = -1 SOME ADDITIONAL DIAGNOSTIC PRINTOUT;
= .LT. -1 -EXTENSIVE PRINTOUT) (SEE REMARKS 3.)
Output argument list: (INCLUDING WORK ARRAYS)
RDATA - SINGLE REPORT RETURNED AN A QUASI-OFFICE NOTE 29
- UNPACKED FORMAT (SEE REMARKS 4.) (MINIMUM SIZE IS
- 1200 WORDS)
IRET - RETURN CODE AS FOLLOWS:
IRET = 0 ---> REPORT SUCCESSFULLY RETURNED
IRET > 0 ---> NO REPORT RETURNED DUE TO:
= 1 ---> ALL REPORTS READ IN, END
= 2 ---> LAT AND/OR LON DATA MISSING
= 3 ---> RESERVED
= 4 ---> SOME/ALL DATE INFORMATION MISSING
= 5 ---> NO DATA LEVELS PROCESSED (ALL LEVELS ARE MISSING)
= 6 ---> NUMBER OF LEVELS IN REPORT HEADER IS NOT 1
= 7 ---> NUMBER OF LEVELS IN ANOTHER SINGLE LEVEL SEQUENCE
IS NOT 1
Input files:
UNIT AA - (WHERE AA IS LUNIT ABOVE) FILE HOLDING THE DATA
- IN THE FORM OF BUFR MESSAGES
Output files:
UNIT 06 - PRINTOUT
REMARKS:
1) A CONDITION CODE (STOP) OF 15 WILL OCCUR IF THE INPUT
DATES FOR START AND/OR STOP TIME ARE SPECIFIED INCORRECTLY.
2) A CONDITION CODE (STOP) OF 22 WILL OCCUR IF THE
CHARACTERS ON THIS MACHINE ARE NEITHER ASCII NOR EBCDIC.
3) THE INPUT ARGUMENT "IRET" SHOULD BE SET PRIOR TO EACH
CALL TO THIS SUBROUTINE.
4) BELOW IS THE FORMAT OF AN UNPACKED REPORT IN OUTPUT
ARRAY RDATA (EACH WORD REPRESENTS A FULL-WORD ACCORDING
TO THE MACHINE)
N O T E : THIS IS THE SAME FORMAT AS FOR W3LIB ROUTINE W3FI77
EXCEPT WHERE NOTED
FORMAT FOR WIND PROFILER REPORTS
WORD CONTENT UNIT FORMAT
---- ---------------------- ------------------- ---------
1 LATITUDE 0.01 DEGREES REAL
2 LONGITUDE 0.01 DEGREES WEST REAL
3 TIME SIGNIFICANCE (BUFR CODE TABLE "0 08 021") INTEGER
4 OBSERVATION TIME 0.01 HOURS (UTC) REAL
5 YEAR/MONTH 4-CHAR. 'YYMM' CHARACTER
LEFT-JUSTIFIED
6 DAY/HOUR 4-CHARACTERS 'DDHH' CHARACTER
7 STATION ELEVATION METERS REAL
8 SUBMODE/EDITION NO. (SM X 10) + ED. NO. INTEGER
(ED. NO.=2, CONSTANT; SEE &,~)
9 REPORT TYPE 71 (CONSTANT) INTEGER
10 AVERAGING TIME MINUTES INTEGER
(NEGATIVE MEANS PRIOR TO OBS. TIME)
11 STN. ID. (FIRST 4 CHAR.) 4-CHARACTERS CHARACTER
LEFT-JUSTIFIED
12 STN. ID. (LAST 2 CHAR.) 2-CHARACTERS CHARACTER
LEFT-JUSTIFIED
13-34 ZEROED OUT - NOT USED INTEGER
35 CATEGORY 10, NO. LEVELS COUNT INTEGER
36 CATEGORY 10, DATA INDEX COUNT INTEGER
37 CATEGORY 11, NO. LEVELS COUNT INTEGER
38 CATEGORY 11, DATA INDEX COUNT INTEGER
39-42 ZEROED OUT - NOT USED INTEGER
43-END UNPACKED DATA GROUPS (FOLLOWS) REAL
CATEGORY 10 - WIND PROFILER SFC DATA (EACH LEVEL, SEE WORD 35 ABOVE)
WORD PARAMETER UNITS FORMAT
---- --------- ----------------- -------------
(SEE @)1 SEA-LEVEL PRESSURE 0.1 MILLIBARS REAL
(SEE *)2 STATION PRESSURE 0.1 MILLIBARS REAL
(SEE @)3 HORIZ. WIND DIR. DEGREES REAL
(SEE @)4 HORIZ. WIND SPEED 0.1 M/S REAL
(SEE @)5 AIR TEMPERATURE 0.1 DEGREES K REAL
(SEE @)6 RELATIVE HUMIDITY PERCENT REAL
(SEE @)7 RAINFALL RATE 0.0000001 M/S REAL
CATEGORY 11 - WIND PROFILER UPPER-AIR DATA (FIRST LEVEL IS SURFACE)
(EACH LEVEL, SEE WORD 37 ABOVE)
WORD PARAMETER UNITS FORMAT
---- --------- ----------------- -------------
1 HEIGHT ABOVE SEA-LVL METERS REAL
2 HORIZ. WIND DIR. DEGREES REAL
3 HORIZ. WIND SPEED 0.1 M/S REAL
4 QUALITY CODE (SEE %) INTEGER
5 VERT. WIND COMP. (W) 0.01 M/S REAL
(SEE @)6 HORIZ. CONSENSUS NO. (SEE $) INTEGER
(SEE @)7 VERT. CONSENSUS NO. (SEE $) INTEGER
(SEE @)8 SPECTRAL PEAK POWER DB REAL
9 HORIZ. WIND SPEED 0.1 M/S REAL
STANDARD DEVIATION 0.1 M/S REAL
10 VERT. WIND COMPONENT 0.1 M/S REAL
STANDARD DEVIATION 0.1 M/S REAL
(SEE @)11 MODE (SEE #) INTEGER
*- ALWAYS MISSING
&- THIS IS A CHANGE FROM FORMAT IN W3LIB ROUTINE W3FI77
%- 0 - MEDIAN AND SHEAR CHECKS BOTH PASSED
2 - MEDIAN AND SHEAR CHECK RESULTS INCONCLUSIVE
4 - MEDIAN CHECK PASSED; SHEAR CHECK FAILED
8 - MEDIAN CHECK FAILED; SHEAR CHECK PASSED
12 - MEDIAN AND SHEAR CHECKS BOTH FAILED
$- NO. OF INDIVIDUAL 6-MINUTE AVERAGE MEASUREMENTS THAT WERE
INCLUDED IN FINAL ESTIMATE OF AVERAGED WIND (RANGE: 0, 2-10)
(BASED ON A ONE-HOUR AVERAGE)
#- 1 - DATA FROM LOW MODE
2 - DATA FROM HIGH MODE
3 - MISSING
@- THIS PARAMETER IS NO LONGER AVAILABLE AFTER 3/2002 AND IS SET
TO MISSING (99999 FOR INTEGER OR 99999. FOR REAL)
~- SUBMODE IS NO LONGER AVAILABLE AFTER 3/2002 AND IS SET TO 3
(ITS MISSING VALUE)
FORMAT FOR GOES SOUNDING/RADIANCE REPORTS
WORD CONTENT UNIT FORMAT
---- ---------------------- ------------------- ---------
1 LATITUDE 0.01 DEGREES REAL
2 LONGITUDE 0.01 DEGREES WEST REAL
3 FIELD OF VIEW NUMBER NUMERIC INTEGER
4 OBSERVATION TIME 0.01 HOURS (UTC) REAL
5 YEAR/MONTH 4-CHAR. 'YYMM' CHARACTER
LEFT-JUSTIFIED
6 DAY/HOUR 4-CHARACTERS 'DDHH' CHARACTER
7 STATION ELEVATION METERS REAL
8 PROCESS. TECHNIQUE (=21-CLEAR; INTEGER
8 PROCESS. TECHNIQUE =23-CLOUD-CORRECTED)
9 REPORT TYPE 61 (CONSTANT) INTEGER
10 QUALITY FLAG (BUFR CODE TABLE "0 33 002") INTEGER
11 STN. ID. (FIRST 4 CHAR.) 4-CHARACTERS CHARACTER
LEFT-JUSTIFIED
12 STN. ID. (LAST 2 CHAR.) 2-CHARACTERS CHARACTER
LEFT-JUSTIFIED (SEE %)
13-26 ZEROED OUT - NOT USED
27 CATEGORY 08, NO. LEVELS COUNT INTEGER
28 CATEGORY 08, DATA INDEX COUNT INTEGER
29-38 ZEROED OUT - NOT USED
39 CATEGORY 12, NO. LEVELS COUNT INTEGER
40 CATEGORY 12, DATA INDEX COUNT INTEGER
41 CATEGORY 13, NO. LEVELS COUNT INTEGER
42 CATEGORY 13, DATA INDEX COUNT INTEGER
43-END UNPACKED DATA GROUPS (FOLLOWS) REAL
CATEGORY 12 - SATELLITE SOUNDING LEVEL DATA (FIRST LEVEL IS SURFACE;
EACH LEVEL, SEE 39 ABOVE)
WORD PARAMETER UNITS FORMAT
---- --------- ----------------- -------------
1 PRESSURE 0.1 MILLIBARS REAL
2 GEOPOTENTIAL METERS REAL
#- FIRST CHARACTER IS Q.M. FOR THE DATUM
4 DEWPOINT TEMPERATURE 0.1 DEGREES C REAL
5 NOT USED SET TO MISSING REAL
6 NOT USED SET TO MISSING REAL
7 QUALITY MARKERS 4-CHARACTERS CHARACTER
LEFT-JUSTIFIED (SEE &)
CATEGORY 13 - SATELLITE RADIANCE "LEVEL" DATA (EACH "LEVEL", SEE
41 ABOVE)
WORD PARAMETER UNITS FORMAT
---- --------- ----------------- -------------
1 CHANNEL NUMBER NUMERIC INTEGER
2 BRIGHTNESS TEMP. 0.01 DEG. KELVIN REAL
3 QUALITY MARKERS 4-CHARACTERS CHARACTER
LEFT-JUSTIFIED (SEE &&)
CATEGORY 08 - ADDITIONAL (MISCELLANEOUS) DATA (EACH LEVEL, SEE @
BELOW)
WORD PARAMETER UNITS FORMAT
---- --------- ----------------- -------------
1 VARIABLE SEE @ BELOW REAL
2 CODE FIGURE SEE @ BELOW REAL
3 MARKERS 2-CHARACTERS CHARACTER
LEFT-JUSTIFIED (SEE #)
%- SIXTH CHARACTER OF STATION ID IS A TAGGED AS FOLLOWS:
"I" - GOES-EVEN-1 (252, 256, ...) SAT. , CLEAR COLUMN RETR.
"J" - GOES-EVEN-1 (252, 256, ...) SAT. , CLD-CORRECTED RETR.
"L" - GOES-ODD-1 (253, 257, ...) SAT. , CLEAR COLUMN RETR.
"M" - GOES-ODD-1 (253, 257, ...) SAT. , CLD-CORRECTED RETR.
"O" - GOES-EVEN-2 (254, 258, ...) SAT. , CLEAR COLUMN RETR.
"P" - GOES-EVEN-2 (254, 258, ...) SAT. , CLD-CORRECTED RETR.
"Q" - GOES-ODD-2 (251, 255, ...) SAT. , CLEAR COLUMN RETR.
"R" - GOES-ODD-2 (251, 255, ...) SAT. , CLD-CORRECTED RETR.
"?" - EITHER SATELLITE AND/OR RETRIEVAL TYPE UNKNOWN
&- FIRST CHARACTER IS Q.M. FOR GEOPOTENTIAL
SECOND CHARACTER IS Q.M. FOR TEMPERATURE
THIRD CHARACTER IS Q.M. FOR DEWPOINT TEMPERATURE
FOURTH CHARACTER IS NOT USED
" " - INDICATES DATA NOT SUSPECT
"Q" - INDICATES DATA ARE SUSPECT
"F" - INDICATES DATA ARE BAD
&&- FIRST CHARACTER IS Q.M. FOR BRIGHTNESS TEMPERATURE
SECOND-FOURTH CHARACTERS ARE NOT USED
" " - INDICATES DATA NOT SUSPECT
"Q" - INDICATES DATA ARE SUSPECT
"F" - INDICATES DATA ARE BAD
@- NUMBER OF "LEVELS" FROM WORD 27. MAXIMUM IS 12, AND ARE ORDERED
AS FOLLOWS (IF A DATUM ARE MISSING THAT LEVEL NOT STORED)
1 - LIFTED INDEX ---------- .01 DEG. KELVIN -- C. FIG. 250.
2 - TOTAL PRECIP. WATER -- .01 MILLIMETERS -- C. FIG. 251.
3 - 1. TO .9 SIGMA P.WATER- .01 MILLIMETERS -- C. FIG. 252.
4 - .9 TO .7 SIGMA P.WATER- .01 MILLIMETERS -- C. FIG. 253.
5 - .7 TO .3 SIGMA P.WATER- .01 MILLIMETERS -- C. FIG. 254.
6 - SKIN TEMPERATURE ----- .01 DEG. KELVIN -- C. FIG. 255.
7 - CLOUD TOP TEMPERATURE- .01 DEG. KELVIN -- C. FIG. 256.
8 - CLOUD TOP PRESSURE --- .1 MILLIBARS ----- C. FIG. 257.
9 - CLOUD AMOUNT (BUFR TBL. C.T. 0-20-011) -- C. FIG. 258.
10 - INSTR. DATA USED IN PROC.
(BUFR TBL. C.T. 0-02-021) -- C. FIG. 259.
11 - SOLAR ZENITH ANGLE --- .01 DEGREE ------- C. FIG. 260.
12 - SAT. ZENITH ANGLE ---- .01 DEGREE ------- C. FIG. 261.
#- FIRST CHARACTER IS Q.M. FOR THE DATUM
" " - INDICATES DATA NOT SUSPECT
"Q" - INDICATES DATA ARE SUSPECT
"F" - INDICATES DATA ARE BAD
SECOND CHARACTER IS NOT USED
FORMAT FOR NEXRAD (VAD) WIND REPORTS
WORD CONTENT UNIT FORMAT
---- ---------------------- ------------------- ---------
1 LATITUDE 0.01 DEGREES REAL
2 LONGITUDE 0.01 DEGREES WEST REAL
3 ** RESERVED ** SET TO 99999 INTEGER
4 OBSERVATION TIME 0.01 HOURS (UTC) REAL
5 YEAR/MONTH 4-CHAR. 'YYMM' CHARACTER
LEFT-JUSTIFIED
6 DAY/HOUR 4-CHARACTERS 'DDHH' CHARACTER
7 STATION ELEVATION METERS REAL
8 ** RESERVED ** SET TO 99999 INTEGER
9 REPORT TYPE 72 (CONSTANT) INTEGER
10 ** RESERVED ** SET TO 99999 INTEGER
11 STN. ID. (FIRST 4 CHAR.) 4-CHARACTERS CHARACTER
LEFT-JUSTIFIED
12 STN. ID. (LAST 2 CHAR.) 2-CHARACTERS CHARACTER
LEFT-JUSTIFIED
13-18 ZEROED OUT - NOT USED INTEGER
19 CATEGORY 04, NO. LEVELS COUNT INTEGER
20 CATEGORY 04, DATA INDEX COUNT INTEGER
21-42 ZEROED OUT - NOT USED INTEGER
43-END UNPACKED DATA GROUPS (FOLLOWS) REAL
CATEGORY 04 - UPPER-AIR WINDS-BY-HEIGHT DATA(FIRST LEVEL IS SURFACE)
(EACH LEVEL, SEE WORD 19 ABOVE)
WORD PARAMETER UNITS FORMAT
---- --------- ----------------- -------------
1 HEIGHT ABOVE SEA-LVL METERS REAL
2 HORIZ. WIND DIR. DEGREES REAL
3 HORIZ. WIND SPEED 0.1 M/S (SEE *) REAL
4 QUALITY MARKERS 4-CHARACTERS CHARACTER
LEFT-JUSTIFIED (SEE %)
*- UNITS HERE DIFFER FROM THOSE IN TRUE UNPACKED OFFICE NOTE 29
(WHERE UNITS ARE KNOTS)
%- THE FIRST THREE CHARACTERS ARE ALWAYS BLANK, THE FOURTH
CHARACTER IS A "CONFIDENCE LEVEL" WHICH IS RELATED TO THE ROOT-
MEAN-SQUARE VECTOR ERROR FOR THE HORIZONTAL WIND. IT IS
DEFINED AS FOLLOWS:
'A' = RMS OF 1.9 KNOTS
'B' = RMS OF 3.9 KNOTS
'C' = RMS OF 5.8 KNOTS
'D' = RMS OF 7.8 KNOTS
'E' = RMS OF 9.7 KNOTS
'F' = RMS OF 11.7 KNOTS
'G' = RMS > 13.6 KNOTS
FOR ALL REPORT TYPES, MISSING VALUES ARE:
99999. FOR REAL
99999 FOR INTEGER
9'S FOR CHARACTERS IN WORD 5, 6 OF HEADER
BLANK FOR CHARACTERS IN WORD 11, 12 OF HEADER
AND FOR CHARACTERS IN ANY CATEGORY LEVEL
W3UTCDAT
The W3UTCDAT routine returns the utc (Greenwich) date
and time in the NCEP absolute date and time data structure.
USAGE: CALL W3UTCDAT(IDAT)
OUTPUT VARIABLES:
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
W3VALDAT
The W3VALDAT function returns true if the input is a valid
NCEP absolute date and time.
USAGE: ...=W3VALDAT(IDAT)
Input variables:
IDAT INTEGER (8) NCEP ABSOLUTE DATE AND TIME
(YEAR, MONTH, DAY, TIME ZONE,
HOUR, MINUTE, SECOND, MILLISECOND)
Output variables:
W3VALDAT LOGICAL TRUE IF IDAT IS A VALID NCEP DATE AND TIME
W3YMDH4
The W3YMDH4 routine obtains the components of the NMC date
word, or given its components, forms an NMC type date
word. The packing is done using base 32.
If the first byte of IDATE is less than 101, then the old
Office Note 84 packing is assumed. A four-digit year is
always returned. To pack the "old" way, pass in a 2-digit
year.
This program will work for the years ranging from A.D. 101
through 79359.
On unpacking, years less than or equal to 100 are returned
as follows:
0-50 2000--2050
51-100 1951--2000
USAGE: CALL W3YMDH4 (IDATE, IYEAR, MONTH, IDAY, IHOUR, NN)
Input variables:
IDATE LEFT 4 BYTES OF INTEGER 64 BIT WORD, OR CAN BE
CHARACTER*1 IDATE(4) OR CHARACTER*4 IDATE.
IYEAR INTEGER YEAR (4 DIGITS or 2 DIGITS for ON84)
MONTH INTEGER MONTH
IDAY INTEGER DAY
IHOUR INTEGER HOUR
NN INTEGER CODE:
.EQ. 0 PACK IYEAR, MONTH, IDAY, IHOUR INTO IDATE
.NE. 0 UNPACK IDATE INTO IYEAR, MONTH, IDAY, IHOUR
Output variables:
IDATE LEFT 4 BYTES OF INTEGER 64 BIT WORD, OR CAN BE
CHARACTER*1 IDATE(4) OR CHARACTER*4 IDATE.
IYEAR INTEGER YEAR (4 DIGITS)
MONTH INTEGER MONTH
IDAY INTEGER DAY
IHOUR INTEGER HOUR
XDOPEN
The XDOPEN routine and the corresponding entries: "ERRSET",
"XDCHEK", "XDCLOS", "XDWRIT", "XDREAD", and "XDFORM" are
placed here to allow calling routines which reside on
both the NAS and the CRAY to compile. These subroutines
perform NAS-SPECIFIC functions, but have no corresponding
function on the CRAY. Therefore this subroutine is a "DUMMY".
ft06 print is provided to alert the user that the call to
the subroutine results in an immediate return with no function.
USAGE: CALL XDOPEN
REMARKS:
NONE
XSTORE
The XSTORE routine stores an 8-byte (fullword) value
through consecutive storage locations.
USAGE: CALL XSTORE(COUT,CON,MWORDS)
Input argument list:
CON - CONSTANT TO BE STORED INTO "MWORDS" CONSECUTIVE
FULLWORDS BEGINNING WITH "COUT" ARRAY
MWORDS - NUMBER OF FULLWORDS IN "COUT" ARRAY TO STORE "CON";
MUST BE .GT. ZERO (NOT CHECKED FOR THIS)
Output argument list: (INCLUDING WORK ARRAYS)
COUT - STARTING ADDRESS FOR ARRAY OF "MWORDS" FULLWORDS
SET TO THE CONTENTS OF THE VALUE "CON"
REMARKS:
THE VERSION OF THIS SUBROUTINE ON THE HDS COMMON LIBRARY
IS NAS-SPECIFIC SUBR. WRITTEN IN ASSEMBLY LANG. TO ALLOW FAST
COMPUTATION TIME. SUBR. PLACED IN CRAY W3LIB TO ALLOW CODES TO
COMPILE ON BOTH THE HDS AND CRAY MACHINES.
SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.
W3lib.tar |
Library contains FORTRAN 90 decoder/encoder
routines for GRIB edition 1.
Date posted: 9/05/2012 |
bacio.tar |
Library contains FORTRAN 90 I/O
routines for GRIB edition 1.
Date posted: 9/05/2012 |