Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 11/01/2017, à 14:44

DonutMan75

[RESOLU] [FORTRAN] Syntaxe pour tableau ?

Bonjour à tous,
je dois mettre à jour un tableau Fortran avec de nouveaux coefficients.
J'ai lu que la fonction DATA était périmée (oui c'est un vieux code) mais je souhaite modifier le moins possible ^^

Voici le tableau AVANT ma modification (le code compile correctement) :

C          g(n,m) for 2010
      DATA (GY1D(I),I=4951,5095) /0,
     O-29496.5,-2396.6,1339.7, 912.6,-231.1,  72.8,  80.4,  24.3,   5.4,
     +                                 -2.0,   3.0,  -2.1,  -0.2,   2*0,
     1 -1585.9, 3026.0,-2326.3, 809.0, 357.2,  68.6, -75.0,   8.2,  9.4,
     +                                 -6.3,  -1.5,  -0.2,  -0.9,   3*0,
     2          1668.6,1231.7, 166.6, 200.3,  76.0,  -4.7, -14.5,   3.4,
     +                                  0.9,  -2.1,   0.3,   0.3,   4*0,
     3                  634.2,-357.1,-141.2,-141.4,  45.3,  -5.7,  -5.3,
     +                                 -1.1,   1.6,   1.0,   0.4,   5*0,
     4                          89.7,-163.1, -22.9,  14.0, -19.3,   3.1,
     +                                 -0.2,  -0.5,  -0.7,  -0.4,   6*0,
     5                                 -7.7,  13.1,  10.4,  11.6, -12.4,
     +                                  2.5,   0.5,   0.9,   1.1,   7*0,
     6                                       -77.9,   1.6,  10.9,  -0.8,
     +                                 -0.3,  -0.8,  -0.1,  -0.3,   8*0,
     7                                                4.9, -14.1,   8.4,
     +                                  2.2,   0.4,   0.5,   0.8,   9*0,
     8                                                      -3.7,  -8.4,
     +                                  3.1,   1.8,  -0.4,  -0.2,  10*0,
     9                                                            -10.1/
      DATA (GY1D(I),I=5096,5175) /
     +                                 -1.0,   0.2,  -0.4,   0.4,  11*0,
     O                                 -2.8,   0.8,   0.2,   0.0,  12*0,
     1                                         3.8,  -0.8,   0.4,  13*0,
     2                                                0.0,  -0.3,  14*0,
     3                                                      -0.3,  16*0/

Et voici le même tableau APRES ma modification :

C          g(n,m) for 2010 (IGRF-12)
      DATA (GY1D(I),I=4951,5095) /0,
     0 -29496.57,-2396.06,1339.85,912.66,-230.87,72.78,80.44,24.41,5.50,
     +                                       -1.94,3.05,-2.12,-0.09,2*0,
     1   -1586.42,3026.34,-2326.54,808.97,357.29,68.69,-75.00,8.21,9.45,
     +                                      -6.24,-1.48,-0.21,-0.89,3*0,
     2            1668.17,1232.10,166.58,200.26,75.92,-4.55,-14.50,3.45,
     +                                         0.89,-2.03,0.30,0.31,4*0,
     3                 633.73,-356.83,-141.05,-141.40,45.24,-5.59,-5.27,
     +                                         -1.07,1.65,1.04,0.42,5*0,
     4                           89.40,-163.17,-22.83,14.00,-19.34,3.13,
     +                                      -0.16,-0.51,-0.63,-0.45,6*0,
     5                                   -8.03,13.10,10.46,11.61,-12.38,
     +                                          2.45,0.54,0.95,1.08,7*0,
     6                                          -78.09,1.64,10.85,-0.76,
     +                                      -0.33,-0.79,-0.11,-0.31,8*0,
     7                                                 4.92,-14.05,8.43,
     +                                          2.13,0.37,0.52,0.78,9*0,
     8                                                      -3.54,-8.42,
     +                                       3.09,1.79,-0.39,-0.18,10*0,
     9                                                           -10.08/
      DATA (GY1D(I),I=5096,5175) /
     +                                       -1.03,0.12,-0.37,0.38,11*0,
     0                                        -2.80,0.75,0.21,0.02,12*0,
     1                                             3.75,-0.77,0.42,13*0,
     2                                                  0.04,-0.26,14*0,
     3                                                       -0.26,16*0/ 

Cette fois-ci, j'ai les erreurs suivantes :

magfld.f:726.36:

      DATA (GY1D(I),I=4951,5095) /0,                                    
                                    1
Error: Syntax error in DATA statement at (1)
magfld.f:727.8:

     0 -29496.57,-2396.06,1339.85,912.66,-230.87,72.78,80.44,24.41,5.50,
        1
Error: Invalid character in name at (1)
magfld.f:747.72:

     +                                       -1.03,0.12,-0.37,0.38,11*0,
                                                                        1
Error: Syntax error in DATA statement at (1)
magfld.f:748.47:

     0                                        -2.80,0.75,0.21,0.02,12*0,
                                               1
Error: Invalid character in name at (1)

Je suis débutant en Fortran, c'est un vieux code et j'ai pris soin de ne pas dépasser 72 colonnes....
Avez-vous une idée ?

Merci d'avance !

Donut.


EDIT : des fois quand ça marche pas, le mieux est d'aller prendre un café et de reprendre ensuite le code avec des yeux neufs big_smile
le problème vient du fait que c'est des grand O et pas des zeros en index au début de chaque DATA...
Bon c'est je crois une ancienne syntaxe car je n'arrive pas du tout à trouver de doc sur le sujet... Si quelqu'un a une explication rationnelle à me fournir là-dessus je suis preneur ^^

Désolé pour le dérangement en tout cas,

A bientôt sur le forum smile

Donut.

Dernière modification par DonutMan75 (Le 11/01/2017, à 16:00)

Hors ligne

#2 Le 11/01/2017, à 17:43

pingouinux

Re : [RESOLU] [FORTRAN] Syntaxe pour tableau ?

Bonsoir,
Effectivement, on n'a pas droit à 0 pour indiquer une ligne suite.
Voici un extrait de Manuel de FORTRAN 77 - 1.2.3  Structure d'un programme - Mise en page d'un programme

Le sixième caractère indique que la ligne actuelle n'est que la suite de la ligne précédente. C'est très utile pour pouvoir entrer des lignes de calculs ou de programmation comportant plus de 66 caractères. En effet, tout caractère (excepté « 0 ») permet de prolonger la ligne précédente. Par convention, nous utiliserons dans ce manuel le caractère « + ».

Je ne me souvenais plus de cette particularité, et j'en ignore les raisons.
Il existe depuis longtemps un format libre pour les programmes FORTRAN.

En ligne