ADAS Subroutine i4fctn
FUNCTION I4FCTN( STR , IABT )
C-----------------------------------------------------------------------
C
C *************** FORTRAN77 INTEGER*4 FUNCTION: I4FCTN ****************
C
C PURPOSE: TO CONVERT AN INTEGER NUMBER STORED IN A STRING
C INTO A INTEGER*4 VARIABLE
C
C CALLING PROGRAM: GENERAL USE
C
C FUNCTION:
C
C (I*4) I4FCTN = FUNCTION NAME
C (C*(*)) STR = STRING CONTAINING SINGLE FLOATING POINT NO.
C (I*4) IABT = RETURN CODE:
C 0 => NO ERROR
C 1 => ERROR (A VALUE 'I4FCTN=0' WILL BE
C RETURNED).
C
C (C*1) CH0 = PARAMETER = '0'
C (C*1) CH9 = PARAMETER = '9'
C (C*1) BLANK = PARAMETER = ' '
C (C*1) CPLUS = PARAMETER = '+'
C (C*1) CMINUS = PARAMETER = '-'
C
C (I*4) ILEN = LENGTH OF 'STR' STRING IN BYTES
C (I*4) ILAST = POSITION OF LAST BYTE OF IDENTIFIED NUMBER
C (I*4) I1 = STARTING BYTE IN 'STR' OF NUMBER
C INCLUDING SIGN IF PRESENT
C (I*4) IS = 0 => NUMBER HAS NO SIGN
C 1 => NUMBER HAS A SIGN
C (I*4) ICH0 = ICHAR('0')
C (I*4) ICH9 = ICHAR('9')
C (I*4) ISTR = ICHAR(CURRENT BYTE POSITION IN 'STR')
C (I*4) I = GENERAL USE
C
C (L*4) LFOUND = .TRUE. => ALL OF THE INPUT NUMBER BYTES
C HAVE BEEN ASSESSED.
C .FALSE. => INPUT NUMBER BYTES STILL BEING
C ASSESSED.
C (L*4) LSTART = .TRUE. => THE FIRST DIGIT HAS BEEN FOUND
C .FALSE. => THE FIRST DIGIT HAS NOT YET
C BEEN REACHED.
C
C (C*5) CFORM5 = FORMAT FOR INTERNAL READING OF INTEGER
C
C
C NOTE: AN ERROR WILL OCCUR (IABT=1) IF THERE IS MORE THAN ONE
C NUMBER OCCURING IN THE STRING 'STR()'
C
C
C AUTHOR: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C K1/0/37
C JET EXT. 2520
C
C DATE: 11/07/90
C
C UPDATE: 11/02/92 - PE BRIDEN: BLANKS NOW ALLOWED BETWEEN SIGN AND
C FIRST DIGIT. LSTART VARIABLE ADDED.
C VARIABLE I2 REMOVED.
C + SOME MINOR RECODING - (IF STRING
C ENTERED IS BLANK IABT IS NOW SET TO 1)
C
C UPDATE: 16/08/93 - PE BRIDEN: CORRECTED BUG TO ALLOW BLANKS BETWEEN
C SIGN AND FIRST DIGIT (SEE ABOVE).
C 1) ILAST VARIABLE ADDED.
C 2) FORMATTED READ USED INSTEAD OF *
C WHEN CONVERTING IDENTIFIED INTEGER
C USING THE INTERNAL READ. (THIS
C RESTRICTS IDENTIFIED NUMBER TO BE
C < 100 BYTES IN LENGTH!)
C 3) EXCLUDE TRAILING BLANKS IN THE
C INTERNAL READING OF THE INTEGER
C I.E. STR(I1:ILAST) INSTEAD OF
C STR(I1:ILEN)
C
C UPDATE: 07/03/95 - PE BRIDEN: INSTEAD OF USING FORMAT SPECIFIER I99
C WHEN INTERNALLY READING THE INTEGER
C CREATE THE APPROPRIATE SPECIFIER
C WITHIN CFORM5 AND USE THIS.
C
C VERSION : 1.3
C DATE : 20-12-2001
C MODIFIED : Martin O'Mullane
C - Removed mainframe listing information beyond column 72.
C
C VERSION : 1.3
C DATE : 10-04-2007
C MODIFIED : Allan Whiteford
C - Modified documentation as part of automated
C subroutine documentation preparation.
C
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
CHARACTER*(*) STR
INTEGER IABT