# Executable Fortran



## einqui (17 Novembre 2003)

Salut,

   J'ai ecrit des petits programmes Fortran que je souhaiterais pouvoir maintenant lancer depuis le terminal sans devoir me connecter au serveur de la Fac. Mais lorsque j'ouvre le terminal et que je tape le nom de l'executable obtenu par compilation du code source, j'ai un message qui me dit que cette commande est inconnue 
	

	
	
		
		

		
			




Quelqu'un saurait-il comment faire?

Merci d'avance


----------



## molgow (17 Novembre 2003)

Je suppose que tu as recompilé ton exécutable sur ta machine ? car à moins qu'à ta Fac vous ayez des Macs, ça ne va pas marcher.

A part ça, pour exécuter un programme en se trouvant dans le répertoire du programme, il suffit de taper : _./nom_de_l_executable_ 

Une solution meilleure est de mofidier sa variable PATH pour y ajouter le chemin ".".


----------



## einqui (17 Novembre 2003)

> Je suppose que tu as recompilé ton exécutable sur ta machine ? car à moins qu'à ta Fac vous ayez des Macs, ça ne va pas marcher.



Je comprends pas tres bien... Une fois compile sur le  serveur, je dois le recompiler sur le PB? Parce que j'ai essaye d'installer un compilateur Fortran sur mon Mac avec Fink, mais ca foire lamentablement (Fink et moi, je crois qu'on est pas fait pour s'entendre...  
	

	
	
		
		

		
		
	


	




 )


----------



## molgow (17 Novembre 2003)

Bah, ça dépend.. je comprends pas très bien ce que tu veux faire non plus 
	

	
	
		
		

		
		
	


	




Si tu as compilé ton programme Fortran à la Fac, et que tu te connectes depuis ton Mac en SSH ou Telnet et que là tu essaies de l'exécuter, alors pas de problèmes. Par contre si tu as juste téléchargé l'exécutable depuis la Fac et que tu essaies de l'exécuter en local sur ton Mac, tu auras des problèmes (à moins qu'à la Fac tu utilises aussi un Mac!)


----------



## einqui (17 Novembre 2003)

Alors des details : le programme a effectivement ete compile sur le serveur de la fac (depuis un iMac, mais qui ne servait que d'ecran). Jusqu'a present, je ne l'executais qu'en passant par une connection avec Telnet.
Et quand je le rapatrie chez moi sur le PB, j'ai effectivement des problemes : impossible de l'executer depuis le terminal. 
   Donc, tu as vu juste, mais je ne comprends pas ou est le probleme...


----------



## molgow (17 Novembre 2003)

Un exécutable est un fichier binaire qui est écrit pour un processeur (ou type de processeur), tu ne peux pas exécuter sur ton Mac un exécutable compilé sur une station Sun ou sur un x86.
Quand tu dis qu'il servait uniquement d'écran ? vous utilisiez quoi comme CPU alors ? vous utilisez quoi comme système d'exploitation (Windows, Unix) ?!


----------



## einqui (17 Novembre 2003)

Ah, forcement.... Le serveur de la fac est sous Unix.
Comment faire pour regler ce probleme? Trouver un compilateur Fortran sous Mac, c'est ca?


----------



## iManu (29 Novembre 2003)

C'est quoi ton problème avec Fink ?
J'utilise 2 compilos Fortran sans soucis:
Absoft (payant) et g77 (gratos, via Fink).
Il y en a 2 autres: NAG (payant) et xlf (gratos car en beta pour l'instant).
En ce qui concerne Fink, dis moi comment tu l'as installé, et ce qui se passe.
Tant qu'à y être, dis nous ta config (matérielle et logicielle), ça peut aider.
Fink marche super pour moi... y a pas de raison que ça plante chez toi...


----------



## einqui (14 Janvier 2004)

iManu a dit:
			
		

> C'est quoi ton problème avec Fink ?
> J'utilise 2 compilos Fortran sans soucis:
> Absoft (payant) et g77 (gratos, via Fink).
> Il y en a 2 autres: NAG (payant) et xlf (gratos car en beta pour l'instant).
> ...



Oups, j'avais pas vu ta reponse.
Bon, alors depuis j'ai du nouveau. J'ai installe fink Commander et reussi a telecharger g77 mais la lorsque j'essaie de compiler (procedure qui marche tres bien sur le serveur de la fac), je n'obtiens que des messages d'erreur du style :

Statement at (^) begins with invalid token [info -f g77 M LEX]

ou encore 

Statement at (2) invalid in context established by statement at (1)

Bref, il semble qu'il ne reconnaisse pas les mots-clefs du Fortran comme Do, qui genere des erreurs. 
Il y a des options a mettre lorsqu'on lance le compilateur??
Merci d'avance.

Pour info, le fichier que je veux compiler a une extension .f

P.S. : et j'ai voulu installer ibmxlf, mais le readme indique qu'il faut un G5 or j'ai un PB 12" G4. Il n'y a pas de xlf pour G4??


----------



## iManu (14 Janvier 2004)

einqui a dit:
			
		

> Bon, alors depuis j'ai du nouveau. J'ai installe fink Commander et reussi a telecharger g77 mais la lorsque j'essaie de compiler (procedure qui marche tres bien sur le serveur de la fac), je n'obtiens que des messages d'erreur du style :
> Statement at (^) begins with invalid token [info -f g77 M LEX]
> ou encore
> Statement at (2) invalid in context established by statement at (1)
> ...


Je ne comprends pas très bien...
Tu as seulement téléchargé g77, ou bien tu l'as installé?
T'as quoi comme branche Fink, stable ou instable?
Si t'arrives pas à installer g77, faut voir sur la liste fink-beginners, ils sont sympa...

Suppososns que g77 soit installé (je crois que c'est le cas), dans ce cas t'as un souci à la compilation de TES programmes fortran, c'est ça?
Si c'est le cas, t'as testé avec un programme simple (style hello world) pour voir si ça tournait?
En gros, peux tu donner plus de détails?
Autre chose: quelle est la différence entre ce qui est installé à la fac et sur ton Mac? A la Fac, c'est aussi des Macs ?



			
				einqui a dit:
			
		

> Pour info, le fichier que je veux compiler a une extension .f


C'est pas un souci (je viens de vérifier).



			
				einqui a dit:
			
		

> P.S. : et j'ai voulu installer ibmxlf, mais le readme indique qu'il faut un G5 or j'ai un PB 12" G4. Il n'y a pas de xlf pour G4??


Non, ça c'est pas un souci, ça tourne aussi avec un G4 il paraît (j'ai pas testé). Voir le forum dev-fortran chez Apple...

Si tu veux, fais moi passer ton code (si c'est pas trop gros) que je voie si ça tourne chez moi...


----------



## einqui (9 Février 2004)

Salut, 

   Desole pour l'enôôrme retard, mais j'etais occupe par une conf.
Bref, j'ai essaye plusieurs choses :

   1) installer IBM xlf et resultat meme probleme, mon code ne passe pas!!!
   2) j'ai cree un petit programme debile, et il refusait de la compiler

En fait, j'ai trouve l'astuce : il faut mettre une tabulation avant tout debut de ligne..... 
	

	
	
		
		

		
		
	


	



Je ne comprends pas tres bien pourquoi. Le compilateur de la station de mon labo s'en contrefiche. Resultat, il faut que je reprenne a la main les 700 et quelques lignes de code en esperant que ca marche....

En tout cas, merci pour ton aide.


----------



## iManu (9 Février 2004)

einqui a dit:
			
		

> Je ne comprends pas tres bien pourquoi. Le compilateur de la station de mon labo s'en contrefiche. Resultat, il faut que je reprenne a la main les 700 et quelques lignes de code en esperant que ca marche....


BBedit te le fera très vite et très bien, par un simple remplacer espace par tab...
Ceci dit, il faut fixer la longueur des tabs par défaut.
BBedit lite est gratuit je crois.
Moi j'aime beaucoup, surtout dans le cas de passage ODS/unix/mac (ça gère hyper bien les fin de lignes, et ce genre de chose...).

Bon courage,

Manu


----------



## einqui (10 Février 2004)

En fait, j'utilise Xemacs.
Mais si je remplace tous les espaces par des tabulations, mon programme va devenir completement illisible. Je crois qu'il va falloir le faire a la main.....


----------



## iManu (10 Février 2004)

einqui a dit:
			
		

> En fait, j'utilise Xemacs.
> Mais si je remplace tous les espaces par des tabulations, mon programme va devenir completement illisible. Je crois qu'il va falloir le faire a la main.....


Non, car à priori, tu dois avoir plusieurs espaces en début de ligne, et pas un seul. Si t'en as qu'un, c'est pas étonant que ça marche pas... 
	

	
	
		
		

		
		
	


	



Donc si tu remplaces 5 espaces par une tab, t'as gagné...


----------



## einqui (11 Février 2004)

iManu a dit:
			
		

> Non, car à priori, tu dois avoir plusieurs espaces en début de ligne, et pas un seul. Si t'en as qu'un, c'est pas étonant que ça marche pas...
> 
> 
> 
> ...



Salut,

   En fait, c'est ce que j'ai fait. Il y avait exactement 5 espaces en debut de chaque ligne (tu devrais te lancer dans la divination...) et je les ai remplaces par un tab. Mais ca ne marche toujours pas pour autant parce que maintenant, le compilateur ne reconnait pas le symbole &amp; pour les coupures de ligne 
	

	
	
		
		

		
		
	


	



   A la fac, j'avais resolu ce probleme en remplacant l'extension .f par .f90 puisque j'utilisais f90 pour compiler et tout s'est arrange. Mais la....

   En fait, je n'ai jamais vraiment appris le Fortran, j'ai juste lu des programmes deja ecrits et quelques tutoriaux, ce qui fait ce genre de detail me laisse perplexe. D'ailleurs, je ne comprends pas bien la necessite de commencer chaque ligne par un "tab".....


----------



## iManu (11 Février 2004)

einqui a dit:
			
		

> En fait, c'est ce que j'ai fait. Il y avait exactement 5 espaces en debut de chaque ligne (tu devrais te lancer dans la divination...) et je les ai remplaces par un tab. Mais ca ne marche toujours pas pour autant parce que maintenant, le compilateur ne reconnait pas le symbole &amp; pour les coupures de ligne
> 
> 
> 
> ...



En fait - et ça explique la magie de ma réponse, chaque ligne fortran DOIT commencer par 5 espaces, puis un (le sixième) un symbole éventuel de continuation de ligne, les instructions ne commençant donc qu'après.
Si tu as quelque chose dans les 5 premiers espaces, c'est un numéro de label.

En fait, le tab te permet de faire 5 espaces en un coup.
Tu ne devrais d'ailleurs pas en avoir besoin, mais tout dépend de ton éditeur de texte (certains remplacent un tab par 4, 5, 6 espaces, selon les réglages.
Si tu récupères un code en fortran avec des tabs, et que ton éditeur les convertit en 4 espaces par exemple, t'es mal...

D'une manière générale, le fortran est très portable.
Si t'as plus de 'quelques' erreurs en passant sur une autre plateforme ou un autre compilateur, c'est toujours un problème de formatage (nombre d'espaces, fins de ligne, etc...) et ça se règle facile...

A +,

Manu


----------



## Luc G (11 Février 2004)

Il y a très, très longtemps  
	

	
	
		
		

		
		
	


	




, le Fortran s'écrivait sur des cartes perforées de 80 caractèrs. Les 5 premières colonnes permettaient de définir les étiquettes (pour le célèbre GOTO),  la sixièe si je me souviens bien pour mettre éventuellement un "C" pour les lignes de commentaires, de 7 à 72 on avait le texte, et de 73 à 80 soit rien, soit on numérotait les cartes (quand tu en as mis mille par terre, c'est pratique pour les remettre dans l'ordre  
	

	
	
		
		

		
		
	


	




).

Après l'abandon des cartes perforées, certains fortran ont gardé la syntaxe des colonnes pour garder la compatibilité avec les étiquettes.


----------



## iManu (11 Février 2004)

Luc G a dit:
			
		

> Il y a très, très longtemps
> 
> 
> 
> ...


En fait, le C en sixième position, qui peut être remplacé par un chiffre ou même d'autres signes je crois, indique une continuation (c) de la ligne précédente (pratique si tu as une longue expression...).
Le C dans les 5 premiers espaces indique, lui, un commentaire.


----------



## Luc G (11 Février 2004)

iManu a dit:
			
		

> En fait, le C en sixième position, qui peut être remplacé par un chiffre ou même d'autres signes je crois, indique une continuation (c) de la ligne précédente (pratique si tu as une longue expression...).
> Le C dans les 5 premiers espaces indique, lui, un commentaire.



Tu as raison, j'ai oublié depuis le temps  
	

	
	
		
		

		
		
	


	




 Je me rappelle que certains avaient tendance à écrire des expressions vraiment longues :5, 6, 7 lignes et il me semble que sur certaines machines ça ne passait pas parce que c'était trop long. Merci, iManu, tu me fais rajeunir.


----------



## einqui (17 Février 2004)

Ca y est, ca fonctionne!!!  
	

	
	
		
		

		
		
	


	



en fait, quand je fais un "Tab", le texte se depalace d'une distance equivalent a 7 espaces, mais quand je tape un caractere juste apres le tab, le compilateur le voit dans la seconde colonne  
	

	
	
		
		

		
		
	


	



D'ou le probleme, mais c'est corrige.


----------

