Triad sou.

set end; データステップで最後のオブザベーションのみ出力する方法

これは覚えておくとお得かもしれません。
set data; by variable; if last.variable then output; の仲間ですね。

data sample;
input x y z @@;
cards;
1 2 3  4 5 6  7 8 9
;
data sample_final;
  retain xx xy xz yy yz zz 0;
  set sample end = final;
  xx = xx + x * x;
  xy = xy + x * y;
  xz = xz + x * z;
  yy = yy + y * y;
  yz = yz + y * z;
  zz = zz + z * z;
  if final then output;
proc print; run;