[FORTRAN] fonction a la c**

Résolu
m0n0-le-14r3 Messages postés 174 Statut Membre -  
m0n0-le-14r3 Messages postés 174 Statut Membre -
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....

--
-- je vis dans un rêve dont je ne me reveille jamais...--

2 réponses

  1. Marden Messages postés 1075 Statut Membre 210
     
    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
  2. m0n0-le-14r3 Messages postés 174 Statut Membre 17
     
    merci
    :)
    0