The person-specific random effect can be equivalently specified employing a REPEATED statement. Note that the MIXED documentation states with regard to computational issues that "In general, specify random effects with a lot of levels in the REPEATED statement and those with a few levels in the RANDOM statement."
It is well known that a random intercept model results in a within-subject compound symmetric residual covariance structure. Thus, using the advice to employ a REPEATED statement in place of the RANDOM statement, you would want to construct the REPEATED statement to specify TYPE=CS covariance structure.
The MIXED documentation also states "If possible, "'actor out' a common effect from the effects in the RANDOM statement and make it the SUBJECT= effect. This creates a block-diagonal G matrix and can often speed calculations."
Following the above cited recommendations, I would employ the following RANDOM/REPEATED statements:
random intercept / subject=school;
random intercept / subject=class(school);
repeated / subject=person(class*school) type=cs;
The repeated statement can be specified with or without the asterisk between class and school.