2017-10-28 107 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

相關問題