Assuming that treatment is the only fixed effect:
class treatment pen animal; model y = treatment;
random pen(treatment)
animal*pen(treatment);
Given how SAS expands syntax, there are equivalent ways to identify a random effect in this model:
"pen(treatment)" == "pen*treatment"
"animal*pen(treatment)" == "animal*pen*treatment" == "animal(pen treatment)"
Equation-wise, something like (without going to the trouble of proper symbols)
y_ijkm = mu + t_i + p_ij + a_k(ij) + e_m(ijk)
where i indexes treatment t
j indexes pen p
k indexes animal a
m indexes sample e (residual error)
... View more