The distinction between a compile unit (a single source module that has been preprocessed and compiled) and a program (an executable unit consisting of one or more compile units link-edited together) is important because all operations against a single stream (in Preprocessor1) or a cursor (in Preprocessor2) must be within the compile unit in which the stream or cursor was opened.