      SUBROUTINE ECOP(CBID,LBID)
      INCLUDE 'param.f'
      CHARACTER*32  CBID2
      CHARACTER*132 CBID
      CHARACTER*512 CTEMP
C
      LBID = 0
      CBID = ' '
      IF (ITOUCX.NE.0.OR.ILXMI.NE.0) THEN
        CBID2 = '                          '
        IF (ILOGX.GE.0) THEN
          WRITE(CBID2,'(G12.6)') XMIN
        ELSE
          WRITE(CBID2,'(G12.6)') 10.**XMIN
        ENDIF
        CALL ENLEVE_TOUS_BLANCS(CBID2,LL,32)
        CALL ARON(CBID2,LL)
        LBID0 = LBID
        LBID = LBID+7+LL
        CBID(LBID0+1:LBID) = '-xmin='//CBID2(1:LL)//' '
      ENDIF
      IF (ITOUCX.NE.0.OR.ILXMA.NE.0) THEN
        CBID2 = '                        '
        IF (ILOGX.GE.0) THEN
          WRITE(CBID2,'(G12.6)') XMAX
        ELSE
          WRITE(CBID2,'(G12.6)') 10.**XMAX
        ENDIF
        CALL ENLEVE_TOUS_BLANCS(CBID2,LL,32)
        CALL ARON(CBID2,LL)
        LBID0 = LBID
        LBID = LBID+7+LL
        CBID(LBID0+1:LBID) = '-xmax='//CBID2(1:LL)//' '
      ENDIF
      IF (ITOUCY.NE.0.OR.ILYMI.NE.0) THEN
        CBID2 = '                        '
        IF (ILOGY.GE.0) THEN
          WRITE(CBID2,'(G12.6)') YMIN
        ELSE
          WRITE(CBID2,'(G12.6)') 10.**YMIN
        ENDIF
        CALL ENLEVE_TOUS_BLANCS(CBID2,LL,32)
        CALL ARON(CBID2,LL)
        LBID0 = LBID
        LBID = LBID+7+LL
        CBID(LBID0+1:LBID) = '-ymin='//CBID2(1:LL)//' '
      ENDIF
      IF (ITOUCY.NE.0.OR.ILYMA.NE.0) THEN
        CBID2 = '                        '
        IF (ILOGY.GE.0) THEN
          WRITE(CBID2,'(G12.6)') YMAX
        ELSE
          WRITE(CBID2,'(G12.6)') 10.**YMAX
        ENDIF
        CALL ENLEVE_TOUS_BLANCS(CBID2,LL,32)
        CALL ARON(CBID2,LL)
        LBID0 = LBID
        LBID = LBID+7+LL
        CBID(LBID0+1:LBID) = '-ymax='//CBID2(1:LL)//' '
      ENDIF
      IF (IECHANGE.LT.0) THEN
        LBID0 = LBID
        LBID  = LBID+6
        CBID(LBID0+1:LBID) = '-swap '
      ENDIF
      IF (ISPEED.GT.0) THEN
        LBID0 = LBID
        IF (ISPEED.EQ.1) THEN
          LBID = LBID+7
          CBID(LBID0+1:LBID) = '-speed '
        ELSEIF(ISPEED.LT.10) THEN
          LBID = LBID+9
          WRITE(CBID(LBID0+1:LBID),'("-speed=",I1," ")') ISPEED
        ELSEIF(ISPEED.LT.100) THEN
          LBID = LBID+10
          WRITE(CBID(LBID0+1:LBID),'("-speed=",I2," ")') ISPEED
        ELSEIF(ISPEED.LT.1000) THEN
          LBID = LBID+11
          WRITE(CBID(LBID0+1:LBID),'("-speed=",I3," ")') ISPEED
        ELSEIF(ISPEED.LT.10000) THEN
          LBID = LBID+12
          WRITE(CBID(LBID0+1:LBID),'("-speed=",I4," ")') ISPEED
        ELSE
          LBID = LBID+14
          WRITE(CBID(LBID0+1:LBID),'("-speed=",I6.6," ")') ISPEED
        ENDIF
      ENDIF
Cfj      IF (PROP.EQ.1.) THEN
Cfj        LBID0 = LBID
Cfj        LBID  = LBID+8
Cfj        CBID(LBID0+1:LBID) = '-square '
Cfj      ELSEIF(PROP.LT.1.) THEN
Cfj        LBID0 = LBID
Cfj        LBID  = LBID+10
Cfj        CBID(LBID0+1:LBID) = '-portrait '
Cfj      ENDIF
      IF (PROP.LT.0.5) THEN
        LBID0 = LBID
        LBID  = LBID+11
        CBID(LBID0+1:LBID) = '-portrait2 '
      ELSEIF(PROP.LT.1.) THEN
        LBID0 = LBID
        LBID  = LBID+10
        CBID(LBID0+1:LBID) = '-portrait '
      ELSEIF(PROP.EQ.1.) THEN
        LBID0 = LBID
        LBID  = LBID+8
        CBID(LBID0+1:LBID) = '-square '
      ELSEIF(PROP.GT.2.) THEN
        LBID0 = LBID
        LBID  = LBID+6
        CBID(LBID0+1:LBID) = '-long '
      ENDIF
C
      IF (IREGRE.LT.0) THEN
        WRITE(CBID2,'(I1)') -IREGRE
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-reg'//CBID2(1:1)//' '
      ENDIF
      IMA = 0
      IDI = 0
      DO I=1,NCOURB
        IF (ILT(I).LT.0)   IDI = IDI+1
        IF (NMARK(I).NE.0) IMA = IMA+1
      ENDDO
      IF (IDI.EQ.NCOURB) THEN
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-scat '
      ELSEIF(IMA.EQ.NCOURB) THEN
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-mark '
      ELSE
        DO I=1,NCOURB
          IF (NMARK(I).NE.0) THEN
            LBID0 = LBID
            IF (I.LT.10) THEN
              LBID = LBID0+8
              WRITE(CBID(LBID0+6:LBID),'("=",I1," ")') I
            ELSEIF(I.LT.100) THEN
              LBID = LBID0+9
              WRITE(CBID(LBID0+6:LBID),'("=",I2," ")') I
            ELSE
              LBID = LBID0+10
              WRITE(CBID(LBID0+6:LBID),'("=",I3," ")') I
            ENDIF
            IF (ILT(I).LT.0) THEN
              CBID(LBID0+1:LBID0+5) = '-scat'
            ELSE
              CBID(LBID0+1:LBID0+5) = '-mark'
            ENDIF
          ENDIF
        ENDDO
      ENDIF
      IOPT2 = IABS(IOPT)
      IF (IOPT2.GT.10) THEN
        ILEG = 0
        DO I=1,NCOURB
          IF (LEGEND(I)(1:LONG(I)).NE.FICHIER(I)(1:LONG(I))) ILEG = 1
        ENDDO
        IF (ILEG.EQ.0) THEN
          LBID0 = LBID
          LBID = LBID+5
          CBID(LBID0+1:LBID) = '-leg '
          IF (IOPT2.GT.11.AND.IOPT2.LT.20) THEN
            LBID0 = LBID
            LBID = LBID+10
            WRITE(CBID(LBID0+1:LBID),'("-legpos=",I1," ")') IOPT2-10
          ENDIF
          IF (ICADLEG.EQ.1.OR.ICADLEG.EQ.2) THEN
            LBID0 = LBID
            LBID = LBID+10
            WRITE(CBID(LBID0+1:LBID),'("-legtyp=",I1," ")') ICADLEG
          ENDIF
        ENDIF
      ENDIF
      IF (ILOGX.LT.0.AND.ILOGY.LT.0) THEN
        LBID0 = LBID
        LBID = LBID+5
        CBID(LBID0+1:LBID) = '-log '
      ELSEIF(ILOGX.LT.0) THEN
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-logx '
      ELSEIF(ILOGY.LT.0) THEN
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-logy '
      ENDIF
      IF (FRANCAIS.NEQV.LANGDEF) THEN
        LBID0 = LBID
        LBID = LBID+3
        IF (FRANCAIS) THEN
          CBID(LBID0+1:LBID) = '-f '
        ELSE
          CBID(LBID0+1:LBID) = '-e '
        ENDIF
      ENDIF
      IF (IGROS.EQ.1) THEN
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-big1 '
      ELSEIF(IGROS.EQ.2) THEN
        LBID0 = LBID
        LBID = LBID+6
        CBID(LBID0+1:LBID) = '-big2 '
      ENDIF
      IF (IQUADR.EQ.-1) THEN
        LBID0 = LBID
        LBID = LBID+4
        CBID(LBID0+1:LBID) = '-g1 '
      ELSEIF(IQUADR.EQ.-2) THEN
        LBID0 = LBID
        LBID = LBID+4
        CBID(LBID0+1:LBID) = '-g2 '
      ENDIF
      IF (IAXES.EQ.1) THEN
        LBID0 = LBID
        LBID = LBID+7
        IF (IOPT.GE.0) THEN
          CBID(LBID0+1:LBID) = '-axis1 '
        ELSE
          CBID(LBID0+1:LBID) = '-axis3 '
        ENDIF
      ELSEIF(IAXES.EQ.2) THEN
        LBID0 = LBID
        LBID = LBID+7
        CBID(LBID0+1:LBID) = '-axis2 '
      ELSEIF(IOPT.LT.0) THEN
        LBID0 = LBID
        LBID = LBID+7
        CBID(LBID0+1:LBID) = '-axis0 '
      ENDIF
      IF (IBAR.LT.0) THEN
        LBID0 = LBID
        LBID = LBID+5
        CBID(LBID0+1:LBID) = '-sky '
      ENDIF
      IF (FACWIN.NE.1.) THEN
        NFACW = MAX(10,NINT(100.*FACWIN))
        IF (NFACW.LT.100) THEN
          LBID0 = LBID
          LBID = LBID+8
          CBID2 = '                          '
          WRITE(CBID2,'(I2)') NFACW
          CBID(LBID0+1:LBID) = '-win='//CBID2(1:3)
        ENDIF
      ENDIF
      IF (IENG.LT.0) THEN
        LBID0 = LBID
        LBID = LBID+7
        CBID(LBID0+1:LBID) = '-noeng '
      ENDIF
      IF (NABS.GT.0) THEN
        LBID0 = LBID
        CALL TRAITE_CHAINE(ABSC,NABS,CTEMP,LTEMP)
        LBID = LBID + LTEMP + 5
        CBID(LBID0+1:LBID) = '-titx='//CTEMP(2:LTEMP)
      ENDIF
      IF (NORD.GT.0) THEN
        LBID0 = LBID
        CALL TRAITE_CHAINE(ORDON,NORD,CTEMP,LTEMP)
        LBID = LBID + LTEMP + 5
        CBID(LBID0+1:LBID) = '-tity='//CTEMP(2:LTEMP)
      ENDIF
      IF (NGEN.GT.0) THEN
        LBID0 = LBID
        CALL TRAITE_CHAINE(GENE,NGEN,CTEMP,LTEMP)
        LBID = LBID + LTEMP + 7
        CBID(LBID0+1:LBID) = '-titgen='//CTEMP(2:LTEMP)
      ENDIF
      END
C-----------------------------------------------------------------------
      SUBROUTINE TRAITE_CHAINE(C,L,CTEMP,LTEMP)
      CHARACTER*(*) C,CTEMP
C
      ND = NCHARTROUVE(C,L,CHAR(34))
      IF (ND.GT.0) THEN
        NQ = NCHARTROUVE(C,L,CHAR(39))
        IF (NQ.GT.0) THEN
          CALL ACCENT(C,L,CTEMP,LTEMP,0)
          ND = NCHARTROUVE(CTEMP,LTEMP,CHAR(34))
          DO I=LTEMP,1,-1
            CTEMP(I+2:I+2) = CTEMP(I:I)
          ENDDO
          LTEMP = LTEMP+4
          IF (ND.GT.0) THEN
            CTEMP(1:2) = ' '//CHAR(39)
            CTEMP(LTEMP-1:LTEMP) = CHAR(39)//' '
          ELSE
            CTEMP(1:2) = ' '//CHAR(34)
            CTEMP(LTEMP-1:LTEMP) = CHAR(34)//' '
          ENDIF
        ELSE
          LTEMP = L+4
          CTEMP(1:LTEMP) = ' '//CHAR(39)//C(1:L)//CHAR(39)//' '
        ENDIF
      ELSE
        LTEMP = L+4
        CTEMP(1:LTEMP) = ' '//CHAR(34)//C(1:L)//CHAR(34)//' '
      ENDIF
      END
C-----------------------------------------------------------------------
      INTEGER FUNCTION NCHARTROUVE(C,L,CC)
      CHARACTER*(*) C
      CHARACTER*1 CC
      NCHARTROUVE = 0
      DO I=1,L
        IF (C(I:I).EQ.CC) NCHARTROUVE = NCHARTROUVE+1
      ENDDO
      END
C-----------------------------------------------------------------------
      SUBROUTINE DOUBLEQ(C,L)
      CHARACTER*512 C,CC
      LL = 0
      DO I=1,L
        IF (C(I:I).EQ.CHAR(34)) THEN
          LL = LL+1
          CC(LL:LL) = CHAR(92)
        ENDIF
        LL = LL+1
        CC(LL:LL) = C(I:I)
      ENDDO
      L = LL
      C(1:L) = CC(1:LL)
      END
C-----------------------------------------------------------------------
      SUBROUTINE ARON(CBID,L)
      CHARACTER*32 CBID
      IPOIN = 0
      DO I=1,L
        IF (CBID(I:I).EQ.'.') IPOIN=I
      ENDDO
      IF (IPOIN.NE.0) THEN
        IFLAG = 0
        IF (L.GT.4) THEN
          IF (CBID(L-3:L-3).EQ.'e'.OR.CBID(L-3:L-3).EQ.'E') THEN
            IF (CBID(L-1:L).NE.'00') IFLAG = L
            L = L-4
          ENDIF
        ENDIF
        LL = L+1
   1    LL = LL-1
        IF (CBID(LL:LL).EQ.'0') GOTO 1
        IF (CBID(LL:LL).EQ.'.') THEN
          L = LL-1
        ELSE
          L = LL
        ENDIF
        IF (L.EQ.0) THEN
          L = 1
          CBID(1:1) = '0'
        ENDIF
        IF (IFLAG.NE.0) THEN
          CBID(L+1:L+4) = CBID(IFLAG-3:IFLAG)
          L = L+4
        ENDIF
      ENDIF
      END
C--------------------------------------------------------------------
      SUBROUTINE LIOP(NBOPT,NBOPT2,NMARK1,XMINBA,XMAXBA,YMINBA,YMAXBA)
      INCLUDE 'param.f'
      INTEGER NMARK1(*)
      INCLUDE 'Version.f'
C
      ILXMI = 0
      ILXMA = 0
      ILYMI = 0
      ILYMA = 0
      ISHIFT = 0
      NBOPT2 = 0
      DO I=1,NBOPT
        IF (ISHIFT.EQ.1) THEN
          NGEN = LONG(I)
          GENE(1:NGEN) = FICHIER(I)(1:LONG(I))
          ISHIFT = 0
        ELSEIF(ISHIFT.EQ.2) THEN
          NABS = LONG(I)
          ABSC(1:NABS) = FICHIER(I)(1:LONG(I))
          ISHIFT = 0
        ELSEIF(ISHIFT.EQ.3) THEN
          NORD = LONG(I)
          ORDON(1:NORD) = FICHIER(I)(1:LONG(I))
          ISHIFT = 0
        ELSE
          IF (FICHIER(I)(1:2).EQ.'-h'
     &         .OR.FICHIER(I)(1:2).EQ.'-H'
     &         .OR.FICHIER(I)(1:6).EQ.'--help') THEN
            WRITE(*,'(A)') PROBIG
            PRINT*,' '
            IF (FRANCAIS) THEN
              PRINT*,'Options disponibles :'
              PRINT*,' '
              PRINT*,' -V, -v, --version : version du programme'
              PRINT*,' -h, -H, --help    : affiche ce menu'
              PRINT*,
     & ' -axis<n> : types d''axes (cf. touches "v" et "c")'
              PRINT*,'        n=0 --> cadre standard + axes Ox Oy'
              PRINT*,'        n=1 --> 2 axes avec flèches'
              PRINT*,'        n=2 --> 2 axes centres en 0'
              PRINT*,'        n=3 --> idem n=1 + axes Ox Oy'
              PRINT*,' -big<n>  : traits et fontes + gros :'
              PRINT*,'        n=1 --> gros'
              PRINT*,'        n=2 --> très gros'
              PRINT*,
     & ' -check   : tronque les valeurs très grandes ou très petites'
              PRINT*,' -e       : version anglaise'
              PRINT*,' -f       : version francaise'
              PRINT*,' -g<n>    : grille. n=1 --> grille grossière'
              PRINT*,'                    n=2 --> grille fine'
              PRINT*,' -leg     : légendes du nom des fichiers'
              PRINT*,'            (<=> -legpos=1 -legtyp=0)'
              PRINT*,
     & ' -legpos=n : légendes du nom des fichiers, position n:'
              PRINT*,'        n=1 --> en haut à gauche'
              PRINT*,'        n=2 --> en haut à droite'
              PRINT*,'        n=3 --> en bas à droite'
              PRINT*,'        n=4 --> en bas à gauche'
              PRINT*,'        n=5 --> au centre'
              PRINT*,
     & ' -legtyp=n : légendes du nom des fichiers de type n:'
              PRINT*,'        n=0 --> cadre standard'
              PRINT*,'        n=1 --> cadre simple'
              PRINT*,'        n=2 --> pas de cadre'
              PRINT*,
     & '        n=-x --> légende de type x, petits caractères'
              PRINT*,' -logx    : échelle logarithmique sur Ox'
              PRINT*,' -logy    : échelle logarithmique sur Oy'
              PRINT*,
     &' -log     : échelle logarithmique sur Ox et Oy (<=> -logx -logy)'
              PRINT*,' -long    : mode landscape allongé'
              PRINT*,
     & ' -mark[=num]  : marqueurs aux points [pour la courbe num]'
              PRINT*,' -markcol=col : couleur des marqueurs'
              PRINT*,
     & '        (0 à 15, ou même couleur que les traits si <0)'
              PRINT*,' -mono    : dessin monochrome'
              PRINT*,' -ms=size : taille des marqueurs (défaut size=1.)'
              PRINT*,' -ortho   : repère orthonormé'
              PRINT*,' -portrait: dessin vertical'
              PRINT*,' -portrait2: dessin vertical très allongé'
              PRINT*,
     & ' -ps[=file]      : PostScript Noir et Blanc'
     &             //' (dans fichier [file] optionnel)'
              PRINT*,
     & ' -pscol[=file]   : PostScript Couleur'
     &             //' (dans fichier [file] optionnel)'
              PRINT*,
     & ' -pstex[=file]   : PostScript Noir et Blanc pour LaTeX'
     &             //' (dans fichier [file] optionnel)'
              PRINT*,
     & ' -pscoltex[=file]: PostScript couleur pour LaTeX'
     &             //' (dans fichier [file] optionnel)'
              PRINT*,'Pour les 4 options ci-dessus, file=-, envoie'
              PRINT*,'les commandes PostScript sur le standart output'
              PRINT*,
     & ' -reg<n>  : régression linéaire. n entre 1 et 4 donne'
              PRINT*,'        la position de la légende'
              PRINT*,
     & ' -scat[=num] : points discrets (pas de traits entre les points)'
     & //' [pour la courbe num]'
              PRINT*,' -sky     : barres au lieu des courbes au trait'
              PRINT*,' -square  : dessin carré'
              PRINT*,' -swap    : échange des axes x et y'
              PRINT*,' -titgen="titre"  : titre général "titre"'
              PRINT*,' -titx="titre Ox" : titre sur Ox "titre Ox"'
              PRINT*,' -tity="titre Oy" : titre sur Oy "titre Oy"'
              PRINT*,' -xmin=xx : borne inférieure en x. exemple :'
              PRINT*,'        -xmin=3.456'
              PRINT*,' -xmax=xx : borne supérieure en x'
              PRINT*,' -ymin=yy : borne inférieure en y'
              PRINT*,' -ymax=yy : borne supérieure en y'
              PRINT*,' -win=nn  : taille de la fenêtre en pourcentage'
              PRINT*,'        de la taille normale. exemple :'
              PRINT*,
     & '        -win=65 --> fenêtre 65% de la taille standard'
              PRINT*,' '
              PRINT*,
     & '**** NEW *** NEW *** NEW *** NEW *** NEW *** NEW *** NEW ****'
              PRINT*,
     & 'Les fichiers de données contiennent au moins 2 colonnes.'
              PRINT*,
     & 'Les fichiers à plus de 2 colonnes sont maintenant utilisables'
     &             //' (à la Gnuplot) :'
              PRINT*,
     & 'Pour tracer la colonne q en fonction de la colonne p'
     & //' du fichier "fich", tapez :'
              PRINT*,'xgraphic fich#p#q'
              PRINT*,' '
              PRINT*,
     & 'N''hésitez pas à envoyer vos bugs et suggestions à :'
              PRINT*,'         Francois.Jouve@polytechnique.fr'
              PRINT*,' '
              PRINT*,
     & '--> to print this help in english, type "xgraphic -e -h"'
            ELSE
              PRINT*,'Available options:'
              PRINT*,' '
              PRINT*,' -V, -v, --version: version of the program'
              PRINT*,' -h, -H, --help   : type this menu'
              Print*,' -axis<n> : axis types (cf. options "v" and "c").'
              PRINT*,'        n=0 --> standart axis + Ox Oy'
              PRINT*,'        n=1 --> 2 axis with arrows'
              PRINT*,'        n=2 --> 2 axis centered on 0'
              PRINT*,'        n=3 --> idem n=1 + Ox Oy'
              PRINT*,' -big<n>  : bigger lines and fonts:'
              PRINT*,'        n=1 --> big'
              PRINT*,'        n=2 --> huge'
              PRINT*,
     & ' -check   : truncate tiny and huge values (for debug)'
              PRINT*,' -e       : english version'
              PRINT*,' -f       : french version'
              PRINT*,' -g<n>    : grid. n=1 --> coarse grid'
              PRINT*,'             n=2 --> fine grid'
              PRINT*,' -leg     : filenames as legends'
              PRINT*,'            (<=> -legpos=1 -legtyp=0)'
              PRINT*,
     & ' -legpos=n : filenames as legends, position n:'
              PRINT*,'        n=1 --> upper left corner'
              PRINT*,'        n=2 --> upper right corner'
              PRINT*,'        n=3 --> lower right corner'
              PRINT*,'        n=4 --> lower left corner'
              PRINT*,'        n=5 --> centre'
              PRINT*,
     & ' -legtyp=n : filenames as legend, type n:'
              PRINT*,'        n=0 --> standart framing'
              PRINT*,'        n=1 --> simple framing'
              PRINT*,'        n=2 --> no frame'
              PRINT*,
     & '        n=-x --> type x legend, small font'
              PRINT*,' -logx    : logarithmic scale on Ox'
              PRINT*,' -logy    : logarithmic scale on Oy'
              PRINT*,
     & ' -log     : logarithmic scale on Ox and Oy (<=> -logx -logy)'
              PRINT*,' -long    : narrow landscape mode'
              PRINT*,
     & ' -mark[=num]  : markers on points [for plot number num]'
              PRINT*,' -markcol=col : markers color'
              PRINT*,
     & '        (0 to 15, or same color than lines if <0)'
              PRINT*,' -mono    : monochrom drawing'
              PRINT*,' -ms=size : markers''s size (default size=1.)'    
              PRINT*,' -ortho   : orthonormal axis'
              PRINT*,' -portrait: portrait mode'
              PRINT*,' -portrait2: portrait mode (tall)'
              PRINT*,
     & ' -ps[=file]      : black and white PostScript'
     &           //' (in optionnal file [file])'
              PRINT*,
     & ' -pscol[=file]   : color PostScript'
     &           //' (in optionnal file [file])'
              PRINT*,
     & ' -pstex[=file]   : black and white PostScript for LaTeX'
     &           //' (in optionnal file [file])'
              PRINT*,
     & ' -pscoltex[=file]: color PostScript for LaTeX'
     &           //' (in optionnal file [file])'
              PRINT*,'In the 4 options above, if file=-, PS commands'
              PRINT*,'are displayed on the standart output'
              PRINT*,
     & ' -reg<n>  : linear regression. n in [1..4] indicates'
              PRINT*,'        the legend''s position'
              PRINT*,
     & ' -scat[=num] : scatter points (no lines between points)'
     & //' [for plot number num]'
              PRINT*,' -sky     : bar chart'
              PRINT*,' -square  : square drawing'
              PRINT*,' -swap    : swap x and y axis'
              PRINT*,' -titgen="title"  : general title "title"'
              PRINT*,' -titx="Ox title" : title on Ox "Ox title"'
              PRINT*,' -tity="Oy title" : title on Oy "Oy title"'
              PRINT*,' -xmin=xx : lower bound on x. example:'
              PRINT*,'        -xmin=3.456'
              PRINT*,' -xmax=xx : upper bound on x'
              PRINT*,' -ymin=yy : lower bound on y'
              PRINT*,' -ymax=yy : upper bound on y'
              PRINT*,
     & ' -win=nn  : window''s size as a % of the normal size. example:'
              PRINT*,
     & '        -win=65 --> window 65% of the default size'
              PRINT*,' '
              PRINT*,
     & '**** NEW *** NEW *** NEW *** NEW *** NEW *** NEW *** NEW ****'
              PRINT*,
     & 'Data files must have at least 2 columns.'
              PRINT*,
     & 'Data files with more than 2 columns are now allowed'
     &             //' (à la Gnuplot):'
              PRINT*,
     & 'to plot column q as a function of column p'
     & //' of the file "fich", type:'
              PRINT*,'xgraphic fich#p#q'
              PRINT*,' '
              PRINT*,'For bug report and suggestions, a single address:'
              PRINT*,'         Francois.Jouve@polytechnique.fr'
            ENDIF
            PRINT*,' '
            STOP
          ELSEIF(FICHIER(I)(1:9).EQ.'--version'
     &       .OR.FICHIER(I)(1:2).EQ.'-V'
     &       .OR.FICHIER(I)(1:2).EQ.'-v') THEN
            PRINT*,' '
            WRITE(*,'(A)') PROBIG
            PRINT*,' '
            IF (FRANCAIS) THEN
              PRINT*,'Nombre maximum de courbes      :',NCMAX
              PRINT*,'Nombre maximum de points total :',MEM
              PRINT*,' '
              PRINT*,'Tapez "'//
     &          PROGEFF(1:LPROGEFF)//' -h" pour la liste des options'
              PRINT*,
     & 'N''hésitez pas à envoyer vos bugs et suggestions à :'
            ELSE
              PRINT*,'Maximum number of plots       :',NCMAX
              PRINT*,'Maximum total number of points:',MEM
              PRINT*,' '
              PRINT*,'Type "'//
     &          PROGEFF(1:LPROGEFF)//' -h" for more options'
              PRINT*,' '
              PRINT*,'For bug report and suggestions, a single address:'
            ENDIF
            PRINT*,'         Francois.Jouve@polytechnique.fr'
            PRINT*,' '
            STOP
          ELSEIF(FICHIER(I)(1:3).EQ.'-ps') THEN
            LL = 0
            IF (LONG(I).EQ.3) THEN
              IBATCH = 2
              LL = 4
            ELSEIF(FICHIER(I)(4:6).EQ.'tex') THEN
              IBATCH = 1
              LL = 7
            ELSEIF(FICHIER(I)(4:6).EQ.'col') THEN
              IF (FICHIER(I)(7:9).EQ.'tex') THEN
                IBATCH = 4
                LL = 10
              ELSE
                IBATCH = 3
                LL = 7
              ENDIF
            ENDIF
            IF (LL.GT.0) THEN
              IPOST = -1
              IF (FICHIER(I)(LL:LL).EQ.'=') THEN
                LONPS = MIN(80,LONG(I)-LL)
                IF (LONPS.GT.0) THEN
                  NOMPS(1:LONPS) = FICHIER(I)(LL+1:LONG(I))
                ELSE
                  LONPS = 0
                ENDIF
              ENDIF
              IF (LONPS.EQ.1.AND.NOMPS(1:1).EQ.'-') ISTDOUT = 1
            ENDIF
          ELSEIF(FICHIER(I)(1:4).EQ.'-win') THEN
            IF (FICHIER(I)(5:5).EQ.'=') THEN
              READ(FICHIER(I)(6:32),*) III
            ELSE
              READ(FICHIER(I)(5:32),*) III
            ENDIF
            FACWIN = MIN(1.,MAX(.2,REAL(III)*.01))
            CALL PTIFON(FACWIN,IFONT0,IFONT1,IFONT2,IFONT3,IGROS)
          ELSEIF(FICHIER(I)(1:3).EQ.'-xm') THEN
            IF (FICHIER(I)(6:6).EQ.'=') THEN
              IL = 7
            ELSE
              IL = 6
            ENDIF
            IF (FICHIER(I)(4:5).EQ.'in') THEN
              READ(FICHIER(I)(IL:32),*) XMINBA
              ILXMI = 1
            ELSEIF(FICHIER(I)(4:5).EQ.'ax') THEN
              READ(FICHIER(I)(IL:32),*) XMAXBA
              ILXMA = 1
            ENDIF
          ELSEIF(FICHIER(I)(1:3).EQ.'-ym') THEN
            IF (FICHIER(I)(6:6).EQ.'=') THEN
              IL = 7
            ELSE
              IL = 6
            ENDIF
            IF (FICHIER(I)(4:5).EQ.'in') THEN
              READ(FICHIER(I)(IL:32),*) YMINBA
              ILYMI = 1
            ELSEIF(FICHIER(I)(4:5).EQ.'ax') THEN
              READ(FICHIER(I)(IL:32),*) YMAXBA
              ILYMA = 1
            ENDIF
          ELSEIF(FICHIER(I)(1:4).EQ.'-reg') THEN
            READ(FICHIER(I)(5:5),'(i1)') IREGRE
            IREGRE = -MIN(4,MAX(IREGRE,1))
          ELSEIF(FICHIER(I)(1:5).EQ.'-mark') THEN
            IF (FICHIER(I)(6:9).EQ.'col=') THEN
              READ(FICHIER(I)(10:32),*) NNN
              IF (NNN.GE.0.AND.NNN.LE.15) THEN
                DO J=1,NCMAX
                  ICOLM(J) = NNN
                ENDDO
              ELSEIF(NNN.LT.0) THEN
                DO J=1,NCMAX
                  ICOLM(J) = ICOL(J)
                ENDDO
              ENDIF
            ELSEIF(FICHIER(I)(6:6).EQ.' ') THEN
              IMARK = -1
              DO J=1,NCMAX
                NMARK(J) = NMARK1(J)
              ENDDO
            ELSEIF(FICHIER(I)(6:6).EQ.'=') THEN
              READ(FICHIER(I)(7:32),*) NNN
              IF (NNN.LE.NCMAX) NMARK(NNN) = NMARK1(NNN)
            ENDIF
          ELSEIF(FICHIER(I)(1:6).EQ.'-ortho') THEN
            IORTHO = 1
          ELSEIF(FICHIER(I)(1:3).EQ.'-ms') THEN
            READ(FICHIER(I)(4:32),*) FACMS
          ELSEIF(FICHIER(I)(1:4).EQ.'-log') THEN
            IF (FICHIER(I)(5:5).EQ.'x') THEN
              ILOGX = -1
            ELSEIF(FICHIER(I)(5:5).EQ.'y') THEN
              ILOGY = -1
            ELSE
              ILOGX = -1
              ILOGY = -1
            ENDIF
          ELSEIF(FICHIER(I)(1:6).EQ.'-speed') THEN
            IF (FICHIER(I)(7:7).EQ.'=') THEN
              READ(FICHIER(I)(8:LONG(I)),*) ISPEED
              ISPEED = MAX(1,ISPEED)
            ELSE
              ISPEED = 1
            ENDIF
          ELSEIF(FICHIER(I)(1:5).EQ.'-long') THEN
            PROP = 2.*HXA4/HYA4
            IPROX = 98
            IPROY = 38
          ELSEIF(FICHIER(I)(1:7).EQ.'-square') THEN
            PROP = 1.
            IPROX = 85
            IPROY = 80
          ELSEIF(FICHIER(I)(1:10).EQ.'-portrait2') THEN
            PROP = 0.5*HYA4/HXA4
            IPROX = 42
            IPROY = 98
          ELSEIF(FICHIER(I)(1:9).EQ.'-portrait') THEN
            PROP = HYA4/HXA4
            IPROX = 68
            IPROY = 95
          ELSEIF(FICHIER(I)(1:5).EQ.'-scat') THEN
            IF (FICHIER(I)(6:6).EQ.' ') THEN
              IDISC = -1
              DO J=1,NCMAX
                NMARK(J) = NMARK1(J)
                ILT(J)   = -1
                ICOLM(J) = ICOL(J)
              ENDDO
            ELSEIF(FICHIER(I)(6:6).EQ.'=') THEN
              READ(FICHIER(I)(7:32),*) NNN
              IF (NNN.LE.NCMAX) THEN
                NMARK(NNN) = NMARK1(NNN)
                ILT(NNN)   = -1
                ICOLM(NNN) = ICOL(NNN)
              ENDIF
            ENDIF
          ELSEIF(FICHIER(I)(1:6).EQ.'-check') THEN
            ISAFE = 1
          ELSEIF(FICHIER(I)(1:5).EQ.'-swap') THEN
            IECHANGE = -1
          ELSEIF(FICHIER(I)(1:4).EQ.'-big') THEN
            IF (FICHIER(I)(5:5).EQ.'0') THEN
              IGROS = 0
            ELSEIF(FICHIER(I)(5:5).EQ.'2') THEN
              IGROS = 2
            ELSE
              IGROS = 1
            ENDIF
          ELSEIF(FICHIER(I)(1:2).EQ.'-e') THEN
            FRANCAIS = .FALSE.
            CALL BERLITZ(1)
          ELSEIF(FICHIER(I)(1:2).EQ.'-f') THEN
            FRANCAIS = .TRUE.
            CALL BERLITZ(0)
          ELSEIF(FICHIER(I)(1:2).EQ.'-g') THEN
            IF (FICHIER(I)(3:3).EQ.'1') THEN
              IQUADR = -1
            ELSEIF(FICHIER(I)(3:3).EQ.'2') THEN
              IQUADR = -2
            ENDIF
          ELSEIF(FICHIER(I)(1:5).EQ.'-mono') THEN
            IMONO0 = 1
          ELSEIF(FICHIER(I)(1:5).EQ.'-axis') THEN
            IF (FICHIER(I)(6:6).EQ.'1') THEN
              IAXES = 1
            ELSEIF(FICHIER(I)(6:6).EQ.'2') THEN
              IAXES = 2
            ELSE
              IOPT = -IOPT
              IF (FICHIER(I)(6:6).EQ.'3') IAXES = 1
            ENDIF
          ELSEIF(FICHIER(I)(1:5).EQ.'-sky') THEN
            IBAR = -1
          ELSEIF(FICHIER(I)(1:4).EQ.'-tit') THEN
            IF (FICHIER(I)(5:7).EQ.'gen') THEN
              IF (FICHIER(I)(8:8).EQ.'=') THEN
                NGEN = LONG(I)-8
                IF (NGEN.GT.0) THEN
                  GENE(1:NGEN) = FICHIER(I)(9:LONG(I))
                  NBOPT2 = NBOPT2+1
                ELSE
                  ISHIFT = 1
                ENDIF
              ELSE
                ISHIFT = 1
              ENDIF
            ELSE
              IF (FICHIER(I)(6:6).EQ.'=') THEN
                IF (FICHIER(I)(5:5).EQ.'x') THEN
                  NABS = LONG(I)-6
                  IF (NABS.GT.0) THEN
                    ABSC(1:NABS) = FICHIER(I)(7:LONG(I))
                    NBOPT2 = NBOPT2+1
                  ELSE
                    ISHIFT = 2
                  ENDIF
                ELSEIF(FICHIER(I)(5:5).EQ.'y') THEN
                  NORD = LONG(I)-6
                  IF (NORD.GT.0) THEN
                    ORDON(1:NORD) = FICHIER(I)(7:LONG(I))
                    NBOPT2 = NBOPT2+1
                  ELSE
                    ISHIFT = 3
                  ENDIF
                ENDIF
              ELSE
                IF (FICHIER(I)(5:5).EQ.'x') THEN
                  ISHIFT = 2
                ELSEIF(FICHIER(I)(5:5).EQ.'y') THEN
                  ISHIFT = 3
                ENDIF
              ENDIF
            ENDIF
          ELSEIF(FICHIER(I)(1:4).EQ.'-leg') THEN
            IF (FICHIER(I)(5:8).EQ.'typ=') THEN
              IF (FICHIER(I)(9:9).EQ.'-') THEN
                IPTILEG = 1
                READ(FICHIER(I)(10:10),'(I1)') III
              ELSE
                READ(FICHIER(I)(9:9),'(I1)') III
              ENDIF
              ICADLEG = MAX(0,MIN(2,III))
              IF (ABS(IOPT).LT.10) THEN
                IF (IOPT.GT.0) THEN
                  IOPT = 11
                ELSE
                  IOPT = -11
                ENDIF
              ENDIF
            ELSEIF(FICHIER(I)(5:8).EQ.'pos=') THEN
              READ(FICHIER(I)(9:9),'(I1)') III
              III = MAX(1,MIN(9,III))
              IF (IOPT.GT.0) THEN
                IOPT = III+10
              ELSE
                IOPT = -III-10
              ENDIF
            ELSE
              IF (IOPT.GT.0) THEN
                IOPT = 11
              ELSE
                IOPT = -11
              ENDIF
            ENDIF
          ELSEIF(FICHIER(I)(1:6).EQ.'-noeng') THEN
            IENG = -1
          ENDIF        
        ENDIF        
      ENDDO
C
      IF (ILOGX.LT.0) THEN
        IF (ILXMI.EQ.1) THEN
          IF (XMINBA.GT.0.) THEN
            XMINBA = LOG10(XMINBA)
          ELSE
            XMINBA = -9876543210.
          ENDIF
        ENDIF
        IF (ILXMA.EQ.1) THEN
          IF (XMAXBA.GT.0.) THEN
            XMAXBA = LOG10(XMAXBA)
          ELSE
            XMAXBA = -9876543210.
          ENDIF
        ENDIF
      ENDIF
      IF (ILOGY.LT.0) THEN
        IF (ILYMI.EQ.1) THEN
          IF (YMINBA.GT.0.) THEN
            YMINBA = LOG10(YMINBA)
          ELSE
            YMINBA = -9876543210.
          ENDIF
        ENDIF
        IF (ILYMA.EQ.1) THEN
          IF (YMAXBA.GT.0.) THEN
            YMAXBA = LOG10(YMAXBA)
          ELSE
            YMAXBA = -9876543210.
          ENDIF
        ENDIF
      ENDIF
      END
C-----------------------------------------------------------------------
      SUBROUTINE PTIFON(FAFA,IFONT0,IFONT1,IFONT2,IFONT3,IGROS)
      IF (FAFA.LT.0.3) THEN
        IFONT0 = 9
        IFONT1 = 9
        IFONT2 = 9
        IFONT3 = 9
      ELSEIF(FAFA.LT.0.4) THEN
        IFONT0 = 9
        IFONT1 = 0
        IF (IGROS.EQ.0) THEN
          IFONT2 = 0
          IFONT3 = 9
        ELSEIF(IGROS.EQ.1) THEN
          IFONT2 = 1
          IFONT3 = 0
        ELSE
          IFONT2 = 6
          IFONT3 = 1
        ENDIF
      ELSEIF(FAFA.LT.0.6) THEN
        IFONT0 = 9
        IFONT1 = 0
        IF (IGROS.EQ.0) THEN
          IFONT2 = 6
          IFONT3 = 0
        ELSEIF(IGROS.EQ.1) THEN
          IFONT2 = 3
          IFONT3 = 6
        ELSE
          IFONT2 = 2
          IFONT3 = 3
        ENDIF
      ELSEIF(FAFA.LT.0.8) THEN
        IFONT0 = 0
        IFONT1 = 1
        IF (IGROS.EQ.0) THEN
          IFONT2 = 3
          IFONT3 = 6
        ELSEIF(IGROS.EQ.1) THEN
          IFONT2 = 2
          IFONT3 = 3
        ELSE
          IFONT2 = 4
          IFONT3 = 2
        ENDIF
      ELSE
        IFONT0 = 0
        IFONT1 = 1
        IF (IGROS.EQ.0) THEN
          IFONT2 = 2
          IFONT3 = 3
        ELSEIF(IGROS.EQ.1) THEN
          IFONT2 = 4
          IFONT3 = 2
        ELSE
          IFONT2 = 5
          IFONT3 = 4
        ENDIF
      ENDIF
      END
