lirnom
C LIRNOM SOURCE CB215821 24/07/17 21:15:09 11961 C LIRNOM SOURCE CHAT 06/03/29 21:27:09 5360 C C FOURNIT A LIRE UNE PHRASE ELEMENTAIRE MISE EN PILE SOUS FORME DECODEE C C DEFINITION DE LA PILE : C ITANOM( ILONG) CONTIENT LES ADRESSES DANS LA TABLE DES NOMS C DES NOMS A AFFECTER ET LEURS TYPES. C C SI ITINTE(I)=0 SIGNALE FIN DE PHRASE ELEMENTAIRE C SI ITINTE(I)=-1 SIGNALE FIN DE PHRASE COMPLETE C SI ITINTE(I)= AUTRE CHOSE DONNE LA POSITION DANS PILE DES NOMS C C AUTRES VARIABLES : C NBNOM = NOMBRE DE NOMS CONTENUS DANS ITANOM C SI NBNOM=0 LE NOM CONTENUE EST UN NOM C D'OBJET TEMPORAIRE SONT EXISTENCE EST C NON GARANTIE. C INILU =0 SIGNALE QU'IL FAUT INITIALISER LA C LECTURE PAR L'APPEL A INILIR C MBFONC = 0 ON SE TROUVE EN REPETITION D'UN BLOC C REPETER. C MBLSUP DIFFERENT DE 0 ON SE TROUVE POUR LA C PREMIERE FOIS DANS UN BLOC REPETER. SUBROUTINE LIRNOM IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCREDLE -INC CCNOYAU -INC CCOPTIO -INC SMBLOC -INC CCASSIS LOGICAL IPEG sredle=iredle i100= -100 * write(6,*) ' lirnom mdeobj', mdeobj IF (MBFONC.EQ.0) THEN MBCOUR=MBCOUR+1 MTXBLC=MTXBL C MTXBLL=MTXBLC(MBCOUR) C SEGACT MTXBLL C NBNOM=MTXBLB(/1) NBNOM=LMTXBM(MBCOUR+1)- LMTXBM(MBCOUR) C IPVINT=MTXBLA(/1) IPVINT=MTXBA(MBCOUR+1)-MTXBA(MBCOUR) IDEF= LMTXBM(MBCOUR) * write(6,*) ' lirnom mdeobj', mdeobj if( mbloc.eq.2120910 ) then * write(6,*)'mbcour nbnom ipvint idef ',mbcour,nbnom,ipvint,idef endif DO 103 I=1,NBNOM C ITANO1(I)=MTXBLB(I) C ITANOM(I)=MTXBLM(I) if(MTXBLB(I+IDEF).ge.0) then ITANO1(I)=MTXBLB(I+IDEF) + mdeobj - 1 * if( itano1(i).eq.646) then * write(6,*) ' 646 MTXBLB(I+IDEF) mdeobj',MTXBLB(I+IDEF),mdeobj * endif else ITANO1(I)=MTXBLB(I+IDEF)/i100 endif ITANOM(I)=MTXBLM(I+IDEF) 103 CONTINUE IDEF=MTXBA(MBCOUR) DO 104 I=1,IPVINT C ITINTE(I)=MTXBLA(I) if(mtxbla(i+idef).gt.0)then itinte(i)=MTXBLA(I+IDEF) + mdeobj - 1 elseif( MTXBLA(I+IDEF).lt.-99) then ITINTE(I)=MTXBLA(I+IDEF)/I100 * write(6,*) ' bizarrequa itinte ' , itinte(i) else ITINTE(I)=MTXBLA(I+IDEF) * write(6,*) ' bizarreter dans lirnom ' ,itinte(i) endif * if( mbloc.eq.2120910 ) then * write(6,*) ' i itinte(I) ',i ,itinte(i) * endif 104 CONTINUE C INTEMP=MTXTEM INTEMP=MTXTTM(MBCOUR) NOMLU=1 ISTOP=0 IINTPO=1 C SEGDES MTXBLL IERR=0 * write(6,*) 'lecture procedur ' * write(6,*) ' itinte' , (itinte(iou),iou=1,ipvint) * write(6,*) 'inoob1',( inoob1(ITINTE(IOU)),IOU=1,IPVONT-1) * write(6,*)' itano1 itanom nbnom',itano1(1),itanom(1),nbnom RETURN ENDIF IPVIR=0 * write(6,*) ' lirnom appel anasyn lmnnom', lmnnom NOMLU=1 INTEMP=0 NBNOM=0 IINTPO=1 if(ierr.ne.0) return IF (.NOT.IPEG) GO TO 20 ILUL=0 IF(IRE.EQ.0) THEN RETURN ENDIF C IF(IRE.NE.3) CALL ERREUR(345) C IF(IERR.NE.0) RETURN ILUL=0 IF (MOT(1:1).EQ.'=') GOTO 200 IF (ITANO1(/1).GT.NBNOM) GOTO 2 M=NBNOM+1 SEGADJ ITABNO ITANOM(M)=' ' ITANO1(M)=0 2 NBNOM=NBNOM+1 IREF=NBNOM IAV=1 * AFIN DE LIRE CORRECTEMENT L'INDICE D'UNE TABLE SI C'EST UNE CONSTANTE ITANO1(IREF)=IPLAMO C ON PEUT INDIQUER APRES LE TYPE DESIRE ILUL=1 IF (MOT(1:1).NE.'*') GOTO 4 IF (MOT(1:1).EQ.'=') THEN ITANOM(IREF)=' ' ELSE ITANOM(IREF)=MOT(:LONOM) ILUL=0 ENDIF GOTO 1 4 CONTINUE ITANOM(IREF)=' ' GO TO 1 C ON CREE UN NOM D'OBJET TEMPORAIRE 20 CONTINUE INTEMP=1 IF (ITANOM(/2).LT.1) THEN M=1 SEGADJ ITABNO ENDIF ITANO1(1)=0 ITANOM(1)=' ' NBNOM=1 MOT(1:LONOM)='#' IF (IPTEM.LT.9) THEN WRITE (MOT(2:2),FMT='(I1)') IPTEM+1 NCAR=2 ELSE IF(IERR.NE.0) RETURN WRITE (MOT(2:3),FMT='(I2)') IPTEM+1 NCAR=3 ENDIF IRE=3 IAV=1 * write(6,*) ' appel de prenom avec nom temporaire' ITANO1(1)= IPLAMO IPTEM=IPTEM+1 200 CONTINUE IPVINT=0 C C ON VA TRADUIRE LA PHRASE POUR REMPLIR LE TABLEAU INTERMEDIAIRE C IF (MBLSUP.NE.0) THEN MTXBLC=MTXBL SEGACT MTXBLC*MOD ENDIF 21 CONTINUE ** write(6,*) ' lirnom appel de redlec ' * write(6,*) ' lirnom sortie de redlec ire' , ire C IRE = 0 FIN DE PHRASE C METTRE ICI LE SAUVETAGE DE LA PRECOMPILATION DANS LE CAS D'UN BLOC C IF (IRE.EQ.0) THEN IF(ITINTE(/1).LE.IPVINT) THEN ITINTE(**)=0 ENDIF IPVINT=IPVINT+1 ITINTE(IPVINT)=0 IF(IPVIR.EQ.1) ITINTE(IPVINT)=-(IPTEM + 1) C ON EFFACE LA LIGNE (A PARTIR DE = ) I1=IEGAL TEXT(II3:II3)=' ' 7778 CONTINUE IF (INTEMP.NE.0) THEN IF (ICOUR.LE.2) then RETURN endif if(nbesc.ne.0) segact ipiloc INCHA=INOOB1(ITANO1(1)) IDEBCH=IPCHAR(INCHA) IFINCH= IPCHAR(INCHA+1)-1 TEXT(ICOUR-2:ICOUR)= ICHARA(IDEBCH:IFINCH) if(nbesc.ne.0) SEGDES,IPILOC ENDIF IF(MBLSUP.NE.0) THEN NINSTV=NINSTV+1 IPVINQ=MTXBA(NINSTV)+IPVINT IPVINN=MTXBLA(/1) NINST=LMTXBM(/1) NBNOMM=MTXBLB(/1) NBNOML=LMTXBM(NINSTV)+NBNOM ISEG=0 IF(NINSTV+2.GT.NINST) THEN NINST= NINST+ 1000 ISEG=1 ENDIF IF(IPVINQ.GT.IPVINN) THEN IPVINN=IPVINN+5000 ISEG=1 ENDIF IF(NBNOML.GT.NBNOMM) THEN NBNOMM = NBNOMM + 1000 ISEG=1 ENDIF IF(ISEG.EQ.1) SEGADJ MTXBLC C SEGINI MTXBLL C MTXTEM=INTEMP MTXTTM(NINSTV)=INTEMP C NUINST=NBCART C NUINSV(NINSTV)=NBCART IDEF= LMTXBM(NINSTV) * write(6,*) ' nbnom ',nbnom DO 102 I=1,NBNOM C MTXBLM(I)=ITANOM(I) C MTXBLB(I)=ITANO1(I) MTXBLM(I+IDEF)=ITANOM(I) if(itano1(i). ge.mdeobj) then MTXBLB(I+IDEF)=ITANO1(I) - mdeobj + 1 else MTXBLB(I+IDEF)=ITANO1(I) *I100 endif 102 CONTINUE LMTXBM(NINSTV+1)=IDEF+NBNOM IDEF=MTXBA(NINSTV) DO 101 I=1,IPVINT C MTXBLA(I)=ITINTE(I) if( itinte(i).ge.mdeobj) then * write(6,*) ' ecriture normal itinte(i) ', itinte(i) MTXBLA(I+IDEF)=ITINTE(I) - mdeobj + 1 elseif( itinte(i).gt.0) then * write(6,*) ' on passe bizarre dans lirnom ' ,itinte(I) MTXBLA(I+IDEF)=ITINTE(I)* I100 else * write(6,*) ' bizarrebis dans lirnom itinte(i) ',itinte(i) MTXBLA(I+IDEF)=ITINTE(I) endif 101 CONTINUE * write(6,*)' enr proc mdeobj ',mdeobj * write(6,*) 'itinte',(itinte(iou),iou=1,ipvint) * WRITE(6,*)'INOOB1', (INOOB1(ITINTE(IOU)),IOU=1,IPVINT-1) * write(6,*)'itano1,itanom,nbnom',itano1(1),itanom(1),nbnom MTXBA(NINSTV+1)= IDEF+IPVINT C MTXBLC(**)=MTXBLL C SEGDES MTXBLL ENDIF RETURN ENDIF C IF(IDEBPR.EQ.1.OR.JARGMT.EQ.1) THEN C IF(IRE.NE.3.AND.IRE.NE.4) THEN C CALL ERREUR (6) C ENDIF C IRE=4 C ENDIF IAV=0 * write(6,*) ' lirnom appel de prenom 2 iav 0' * write(6,*) ' lirnom appel de prenom 2 iplamo' ,iplamo * write(6,*) ' inoob1 inoob2 ',inoob1(iplamo),inoob2(iplamo) IPLINT=ITINTE(/1) IF(IPVINT.GE.IPLINT) THEN ITINTE(**)=IPLAMO ELSE ITINTE(IPVINT+1)=IPLAMO ENDIF * if( iplamo.lt.mdeobj.and.iplamo.gt.0) then * write(6,*) ' bizarre ',ire,iplamo ,text(1:62) * endif IPVINT=IPVINT+1 GO TO 21 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales