<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='IGETTDI'><A href='../../html_code/bufr/igettdi.f.html#IGETTDI' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>
FUNCTION IGETTDI ( IFLAG ) 2,1
C$$$ SUBPROGRAM DOCUMENTATION BLOCK
C
C SUBPROGRAM: IGETTDI
C PRGMMR: ATOR ORG: NP12 DATE: 2009-03-23
C
C ABSTRACT: DEPENDING ON THE VALUE OF THE INPUT FLAG, THIS FUNCTION
C EITHER RETURNS THE NEXT USABLE SCRATCH TABLE D INDEX FOR THE
C CURRENT MASTER TABLE OR ELSE RESETS THE INDEX BACK TO ITS
C MINIMUM VALUE.
C
C PROGRAM HISTORY LOG:
C 2009-03-23 J. ATOR -- ORIGINAL AUTHOR
C
C USAGE: CALL IGETTDI
( IFLAG )
C INPUT ARGUMENT LIST:
<A NAME='WILL'><A href='../../html_code/bufr/igettdi.f.html#WILL' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>
C IFLAG - INTEGER: FLAG: IF SET TO 0, THEN THE FUNCTION WILL,6
C RESET THE SCRATCH TABLE D INDEX BACK TO ITS MINIMUM
C VALUE; OTHERWISE, IT WILL RETURN THE NEXT USABLE
C SCRATCH TABLE D INDEX FOR THE CURRENT MASTER TABLE
C
C OUTPUT ARGUMENT LIST:
C IGETTDI - INTEGER: NEXT USABLE SCRATCH TABLE D INDEX FOR THE
C CURRENT MASTER TABLE
C -1 = FUNCTION WAS CALLED WITH IFLAG=0
C
C REMARKS:
C THIS ROUTINE CALLS: BORT
C THIS ROUTINE IS CALLED BY: READMT READS3 STSEQ
C Not normally called by application
C programs.
C
C ATTRIBUTES:
C LANGUAGE: FORTRAN 77
C MACHINE: PORTABLE TO ALL PLATFORMS
C
C$$$
PARAMETER ( IDXMIN = 62976 )
C* = IFXY
('354000')
PARAMETER ( IDXMAX = 63231 )
C* = IFXY
('354255')
CHARACTER*128 BORT_STR
SAVE IDX
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
IF ( IFLAG .EQ. 0 ) THEN
C* Initialize the index to one less than the actual minimum
C* value. That way, the next normal call will return the
C* minimum value.
IDX = IDXMIN - 1
IGETTDI = -1
ELSE
IDX = IDX + 1
IF ( IDX .GT. IDXMAX ) GOTO 900
IGETTDI = IDX
ENDIF
RETURN
900 CALL BORT
('BUFRLIB: IGETTDI - IDXMAX OVERFLOW')
END