理解が曖昧だと仕事中に無駄に時間を浪費してしまうのでまとめました。
ルール
- 「暗示的なOUTPUT」と「明示的なOUTPUT」の2種類がある。
- データステップではOUTPUTと書かなくても暗示的なOUTPUTが存在する。
- データステップ内でOUTPUTと書くと明示的なOUTPUTとなり、暗示的なOUTPUTは存在しなくなる。
例1:暗示的なOUTPUT
data test; length A B 8.; A = 1; B = 2; run;
![](https://ymddttm.com/wp-content/uploads/2020/04/2020-04-16_01.png)
見慣れた結果。
例2:明示的なOUTPUT
data test2; length A B 8.; A = 1; output; B = 2; run;
![](https://ymddttm.com/wp-content/uploads/2020/04/2020-04-16_02.png)
データステップ中にOUTPUTがある(明示的なOUTPUT)ので、暗示的なOUTPUTは消える。
B=2は実行されないので出力は欠損となる。
例3:明示的なOUTPUT
data test3; length A B 8.; A = 1; output; output; B = 2; run;
![](https://ymddttm.com/wp-content/uploads/2020/04/2020-04-16_03.png)
A=1が2回OUTPUTされている。
B=2は実行されない。
例4:明示的なOUTPUT
data test4; length A B 8.; A = 1; output; output; B = 2; output; run;
![](https://ymddttm.com/wp-content/uploads/2020/04/2020-04-16_04.png)
3回目の明示的なOUTPUTでA=1とB=2が実行される。
例5:明示的なOUTPUT
data test5; length A B C 8.; A = 1; output; output; B = 2; C = 3; output; run;
![](https://ymddttm.com/wp-content/uploads/2020/04/2020-04-16_05.png)
同様に3回目のOUTPUTでそれまでのステートメントが実行される。
コメント