The TELEMAC-MASCARET system  trunk
lit.F
Go to the documentation of this file.
1 ! **************
2  SUBROUTINE lit
3 ! **************
4 !
5  &( x , w , i , c , nval , TYPE , canal , std2 , istat )
6 !
7 !***********************************************************************
8 ! HERMES V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief READS VALUES ACCORDING TO VARIOUS STANDARDS.
12 !
13 !warning IF THE CHARACTER STRING STD EQUALS IBM OR I3E, CALLS THE
14 !+ SUBROUTINES LECIBM OR LECI3E, WHICH DEPEND ON THE TYPE
15 !+ OF MACHINE USED
16 !
17 !history J-M HERVOUET (LNHE)
18 !+ 01/04/2009
19 !+ V6P0
20 !+
21 !
22 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 !| X |-->| DOUBLE PRECISION ARRAY TO BE READ
24 !| W |<--| REAL WORK ARRAY (IN CASE OF
25 !| | | CONVERSION FROM SIMPLE TO DOUBLE PRECISION)
26 !| I |-->| INTEGER ARRAY TO BE READ
27 !| C |<--| CHARACTER STRING TO BE READ
28 !| NVAL |-->| NUMBER OF VALUES (INTEGER, CHARACTER, ETC.)
29 !| | | TO BE READ
30 !| TYPE |-->| TYPE OF DATA : 'I' , 'CH' , 'R4' , 'R8'
31 !| CANAL |-->| LOGICAL UNIT FOR READING
32 !| STD2 |-->| INPUT STANDARD : STD , IBM OU I3E, ETC.
33 !| ISTAT |<--| ERROR NUMBER
34 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35 !
37  IMPLICIT NONE
38 !
39 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
40 !
41  INTEGER, INTENT(IN) :: NVAL,CANAL
42  INTEGER, INTENT(INOUT) :: ISTAT
43  CHARACTER(LEN=*), INTENT(IN) :: TYPE,STD2
44  INTEGER, INTENT(INOUT) :: I(*)
45  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
46  REAL, INTENT(INOUT) :: W(*)
47  CHARACTER(LEN=*), INTENT(INOUT) :: C
48 !
49 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50 !
51  INTEGER J
52  CHARACTER(LEN=8) STD
53 !
54  INTRINSIC dble,min,len
55 !
56 !-----------------------------------------------------------------------
57 !
58  istat = 0
59 !
60 !-----------------------------------------------------------------------
61 !
62 ! STD2 MAY BE SHORTER THAN 8 CHARACTERS
63  std=' '
64  std(1:min(8,len(std2)))=std2(1:min(8,len(std2)))
65 !
66 !-----------------------------------------------------------------------
67 !
68  IF(std(1:3).EQ.'STD'.OR.std(1:7).EQ.'SERAFIN') THEN
69 !
70  IF(TYPE(1:2).EQ.'R4') then
71  READ(canal,end=100,err=101)(w(j),j=1,nval)
72  DO j=1,nval
73  x(j) = dble(w(j))
74  ENDDO
75  ELSEIF(TYPE(1:2).EQ.'R8') then
76  READ(canal,end=100,err=101)(x(j),j=1,nval)
77  ELSEIF (TYPE(1:1).EQ.'I') then
78  READ(canal,end=100,err=101)(i(j),j=1,nval)
79  ELSEIF(TYPE(1:2).EQ.'CH') then
80  READ(canal,end=100,err=101) c(1:nval)
81  ELSE
82  WRITE(lu,21) TYPE
83 21 FORMAT(1x,'LIT : UNKNOWN TYPE :',a2)
84  CALL plante(1)
85  stop
86  ENDIF
87 !
88  GO TO 102
89 !
90 100 CONTINUE
91  WRITE(lu,'(1X,A)') 'LIT : ABNORMAL END OF FILE'
92  WRITE(lu,'(1X,A)') 'ONE INTENDED TO READ'
93  WRITE(lu,'(1X,A,1I6,A)') 'A RECORD OF ',nval,' VALUES'
94  WRITE(lu,'(1X,A,A)') 'OF TYPE : ',TYPE
95  WRITE(lu,'(1X,A,1I6)') 'ON LOGICAL UNIT : ',canal
96 ! ISTAT = -6
97  CALL plante(1)
98  stop
99 !
100 101 CONTINUE
101  WRITE(lu,'(1X,A)') 'LIT : READ ERROR'
102  WRITE(lu,'(1X,A)') 'ONE INTENDED TO READ'
103  WRITE(lu,'(1X,A,1I6,A)') 'A RECORD OF ',nval,' VALUES'
104  WRITE(lu,'(1X,A,A)') 'OF TYPE : ',TYPE
105  WRITE(lu,'(1X,A,1I6)') 'ON LOGICAL UNIT : ',canal
106 ! ISTAT = -6
107  CALL plante(1)
108  stop
109 !
110 102 CONTINUE
111 !
112  ELSE
113 !
114  WRITE(lu,11) std
115 11 FORMAT(1x,'LIT : UNKNOWN STANDARD:',a8)
116  CALL plante(1)
117  stop
118 !
119  ENDIF
120 !
121 !-----------------------------------------------------------------------
122 !
123  RETURN
124  END
subroutine lit(X, W, I, C, NVAL, TYPE, CANAL, STD2, ISTAT)
Definition: lit.F:7