2017-07-08 6 views
0

Je suis en train de compiler un fichier avec pgf90 ou pgfortran (qui peut gérer toutes sortes de fichiers sources, c'est-à-dire f90 ou f77) écrit avec fortran 77 constructions (c'est-à-dire avec une extension. La question que j'ai est avec la continuation de la ligne. Donc, cette ligne va clairement au-delà de la colonne 72. Voici ce que j'ai essayé. J'ai essayé de casser ceci en deux lignes en utilisant le caractère '&' à la colonne 6 dans la nouvelle ligne et l'ai compilé. Il se compile bien mais quand j'exécute le programme j'obtiens une erreur disant que ce fichier n'est pas trouvé car il interprète la continuation de la ligne comme un espace supplémentaire entre run et fort.10 et il rapporte le fichier non trouvé. J'ai donc gardé le code sur une ligne, puis ajouté -Mextend qui est l'instruction spécifique de pgi pour l'extension de ligne. Maintenant, il semble ajouter des caractères étranges à la fin d'un autre nom de fichier beaucoup plus tard dans un sous-programme. Il ouvre fort.10 correctement mais il ne parvient pas à ouvrir un autre fichier beaucoup plus tard dans le code et ajoute des caractères étranges à la fin de ce fichier (en binaire). Dans Emacs, qui est mon éditeur, je ne vois que la couleur pourpre après la déclaration de fort.10 (indiquant que quelque chose ne va pas).Suite de la ligne avec pgfortran

Est-ce que quelqu'un avec pgi fortran peut aider?

UPDATE

open(10,file='/home/adabas/originalPV/potentialenergy/vorticity/' // & 
&  'data/run/fort.10') 

j'obtenir une erreur de syntaxe pgf90-s-0034 à ou près de & (sur la ligne supérieure)

La version PGF est 17.0.4 64 bits

+0

Comment exactement l'avez-vous divisé en deux lignes? En outre, une erreur différente est probablement à l'origine du problème lorsque '-Mextend' est ajouté. – Ross

Répondre

1

Au sommet de ma tête, il y a quelques choses que j'essaierai d'abord.

Vous pouvez demander au compilateur d'autoriser les fichiers fixed format (.f) à contenir plus de 72 caractères. Dans PGI, ceci est fait avec l'indicateur de compilateur -Mextend. Alternativement, vous devriez être capable de construire le nom de fichier en le divisant en deux lignes. Quelque chose comme:

open(10,file='/home/adaba/original/' // 
& 'potentialenergy/vorticity/data/run/fort.10') 

// est l'opérateur pour combiner des chaînes. Il y a d'autres façons de le faire aussi - vous pouvez définir une chaîne de caractères comme fname en premier, par exemple.

+0

Je reçois une erreur de syntaxe avec votre deuxième solution.pgf90 signale l'erreur après l'esperluette dans la ligne supérieure – gansub

+0

Oups, désolé - l'esperluette dans la ligne supérieure ne devrait pas être là pour la source de forme fixe. Et maintenant? – Ross

+0

cela fonctionne. Je dois encore faire face au problème d'ouverture de fichier de sous-programme. J'ai toujours des caractères binaires dans ça. Mais c'est fait.Merci beaucoup – gansub

1

expansion sur la réponse @Ross ci-dessus: en format libre Fortran standard, il y a une autre façon: vous pouvez utiliser la syntaxe de continuation STRING comme ce qui suit:

open(10,file = "/home/adaba/original/& &potentialenergy/vorticity/data/run/fort.10")

Ici il n'y a qu'une seule chaîne divisée et a continué en deux lignes. L'espace blanc entre les deux esperluettes est complètement ignoré. Mais tout ce qui précède la première et après la deuxième esperluette, même l'espace blanc, compte comme une partie de la chaîne.