Affichage des articles dont le libellé est Programmation. Afficher tous les articles
Affichage des articles dont le libellé est Programmation. Afficher tous les articles

vendredi 3 avril 2009

perl: est-il possible de faire une liste de descripteurs de fichiers ?

Oui, mais ca demande un petit "truc" avant d'etre utilise.

Pour une raison que j'ignore encore, on ne peut pas utiliser directement un descripteur de fichier stocke dans une liste. Il est necessaire de d'abord copier cet element de liste dans une variable temporaire, avant de l'utiliser pour les acces fichier (print entre autres).

Comme un petit dessin vaut mieux qu'un grand discours, voici un exemple de code:

use strict;
my (@liste, $liste, $tmp);

open(FILE, "> toto");
$liste[0] = \*FILE;

$tmp = $liste[0];
print($tmp "tutu\n");

close($tmp);
Voila, j'espere que ca pourra aider certains.

dimanche 24 août 2008

Compilateur Intel Fortran: bit or byte ?

Depuis la version 10.0, et pour respecter les recommendation de la norme 2003 du Fortran, l'unite utilisee dans l'option recl d'une instruction open a change.
En effet, precedemment, l'unite utilisee etait le byte (qui correspoond a 8 bits). Ceci pretait a confusion, et donc la norme Fortran 2003 stipule qu'a present, l'unite utilisee doit etre le bit.

Ex:
open(UNIT=99, FILE='toto', ACCESS='DIRECT', FORM='UNFORMATTED', RECL=4, IOSTAT=ios)
Dans cette instruction, l'option RECL, stipulait que les mots du fichier ouvert mesuraient 4 bytes, soit 32 bits.
En revanche, la nouvelle norme stipule que cette ecriture signifie dorenavant que chaque mot mesure 4 bits.

Vous allez donc vous demander si il faut reecrire tous vos programmes. La reponse est evidemment non ! En effet, cette nouvelle regle a vu la naissance d'une nouvelle option de compilation: --assume byterecl

Donc pour vous permettre de compiler et executer a nouveau vos programmes avec le compilateur fortran, pensez a utiliser cette option de compilation.
$ ifort --assume byterecl toto.f90 -o toto