Bonjour,
quand on écrit write(11,....) ou write(100,...)
Le chiffre 11 ou 100 correspond à open(unit=11) ou open(unit=100).
Pourquoi choisir 11, 100 et pourquoi pas 5000.
Ce chiffre a -t-il une importance? à quoi correspond-il?
Merci
Bonjour,
quand on écrit write(11,....) ou write(100,...)
Le chiffre 11 ou 100 correspond à open(unit=11) ou open(unit=100).
Pourquoi choisir 11, 100 et pourquoi pas 5000.
Ce chiffre a -t-il une importance? à quoi correspond-il?
Merci
Bonjour,
en Fortran, tu mets ce que tu veux (sauf pour les entrées ou sorties standard). Maintenant, il faut savoir que l'on préfère utiliser 10 ou 100 car cela correspond(ait) sur certaines machines à des limites systèmes.
Je ne suis pas spécialiste, mais il me semble que le système gère une table ou un index de fichiers dans un tableau et ce tableau a une limite, ce qui fait que tu ne peux pas ouvrir plus d'un certain nombre de fichiers à la fois. Voilà ce que j'ai retenu de mon prof de Fortran (dédicace à lui au passage).
En gros, c'est pour des raisons historiques.
Mais bon, si une personne pense que je me trompe complètement, j'aimerais connaitre la vraie raison
Salut !
Comme l'écrit TheOyoStyledMan, il doit y avoir une limite, mais personne ne semble savoir laquelle; comme les programmes ont bien d'autres manières de se planté, je n'ai jamais jugé utile de tenter le diable et j'ai toujours choisi des numéros ne dépassant 20. En revanche, je pense que, pour des raisons purement mnémotechniques, il est préférable de toujours utiliser le même numéro pour le même usage.
Du point de vue historique, sur l'IBM-7040 que j'ai utilisée autrefois, l'instruction Open n'existait pas et les numéros étaient alloués de manière fixe:
0 Bande magnétique
1 Bande magnétique
2 Partition publique
3 Partition publique
4 Partition publique
5 Lecteur de cartes
6 Imprimante
7 Perforateur de cartes
8 ... Partitions non publiques
Jean-Marc Blanc
Il faut lire la doc de son environnement et son compilateur. Les unites 0, 5, et 6 sont en general preconnectee et ne doivent pas etre utilisees. Le nombre maximal depend de la taille de la file descriptor table, mais peut aussi etre limite par le compilateur. J'ai vu des limites a 50, 100, et 1000. Mais en general, on n'a besoin que de quelques logical unit numbers, donc comme tu le dis, autant se contenter de celles entre 10 et 20.
Merci pour vos réponses. Cela m'a bien éclairé
Pour ce qui est de la limite moi j'utilise les compilateurs gfortran ou ifort (intel) et je donne souvant les numéros par paquet de 100 (je change de centaines d'un sous programme à l'autre). J'ai pas eu de problème de limite de ce coté là.
Par contre une fois j'avais 1300 fichier que j'ouvrais avec une instructions du type :
et là il a planté à l'exécution en disant que trop de fichiers étaient ouverts donc tu peux certainement aller jusqu'à 1000 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Do i=1,n open(10 +i , file = ..) read ... Enddo
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager