NCEPLIBS-bufr 11.7.1
makestab.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine makestab
 THIS SUBROUTINE CONSTRUCTS AN INTERNAL JUMP/LINK TABLE WITHIN MODULE TABLES, USING THE INFORMATION WITHIN THE INTERNAL BUFR TABLE ARRAYS (WITHIN MODULE TABABD) FOR ALL OF THE LUN (I.E., I/O STREAM INDEX) VALUES THAT ARE CURRENTLY DEFINED TO THE BUFR ARCHIVE LIBRARY SOFTWARE. More...
 

Detailed Description

Author
WOOLLEN
Date
1994-01-06

Definition in file makestab.f.

Function/Subroutine Documentation

◆ makestab()

subroutine makestab

THIS SUBROUTINE CONSTRUCTS AN INTERNAL JUMP/LINK TABLE WITHIN MODULE TABLES, USING THE INFORMATION WITHIN THE INTERNAL BUFR TABLE ARRAYS (WITHIN MODULE TABABD) FOR ALL OF THE LUN (I.E., I/O STREAM INDEX) VALUES THAT ARE CURRENTLY DEFINED TO THE BUFR ARCHIVE LIBRARY SOFTWARE.

NOTE THAT THE ENTIRE JUMP/LINK TABLE WILL ALWAYS BE COMPLETELY RECONSTRUCTED FROM SCRATCH, EVEN IF SOME OF THE INFORMATION WITHIN THE INTERNAL BUFR TABLE ARRAYS ALREADY EXISTED THERE AT THE TIME OF THE PREVIOUS CALL TO THIS SUBROUTINE, BECAUSE THERE MAY HAVE BEEN OTHER EVENTS THAT HAVE TAKEN PLACE SINCE THE PREVIOUS CALL TO THIS SUBROUTINE THAT HAVE NOT YET BEEN REFLECTED WITHIN THE INTERNAL JUMP/LINK TABLE, SUCH AS, E.G. THE UNLINKING OF AN LUN VALUE FROM THE BUFR ARCHIVE LIBRARY SOFTWARE VIA A CALL TO BUFR ARCHIVE LIBRARY SUBROUTINE CLOSBF.

PROGRAM HISTORY LOG: 1994-01-06 J. WOOLLEN – ORIGINAL AUTHOR 1995-06-28 J. WOOLLEN – INCREASED THE SIZE OF INTERNAL BUFR TABLE ARRAYS IN ORDER TO HANDLE BIGGER FILES 1998-07-08 J. WOOLLEN – REPLACED CALL TO CRAY LIBRARY ROUTINE "ABORT" WITH CALL TO NEW INTERNAL BUFRLIB ROUTINE "BORT" 1999-11-18 J. WOOLLEN – THE NUMBER OF BUFR FILES WHICH CAN BE OPENED AT ONE TIME INCREASED FROM 10 TO 32 (NECESSARY IN ORDER TO PROCESS MULTIPLE BUFR FILES UNDER THE MPI) 2003-11-04 J. ATOR – ADDED DOCUMENTATION 2003-11-04 S. BENDER – ADDED REMARKS/BUFRLIB ROUTINE INTERDEPENDENCIES 2003-11-04 D. KEYSER – MAXJL (MAXIMUM NUMBER OF JUMP/LINK ENTRIES) INCREASED FROM 15000 TO 16000 (WAS IN VERIFICATION VERSION); UNIFIED/PORTABLE FOR WRF; ADDED HISTORY DOCUMENTATION; OUTPUTS MORE COMPLETE DIAGNOSTIC INFO WHEN ROUTINE TERMINATES ABNORMALLY; NOW ALLOWS FOR THE POSSIBILITY THAT A CONNECTED FILE MAY NOT CONTAIN ANY DICTIONARY TABLE INFO (E.G., AN EMPTY FILE), SUBSEQUENT CONNECTED FILES WHICH ARE NOT EMPTY WILL NO LONGER GET TRIPPED UP BY THIS (THIS AVOIDS THE NEED FOR AN APPLICATION PROGRAM TO DISCONNECT ANY EMPTY FILES VIA A CALL TO CLOSBF) 2009-03-18 J. WOOLLEN – ADDED LOGIC TO RESPOND TO THE CASES WHERE
AN INPUT FILE'S TABLES CHANGE IN MIDSTREAM. THE NEW LOGIC MOSTLY ADDRESSES CASES WHERE OTHER FILES ARE CONNECTED TO THE TABLES OF THE FILE WHOSE TABLES HAVE CHANGED. 2009-06-25 J. ATOR – TWEAK WOOLLEN LOGIC TO HANDLE SPECIAL CASE WHERE TABLE WAS RE-READ FOR A PARTICULAR LOGICAL UNIT BUT IS STILL THE SAME ACTUAL TABLE AS BEFORE AND IS STILL SHARING THAT TABLE WITH A DIFFERENT LOGICAL UNIT 2009-11-17 J. ATOR – ADDED CHECK TO PREVENT WRITING OUT OF TABLE INFORMATION WHEN A TABLE HAS BEEN RE-READ WITHIN A SHARED LOGICAL UNIT BUT HASN'T REALLY CHANGED 2014-12-10 J. ATOR – USE MODULES INSTEAD OF COMMON BLOCKS 2017-04-03 J. ATOR – INCLUDE MODULE BITMAPS AND INITIALIZATION OF NTAMC

USAGE: CALL MAKESTAB

REMARKS: THIS ROUTINE CALLS: BORT CHEKSTAB CLOSMG CPBFDX ERRWRT ICMPDX ISHRDX STRCLN TABSUB WRDXTB THIS ROUTINE IS CALLED BY: RDBFDX RDMEMM RDUSDX READDX READERME READS3 Normally not called by any application programs.

Definition at line 74 of file makestab.f.

References modv_bmiss::bmiss, bort(), chekstab(), closmg(), cpbfdx(), errwrt(), moda_tables::ibt, icmpdx(), moda_tables::irf, moda_tables::isc, ishrdx(), moda_tables::itp, moda_tables::jmpb, moda_tables::jump, moda_tables::knti, moda_tables::link, modv_maxjl::maxjl, moda_tababd::mtab, modv_nfiles::nfiles, moda_nrv203::nnrv, moda_tables::ntab, moda_bitmaps::ntamc, moda_tababd::ntba, strcln(), moda_tababd::taba, tabsub(), moda_tables::tag, moda_tables::typ, moda_tables::vali, and wrdxtb().

Referenced by rdbfdx(), rdmemm(), rdusdx(), readdx(), readerme(), and reads3().