2019年8月29日木曜日

「ODS HTML」は「PATH=オプション」を指定した方がいい





以下のプログラムの「file=」の部分をご自身の環境にあわせてパスを変えて実行してみてください。

ods html file="c:\mysas\test.html";

proc print data=sashelp.class;
run;

ods html close;




ちゃんと動きましたか??
なんか特定の環境でエラーになっちゃいます。たとえばSAS9.4M5のWindows環境だとエラーになります。


以下のページでも言及されてますね。
https://support.sas.com/kb/61/280.html



環境によってはレジストリの設定で、WORKのフォルダパスが「file=オプション」の先頭につくそうです。

つまり、「file="c:\mysas\test.html"」と設定したら「"WORKのフォルダパス\c:\mysas\test.html"」というパスと認識されちゃうってことですね。




解決法

「path=」にパス、「file=」にファイル名を切り分けることでうまく動きます。

ods html path="c:\mysas" file="test.html";




2019年8月20日火曜日

PROC ODSTEXT入門: リストを入れ子にする




「ITEM ~ ENDステートメント」でリストに対し、、

  • 複数の段落を出力できる
  • 入れ子構造を作れる





1. リスト内に、複数の段落を出力する


構文
ITEM;
    P "テキスト1";
    P "テキスト2";
END;




proc odstext;
   list;
     item "アイス";
     item;
        p "スイカ";
        p "スイカは野菜";
     end;
   end;
run;




2. リストを入れ子にする


構文
ITEM;
    P "項目";
    LIST;
        ITEM "入れ子にする項目1";
        ITEM "入れ子にする項目2";
        ITEM "入れ子にする項目3";
    END;
END;




proc odstext;
  list;
     item "果物";
     item;
        p "野菜";
        list;
           item "きゅうり";
           item "キャベツ";
        end;
     end;
  end;
run;




記事一覧

1. 基本構文
2. リストの入れ子

2019年8月12日月曜日

PROC ODSTEXT入門: 基本構文




Q.  PROC ODSTEXTとは?
A.「ODS HTML」や「ODS RTF」などのODS出力先に「テキストを出力するプロシジャ」です。SAS9.4から追加されました。



では、3つの基本構文を紹介していきます!





1. テキスト出力



構文
PROC ODSTEXT;
    P  "出力するテキスト":
RUN;

  • テキストを出力します
  • 1つのPステートメントで、1つの段落を作ることが出来る




proc odstext;
    p "暑いですねー";
    p "夏といえば、なにを思いうかべる?";
run;





2. テキスト出力(リスト形式)


構文
PROC ODSTEXT;
    LIST:
        ITEM "項目1";
        ITEM "項目2";
        ITEM "項目3";
    END;
RUN;

・リスト形式でテキストを出力します。




proc odstext;
    list;
      item "アイス";
      item "スイカ";
      item "クーラー";
    end;
run;





3. データセットの中身を出力


構文
PROC ODSTEXT DATA=データセット;
     ~ ステートメント ~
RUN;



proc odstext data=sashelp.class;
    p "名前: " || name;

    list;
       item "性別: " || sex;
       item "身長: " || put(height,8.1);
    end;
run;




記事一覧

1. 基本構文

2019年8月5日月曜日

日付値から「月初」や「月末」の日付値を求める方法




需要ありまくりなんで書いときます!





data test;
    x = '05feb2019'd;
 
    firstday = intnx( 'month', x, 0, 'beginning');
    lastday = intnx( 'month', x, 0, 'end');
 
    format x firstday lastday yymmdd10.;
run;




解説


月初を求める

    firstday = intnx( 'month', x, 0, 'beginning');

日付値が格納された「変数x」に対して、その月の開始を返すように設定しています。




月末を求める

    lastday = intnx( 'month', x, 0, 'end');    

日付値が格納された「変数x」に対して、その月の終了を返すように設定しています。