Je vais examiner ton source dans le détail, mais, à première vue, il manque une commande importante:
je ne trouve pas de
FILE_CLOSE dans ton source.
En effet, lorsqu'un
FILE_WRITE est exécuté, il n'y a pas forcément un enregistrement correspondant sur le support (le disque dur par exemple), car les écritures s'effectuent en fait dans un buffer mémoire, et au fur et à mesure de l'exécution des
FILE_WRITE, ce buffer se remplit. Dès qu'il atteint une certaine taille, il est alors physiquement enregistré sur le support.
Cependant, lors de l'exécution d'une commande
FILE_CLOSE, ce buffer est systématiquement enregistré sur le support pour que le fichier écrit soit complet.
Ce procédé permet de limiter les accès en écriture sur le support (disque dur) et donc de gagner en vitesse d'exécution.
Ce qui semble se passer, c'est qu'après le dernier
FILE_WRITE, ce buffer est rempli, mais pas assez pour être enregistré. Il reste indéfiniment en mémoire et le fichier utilisé n'est jamais fermé, ce qui explique qu'il ne contienne pas tout.
Il faut toujours fermer un fichier en écriture, quand les écritures sont terminées, par une commande
FILE_CLOSE pour qu'il soit complet.
Essaye d'introduire un
FILE_CLOSE 1 avant le END du programme principal:
- Code:
-
FILE_WRITE 1,z$
print z$
FILE_CLOSE 1
END
Remarque : le END après le RETURN du sous-programme est inutile, mais ne gène pas.