*IF DEF,C70_1A GLW1F404.14 C ******************************COPYRIGHT****************************** GTS2F400.12327 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.12328 C GTS2F400.12329 C Use, duplication or disclosure of this code is subject to the GTS2F400.12330 C restrictions as set forth in the contract. GTS2F400.12331 C GTS2F400.12332 C Meteorological Office GTS2F400.12333 C London Road GTS2F400.12334 C BRACKNELL GTS2F400.12335 C Berkshire UK GTS2F400.12336 C RG12 2SZ GTS2F400.12337 C GTS2F400.12338 C If no contract has been raised with this copy of the code, the use, GTS2F400.12339 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.12340 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.12341 C Modelling at the above address. GTS2F400.12342 C GTS2F400.12343 !+Changes a character into an integer CTOI1.3 ! Subroutine Interface: CTOI1.4SUBROUTINE CTOI(CHAR,LEN,INTEG,ERROR) CTOI1.5 IMPLICIT NONE CTOI1.6 ! Description: CTOI1.7 ! CTOI1.8 ! Method: CTOI1.9 ! CTOI1.10 ! Current code owner: S.J.Swarbrick CTOI1.11 ! CTOI1.12 ! History: CTOI1.13 ! Version Date Comment CTOI1.14 ! ======= ==== ======= CTOI1.15 ! 3.5 Mar. 95 Original code. S.J.Swarbrick CTOI1.16 ! 4.5 Jul. 98 Change call to INTRFACE with call to C_MDI GAV0F405.8 ! (A Van der Wal) GAV0F405.9 ! CTOI1.17 ! Code description: CTOI1.18 ! FORTRAN 77 + common Fortran 90 extensions. CTOI1.19 ! Written to UM programming standards version 7. CTOI1.20 ! CTOI1.21 ! System component covered: CTOI1.22 ! System task: Sub-Models Project CTOI1.23 ! CTOI1.24 ! Global variables: CTOI1.25 CTOI1.26 *CALL C_MDI
GAV0F405.10 CTOI1.28 ! Subroutine arguments: CTOI1.29 CTOI1.30 ! Scalar arguments with intent(in): CTOI1.31 CTOI1.32 INTEGER LEN CTOI1.33 CTOI1.34 ! Scalar arguments with intent(out): CTOI1.35 CTOI1.36 CHARACTER*1 CHAR(LEN) CTOI1.37 CHARACTER*8 ERROR CTOI1.38 INTEGER INTEG CTOI1.39 INTEGER IFIRST CTOI1.40 INTEGER ILAST CTOI1.41 INTEGER IMULT CTOI1.42 INTEGER IPOS CTOI1.43 CTOI1.44 ! Local Scalars: CTOI1.45 CTOI1.46 LOGICAL LBLANK CTOI1.47 INTEGER I CTOI1.48 INTEGER IDIGIT CTOI1.49 CTOI1.50 !- End of Header ------------------------------------------------------ CTOI1.51 CTOI1.52 INTEG=IMDI GAV0F405.11 ERROR=' ' CTOI1.54 ILAST=LEN CTOI1.55 C CTOI1.56 IFIRST=0 CTOI1.57 IPOS=1 CTOI1.58 LBLANK=.TRUE. CTOI1.59 DO 100 I=1,LEN CTOI1.60 IF((CHAR(I).NE.'0').AND. CTOI1.61 & (CHAR(I).NE.'1').AND. CTOI1.62 & (CHAR(I).NE.'2').AND. CTOI1.63 & (CHAR(I).NE.'3').AND. CTOI1.64 & (CHAR(I).NE.'4').AND. CTOI1.65 & (CHAR(I).NE.'5').AND. CTOI1.66 & (CHAR(I).NE.'6').AND. CTOI1.67 & (CHAR(I).NE.'7').AND. CTOI1.68 & (CHAR(I).NE.'8').AND. CTOI1.69 & (CHAR(I).NE.'9').AND. CTOI1.70 & (CHAR(I).NE.' ')) THEN CTOI1.71 C ILLEGAL CHARACTER IN INTEGER CTOI1.72 ERROR='M109 ' CTOI1.73 RETURN CTOI1.74 ELSE CTOI1.75 IF(CHAR(I).EQ.' ') THEN CTOI1.76 IF(IPOS.EQ.2) ILAST=I-1 CTOI1.77 IF(.NOT.LBLANK) THEN CTOI1.78 IPOS=IPOS+1 CTOI1.79 LBLANK=.TRUE. CTOI1.80 IF(IPOS.GT.3) THEN CTOI1.81 C ILLEGAL INTEGER CTOI1.82 ERROR='M109 ' CTOI1.83 RETURN CTOI1.84 END IF CTOI1.85 END IF CTOI1.86 ELSE CTOI1.87 IF(IPOS.EQ.1) IFIRST=I CTOI1.88 IF(LBLANK) THEN CTOI1.89 IPOS=IPOS+1 CTOI1.90 LBLANK=.FALSE. CTOI1.91 IF(IPOS.GT.3) THEN CTOI1.92 C ILLEGAL INTEGER CTOI1.93 ERROR='M109 ' CTOI1.94 RETURN CTOI1.95 END IF CTOI1.96 END IF CTOI1.97 END IF CTOI1.98 END IF CTOI1.99 100 CONTINUE CTOI1.100 C CTOI1.101 INTEG=0 CTOI1.102 IMULT=1 CTOI1.103 DO 200 I=ILAST,IFIRST,-1 CTOI1.104 READ(CHAR(I),210) IDIGIT CTOI1.105 210 FORMAT(I1) CTOI1.106 INTEG=INTEG+IDIGIT*IMULT CTOI1.107 IMULT=IMULT*10 CTOI1.108 200 CONTINUE CTOI1.109 RETURN CTOI1.110 END CTOI1.111 *ENDIF CTOI1.112