INTEGER FUNCTION ISIZE (NUM)

C$$$  SUBPROGRAM DOCUMENTATION BLOCK
C
C SUBPROGRAM:    ISIZE
C   PRGMMR: ATOR            ORG: NP12       DATE: 2009-03-23
C
C ABSTRACT: THIS FUNCTION COMPUTES AND RETURNS THE NUMBER OF CHARACTERS
C   NEEDED TO ENCODE THE INPUT INTEGER NUM AS A STRING.  IT DOES NOT
C   ACTUALLY ENCODE THE STRING BUT RATHER ONLY FIGURES OUT THE REQUIRED
C   SIZE.  NUM MUST BE AN INTEGER IN THE RANGE OF 0 TO 99999.
C
C PROGRAM HISTORY LOG:
C 2009-03-23  J. ATOR    -- ORIGINAL AUTHOR
C
C USAGE:    CALL ISIZE ( NUM )
C   INPUT ARGUMENT LIST:
C     NUM      - INTEGER: NUMBER TO BE ENCODED
C
C   OUTPUT ARGUMENT LIST:
C     ISIZE    - INTEGER: NUMBER OF CHARACTERS NECESSARY TO ENCODE NUM
C                AS A STRING
C
C REMARKS:
C    THIS ROUTINE CALLS:        BORT
C    THIS ROUTINE IS CALLED BY: READMT   UFBDMP   UFDUMP
C                               Normally not called by any application
C                               programs but it could be.
C
C ATTRIBUTES:
C   LANGUAGE: FORTRAN 77
C   MACHINE:  PORTABLE TO ALL PLATFORMS
C
C$$$

	CHARACTER*128 BORT_STR

C-----------------------------------------------------------------------
C-----------------------------------------------------------------------

	IF ( NUM .LT. 0 ) GOTO 900
	DO ISIZE = 1, 5
	  IF ( NUM .LT. 10**ISIZE ) RETURN
	ENDDO
	GOTO 900

	RETURN
900	WRITE(BORT_STR,'("BUFRLIB: ISIZE - INPUT NUMBER (",I7,'//
     .	  '") IS OUT OF RANGE")') NUM
	CALL BORT(BORT_STR)
	END