NCEPLIBS-w3emc 2.12.0
|
Generate bufr message. More...
Go to the source code of this file.
Functions/Subroutines | |
subroutine | fi8501 (kary, istep, kclass, kseg, idata, rdata, kdata, nsub, kdesc, nrdesc, ierrtn) |
Perform replication of descriptors. | |
subroutine | fi8502 (, kbufr, kclass, kseg, kdesc, nrdesc, i, istep, kary, kdata, isect3, krfvsw, newrfv, ldesc, ierrtn, indexb) |
Process an operator descriptor. | |
subroutine | fi8503 (i, kdesc, nrdesc, isect3, iunitd, kseq, knum, klist, ierrtn) |
Expand sequence descriptor. | |
subroutine | fi8505 (mif, mdesc, nr, ierrtn) |
Convert descriptors fxy to decimal. | |
subroutine | fi8506 (istep, isect3, kary, jdesc, newnr, kdesc, nrdesc, ldesc, aname, aunits, kscale, krfval, kwidth, krfvsw, newrfv, kseq, knum, klist, ibfsiz, kdata, kbufr, ierrtn, indexb) |
Process data in non-compressed format. | |
subroutine | fi8508 (istep, iunitb, idata, kdesc, nrdesc, atext, ksub, kary, kdata, ldesc, aname, aunits, kscale, krfval, krfvsw, isect3, kwidth, kassoc, iunitd, kseq, knum, klist, ierrtn, indexb) |
Combine integer/text data. | |
subroutine | fi8509 (istep, iunitb, rdata, kdesc, nrdesc, atext, ksub, kary, kdata, ldesc, aname, aunits, kscale, krfval, krfvsw, isect3, kwidth, kassoc, iunitd, kseq, knum, klist, ierrtn, indexb) |
Convert real/text input to integer. | |
subroutine | fi8511 (isect3, kary, jif, jdesc, newnr, kif, kdesc, nrdesc, ierrtn) |
Rebuild kdesc from jdesc. | |
subroutine | fi8512 (iunitb, isect3, kdesc, nrdesc, kary, ierrtn, ldesc, aname, aunits, kscale, krfval, kwidth, krfvsw, iunitd, kseq, knum, klist, indexb) |
Read in table B. | |
subroutine | fi8513 (iunitd, isect3, kseq, knum, klist, ierrtn) |
Read in table D. | |
subroutine | w3fi85 (istep, iunitb, iunitd, ibfsiz, isect1, isect3, jif, jdesc, newnr, idata, rdata, atext, kassoc, kif, kdesc, nrdesc, isec2d, isec2b, kdata, kary, kbufr, ierrtn) |
Using information available in supplied arrays, generate a bufr message (wmo code fm94). | |
subroutine fi8501 | ( | integer, dimension(*) | kary, |
integer | istep, | ||
integer | kclass, | ||
integer | kseg, | ||
integer, dimension(*) | idata, | ||
real, dimension(*) | rdata, | ||
integer, dimension(500,*) | kdata, | ||
nsub, | |||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
integer | ierrtn | ||
) |
Perform replication of descriptors.
Program history log:
[in] | ISTEP | |
[in] | KCLASS | |
[in] | KSEG | |
[in] | IDATA | |
[in] | RDATA | |
[in] | KDATA | |
[in] | NSUB | Current subset |
[in,out] | KDESC | (modified [out]) List of descriptors |
[in,out] | NRDESC | Number of (new [out]) descriptors in kdesc |
[out] | IERRTN | Error return value |
KARY |
subroutine fi8502 | ( | kbufr, | |
integer | kclass, | ||
integer | kseg, | ||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
integer | i, | ||
istep, | |||
integer, dimension(*) | kary, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | isect3, | ||
integer, dimension(*) | krfvsw, | ||
integer, dimension(*) | newrfv, | ||
integer, dimension(*) | ldesc, | ||
integer | ierrtn, | ||
indexb | |||
) |
Process an operator descriptor.
Program history log:
[in] | KCLASS | |
[in] | KSEG | |
[in,out] | KDESC | |
[in,out] | NRDESC | |
[in] | I | |
[in] | ISTEP | |
[in,out] | KARY | |
[out] | IERRTN | Error return value |
KBUFR | ||
KDATA | ||
ISECT3 | ||
KRFVSW | ||
NEWRFV | ||
LDESC | ||
INDEXB |
subroutine fi8503 | ( | integer | i, |
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
integer, dimension(*) | isect3, | ||
integer | iunitd, | ||
integer, dimension(*) | kseq, | ||
integer, dimension(*) | knum, | ||
integer, dimension(300,*) | klist, | ||
integer | ierrtn | ||
) |
Expand sequence descriptor.
Program history log:
[in,out] | I | Current position in descriptor list |
[in,out] | KDESC | List (modified [out]) of descriptors |
[in,out] | NRDESC | Number (new [out]) of descriptors in kdesc |
[in] | IUNITD | |
[in] | KSEQ | |
[in] | KNUM | |
[in] | KLIST | |
[out] | IERRTN | Error return value |
ISECT3 |
subroutine fi8505 | ( | mif, | |
integer, dimension(3,*) | mdesc, | ||
integer | nr, | ||
ierrtn | |||
) |
Convert descriptors fxy to decimal.
Program history log:
[in] | MIF | input flag |
[in,out] | MDESC | list of descriptors in f x y (decimal [out]) form |
[in] | NR | number of descriptors in mdesc |
[out] | IERRTN | error return value |
subroutine fi8506 | ( | integer | istep, |
integer, dimension(*) | isect3, | ||
integer, dimension(*) | kary, | ||
integer, dimension(3,*) | jdesc, | ||
integer | newnr, | ||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
integer, dimension(*) | ldesc, | ||
character*40, dimension(*) | aname, | ||
character*25, dimension(*) | aunits, | ||
integer, dimension(*) | kscale, | ||
integer, dimension(*) | krfval, | ||
integer, dimension(*) | kwidth, | ||
integer, dimension(*) | krfvsw, | ||
integer, dimension(*) | newrfv, | ||
integer, dimension(*) | kseq, | ||
integer, dimension(*) | knum, | ||
integer, dimension(300,*) | klist, | ||
ibfsiz, | |||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | kbufr, | ||
integer | ierrtn, | ||
integer, dimension(*) | indexb | ||
) |
Process data in non-compressed format.
Program history log:
[in] | ISTEP | |
[in] | ISECT3 | |
[in] | KARY | |
[in] | JDESC | |
[in] | NEWNR | |
[in] | KDESC | |
[in] | NRDESC | |
[in] | LDESC | |
[in] | ANAME | |
[in] | AUNITS | |
[in] | KSCALE | |
[in] | KRFVAL | |
[in] | KWIDTH | |
[in] | KRFVSW | |
[in] | NEWRFV | |
[in] | KSEQ | |
[in] | KNUM | |
[in] | KLIST | |
[out] | KDATA | |
[out] | KBUFR | |
[out] | IERRTN | |
IBFSIZ | ||
INDEXB |
subroutine fi8508 | ( | integer | istep, |
integer | iunitb, | ||
integer, dimension(*) | idata, | ||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
character*1, dimension(*) | atext, | ||
integer | ksub, | ||
integer, dimension(*) | kary, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | ldesc, | ||
character*40, dimension(*) | aname, | ||
character*25, dimension(*) | aunits, | ||
integer, dimension(*) | kscale, | ||
integer, dimension(*) | krfval, | ||
integer, dimension(*) | krfvsw, | ||
integer, dimension(*) | isect3, | ||
integer, dimension(*) | kwidth, | ||
integer, dimension(*) | kassoc, | ||
integer | iunitd, | ||
integer, dimension(*) | kseq, | ||
integer, dimension(*) | knum, | ||
integer, dimension(300,*) | klist, | ||
ierrtn, | |||
integer, dimension(*) | indexb | ||
) |
Combine integer/text data.
Program history log:
[in] | ISTEP | |
[in] | IUNITB | Unit number of device containing table b |
[in] | IDATA | Integer working array |
[in] | KDESC | Expanded descriptor set |
[in] | NRDESC | Number of descriptors in kdesc |
[in] | ATEXT | Text data for ccitt ia5 and text operator fields |
[in] | KSUB | Subset number |
[in] | KARY | Working array |
[in] | ISECT3 | |
[out] | KDATA | Array containing integer subsets |
[out] | LDESC | List of table b descriptors (decimal) |
[out] | ANAME | List of descriptor names |
[out] | AUNITS | Units for each descriptor |
[out] | KSCALE | Base 10 scale factor for each descriptor |
[out] | KRFVAL | Reference value for each descriptor |
[out] | KRFVSW | |
[out] | KWIDTH | Standard bit width to contain each value for specific descriptor |
[out] | KASSOC | |
[out] | IERRTN | Error return flag |
IUNITD | ||
KSEQ | ||
KNUM | ||
KLIST | ||
INDEXB |
subroutine fi8509 | ( | integer | istep, |
integer | iunitb, | ||
real, dimension(*) | rdata, | ||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
character*1, dimension(*) | atext, | ||
integer | ksub, | ||
integer, dimension(*) | kary, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | ldesc, | ||
character*40, dimension(*) | aname, | ||
character*25, dimension(*) | aunits, | ||
integer, dimension(*) | kscale, | ||
integer, dimension(*) | krfval, | ||
integer, dimension(*) | krfvsw, | ||
integer, dimension(*) | isect3, | ||
integer, dimension(*) | kwidth, | ||
integer, dimension(*) | kassoc, | ||
integer | iunitd, | ||
integer, dimension(*) | kseq, | ||
integer, dimension(*) | knum, | ||
integer, dimension(300,*) | klist, | ||
integer | ierrtn, | ||
integer, dimension(*) | indexb | ||
) |
Convert real/text input to integer.
Program history log:
[in] | IUNITB | unit number of device containing table b |
[in] | RDATA | real working array |
[in] | KDESC | expanded descriptor set |
[in] | NRDESC | number of descriptors in kdesc |
[in] | ATEXT | text data for ccitt ia5 and text operator fields |
[in] | KSUB | subset number |
[in] | KARY | working array |
[in] | ISECT3 | |
[in] | IUNITD | |
[out] | KDATA | Array containing integer subsets |
[out] | LDESC | List of table b descriptors (decimal) |
[out] | ANAME | List of descriptor names |
[out] | AUNITS | Units for each descriptor |
[out] | KSCALE | Base 10 scale factor for each descriptor |
[out] | KRFVAL | Reference value for each descriptor |
[out] | KRFVSW | |
[out] | KASSOC | |
[out] | KWIDTH | Standard bit width to contain each value for specific descriptor |
[out] | IERRTN | Error return flag |
[out] | KNUM | |
[out] | KLIST | |
ISTEP | ||
KSEQ | ||
INDEXB |
subroutine fi8511 | ( | integer, dimension(*) | isect3, |
integer, dimension(*) | kary, | ||
integer | jif, | ||
integer, dimension(3,*) | jdesc, | ||
integer | newnr, | ||
integer | kif, | ||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
integer | ierrtn | ||
) |
Rebuild kdesc from jdesc.
Program history log:
[in] | ISECT3 | |
[in] | KARY | Utility - array see main routine |
[in] | JIF | Descriptor input form flag |
[in] | JDESC | List of descriptors for section 3 |
[in] | NEWNR | Number of descriptors in jdesc |
[out] | KIF | Descriptor form |
[out] | KDESC | Working list of descriptors |
[out] | NRDESC | Number of descriptors in kdesc |
[out] | IERRTN | Error return
|
subroutine fi8512 | ( | integer | iunitb, |
integer, dimension(*) | isect3, | ||
integer, dimension(3,*) | kdesc, | ||
integer | nrdesc, | ||
integer, dimension(*) | kary, | ||
integer | ierrtn, | ||
integer, dimension(*) | ldesc, | ||
character*40, dimension(*) | aname, | ||
character*25, dimension(*) | aunits, | ||
integer, dimension(*) | kscale, | ||
integer, dimension(*) | krfval, | ||
integer, dimension(*) | kwidth, | ||
integer, dimension(*) | krfvsw, | ||
integer | iunitd, | ||
integer, dimension(*) | kseq, | ||
integer, dimension(*) | knum, | ||
integer, dimension(300,*) | klist, | ||
integer, dimension(*) | indexb | ||
) |
Read in table B.
Program history log:
[in] | IUNITB | Unit where table b entries reside |
[in] | KDESC | Working descriptor list |
[in] | NRDESC | Number of descriptors in kdesc |
[in] | IUNITD | Unit where table d entries reside |
[out] | KARY | |
[out] | IERRTN | |
[out] | LDESC | Descriptors in table b (decimal values) |
[out] | ANAME | Array containing names of descriptors |
[out] | AUNITS | Array containing units of descriptors |
[out] | KSCALE | Scale values for each descriptor |
[out] | KRFVAL | Reference values for each descriptor |
[out] | KWIDTH | Bit width of each descriptor |
[out] | KRFVSW | New reference value switch |
[out] | KSEQ | Sequence descriptor |
[out] | KNUM | Number of descriptors in sequence |
[out] | KLIST | Sequence of descriptors |
ISECT3 | ||
INDEXB |
subroutine fi8513 | ( | integer | iunitd, |
integer, dimension(*) | isect3, | ||
integer, dimension(*) | kseq, | ||
integer, dimension(*) | knum, | ||
integer, dimension(300,*) | klist, | ||
ierrtn | |||
) |
Read in table D.
Program history log:
[in] | IUNITD | Unit number of input device |
[out] | KSEQ | Key for sequence descriptors |
[out] | KNUM | Number if descriptors in list |
[out] | KLIST | Descriptors list |
[out] | IERRTN | Error return flag |
ISECT3 |
subroutine w3fi85 | ( | istep, | |
iunitb, | |||
iunitd, | |||
ibfsiz, | |||
integer, dimension(*) | isect1, | ||
integer, dimension(*) | isect3, | ||
jif, | |||
integer, dimension(3,*) | jdesc, | ||
integer | newnr, | ||
integer, dimension(*) | idata, | ||
real, dimension(*) | rdata, | ||
character*1, dimension(*) | atext, | ||
integer, dimension(*) | kassoc, | ||
kif, | |||
integer, dimension(3,*) | kdesc, | ||
nrdesc, | |||
integer, dimension(255) | isec2d, | ||
integer | isec2b, | ||
integer, dimension(500,*) | kdata, | ||
integer, dimension(*) | kary, | ||
integer, dimension(*) | kbufr, | ||
ierrtn | |||
) |
Using information available in supplied arrays, generate 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.
In the event that the user requests a reduction of reports in a bufr message if a particular message becomes oversized, the possibility exists of the last block of data producing an oversized message. the user must verify that isect3(6) does in fact equal zero to assure that all of the data has been included as output.
Program history log:
[in] | ISTEP | Key for selection of processing step
|
[in] | IUNITB | Unit number of device containing table b |
[in] | IUNITD | Unit number of device containing table d |
[in] | IBFSIZ | Size in bytes of bufr message array (kbufr) should be a multiple of word size. |
[in] | 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 |
[in] | ISECT3 | Values to be inserted into section 3, and to control report reduction for oversized messages
|
[in] | JIF | JDESC input format flag
|
[in] | 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. |
[in] | NEWNR | NR of descriptors in JDESC |
[in] | IDATA | Integer array dimensioned by the number of descriptors to be used |
[in] | RDATA | Real array dimensioned by the number of descriptors to be used |
[in] | ATEXT | Array containing all text data associated with a specific report. All data identified as text data must be in ASCII. |
[in] | KASSOC | Integer array dimensioned by the number of descriptors to be used, containing the associated field values for any entry in the descriptor list. |
[in] | KIF | KDESC input format flag
|
[in] | 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. |
[in] | NRDESC | NR of descriptors in kdesc |
[in] | ISEC2D | Data or text to be entered into section 2 |
[in] | ISEC2B | Number of bytes of data in isec2d |
[out] | KDATA | Source data array . a 2-dimension integer array where kdata(subset,param) subset = subset number param = parameter number. |
[out] | KARY | Working array for message under construction
|
[out] | KBUFR | Array to contain completed bufr message |
[out] | IERRTN | Error return flag |
IERRTN: