2 CHARACTER(LEN=PATH_LEN) FUNCTION carlu 5 &( lcar , icol , ligne , extrem , motcle ,
SIZE , motign ,
6 & lonign , nmaxr , nficda , lgvar )
72 INTEGER LCAR,ICOL,NMAXR(4),NFICDA,LGVAR,SIZE(4,*)
74 CHARACTER(LEN=*) LIGNE
75 CHARACTER(LEN=1) EXTREM
76 CHARACTER(LEN=72) MOTIGN(100),MOTCLE(4,*)
78 INTEGER NEXT,PRECAR,LONGLU
79 EXTERNAL next,precar,longlu
83 INTEGER I,IDEB,IFIN,NCAR,ICOL2,NLIGN2,ITYP,K,LGLU
86 LOGICAL COTE,LISUIV,LUFIC,LUCOTE
87 CHARACTER(LEN=1) QUOTE,TABUL
88 CHARACTER(LEN=9) :: MOTPRO(15)
89 CHARACTER(LEN=72) LIGNE2
90 CHARACTER(LEN=PATH_LEN) LIGNED
98 parameter( motpro = (/
99 &
'NOM ',
'TYPE ',
'INDEX ',
'TAILLE ',
'DEFAUT ',
100 &
'AIDE ',
'CHOIX ',
'RUBRIQUE ',
'NIVEAU ',
'MNEMO ',
101 &
'COMPOSE ',
'COMPORT ',
'CONTROLE ',
'APPARENCE',
'SUBMIT ' /) )
105 parameter( lonpro = (/ 3,4,5,6,6,4,5,8,6,5,7,7,8,9,6 /) )
122 ligne2 = ligne(1:min(72,len(ligne)))
127 icol = next( icol+1 , ligne )
135 IF ( ligne(icol:icol).NE.extrem )
THEN 139 icol = precar( icol+1 , ligne ,
' ' ,
';' , tabul) - 1
141 ligned = ligne(ideb:ifin)
146 290
IF (ifin.GE.
longli)
THEN 149 READ(
nfic,end=900,err=998,fmt=
'(A)') ligne2
151 IF (ligne2(1:1).EQ.
'&'.OR.
152 & ligne2(1:1).EQ.
'='.OR.ligne2(1:1).EQ.
':'.OR.
153 & ligne2(1:1).EQ.
';'.OR.ligne2(1:1).EQ.
'/' )
THEN 160 IF (
nfic.EQ.nficda)
THEN 165 IF (k.GT.0.AND.ligne2(1:k).EQ.motcle(ityp,i)(1:k))
THEN 174 IF(k.GT.0.AND.ligne2(1:k).EQ.motign(i)(1:k))
THEN 183 IF(k.GT.0.AND.ligne2(1:k).EQ.motpro(i)(1:k))
THEN 192 icol2 =precar(1 , ligne2 ,
' ' , tabul ,
' ') - 1
196 IF(lglu.GT.lgvar)
THEN 198 IF (longlu(ligned).GT.0)
THEN 199 ligned = ligned(1:longlu(ligned))//ligne2(1:icol2)
201 ligned = ligne2(1:icol2)
203 IF(lglu.GT.0)
WRITE(
lu,
'(1X,A)')
206 WRITE(
lu,
'(1X,A5,I4,1X,A23)')
'LINE: ',
nlign,
207 &
'ERROR : STRING TOO LONG' 214 IF (longlu(ligned).GT.0)
THEN 215 ligned = ligned(1:longlu(ligned))//ligne2(1:
longli)
225 IF(longlu(ligned).GT.0)
THEN 226 ligned = ligned(1:longlu(ligned))//ligne2(1:icol2)
240 IF (ligned(i:i).EQ.quote.OR.ligned(i:i).EQ.
'&'.OR.
241 & ligned(i:i).EQ.
'='.OR.ligned(i:i).EQ.
':'.OR.
242 & ligned(i:i).EQ.
'/')
THEN 243 IF (nlign2.NE.
nlign.AND.(.NOT.(lufic)))
244 &
WRITE(
lu,
'(1X,A)') ligne2(1:
longli)
245 IF (lglu.GT.0)
WRITE(
lu,
'(1X,A)') ligned(1:lglu)
246 WRITE(
lu,
'(1X,A5,I4,A)')
'LINE: ',
nlign,
247 &
' ERROR: UNEXPECTED CHARACTER IN A STRING WITHOUT QUOTES' 260 IF (icol.EQ.
longli) qcas=45
262 100 icol = precar( icol+1 , ligne , extrem , extrem , extrem )
268 IF(ligne(icol+1:icol+1).EQ.extrem.AND.extrem.EQ.quote)
THEN 271 IF (icol.EQ.
longli) qcas=3
277 lglu = max(0,icol-ideb)
278 IF (lglu.GT.0) ligned = ligne(ideb:icol-1)
285 READ(
nfic,end=905,err=998,fmt=
'(A)') ligne2
291 IF (qcas.EQ.45.OR.qcas.EQ.3)
THEN 293 ELSEIF (ligne2(1:1).EQ.quote)
THEN 299 IF (lglu.GT.0) ligned = ligned(1:lglu)
307 IF(ligne2(1:1).EQ.quote.AND.lucote)
THEN 311 110 icol2 =precar(icol2+1,ligne2,extrem,extrem,extrem)
313 IF(ligne2(icol2+1:icol2+1).EQ.
314 & extrem.AND.extrem.EQ.quote)
THEN 318 IF (icol2.EQ.
longli) qcas=3
322 IF(icol2.EQ.
longli) icol2=icol2+1
324 ligned = ligned(1:lglu)//ligne2(1:icol2-1)
326 ligned = ligne2(1:icol2-1)
328 lglu = lglu + icol2-1
330 IF(lglu.GT.lgvar)
GO TO 910
349 WRITE(
lu,
'(1X,A)') ligned(1:max(1,min(lglu,lgvar)))
351 WRITE(
lu,
'(1X,A5,I4,A)')
'LINE: ',
nlign,
352 &
' ERROR: QUOTE MISSING AT THE END OF THE STRING' 353 WRITE(
lu,*)
'OR STRING TOO LONG ... ' 364 lcar = min(lglu,lgvar)
365 carlu = ligned(1:lglu)
378 IF(
carlu(i:i).EQ.quote.AND.
carlu(i+1:i+1).EQ.quote)
THEN 404 1999
FORMAT(1x,
'LOGICAL UNIT ',1i2,
' ERROR LINE ',1i6)
character(len=path_len) function carlu(LCAR, ICOL, LIGNE, EXTREM, MOTCLE, SIZE, MOTIGN, LONIGN, NMAXR, NFICDA, LGVAR)
integer, parameter path_len
logical erreur
Y. AUDOUIN (EDF LAB, LNHE) 09/05/2014 V7P0 First version.