NCEPLIBS-bufr  12.0.1
drfini.f File Reference

Initialize replication factors for delayed replication sequences. More...

Go to the source code of this file.

Functions/Subroutines

recursive subroutine drfini (LUNIT, MDRF, NDRF, DRFTAG)
 Initialize replication factors for delayed replication sequences. More...
 

Detailed Description

Initialize replication factors for delayed replication sequences.

Author
J. Woollen
Date
2002-05-14

Definition in file drfini.f.

Function/Subroutine Documentation

◆ drfini()

recursive subroutine drfini ( dimension(*)  LUNIT,
dimension(*)  MDRF,
dimension(*)  NDRF,
character*(*)  DRFTAG 
)

Initialize replication factors for delayed replication sequences.

This subroutine explicitly initializes delayed replication factors and allocates a corresponding amount of space within internal arrays, thereby allowing the subsequent use of subroutine ufbseq() to write data into delayed replication sequences.

Parameters
[in]LUNIT- integer: Fortran logical unit number for BUFR file.
[in]MDRF- integer(*): Array of delayed replication factors, in one-to-one correspondence with the number of occurrences of DRFTAG within the overall subset definition, and explicitly defining how much space (i.e. how many replications) to allocate within each successive occurrence.
[in]NDRF- integer: Number of delayed replication factors within MDRF.
[in]DRFTAG- character*(*): Table D sequence mnemonic, bracketed by appropriate delayed replication notation (e.g. {}, () OR <>)

Logical unit LUNIT should have already been opened for output operations (i.e. writing/encoding BUFR) via a previous call to subroutine openbf(), and a message for output should have already been opened via a previous call to one of the [message-writing subroutines].

The use of this subroutine is only required when writing data into delayed replication sequences using ufbseq(), or for cases where ufbint() or ufbrep() are being used to write data into delayed replication sequences which occur more than once within an overall subset definition. In such cases, the use of this subroutine allows the application code to explicitly specify how many replications of the sequence are to be allocated to each occurrence of the delayed replication sequence within the overall subset definition, prior to storing all of the actual data values themselves via a single subsequent call to ufbint() or ufbrep(). In contrast, the use of this subroutine is not required when ufbint() or ufbrep() are to be called to store data values for a delayed replication sequence which only occurs one time within an overall subset definition, because in that case the same type of initialization and space allocation functionality will be automatically handled internally within subroutine ufbint() or ufbrep().

Author
J. Woollen
Date
2002-05-14

Definition at line 50 of file drfini.f.

References bort(), modv_im8b::im8b, moda_usrint::inv, moda_tables::itp, moda_usrint::nval, status(), moda_tables::tag, usrtpl(), and x84().