Every pic description is a little program, which gets compiled by pic(1) into gtroff(1) macros. Programs that process or display gtroff(1) output need not know or care that parts of the image began life as pic descriptions.
The pic(1) program tries to translate anything between .PS and .PE markers, and passes through everything else. The normal definitions of .PS and .PE in the ms macro package and elsewhere have also the side-effect of centering the pic output on the page.
If you make a pic syntax error, gpic(1) will issue an error message in the standard gcc(1)-like syntax. A typical error message looks like this,
pic:pic.ms:<nnn>: parse error before ‘<token>’ pic:pic.ms:<nnn>: giving up on this picture
where 〈 nnn〉 is a line number, and 〈 token〉 is a token near (usually just after) the error location.