Hi everyone, I am using the WRDS MACRO to calculate betas. Please find the code attached below.
When I run this macro on my own (without changing anything) I get the follow errors (please see attached photos).
I am not really sure how to address the notes and errors because it is underlying things I do not see in the original code. Does anyone have any tips on what I could do?
Please COPY/PASTE the log texts into windows opened with the </> button. No need for pictures or attachments when the logs are just a handful of lines.
NOTE: The quoted string currently being processed has become more than 262 bytes long. You might have unbalanced quotation marks. 1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK; 2 TITLE; 3 FOOTNOTE; 4 OPTIONS LOCALE=en_US DFLANG=LOCALE; 5 DATA _NULL_; 103 &GRAPHTERM; ;*';*";*/;RUN;QUIT; _________________ 49 NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 6 RUN; 7 OPTIONS VALIDVARNAME=ANY; 8 OPTIONS VALIDMEMNAME=EXTEND; 9 FILENAME _HTMLOUT TEMP; 10 FILENAME _RTFOUT TEMP ENCODING='UTF-8'; 10 FILENAME _RTFOUT TEMP ENCODING='UTF-8'; __ 49 NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 11 FILENAME _PDFOUT TEMP; 12 FILENAME _GSFNAME TEMP; 13 FILENAME _DATAOUT TEMP; 14 %LET SYSCC=0; 15 %LET _CLIENTAPP='SAS Studio'; 16 %LET _CLIENTAPPABREV=Studio; 17 %LET _CLIENTAPPVERSION=3.81; 18 %LET _CLIENTVERSION=3.81; NOTE: The quoted string currently being processed has become more than 262 bytes long. You might have unbalanced quotation marks. 19 %LET _CLIENTMODE=basic; 20 %LET _SASSERVERNAME=%BQUOTE(localhost); 21 %LET _SASHOSTNAME=%BQUOTE(wrds-sas9-w); 22 %LET _SASPROGRAMFILEHOST=%BQUOTE(wrds-sas9-w); 23 %LET _CLIENTUSERID=%BQUOTE(jyuan93); 24 %LET _CLIENTUSERNAME=%BQUOTE(Jonathan Yuan); 25 %LET 25 ! CLIENTMACHINE=%BQUOTE(BRAS-BASE-OKVLON0102W-GRC-48-184-147-218-28.DSL 25 ! .BELL.CA); 26 %LET 26 ! _CLIENTMACHINE=%BQUOTE(BRAS-BASE-OKVLON0102W-GRC-48-184-147-218-28.DS 26 ! L.BELL.CA); 27 %let SASWORKLOCATION="%sysfunc(getoption(work))/"; 28 FILENAME _CWD '.' _ 49 28 ! ; NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 29 DATA _NULL_; 30 CALL SYMPUT('_SASWORKINGDIR',PATHNAME('_CWD')); ____________ 49 NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 31 RUN; 32 FILENAME _CWD; 33 34 %LET _SASPROGRAMFILE = %NRQUOTE(%NRSTR(/home/uwaterloo/jyuan93/Pilot 34 ! Test/Beta_test.sas)); NOTE: The quoted string currently being processed has become more than 262 bytes long. You might have unbalanced quotation marks. 35 %LET _BASEURL = 35 ! %BQUOTE(https://wrds-cloud.wharton.upenn.edu/SASStudio/); 30 CALL SYMPUT('_SASWORKINGDIR',PATHNAME('_CWD')); ____ 49 NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 36 %LET _EXECENV=SASStudio; 37 DATA _NULL_; 38 CALL SYMPUT("GRAPHINIT",""); 39 CALL SYMPUT("GRAPHTERM",""); 40 RC=TSLVL('SASXGOPT','N'); 41 _ERROR_=0; 42 IF (RC^=' ') THEN DO; 43 CALL SYMPUT("GRAPHINIT","GOPTIONS RESET=ALL GSFNAME=_GSFNAME;"); 44 CALL SYMPUT("GRAPHTERM","GOPTIONS NOACCESSIBLE;"); 45 END; 46 RUN; 47 DATA _NULL_; 48 RC=SYSPROD("PRODNUM002"); 49 IF (RC^=1) THEN DO; NOTE: The quoted string currently being processed has become more than 262 bytes long. You might have unbalanced quotation marks. 50 CALL SYMPUT("GRAPHINIT",""); 51 CALL SYMPUT("GRAPHTERM",""); 52 END; 53 RUN; 54 %LET _DATAOUT_MIME_TYPE=; 55 %LET _DATAOUT_NAME=; 56 %LET _DATAOUT_TABLE=; 57 %LET _DATAOUT_URL=; 58 %SYMDEL _DATAOUT_MIME_TYPE _DATAOUT_NAME _DATAOUT_URL _DATAOUT_TABLE; 59 %LET _SASWS_ = %BQUOTE(/home/uwaterloo/jyuan93); 42 IF (RC^=' ') THEN DO; ___________ 49 NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 60 %LET 60 ! _SASWSTEMP_=%BQUOTE(/home/uwaterloo/jyuan93/.sasstudio/.images/5ed268 60 ! 7e-4d7d-4a1e-b927-02d7b8ddf5eb); 61 ODS LISTING CLOSE; 62 ODS AUTONAVIGATE OFF; 63 ODS GRAPHICS ON; 64 ODS HTML5 (ID=WEB) DEVICE=PNG GPATH="&_SASWSTEMP_" ENCODING=utf8 64 ! FILE=_HTMLOUT (TITLE='Results: 64 ! Beta_test.sas') STYLE=Htmlblue OPTIONS(BITMAP_MODE='INLINE' _______________________________________ ___________ ____________ 49 49 49 64 ! OUTLINE='ON' SVG_MODE='INLINE' 64 ! CSS_PREFIX='.ods_5ed2687e-4d7d-4a1e-b927-02d7b8ddf5eb' 64 ! BODY_ID='div_5ed2687e-4d7d-4a1e-b927-02d7b8ddf5eb' ); NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. 65 ODS RTF (ID=WEB) STYLE=Rtf FILE=_RTFOUT sasdate; 66 ODS PDF (ID=WEB) STYLE=Pearl FILE=_PDFOUT; 67 &GRAPHINIT; 68 OPTIONS FIRSTOBS=1; 69 OPTIONS OBS=MAX; NOTE: The quoted string currently being processed has become more than 262 bytes long. You might have unbalanced quotation marks. 70 OPTIONS DTRESET DATE NUMBER NOTES; 71 OPTIONS NOTES STIMER SOURCE NOSYNTAXCHECK; 72 73 proc printto log = junk; run; 74 proc expand data=_crsp2 out=_crsp3 method=none; 75 by permno; 76 id date; 77 convert X=X2 / transformout= (MOVUSS &WINDOW.); 78 convert X=X / transformout= (MOVSUM &WINDOW.); 79 convert XY=XY / transformout= (MOVSUM &WINDOW.); 80 convert ret=Y / transformout= (MOVSUM &WINDOW.); 81 convert count=n / transformout= (MOVSUM &WINDOW.); 82 quit; 83 run; 84 proc printto; run; 85 86 data &outset; 87 set _crsp3; 88 if n>=&MINWIN. then beta=(XY-X*Y/n) / (X2-(X**2)/n); 89 label beta = "Stock Beta"; 90 label n = "Number of Observations used to compute Beta"; 91 drop X X2 XY Y COUNT; 92 format beta comma8.2 ret &index percentn8.2; 93 run; 94 95 /* House Cleaning */ 96 proc sql; 97 drop view _crsp1; 98 drop table _crsp2, _crsp3; 99 quit; 100 101 options notes; 102 %put #### DONE . Dataset &outset. Created! ; %put ; 103 104 %MEND BETA; 105 106 107 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK; 108 ODS HTML CLOSE; 109 &GRAPHTERM; ;*';*";*/;RUN;QUIT; 110 QUIT;RUN; 111 ODS HTML5 (ID=WEB) CLOSE; 112 113 ODS RTF (ID=WEB) CLOSE; 114 ODS PDF (ID=WEB) CLOSE; 115 FILENAME _GSFNAME; 116 DATA _NULL_; 117 RUN; 118 OPTIONS NOTES STIMER SOURCE SYNTAXCHECK; 119
You have had unbalanced single quotes somewhere in the code you submitted earlier. Close the SAS session and start a new one.
Hey KurtBremser, thanks for the help.
I went through the code and I actually dont have any single quotes. Plus, the double quotations looked balanced.
I restarted SAS and the error seems to persist.
Hey Reeza, I doubled checked and the code is copied correctly.
However, is there something I can add that may help the code work?
If you're not famililar with macros here's a beginner level tutorial.
UCLA introductory tutorial on macro variables and macros
https://stats.idre.ucla.edu/sas/seminars/sas-macros-introduction/
Hi! I frequently encounter this kind of error whenever I have unbalanced quotes or accidentally run a SAS macro without the %mend statement. Once I fixed my code, I was just wondering if there's a way to continue working on the same session and not start a new one? There are times when I have so many data on my work library that it would take too much of my time to open a new session and rerun all my codes.
EG generally fixes unmatched quotes by submitting a "magic string". You can also try submitting one yourself, e.g. submit:
;*';*";*/;RUN;QUIT;%mend;
I tend to submit it a few times. If the %mend at the end generates an error, then it's a clue that your session is un-stuck.
I have also came across same error you just have to reset the session by pressing F9 key.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.