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