[FORTRAN] fonction a la c**

Résolu/Fermé
m0n0-le-14r3 Messages postés 174 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 25 octobre 2005 - 13 mai 2005 à 10:56
m0n0-le-14r3 Messages postés 174 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 25 octobre 2005 - 13 mai 2005 à 11:40
est ce quelqu'un peut m'expliqquer ce que fait c'te fonction :

<------------------------------------------------------------>
subroutine ovrwrt (line, iwhich)
character*(*) line
if (iwhich .eq. 1) then
write (6,1) line
1 format (/a)
else if (iwhich .eq. 2) then
write (6,2) line, char(13)
2 format (a, a1, $)
else if (iwhich .eq. 3) then
write (6,3) line
3 format (a)
else
write (6,4) line, char(13)
4 format (/a, a1, $)
end if
call flush (6)
return
end
>-------- fin code ------------>
merci....




2 réponses

Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 210
13 mai 2005 à 11:38
Petites remarques préalables :
1 - le qualificatif affublé à la fonction ... peut se retourner contre son auteur,
2 - le langage Fortran a été fortement influencé par IBM, ce qui semble justifier l'emploi de cette fonction (à rapprocher de la discussion sur le "\n"),
3 - quand on veut faire voir du code, pour le rendre plus lisible, il convient d'utiliser la directive "code" (juste au dessus du cadre de rédaction du message), comme ci-après :
subroutine ovrwrt (line, iwhich) 
  character *(*) line 
  if (iwhich .eq. 1) then 
     write (6,1) line 
1  format (/a) 
  else if (iwhich .eq. 2) then 
     write (6,2) line, char(13) 
2  format (a, a1, $) 
   else if (iwhich .eq. 3) then 
      write (6,3) line 
3   format (a) 
   else 
      write (6,4) line, char(13) 
4   format (/a, a1, $) 
   end if 
  call flush (6) 
  return 
end 

4 - explications sur la fonction :
Le nom OVRWRT est apparemment l'abréviation de "overwrite", donc prévue pour reformater un fichier, avec le format correspondant à l'indicateur "iwhich".
L'unité 6 est la sortie standard (l'imprimante, l'écran, ...)
character * (*) --> la taille est celle de l'argument
char(13) ---------> CR (retour chariot)
"/" ---------------> saut d'enregistrement avant écriture
"$" ---------------> pas de saut après écriture
"a1" -------------> format d'impression d'1 caractère (avant l'introduction du type "character", les chaînes étaient manipulées au moyen d'entiers (ou de réels), généralement un tableau (ex : une image-carte de 80 caractères --> DIMENSION LIGNE(20))
1
m0n0-le-14r3 Messages postés 174 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 25 octobre 2005 17
13 mai 2005 à 11:40
merci
:)
0