Search code examples
sasenterprise-guide

Macro only stores part of the string


I create my variable like this:

data Concat_var; 
    Table_periode_MDR = CAT("\\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\",&Periode,"\RLI\Output_Daglig_LCR\MDR_korrektion.csv"); 
    Table_periode_Dagligkorr = CAT("\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\",&Periode,"\RLI\Månedlig_LCR_RLI\WORK_QUERY_FOR_DAGLIGEKORREKTIONER.csv");
    Table_periode_weights_m = CAT("\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\",&Periode,"\RLI\Månedlig_LCR_RLI\Weights_M.csv");
    Table_periode_weights_d = CAT("\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\",&Periode,"\RLI\Output_Daglig_LCR\Weights_D.csv");
    Table_periode_W_D_LCR = CAT("\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\",&Periode,"\RLI\Output_Daglig_LCR\W_D_LCR.csv");
    Table_periode_W_M_LCR = CAT("\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\",&Periode,"\RLI\Månedlig_LCR_RLI\W_M_LCR.csv");
run;

PROC SQL NOPRINT;

SELECT DISTINCT 
          Table_periode_MDR,
          Table_periode_Dagligkorr,
          Table_periode_weights_m,
          Table_periode_weights_d,
          Table_periode_W_D_LCR,
          Table_periode_W_M_LCR


INTO      :Table_periode_MDR,
          :Table_periode_Dagligkorr,
          :Table_periode_weights_m,
          :Table_periode_weights_d,
          :Table_periode_W_D_LCR,
          :Table_periode_W_M_LCR

FROM Concat_var;

When looking in the "Concat_var" everything looks right.

The issue is that when I use the string to import files like this:

proc import datafile=&Table_periode_MDR
        out=MDR_korrektion
        replace
        dbms=csv 
        replace;
        getnames=yes;
        delimiter=';';
run;

But I get an error because the string is only:

\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\202208\RLI\Output_Daglig_LCR\MDR_ko

How can I get the whole string when I create my variable?

I hope you can point me in the right direction.


Solution

  • cat() automatically sets the variable length to 200, and your text is within that range so that does not appear to be the issue.

    Although I cannot directly recreate your results, consider creating your macro variables directly. You do not need to use a separate data step with a SQL :into to concatenate them. The macro processor automatically knows where macro variables start and end with & and .

    %let folder = \\Afdeling\HS-OKO\Oko\Likviditet\Likviditetsstyring\LCR\Indberetning\2022\;
    
    %let Table_periode_MDR        = &folder.\&periode.\RLI\Output_Daglig_LCR\MDR_korrektion.csv;
    %let Table_periode_Dagligkorr = &folder.\&periode.\RLI\Månedlig_LCR_RLI\WORK_QUERY_FOR_DAGLIGEKORREKTIONER.csv;
    %let Table_periode_weights_m  = &folder.\&periode.\RLI\Månedlig_LCR_RLI\Weights_M.csv;
    %let Table_periode_weights_d  = &folder.\&periode.\RLI\Månedlig_LCR_RLI\Weights_M.csv;
    %let Table_periode_W_D_LCR    = &folder.\&periode.\RLI\Output_Daglig_LCR\W_D_LCR.csv;
    %let Table_periode_W_M_LCR    = &folder.\&periode.\RLI\Månedlig_LCR_RLI\W_M_LCR.csv;