Je dois générer beaucoup de jeux de données différents dans différents fichiers texte. Les ensembles de données partagent certaines variables communes qui doivent être produites, mais en ont également beaucoup d'autres différentes. J'ai chargé ces différents dans une variable de macro séparée par des blancs afin que je puisse macroiser ceci. J'ai donc créé une macro qui boucle sur les jeux de données et les sort dans un fichier texte différent. Pour cela, j'ai utilisé une instruction put à l'intérieur d'une étape de données. La déclaration PUT ressemble à ceci:Sortie vers un fichier texte
PUT (all the common variables shared by all the datasets), (macro variable containing all the dataset-specific variables);
.: par exemple
%MACRO OUTPUT();
%DO N=1 %TO &TABLES_COUNT;
DATA _NULL_;
SET &&TABLE&N;
FILE 'PATH/&&TABLE&N..txt';
PUT a b c d "&vars";
RUN;
%END;
%MEND OUTPUT;
Où & vars est la variable macro contenant toutes les variables nécessaires pour produire un ensemble de données dans la boucle de courant. qui obtient résolu, par exemple, à:
PUT a b c d special1 special2 special5 ... special329;
Maintenant, le problème est, la chaîne entre guillemets ne peut être 262 caractères. Et certains de mes ensembles de données que j'essaie de produire ont tellement de variables à sortir que cette variable macro qui est une chaîne entre guillemets et qui contient toutes ces variables sera beaucoup plus longue que cela. Y a-t-il un autre moyen de faire ça?
Je ne pense pas qu'il y ait une limite au nombre de variables qu'une instruction PUT peut référencer. Mais pourquoi avez-vous des virgules au milieu de votre déclaration PUT? – Tom
Suppression des virgules et modification de la question. Merci d'avoir signalé! – puk789
Les cotations ne sont pas non plus nécessaires ... – Joe