NCEPLIBS-w3emc 2.12.0
|
BUFR message decoder. More...
Go to the source code of this file.
Functions/Subroutines | |
subroutine | fi8801 (iptr, ident, msga, istack, iwork, kdata, ivals, mstack, knr, index, maxr, maxd, kfxy1, aname1, aunit1, iscal1, irfvl1, iwide1, irf1sw, inewvl, kfxy2, aname2, aunit2, iscal2, irfvl2, iwide2, kfxy3, aname3, aunit3, iscal3, irfvl3, iwide3, iunitb, iunitd, itbld, itbld2, kptrb, kptrd) |
Data extraction. | |
subroutine | fi8802 (iptr, ident, msga, kdata, kfxy1, ll, mstack, aunit1, iwide1, irfvl1, iscal1, jdesc, ivals, j, maxr, maxd, kptrb) |
Process element descriptor. | |
subroutine | fi8803 (iptr, ident, msga, kdata, ivals, mstack, iwide1, irfvl1, iscal1, j, jdesc, maxr, maxd) |
Process compressed data. | |
subroutine | fi8804 (iptr, msga, kdata, ivals, mstack, iwide1, irfvl1, iscal1, j, ll, jdesc, maxr, maxd) |
Process serial data. | |
subroutine | fi8805 (iptr, ident, msga, iwork, lx, ly, kdata, ll, knr, mstack, maxr, maxd) |
Process a replication descriptor. | |
subroutine | fi8806 (iptr, lx, ly, ident, msga, kdata, ivals, mstack, iwide1, irfvl1, iscal1, j, ll, kfxy1, iwork, jdesc, maxr, maxd, kptrb) |
Process operator descriptors. | |
subroutine | fi8807 (iptr, iwork, itbld, itbld2, jdesc, kptrd) |
Process queue descriptor. | |
subroutine | fi8808 (iptr, iwork, lf, lx, ly, jdesc) |
Program history log: | |
subroutine | fi8809 (ident, mstack, kdata, iptr, maxr, maxd) |
Reformat profiler w hgt increments. | |
subroutine | fi8810 (ident, mstack, kdata, iptr, maxr, maxd) |
Reformat profiler edition 2 data. | |
subroutine | fi8811 (iptr, ident, mstack, kdata, knr, ldata, lstack, maxd, maxr) |
Expand data/descriptor replication. | |
subroutine | fi8812 (iptr, iunitb, iunitd, istack, nrdesc, kptrb, kptrd, irf1sw, newref, itbld, itbld2, kfxy1, aname1, aunit1, iscal1, irfvl1, iwide1, kfxy2, aname2, aunit2, iscal2, irfvl2, iwide2) |
subroutine | fi8813 (iptr, maxr, maxd, mstack, kdata, ident, kptrd, kptrb, itbld, aname1, aunit1, kfxy1, iscal1, irfvl1, iwide1, iunitb) |
subroutine | fi8814 (ascchr, npos, newval, ierr, iptr) |
subroutine | fi8815 (iptr, ident, jdesc, kdata, kfxy3, maxr, maxd, aname3, aunit3, iscal3, irfvl3, iwide3, keyset, ibflag, ierr) |
subroutine | fi8818 (iptr, kfxy1, aname1, aunit1, iscal1, irfvl1, iwide1, kfxy2, aname2, aunit2, iscal2, irfvl2, iwide2, kptrb) |
subroutine | fi8819 (iptr, itbld, itbld2, kptrd) |
subroutine | fi8820 (itbld, iunitd, iptr, itbld2, kptrd) |
subroutine | w3fi88 (iptr, ident, msga, istack, mstack, kdata, knr, index, ldata, lstack, maxr, maxd, iunitb, iunitd) |
This set of routines will decode a bufr message and place information extracted from the bufr message into selected arrays for the user. | |
subroutine fi8801 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(*) | istack, | ||
integer, dimension(*) | iwork, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(maxr) | knr, | ||
integer | index, | ||
integer | maxr, | ||
integer | maxd, | ||
integer, dimension(*) | kfxy1, | ||
character*40, dimension(*) | aname1, | ||
character*24, dimension(*) | aunit1, | ||
integer, dimension(*) | iscal1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iwide1, | ||
irf1sw, | |||
inewvl, | |||
integer, dimension(*) | kfxy2, | ||
character*64, dimension(*) | aname2, | ||
character*24, dimension(*) | aunit2, | ||
integer, dimension(*) | iscal2, | ||
integer, dimension(*) | irfvl2, | ||
integer, dimension(*) | iwide2, | ||
integer, dimension(200) | kfxy3, | ||
character*64, dimension(200) | aname3, | ||
character*24, dimension(200) | aunit3, | ||
integer, dimension(200) | iscal3, | ||
integer, dimension(200) | irfvl3, | ||
integer, dimension(200) | iwide3, | ||
iunitb, | |||
iunitd, | |||
integer, dimension(20,*) | itbld, | ||
integer, dimension(20,*) | itbld2, | ||
integer, dimension(*) | kptrb, | ||
integer, dimension(*) | kptrd | ||
) |
Data extraction.
Program history log:
[in] | IPTR | See w3fi88() routine docblock |
[in] | IDENT | See w3fi88() routine docblock |
[in] | MSGA | Array containing bufr message |
[in,out] | ISTACK | Original array of descriptors extracted from source bufr message. |
[in] | MSTACK | Working array of descriptors (expanded)and scaling factor |
[in,out] | KFXY1+KFXY2+KFXY3 | Image of current descriptor |
[in] | INDEX | |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
[in] | IUNITB | Unit number of data set holding table b |
[in] | IUNITD | Unit number of data set holding table d |
[out] | IWORK | Working descriptor list |
[out] | 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
[out] | AUNIT1+AUNIT2+AUNIT3 | Units for descriptor |
[out] | ANAME1+ANAME2+ANAME3 | Descriptor name |
[out] | ISCAL1+ISCAL2+ISCAL3 | Scale for value of descriptor |
[out] | IRFVL1+IRFVL2+IRFVL3 | Reference value for descriptor |
[out] | IWIDE1+IWIDE2+IWIDE3 | Bit width for value of descriptor |
ITBLD+ITBLD2 | ||
KPTRB | ||
KPTRD | ||
KNR | ||
IVALS | ||
IRF1SW | ||
INEWVL |
Error return:
subroutine fi8802 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | kfxy1, | ||
ll, | |||
integer, dimension(2,maxd) | mstack, | ||
character*24, dimension(*) | aunit1, | ||
integer, dimension(*) | iwide1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iscal1, | ||
integer | jdesc, | ||
integer, dimension(*) | ivals, | ||
integer | j, | ||
maxr, | |||
maxd, | |||
integer, dimension(*) | kptrb | ||
) |
Process element descriptor.
Program history log: 88-09-01 91-04-04 Changed to pass width of text fields in bytes
[in] | IPTR | See w3fi88 routine docblock |
[in] | IDENT | See w3fi88 routine docblock |
[in] | MSGA | Array containing bufr message |
[in,out] | 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) |
[in,out] | KFXY1 | Image of current descriptor |
[in] | MSTACK | |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 arrays containing data from table b |
[out] | AUNIT1 | Units for descriptor |
[out] | ISCAL1 | Scale for value of descriptor |
[out] | IRFVL1 | Reference value for descriptor |
[out] | IWIDE1 | Bit width for value of descriptor |
LL | ||
JDESC | ||
IVALS | ||
J | ||
KPTRB |
Error return: IPTR(1) = 3 - Message contains a descriptor with f=0 that does not exist in table b.
subroutine fi8803 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(*) | iwide1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iscal1, | ||
integer | j, | ||
integer | jdesc, | ||
integer | maxr, | ||
integer | maxd | ||
) |
Process compressed data.
Program history log:
[in] | IPTR | See w3fi88 routine docblock |
[in] | IDENT | See w3fi88 routine docblock |
[in] | MSGA | Array containing bufr message,mstack, |
[in] | IVALS | Array of single parameter values |
[in,out] | J | |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
[out] | 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 |
[out] | ISCAL1 | Scale for value of descriptor |
[out] | IRFVL1 | Reference value for descriptor |
[out] | IWIDE1 | Bit width for value of descriptor |
MSTACK | ||
JDESC |
subroutine fi8804 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | msga, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(*) | iwide1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iscal1, | ||
integer | j, | ||
integer | ll, | ||
integer | jdesc, | ||
integer | maxr, | ||
integer | maxd | ||
) |
Process serial data.
Program history log:
[in] | IPTR | See w3fi88() routine docblock |
[in] | MSGA | Array containing bufr message |
[in,out] | IVALS | Array of single parameter values |
[in,out] | J | |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
[out] | 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 |
[out] | ISCAL1 | Scale for value of descriptor |
[out] | IRFVL1 | Reference value for descriptor |
[out] | IWIDE1 | Bit width for value of descriptorE |
MSTACK | ||
LL | ||
JDESC |
Error return: IPTR(1) = 13 - Bit width on ascii chars not a multiple of 8
subroutine fi8805 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(*) | iwork, | ||
integer | lx, | ||
integer | ly, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer | ll, | ||
integer, dimension(maxr) | knr, | ||
integer, dimension(2,maxd) | mstack, | ||
maxr, | |||
maxd | |||
) |
Process a replication descriptor.
Program history log:
[in] | IWORK | Working descriptor list |
[in] | IPTR | See w3fi88 routine docblock |
[in] | IDENT | See w3fi88 routine docblock |
[in,out] | LX | X portion of current descriptor |
[in,out] | LY | Y portion of current descriptor |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
[out] | 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) |
MSGA | ||
LL | ||
KNR | ||
MSTACK |
Error return:
subroutine fi8806 | ( | integer, dimension(*) | iptr, |
integer | lx, | ||
integer | ly, | ||
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(*) | iwide1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iscal1, | ||
integer | j, | ||
integer | ll, | ||
integer, dimension(*) | kfxy1, | ||
integer, dimension(*) | iwork, | ||
integer | jdesc, | ||
maxr, | |||
maxd, | |||
integer, dimension(*) | kptrb | ||
) |
Process operator descriptors.
Program history log:
[in] | IPTR | See w3fi88 routine docblock |
[in] | LX | X portion of current descriptor |
[in] | LY | Y portion of current descriptor |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
[out] | 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 |
[out] | ISCAL1 | Scale for value of descriptor |
[out] | IRFVL1 | Reference value for descriptor |
[out] | IWIDE1 | Bit width for value of descriptor |
IDENT | ||
MSGA | ||
IVALS | ||
MSTACK | ||
J | ||
LL | ||
KFXY1 | ||
IWORK | ||
JDESC | ||
KPTRB |
Error return: IPTR(1) = 5 - Erroneous x value in data descriptor operator
subroutine fi8807 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | iwork, | ||
integer, dimension(20,*) | itbld, | ||
integer, dimension(20,*) | itbld2, | ||
integer | jdesc, | ||
integer, dimension(*) | kptrd | ||
) |
Process queue descriptor.
Program history log:
[in] | IWORK | Working descriptor list |
[in] | IPTR | See w3fi88 routine docblock |
[in] | ITBLD+ITBLD2 | Array containing descriptor queues |
[in] | JDESC | Queue descriptor to be expanded |
KPTRD |
subroutine fi8808 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | iwork, | ||
integer | lf, | ||
integer | lx, | ||
integer | ly, | ||
integer | jdesc | ||
) |
subroutine fi8809 | ( | integer, dimension(*) | ident, |
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | iptr, | ||
maxr, | |||
maxd | |||
) |
Reformat profiler w hgt increments.
Program history log:
[in] | IDENT | Array contains message information extracted from BUFR message
|
[in] | MSTACK | Working descriptor list and scaling factor |
[in] | 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) |
[in] | IPTR | See w3fi88 |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
subroutine fi8810 | ( | integer, dimension(*) | ident, |
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | iptr, | ||
maxr, | |||
maxd | |||
) |
Reformat profiler edition 2 data.
Program history log:
[in] | IDENT | - ARRAY CONTAINS MESSAGE INFORMATION EXTRACTED FROM BUFR MESSAGE -
|
[in] | MSTACK | Working descriptor list and scaling factor |
[in] | 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) |
[in] | IPTR | See w3fi88 |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
subroutine fi8811 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(maxr) | knr, | ||
integer, dimension(maxd) | ldata, | ||
integer, dimension(2,maxd) | lstack, | ||
maxd, | |||
maxr | |||
) |
Expand data/descriptor replication.
Program history log:
[in] | IPTR | See w3fi88 routine docblock |
[in] | IDENT | See w3fi88 routine docblock |
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message |
[in] | 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 |
[in,out] | 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) |
[in,out] | MSTACK | List of descriptors and scale values |
KNR | ||
LDATA | ||
LSTACK |
Error return:
subroutine fi8812 | ( | integer, dimension(*) | iptr, |
integer | iunitb, | ||
integer | iunitd, | ||
integer, dimension(*) | istack, | ||
integer | nrdesc, | ||
integer, dimension(*) | kptrb, | ||
integer, dimension(*) | kptrd, | ||
irf1sw, | |||
integer, dimension(*) | newref, | ||
integer, dimension(20,*) | itbld, | ||
integer, dimension(20,*) | itbld2, | ||
integer, dimension(*) | kfxy1, | ||
character*40, dimension(*) | aname1, | ||
character*24, dimension(*) | aunit1, | ||
integer, dimension(*) | iscal1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iwide1, | ||
integer, dimension(*) | kfxy2, | ||
character*64, dimension(*) | aname2, | ||
character*24, dimension(*) | aunit2, | ||
integer, dimension(*) | iscal2, | ||
integer, dimension(*) | irfvl2, | ||
integer, dimension(*) | iwide2 | ||
) |
subroutine fi8813 | ( | integer, dimension(*) | iptr, |
integer | maxr, | ||
integer | maxd, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | ident, | ||
integer, dimension(*) | kptrd, | ||
integer, dimension(*) | kptrb, | ||
integer, dimension(20,*) | itbld, | ||
character*40, dimension(*) | aname1, | ||
character*24, dimension(*) | aunit1, | ||
integer, dimension(*) | kfxy1, | ||
integer, dimension(*) | iscal1, | ||
integer, dimension(*) | irfvl1, | ||
integer, dimension(*) | iwide1, | ||
integer | iunitb | ||
) |
subroutine fi8814 | ( | character*64 | ascchr, |
npos, | |||
newval, | |||
integer | ierr, | ||
integer, dimension(*) | iptr | ||
) |
subroutine fi8815 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer | jdesc, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(*) | kfxy3, | ||
integer | maxr, | ||
integer | maxd, | ||
character*64, dimension(*) | aname3, | ||
character*24, dimension(*) | aunit3, | ||
integer, dimension(*) | iscal3, | ||
integer, dimension(*) | irfvl3, | ||
integer, dimension(*) | iwide3, | ||
integer | keyset, | ||
ibflag, | |||
ierr | |||
) |
subroutine fi8818 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | kfxy1, | ||
character*40, dimension(*) | aname1, | ||
character*24, dimension(*) | aunit1, | ||
integer, dimension(*) | iscal1, | ||
integer, dimension(3,*) | irfvl1, | ||
integer, dimension(*) | iwide1, | ||
integer, dimension(*) | kfxy2, | ||
character*64, dimension(*) | aname2, | ||
character*24, dimension(*) | aunit2, | ||
integer, dimension(*) | iscal2, | ||
integer, dimension(*) | irfvl2, | ||
integer, dimension(*) | iwide2, | ||
integer, dimension(*) | kptrb | ||
) |
subroutine fi8819 | ( | integer, dimension(*) | iptr, |
integer, dimension(20,*) | itbld, | ||
integer, dimension(20,*) | itbld2, | ||
integer, dimension(*) | kptrd | ||
) |
subroutine fi8820 | ( | integer, dimension(20,*) | itbld, |
iunitd, | |||
integer, dimension(*) | iptr, | ||
integer, dimension(20,*) | itbld2, | ||
integer, dimension(*) | kptrd | ||
) |
subroutine w3fi88 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(*) | istack, | ||
integer, dimension(2,maxd) | mstack, | ||
integer, dimension(maxr,maxd) | kdata, | ||
integer, dimension(maxr) | knr, | ||
integer | index, | ||
integer, dimension(maxd) | ldata, | ||
integer, dimension(2,maxd) | lstack, | ||
maxr, | |||
maxd, | |||
iunitb, | |||
iunitd | |||
) |
This set of routines will decode a bufr message and place information extracted from the bufr message into selected arrays for the user.
the array kdata can now be sized by the user by indicating the maximum number of subsets and the maximum number of descriptors that are expected in the course of decoding selected input data. this allows for realistic sizing of kdata and the mstack arrays. this version also allows for the inclusion of the unit numbers for tables b and d into the argument list. this routine does not include ifod processing.
Program history log:
For those users of the bufr decoder that are processing sets of bufr messages that include type 11 messages, coding has been added to allow the recovery of the added or modified table b entries by writing them to a disk file available to the user. this is accomplished with no change to the calling sequence. table b entries will be designated as follows: IUNITB - Is the unit number for the master table b. IUNITB+1 - Will be the unit number for the table b entries that are to be used in the decoding of subsequent messages. this device will be formatted the same the disk file on iunitb.
[in] | MSGA | Array containing supposed bufr message size is determined by user, can be greater than 15000 bytes. | ||||
[in] | MAXR | Maximum number of reports/subsets that may be contained in a bufr message | ||||
[in] | 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 | ||||
[in] | IUNITB | Unit number of data set holding table b, this is the number of a pair of data sets -IUNITB+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. | ||||
[in] | IUNITD | Unit number of data set holding tab | ||||
[out] | ISTACK | Original array of descriptors extracted from source bufr message. | ||||
[out] | MSTACK | (A,B)-LEVEL B Descriptor number (limited to value of input argument maxd)
| ||||
[out] | IPTR | Utility array (should have at last 42 entries)
| ||||
[out] | IDENT | Array contains message information extracted from BUFR message:
| ||||
[out] | 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) | ||||
[out] | INDEX | Pointer to available subset | ||||
KNR | ||||||
LDATA | ||||||
LSTACK |
Arrays containing data from table b new - base arrays containing data from table b
New - ancillary arrays containing data from table b containing table b entries extracted from type 11 bufr messages
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
Error returns: IPTR(1)
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.
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)