Every pic description is a little program describing drawing actions. The [gtn]roff-dependent versions compile the program by pic(1) into gtroff(1) macros; the pic2plot(1) implementation uses a plotting library to draw the picture directly. 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) issues 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.