NCEPLIBS-w3emc 2.12.0
|
BUFR message decoder. More...
Go to the source code of this file.
Functions/Subroutines | |
subroutine | fi6701 (iptr, ident, msga, istack, iwork, aname, kdata, ivals, mstack, aunits, kdesc, mwidth, mref, mscale, knr, index) |
Data extraction. | |
subroutine | fi6702 (iptr, ident, msga, kdata, kdesc, ll, mstack, aunits, mwidth, mref, mscale, jdesc, ivals, j) |
Process standard descriptor. | |
subroutine | fi6703 (iptr, ident, msga, kdata, ivals, mstack, mwidth, mref, mscale, j, jdesc) |
Process compressed data and place individual elements into output array. | |
subroutine | fi6704 (iptr, msga, kdata, ivals, mstack, mwidth, mref, mscale, j, ll, jdesc) |
Process data that is not compressed. | |
subroutine | fi6705 (iptr, ident, msga, iwork, lx, ly, kdata, ll, knr, mstack) |
Process a replication descriptor, must extract number of replications of n descriptors from the data stream. | |
subroutine | fi6706 (iptr, lx, ly, ident, msga, kdata, ivals, mstack, mwidth, mref, mscale, j, ll, kdesc, iwork, jdesc) |
Process operator descriptors. | |
subroutine | fi6707 (iptr, iwork, itbld, jdesc) |
Substitute descriptor queue for queue descriptor. | |
subroutine | fi6708 (iptr, iwork, lf, lx, ly, jdesc) |
Subroutine FI6708. | |
subroutine | fi6709 (ident, mstack, kdata, iptr) |
Reformat decoded profiler data to show heights instead of height increments. | |
subroutine | fi6710 (ident, mstack, kdata, iptr) |
Reformat profiler edition 2 data. | |
subroutine | w3fi67 (iptr, ident, msga, istack, mstack, kdata, knr, index) |
This set of routines will decode a BUFR message and place information extracted from the BUFR message into selected arrays for the user. | |
subroutine fi6701 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(*) | istack, | ||
integer, dimension(*) | iwork, | ||
character*40, dimension(*) | aname, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,*) | mstack, | ||
character*24, dimension(*) | aunits, | ||
integer, dimension(*) | kdesc, | ||
integer, dimension(*) | mwidth, | ||
integer, dimension(700,3) | mref, | ||
integer, dimension(*) | mscale, | ||
integer, dimension(*) | knr, | ||
integer | index | ||
) |
Data extraction.
Program history log:
[in] | IPTR | See w5fi67 routine docblock. |
[in] | IDENT | See w3fi67 routine docblock. |
[in] | MSGA | Array containing bufr message. |
[in,out] | ISTACK | [in] Original array of descriptors extracted from source bufr message. [out] Arrays containing data from table b. |
[in] | MSTACK | Working array of descriptors (expanded)and scaling factor. |
[in,out] | KDESC | Image of current descriptor. |
[in] | INDEX | |
KNR | ||
[out] | IWORK | Working descriptor list |
IVALS | ||
[out] | KDATA | Array containing decoded reports from bufr message kdata(report number,parameter number). |
[out] | ANAME | Descriptor name.. |
[out] | AUNITS | Units for descriptor. |
[out] | MSCALE | Scale for value of descriptor. |
[out] | MREF | Reference value for descriptor. |
[out] | MWIDTH | Bit width for value of descriptor. |
subroutine fi6702 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | kdesc, | ||
ll, | |||
integer, dimension(2,*) | mstack, | ||
character*24, dimension(*) | aunits, | ||
integer, dimension(*) | mwidth, | ||
integer, dimension(700,3) | mref, | ||
integer, dimension(*) | mscale, | ||
integer | jdesc, | ||
integer, dimension(*) | ivals, | ||
integer | j | ||
) |
Process standard descriptor.
Program history log:
[in] | IPTR | See w3fi67 routine docblock. |
[in] | IDENT | See w3fi67 routine docblock. |
[in] | MSGA | Array containing bufr message. |
[in,out] | KDATA | Array containing decoded reports from bufr message. KDATA(Report number, parameter number) |
[in,out] | KDESC | Image of current descriptor. |
[in] | MSTACK | |
LL | ||
[out] | AUNITS | Units for descriptor. |
[out] | MSCALE | Scale for value of descriptor. |
[out] | MREF | Reference value for descriptor. |
[out] | MWIDTH | Bit width for value of descriptor. |
JDESC | ||
[in] | IVALS | Array of single parameter values. |
J |
subroutine fi6703 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,*) | mstack, | ||
integer, dimension(*) | mwidth, | ||
integer, dimension(700,3) | mref, | ||
integer, dimension(*) | mscale, | ||
integer | j, | ||
integer | jdesc | ||
) |
Process compressed data and place individual elements into output array.
[in] | IPTR | See w3fi67() routine docblock. |
[in] | IDENT | See w3fi67() routine docblock. |
[in] | MSGA | Array containing bufr message, mstack. |
[in] | MSTACK | |
[in] | IVALS | Array of single parameter values. |
[in,out] | J | |
[out] | KDATA | Array containing decoded reports from bufr message. kdata(report number,parameter number). |
JDESC | Arrays Containing data from table b. | |
[out] | MSCALE | Scale for value of descriptor. |
[out] | MREF | Reference value for descriptor. |
[out] | MWIDTH | Bit width for value of descriptor. |
subroutine fi6704 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | msga, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,*) | mstack, | ||
integer, dimension(*) | mwidth, | ||
integer, dimension(700,3) | mref, | ||
integer, dimension(*) | mscale, | ||
integer | j, | ||
integer | ll, | ||
integer | jdesc | ||
) |
Process data that is not compressed.
[in] | IPTR | See w3fi67 routine docblock |
[in] | MSGA | Array containing bufr message |
[in,out] | IVALS | Array of single parameter values |
[out] | KDATA | Array containing decoded reports from bufr message. kdata(report number,parameter number) |
[in,out] | J | [in] ? [out] arrays containing data from table b |
[out] | MSCALE | Scale for value of descriptor |
[in] | MSTACK | |
LL | ||
JDESC | ||
[out] | MREF | Reference value for descriptor |
[out] | MWIDTH | Bit width for value of descriptor |
subroutine fi6705 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(*) | iwork, | ||
integer | lx, | ||
integer | ly, | ||
integer, dimension(500,*) | kdata, | ||
integer | ll, | ||
integer, dimension(*) | knr, | ||
integer, dimension(2,*) | mstack | ||
) |
Process a replication descriptor, must extract number of replications of n descriptors from the data stream.
Program history log:
[in] | IWORK | Working descriptor list |
[in] | IPTR | See w3fi67 routine docblock |
[in] | IDENT | See w3fi67 routine docblock |
[in,out] | LX | X portion of current descriptor |
[in,out] | LY | Y portion of current descriptor |
[out] | KDATA | Array containing decoded reports from bufr message. kdata(report number,parameter number) |
LL | ||
KNR | ||
MSTACK | ||
MSGA |
subroutine fi6706 | ( | integer, dimension(*) | iptr, |
integer | lx, | ||
integer | ly, | ||
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | ivals, | ||
integer, dimension(2,*) | mstack, | ||
integer, dimension(*) | mwidth, | ||
integer, dimension(700,3) | mref, | ||
integer, dimension(*) | mscale, | ||
integer | j, | ||
integer | ll, | ||
integer, dimension(*) | kdesc, | ||
integer, dimension(*) | iwork, | ||
integer | jdesc | ||
) |
Process operator descriptors.
Program history log:
[in] | IPTR | See w3fi67 routine docblock. |
[in] | LX | X portion of current descriptor. |
[in] | LY | Y portion of current descriptor. |
[out] | KDATA | Array containing decoded reports from bufr message. kdata(report number,parameter number) arrays containing data from table b |
[out] | MSCALE | Scale for value of descriptor |
[out] | MREF | Reference value for descriptor |
[out] | MWIDTH | Bit width for value of descriptor |
IDENT | ||
MSGA | ||
IVALS | ||
MSTACK | ||
J | ||
LL | ||
KDESC | ||
IWORK | ||
JDESC |
subroutine fi6707 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | iwork, | ||
integer, dimension(500,11) | itbld, | ||
integer | jdesc | ||
) |
Substitute descriptor queue for queue descriptor.
Program history log:
[in] | IWORK | Working descriptor list. |
[in] | IPTR | See w3fi67 routine docblock. |
[in] | ITBLD | Array containing descriptor queues. |
[in] | JDESC | Queue descriptor to be expanded. |
subroutine fi6708 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | iwork, | ||
integer | lf, | ||
integer | lx, | ||
integer | ly, | ||
integer | jdesc | ||
) |
Subroutine FI6708.
[in,out] | IPTR | See w3fi67() routine docblock. |
[in] | IWORK | Working descriptor list. |
LF | ||
LX | ||
LY | ||
[in] | JDESC | Queue descriptor to be expanded. |
subroutine fi6709 | ( | integer, dimension(*) | ident, |
integer, dimension(2,*) | mstack, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | iptr | ||
) |
Reformat decoded profiler data to show heights instead of height 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 |
[in] | IPTR | See w3fi67 |
subroutine fi6710 | ( | integer, dimension(*) | ident, |
integer, dimension(2,1600) | mstack, | ||
integer, dimension(500,1600) | kdata, | ||
integer, dimension(*) | iptr | ||
) |
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 w3fi67 |
subroutine w3fi67 | ( | integer, dimension(*) | iptr, |
integer, dimension(*) | ident, | ||
integer, dimension(*) | msga, | ||
integer, dimension(*) | istack, | ||
integer, dimension(2,*) | mstack, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | knr, | ||
integer | index | ||
) |
This set of routines will decode a BUFR message and place information extracted from the BUFR message into selected arrays for the user.
Those arrays are described in the output argument list. This routine does not include ifod processing.
Program history log:
[in] | MSGA | Array containing supposed bufr message. | ||||
[out] | ISTACK | Original array of descriptors extracted from source bufr message. | ||||
[out] | MSTACK | (A,B)
| ||||
[out] | IPTR | Utility array.
| ||||
[out] | IDENT | Array contains message information extracted from bufr message
| ||||
[out] | KDATA | Array containing decoded reports from bufr message. | ||||
[in] | KNR | kdata(report number,parameter number) arrays containing data from table b
| ||||
[out] | INDEX | Pointer to available subset. |
IPTR(1):
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.
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
ATTRIBUTES: LANGUAGE: FORTRAN 77 MACHINE: NAS