Separatore decimale in Fortran

Micropost oggi, sul Fortran (sì, ancora, ultimamente è il mio chiodo fisso, e non solo mio).


A leggere quel c***o di manuale a volte si scoprono cose che noi umani… 😀

Come questa che dal 2003 si può usare la virgola per separare la parte intera da quella decimale dei numeri float. Dal 2003! e qui nessuno ne sa niente! Certo che sarebbe una bella comodità ma sarà vero? Beh, proviamo, con un file fatto come si usava una volta, se funziona potremmo sempre aggiornare il codice vecchio, se non troppo incasinato.

Supponiamo che il file da leggere tc sia questo

 1,2 2 1,3 1,4 / 

Notare lo / finale, tipico del Fortran, dobbiamo leggere un array ma non necessariamente dobbiamo riempirlo.

Questo è il nostro file Fortran, decco2.f, stile F77:

      program decco2 !verifica di lettura e scrittura
                     !usando la virgola al posto del
                     !punto decimale, dal 2003 si può

!      real :: a(5) = [8.8, 8.8, 8.8, 8.8, 8.8] !inizializzazione
      real :: a(5) = [(8.8, i = 1, 5)] !inizializzazione

      open(1, file = 'tc', decimal = 'comma')
      read(1, *, end = 4, err = 3) (a(i), i = 1, 5)
      go to 4
3     print*, 'errore in lettura'
      stop 3
4     close(1)
      print '(5f5.2)', a
      print*, a(5)
      open(1, file = 'oc', decimal = 'comma')
      write(1, '(5(1x,f5.2))') (a(i), i = 1, 5)
      close(1)
      open(2, file = 'o')
      write(2, '(5(1x,f5.2))') (a(i), i = 1, 5)
      close(2)
      open(3, file = 'op', decimal = 'point')
      write(3, '(5(1x,f5.2))') (a(i), i = 1, 5)
      close(3)

      end

Ci sono un paio di particolarità, fuori standard 77, oltre ai commenti marcati con !.

L’array a di riga 6 è inizializzato secondo la nuova moda; uso inoltre [ e ] al posto degli equivalenti (/ e /).

Ma la caratteristica principale è un’altra, nelle open, righe 8, 16 e 22, dove compare il decimal symbol. Di default vale POINT, come alla riga 19 o come espressamente dichiarato alla riga 22. Se settato a COMMA, come alle righe 8 e 16, i numeri con la virgola saranno quello che vogliono gli italiani e i francesi e i tedeschi e buona parte del mondo. E faranno contento il mio amico Beppe, forse 😉

OK, torno a leggere il manuale, chissà se c’è altro 😀

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: