C From gras@cephag.observ-gr.fr  Wed Dec  4 11:58:48 1996
C Return-Path: gras@cephag.observ-gr.fr
C Received: from cephag (cephag.observ-gr.fr [130.190.28.8]) by ensta.ensta.fr (8.7.5/8.7.3) with SMTP id LAA16498 for <diam@ensta.fr>; Wed, 4 Dec 1996 11:58:37 +0100 (MET)
C Posted-Date: Wed, 4 Dec 1996 11:55:48 +0100 (NFT)
C Date: Wed, 4 Dec 1996 11:55:48 +0100 (NFT)
C From: Gras Regis <gras@cephag.observ-gr.fr>
C To: Maurice Diamantini <diam@ensta.fr>
C Cc: gras@cephag
C Subject: Re: A propos de stead et du fortran
C In-Reply-To: <diam-9610250810.AA000215242@erable7.ensta.fr>
C Message-Id: <Pine.A32.3.91.961204115128.36092A-100000@cephag.observ-gr.fr>
C Mime-Version: 1.0
C Content-Type: TEXT/PLAIN; charset=US-ASCII
C 
C Bonjour,
C 
C Excusez mon retard a vous repondre, mais ... (mille et une mauvaises raisons)
C 
C Je vous mets en fin de ce mail un exemple de priogramme fortran
C 
C Voici un exemple de programme fortran
C *) C'est tout a fait par hazard que tout est ecrit en majuscule.
C *) Les instructions commencent en colonne 7 (8 serait tout a fait acceptable)
C    En fait il est agreable de faire commencer les lignes a la colonne
C    generee par tab (tabulation)
C *) Le symbole ligne suite est en colonne 6 (Les lignes sont limitees a 72
C    caracteres pour des raisons historiques [ cartes perforees ], et ca a ete
C    maintenu, pour des raisons esoteriques ....)
C *) Concernant les commentaires, la regle stricte est
C c en colonne 1
C L'usage a etendu la norme a 
C * en colonne 1
C 
C *) Cote indentation, on est parfaitement libre d'indenter comme on veut
C    Dans cet exemple la regle suivie est:
C 	7  10  13  16  etc etc   de 3 en 3
C    Ca ne m'a pas l'air mal. Qu'en pensez vous ?
C 
C Concernant la colorisation, si c'est automatique, parfait, mais la colorisation
C par menu (refresh) comme en LaTeX est tout a fait plaisante aussi.
C 
C Si effectivement on pouvait coloriser
C en une couleur (rouge par expl) les modules [program, subroutine, function,
C block data]
C et en une autre couleur les mots cles du langage (ou au moins les principaux)
C ca serait tres tres bien.
C Comme mot cles du langage la liste peut toujours s'etendre. Par contre je ne
C sais pas si stead est ou non "case sensitive". Fortran lui ne l'est pas
C ainsi GOTO et goto et meme Goto sont le meme ordre. De meme, en fortran, le
C caractere espace N'EST PAS un separateur.
C o p en .... est valide (OPEN). Sans aller jusque la, il serait agreable de
C reconnaitre au moins go to   et goto.
C A ce qui existe deja dans les templates et qui reprend l'essentiel des mots
C cles du fortran, peut'etre pourrait on rajouter:
C 	block data (que je vais inserer au meme titre que program et 
C         subroutine)	
C 	go to et goto
C 	entry 
C 	call
C *) Je reviens sur la programmetion par exemple de pre-tabkey-hook etc etc ..
C    le travail ne me fait pas peur. C'est juste une question de temps et si 
C    possible d'exemple.
C 
C Bien cordialement.


*---------------------------------------------------------------------------*
* Regis Gras                               |     Tel (33) 76 82 62 60       *
* Laboratoire CEPHAG                       |     ou  (33) 76 82 64 26       *
* ENSIEG, Rue de la Houille Blanche BP 46  |     Fax (33) 76 82 63 84       *
* 38402 Saint Martin d'Heres CEDEX, France | e-mail gras@cephag.observ-gr.fr*
*---------------------------------------------------------------------------*


      SUBROUTINE CONNECT(LINE,ERROR)
C----------------------------------------------------------------------
C GREG	Support routine for command CONNECT/BLANKING Bval Eval
C Arguments :
C	LINE	C*(*)	Command line
C	ERROR	L	Logical error flag
C----------------------------------------------------------------------
      include 'inc:format.inc' 
      INCLUDE 'greg.inc'
      INCLUDE 'data.inc' 
      CHARACTER*(*) LINE
      LOGICAL SIC_PRESENT,ERROR
      INTEGER SIC_NARG
      INTEGER XINCA(9),YINCA(9),IXY,FORM,NARG
      REAL*8 BVAL,EVAL,YBASE
      INTEGER IPX, IPY, MEMORY(1), POINTER
*
      EVAL = EBLANK
      CALL SIC_DBLE(LINE,1,2,EVAL,.FALSE.,*99)
      BVAL = CBLANK
      CALL SIC_DBLE(LINE,1,1,BVAL,.FALSE.,*99)
      NARG = SIC_NARG(0)
      IF (NARG.EQ.0 .OR. NARG.EQ.2) THEN 
         FORM = 0
         CALL GET_INCARNATION('CONNECT',LINE,FORM,IXY,XINCA,YINCA,ERROR)
         IF (ERROR) RETURN
         IPX = POINTER(XINCA(2),MEMORY)
         IPY = POINTER(YINCA(2),MEMORY)
         IF (FORM.EQ.FMT_R8) THEN
            CALL GR8_CONNECT(IXY,MEMORY(IPX),MEMORY(IPY),BVAL,EVAL)
         ELSE
            CALL GR4_CONNECT(IXY,MEMORY(IPX),MEMORY(IPY),BVAL,EVAL)
         ENDIF
         CALL SIC_VOLATILE(XINCA)
         CALL SIC_VOLATILE(YINCA)
      ENDIF
      RETURN
*
      ENTRY GHISTO(LINE,ERROR)
*
      EVAL = EBLANK
      CALL SIC_DBLE(LINE,1,2,EVAL,.FALSE.,*99)
      NARG = SIC_NARG(0)
      IF (NARG.EQ.0 .OR. NARG.EQ.2) THEN
         FORM = FMT_R8
         CALL GET_INCARNATION('HISTOGRAM',LINE,FORM,IXY,
     &   XINCA,YINCA,ERROR)
         IF (ERROR) RETURN
         IPX = POINTER(XINCA(2),MEMORY)
         IPY = POINTER(YINCA(2),MEMORY)
         IF (.NOT.SIC_PRESENT(2,0)) THEN
            IF (EVAL.GE.0.D0) THEN
               BVAL = CBLANK
               CALL SIC_DBLE(LINE,1,1,BVAL,.FALSE.,*98)
               CALL GR8_HISTO(IXY,MEMORY(IPX),MEMORY(IPY),
     &         BVAL,EVAL)
            ELSE
               CALL HISTO1(MEMORY(IPX),MEMORY(IPY),IXY)
            ENDIF
         ELSE
            BVAL = CBLANK
            CALL SIC_DBLE(LINE,1,1,BVAL,.FALSE.,*98)
            YBASE = 0.D0
            CALL SIC_DBLE(LINE,2,1,YBASE,.FALSE.,*98)
            CALL GR8_HISTO_BASE(IXY,MEMORY(IPX),MEMORY(IPY)
     &      ,BVAL,EVAL,YBASE)
         ENDIF
         CALL SIC_VOLATILE(XINCA)
         CALL SIC_VOLATILE(YINCA)
      ENDIF
      RETURN
*
98    CALL SIC_VOLATILE(XINCA)
      CALL SIC_VOLATILE(YINCA)
99    ERROR = .TRUE.
      END

* bidouille à moi pour tester le mode :



c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
