C SI        SOURCE    CB215821  24/07/17    21:15:17     11961          
C  INSTRUCTION SI
C
      SUBROUTINE SI
      IMPLICIT INTEGER(I-N)

-INC PPARAM
-INC CCOPTIO
-INC CCNOYAU
-INC SMBLOC
-INC CCREDLE
*
      character*(LOCHAI) chauer
      LOGICAL LOG1
      CHARACTER*8 IJCH
      CHARACTER*4 MCLE(7)
      DIMENSION IMOTCO(7)
      SAVE IMOTCO
      DATA IMOTCO(1)/-1/
      DATA MCLE /'SI  ','SINO','FINS','REPE','FIN ','FINP','FINM'/

      CALL LIRLOG(LOG1,1,IRETOU)
      IF (IERR.NE.0) RETURN
      IPSI=0
      IREPET=0
      ilupoy=0

      IF (LOG1) RETURN
   1  CONTINUE
      CALL NOUTRU
      if(ilupoy.eq.0) then
        lectab=1
        call quetyp (ijch, 1,iretou)
        IF(IERR.NE.0) RETURN
        sredle = iredle
        chauer = text
      endif

C   POUR NE PAS ETRE PAR LA RECHERCHE DE L'INDICE DES TABLES
      LECTAB=1
      CALL LIRMO3(MCLE,7,IRET,0,IMOTCO)
      IF (IERR.NE.0) RETURN
      ilupoy=ilupoy+1

      GOTO (10,20,30,40,50,60,60),IRET
  10  CONTINUE
      IPSI=IPSI+1
      GOTO 1

  20  CONTINUE
      LECTAB=0
      IF (IPSI.EQ.0) THEN
         IF(IREPET.NE.0) THEN
           moterr = chauer
           CALL ERREUR(520)
         ENDIF
         RETURN
      ENDIF
      GOTO 1

  30  CONTINUE
      LECTAB=0
      IF (IPSI.EQ.0) THEN
         IF(IREPET.NE.0) THEN
           moterr =chauer
           CALL ERREUR(520)
         ENDIF
         RETURN
      ENDIF
      IF (IPSI.EQ.0) RETURN
      IPSI=IPSI-1
      GOTO 1

  40  CONTINUE
      CALL REPETE(1)
      IF (IERR.NE.0) RETURN
C  NE LIRE QU'UNE FOIS LA BOUCLE
      MBCONT=1
      IREPET=IREPET+1
      GOTO 1

  50  CONTINUE
      CALL QUETYP( IJCH, 0, IRETOU)
      IF (IERR.NE.0) RETURN

      IF( IRETOU.EQ.0) GO TO 1
      IF(IREPET.EQ.0) THEN
       MBCOUR = MBCOUR -1
       moterr =chauer
       CALL ERREUR(520)
       RETURN
      ENDIF

      CALL FIN
      IF (IERR.NE.0) RETURN
      IREPET=IREPET-1
      GOTO 1

  60  CONTINUE
      MBCOUR = MBCOUR - 1
      moterr =chauer
      CALL ERREUR(521)
      RETURN
      END
 
 
 
 
