DIRECTORY BansheeEngine USING [Job, JobHandle], BansheeSequence USING []; BansheeSequenceImpl: CEDAR PROGRAM EXPORTS BansheeSequence = BEGIN pageCount: PUBLIC CARDINAL; -- total pages (all copies, with any or all banner sheets) job: BansheeEngine.JobHandle; -- set in call to Set plateCount: CARDINAL; GetBandlist: PUBLIC PROCEDURE [page: CARDINAL] RETURNS [bandlist: CARDINAL] = BEGIN SELECT job.printOrder FROM firstPageOutFirst => SELECT job.banner FROM oncePerDocument, oncePerJob => IF Banner[page: page] THEN RETURN[0] -- banner page from bandlist 0 ELSE RETURN[job.firstPage + Plate[page: page]]; suppressed => RETURN[job.firstPage + Plate[page: page]]; ENDCASE; lastPageOutFirst => SELECT job.banner FROM oncePerDocument, oncePerJob => IF Banner[page: page] THEN RETURN[0] ELSE RETURN[1 + job.lastPage - Plate[page: page]]; suppressed => RETURN[job.lastPage - Plate[page: page]]; ENDCASE; ENDCASE; END; Set: PUBLIC PROCEDURE [job: BansheeEngine.JobHandle] RETURNS [valid: BOOLEAN] = BEGIN IF job.document = NIL OR job.document.pages = 0 OR job.copyCount = 0 THEN RETURN[FALSE]; IF job.banner # suppressed AND job.document.pages = 1 THEN BEGIN job.banner _ suppressed; job.copyCount _ 1; job.firstPage _ job.lastPage _ 0; END ELSE job.lastPage _ MIN[LONG[job.lastPage], job.document.pages - 1 - (IF job.banner # suppressed THEN 1 ELSE 0)]; plateCount _ job.lastPage - job.firstPage + 1 + (IF job.banner # suppressed THEN 1 ELSE 0); pageCount _ SELECT job.banner FROM oncePerDocument, suppressed => job.copyCount * plateCount, ENDCASE => 1 + job.copyCount * (plateCount - 1); RETURN[TRUE]; END; Banner: PROCEDURE [page: CARDINAL] RETURNS [banner: BOOLEAN] = BEGIN SELECT job.banner FROM oncePerDocument => SELECT job.printOrder FROM firstPageOutFirst => -- banner is page 0 RETURN[page MOD plateCount = 0]; lastPageOutFirst => -- banner is plateCount + 1 RETURN[page MOD plateCount = plateCount + 1]; ENDCASE; oncePerJob => SELECT job.printOrder FROM firstPageOutFirst => RETURN[page = 0]; lastPageOutFirst => RETURN[page = pageCount - 1]; ENDCASE; suppressed => RETURN[FALSE]; ENDCASE; END; Plate: PROCEDURE [page: CARDINAL] RETURNS [plate: CARDINAL] = BEGIN SELECT job.banner FROM oncePerDocument, suppressed => RETURN[page MOD plateCount]; oncePerJob => IF plateCount = 1 THEN RETURN[0] ELSE SELECT job.printOrder FROM firstPageOutFirst => IF page < plateCount THEN RETURN[page] ELSE RETURN[1 + (page - 1) MOD (plateCount - 1)]; lastPageOutFirst => IF page = pageCount - 1 THEN RETURN[plateCount + 1] ELSE RETURN[page MOD (plateCount - 1)]; ENDCASE; ENDCASE; END; END... LOG Who / When / What Strickberger / 27-Nov-84 12:33:41 / Created from FaxSequenceImpl. Add copyright. Strickberger / 4-Aug-85 23:16:04 / FixArrows. ΒBansheeSequenceImpl.mesa Copyright (C) Xerox Corporation 1984, 1985. All rights reserved. Last edited by Strickberger: 4-Aug-85 23:16:04 PUBLIC Variables: PRIVATE Variables: PUBLIC PROCEDUREs: returns correct index into bandlist sequence for page number passed bandlists correspond to doc. page order, not print order (plates and pages relate to print order) sole page in job is banner page IF job.firstPage > job.lastPage THEN RETURN[FALSE]; **removed to fix AR set up globals (pertaining to all pages in job) PRIVATE PROCEDUREs: returns TRUE if page is a banner, FALSE otherwise returns plate number given page number in the first or only copy, page and plate number are the same, except for Κl˜J˜code™KšœA™AKšœ/™/—K˜K˜šΟk ˜ Kšœœ˜%Kšœœ˜—K˜šΟnœœ˜"Kšœ˜—˜Kšœ™—˜Kšœ œœΟc:˜W—˜Kšœ™—˜KšœŸ˜4Kšœ œ˜—˜Kšœ™—˜š ž œœ œœœ œ˜SKšœC™CKšœ9™9Kšœ(™(šœ˜˜šœ ˜˜KšœœœŸ˜DKšœœ$˜/—Kšœœ$˜8Kšœ˜——˜šœ ˜˜Kšœœœ˜$Kšœœ'˜2—Kšœœ#˜7Kšœ˜——Kšœ˜—Kšœ˜——˜š žœœ œ œ œ˜UKšœœœœœœœ˜Xšœœ˜:Kš˜Kšœ™K˜K˜K˜!Kš˜—š˜Kš œœœ*œœœ˜l—Kš œœœœ™HKšœ/™/Kšœ1œœœ˜[šœ œ ˜"˜:Kšœ)˜0——Kšœœ˜ Kšœ˜——˜Kšœ™—˜š žœ œœœ œ˜DKšœ1™1šœ ˜˜šœ˜šœŸ˜)Kšœœ˜ —šœŸ˜0Kšœœ˜-—Kšœ˜——˜ šœ˜Kšœœ ˜&Kšœœ˜1Kšœ˜——Kšœœœ˜Kšœ˜—Kšœ˜——˜š žœ œœœ œ˜CKšœq™qšœ ˜Kšœœœ ˜;˜ Kšœœœ˜ š˜šœ˜˜Kšœœœ˜&Kšœœœ˜1—˜Kšœœœ˜3Kšœœœ˜'—Kšœ˜———Kšœ˜—Kšœ˜——˜Kšœ˜—K˜Kš˜K˜K˜QK˜.J˜J˜—…— Δς