Aide fortran
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Aide fortran



  1. #1
    invite5420aad7

    Lightbulb Aide fortran


    ------

    Bonjour,
    je programme actuellement en fortran et en c je dois comparer les deux langages.
    Je ne suis malheureusement pas une experte en fortran y a encore des choses qui m'échapper.

    Premier petit soucis :
    -> je dois récupérer des paramètres entiers passer dans ligne de commande (monprog.f90 100 100) pour définir par exemple les dimensions d'une matrice. J'ai fais des recherche et la seule chose que j'ai toruvé c'est la fonction getarg(entier,char) le problème c'est qu'elle renvoie des arguments de type "string", je ne vois pas comment contourner le problème.

    Deuxième gros soucis :
    -> j'ai fais dans mon programme deux fonction qui prennent en parametres des matrices et je voudrais qu'elle puisse prendre aussi bien des matrices d'entiers que des matrices de réels. ex mafonction(T** A) T pouvant etre entier ou reel. J'ai beau chercher sur internet je vois rien du tout.

    Merci.

    -----

  2. #2
    invitee840409b

    Re : Aide fortran

    Bonjour,

    Je n'ai jamais fait de Fortran, mais cette page semble instructive, et elle est accompagnée d'un exemple : http://gcc.gnu.org/onlinedocs/gfortran/GETARG.html

    Valentin

  3. #3
    invite5420aad7

    Re : Aide fortran

    Bonjour,
    Sur le site ils ont écrit ceci :
    Syntax:
    CALL GETARG(POS, VALUE)
    "POS Shall be of type INTEGER and not wider than the default integer kind; POS \geq 0
    VALUE Shall be of type CHARACTER and of default kind. "
    et justement c'est tout le probleme c'est que value est du type CHARACTERE et que moi je voudras pouvoir récuperer un entier. POS donne le nombre d'arguments. Maisl'arrgument est du type CHARACTERE.
    Est-ce que quelqu'un aurait une solution, aurait déjà rencontré ce problème?
    Bien coridalement

  4. #4
    invite5420aad7

    Re : Aide fortran

    Sinon j'ai avec un script (en bash) rempli un fichier.txt qui contenait les dimensions des matrice il est de la forme :
    10 10 carree
    20 20 carree
    30 30 carree
    ...
    Donc les deux premiers entiers sont les dimensions de ma matrice.
    dans le programme fortran j'essaie de lire les donnes je vous donne ci-dessous le bout du code qui correspond :

    !LECTURE DES CARACTERISTIQUE DE LA MATRICE DAN SLE FICHIER TST.TXT

    OPEN (UNIT=13,FILE="test.txt",FORM="FORMATTED",ACTION="READ",STATUS="OLD")
    READ(13)DIM1,DIM2,FORME

    avec dim1 et dim2 declarer en INTEGER et forme en CHARACTERE*15,
    Ca compile sans erreur mais au moment d'executer ca me renvoie le message d'erreur suivant :
    At line 24 of file prog_princ.f90 (unit = 13, file = 'test.txt')
    Fortran runtime error: Missing format for FORMATTED data transfer


    quelqu'un aurait uen solution pour ce problème ?

  5. A voir en vidéo sur Futura
  6. #5
    Calvert

    Re : Aide fortran

    Oui, ajouter le format qu'il demande !
    Si ta ligne est simple, tu peux essayer un simple

    Code:
    read(13,*)
    Si ça ne fonctionne pas bien, il faut détailler:

    Code:
    read(13,'(i2,1x,i2,1x,a15)')

  7. #6
    invite5420aad7

    Re : Aide fortran

    Citation Envoyé par Calvert Voir le message
    Oui, ajouter le format qu'il demande !
    Si ta ligne est simple, tu peux essayer un simple

    Code:
    read(13,*)
    Si ça ne fonctionne pas bien, il faut détailler:

    Code:
    read(13,'(i2,1x,i2,1x,a15)')
    Bonjour merci,

    effectivement c'est ce que j'ai fini par faire :

    !LECTURE DES CARACTERISTIQUE DE LA MATRICE DANS LE FICHIER TEST.TXT
    OPEN (UNIT=13,FILE="test.txt",FORM= "FORMATTED",STATUS="UNKNOW N")
    READ(13,45)DIM1,DIM2,FORME
    45 FORMAT(I3,I3,A15)

    toujours pas de problème a la compilation,
    maintenant à l'execution j'ai une erreur de segmentation j'imagine que c'est du au fait que je ne parcours pas toutes les lignes de mon fichier.
    10 10 carree
    20 20 carree
    ...

    L'algo serait :
    1-> lit la ligne 1 du fichier et affecte la valeur 10 a dim1, la valeur 10 a dim2 et la valeur carre a forme
    2-> ensuite allouer une matrice 10 10
    3-> ecrire dans un fichier les dimensions de la matrice plus la forme et le temps d'execution d'une fonction
    4-> lit la ligne 2 du fichier et affecte la valeur 20 a dim1, la valeur 20 a dim2 et la valeur carre a forme
    5-> ensuite allouer une matrice 20 20
    6-> ecrire dans un fichier les dimensions de la matrice plus la forme et le temps d'execution d'une fonction
    ...

    indépendamment de 1->, 2-> jusqu'à 3-> marchent bien (mais dans ce cas je defini directement dim1,dim2 et forme ds le programme)
    en gros mon probleme c'est de faire une boucle de lecture

    Cordialement

  8. #7
    Calvert

    Re : Aide fortran

    Pour le moment, je ne vois pas de boucles. A priori, tu vas lire seulement la première ligne de ton fichier.
    Première chose : si tu affiches dim1, dim2 et forme juste après leur lecture, est-ce que cela fonctionne ?

  9. #8
    invite5420aad7

    Re : Aide fortran

    Citation Envoyé par Calvert Voir le message
    Pour le moment, je ne vois pas de boucles. A priori, tu vas lire seulement la première ligne de ton fichier.
    Première chose : si tu affiches dim1, dim2 et forme juste après leur lecture, est-ce que cela fonctionne ?
    Voila ce qu'il maffiche :
    10 10carree

    toujours avec le format 45 : WRITE(*,45)DIM1,DIM2,FORME
    ensuite il me met erreur segmentation;
    j'imagine que ca vient du fait que 10 et carree sont collee a la fin je ne sais pas pourquoi c'est bizzare.
    Pourtant mon texte est bien de la forme : (c'est bien un copier/coller)
    10 10 carree
    20 20 carree
    30 30 carree
    40 40 carree
    et dans mon script j'utilise la commande : echo -e "$k $k carree" >> test.txt

  10. #9
    invite5420aad7

    Re : Aide fortran

    Quand je lui dit de m'afficher un a un DIM1, DIM et FORME, il m'affiche bien les bonnes valeurs, mais juste après il me met erreur de segmentation je sais pas pourquoi

  11. #10
    invite5420aad7

    Re : Aide fortran

    Je pense que le mieux c'est que je vous montre mon code :

    Code:
    PROGRAM PROG_PRINC
    
    !
    
    IMPLICIT NONE
    
    !DECLARATION DES PARAMETRES
    
     ! LA TAILLE DES MATRICE EST PRECISE DANS UN FICHIER TEXTE (TEST.TXT)
    
     INTEGER :: DIM1
    
     INTEGER :: DIM2
    
     INTEGER :: I,J
    
     INTEGER :: K
    
     
    
     CHARACTER*15 :: FORME
    
     
    
     !POUR LE STOCKAGE CLASSIQUE DE MATRICE CREUSE
    
     INTEGER,DIMENSION(:),ALLOCATABLE :: VALUES !TABLEAU DE VALEURS
    
     INTEGER,DIMENSION(:,:),ALLOCATABLE :: INDICES
    
     !POUR LA MATRICE PLEINE 
    
     INTEGER,DIMENSION(:),ALLOCATABLE :: U
    
     INTEGER, DIMENSION (:,:), ALLOCATABLE :: A
    
     INTEGER :: IERR
    
    
    
    !DO WHILE (OK == 0) !BOUCLE POUR 
    
    ! !LECTURE DES CARACTERISTIQUES DE LA MATRICE DANS LE FICHIER TEST.TXT
    
      OPEN (UNIT=13,FILE="test.txt",FORM="FORMATTED",STATUS="UNKNOWN")
    
      READ(13,45)DIM1,DIM2,FORME
    
      WRITE(*,45)DIM1,DIM2,FORME
    
    45 FORMAT(I3,I3,A15)
    
      
    
     
    
     !ALLOCATION DYNAMIQUE DE LA MEMOIRE ALLOCATE (A(DIM1,DIM2),STAT=IERR)
    
     ALLOCATE (U(DIM2))
    
     ALLOCATE (INDICES(DIM1,2),STAT=IERR)
    
     ALLOCATE(VALUES(DIM1))
    
     IF(IERR.NE.0) STOP 'ERREUR!'
    
     
    
     ! PRENONS A LA MATRICE UNITE POUR A ET VALUES
    
     DO I=1,DIM1
    
       DO J=1,DIM2
    
          A(I,J)=0
    
          U(J)=j;
    
       END DO
    
       INDICES(I,1)=I
    
       INDICES(I,2)=I
    
       VALUES(I)=1
    
       A(I,I)=1;
    
     END DO
    
    
    
     
    
    !!!AFFICHONS LA MATRICE I        
    
    ! DO I=1,DIM1
    
    !   WRITE(*,*) (INDICES(I,J),J=1,2)
    
    ! END DO
    
       
    
     !APPEL DES SUBROUTINES  
    
     CALL GEMV(A,U,DIM1,DIM2,FORME)
    
    ! CALL SPMV_CLASSIQUE(INDICES,VALUES,U,DIM1)
    
    ! CALL SPMV(A,U,DIM1)
    
    
    
     !----------------------ESPACE SUBROUTINES
    
     CONTAINS
    
      
    
      !SUBROUTINES MATRICE DENSE
    
      SUBROUTINE GEMV(A,U,DIM1,DIM2,FORME)
    
        !DECLARATIONS PARAMETRES
    
        REAL :: T1,T2,TEMPS_MOY=0.0
    
        INTEGER, INTENT (IN) :: DIM1,DIM2
    
        CHARACTER*15, INTENT (IN) :: FORME
    
        INTEGER :: I,K,COMPTEUR=0,F_COMPTEUR=100
    
        INTEGER,DIMENSION(:), INTENT (IN) :: U
    
        INTEGER, DIMENSION (:,:), INTENT (IN) :: A
    
        INTEGER,DIMENSION(:),ALLOCATABLE :: V
    
        INTEGER :: IERR
    
        ALLOCATE (V(DIM1))
    
        IF(IERR.NE.0) STOP 'ERREUR!'
    
    
    
        !CALCUL PRODUIT
    
        DO COMPTEUR=1,F_COMPTEUR
    
         !TOP CHRONO
    
        CALL CPU_TIME(T1)
    
        
    
        DO I=1,DIM1
    
          V(I)=0
    
        END DO
    
    
    
        DO I=1,DIM1
    
         DO K=1,DIM2
    
           V(I)=V(I)+A(I,K)*U(K)
    
         END DO
    
        END DO
    
        !STOP CHRONO
    
       CALL CPU_TIME(T2)
    
       TEMPS_MOY=T2 -T1+TEMPS_MOY
    
       END DO
    
       TEMPS_MOY=TEMPS_MOY/F_COMPTEUR
    
       WRITE (6,*) 'TEMPS TOTAL POUR GEMV= ',TEMPS_MOY
    
       
    
       ! ECRITURE DES RESULTATS DANS UN FICHIER (ECRITURE SEULE)
    
       OPEN(12,FILE='Dense_F.csv',FORM='FORMATTED',ACTION="WRITE",POSITION="APPEND")
    
       WRITE(12,'(I3,A3,I3,A3,F8.8)') DIM1,';',DIM2,';',TEMPS_MOY
    
       
    
       !FERMETURE DU FICHIER
    
       CLOSE(12)
    
       
    
      END SUBROUTINE GEMV
    
      
    
      
    
      !SUBROUTINES MATRICE CREUSE CLASSIQUE
    
      SUBROUTINE SPMV(INDICES,VALUES,U,DIM1)
    
        !DECLARATIONS PARAMETRES
    
        REAL :: T1,T2,TEMPS_MOY=0.0
    
        INTEGER :: I,K,DIM1,COMPTEUR=0,F_COMPTEUR=100
    
        INTEGER,DIMENSION(:), INTENT (IN) :: VALUES
    
        INTEGER,DIMENSION(:), INTENT (IN) :: U
    
        INTEGER, DIMENSION (:,:), INTENT (IN) :: INDICES
    
        INTEGER,DIMENSION(:),ALLOCATABLE :: V
    
        INTEGER :: IERR
    
        ALLOCATE (V(DIM2))
    
        IF(IERR.NE.0) STOP 'ERREUR!'
    
    
    
        !CALCUL PRODUIT
    
        DO COMPTEUR=1,F_COMPTEUR
    
        !TOP CHRONO
    
        CALL CPU_TIME(T1)
    
        DO I=1,DIM1
    
          V(I)=0
    
        END DO
    
        DO I=1,DIM1
    
         V(INDICES(I,1))=V(INDICES(I,1))+VALUES(I)*U(INDICES(I,2))
    
    !     WRITE (6,*) V(I)
    
        END DO
    
        
    
       !STOP CHRONO 
    
       CALL CPU_TIME(T2)
    
       TEMPS_MOY=T2 -T1+TEMPS_MOY
    
       END DO
    
       TEMPS_MOY=TEMPS_MOY/F_COMPTEUR
    
       WRITE (6,*) 'TEMPS TOTAL POUR SPMV_CLASSIQUE= ',TEMPS_MOY
    
      
    
        !ECRITURE DES RESULTATS DANS UN FICHIER (ECRITURE SEULE)
    
       OPEN(11,FILE='Creuse_F.csv',FORM='FORMATTED',ACTION="WRITE",POSITION="APPEND")
    
       WRITE(11,'(I3,A3,F8.5)') DIM1,';',TEMPS_MOY
    
       !FERMETURE DU FICHIER
    
       CLOSE(11)
    
       
    
      END SUBROUTINE SPMV
    
    
    
      
    
    END PROGRAM PROG_PRINC

  12. #11
    Calvert

    Re : Aide fortran

    Re !

    Il faut chercher dans ton code à quel endroit il fait l'erreur de segmentation. Fais-lui écrire des choses à l'écran de temps en temps, et essaye de déterminer exactement à quelle ligne il plante. Ce n'est pas la lecture, qui se fait correctement. Les segmentation fault sont souvent liée à une mauvaise allocation de mémoire, ou à des manipulations des tableaux avec des indices hors des limites du tableau.

  13. #12
    invite5420aad7

    Re : Aide fortran

    Bonjour,
    encore moi j'ai compris "mon erreur de segmentation"
    elle venait du fait que j'avais mis par inadvertance l'allocation dynamique de la matrice A en commentaire et maintenant ca marche.
    Disons que DIM1=10 et DIM2=10 et FORME=carre.
    Par contre ce qui est bizzard c'est que dans le fichier au lieu de me mettre le temps moyen d'execution il me met des *******
    Sinon ce que j'aimerais savoir c'est comment à la fin lui dire de revenir au debut du programme et de passer a la deuxieme ligne du fichier ?

  14. #13
    Calvert

    Re : Aide fortran

    Il faut faire quelque chose de ce style :

    1. Ouvrir le fichier
    2. Tant que le fichier n'est pas terminé, lire le fichier (avec une boucle do while). Il peut être utile de se renseigner sur le flag "iostat" de l'instruction read.
    3. Fin de la boucle
    4. Fermeture du fichier.

  15. #14
    invite5420aad7

    Question Re : Aide fortran

    bonjour,

    j'ai fais effectivement une boucle, mais à partir de dim1=110 il m'affiche uen erreur d'allocation de matrice que je ne comprend pas.
    Ci-dessous le nouveau code :
    Code:
    PROGRAM PROG_PRINC
    
    !
    
    IMPLICIT NONE
    
    !DECLARATION DES PARAMETRES
    
     ! LA TAILLE DES MATRICE EST PRECISE DANS UN FICHIER TEXTE (TEST.TXT)
    
     INTEGER :: DIM1
    
     INTEGER :: DIM2
    
     INTEGER :: I,J
    
     INTEGER :: K
    
     
    
     CHARACTER*15 :: FORME
    
     
    
     !POUR LE STOCKAGE CLASSIQUE DE MATRICE CREUSE
    
     INTEGER,DIMENSION(:),ALLOCATABLE :: VALUES !TABLEAU DE VALEURS
    
     INTEGER,DIMENSION(:,:),ALLOCATABLE :: INDICES !TABLEAU D'INDICES
    
     !POUR LA MATRICE PLEINE 
    
     INTEGER,DIMENSION(:),ALLOCATABLE :: U
    
     INTEGER, DIMENSION (:,:), ALLOCATABLE :: A
    
     INTEGER :: IERR
    
    
    
    ! !LECTURE DES CARACTERISTIQUES DE LA MATRICE DANS LE FICHIER TEST.TXT
    
      OPEN (UNIT=12,FILE="test.txt",FORM="FORMATTED",STATUS="UNKNOWN")
    
      DO K=1,100
    
      READ(12,45)DIM1,DIM2,FORME
    
      WRITE(*,45)DIM1,DIM2,FORME
    
    45 FORMAT(I3,I3,A15)
    
      
    
     
    
     !ALLOCATION DYNAMIQUE DE LA MEMOIRE 
    
     ALLOCATE (A(DIM1,DIM2),STAT=IERR)
    
     ALLOCATE (U(DIM2))
    
     ALLOCATE (INDICES(DIM1,2),STAT=IERR)
    
     ALLOCATE(VALUES(DIM1))
    
     IF(IERR.NE.0) STOP 'ERREUR!'
    
     
    
     ! PRENONS A LA MATRICE UNITE POUR A ET VALUES
    
     DO I=1,DIM1
    
       DO J=1,DIM2
    
          A(I,J)=0
    
          U(J)=j;
    
       END DO
    
       INDICES(I,1)=I
    
       INDICES(I,2)=I
    
       VALUES(I)=1
    
       A(I,I)=1;
    
     END DO
    
    
    
     
    
    !!!AFFICHONS LA MATRICE I        
    
    ! DO I=1,DIM1
    
    !   WRITE(*,*) (INDICES(I,J),J=1,2)
    
    ! END DO
    
       
    
     !APPEL DES SUBROUTINES  
    
     CALL GEMV(A,U,DIM1,DIM2,FORME)
    
     CALL SPMV(INDICES,VALUES,U,DIM1)
    
    
    
    
    
    ! ON DESALLOUE TOUT CE QU'ON A ALLOUE
    
    DEALLOCATE(A)
    
    DEALLOCATE(U)
    
    DEALLOCATE(INDICES)
    
    DEALLOCATE(VALUES)
    
    
    
    END DO
    
     !----------------------ESPACE SUBROUTINES
    
     CONTAINS
    
      
    
      !SUBROUTINES MATRICE DENSE
    
      SUBROUTINE GEMV(A,U,DIM1,DIM2,FORME)
    
        !DECLARATIONS PARAMETRES
    
        REAL :: T1,T2,TEMPS_MOY=0.0
    
        INTEGER, INTENT (IN) :: DIM1,DIM2
    
        CHARACTER*15, INTENT (IN) :: FORME
    
        INTEGER :: I,K,COMPTEUR=0,F_COMPTEUR=100
    
        INTEGER,DIMENSION(:), INTENT (IN) :: U
    
        INTEGER, DIMENSION (:,:), INTENT (IN) :: A
    
        INTEGER,DIMENSION(:),ALLOCATABLE :: V
    
        INTEGER :: IERR
    
        ALLOCATE (V(DIM1))
    
        IF(IERR.NE.0) STOP 'ERREUR!'
    
    
    
        !CALCUL PRODUIT
    
        DO COMPTEUR=1,F_COMPTEUR
    
         !TOP CHRONO
    
        CALL CPU_TIME(T1)
    
        
    
        DO I=1,DIM1
    
          V(I)=0
    
        END DO
    
    
    
        DO I=1,DIM1
    
         DO K=1,DIM2
    
           V(I)=V(I)+A(I,K)*U(K)
    
         END DO
    
        END DO
    
        !STOP CHRONO
    
       CALL CPU_TIME(T2)
    
       TEMPS_MOY=T2 -T1+TEMPS_MOY
    
       END DO
    
       TEMPS_MOY=TEMPS_MOY/F_COMPTEUR
    
    !   WRITE (6,*) 'TEMPS TOTAL POUR GEMV= ',TEMPS_MOY
    
       
    
       ! ECRITURE DES RESULTATS DANS UN FICHIER (ECRITURE SEULE)
    
       OPEN(13,FILE='Dense_F.csv',FORM='FORMATTED',ACTION="WRITE",POSITION="APPEND")
    
       WRITE(13,'(I3,A3,I3,A3,A15,A3,F8.5)') DIM1,';',DIM2,';',FORME,';',TEMPS_MOY
    
       
    
       !FERMETURE DU FICHIER
    
       CLOSE(13)
    
       
    
      END SUBROUTINE GEMV
    
      
    
      
    
      !SUBROUTINES MATRICE CREUSE CLASSIQUE
    
      SUBROUTINE SPMV(INDICES,VALUES,U,DIM1)
    
        !DECLARATIONS PARAMETRES
    
        REAL :: T1,T2,TEMPS_MOY=0.0
    
        INTEGER :: I,K,DIM1,COMPTEUR=0,F_COMPTEUR=100
    
        INTEGER,DIMENSION(:), INTENT (IN) :: VALUES
    
        INTEGER,DIMENSION(:), INTENT (IN) :: U
    
        INTEGER, DIMENSION (:,:), INTENT (IN) :: INDICES
    
        INTEGER,DIMENSION(:),ALLOCATABLE :: V
    
        INTEGER :: IERR
    
        ALLOCATE (V(DIM2))
    
        IF(IERR.NE.0) STOP 'ERREUR!'
    
    
    
        !CALCUL PRODUIT
    
        DO COMPTEUR=1,F_COMPTEUR
    
        !TOP CHRONO
    
        CALL CPU_TIME(T1)
    
        DO I=1,DIM1
    
          V(I)=0
    
        END DO
    
        DO I=1,DIM1
    
         V(INDICES(I,1))=V(INDICES(I,1))+VALUES(I)*U(INDICES(I,2))
    
    !     WRITE (6,*) V(I)
    
        END DO
    
        
    
       !STOP CHRONO 
    
       CALL CPU_TIME(T2)
    
       TEMPS_MOY=T2 -T1+TEMPS_MOY
    
       END DO
    
       TEMPS_MOY=TEMPS_MOY/F_COMPTEUR
    
    !   WRITE (6,*) 'TEMPS TOTAL POUR SPMV_CLASSIQUE= ',TEMPS_MOY
    
      
    
        !ECRITURE DES RESULTATS DANS UN FICHIER (ECRITURE SEULE)
    
       OPEN(14,FILE='Creuse_F.csv',FORM='FORMATTED',ACTION="WRITE",POSITION="APPEND")
    
       WRITE(14,'(I3,A3,A15,A3,F8.5)') DIM1,';',FORME,';',TEMPS_MOY
    
       !FERMETURE DU FICHIER
    
       CLOSE(14)
    
       
    
      END SUBROUTINE SPMV
    
    
    
      
    
    END PROGRAM PROG_PRINC
    
    
    
    !------------------------------------------------------------------------------
    
    !MESSAGE D'ERREUR RETOURNER DANS LE TERMINAL
    
    !a.out: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
    
    !Abandon
    
    !--------------------------------------------------------------------------------------
    j'ai mis en commentaire tout en bas l'erreur retourner pas le terminal.

    Est-ce que tu aurais uen idée de pourquoi il peut pas aller au dela de 110 ?

    Cordialement.

  16. #15
    invite5420aad7

    Re : Aide fortran

    Est-ce un problème lié à Linux ou au compilateur fortran?

    Cordialement.

Discussions similaires

  1. fortran
    Par invite78b1557a dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 11/02/2011, 18h05
  2. Help en Fortran...
    Par invitebe3c6d64 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/11/2010, 18h31
  3. Fortran 77
    Par inviteb4fcae87 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/04/2009, 15h49
  4. Fortran
    Par invitea180b11d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 06/01/2009, 22h42
  5. Fortran .....
    Par invite7f60f800 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 07/12/2007, 21h04