我只是試圖連接兩個引用的宏變量,但似乎並沒有一個簡單的方法。連接引用的宏變量
說我們有:
%LET VAR1="This is not the greatest song in the world";
%LET VAR2="this is just a tribute.";
%LET TRIBUTE=%SYSFUNC(CATX(%STR(),&VAR1,&VAR2));
%PUT &TRIBUTE;
其實我是想:
"This is not the greatest song in the world this is just a tribute."
但上面的代碼實際上產生:
"This is not the greatest song in the world" "this is just a tribute."
所以我嘗試把%QUOTE()
,%BQUOTE
等。大約在&VAR1
和%VAR2
希望揭開引號,但我得到了同樣的結果。
爲我的作品的唯一事情是:
%LET TRIBUTE="%SUBSTR(&VAR1.,2,%LENGTH(&VAR1.)-2) %SUBSTR(&VAR2.,2,%LENGTH(&VAR2.)-2)";
但是,這是醜陋的,並能得到長時間的真快。 有沒有更好的方法來做到這一點?
兩件事...首先 - 我不知道'&='語法 - 謝謝!其次,你可以簡化你的var3賦值爲'%let VAR3 =「%unquote_string(string =&var1&var2。)」;'。 – 2014-08-27 20:10:35
你絕對可以這樣簡化它。不過,我更喜歡上面的內容,因爲它更清楚您要刪除的引用內容 - 與「%UNQUOTE」的工作方式類似,與宏引用相似。 (如果這些是宏觀引用的mvars,我認爲你必須調用它兩次)。 – Joe 2014-08-27 20:12:06
實際上,現在我想到了它,這是一個什麼時候創建FCMP函數或宏函數的壞例子,因爲您只是將調用包裝到現有函數中......也可以直接調用函數。 – 2014-08-27 20:12:08