A program template contains two basic kinds of information about a program: (1) information needed to invoke the program, such as the name of the program, command line arguments, and environment variables; and (2) an array of port descriptors that describe the means by which the program accesses data.