Section courante

A propos

Section administrative du site

PRINT

Affichage du texte
DISK BASIC

Syntaxe

PRINT#nmexp,[USING format$;] exp[p exp...]

Paramètres

Nom Description
nmexp Ce paramètre permet d'indiquer un tampon de fichier de sortie séquentiel, nmexp=1,2,...,15
format$ Ce paramètre permet d'indiquer une séquence de spécificateurs de champs utilisés avec l'option USING.
p Ce paramètre permet d'indiquer un délimiteur placé entre toutes les deux expressions à afficher sur le disque ; un point-virgule ou une virgule peut être utilisé (le point-virgule est préférable).
exp Ce paramètre permet d'indiquer l'expression à évaluer et à écrire sur le disque.

Description

Cette instruction permet d'écrire sur disque, mode séquentiel

L'instruction écrit les données séquentiellement dans le fichier spécifié. Lorsque vous ouvrez un fichier pour la première fois pour une sortie séquentielle, un pointeur est placé au début du fichier, donc votre premier PRINT# place les données au début du fichier. A la fin de chaque opération PRINT#, le pointeur avance, de sorte que les valeurs sont écrites en séquence.

Une instruction PRINT# crée une image disque similaire à ce qu'un PRINT pour afficher crée à l'écran. Souvenez-vous de cela et vous pourrez configurer correctement votre liste PRINT# pour un accès par une ou plusieurs instructions INPUT.

PRINT# ne compresse pas les données avant de les écrire sur le disque ; il écrit une image codée en ASCII des données.

Exemples

Par exemple, si A=123,45 :

PRINT#1,A

écrira une séquence de caractères de neuf octets sur le disque :

 123.45  EN

La ponctuation dans la liste PRINT est très importante. Les virgules et les points-virgules sans guillemets ont le même effet que dans PRINT normal pour afficher les instructions.

Par exemple, si A=2300 et B=1,303, alors :

PRINT#1,A,B

place les données sur le disque comme :

 2300           1.303  EN

La virgule entre A et B dans la liste PRINT# provoque 10 espaces supplémentaires dans le fichier disque. En règle générale, vous ne voudriez pas utiliser l'espace disque de cette façon, vous devez donc utiliser des points-virgules au lieu de virgules.

PRINT#1,A;B

écrivez les données comme suit :

2300 1.303 EN

PRINT# avec des données numériques est assez simple - n'oubliez pas de séparer les éléments par des points-virgules.

PRINT# avec des données de chaîne de caractères nécessite plus de soin, principalement parce que vous devez insérer des délimiteurs pour que les données puissent être lues correctement. En particulier, vous devez séparer les éléments de chaîne de caractères avec des délimiteurs explicites si vous souhaitez les INPUT# en tant que chaînes de caractères distinctes.

Par exemple, supposons :

A$="JEAN TREMBLAY" et B$="100-01-001"

Alors :

PRINT#1, A$;B$

produirait cette image sur le disque :

JEAN TREMBLAY100-01-001 EN

ne pouvant pas être INPUT dans deux variables.

L'instruction suivante :

PRINT#1,A$;",";B$

produirait :

JEAN TREMBLAY,100-01-001 EN

pouvant être INPUT# en deux variables.

Cette méthode est adéquate si les données de chaîne ne contiennent pas de délimiteurs - virgules ou EN - caractères. Mais si les données contiennent des délimiteurs ou des espaces de début que vous ne voulez pas ignorer, vous devez fournir des guillemets explicites à écrire avec les données. Par exemple, supposons A$="TREMBLAY, JEAN P." B$="100-01-001".

Si vous utilisez :

PRINT#1,A$;",";B$

produirait :

TREMBLAY, JEAN P.,100-01-001 EN

Lorsque vous essayez de saisir ceci avec une déclaration telle que :

INPUT#2,A$,B$

A$ obtiendra la valeur "TREMBLAY", et B$ obtiendra "JEAN P." - à cause de la virgule après TREMBLAY dans l'image disque.

Pour écrire ces données afin qu'elles puissent être saisies correctement, vous devez utiliser la fonction CHR$ pour insérer des guillemets doubles explicites dans l'image disque. Étant donné que 34 est le code ASCII décimal pour les guillemets doubles, utilisez CHR$ comme suit :

PRINT#1,CHR$(34);A$;CHR$(34);B$

cela produit l'image disque :

"TREMBLAY, JEAN P.,"100-01-001 EN

pouvant être lu avec un simple :

INPUT#2,A$,B$

Remarque : Vous pouvez également utiliser la fonction CHR$ pour insérer d'autres délimiteurs et codes de contrôle dans le fichier, par exemple :

Caractère Description
CHR$(10) LF (Saut de ligne)
CHR$(13) Retour de chariot (caractère EN)
CHR$(11) ou CHR$(12) Haut de page de l'imprimante ligne

Option USING

Cette option facilite l'écriture de fichiers dans un format soigneusement contrôlé. Vous pouvez créer un fichier de rapport de cette manière, pouvant alors être LIST ou PRINT (commandes TRSDOS).

Ou vous pouvez utiliser cette option pour contrôler le nombre de caractères d'une valeur étant écrits sur le disque.

Par exemple, supposons :

A$="LUDWIG"
B$="VAN"
C$="BEETHOVEN"

Puis l'instruction suivante :

PRINT#1,USING"!. !.% %";A$;B$;C$

écrirait les données sous forme de surnom :

L.V.BEET EN

(dans ce cas, nous ne voulions pas ajouter de délimiteurs explicites.)

Note technique : La discussion ci-dessus ignore le rôle du tampon de sortie dans le processus d'écriture séquentielle. En fait, les données sont d'abord placées dans la mémoire tampon, puis, au fur et à mesure que les enregistrements de 256 octets sont remplis, les données sont écrites sur le fichier disque. C'est pourquoi il n'y a pas toujours d'accès disque lors de l'exécution de chaque instruction PRINT#.



Dernière mise à jour : Vendredi, le 3 Mars 2023