Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 11h35   #1
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Par défaut Error fonction PRXMATCH et PRXPOSN

Bonjour, ne sachant pas ou poster mon problème je le met dans cette section du forum par défaut.

J'ai parfois le souci suivant quand je lance ma macro:
ERROR: Argument 1 to the function PRXPOSN must be a positive integer returned by PRXPARSE for a valid pattern.

Alors quand je lance pour la première fois ma macro (par rapport au fait de lancer SAS) je n'ai pas ce souci, et parfois quand je la relance (sur la même session SAS déjà lancée) et bien ça arrive...

En espérant que d'un coup ça n'intervienne pas à chaque lancé (ça je le vivrais franchement mal lol), j'aurais voulu savoir si quelqu'un sait d'où ça peut venir?

En vous remerciant d'avance.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h48   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Elle dit qqc de spécial ta log?

Donne nous tes données et ce à quoi tu veux parvenir

Manoutz
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h50   #3
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Concernant les données il s'agit juste d'une table à valeur continue avec une variable réponse dichotomique.

Aprés j'applique une longue macro dessus, mais comme dit ça ne plante pas la première fois que je la lance, c'est la seconde fois si je la relance et encore pas tout le temps.

Le but pour moi serait d'analyser le problème pour ne pas l'empirer en rajoutant du contenu à ma macro en fait.

Je vais relancer pour voir plus en détail ma log et vous fournir plus d'information sur mon problème.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 13h52   #4
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bon c'est désespérant... ça refuse de me le refaire lol... néanmoins j'ai droit à un 'out of memory' de temps en temps juste en la relançant alors que je fais rien de plus que les autres fois où je l'ai lancé...

Ma question serait plus judicieuse posée autrement je pense:

A ceux qui ont l'habitude de faire de grosse macro (+2000 lignes avec appel à d'autres macro et boucle %FOR un peu dans tous les sens), savez-vous ce qui pourrait provoquer l'un de ses deux types de messages d'erreurs? je m'attends pas à une explication précise lol, mais peut-être des erreurs de débutant ou des choses que je n'aurais pas l'habitude de surveiller et qu'il faudrait?

Merci d'avance et désolé pour ma question si vague...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 13h57   #5
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 701
Points : 1 701
Bonjour;
est ce que tu peux poster ton programme et/ou ta log, si tu veux bien sûre qu'on essaie de te donner des réponses précises.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h00   #6
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Ca serait volontier, mais le programme fait presque 2174 lignes, j'ai peur que ça vous avance pas du tout...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h10   #7
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
vu que tu fais des boucles et tu rencontre parfois des problèmes de mémoire, la première que je regarderais c'est s'il n'y a pas possibilité d'optimiser le programme. Par exemple il y a peut être possibilité de sortir de tes boucles des opérations couteuses en mémoire. Mais c'est qu'un exemple. Bref, revoir l'ago...

au fait c'est quoi le %for?
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h19   #8
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Autant pour moi... je voulais dire %DO...

Je me demandais si ça venait pas d'un excés de création de liste, en fait à la fin de mon programme je fais un DATASET pour détruire toutes les tables inutiles et il y en a un paquet, mais les listes construites avec mes proc SQL restent peut-être en mémoire et ça le derrange lors d'un second traitement, maintenant je dois avouer qu'il y en a pas non plus des masses...

Aprés j'ai l'impression que ça vient uniquement quand je relance ma macro sur un même jeux de données, puisque récemment je l'ai lancé sur 8 tables différentes sur la même session et j'ai eu aucun souci...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h27   #9
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
... on dérive de ton problème initial lié au expressions régulières vers des problèmes de mémoire.C'est toujours le même contexte?

D'une manière générale, supprime une table dès que tu n'en as plus besoin.

pour les macros variables (même si je suis un peu perplexe..)
tu peux savoir les macros variables que tu as créé en faisant un
la fonction symdel supprime les macros variables globales.

sinon

http://www.codecraftersinc.com/pdf/R...oVariables.pdf

dernière chose, parfois relancer (proprement) sas voire ton OS fait pas mal de ménage.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h37   #10
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Pour les 2 problèmes que j'ai évoqué (out of memory et PRXPOSN ect ect) ça intervient de temps en temps à tour de rôle sur la même manip.

"dernière chose, parfois relancer (proprement) sas voire ton OS fait pas mal de ménage. "
Et bien je me demande également si ça n'aurait pas un lien avec ma log, malgré que je clique sur 'oui' quand SAS me demande de supprimer les anciens résultats, il se peut que ça vienne de là... mais encore une fois j'ai du mal à identifié voir trouver logique le problème étant donné que ça me le fait pas souvent et quand ça me le fait je n'ai touché à rien...

Bref assez étrange... Merci pour la syntaxe!
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h52   #11
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
Bonjour,

Le fait que ton programme plante de temps à autre implique qu'il y a un problème de programmation ou de données manipulées lors de l'exécution.
Si le problème survient toujours au même endroit dans le code, je te conseille d'afficher le contenu de toutes tes variables (macro) et table juste avant.

Cordialement
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 15h37   #12
Membre du Club
 
Homme Fabien
Inscription : novembre 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Localisation : France

Informations forums :
Inscription : novembre 2008
Messages : 59
Points : 56
Points : 56
Salut à tous,


Utilises tu des macro variables dans la fonction : PRXPOSN.
Si oui, fait un %put de la macrovariable avant l appel de cette fonction pour etre sur quelle n'a pas été modifiée dans la suite de ton programme.

Suistrop
suistrop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 15h50   #13
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Non mais en fait cette fonction je m'en sers même pas lol, c'est lorsque je fais plusieurs régression logistique (proc logistic) en chaîne que mon problème arrive... parfois... et me sors le message que j'ai mis en début de topic.

C'est ça qui me surprend le plus, je peux la lancer 5 fois d'affilé sans souci et d'un coup, sans faire rien de plus qu'avant, il me sort l'erreur lol.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h37   #14
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bon j'ai peut-être une idée pour résoudre tous mes problèmes de fonction sortie de nulle part qui bug et de problème de mémoire mais je cherche depuis ce matin sur internet et je trouve pas vraiment la solution.

En fait ce qui me flingue ma grosse macro c'est qu'en fin de lancé SAS semble vouloir regrouper tous les résultats qu'il a calculé et me les imprimer d'un coup dans la fenêtre rapport (message comme quoi les informations à ajouter au rapport pèse un max d'octet). Or moi je m'en fiche un peu de cette fenêtre étant donné que tous mes résultats je les sors édité avec des proc REPORT au fur et à mesure que ma macro avance.

D'où mes deux questions:
- Peut-on supprimer les impressions dans la fenêtre rapport en fin de macro? (j'ai déjà essayé dm log 'clear' mais ça ne fait rien... ou plutot ça doit effacer le contenu de ce qui s'affiche en fenêtre log)
- Si on supprime ces impressions, est-ce que SAS se décharge de la mémoire dont il a besoin pour les imprimer ou les imprime t'il quand même sans les afficher?

En vous remerciant d'avance, surtout que ce problème devient réellement préoccupant au fur et à mesure que j'augmente le nombre de variables à traiter...
Images attachées
Type de fichier : jpg ERROR.JPG (19,9 Ko, 8 affichages)
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h49   #15
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
Bonjour,

Il faut mettre des noprint dans les procédures qui affichent des résultats que tu ne souhaites pas garder.
dm log 'clear' => c'est pour vider la log SAS.
DM "Output; Clear; => C'est vider le'output SAS
Je ne sais comment va réagir cette fonction SAS/GUIDE

Cordialement
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/03/2011, 15h58   #16
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
"Il faut mettre des noprint dans les procédures qui affichent des résultats que tu ne souhaites pas garder."

C'est bien là le souci de mon programme... j'ai du jongler entre les sorties output que je voulais conserver et celle que je voulais pas sachant que l'ODS EXCLUDE ALL et le NOPRINT ont la facheuse tendance à se répercuter dans le reste du programme ou empêche d'imprimer uniquement ce que je souhaite...

Je vais regarder la syntaxe avec 'output' en espérant que ça soit ma solution car ça devient problématique...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h01   #17
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
+1 Salah : les instructions DM ne concernent que le SAS classique, pas Guide.
Si tu sors tous les résultats pertinents avec des procs REPORT et que tout le reste n'a aucun intérêt à être affiché, tu peux mettre en tête de ton programme
Code :
ODS SELECT report (PERSIST) ;
et en toute fin Ca devrait filtrer uniquement les sorties de REPORT.
Et ça a l'intérêt de ne pas faire de NOPRINT, qui se percute effectivement de front avec l'ODS. Ouille.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h16   #18
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Merci pour vos réponses, aprés avoir continuer à regarder mon souci je pense que la seule solution est une combinaison de ce que vous m'avez dit + un controle totale sur chaque sortie pour faire en sorte de ne pas les accumuler à force de parcours ma macro.

Ca promet d'être long et... tellement... hmm... passionant mais bon au moins ma macro quand elle marchera niquel j'aurais l'impression d'avoir mérité mes louanges lol!

Encore merci.

EDIT: un p'tit un edit pour préciser que ça marche niquel quelque soit la taille des données maintenant que j'ai bourré ma macro d'ODS EXCLUDE pour chaque tables à supprimer précisément.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h34.


 
 
 
 
Partenaires

Hébergement Web