logo

Exportation : Liaison DDE SAS/Excel

Je cherche à exporter 78 variables d’une table SAS vers un fichier Excel à l’aide d’une liaison DDE. Les observations sont des nombres décimaux possédant 11 caractères dont 10 décimales (par exemple 0.6612903226).

Le programme SAS (ci-dessous) lui indique bien d’exporter 78 variables sur un espace de 78 cellules.

<strong>filename sortie DDE "excel|Feuil1!l1c2:l1c79" notab;
DATA _null_;
SET pgm;
FILE sortie;
PUT COL1 '09'x COL2 '09'x COL3 '09'x COL4 '09'x COL5 '09'x COL6 '09'x COL7 '09'x COL8 '09'x COL9 '09'x COL10 '09'x COL11 '09'x COL12 '09'x COL13 '09'x COL14 '09'x COL15 '09'x COL16 '09'x COL17 '09'x COL18 '09'x COL19 '09'x COL20 '09'x COL21 '09'x COL22 '09'x COL23 '09'x COL24 '09'x COL25 '09'x COL26 '09'x COL27 '09'x COL28 '09'x COL29 '09'x COL30 '09'x COL31 '09'x COL32 '09'x COL33 '09'x COL34 '09'x COL35 '09'x COL36 '09'x COL37 '09'x COL38 '09'x COL39 '09'x COL40 '09'x COL41 '09'x COL42 '09'x COL43 '09'x COL44 '09'x COL45 '09'x COL46 '09'x COL47 '09'x COL48 '09'x COL49 '09'x COL50 '09'x COL51 '09'x COL52 '09'x COL53 '09'x COL54 '09'x COL55 '09'x COL56 '09'x COL57 '09'x COL58 '09'x COL59 '09'x COL60 '09'x COL61 '09'x COL62 '09'x COL63 '09'x COL64 '09'x COL65 '09'x COL66 '09'x COL67 '09'x COL68 '09'x COL69 '09'x COL70 '09'x COL71 '09'x COL72 '09'x COL73 '09'x COL74 '09'x COL75 '09'x COL76 '09'x COL77 '09'x COL78 '09'x;
RUN;</strong>

Or, sur ma feuille Excel, seules les 22 premières variables sont inscrites. Si je diminue le format de mes variables au minimum (format 3.2), j’arrive à obtenir les 64 premières variables. Mais j’ai toujours une perte d’informations… Comment puis-je faire ?

 

Le problème vient de la largeur du « tuyau » utilisé par SAS pour envoyer les infos à Excel ; par défaut, il ne fait que 256 octets, ce qui ne permet pas de véhiculer les valeurs de vos 78 variables.
On peut augmenter cette largeur de tuyau avec l’option LRECL (Logical RECord Length) dans l’instruction FILE.

...
 FILE sortie LRECL = 4000 ;
...

Le reste de votre programme, lui, n’a pas à changer.