2017-10-28 79 views
0

有没有其他人有这个问题?基本上,有时当我编写宏并运行代码时,什么都不会发生。日志只是将您试图执行的代码写入黑色,但它就像是SAS被禁用,您必须关闭SAS并在再次正常运行之前将其重新打开。有没有办法解决这个问题,而不必关闭和萨斯。运行代码sas时什么也没有发生

这是我的代码:

dm 'clear log';                                         
dm 'clear output';                                        
dm 'odsresults: clear';                                       
libname projet 'C:\Users\MJ-INFO\Desktop\Projet scoring1' ;                              
/*Extrcation de la base d'etude et creation d'une copie*/                              
data Examen ;                                         
set projet.base_resiliation_proj ;                                    
run;                                           

/*Contenu de la base*/                                       
proc contents data=Examen;                                      
run;                                           
/*Corespondance entre les formats et les variables */                               

proc format ;                                         
value $sexe                                          
"1"="homme"                                          
"2"="femme";                                         
run;                                           
/*Applicatation des formats*/                                     
data Examen;                                         
set projet.base_resiliation_proj ;                                    
format sexe $sexe.;                                        
run ;                                           

/*Nous avons 53892 observations et 8 variables dans notre base*/                            

/*Definition de la variable à expliquer *                                  
%let var_cible=RESIL;                                       

/*Definition des variables explicatives */                                  
%let var_quali=formule sexe;                                     
%let var_quanti=anc_client anc_cont cotisation id nb_cont;                              
/*Vue sur la variable cible*/                                     
proc freq data=Examen;                                       
table &var_cible;                                        
run;                                           
/*14.42 des contrats sont des fragiles*/                                  
/*Exploration des variables candidates de la base*/                               
proc freq data=Examen;                                       
table &var_quali;                                        
run;                                           

proc means data=Examen min max mean median nmiss;                                
var &var_quanti;                                        
run;                                           

/*Traitement des valeurs manquantes/aberrantes*/                                
data Examen;                                         
set Examen;                                          
if cotisation=-1 then delete;                                     
if cotisation='.' then delete;                                     
if nb_cont=99999 then delete;                                     
run;                                           

/*II.Preparation des donnees*/                                     
/*Etude des liaisons entre variables qualitatives et variable cible */                           
/*Variables qualitatives : test de Khi-2 & v de Cramer*/                              
%macro quali(table,var,cible,mod);                                    
/*Representation en terme d'effectif*/                                   
proc gchart data=&table;                                      
vbar3d &var./sumvar=&cible discrete;                                   
title "Effectifs de la variable &var";                                   
run;                                           
/*Taux de contrat à risque*                                      
proc freq data=&table;                                       
table &var.*&cible/chisq outpct out=pct;                                  
run;                                           
proc gchart data=pct (where=(&cible=&mod));                                  
vbar3d &var./sumvar=pct_row discrete;                                   
title "Taux de contrats à risque de la variable &var";                               
run;                                           
quit;                                           
title;                                           
%mend;                                           
%quali(Examen,sexe,&var_cible,1); 

SAS显示运行此代码我黑色的执行:

/*II.Preparation des donnees*/                                     
/*Etude des liaisons entre variables qualitatives et variable cible */                           
/*Variables qualitatives : test de Khi-2 & v de Cramer*/                              
%macro quali(table,var,cible,mod);                                    
/*Representation en terme d'effectif*/                                   
proc gchart data=&table;                                      
vbar3d &var./sumvar=&cible discrete;                                   
title "Effectifs de la variable &var";                                   
run;         

我不明白为什么我得到黑执行甚至我的代码有没有错误时我看到日志页面?

感谢您的帮助!

回答

1

您的代码:

%macro quali(table,var,cible,mod);                                    
/*Representation en terme d'effectif*/                                   
proc gchart data=&table;                                      
vbar3d &var./sumvar=&cible discrete;                                   
title "Effectifs de la variable &var";                                   
run;   

开始定义一个宏,但从未完成。在最后没有%修正语句,所以SAS认为你仍然发送宏代码进行编译。如果你添加%修补,它应该工作。

SAS以这种方式感觉不响应的最常见原因是未关闭的宏定义,未关闭的注释块和不匹配的引号。如果你是谷歌的“SAS魔术字符串”,你会发现你可以提交的代码示例,当你陷入困境时尝试恢复。这样的东西:

*';*";*/;%mend; 

如果您正在使用企业指南,它会自动添加一个特殊的字符串每次提交代码的时间。这意味着你的会话不会感觉到挂起。但是,如果你有一个未公开的宏定义,它可能会使它更难以识别,因为它看起来像一切都很好。但实际上它根本没有执行。魔术串可能最终隐藏了问题。我认为SAS工作室还增加了一个魔术字符串,但我没有检查。

+1

SAS Studio可用于交互式运行以及批处理,因此它在EG方面与此不同。 Studio不会添加魔术字符串,但它不包含%MEND,&GRAPHTERM; *'; *“; * /; RUN; QUIT;' – Reeza

相关问题