2 CHARACTER(LEN=PATH_LEN) FUNCTION mycarlu 5 &( lcar , icol , ligne , extrem , lgvar )
65 INTEGER LCAR,ICOL,LGVAR
66 CHARACTER(LEN=*) LIGNE
67 CHARACTER(LEN=1) EXTREM
69 INTEGER NEXT,PRECAR,LONGLU
70 EXTERNAL next,precar,longlu
75 INTEGER I,IDEB,IFIN,NCAR,ICOL2,NLIGN2,LGLU
77 LOGICAL COTE,LISUIV,LUFIC,LUCOTE
78 CHARACTER(LEN=1) QUOTE,TABUL
79 CHARACTER(LEN=72) LIGNE2
80 CHARACTER(LEN=PATH_LEN) LIGNED
105 ligne2 = ligne(1:min(72,len(ligne)))
110 icol = next( icol+1 , ligne )
118 IF ( ligne(icol:icol).NE.extrem )
THEN 122 icol = precar( icol+1 , ligne ,
' ' ,
';' , tabul) - 1
124 ligned = ligne(ideb:ifin)
129 290
IF (ifin.GE.
longli)
THEN 132 READ(
nfic,end=900,err=998,fmt=
'(A)') ligne2
134 IF (ligne2(1:1).EQ.
'&'.OR.
135 & ligne2(1:1).EQ.
'='.OR.ligne2(1:1).EQ.
':'.OR.
136 & ligne2(1:1).EQ.
';'.OR.ligne2(1:1).EQ.
'/' )
THEN 146 icol2 =precar(1 , ligne2 ,
' ' , tabul ,
' ') - 1
150 IF(lglu.GT.lgvar)
THEN 152 IF (longlu(ligned).GT.0)
THEN 153 ligned = ligned(1:longlu(ligned))//ligne2(1:icol2)
155 ligned = ligne2(1:icol2)
157 IF(lglu.GT.0)
WRITE(
lu,
'(1X,A)')
160 WRITE(
lu,
'(1X,A5,I4,1X,A23)')
'LINE: ',
nlign,
161 &
'ERROR : STRING TOO LONG' 168 IF (longlu(ligned).GT.0)
THEN 169 ligned = ligned(1:longlu(ligned))//ligne2(1:
longli)
179 IF(longlu(ligned).GT.0)
THEN 180 ligned = ligned(1:longlu(ligned))//ligne2(1:icol2)
194 IF (ligned(i:i).EQ.quote.OR.ligned(i:i).EQ.
'&'.OR.
195 & ligned(i:i).EQ.
'='.OR.ligned(i:i).EQ.
':'.OR.
196 & ligned(i:i).EQ.
'/')
THEN 197 IF (nlign2.NE.
nlign.AND.(.NOT.(lufic)))
198 &
WRITE(
lu,
'(1X,A)') ligne2(1:
longli)
199 IF (lglu.GT.0)
WRITE(
lu,
'(1X,A)') ligned(1:lglu)
200 WRITE(
lu,
'(1X,A5,I4,A)')
'LINE: ',
nlign,
201 &
' ERROR: UNEXPECTED CHARACTER IN A STRING WITHOUT QUOTES' 214 IF (icol.EQ.
longli) qcas=45
216 100 icol = precar( icol+1 , ligne , extrem , extrem , extrem )
222 IF(ligne(icol+1:icol+1).EQ.extrem.AND.extrem.EQ.quote)
THEN 225 IF (icol.EQ.
longli) qcas=3
231 lglu = max(0,icol-ideb)
232 IF (lglu.GT.0) ligned = ligne(ideb:icol-1)
239 READ(
nfic,end=905,err=998,fmt=
'(A)') ligne2
245 IF (qcas.EQ.45.OR.qcas.EQ.3)
THEN 247 ELSEIF (ligne2(1:1).EQ.quote)
THEN 253 IF (lglu.GT.0) ligned = ligned(1:lglu)
261 IF(ligne2(1:1).EQ.quote.AND.lucote)
THEN 265 110 icol2 =precar(icol2+1,ligne2,extrem,extrem,extrem)
267 IF(ligne2(icol2+1:icol2+1).EQ.
268 & extrem.AND.extrem.EQ.quote)
THEN 272 IF (icol2.EQ.
longli) qcas=3
276 IF(icol2.EQ.
longli) icol2=icol2+1
278 ligned = ligned(1:lglu)//ligne2(1:icol2-1)
280 ligned = ligne2(1:icol2-1)
282 lglu = lglu + icol2-1
284 IF(lglu.GT.lgvar)
GO TO 910
303 WRITE(
lu,
'(1X,A)') ligned(1:max(1,min(lglu,lgvar)))
305 WRITE(
lu,
'(1X,A5,I4,A)')
'LINE: ',
nlign,
306 &
' ERROR: QUOTE MISSING AT THE END OF THE STRING' 307 WRITE(
lu,*)
'OR STRING TOO LONG ... ' 318 lcar = min(lglu,lgvar)
358 1999
FORMAT(1x,
'LOGICAL UNIT ',1i2,
' ERROR LINE ',1i6)
character(len=path_len) function mycarlu(LCAR, ICOL, LIGNE, EXTREM, LGVAR)
integer, parameter path_len
logical erreur
Y. AUDOUIN (EDF LAB, LNHE) 09/05/2014 V7P0 First version.