-
-
PGのフロー2
SASは1レコードずつ取り込んでいく特徴がある。
例えば↓データセット「SAMPLE01」と2つのPGがあったとしよう。
例1:
DATA WK01_1;
TEST02=TEST01;
SET SAMPLE01;
RUN;
例1の実行結果:
|
TEST01 |
TEST02 |
| 行1 |
X1 |
|
| 行2 |
X2 |
X1 |
| 行3 |
X3 |
X2 |
例2:
DATA WK01_2;
SET SAMPLE01;
TEST02=TEST01;
RUN;
例2の実行結果:
|
TEST01 |
TEST02 |
| 行1 |
X1 |
X1 |
| 行2 |
X2 |
X2 |
| 行3 |
X3 |
X3 |
例2が通常の流れ。
例1のPGで何故こうなるかについて。
0.行1の処理開始。
1.データをセットする前に命令「TEST02=TEST01」を出しているので、行1にブランクがくる。
2.「TEST02」に値「X1」がセットされる。
3.行2の処理に移る。
4.「X1」がセットされており、命令「TEST02=TEST01」が出されると、行2に「X1」がセットされる。
5.「TEST02」に値「X2」がセットされる。
6.行3の処理に移る。
…(以下略)…
これらはSASが1オブザベーション毎に処理していくために発生する。
ま、慣れてしまえばどうってことはない。
05APR2008 update.
|