Skip to main content

SASデータセットの各行の値を(任意の区切り文字)で結合し、文字列としてマクロ変数に格納する

data _null_;
    set work.input_table end = eof;
    attrib
        input_file_list length = $1000.
        output_file_list length = $1000.
    ;
    retain input_file_list output_file_list;

    input_file_list = catx(' ', input_file_list, cats('input_', category, '.xlsx'));
    output_file_list = catx(' ', output_file_list, cats('output_', category, '.csv'));

    /* 最後まで行ったらマクロ変数に出力 */
    if (eof) then do;
        call symputx("input_file_list", input_file_list, 'G');
        call symputx("output_file_list", output_file_list, 'G');
    end;
run;
  • end=一時変数名 最後の行を読み込んだ時、一時変数に「1」が入る
  • _N_ データステップの反復回数(処理中の行番号)が格納される
  • cats(値1, 値2, ...) 引数値の両端の半角スペースを除いて結合する