Joe wrote: > I am puzzled by the above examples. Do you mean write a seperate FN for each > page to print? No, I don't think that's necessary. I think the "FN" statement was meant to be shorthand for: "Insert all the drawing commands for a single page here." You don't actually need to implement them as a FN, nor do you need to use a different FN for each page. > FN printPage(pageNum%,copies%) 'call print routine > CLEAR LPRINT 'finish page, go to next I'm skeptical about this pair of lines. It looks like your intent is to have FN printPage perform the necessary drawing commands a certain number of times (the value of "copies%"), followed by a single call to CLEAR LPRINT after the FN returns. I think you need to call CLEAR LPRINT after _each_ time you draw the page. If copies% = 12, then you should call CLEAR LPRINT 12 times, not once. > The line that gets the number of copies: "copies% ={[PRHANDLE]+_copies}" > always seems to return 1 no matter how many copies are entered in the print > dialogue box. I'm speculating that this is a (relatively) new feature of the system software. Based on a few experiments with new & old Mac's, I _think_ what's happening is this: In the "old" system software (how old? Don't know) it was the programmer's responsibility to handle page ranges and number-of-copies programatically, by reading those values from the Print Record, and drawing only the appropriate range of pages, and executing a loop, generating the drawing commands repeatedly for the appropriate number of copies. Nowadays, the system software (or is it just certain printer drivers? I don't know) handle the looping and page-ranging for you. If the user enters "7" in the dialog box, then 7 copies get printed even though your program only executes the drawing commands once. If the user enters "3" as the first page number, then pages 1 and 2 don't get printed, even if your program "tries" to generate them. Using this "new" method, your program should generate the full range of pages, and generate each page only once. The system software will automatically take care of the copies & range that the user requested. But in order to make this new "automatic" method work with _older_ application software, which is written to loop through copies and to truncate the page range, it's necessary for the system software to "fool" your application. Though the user enters "7" copies, the system only reports "1" to your program. That way, your print loop is fooled into executing only once, and the system will "multiply" that output by 7 for you. (If your loop executed 7 times, the (new) system would print 7 copies for _each_ loop--giving you 49 copies! You don't want that.) Likewise, my guess is that the newer system "fools" your program into thinking it's supposed to print the entire range of pages, regardless of what the user actually entered in the dialog box. That way, your program merrily generates the entire range, and the system simply ignores the first "n" and the last "m" pages you generate. - Rick