Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
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 17/02/2011, 15h37   #1
Membre du Club
 
Homme Sidi Mahmoud OULD RHIL
Ingénieur informatique
Inscription : avril 2008
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme Sidi Mahmoud OULD RHIL
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur informatique
Secteur : Service public

Informations forums :
Inscription : avril 2008
Messages : 56
Points : 46
Points : 46
Par défaut Définition d'une fonction SAS BASE

Bonjour,

Je veux définir une fonction SAS qui sera utilisable par d'autre personne.
J'ai cherché sur le net et j'ai trouvé ça:

http://support.sas.com/kb/26/151.html

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*  Create a SAS function called "LN" in FCMP and store it in a SAS catalog, where  */
/*  outlib=library.catalog.package specifies where the SAS function will be stored  */
proc fcmp outlib = sasuser.FCMP_Cat.fcns;
  /*  Example of a SAS function definition for the natural log  */
  FUNCTION ln(x);
    y = log(x);
    RETURN(y);
  endsub;
quit;
 
 
/*  ça marche */
options cmplib=(sasuser.FCMP_Cat);
 
proc fcmp;
   out = ln(10);
   put "Testing Function Call";
   put "LN(10) returns:" out;
quit ;
 
/* ça ne marche pas */
DATA test ;
   a=2 ;
   b=ln(a) ;
   put b ;
run ;
Le problème est-que je n'arrive pas à utiliser la fonction dans une étape data, ci-dessous la log, par contre avec la proc FCMP ça marche (il affiche dans la fenêtre output de SAS).

Code :
1
2
3
4
5
6
7
8
9
106    data test ;
107       a=2 ;
108       b=ln(a) ;
            --
            68
ERROR 68-185: The function LN is unknown, or cannot be accessed.

109       put b ;
110    run ;
Quelqun a-il une idée sur comment créer une fonction SAS utilisable dans l'étape DATA ??

Merci
hammamr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 15h47   #2
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
Bonjour.
Ne serais-tu pas, par hasard, en v9.1 de SAS ?
Si c'est le cas, on ne peut utiliser les fonctions personnalisées qu'à l'intérieur des proc FCMP et de quelques procédures (comme MODEL) où on programme librement. Mais pas dans l'étape Data ou dans un WHERE quelconque.
Par contre, en v9.2, ça devrait fonctionner impeccable. (D'ailleurs, chez moi, ton code est OK.)
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 15h58   #3
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
je n'ai jamais utilisé cette procédure, mais il semble que ca fonctionne dans une étape data (en tout cas dans un data null:

http://snipplr.com/view/8779/proc-fc...m-a-data-step/

sinon tu peux toujours passer par le langage macro.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h41   #4
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
+ 1
Citation:
Envoyé par Manoutz Voir le message
sinon tu peux toujours passer par le langage macro.
Je trouve que c'est plus facilement maintenable et portable entre les versions de SAS.
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 09h36   #5
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
Citation:
Envoyé par olivier.decourt Voir le message
Bonjour.
Ne serais-tu pas, par hasard, en v9.1 de SAS ?
Si c'est le cas, on ne peut utiliser les fonctions personnalisées qu'à l'intérieur des proc FCMP et de quelques procédures (comme MODEL) où on programme librement. Mais pas dans l'étape Data ou dans un WHERE quelconque.
Par contre, en v9.2, ça devrait fonctionner impeccable. (D'ailleurs, chez moi, ton code est OK.)
Olivier
Bonjour,

Je suis en V9.1 et j'ai le même message d'erreur.

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/02/2011, 09h56   #6
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Bonjour,
j'ai eu le même problème. En version 9.1 je ne pouvais pas utiliser, dans une étape data, une fonction compilée avec la proc fcmp. Quand je suis passé en version 9.2 ça a fonctionné.

En 9.1 on ne peux utiliser de fonctions stockées que dans certaines procs.

__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h53   #7
Membre du Club
 
Homme Sidi Mahmoud OULD RHIL
Ingénieur informatique
Inscription : avril 2008
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme Sidi Mahmoud OULD RHIL
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur informatique
Secteur : Service public

Informations forums :
Inscription : avril 2008
Messages : 56
Points : 46
Points : 46
Merci pour vos réponses.
hammamr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web