nouins
C NOUINS SOURCE CB215821 24/07/17 21:15:13 11961 C SERT A DONNER LES NOMS INDIQUES AUX OBJETS SE TROUVANT DANS LA PILE C SUBROUTINE NOUINS IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCNOYAU -INC CCOPTIO -INC SMBLOC -INC SMLMOTS -INC SMLENTI -INC CCASSIS C CHARACTER*(8) ITBNO,ITCH CHARACTER*(32) ITCH2 CHARACTER*(LONOM) CNOM LOGICAL LLLERR , LOPREM , LOERAS, BOOL1 REAL*8 XVAL C On positionne JERR au MAXI entre l'erreur par ASSISTANT et l'erreur GLOBALE jerr=MAX(IERR,IERGLB) IF (INTEMP.EQ.0)GO TO 10 IF(jerr.GT.1) GO TO 20 C ON AFFECTE UN OBJET TEMPORAIRE EVENTUEL IRETTP=0 IF(IRETTP.EQ.0) THEN ITBNOM=ITANO1(1) INOOB2(ITBNOM)=' ' IOUEP2(ITBNOM)=0 GO TO 20 ENDIF IF (IRETTP.EQ.0) THEN ENDIF ITBNOM=ITANO1(1) INOOB2(ITBNOM)=JTYOBJ(IMOTLU) IOUEP2(ITBNOM)=JPOOB4(IMOTLU) ISSPOT=ISPOTE IIPOTE=IIPOTE+1 IF ( IIPOTE.GT. IPOTEM(/1)) THEN C write (6,*)'**************************************' C write (6,*) 'necessite dagrandir iipote ' , iipote C write (6,*)'**************************************' NVQTEM=IPOTEM(/1)+20 SEGADJ ISSPOT ENDIF IPOTEM(IIPOTE) = ITBNOM GOTO 100 10 CONTINUE C ON PREND LES NOMS LES UNS APRES LES AUTRES INOM=0 11 CONTINUE INOM=INOM+1 IF (INOM.GT.NBNOM) GOTO 100 if(nbesc.ne.0) segact ipiloc IRET=0 ITBNOM=ITANO1(INOM) ITCHA=INOOB1(ITBNOM) IDEBCH=IPCHAR(ITCHA) IFINCH=IPCHAR(ITCHA+1)-1 MOTERR(1:8)=ICHARA(IDEBCH:IFINCH) ITCH=ITANOM(INOM) if(nbesc.ne.0)SEGDES,IPILOC if(Iretou.ne.0) then itch='PROCEDUR' else endif C write(6,*) ' itch iret ' , itch , iret IF (INOM.NE.NBNOM) THEN IF (INOOB2(ITBNOM).EQ.'TABLE '.OR.INOOB2(ITBNOM).EQ. $ 'METHODOL' ) THEN C VEUT-ON REMPLIR UN ELEMENT D'UNE TABLE? if(nbesc.ne.0) segact ipiloc ENDIF ENDIF 12 CONTINUE if(nbesc.ne.0) segact ipiloc IDEBCH=IPCHAR(ITCHA) IFINCH=IPCHAR(ITCHA+1)-1 ITCH=ICHARA(IDEBCH:IFINCH) if(nbesc.ne.0)SEGDES,IPILOC IF (jerr.LE.1) THEN IF( ITCH .EQ.' ') THEN GO TO 20 ENDIF IF( ITCH .EQ.'.') THEN GO TO 20 ENDIF IF(ITCH(1:1).EQ.'#') THEN GO TO 20 ENDIF INOOB2(ITBNOM)=JTYOBJ(IMOTLU) IOUEP2(ITBNOM)=JPOOB4(IMOTLU) ELSE IF(ITCH .NE.'.'.AND.ITCH.NE. $ ' ') INOOB2(ITBNOM)='ANNULE ' ENDIF GOTO 11 100 CONTINUE C VERIFIER QU'IL N'Y A PAS D'OBJET DANS LA PILE IF(jerr.NE.0) GOTO 20 IF (IRETOU.EQ.0) GOTO 20 MOTERR(1:8)=ITCH IF (ITCH .EQ. 'MOT ') THEN ITCH2=ITCH IF (CNOM.EQ.' ') THEN CNOM=ITCH2 ENDIF ELSEIF (ITCH .EQ. 'ENTIER ') THEN WRITE(ITCH2, '(i32)') IVAL IF (CNOM.EQ.' ') THEN CNOM=ITCH2 ENDIF ELSEIF (ITCH .EQ. 'FLOTTANT') THEN WRITE(ITCH2, '(F32.2)') XVAL IF (CNOM.EQ.' ') THEN CNOM=ITCH2 ENDIF ELSEIF (ITCH .EQ. 'LOGIQUE ') THEN IF (BOOL1) THEN ITCH2='VRAI ' ELSE ITCH2='FAUX ' ENDIF IF (CNOM.EQ.' ') THEN CNOM=ITCH2 ENDIF ELSE ENDIF MOTERR(9:8+LONOM)=CNOM 20 CONTINUE C IF( jerr.NE.0 .AND. MBFONC.EQ.0) THEN IF( jerr.NE.0 .AND. IERPER.LE.2) THEN IF(MBFONC.EQ.0) THEN CALL TRBACK ELSE CALL ANABAC ENDIF ENDIF NOMLU=0 IF ( IRAZ .LE. -1 .OR. jerr.NE.0) THEN IPTEM=-(IRAZ + 1) if(jerr.ne.0) iptem=0 CALL RAZPIL ENDIF LECTAB=0 C RETASSER LA PILE DES REELS (TOUTES LES 30 FOIS) C ICTAS=ICTAS+1 C IF (ICTAS.GT.10) THEN CALL TASREE C ICTAS=0 C ENDIF C y a t -il une erreur sur les assistants ? if (LODEFE) then merres = ierres segact merres LLLERR = LOSIER segdes merres if ( LLLERR ) THEN C il faut que les assistants vident les listes d'instructions JG = nbesc SEGINI MLENTI DO i = 1 , nbesc LECT(i) = 1 END DO LOPREM = .TRUE. 9876 continue NBINSS = 0 DO i = 1 , nbesc if ( LECT(I) .EQ. 1 ) then MESINS = MESCL(I) if ( LOPREM ) then SEGACT MESINS*MOD else SEGACT MESINS*(MOD,ECR=1) end if if ( NBINS .EQ. 0 .AND. INSCOU .EQ. 0 ) THEN LECT(I) = 0 else NBINSS = NBINSS + 1 end if SEGDES MESINS*RECORD end if END DO LOPREM = .FALSE. IF ( NBINSS .NE. 0 ) GOTO 9876 SEGSUP MLENTI C les assistants ont vide leur pile d'instructions segact merres*mod do jerr = 1, NBERR if(liserr(1,jerr).ne.0) then write(ioimp,*) ' ------------------------------' write(ioimp,*) ' assistant :',liserr(3,jerr) write(ioimp,*) ' erreur :',liserr(1,jerr) MLMOTS = liserr(2,jerr) call ooove1(mlmots,iret) if(iret.eq.2) then segact MLMOTS segdes MLMOTS write(ioimp,*) ' ------------------------------' endif endif end do NBERR = 0 LOSIER = .FALSE. segdes merres IERR =0 IERGLB=0 RETURN end if if (LOTRMA) then mesins = mescl(0) segact mesins*mod call nouins2 end if end if ierglb=ierr RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales