titre_site.jpg (51607 octets)

ALTERNATE / SET ALTERNATE

 

Contrôle l'enregistrement des entrées/sorties dans un fichier texte.

Syntaxe

SET ALTERNATE on | OFF
SET ALTERNATE TO [<fichier> | ? | <masque de fichier>     [ADDITIVE]]

<fichier> | ? | <masque de fichier> ( ? | <masque de fichier> Non reconnus dans dBase III et dBase IV)

Le fichier texte ALTERNATE ou fichier cible, à créer ou à ouvrir. Les options ? et <masque de fichier> affichent une boîte de dialogue dans laquelle vous pouvez spécifier un nouveau fichier ou sélectionner un fichier existant. Si vous spécifiez un fichier sans inclure son chemin d'accès, dBASE le recherche dans le répertoire en cours, puis dans le chemin d'accès défini avec SET PATH. Si vous spécifiez un fichier sans inclure son extension, dBASE lui affecte l'extension .TXT.

ADDITIVE  (non reconnue par dBase III)

Ajoute la sortie dBASE qui s'affiche dans le volet de résultats de la fenêtre Commande au fichier ALTERNATE spécifié. Si le fichier n'existe pas, dBASE renvoie un message d'erreur.

Valeur par défaut

La valeur par défaut de SET ALTERNATE est OFF. Pour changer cette valeur, définissez le paramètre ALTERNATE dans la section [OnOffCommandSettings] de DBASEWIN.INI. Pour définir un nom de fichier par défaut afin de l'utiliser avec SET ALTERNATE, spécifiez un paramètre ALTERNATE dans la section [CommandSettings] de DBASEWIN.INI.

Plus2_5-Icon.jpg (1250 octets) Il s'agit du fichier PLUS.ini et non dbasewin.ini

 

 ico_MsDos.jpg (1668 octets)  dbasedos.gif (376 octets) vdb5.gif (351 octets) Description

SET ALTERNATE TO permet de créer un enregistrement de la sortie dBASE et des commandes. Le contenu de ce fichier peut être modifié avec l'éditeur de texte afin qu'il soit utilisé dans des documents ou stocké sur disque pour une utilisation ultérieure. Vous pouvez enregistrer, modifier et incorporer des séquences de commandes dans de nouveaux programmes. Pour envoyer les résultats de commandes @...SAY dans un fichier texte, utilisez SET DEVICE TO FILE.)

SET ALTERNATE TO <fichier> n'ouvre qu'un fichier ALTERNATE, alors que SET ALTERNATE ON | OFF contrôle le stockage de l'entrée et de la sortie dans ce fichier. Un seul fichier ALTERNATE peut être ouvert à la fois. Lorsque vous émettez SET ALTERNATE TO <fichier> pour ouvrir un nouveau fichier, dBASE ferme le fichier ALTERNATE précédemment ouvert.

Lorsque SET ALTERNATE est à ON, dBASE stocke la sortie vers le volet de résultats de la fenêtre Commande dans le fichier texte ouvert avec SET ALTERNATE TO <fichier>. Un fichier ALTERNATE doit être ouvert avec SET ALTERNATE ON pour qu'il soit effectif. SET ALTERNATE n'affecte pas la sortie de programme ; elle détermine uniquement quand la sortie doit être sauvegardée dans le fichier ALTERNATE. Les saisies clavier de la fenêtre Commande ne sont pas stockées dans le fichier ALTERNATE.

Pour éviter que votre fichier texte commence par une ligne blanche, utilisez deux points d'interrogation (??) avant le premier mot que vous voulez envoyer dans le fichier ALTERNATE.

L'émission de SET ALTERNATE OFF ne ferme pas le fichier ALTERNATE. Avant d'accéder au contenu du fichier ALTERNATE, fermez-le avec CLOSE ALTERNATE ou SET ALTERNATE TO (sans nom de fichier). Cela permet de vérifier que tous les enregistrements stockés par dBASE dans le fichier ALTERNATE sont bien transférés sur disque et bascule automatiquement SET ALTERNATE à OFF.

Si SET SAFETY est à ON, que l'option ADDITIVE n'est pas utilisée et qu'un fichier de même nom que le fichier cible existe déjà, dBASE affiche une boîte de dialogue demandant la confirmation de l'écrasement du fichier. Si SET SAFETY est à OFF et que l'option ADDITIVE n'est pas utilisée, tout fichier existant de même nom que le fichier cible sera écrasé sans message d'avertissement préalable.

 

Code      ico_dbIII.jpg (1345 octets)   dbasedos.gif (376 octets)   vdb5.gif (351 octets)   Plus2_5-Icon.jpg (1250 octets)

Dans cet exemple, les commandes SET ALTERNATE permettent d'écrire du texte sur l'écran et dans un fichier ASCII :

SET ALTERNATE TO Rose   
* Ouvre Rose.txt pour la sortie de texte
? "Ouverture du fichier ALTERNATE" && uniquement sur l'écran
SET ALTERNATE ON       
* ?,?? les commandes vont maintenant dans Rose.txt
? "Une rose "
SET ALTERNATE OFF && Arrête le stockage dans Rose.txt.
?? "jalousement gardée dans votre jardin "
SET ALTERNATE ON        && Ajoute dans Rose.txt.
?? "est une rose "
?? "est une rose "
? "dont vous serez fier"
CLOSE ALTERNATE && Ferme Rose.txt
* Rose.txt contient :
* Une rose est une rose est une rose
* dont vous serez fier

 

bug_jpg.jpg (2635 octets)  Note :

Se débarraser du Ctrl-Z situé en fin d'un fichier créé par Alternate

 
 Héritage de l'époque du CPM, et depuis dBase II, les fichiers créés par Alternate se terminent par Ctrl-Z, soit le charactère Ascii 26.Pour s'en débarrasser, deux fonctions ont été proposées :

function rem26(cFilename)
* Remplacer le Ctrl-Z par un caractère espace
*ouvre le fichier avec les accès lecture et écriture
nH=fopen(cFilename,"RW")
*va 1 char en arriere (-1) depuis la fin du fichier (2)
fseek(nH,-1,2)
*lit led ernier charactère
c=fread(nH,1)
*est-ce le chr(26)
if c==chr(26)
   *revenir en arrière, la lecture a déplacé le pointeur      seek(nH,-1,2)
   *insère un espace à sa place
   fwrite(nH," ")
endif
fclose(nH)
return

La question posée : Plusieurs ensembles de fichiers de texte que j'ai réalisé avec DB2K n'a pas pu être lu par ma banque en raison d'un caractère hors du commun à la fin de chaque fichier texte.
J'ai créé les fichiers texte en utilisant DB2K avec les données dans les colonnes fixes. J'ai utilisé Set Alternate to et ? & ?? pour la sortie des données. Les sorties sont OK pour chaque ligne de données à l'exception de la dernière ligne.

Utilisant le Bloc-notes, la dernière ligne a un carré noir à la fin. La représentation Hex: 1A. Toutes les autres lignes se terminent par 0D 0A qui sont je crois retour chariot & Linefeed ce qui est OK. Pourquoi la dernière ligne ne se termine pas par le même 0D 0A?

* Appel de la Fonction : removelastchar("votrefichiertexte.txt")

* Ceci éliminera le charactère de fin de fichier qui occasionne le trouble.

Function Removelastchar
parameters cfile
nhandle = fopen(cfile,"RW")
fseek(nhandle,0,2
fseek(nhandle,-1,1)
if fgets(nhandle) = chr(26)
   fseek(nhandle,-1,2)
   fwrite(nhandle," ")
   fflush(nhandle)
endif
fclose(nhandle)
return
** eop -- removelastchar

 


retour

Sources :

Aide Visual dbase V5.7
http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm par Ken Mayer
Aide dBase Plus 2.6.0

From: "B. Betcher"
Newsgroups: dbase.version5
Subject: Low Level and CHR(26)
Date: Tue, 10 Sep 2002 12:08:14 -0500
From: "Geoff Wass [dBVIPS]"
Newsgroups: dbase.how-to
Sent: Wednesday, February 07, 2007 7:21 AM
Subject: Re: Alternate file end
From: "ute carter"
Newsgroups: dbase.programming
Subject: Re: Textfile tripped by Uncommon character
Date: Wed, 7 Nov 2001 07:58:52 -0500

Retour à l'accueil

Les informations de cette page sont données à titre indicatif et ne se substituent pas à celles contenues dans l'Aide de votre version de dBase qui reste la meilleure documentation.


Si vous voyez des erreurs, ou souhaitez apporter des compléments, n'hésitez pas à le signaler.
Dernière modification : dimanche 15 août 2010

©  M.Abraham.