IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Problème de synthaxe dans code SAS


Sujet :

SAS Base

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 158
    Points : 71
    Points
    71
    Par défaut Problème de synthaxe dans code SAS
    Bonjour, j'ai un petit soucis avec la synthaxe lorsqu'il faut combiner plusieurs si. Voici mon code et il me retourne une erreur du type :PAS DE CLAUSE IF-THEN ASSORTIE Cette erreur se trouve au niveau de la ligne en gras.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    data fichier_global_ter;
    set fichier_global_bis;
    IF evolution_aff_pap*prec_evol_aff_pap<0 then do ; 
    	diff_aff=evolution_aff_pap-prec_evol_aff_pap;
    	if diff_aff>diff then note_aff=0;else note_aff=1;
    	else IF evolution_aff_pap*prec_evol_aff_pap>0 then do;
    	if evolution_aff_pap>0 then do;			p_aff=((somme_aff_region*evolution_aff_region)+(somme_aff_pap*evolution_aff_pap))/(somme_aff_region+somme_aff_pap);
    			z_aff=abs(evolution_aff_region-evolution_aff_pap);
    			r_aff=sqrt(p_aff*(1-p_aff)*((1/somme_aff_region)+(1/somme_aff_pap)));
    			res_aff=z_aff/r_aff;
    			if res_aff<1.644 then note_aff=1;
    			else note_aff=0;
    			if note_aff=0 then if evolution_aff_pap>evolution_aff_region then note_aff=2;else note_aff=0;
    	end;
    	else do evolution_aff_pap=evolution_aff_pap*-1 ;
    		 	prec_evol_aff_pap=prec_evol_aff_pap*-1;
    			p_aff=((somme_aff_region*evolution_aff_region)+(somme_aff_pap*evolution_aff_pap))/(somme_aff_region+somme_aff_pap);
    			z_aff=abs(evolution_aff_region-evolution_aff_pap);
    			r_aff=sqrt(p_aff*(1-p_aff)*((1/somme_aff_region)+(1/somme_aff_pap)));
    			res_aff=z_aff/r_aff;
    			if res_aff<1.644 then note_aff=1;
    			else note_aff=0;
    			if note_aff=0 then if evolution_aff_pap>evolution_aff_region then note_aff=2;else note_aff=0;
    	end;
    end;
    end;
    run;
    J'éspère que quelqu'un peux m'aider car j'ai vraiment besoin de cette requête.
    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Mais quel usine à gaz ce code !!!!!!!
    Pourquoi faire simple quand on peut faire compliqué

    Par pitié, respecte les espacements !!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    data fichier_global_ter;
    	set fichier_global_bis;
    	IF evolution_aff_pap*prec_evol_aff_pap<0 then do ; 
    		diff_aff=evolution_aff_pap-prec_evol_aff_pap;
    		if diff_aff>diff then note_aff=0;else note_aff=1;
    		else IF evolution_aff_pap*prec_evol_aff_pap>0 then do;
    			if evolution_aff_pap>0 then do;			
    				p_aff=((somme_aff_region*evolution_aff_region)+(somme_aff_pap*evolution_aff_pap))/(somme_aff_region+somme_aff_pap);
    				z_aff=abs(evolution_aff_region-evolution_aff_pap);
    				r_aff=sqrt(p_aff*(1-p_aff)*((1/somme_aff_region)+(1/somme_aff_pap)));
    				res_aff=z_aff/r_aff;
    				if res_aff<1.644 then note_aff=1;
    				else note_aff=0;
    				if note_aff=0 then do;
    					if evolution_aff_pap>evolution_aff_region then note_aff=2;
    					else note_aff=0;
    				end;
    			end;
    		end;
    		else do evolution_aff_pap=evolution_aff_pap*-1 ;
    		 	prec_evol_aff_pap=prec_evol_aff_pap*-1;
    			p_aff=((somme_aff_region*evolution_aff_region)+(somme_aff_pap*evolution_aff_pap))/(somme_aff_region+somme_aff_pap);
    			z_aff=abs(evolution_aff_region-evolution_aff_pap);
    			r_aff=sqrt(p_aff*(1-p_aff)*((1/somme_aff_region)+(1/somme_aff_pap)));
    			res_aff=z_aff/r_aff;
    			if res_aff<1.644 then note_aff=1;
    			else note_aff=0;
    			if note_aff=0 then do;
    				if evolution_aff_pap>evolution_aff_region then note_aff=2;else note_aff=0;
    			end;
    		end;
    	end;
    run;
    Petite astuce : tu dois avoir autant de DO que de END
    Sinon on écrit pas IF condition then IF condition mais
    If condition then do;
    if condition ...
    end;
    Avant de poser votre question, n'oubliez pas :
    FAQ, SAS DOC et de ce forum

Discussions similaires

  1. Problème avec debug dans code fortran 77
    Par hector2 dans le forum Fortran
    Réponses: 3
    Dernier message: 13/04/2010, 10h40
  2. [AC-2007] Problème de champs dans Code VBA
    Par andymion dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/11/2009, 15h35
  3. [2K8] Problème connexion sql dans "code intégré"
    Par dirakocha dans le forum SSRS
    Réponses: 0
    Dernier message: 30/07/2009, 11h17
  4. Réponses: 4
    Dernier message: 28/04/2008, 17h50
  5. Problème avec assembleur dans code C++
    Par wishmerhill dans le forum C++
    Réponses: 0
    Dernier message: 05/03/2008, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo