最后的"。"在宏变量之后意味着

时间:2017-09-12 03:36:42

标签: sas

以下是从exisitng数据集创建数据集的代码,其中 // App installed let permissions = [LISDK_BASIC_PROFILE_PERMISSION,LISDK_EMAILADDRESS_PERMISSION] LISDKSessionManager.createSession(withAuth: permissions, state: nil, showGoToAppStoreDialog: true, successBlock: { (returnState) -> Void in LISDKAPIHelper.sharedInstance().getRequest("https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url,public-profile-url,industry,positions,location)?format=json", success: { (response) -> Void in if let data = response?.data.data(using: String.Encoding.utf8) { if let dictResponse = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers){ let token = LISDKSessionManager.sharedInstance().session.accessToken.accessTokenValue Auth.auth().signIn(withCustomToken: token! ) { (user, error) in print(user!) print(error!) } } } }, error: { (error) -> Void in print("LINKEDIN error\(String(describing: error))") }) }) { (error) -> Void in print("error login linkedin") } endend8是宏变量,只是想知道为什么在结尾处添加end7宏变量?

.

2 个答案:

答案 0 :(得分:3)

点标记宏变量的结尾。当宏文本与静态文本组合时经常使用它,例如,在文件名中,以便SAS知道宏变量的结束位置。 E.g:

%let year=2017;

%let filename = &year._accounts.xlsx;

%put &filename;

制作2017_accounts.xlsx

如果没有第一个点,SAS将生成警告消息,因为它将查找名为year_accounts的宏变量。 (它无法分辨宏结束的位置和文本的开始。)

如果宏变量后面有空格或结尾语句,则可以省略点。包括点在这种情况下没有效果。有些人认为总是包含点是好的。

答案 1 :(得分:2)

它曾用于表示宏变量的结束。当您混合宏变量和文本时,这很重要。

例如:

%let my_var = TEST;
%let my_var_new = WRONG;
%put &my_var._new;
%put &my_var_new.;

输出:

 58             %let my_var = TEST;
 59             %let my_var_new = WRONG;
 60             %put &my_var._new;
 TEST_new
 61             %put &my_var_new.;
 WRONG

宏处理器如何知道宏变量是my_var还是my_var_new?期间告诉SAS宏变量的结束位置。

包含点也会在编辑器中将宏变量变为绿色,这有助于读取和调试代码。