Section courante

A propos

Section administrative du site

Fichiers et périphériques

En Pascal standard, les procédures Rewrite et Reset sont censées lier un identificateur de fichier à un fichier physique, l'ouvrir et le rendre actif. (Cet identificateur de fichier est parfois appelé variable de fichier ou pointeur de fichier, mais ces deux noms sont impropres, car ils ne peuvent être ni modifiés ni pointés.)

La procédure Rewrite est utilisée lorsque le fichier est destiné à la sortie et la réinitialisation est utilisée lorsque le fichier est destiné à l'entrée. En Pascal standard, tous les fichiers non temporaires doivent être spécifiés dans la liste des identificateurs de fichiers dans l'entête du programme. Sur les grands systèmes de lots de machines, le système d'exploitation permet à l'opérateur informatique de lier ces identificateurs de fichiers avec des périphériques ou des fichiers physiques. Le système d'exploitation TOS n'a aucun moyen normalisé d'effectuer une telle liaison de fichiers. Ainsi, comme indiqué dans la section d'entête du programme, l'OSS Personal Pascal ignore tout identificateur de fichier donné dans l'entête du fichier. Ceci est assez cohérent avec les autres Pascals de micro-ordinateur. Au lieu de cela, OSS Personal Pascal autorise un deuxième paramètre pour les procédures REWRITE et RESET, et ce deuxième paramètre est destiné à être le nom du fichier physique. Ne confondez pas l'identificateur de fichier avec le nom de fichier physique. Une déclaration comme celle-ci est parfaitement légale, bien que plus qu'un peu déroutante :

  1. Reset(InFile,'OUTPUT');

Le fichier nommé OUTPUT est présumé être un fichier disque sur l'unité de disque actif actuel, dans le répertoire actif actuel et pourrait donc être plus correctement nommé A:\WORKDIR\OUTPUT ou autre. Vous devez toujours spécifier un nom de fichier la première fois que vous utilisez Reset ou ReWrite avec un identificateur de fichier particulier dans un programme ou un sous-programme ! Cependant, une fois qu'une variable de fichier a été liée à un fichier physique, le deuxième paramètre n'est pas nécessaire pour réinitialiser ou réécrire à nouveau l'identificateur du fichier, à moins que vous ne souhaitiez le lier à un autre fichier physique. Une chose logique à faire est de réécrire un fichier temporaire, de lui donner un nom, puis de réinitialiser ce même identificateur afin de traiter les informations.

Dans la plupart des cas, le fichier physique sera un nom de fichier GEMDOS valide, incluant éventuellement le nom de l'unité de disque ou spécifiant peut-être un nom de chemin complet, mais les périphériques suivants sont également pris en charge en tant que fichiers physiques :

Périphériques Description
'CON:' Ce périphérique permet d'indiquer la console Atari ST (clavier et moniteur). Ce périphérique est valide pour l'entrée et la sortie.
'AXI:' Ce périphérique permet d'indiquer l'entrée du port auxiliaire (RS232), valide pour l'entrée uniquement.
'AXO:' Ce périphérique permet d'indiquer la sortie du port auxiliaire (RS232), valide pour la sortie uniquement.
'LST:' Ce périphérique permet d'indiquer un périphérique de liste, soit l'imprimante. Ce périphérique est valide pour la sortie uniquement.
'PRN:' Ce périphérique est identique à 'LST:'.
'NUL:' Ce périphérique permet d'indiquer un périphérique nul rejetant simplement toutes les sorties ; valable pour la sortie uniquement.

Comme exemple spécifique, considérons cette méthode d'envoi de données à une imprimante :

  1. Program PrintDemo;
  2. Var
  3.  Out:TEXT;
  4.  
  5. BEGIN
  6.  ReWrite(Out,'LST:');
  7.  WriteLn('C''est ligne doit aller vers l''écran');
  8.  WriteLn(Out,'Celles-ci vont à l''imprimante');
  9. END.

Notez que le nom du périphérique doit inclure les deux points terminés. Si nous avions codé 'LST' à la place, nous aurions envoyé la ligne dans un fichier disque nommé LST dans le répertoire par défaut actuel. Le nom de fichier peut être donné sous la forme d'une chaîne de caractères constante, d'une variable de chaîne de caractères ou d'un tableau de caractères condensés.

Le Turbo Pascal utilise deux appels de procédure pour accomplir ce que fait OSS Personal Pascal avec ses versions modifiées de ReWrite et Reset. L'équivalent d'OSS Personal Pascal de :

  1. Reset(Test,'A:TEMPDATA');

est en Turbo Pascal :

  1. Assign(Test,'A:TEMPDATA');
  2. Reset(Test);

Redirection de sortie d'écran

Chaque fois que vous utilisez un appel Write ou WriteLn, les données que vous souhaitez écrire sont automatiquement envoyées à l'écran du Atari ST via l'émulateur de terminal VT52. Ceci est accompli parce que l'identifiant de fichier prédéclaré OUTPUT est automatiquement ouvert à la console, CON:, exactement comme si vous aviez codé cette instruction au début de votre programme :

  1. Rewrite(Output,'CON:');

La raison pour laquelle cela fonctionne est que le Pascal standard spécifie que toutes les sorties via Write ou WriteLn ne spécifiant pas d'identificateur de fichier doivent aller à l'identificateur OUTPUT prédéfini. Il y a au moins deux cas où vous pouvez vouloir changer l'emplacement de ce OUTPUT par défaut :

Ainsi, si vous souhaitez envoyer toutes les sorties de vos instructions Write et WriteLn à l'imprimante, il vous suffit d'insérer la ligne suivante quelque part avant la première utilisation de ces instructions par votre programme :

  1. ReWrite(Output,'LST:');

À partir de ce point, toutes les sorties qui devraient normalement s'afficher sur l'écran de l'Atari ST iront à l'imprimante. Si vous souhaitez revenir à l'affichage du chèque après l'envoi de la sortie à l'imprimante, utilisez l'instruction suivante avant les instructions Write ou WriteLn que vous souhaitez envoyer à l'écran :

  1. ReWrite(Output,'CON:');

Il n'y a aucune raison que la sortie par défaut de Write et WriteLn doive aller à l'écran ou à l'imprimante. Vous pouvez utiliser n'importe quel fichier ou nom du périphérique légal, tel que défini ci-dessus, pour la redirection.



Dernière mise à jour : Dimanche, le 19 septembre 2021