The PG lab and the Problem lab differ in some important respects.
The PG lab (problem 87) was designed to accept short code snippets, and have its output be the result of the last command executed. This is to allow you to see the result of a MathObject computation or other short bit of PG code without having to worry about how to produce output.
The Problem lab, on the other hand, is designed for you to experiment with complete problems and play with the output they produce and the answers they require.
The PG lab doesn't expect you to produce output other than the result of the last command, and so does not process BEGIN_TEXT/END_TEXT or the other similar blocks. It is actually this limitation that is causing the problems in your example above (though it is not easy to determine that from the error message).
Those text blocks (and output in general) are processed in the Problem lab, however, and so your example would be better suited to the Problem lab, where it should work fine.