[FORTRAN] fonction a la c** [Résolu/Fermé]

Signaler
Messages postés
175
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
26 octobre 2005
-
Messages postés
175
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
26 octobre 2005
-
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

Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
206
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 81878 internautes nous ont dit merci ce mois-ci

Messages postés
175
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
26 octobre 2005
14
merci
:)