RDforum.free.fr/Cast3M   Index du Forum
Site Web Cast3M
RDforum.free.fr/Cast3M
Forum d'entraide des utilisateurs de Cast3M
Répondre au sujet
Procédure @CSV pour enregistrement dans fichier externe
gecorchard


Inscrit le: 19 Nov 2010
Messages: 5
Répondre en citant
Bonjour,

en réponse à une question du forum concernant l'enregistrement de données dans un fichier externe, je propose la procédure @CSV suivante.
L'inclusion d'un fichier externe avec l'appel "UTIL PROC" ne marche pas. Une astuce est d'utiliser "OPTI DONN NOMFICH;" qui ferme le programme en
cours et lancer Castem sur le fichier NOMFICH, sans, entre-temps effacer le contenu de la mémoire (cf. http://rdforum.free.fr/cast3m/viewtopic.php?t=178).

L'aide pour l'utilisation se trouve au début de la définition.

N'hésitez pas à m'envoyer vos commentaires et suggestions. Je cherche toujours en particulier le moyen d'utiliser un fichier externe pour stocker mes procédures de façon élégante.

--------------------------------------------------------------------------------------
* DEFINITION PROCEDURE @CSV
*$$$$ @CSV
* @CSV PROCEDUR 2010-10-29
*-----------------------------------------------------------
****** PROCEDURE @CSV ******
* Gaël Ecorchard (IRCCyN)
*-----------------------------------------------------------
* SAUVEGARDE UNE TABLE (SOUS-STRUCTURE PROGRESSION) DANS UN
* FICHIER CSV.
* EXEMPLE: @CSV TAB1 'FICHIER.CSV'; OU TAB1 PEUT ETRE DE LA
* FORME TAB1.X, TAB1.Y AVEC X,Y DES PROGRESSIONS DE
* LONGUEUR IDENTIQUE.
*-----------------------------------------------------------
DEBP @CSV TAB1*TABLE FICHIER*MOT;
* Format des nombres:
FOR = '(F10.3)';
* Separateur:
SEP = ',';

TABI = INDE TAB1;
NCOL = DIME TAB1;
NLIG = DIME TAB1 . (TABI . 1);
II = VALE IMPR;
OPTI IMPR 10 IMPR FICHIER;
J = 1;
* Pour pouvoir depasser 72 caracteres, on cree plusieurs
* chaines et on rentre NNPC nombres par chaine.
* Nombre de nombres par chaine (entier):
NNPC = 4;
INDJ = TABI . J;
TXT1 = CHAI INDJ;
TXT2 = TEXT ' ';
TXT3 = TEXT ' ';
TXT4 = TEXT ' ';
SI (EXIS TABI (J + 1));
REPE BOUCJ (NCOL - 1);
J = J + 1;
INDJ = TABI . J;
SI ((&BOUCJ / NNPC) EGA 0);
TXT1 = CHAI TXT1 SEP INDJ;
FINS;
SI ((&BOUCJ / NNPC) EGA 1);
TXT2 = CHAI TXT2 SEP INDJ;
FINS;
SI ((&BOUCJ / NNPC) EGA 2);
TXT3 = CHAI TXT3 SEP INDJ;
FINS;
SI ((&BOUCJ / NNPC) >EG 3);
TXT4 = CHAI TXT4 SEP INDJ;
FINS;
FIN BOUCJ;
FINS;
MESS TXT1 TXT2 TXT3 TXT4;
I = 1;
REPE BOUCI NLIG;
J = 1;
INDJ = TABI . J;
VECJ = TAB1 . INDJ;
VALIJ = EXTR VECJ I;
TXT1 = CHAI FORMAT FOR VALIJ;
TXT2 = TEXT ' ';
TXT3 = TEXT ' ';
TXT4 = TEXT ' ';
SI (EXIS TABI (J + 1));
J = J + 1;
REPE BOUCJ (NCOL - 1);
INDJ = TABI . J;
VECJ = TAB1 . INDJ;
VALIJ = (EXTR VECJ I);
TXTTMP = CHAI FORMAT FOR VALIJ;
SI ((&BOUCJ / NNPC) EGA 0);
TXT1 = CHAI TXT1 SEP TXTTMP;
FINS;
SI ((&BOUCJ / NNPC) EGA 1);
TXT2 = CHAI TXT2 SEP TXTTMP;
FINS;
SI ((&BOUCJ / NNPC) EGA 2);
TXT3 = CHAI TXT3 SEP TXTTMP;
FINS;
SI ((&BOUCJ / NNPC) >EG 3);
TXT4 = CHAI TXT4 SEP TXTTMP;
FINS;
J = J + 1;
FIN BOUCJ;
FINS;
MESS TXT1 TXT2 TXT3 TXT4;
I = I + 1;
FIN BOUCI;
OPTI IMPR II;
FINP;

* L'inclusion d'un fichier externe avec l'appel "UTIL PROC" ne marche pas.
* Une astuce est d'utiliser "OPTI DONN NOMFICH;" qui ferme le programme en
* cours et lance Castem sur le fichier NOMFICH, sans, entre-temps effacer
* le contenu de la m?moire
* (cf. http://rdforum.free.fr/cast3m/viewtopic.php?t=178).
* Nous sommes ici dans un sous programme, nous devons donc revenir au
* programme principal qui est identifi? par MAINPROG. Pour ce faire, il
* faut avoir l'instruction "MAINPROG = PROG;", o? PROG est le nom du
* fichier principal, dans le fichier principal.
* De plus, pour ?viter d'appeler plusieurs fois le sous-programme, on utilise
* Appel de sous-programmes
* SI ((VALE SAUV) EGA Cool ;
* OPTI SAUV 99 ;
* OPTI DONN 'csv.proc' ;
* FINSI ;
OPTI DONN MAINPROG;
--------------------------------------------------------------------------------------

_________________
Gaël Ecorchard
Voir le profil de l'utilisateurEnvoyer un message privé
Procédure @CSV pour enregistrement dans fichier externe
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Vous ne pouvez pas joindre des fichiers
Vous ne pouvez pas télécharger des fichiers
Toutes les heures sont au format GMT + 2 Heures  
Page 1 sur 1  

  
  
 Répondre au sujet