5 &( adress ,
dimens , nmax , doc , llng , llu ,
6 & motint , motrea , motlog , motcar , motatt ,
7 & defint , defrea , deflog , defcar , defatt ,
8 & usrint , usrrea , usrlog , usrcar , usratt ,
9 & motcle , taille , trouve , utindx , nficmo , nficda ,
10 & indic , gestd , nblang , retry )
99 INTEGER NMAX,LLNG,LLU,NFICMO,NFICDA,NBLANG,RETRY
100 INTEGER MOTINT(*),DEFINT(*),USRINT(*)
101 INTEGER TAILLE(4,*),ADRESS(4,*),DIMENS(4,*)
102 INTEGER INDIC(4,*),TROUVE(4,*)
103 LOGICAL MOTLOG(*),DEFLOG(*),USRLOG(*),UTINDX(4,*),DOC
104 CHARACTER(LEN=72) MOTCLE(4,*)
105 CHARACTER(LEN=PATH_LEN) MOTATT(4,*),DEFATT(*),USRATT(*)
106 CHARACTER(LEN=PATH_LEN) MOTCAR(*),DEFCAR(*),USRCAR(*)
107 DOUBLE PRECISION MOTREA(*),DEFREA(*),USRREA(*)
109 INTEGER INTLU,NEXT,PREV,PREVAL,LONGLU
111 CHARACTER(LEN=PATH_LEN) CARLU,PARAM2
112 DOUBLE PRECISION REALU
116 INTEGER I,K,IVAL,LCAR,ICOL,JCOL,ILONG,ITYP,NUMERO,I2
117 INTEGER DEPLAC,ADD,J,OFFSET(4),NBMOT
118 INTEGER TYPIGN(100),LONIGN(100),NMAXR(4),ORDRE
119 INTEGER :: ADSRC,ADDES,NULINT,NVAL,NIGN,L1,LONPRO(15)
120 LOGICAL DYNAM,LANGUE,NULLOG,LUIGN,AIDLNG,VUMOT
121 LOGICAL ARRET,VUCMD(5),VUCMD0(5),EXECMD,GESTD
122 CHARACTER(LEN=1) PTVIRG,QUOTE
123 CHARACTER(LEN=9) :: MOTPRO(15),TYPE
124 CHARACTER(LEN=72) MOTIGN(100),LIGNE
125 CHARACTER(LEN=PATH_LEN) NULCAR,TYPE2
126 DOUBLE PRECISION NULREA
130 EXTERNAL carlu,intlu,loglu,realu,next,prev,preval,longlu
134 parameter( motpro = (/
135 &
'NOM ',
'TYPE ',
'INDEX ',
'TAILLE ',
'DEFAUT ',
136 &
'AIDE ',
'CHOIX ',
'RUBRIQUE ',
'NIVEAU ',
'MNEMO ',
137 &
'COMPOSE ',
'COMPORT ',
'CONTROLE ',
'APPARENCE',
'SUBMIT ' /) )
139 parameter( lonpro =(/ 3,4,5,6,6,4,5,8,6,5,7,7,8,9,6 /) )
220 utindx(k,i) = .false.
243 IF(
lng.LT.1.OR.
lng.GT.nblang)
THEN 245 WRITE(
lu,*)
' CHOICE FOR LANGAGE = ',
lng,
' INVALID.' 246 WRITE(
lu,*)
' DAMOCLES STOPS' 261 icol = next(icol+1,ligne)
271 IF ( ligne(icol:icol).EQ.
'&' )
THEN 272 CALL cmd (icol,ligne,adress,dimens,trouve,motcle,
nmot,
273 & motint,motrea,motlog,motcar,motatt,indic,taille,
274 & utindx,dynam,vucmd,execmd,nficda,nmaxr)
277 IF (vucmd(5))
GO TO 900
279 IF (vucmd(4))
GO TO 1000
281 icol = next(icol+1,ligne)
285 i2 = preval(icol+1,ligne,
'=',
':',
'=')
288 jcol = prev(i2,ligne)
289 ilong = jcol - icol + 1
292 IF (
nfic.EQ.nficmo.AND.
indx.LE.0) luign = .true.
294 CALL dico(ityp,numero,ilong,ligne(icol:jcol),
295 & motcle,motpro,lonpro,taille,utindx,langue,
296 & aidlng,motign,nign,luign,typign,lonign,nficda,
301 WRITE(
lu,*)
'************************' 302 WRITE(
lu,*)
'* DAMOCLES STOPPED *' 303 WRITE(
lu,*)
'************************' 313 icol = preval(icol+1,ligne,
'=',
':',
'=')
330 IF (.NOT.(luign))
THEN 340 WRITE(
lu,*)
'THE KEY-WORD: ',motcle(
ntyp,
indx)(1:ilong)
341 WRITE(
lu,*)
'APPPEARS AT LEAST TWICE , THE LAST',
342 &
' VALUE WILL BE KEPT...' 347 IF (.NOT.(luign))
THEN 349 defint(ival) = intlu(icol,ligne)
350 ELSEIF (
ntyp.EQ.2)
THEN 351 defrea(ival) = realu(icol,ligne)
352 ELSEIF (
ntyp.EQ.3)
THEN 353 deflog(ival) = loglu(icol,ligne)
354 ELSEIF (
ntyp.EQ.4)
THEN 355 defcar(ival) = carlu(lcar,icol,ligne,quote,motcle,
356 & taille,motign,lonign,nmaxr,
357 & nficda,len(defcar(ival)))
363 defatt(ival) = motatt(
ntyp,add)
368 l1 = longlu(defcar(ival))
381 IF (
ntyp .EQ. 1)
THEN 382 nulint = intlu(icol,ligne)
383 ELSEIF (
ntyp .EQ. 2)
THEN 384 nulrea = realu(icol,ligne)
385 ELSEIF (
ntyp .EQ. 3)
THEN 386 nullog = loglu(icol,ligne)
387 ELSEIF (
ntyp .EQ. 4)
THEN 388 nulcar = carlu(lcar,icol,ligne,quote,motcle,
389 & taille,motign,lonign,nmaxr,nficda,
394 icol = next(icol+1,ligne)
396 IF(ligne(icol:icol).EQ.ptvirg)
THEN 423 IF (.NOT.(dynam))
THEN 424 DO i=1 , min(ival,
itai)
426 motint(add+i-1) = defint(i)
427 ELSEIF (
ntyp.EQ.2)
THEN 428 motrea(add+i-1) = defrea(i)
429 ELSEIF (
ntyp.EQ.3)
THEN 430 motlog(add+i-1) = deflog(i)
431 ELSEIF (
ntyp.EQ.4)
THEN 432 motcar(add+i-1) = defcar(i)
437 IF (utindx(
ntyp,i))
THEN 438 IF(adress(
ntyp,i) .NE. add)
THEN 439 IF (adress(
ntyp,i) .LT. add) deplac = 0
440 IF (adress(
ntyp,i) .GT. add) deplac = ival -
itai 441 DO j=1 , dimens(
ntyp,i)
442 adsrc = adress(
ntyp,i)+j-1
443 addes = adress(
ntyp,i)+j-1+deplac
444 IF (addes.GT. nmax)
GO TO 1515
446 usrint(addes) = motint(adsrc)
447 ELSEIF (
ntyp.EQ.2)
THEN 448 usrrea(addes) = motrea(adsrc)
449 ELSEIF (
ntyp.EQ.3)
THEN 450 usrlog(addes) = motlog(adsrc)
451 ELSEIF (
ntyp.EQ.4)
THEN 452 usrcar(addes) = motcar(adsrc)
454 usratt(addes) = motatt(
ntyp,adsrc)
456 IF (adress(
ntyp,i) .GT. add)
THEN 457 adress(
ntyp,i) = adress(
ntyp,i) + deplac
458 IF (adress(
ntyp,i) .GT. nmax)
GO TO 1515
461 ELSE IF (adress(
ntyp,i) .EQ. add)
THEN 464 usrint(add+j-1) = defint(j)
465 ELSEIF (
ntyp.EQ.2)
THEN 466 usrrea(add+j-1) = defrea(j)
467 ELSEIF (
ntyp.EQ.3)
THEN 468 usrlog(add+j-1) = deflog(j)
469 ELSEIF (
ntyp.EQ.4)
THEN 470 usrcar(add+j-1) = defcar(j)
472 usratt(add+j-1) = defatt(j)
474 dimens(
ntyp,i) = ival
480 IF (utindx(
ntyp,i))
THEN 481 adsrc = adress(
ntyp,i)
482 DO j=1 ,dimens(
ntyp,i)
484 motint(adsrc+j-1)=usrint(adsrc+j-1)
485 ELSEIF (
ntyp.EQ.2)
THEN 486 motrea(adsrc+j-1)=usrrea(adsrc+j-1)
487 ELSEIF (
ntyp.EQ.3)
THEN 488 motlog(adsrc+j-1)=usrlog(adsrc+j-1)
489 ELSEIF (
ntyp.EQ.4)
THEN 490 motcar(adsrc+j-1)=usrcar(adsrc+j-1)
492 motatt(
ntyp,adsrc+j-1) = usratt(adsrc+j-1)
534 IF (.NOT.(vumot)) nbmot = nbmot + 1
541 IF (nbmot.GT.1 .AND. (.NOT.(vumot)) )
THEN 543 CALL classe(dimens,taille,motcle,utindx,nmax,
544 & offset,adress,indic,luign,
545 & motint,motrea,motlog,motcar,motatt ,
546 & defcar,defint,deflog,defrea,defatt )
550 IF (.NOT.(vumot)) vumot=.true.
554 param2= carlu(lcar,icol,ligne,quote,motcle,taille,motign,
555 & lonign,nmaxr,nficda,len(
param))
560 nulcar = carlu(lcar,icol,ligne,quote,motcle,taille,
561 & motign,lonign,nmaxr,nficda,len(nulcar))
564 icol = next(icol+1,ligne)
568 ELSE IF(numero.EQ.2)
THEN 570 IF (ordre.NE.1)
GOTO 1500
572 type2= carlu(lcar,icol,ligne,quote,motcle,taille,motign,
573 & lonign,nmaxr,nficda,len(type))
574 TYPE=type2(1:min(lcar,9))
575 IF(
TYPE(1:6).EQ.
'ENTIER' 576 & .OR.
TYPE(1:8).EQ.
'INTEGER') then
578 ELSEIF(
TYPE(1:4).EQ.
'REEL' 579 & .OR.
TYPE(1:4).EQ.
'REAL') then
581 ELSEIF(
TYPE(1:7).EQ.
'LOGIQUE' 582 & .OR.
TYPE(1:7).EQ.
'LOGICAL') then
584 ELSEIF(
TYPE(1:9).EQ.
'CARACTERE' 585 & .OR.
TYPE(1:6).EQ.
'STRING') then
591 WRITE (
lu,1003) ligne
592 1003
FORMAT(1x,a72,/,1x,
'UNKNOWN TYPE ON THIS LINE')
596 icol = next(icol+1,ligne)
600 ELSE IF(numero.EQ.3)
THEN 601 IF (ordre.NE.2)
GOTO 1500
603 indx = intlu(icol,ligne)
604 icol = next(icol+1,ligne)
610 IF (nign.GT.100)
THEN 611 WRITE(
lu,*)
'TOO MANY WORDS FOR EDAMOX',
623 ELSE IF(numero.EQ.4)
THEN 624 IF (ordre.NE.3)
GOTO 1500
626 itai = intlu(icol,ligne)
627 icol = next(icol+1,ligne)
632 ELSE IF(numero.EQ.5)
THEN 635 IF (ordre.LT.3.OR.ordre.GT.6)
GOTO 1500
643 IF (
ntyp .EQ. 1)
THEN 644 defint(
deflu) = intlu(icol,ligne)
645 ELSE IF (
ntyp .EQ. 2)
THEN 646 defrea(
deflu) = realu(icol,ligne)
647 ELSE IF (
ntyp .EQ. 3)
THEN 648 deflog(
deflu) = loglu(icol,ligne)
649 ELSE IF (
ntyp .EQ. 4)
THEN 650 defcar(
deflu) = carlu(lcar,icol,ligne,quote,motcle,
651 & taille,motign,lonign,nmaxr,nficda,
652 & len(defcar(
deflu)))
653 l1 = longlu(defcar(
deflu))
665 icol = next(icol+1,ligne)
670 IF(ligne(icol:icol).EQ.ptvirg)
THEN 687 IF (
ntyp .EQ. 1)
THEN 688 nulint = intlu(icol,ligne)
689 ELSE IF (
ntyp .EQ. 2)
THEN 690 nulrea = realu(icol,ligne)
691 ELSE IF (
ntyp .EQ. 3)
THEN 692 nullog = loglu(icol,ligne)
693 ELSE IF (
ntyp .EQ. 4)
THEN 694 nulcar = carlu(lcar,icol,ligne,quote,motcle,taille,
695 & motign,lonign,nmaxr,nficda,len(nulcar))
698 icol = next(icol+1,ligne)
700 IF (ligne(icol:icol) .EQ. ptvirg)
THEN 707 icol = next(icol+1,ligne)
711 ELSE IF(numero.EQ.6)
THEN 713 IF(aidlng.AND.doc)
THEN 715 511
FORMAT(1x,72(
'-'))
719 CALL aidelu(icol,ligne,doc.AND.aidlng)
726 ELSE IF((numero .GE. 7) .AND. (numero .LE. 14))
THEN 727 CALL aidelu(icol,ligne,.false.)
730 ELSE IF (numero .EQ. 15)
THEN 731 IF (ordre.NE.3.AND.ordre.NE.4)
GOTO 1500
734 icol = next(icol+1,ligne) -1
735 CALL influ(icol,ligne,defatt,trouve,luign,motcle,taille,
736 & motign,lonign,nmaxr,nficda,gestd)
744 icol = next(icol,ligne)
755 IF(
nfic.EQ.nficmo)
THEN 756 WRITE(
lu,*)
'-------------------------------' 757 WRITE(
lu,*)
'- ERROR IN THE DICTIONARY -' 758 WRITE(
lu,*)
'-------------------------------' 762 WRITE(
lu,*)
'-----------------------------------------' 763 WRITE(
lu,*)
'- ERROR IN THE STEERING FILE -' 764 WRITE(
lu,*)
'-----------------------------------------' 775 IF(
nfic.EQ.nficmo)
THEN 777 CALL classe(dimens,taille,motcle,utindx,nmax,
778 & offset,adress,indic,luign,
779 & motint,motrea,motlog,motcar,motatt ,
780 & defcar,defint,deflog,defrea,defatt )
782 IF(nficmo.EQ.nficda.OR.
nfic.EQ.nficda)
THEN 793 WRITE(
lu,*)
'*********************************************' 794 WRITE(
lu,*)
'ADRESS GREATER THAN NMAX = ',nmax
795 WRITE(
lu,*)
'TOO MANY VALUES OF TYPE : ',
ntyp,
' DECLARED.' 796 WRITE(
lu,*)
'STOP OF DAMOCLES AT KEY-WORD NUMBER: ',
indx 797 WRITE(
lu,*)
'*********************************************' 806 IF (utindx(4,k).AND.indic(4,k).GE.2.AND.
807 & trouve(4,k).LT.3.AND.trouve(4,k).GT.0)
THEN 817 IF (longlu(motcar(add+i-1)).EQ.0)
THEN 819 motcar(add+j-1)=motcar(add+j)
827 IF (i.LE.nval)
GO TO 1185
829 IF (i.LT.nval)
GO TO 1180
833 IF (nval.EQ.0.AND.indic(4,k).EQ.2)
THEN 834 WRITE(
lu,*)
'EMPTY ALLOCATION NOT ALLOWED FOR ',
842 IF (nval.LT.dimens(4,k))
THEN 849 IF (utindx(4,k).AND.indic(4,k).EQ.3.AND.trouve(4,k).EQ.0.
850 & and.dimens(4,k).GT.1)
THEN 868 IF (vucmd(k).AND.(.NOT.(
erreur)))
THEN 869 CALL cmd (icol,ligne,adress,dimens,trouve,motcle,
nmot,
870 & motint,motrea,motlog,motcar,motatt,indic,taille,
871 & utindx,dynam,vucmd,execmd,nficda,nmaxr)
881 DO indx = 1 , nmaxr(k)
882 IF (utindx(k,
indx))
THEN 883 IF (trouve(k,
indx).EQ.0)
THEN 886 IF (dimens(k,
indx).NE.1)
THEN 887 IF (dynam) dimens(k,
indx) = 0
889 WRITE(
lu,*)
'----------------------------------------' 891 WRITE(
lu,1102) motcle(k,
indx)(1:taille(k,
indx))
892 1102
FORMAT(1x,
'BEWARE, THE KEY-WORD:',1x,a,/,1x,
893 &
'HAS BEEN GIVEN NO VALUE')
908 WRITE(
lu,*)
'DAMOC IS STOPPED' 918 WRITE(
lu,
'(/,1X,A72,/)') ligne
919 WRITE(
lu,*)
'AT LINE ',
nlign,
', PRIORITY ORDER NOT RESPECTED' 921 WRITE(
lu,*)
'EXPECTED ORDER IS :' 922 WRITE(
lu,*)
'NOM, TYPE, INDEX, (TAILLE), (SUBMIT), (DEFAUT)' integer function dimens(IELM)
subroutine influ(ICOL, LIGNE, DEFATT, TROUVE, LUIGN, MOTCLE, SIZE, MOTIGN, LONIGN, NMAXR, NFICDA, GESTD)
subroutine classe(DIMENS, SIZE, MOTCLE, UTINDX, NMAX, OFFSET, ADRESS, INDIC, LUIGN, MOTINT, MOTREA, MOTLOG, MOTCAR, MOTATT, DEFCAR, DEFINT, DEFLOG, DEFREA, DEFATT)
subroutine cmd(ICOL, LIGNE, ADRESS, DIMENS, TROUVE, MOTCLE, NMOT2, MOTINT, MOTREA, MOTLOG, MOTCAR, MOTATT, INDIC, SIZE, UTINDX, DYNAM, VUCMD, EXECMD, NFICDA, NMAXR)
subroutine dico(ITYP, NUMERO, ILONG, CHAINE, MOTCLE, MOTPRO, LONPRO, SIZE, UTINDX, LANGUE, AIDLNG, MOTIGN, NIGN, LUIGN, TYPIGN, LONIGN, NFICDA, NBLANG, NMAXR)
integer, dimension(4) nmot
logical erreur
Y. AUDOUIN (EDF LAB, LNHE) 09/05/2014 V7P0 First version.
subroutine damoc(ADRESS, DIMENS, NMAX, DOC, LLNG, LLU, MOTINT, MOTREA, MOTLOG, MOTCAR, MOTATT, DEFINT, DEFREA, DEFLOG, DEFCAR, DEFATT, USRINT, USRREA, USRLOG, USRCAR, USRATT, MOTCLE, TAILLE, TROUVE, UTINDX, NFICMO, NFICDA, INDIC, GESTD, NBLANG, RETRY)
subroutine aidelu(ICOL, LIGNE, DOC)