awips2/nativeLib/rary.ohd.ofs/src/fcinit_util/TEXT/rdvcin.f

118 lines
2.6 KiB
FortranFixed
Raw Normal View History

C MODULE RDVCIN
C-----------------------------------------------------------------------
C THIS ROUTINE READS INTEGER VALUES FROM INPUT DATA CARDS
C
SUBROUTINE RDVCIN (NDP,ITRAN,IBUG,IER,LCD7)
INCLUDE 'common/ionum'
INCLUDE 'common/fdbug'
INTRINSIC CHAR
CHARACTER CHAR
PARAMETER (NB=72)
INTEGER ITRAN(*)
CHARACTER*1 BB(NB),CC(10)
CHARACTER*1 TAB,BLANK,X,XNEG
C
C ================================= RCS keyword statements ==========
CHARACTER*68 RCSKW1,RCSKW2
DATA RCSKW1,RCSKW2 / '
.$Source: /fs/hseb/ob72/rfc/ofs/src/fcinit_util/RCS/rdvcin.f,v $
. $', '
.$Id: rdvcin.f,v 1.3 2000/12/19 15:03:03 jgofus Exp $
. $' /
C ===================================================================
C
DATA BLANK,X,XNEG / ' ','X','-' /
DATA CC / '1','2','3','4','5','6','7','8','9','0' /
IF (IBUG.GT.0) WRITE (IODBUG,*) 'ENTER RDVCIN'
C Set TAB to an ascii tab
TAB = CHAR(9)
IER=0
C READ CARD
READ (IN,10) BB
10 FORMAT (72A1)
LCD7=LCD7+1
ITEMP=0
ISW=0
NDP=0
ISGN=1
C DECODE THE CARD
30 DO 100 I=1,NB
IF (IBUG.GT.0) WRITE (IODBUG,'('' CARD='',72A1)') BB
IF (BB(I).EQ.BLANK .OR. BB(I).EQ.TAB) THEN
IF (ISW .NE. 0) THEN
NDP=NDP+1
ITRAN(NDP)=ITEMP*ISGN
ISGN=1
ITEMP=0
ISW=0
ENDIF
ELSE
C Is there a continuation card?
IF (BB(I) .EQ. X) THEN
IF (ISW .NE. 0) THEN
NDP=NDP+1
ITRAN(NDP)=ITEMP*ISGN
ISGN=1
ITEMP=0
ISW=0
ENDIF
C Read continuation card
READ(IN,10) BB
LCD7=LCD7+1
GO TO 30
ENDIF
IF (BB(I) .EQ. XNEG) THEN
ISGN=-1
ISW=1
GO TO 100
ELSE
DO 50 J=1,10
IF (BB(I) .EQ. CC(J)) THEN
JJ = J
IF (JJ.EQ.10) JJ=0
ITEMP=ITEMP*10+JJ
ISW=1
GO TO 100
ENDIF
50 CONTINUE
WRITE (IPR,60) BB(I),I,BB
60 FORMAT ('0**ERROR** INVALID CHARACTER (',A1,
* ') FOUND AT COLUMN ',I2,' ON THE FOLLOWING CARD:' /
* ' ',72A1)
CALL ERROR
IER=1
GO TO 120
ENDIF
ENDIF
100 CONTINUE
IF (ISW .NE. 0) THEN
NDP=NDP+1
ITRAN(NDP)=ITEMP*ISGN
ENDIF
120 RETURN
END