Versions 2.00 to 2.99 (Nov 1998 to Nov 2002)

* I made the "Next Descriptive Name" field in the Paper Size Database"BlankAllowed" so you can enter an empty string (which is the usual case).

* I changed the ClassPag outext generation option so you can select recordsfor pages, class headers, line ads, display ads, banners and fillers.You can set default values for the choices in the configuration database,and then change them when you make the outext.

* I changed the ClassPag "Save Work Area" option so you can select whether youwant it to lock your pages. ClassPag only saves locked pages, so this optionused to always lock all of your pages, but locking pages does an unflow whichcan mess things up.

* I added options to scanps.sh to use the fonts.site fonts if the rip fontsare not available. -site uses the fonts.site fonts are not available.-buildsite rebuilds the list of fonts constructed from fonts.site.-forcesite uses the list of fonts from fonts.site even if the rip fontslist exists.-init starts a fresh run. scanps.sh is meant to be run by scanall.shthrough find and xargs, so it usually appends to its output files.

* I added hotkeys to toggle the active flag in the printer names, papersizes and spreads lists. This makes it easier to remove unused entries.

* I changed ClassPag so when it produces a composite page (color ads butseparations = NO), it writes the plate names and registration marks ineach color. It staggers the plate names so they do not overlap.It must place the registration marks in the same place on each plate,

* I added a ClassPag configuration parameters to specify the box expansionwhen ClassPag draws a black box for an ad missing EPS. This allows you tomake the clear window on the film larger than the ad to provide some slack.

* I changed the "Load As Banner" option in the "View Ad Directories" windowso you can load an EPS file into a banner even if another banner alreadyuses the same EPS file. This makes it easier to share common banner elementsamong banners for different editions.

* I changed the "Page Names" window so it only shows square-offs for thecurrent edition when you are in a pagination session. This makes it easierto find the correct square-off when you have entries for several editions.

* I added a hotkey for the classification name database into the classificationselection list (the one that you see when you select "Paginate" from the mainmenu). This makes it easier to fix and update classification names.

* I changed the initscr.sh setup script to ignore colons to avoid doing extrawork due to different formatting styles in different versions of makespc.

* I updates the manual about "undefined in I" PostScript errors for badtiff previews.

* I added an insert hotkey to the "Save Work Areas" list so you can makenew save areas without the need to drop into unix and do a "mkdir" command.

* I changed ClassPag to add a work area type field into the control database.The field has the values "IMP", "WEEK", "ALT", "TTY", and "SAVE".IMP is a normal import directory.WEEK is an import directory for weekly products.ALT is an import directory for products that print less often than weekly.TTY is a work area that a person can log in to.SAVE is a directory that holds a saved work area.If the field is empty, ClassPag guesses the work area type from its nameas before.On the ClassPag lists that let you import from a work area, ClassPaginitially shows just the IMP areas, but has hot keys to let you see theWEEK and the ALT areas.Since AdMax creates a product for every day of the week for almost everyproduct (even products that only publish once a year), the complete listhas about 250 entries, so hiding WEEK and ALT areas makes it a lot easierto locate the correct area for the daily publications.They must remember to use the WEEK hotkey once a week when they do theirone weekly publication.ClassPag needs to read files over the network to show information in thelist window, so reducing the number of entries also makes the window openmuch faster.The "makelong.sh" script generates a control.trn transaction file thatsets the work area type in control database records (in addition tosetting the product and edition).

* When ClassPag makes entries in the control database, it no longer ads"/dev/" to the terminal name string for WebTermX entries with IP addresses.

* I added a configuration parameter to select the first and last positionsof the ad number in the cardex to use when generating an EPS file name.Longmont passes 10 character ad numbers in their cardex file.The first 6 characters are the true ad number (what they use when theysave the ads), and the last 4 characters are an insertion code (thatchanges every insertion).Loveland has a similar scheme, except they use a 5 character ad number andalways set 6th character of the ad number to an "A". When Loveland createsan EPS file for an ad, they must use their 5 character ad number plus an "A".

* I changed ClassPag to look for files with the extension ".eps".Their method of creating EPS files made files with the extension ".eps",while ClassPag used to look only for EPS files with no extension or withthe extension ".EPS" (in upper case).When ClassPag looks for a display ad or a house ad, it now uses1) the file name given for the ad for house ads, this is what you key into the ImageName field; for ads in the sort file, this is the file name field in columns 72-101; for ads in the cardex file, this is the ad number with no extension.2) the file name without any extension3) the file name with the extension ".EPS"4) the file name with the extension ".eps" [This is the only new step.]

* I changed ClassPag to look for the cardex file as "CARDEX.TXT" if it does notfind "cardex.txt". It seems like MSDOS and Win95 generate uppercase file nameswhile WinNT generates lowercase file names. When they make the cardex,they use a Win95 system with the ClassPag server /u2 share mounted as "Y:".

* I added an option to copy the classification names from one product toanother. This saves entering the classification list in each product.

* I added a sample cleanads script in /u/cpag/interface/cleanex.shto show how to purge files older than a given number of days.

* I added a sample backup script in /u/cpag/interface/backex.shto show how to do a cpio backup.

* I added a sample copy script in /u/cpag/interface/crossex.shto show how to copy new house ads from one system to another.

* I added sample cron lines in /u/cpag/interface/cronex.sh to show howto run nightly scripts to do backups and to maintain ad directories.

* I changed the ClassPag status area to show the node name in additionto the user name and the work area. This helps sites with more thanone server tell which server they are connected to.

* I added a ClassPag configuration option to kill up to three classes duringthe import step. The kills happen after nesting the classes, so each entrycan potentially kill a whole range of classes. Papers can use this optionto kill house ad entries that they can not delete from their front-end.

* I added checks to the ClassPag banner setup to detect duplicate banner names.ClassPag builds banner names from the name of the banner family plus thename of the banner image, and it is easy to make banner images that arenot unique to enough places. ClassPag now displays warnings when you enterand leave the banner setup, and the banner list has a hotkey to redo the scan.

* I changed ClassPag to parse "%%CMYKCustomColor:" lines.They saved an EPS file in Quark (possibly with a spot red color) that produceda comment like this instead of a "%%DocumentProcessColors:" comment.

* I added a boolean "Final Output Device" field to the ClassPag paper database.When you select a paper entry with this field set, ClassPag shows only fullscale spread entries. This should make it harder to send unscaled proofpages to imagers.

* I added -k and -v options to the unload.sh script to select the key numberand key value. These options make it easier to dump selected records from adatabase. I used them to dump the printer name database by node name forcopying entries between lonthr and lovthr.

* I added a preview hotkey to the banner, filler and paste list windows inthe pagination page display. This makes it easier to select the correct item.

* I changed the banner and filler list windows in the pagination pagedisplay to include as much of the descriptive name as possible insteadof just showing the banner or filler name. This makes it easier to selectthe correct banner or filler.

* I added configuration parameters for legal ads to specify the cut rulesbefore and after them and the minimum flow depth. The fields values defaultto the ones for line ads. Longmont wants at least 3" before flowing legal ads.One of the first days, ClassPag divided a legal ad into seven parts over a largedisplay ad. The person who purchased the legal ad then had to cut it out andpaste it together.

* When you select a print option that prints pages as it makes them,the View/Print/Done popup shows a message that says that the pages are queuedfor printing.

* I changed the print dialog to show the print time in the message insteadof opening a second popup with the time. This makes one less annoyingwindow to close when you print pages.

* I changed the scanps.sh preflight script to check that the badads, displayadsand missingads directories exist. The "cmd.txt" script that it generatesdepends on moving files into those directories, so if they are missing,it will end up trashing all of the ads.

* I changed the import copy formula to do a chmod +rw after copying files.

* I changed the rundate to default to the later of the sort file date,the cardex date, and the current date. When you copy from an import area,ClassPag picks up the date field of that area, which should be empty.ClassPag used to default to the current date so you always had to change it,but now it should pick up the correct date automatically.I also set the first page to default to 1.It was coming in empty for the same reason.

* I changed ClassPag to avoid placing fillers after parts of segmented legalads. It can confuse readers to see a filler below a segmented legal ad,even at the bottom of a column.

* I changed the "Change Leading" command to reflow the line ads if you had themflowed when you changed the leading. This saves having to reflow each time youchange the leading.

* I changed the ad movement rules so that under X, you can only move ads bydragging them. Clicking on ads only sets the current ad, and the secondclick no longer tries to move an ad. This makes it much easier to viewad information.

* I fixed ClassPag so the option to place class headers over display ads workswhen you paginate front-to-back. It used to work only for back-to-front.Making it work front-to-back required tracking the current classificationand the classification of the top display ad in order to keep enough spacefree to place the class header.

* I added an option in the "Set Class Colors" setup window to copy the colorsfrom another product. This made it easier to copy the colors from product 60into the other products.

* I changed where ClassPag places fillers so if the bottom of a column hasa display ad with a class header, ClassPag now places the filler over theclass header instead of under it.

* I changed the "Load Banner" option in the "View Ad Directories" windowso that it tells ClassPag to reload the banner database.

* I fixed a test that prevented you from placing a banner over an adif there would not be enough room to place class headers over the ad.

* I changed ClassPag so if you disable "Justify Last Page", and a column hasjust a display ad and a class header, ClassPag places the reservation fillerabove the header instead of below it. Otherwise, ClassPag still pushes allliners and class headers to the top and inserts the filler in the middle.

* I added a mail checking feature into ClassPag because the SCO print queuemanager sends mail when print jobs fail. ClassPag remembers the sizeof your mail file in /usr/spool/mail and checks it when you run some commands.If the size increases, ClassPag prompts you to read mail.ClassPag uses "scomail" on X, and "mail" otherwise.

* I changed ClassPag to mark that you need to rebuild the folios if you changeany entries in the Book Sizes database.

* I added additional checks that dates in the headers of the sort file,the merged sort file and the cardex file all match (when you have theconfiguration parameter to check them enabled).

* I added an option to the Ads->DisplayAds window to hide class headers.This makes it easier to locate the display ads.

* I added an option to the lock database window to remove entriesfor inactive processes. This makes it easier to purge old records.

* I added a sort by date option to the directory list in the import window.This makes it easier to find the most recent work areas.

* I changed the setup for display fillers, agate fillers and banner imagesto scan for color in the EPS files.

* I changed the pagination formula to reload the folios and reinitialize itsformula variables each time you enter. It used to reload them only when youchanged the product or edition and would not pick up the changes when youcopied a work area with the same product and edition into your area.

* I added a -fast option to the loadtape.sh script to skip the step thatruns inscrall.sh on all of the work areas. This option is safe as longas the formats for databases in the work files remain the same and savesrebuilding about 250 work areas. Most sites will have only a fraction ofthat number of work areas.

* I added the user name to the ClassPag slug line.

NOTE: This version has 5457 lines of changes from the previous version,not including some scripts only in the new version.

12/8/98

Versions 1.108 to 1.113:

ClassPag has a new "Scatter Fillers in Column" configuration parameterto place fillers higher on the page. ClassPag normally places fillersat the bottom of columns. If you enable this parameter, ClassPag scansup the column and places fillers above classification headers.It tries to avoid placing two fillers directly on top of each other orplacing fillers at the bottoms of adjacent columns.

If a square-off banner has multiple versions of the banner for the same width,you can now change the version by unplacing the one that ClassPag positionedand pasting in a different one. The previous version of ClassPag onlyrecognized one version of each width, and you had to make sure that onlyone version of each size had the "Active" field set to "Y" or else if youplaced a banner with the mouse, ClassPag might still place its banner, andthe square-off would end up with two banners.

In Setup->Banners, you can use the Enable and Disable Square-Off hot keys ontype "P" (Primary) and "B" (Bottom) banners in addition to type"R" (Square-off Request) banners.

In Setup->Banners, the banner images window now has a Toggle Active Flaghot key to change the value of the "Active" flag.

A problem with square-offs should be fixed where a service directory on theleft side of the page would sometimes not pack well.

You can now set different colors for conflicts to differentiate missing-epsconflict, badly-sized-eps conflicts, zone conflicts, color conflicts andclassification conflicts.In Setup->SetAdColors, you can assign the new context valuesEPSCONF for missing-eps conflicts,SIZECONF for badly-sized-eps conflicts,ZONECONF for zone conflicts, andCOLORCONF for color conflicts.If you do not have entries set, the colors default to the values for theCONFLICT context, which includes all other conflicts including classificationconflicts.

On the page preview display, the ad status area on the upper right of thescreen now shows the current ad number and its size. It used to show justthe ad number.

On the page preview display, ClassPag can switch to a smaller font to fitmore information into the ad boxes.

The setup script is smarter about setting a font size if the WebTermXcommand line does not specify a value for XFontSize.

The page preview display now shows the colors each page next to the pagenumber. The display shows the first letter of the color name.The display shows both the colors allowed on the page and the colors ofthe ads placed on the page. If an ad has a color that is not allowed onthe page, the color shows in reverse. The "Page Information" windowshows a slash (/) before color names allowed on a page but not used byany ads and a star (*) before color names used by ads but not allowed onthe page.

ClassPag has new "Show Requested Colors", "Show Colors of Placed Ads" and"Invert if Conflict" configuration parameters to control the color statusarea next to the page number. You can change the defaults to show only theallowed colors or only the colors of ads you have placed.You can also set whether you want to show colors that are used on a pagebut not allowed in reverse video.

When you change the allowed colors from the page preview window usingCmd->Pages...->ModifyTheColor, the "Colors" form no longer switches to thestatus window and the changes happen immediately instead of waiting untilyou repaginate.

ClassPag has a new "Interface has .idx files" configuration parameterto copy idx files from interface directories for sites that placepre-built databases in their import areas.

ClassPag has a new "Sort File Pts/Inch" configuration parameter for readinginterface files that use a measure different from the 7227 centi-points perinch value that AdMax uses.

ClassPag has a new "Width of Ad Borders in Pixels" and "Width of Page Bordersin Pixels" configuration parameters to set the number of pixels to draw theborders around ads and pages. You can decrease the width for a more "precise"look.

ClassPag has a new "Minimum Drag Distance in Pixels" configuration parameterto control the number of pixels that you must move the mouse over an ad withthe button down before ClassPag starts moving the ad. If you have problemswith accidentally moving ads when you only want to click on them, you canincrease this value to allow yourself to jiggle the mouse during clicks.

ClassPag has a new "Check for New Mail" configuration parameter to controlwhether it should check for mail when you run commands. If you print usingunix print queues (as opposed to using ftp or nfs to copy files to a spoolfolder on a RIP), the unix queue manager will send email when print jobs fail.If you enable this option, ClassPag will open a dialog box when it sees thatyou have new mail.

ClassPag has new configuration parameters to set additional bottom and leftadjustments for inverted pages when printing inverted tab spreads.

In Setup for Printer Names, Paper Sizes and Spreads, you now get a chanceto change the printer, paper or spread name if you try to create a new entryand the name you selected already exists. This makes it easier to add newentries.

In Setup for Printer Names, ClassPag has a new hot key to copy entries forone node name to another node name. This makes it easier to setup ClassPagon a new system.

2/3/99

Version 1.115:

EPS output now works (including a tiff preview) This should help papers that need to import slop pages into Quark.

Classification reordering You can now reorder classifications during a pagination session by selecting Command->Ads->PositionAfter (or PositionBefore) and then dragging the classification header. You can now edit the classification database during a pagination session with Command->Ads->ModifyClassifications.

Parameters to set limits on the maximum and minimum scaling for EPS files This can prevent ClassPag from messing up bitmaps by attempting to rescale an ad that is just slightly too small or large.

Parameters to set minimum depth limits of segmented ads You can now set the minimum amount in the first and last columns plus an alternate minimum amount for the last column when it is on a different page.

Segmented ad justification ClassPag has new ad modifiers to indicate which segments end with hard breaks. ClassPag has a configuration option to add leading between segments that adds the most space between ads, less space after segments with hard breaks, and still less space after other segments. ClassPag has a configuration option to stretch columns of segmented ads if it can not place leading between any segments. ClassPag has a configuration option to place cut rules at the bottoms of columns even if the columns ends in the middle of a segmented ad.

Level first page now works The configuration option to square off the first page now works for both back-to-front and front-to-back pagination. In addition, you can now square off the last page (for a slop page at the end) or all pages (to distribute the ads over all of the pages).

Layout requests ClassPag now supports two-letter Layout position requests from AdMax: BP, TP, CT, IP, OP, LS, RS, TL, TR, BL, BR, MP, MC and PH. It treats CT (Cartouche) as TP, PH (Position Header) as TR, and does not center ads on half-columns with MP or MC, but otherwise handles the requests. IP (outside position), OP (inside position) and MP (middle position) are new requests. The ClassPag internals would support additional requests like outside top if AdMax would have a way to pass them. (While we were there, IBD had a make-good with an ad that requested an outside top position because they could enter the request only as outside or top but not as both at once.)

Multi-column classification headers ClassPag now supports multi-column class headers. When it needs to place a class header over an ad, it will try to place a header with the same width of the ad. Otherwise, it will revert to repeating one-column class headers as before. ClassPag supports several class headers per classification, but AdMax can currently send only one.

Banners image segments with variable EPS names A banner image segment can now have the type "F" which means that the text is an expression that should produce a file name. This allows ClassPag to pick up items like crossword puzzles that are saved ahead of time with a file name that depends on the run date, for example, as "/comics/nyt-01-23". This might help Escondido with the puzzles and comics on their classified pages, but they would need to scan those items in more carefully.

Banner page numbers The new CPagGetIncBookName and CPagGetIncBookPage formulas allow composition formats to compose a page number different from the page number of the banner. This allows you to make jump blocks. The formulas expect the banner name in "v10" and the page offset in "v11". The page offset may be negative. Escondido and Longmont both want to use jump blocks.

Banner text copying From the banner text window, you can now copy a banner text entry from any other one in the system. This makes it easier to start a new banner.

Zero size ad warning ClassPag has a configuration option to show a popup if any ads have a zero size. With AdMax at IBD, it indicates an incorrectly entered ad.

Rebuild class areas popup ClassPag has a configuration option to rebuild the classification areas without asking after applying a saved classification setup. This eliminates an popup message.

OPI filters on printers The printer database can now run the output PostScript file through a filter. At Escondido, the filter runs the OPI includer so ghostscript previews can show the high res versions of ads.

Unflow popup on delete key When you press the delete key in the page preview, ClassPag now unpositions the ad without asking if you want to unflow the line ads.

4/10/99

Version 1.133:

1)

For IBD, the "Position Before" and "Position After" position modifiers nowwork on newswire (i.e. segmented) ads. They change the sort key of all ofthe parts of the ad. Also, they create sort key either larger or smallerthan the target ad instead of always copying its sort key.

I increased the length of the agate ad sort key field from 4 characters to 8.This requires rebuilding all of the agate ad databases in all work areas.The "loadtape.sh" ClassPag script to install the update should do thisautomatically. In addition, the "runcpag.sh" script will double check eachtime it runs.

The second line of the ad status area at the upper right of the pagedisplay window now shows the sort key of the current ad if there is room.

When ClassPag changes the sort key, it tries to make a new key with theformat <4 character new key> + "/" + <first 3 characters of original key>.When you move an ad, if ClassPag will try to build a new key starting withthe saved original values. This lets you move ads back and forth withoutlosing complete track of the original keys.

If you move a segmented ad and the classification has a non-zero look-ahead,ClassPag will prompt you if it should change the value to 0. If you leavethe look-ahead enabled for the class, changes to the sort key will probablyhave no effect.

2)

For Waterloo (and other sites that will enter legal ads in ClassPag),the sort file header has two additional fields with the merged date andedition. My program to merge sort files enters header information fromthe secondary sort file into these fields. The "mapclass" formula forlegal ad entry checks these fields to tell the difference between a freshsort file and a sort file with legal ads merged in.

Also, on the legal ad entry form in the "mapclass" formula, type 8 is aclass header with an external EPS file and type 9 is a class header withinternal text.

3)

For TMM (and other sites that want to place multi-column class headersbut have a front-end that does not support them), the Position->AddHeaderscommand looks for a banner or display filler with<the name of the classification> + "-" + <the width of the ad>.The width may be one or two digits; ClassPag will try with and without aleading 0 if the width is less than 10. The screen shot below shows anexample header for class "9810". I used type "P" (for Primary),entered the class in the "Class" field (although nothing checks it for now),and set the "Default Count" to "0" so ClassPag does not try to place it.

For High Point, I fixed a bug where print all pages tiled would print anextra copy of the last page.

5)

For High Point, I fixed a bug where paginating back to front would sometimesstart a segmented ad when there was not enough room left at the top of acolumn to satisfy the minimum length specified in the configuration file.

6)

For Escondido, I fixed (for the last time, I hope) a bug in the square-offcalculations that would make their square-offs with borders fail of thesquare-off was on the leftmost edge of page 1.

7)

For Clarin, I reorganized the sort file format to make room for a colorfield for line ads and class headers.

Sort file records that could contain a target ad now have a 10 characterfield instead of a 6 character field.

A10 Target 108-117 TargetAd

Most sort file lines can have a two-character color code.Use C, M, Y, CM and MY for various permutations of Cyan, Magentaand Yellow and FL for process color.This is the only way to specify color for internal ads.For ads with external EPS files, the values stored within Document StructuringComments takes precedence.

A2 118-119 ColorCode

The special ad number of "*TEXTHDR*" defines class header records with a fieldlayout similar to that for line ads. If a class header contains color orother information that does not exist in the standard class header recordformats, send a group header record first to define the classification andthen send a "*TEXTHDR*" record to define the text of the header itself.

8)

For Clarin, the "Column Header Style" of "COPYALL" places "COPY" class headersat the top of every column, even if the copy header would be directly above thenormal header for its class.

5/99

New features through version 1.149

* Improved the color separation code.It should now support pages with both color line ads created by SCSComposition and color display ads that use Level 2 PostScript.Doing color separation on the RIP instead of in software is alwaysmore efficient and produces better results. Can we try this?

* Added a PostScript debugging option to the page output.The option displays each ad number in a scrolling window as you viewa page to make it easier to locate ads with bad eps files.

* Created unix print queues for the Lexmark and HP 8100 printers.I also moved the queues from the system disk to the user diskwhich is much larger.

* Increased the length of classification names from 6 to 8 characters.This required changing the structure of 33 databases, 14 reportfiles, and a number of windows. I also changed the interfaceprogram to support the longer names.

* Added a second extension to try when copying product information.This allows the copy to work with both upper and lower case dumpfile names, although I would prefer the dump files in lower caseas 'clasifld.txt' and 'clasifsu.txt'.

* Added a 'revisando clasificaciones' message during the import stepwhen ClassPag checks that the classification database is consistent.

* Added separate site definable colors for ads in the wrong column andfor ads in the wrong page for their classification.This should make it easier to place the display ads correctly.

* Added more information to the pagination statistics report.It now shows the node and more ad totals.

* Changed the colors of the window for the interface program.Instead of black on white, it is now black, blue and red on gray.

* Changed the 'Paginating...' message when ClassPag is loading ads atthe start of a pagination session to 'Loading ads...'.

* Added the 'Multi-paginate' command into the horizontal menu on thepagination statistics screen.

* Removed a dialog message when ClassPag creates folios for the firsttime in a new work area.

* Changed the import procedure so it stores the import informationthe first time in a new work area.

* Translated the text in the Box, Page and News Information windowsto Spanish.

* Changed the ClassPag login script to change the interrupt fromDelete to Control-C.

* Added better warning messages to the Clarin interface program that readsthe dump files.It now shows the line from the dump and sometimes an arrow pointing tothe position of the error in the line.

* Changed the Clarin interface program to use the four-letter classificationname abbreviations in the dump file.It prints a warning if two classifications in the same rubro above thesame abbreviation.

* Added a 'lineanull' format to the SCS composition formats database.I had been using format called 'linea' which added some extraleading to each add. The lineanull format is empty.

* Improved the positioning of display ads to avoid placing them beforethe line ads for their classification.

* Fixed a test with the positioning of segmented ads.If a segmented ad was 4 cm and the configuration parameters for thesmallest first and last parts were 2 cm and a column had 5 cm, ClassPagwould leave the column open. It now places 2 cm of the ad in the columnand another 2 cm in the next column.

* Fixed an error message in the fixlogos.sh conversion script runduring the interface step if there are no new logos to convert.

* Added a check to avoid placing TIFF, JPEG and GIF files in the page output.

* I added a configuration parameter to set the maximum height of a stackof display ads. This ensures that ClassPag leaves enough room to placeclass headers at the tops of columns.

* I made the display ad positioning smarter so ClassPag should leaveenough room above the first column of the classification for theclass header and at least one line ad.

* I improved the display ad dummying. When ClassPag dummies display ads,it now checks the amount of line ads in the classification. If theclassification has enough line ads to fill the page, ClassPag willtry to obey the requested pyramid style for the page.

* I added an option to force the line ad look-ahead to preserve theposition of the last ad in each classification. The last ad in eachclassification has a thicker rule than the other ads. I had to disablethe line ad column optimization when you were here for training in orderto keep the ad with the thicker rule last. With this change, I can enablethe line ad column optimization which will allow ClassPag to pack thecolumns better.

* I added a configuration option to run the interface proceduresautomatically (which suppresses the dialog about running mapclass.sh)and another option to run the read procedure automatically (whicheliminates the need to select the option "Leer texto de avisos").

* I extended the "Position Before" and "Position After" ad draggingcommands so they can change the ad type and classification.This makes it easier to place a one-column display ad between a class headerand the first line ad. I also added configuration parameters to disablethe ability to change the ad type or classification.

* I added a numeric auto-save configuration parameter. The value is thenumber of ad positioning commands between saves. ClassPag keeps a counterof the number of ads you move and whenever the number reaches the auto-savevalue, ClassPag writes the position of every ad to its ad position database.

* I added a posting directory option for printing pages. On any ClassPagprinter, you can have ClassPag post the pages to a posting directoryfor that printer plus a subdirectory based on the date and editioninformation plus a file name with the page number. This is the first halfof the procedure to split an edition among several people. I am still needto write the procedures to pair and print pages from the posting directory.

* I removed the borders from the page display. This makes the pages aboutten percent larger.

* I fixed a problem with line ad formatting where fractions used the"section" character (a curly "S" with a circle in the middle) insteadof a slash. The FranklinGothic fonts that you sent had a non-standardencoding of the slash character, but I found a work-around for it.

* I made the Clarin interface procedures copy the date of the text fromthe <FR0> line. This will allow ClassPag to display a warning ifsomeone imports an old dump file.

* I wrote a program to generate SCS Composition font metrics from AFM filesto replace the Mac Font Creator program.

* I added an option in the "View Ad Directories" window to preview a PS font.

* Improved the procedures for making a ClassPag distribution kitto avoid including new files for Clarin test data.

* Show the dates of the clasifld.txt files in the import copy window.

* Translated the ad importing count-down window into Spanish.

* Added a command to flow the next classification.

* The command to pair and print posted EPS pages no longer prompts for aposting directory if there is only one.

* Improved the ad spacing.The test to fill the bottom column included space for thecolumn header, even though the column headers are needed only atthe top of the page. This created extra space in some columns.

* The Change Ad Type command no longer locks the page whenyou convert a line ad to a display ad.

* The window that shows ads with missing or incorrectly sizedEPS images now includes the page number of the ad.This makes it easier to locate the ads.

* Created an option to select only pages with no missing ads.This makes it easier to locate and print just the complete pages.

* Added a configuration parameter to prevent moving parts of segmented ads.This should prevent users from scrambling the parts.

* Improved line ad conflict checking.If you drag a line ad out of its classification, it now shows as a conflict.

* Changed the "sort file has dump date" configuration parameter from Y to N.This makes ClassPag do more checking if you entera run date different from the date of the dump files.

* Changed the setup script to add the node name to the prompt.This makes it less confusing if you have windows open frommore than one server at once.

* Locking by columns.I added commands to save, lock and free columns by either the column ofthe current ad or by a range of columns. "Saved" columns remember theirads but allow new ads to flow into them. "Locked" columns do not allowany additional ads.

* Freeing ads by classification.I added commands to free all ads from the classification of the currentad to the front or back of the paper.

* Dividing columns.I added a command to equalize the ads on a range of columns.

* Procedures to create a classification square-off. a) Create a column-save-lock on the range of columns you wish to square-off. b) Use the free-by-classification command to free any ads from the next rubro in the last column. c) Use the divide-column command to square-off the end of the ads. d) Position a display ad or filler under the squared-off line ads. e) Reflow.

* Pagination by classification.I added a command to select the next unselected classification.This makes it easier to paginate by classification.

* Queued classifications.When you paginate by classification, is it too easy to select aclassification from another session by mistake.I added the ability to make classifications as "queued".ClassPag does not flow ads in queued classifications.I added a command to select the next queued classification.

* Safe procedures to paginate by classification. a) Mark the classifications that you wish to paginate as "queued". b) Unselect all of the other classifications. c) Use the select-next-queued-classification command repeatedly until it no longer finds additional queued classifications.

* Improved control over leading.ClassPag used to have a fixed amount of leading based on the ad type.I added support for setting leading between different types of ads.You can now specify the leading between combinations of column headers,classification headers, line ads and display ads.This allows you to set 5.6 points of leading from column headers to classheaders but only 2 points of leading between two class headers.

* Added a default spread leading value.The leading between line ads must be 0 for Clarin because Pablo buildsall of the leading into the EPS of the line ads when he adds the cut-rules.ClassPag can not add the cut-rules automatically because they do not allhave the same width rules. With a leading of 0, nothing will happen if youtry increasing the leading percentage in order to increase the size of theedition. ClassPag uses the new default leading value when you increase theleading more than 100%.

* Posting classification pages.I added a procedure to enter the classification page ranges to a shareddatabase in the same directory as the shared EPS page posting directory.I also added a configuration parameter that tells ClassPag that when itmakes the index, it should read page numbers from the shared databaseinstead of the one in the current work area.

* New method for creating complicated classification indices.I wrote a procedure to generate the Clarin real estate index.The new method allows you to create an index with page numbers for eachclassification with only a minimal amount of SCS Composition code.An "Index Style" database contains Composition templates.An "Index Line" database has an entry for each line of the index with aclassification and an index style.The "Banner Text" database contains a set of index lines for a banner ad.

ClassPag treats the index as a "banner" ad.Banner ads are now have the structureBanner -> Banner Image -> Banner Text -> Index LineI made a Banner element called "Indice"."Indice" has a Banner Image called "a8"."a8" has three Banner Text entries, "1", "2" and "3"."1" places the tapainmu.eps file with the fixed part of the heading and map."2" contains expression interpreter code that calculates the EPS for thedate in the header."3" contains a list of Index Lines.

The Index Lines contain the rules to draw each class name and page number.Each line of the index has a "titlepage" entry to generate the class nameand first page number, a "page" entry to generate the second page number,a "firstpage" entry to generate the third page number, and a "page" entryto generate the fourth page number.There are also entries for inserting the eps headings and the spaces whenthe first letter changes.

The Clarin index requires several thousand "Index Line" entries.I wrote a "Load barrios file" command in the Index Line F12 command windowthat creates the entries from a dump that Pablo made called "tablabar.txt".

a) Each session must run Misc -> Post Class Results to publish their pages in the posting area.b) The session with the index must run Misc -> Edit Banner Text -> F12 -> Recompose All Ads to generate the EPS of the index in their work area.

* Banner debugging option.I added a debugging option to view the composition codes generated by thebanner expressions and the composition output. This makes it easier tolocate problems in the rules to generate the index.

* Faster selection of tab pages to print.When you exit the window to select the pages to print from the postingdirectory, if you have selected only one page of a pair, ClassPag willask if you want to select the other page also.

* Color comments for line ads.I changed the ClassPag PostScript output to include colors used by lineads in the color list in the PostScript Document Structuring Comments.

* Color information in posted pages.ClassPag now reads and writes PostScript Document Structuring Comments forcolor usage when you print pages from the posting directory. This providesClassPag with the information it needs to do software color separations.

* Reformatted the configuration screens.I reformatted the screens of the product configuration databases so all ofthe headings have the same format. This makes it easier to find thedifferent screens.

* Configuring a Harlequin RIP for registration marks.On the RIP, I copied the "cropmarks" file from the"C:\ECRM RIP 4.5\SW\Page Features\Examples" directory into the"C:\ECRM RIP 4.5\SW" directory. Then for each of the page setups forClassPag, I checked the "features" box in the lower left, and then openedthe "Additional Features" drop-down list and selected "crop marks".

* Resize ads with the mouse.I made a command to resize ads with the mouse, but it is tricky to use.

* Manual placement of top-level class headers.I created a command to place top-level class headers manually.This will let you place rubro headers for rubros with no line ads.

* Improved the modem setup script.I improved the setmodem.sh script to recognize the higher baud rates onSCO Unix v5.0.5. I also changed the script to avoid opening a port thatanother process has open. This makes it less likely that it will breakthe Sentinel mirror if you give aim it at the Sentinel port instead of themodem port.

7/8/99

New features for version 1.151:

* New "Combine Cut Rules" configuration parameter to generate solidhorizontal cut rules between multi-column ads instead of drawing aseparate rule for each column. This was requested by the Clarin(and I think by some other sites also).

* New "Warn if external" configuration parameters for class headers andline ads to generate a warning during imports on external class headersand line ads and a new "Warn if internal" configuration parameter fordisplay ads to generate a warning during imports on internal display ads.These warnings can indicate problems with the dump files.Munster requested this to help locate problems in their VisionData dumps.

* Ability to scale line ads and display ads. You can use this to reducethe page count if you must make all of the ads fit and you can not reducethe leading any further. The configuration screens for line ads and displayads have new fields to set the default, minimum and maximum scale percentages.The pagination setup screen, which I renamed from "Main Menu" to "EditionParameters", now contains fields to set the scale percentage for line anddisplay ads. It does not let you enter values outside the range specifiedin the configuration database. The initial percentage fields on the rightare read-only and show the default percentage from the configuration database.ClassPag currently does not scale class headers or banners (to keep bitmappedgraphics from getting strange effects). It also does not scale fillers(since they have no effect on the page count). This was requested bythe Clarin.

I also changed this screen so it is in EDIT mode instead of ENTRY modewhich allows you to use the arrow keys.

* New "Center horizontally" and "Center vertically" configuration parametersto control the positioning of EPS images that do not match their spacereservations. These fields only have an effect if the EPS image does notmatch the reservation and other configuration parameters prevent ClassPagfrom shrinking or expanding the EPS image as required. By default, ClassPagaligns ad images at the upper left of their reservations. Portland requestedthis in order to center display ads vertically in columns.

* New "Add Font Comments" paper option to generate PostScript DocumentStructuring Comments that list all of the fonts listed in comments byEPS files on the page. ClassPag reads fonts comments at both the top andbottom of EPS files, but writes all of its font comments at the topfor the benefit of programs that do not read comments at the end.Gathering the font list requires opening all of the EPS files on the pagean extra time, so this option adds a few seconds to the time to print eachpage, and you should use it only when required, which is probably onlywhen creating EPS files at sites that do not keep all of their fonts ontheir RIP. Times Mirror will need this option to print ClassPag EPS filesfrom Quark.

* New "PS run OK" printer option to mark printers that accept thePostScript "run" command. The "run" command is like a source level fileinclude. ClassPag uses it when you set the paper "PS Type" field to "FPS".Pages made this way come up much faster in ghostview but will not print.ClassPag now knows that they will not print and does not display a "Print"option when you view them unless you have set the "PS run OK" flag for theprinter. You should only need this if the print queue sends the page toghostscript to create a PDF or a bitmapped image.

* I fixed the default color separation prolog (when you use "T" or "YES"in the paper database "Create Separations" field) to work better withSCS Composition and to handle the "sethsbcolor" operator.For SCS Composition, I changed the prolog to use sequences like "bind def"directly instead of using user-defined operators like "B" to avoid conflictswith the SCS Composition prolog.The "sethsbcolor" change fixes a problem where the separation code woulddrop out colors set through the "sethsbcolor" operator.

* The print command in the printer database can now contain an expression,and the second line of the command is now a blob to allow longer printercommand lines. If the first character of the print command is a quote,ClassPag runs the command through the expression interpreter with the samevariables available as for folios. For example, the print command "pstoepsf.sh -pnmraw -rev -keep cpag" // RunDate // "-E" // EditionId // "-Z" // ZoneId // "-" // BookName // BookPageNumber // ".epsf"creates an eps file with the rundate, edition number, zone number, sectionand page number in the file name. Longmont requested this for bettercontrol over the EPS files for partial pages that they send to GoodNews.

* The banner setup now checks for banners without default banner images.ClassPag ignores some types of banners when they do not have default images,and this warning should make it easier to track down bad banners.

* The display filler and line filler setup windows now have a hotkey tocross-check that there are no display fillers and line fillers with thesame name. If you position a display filler on a page and if you havea line filler with the same ad number, ClassPag can confuse the two fillers,and if it thinks that a page has a locked line filler, it thinks that youlocked the line ads on the page. This should make it easier to track downthe duplicate fillers.

* The formula to rebuild the banners now shows the names of the bannersas it builds them. Since the rebuild can sometimes take close to a minute,this gives you something to watch and lets you see that it is working.

* The ClassPag import now prints a warning on empty cardex files.

Other items:

* Most (probably all sites) will need a new version of the "spice" executable.A version from the "spicedvl" mace area on or after June 23 should work.The one in /mip486/u/scs/tools/bin/spice should be OK.I had to switch to a newer version of "compform", and as a result,the version of "spice" in the standard distribution can no longerread ClassPag formula files.

* I made a new "cpagh" kit with Jeff's indexed versions of the manuals.

7/10/99

New features for version 1.152:

* The minimum and maximum agate and display ad percentage now default to 100instead of 1 and 999 when they are empty. This will prevent people fromaccidentally scaling ads until they have set the scale limits in theconfiguration database.

* ClassPag now supports 4 line cardex files made by Layout-8000 v7.5 andhigher (in addition to the older 3 line cardex format). ClassPag checksthe lines-per-record field in the cardex header so it should be able toread future versions of the cardex as well. With a four line cardex,ClassPag reads the position request from columns 17-20 of the fourth line.ClassPag has supported the requests since Feb 99, but before this change,it could only read them from the positiion request field of the sort file.ClassPag accepts the requests BP (Bottom), TP (Top), CT (Cartouche),IP (Inside Edge), OP (Outer Edge), LS (Left Side), RS (Right Side),TL (Top Left), TR (Top Right), BL (Bottom Left), BR (Bottom Right),MP (Middle), MC (Middle Center) and PH (Header), although it treatsCT (Cartouche) as TP, PH (Position Header) as TR, and does not centerads on half-columns with MP or MC.

* ClassPag handles left and right side requests better. The dummying routineswould sometimes mirror the page if that would improve the dummying style.For example, they could mirror a page with pyramid right style but a singlead that requested the left side. The dummying routines no longer mirrorpages that have ads with left or right side requests.

* ClassPag handles middle requests and inner and outer edge requests better.All of the dummying routines now support these requests.

* The loaddb.sh script (which rebuilds the database after installing anew version of ClassPag) and the update.sh script (which rebuilds a singledatabase from a transaction file) run the "update" program in single usermode. This makes them run about twice as fast.

* The "mapclass" formula used by sites that send dump files in text nowopens its work databases in single user mode. This should make it runa little faster.

* The classification scan that updates the area of ads in each classificationnow shows messages before each step instead of a single "ScanningClassifications..." message.

* The ImportAds->ReadClassPagFiles command that builds work databases fromthe sort and eps interface files now opens the work files in single user mode.(This change is in the previous version but not documented.) This makes itrun about 30% faster under unix. Under NT, this reduces the time from severalminutes to a few seconds, about a 100 times improvement, and brings the timecloser to the time on unix.

* The maintenance scripts update.sh and updprod.sh now both unload thedatabase before doing anything and save several versions of transactions.This makes it easier to recover from problems.

* ClassPag has new commands in the position list to move segmented ads asa unit. The segmented ads may be more than one column, but the commandsrequire that the ads fit entirely on a page.The Command->Columns... window has three new options."Lock ad in column" keeps the current ad from unflowing and keeps other adsfrom flowing into its columns."Save ad in column" keeps the current ad from unflowing but allows other adsto flow into its columns."Free ad in columns" clears the "lock" or "save" flag for the current ad andallows it to unflow.

The Command->Position... windows has a new option."Position all segments" tells ClassPag that the next drag should move all ofthe segments, not just the one that you drag.

To move a segmented ad, you mustclick on any segment and then select "Command->Columns...->Save ad in column"to keep the ad from unflowing, thenclick on "Command->Position..." and then one of the four options"Position next on top", "Position next on bot", "Position at top edge" or"Position at bot edge" (depending on where you want to place the ad), and thenclick on "Command->Position...->Position all segments", and thendrag any segment of the ad to the column where you want to place it.The two position-on-top commands flow the ad forward from the column youselect, while the two position-on-bottom commands flow the ad backwards.

* When ClassPag flows segmented ads, it knows not to flow ads around otherads that you have placed manually. For example, if you place a segmented thattakes half of column 2, ClassPag will avoid flowing a multi-column ad fromcolumn 1 through columns 2 and 3.

* The legal and segmented ad configuration screen has the new fields"Max Normal Leading" and "Max Paragraph Leading" to control the amountof space between segments when the "Add Leading Between Segs" configurationparameter is enabled. When ClassPag adds space between segments in orderto justify a column, it will not separate normal segments by more than the"Max Normal Leading" and paragraph break segments by more than the"Max Paragraph Leading". The values for these fields should be a few points,and the paragraph limit should be at least the normal limit.These parameters allow ClassPag to justify almost complete columns ofsegmented ads without excessively stretching partial columns.

* ClassPag could sometimes make the final column of the last segmented adin a classification too small.

* The Command->Columns... commands that require ranges now allow you tomake the first and last column of the range the same.

* When rebuilding banners, the banner names show at the bottom of the screenso dialog windows do not cover them.

* The spread database has a new "Pair as Tab Spreads" value of "ROTPAIR"that works like "INVPAIR" except that it inverts spreads where the evennumbered page is smaller (while "INVPAIR" inverts spreads where the oddnumbered page is smaller).

* ClassPag no longer removes the ends of line ads if you have clippingregions enabled for internal ads and then set "Agate Scale Percentage"edition parameter field to a value under 100%.

* The WindowsNT version now stamps a DEMO message on output pages.

* The wtxcpag.bat script starts WindowsNT ClassPag with WebTermX.

7/22/99

Changes in version 1.155:

* The interface program accepts the new command COLHDR for setting thetext on the top-of-column headers and an extended version of the MARCAcommand for setting the text of the brand-name headers in the autosection. The Clarin dumps now have full control over the formatting ofall of the headers, either by sending the text or naming an EPS file.

* ClassPag should now place class headers over all columns of display ads.It would sometimes place a header only over the first column.

* ClassPag should now be smarter about not placing display ads before lineads. It did not account for the height of the top-of-column class headerwhen calculating how much room it needed to leave free for line ads beforeplacing display ads.

* ClassPag can now draw thicker vertical rules between ads and news areas(marked by page reservations). ClassPag writes a thick rule if thereservation has no name (which includes the ones that ClassPag createsautomatically) or has a name that starts with a space or a dash (-).ClassPag has a new configuration field "Thickness if Touches News"/"Grosor si toca noticias" to set the rule width on the screen"Vertical Spacing Specifications"/"Especificaciones de Espaciado Vertical".

* ClassPag has new configuration parameters to search for EPS files inupper case and lower case when it does not find a file with the originalname. This option causes ClassPag to do more work when importing dumpfiles and when printing pages, so you should only use it when necessary.It might be useful at sites that copy EPS files from PCs, where someversions of MSDOS and Windows create upper case names while otherscreate lower case names. The fields are"Check for EPS files in lower case"/"Probar avisos en minusculos"and "upper case"/"en mayusculos" on the screen"Ad Import Restrictions"/"Restricciones de Importacion de Avisos".ClassPag modifies only the file name and not the directory name.

* The procedure to print posted pages now supports the INVPAIR and ROTPAIRoptions to print pages inverted. It used to ignore these options andprint all pages normal.

* When you print posted pages, ClassPag no longer opens the "last minutecheck" window since the state of the pages in the current work areahas no effect on the posted EPS files.

* When the install script detects that copies of ClassPag are running,the "Kill those sessions now: [y/n/c] > " questions has a new "c" replyto continue without killing the other copies. This is useful for siteswith more than one ClassPag account (for example, /u/cpag for productionand /u/cpagtest for testing) when you need to install a new version inone account without logging out the users in the other account.

* Fixed a compile error in the Spanish version of the statisticshistory screen.

7/24/99

Changes in version 1.156:

* The interface program now accepts CHAPA lines (which have headings forrubros in other books). The syntax is </CHAPA/filename/K1/T#/adnumber>For example, the line </CHAPA/CHAPA05/K1/T50/CHAPA5-6>creates a CHAPA block called "CHAPA5-6" using the EPS file"/u/logo/CHAPA05.eps". If the EPS file is missing, the interface programwill write a text message. The interface ignores the width and height,since the width must be 1 and the EPS file sets the height.

* If the configuration parameter "Can Shift Last Ad"/"Poder Trasladar Aviso Último" is "N" and the last ad has a sort keywith at least three Z's, ClassPag will not shift the second-last adeither. When the CHAPA header comes into ClassPag as a line ad for thelast classification in the previous rubro, this prevents ClassPag fromshifting the real last ad.

* The new configuration screen "Folios and Banners"/"Folios y Carteles"has a field "Warn if banners not found during page number search"/"Avisar si carteles faltan durante busqueda para números de páginas"that can be set to "N" to suppress warnings about not finding page numberswhen you rebuild banners. This prevents lots of popup warnings if youhave many versions of jump blocks and rarely use them all.

* The final statistics screen after rebuilding banners is now in Spanish.

* I wrote formats for the jump banners. I called the banner entry "salto".It has an image called "continue" with fixed text.The other eight images form four pairs.The first image of each pair has the name"p" (for "pasa a") plus"c" (for going from clasifieds) or "s" (for going from the supplement) plus"pasa" (for a generic target), "diario" (for going to the main body),"suplemento" (for going to the supplement).The other image of each pair has an initial "v" (for "viene de") and thenthe name of the matching image.Each image shows the page number of its pair.In order to update the page numbers, you must paginate (if the ads arecurrently unflowed and you have moved a jump banner since the last timeyou paginated) and then run Command -> Misc ... -> Edit Banner Text ->F12 -> Rebuild All Ads for This Edition.

* ClassPag can now suppress up to two folios on each side of the pagedepending on the presence of ads at the top of the column. This allowsyou to define folios in the paginated area of the page that only coverfillers or empty space but not ads. The folio text screen now hastwo additional fields to set the first and last columns to scan.The configuration screen "Page Numbers"/"Números de Páginas" has a newfield "Place before ads"/"Poner antes avisos" that you can set to "N"to write the folios after the ads. This allows folios to cover ads.The configuration screen "Folios and Banners"/"Folios y Carteles" hassix new fields "Folios can cover/Class Headers/Agate Ads/Display Ads/Banners/Fillers/Leading"/"Folios pueden cubrir/Cabezales//Lineales/"Destacados/Carteles/Rellenos/Interlineado" that specify the typesof ads that folios can overwrite.

* I wrote the folio formats for the new style folios. I saved themin edition 2 so I did not have to delete the original folios.I built the both the left and right folios as four parts:the horizontal line with the page number and CLARIN*clasificadosinside rules, the vertical line with PAG in reverse that sits afterthe page number in the first line,the vertical line with the date inside rules, anda template that inserts /u/clarinlogo/mun.eps.I did not have the correct mun.eps so I used M0.eps, which is too large.

* When printing inverted pages, the configuration fields"Adjustments for Inverted Pages"/"Adjustes para Paginas Invertidas"now affect the registration marks in addition to the pages.This prevents inverted pages from running into the registration marks.

7/28/99

Changes in version 1.157:

* Display ads can request pages and positions.The CLSCD line has two additional fields for passing a page numberand a two-letter position request. The format is </CLSCD/seq/adnumber/width/depth/sort/page/position>For example, </CLSCD/21/0TopLeft/K2/T150/TopLeft//TL> </CLSCD/22/0TopRIght/K2/T150/TopRight//TR> </CLSCD/23/0Bottom/K2/T150/Bottom//BP> </CLSCD/24/0Page4/K2/T150/Page4/4A/> </CLSCD/25/0Page5Left/K2/T150/Page5/5A/LS>The page request can be up to four characters in the format specifiedin the ClassPag interfacing guide. The format is an optional "-" (minus sign)to request a page from the end, then digits for the page number,then one of the optional modifiers "L" (for liner-level request relative tothe classification of the ad), "G" (for a group-level request relative tothe classification that contains the classification of the ad),"R" (for a relative page number from the top-level classification) or"A" (for an absolute page number). The configuration database has a fieldfor the default modifier.The two-letter position requests below are the same as Layout-8000 v8. BP = bottom TP = top IP = inside edge OP = outside edge LS = left side RS = right side TL = top left TR = top right BL = bottom left BR = bottom right MP = middle of page

* Classifications can request starting on a new page.The CLSHD line has a new field to set the starting request.The format is </CLSHD/logo/class/left/right/startrequest>The possible values are T = start on the next page E = start on the next even page O = start on the next odd page C = start at the top of the next column F or empty = no requestFor example, to start class 1510 on a new page, use </CLSCAB/1510ALFA/1510/ALFA ROMEO> </COLHDR/G1510/1510/AUTOMOTORES/15 VENTA> <cf/FGBC/6.0/6.0/5.6><scs/el 0/cl 0/ql/bv/ql/ql/el 2.4> ... </RUB15A23/R15A23X8/K08/T201.5/CABEZALAUTOS> </CLSHD/G1510/1510/AUTOMOTORES/15 VENTA/T> </MARCA/ALFA ROMEO/1510ALFA/1510> <cf/FGBC/6.0/6.0/5.6> ... </CLSAD/4654/03595827>...

* ClassPag has a new conflict type to detect display ads with invalidsize reservations. When ClassPag imports ads, it automatically limitsthe ad widths and heights to a range that will fit on the paper.When ClassPag fixes the size of an ad, it writes a line to the log fileof the current work area. In addition, ClassPag now shows the ad asa conflict on the preview screen. The box information message andthe conflict report show the text "BAD_RES_SIZE"/"RES_TAMAÑO".The "Set Ad Colors"/"Fijar Colores Avisos" configuration databasehas a new "RESCONF" conflict type to set the color to show on the screen.The color defaults to the color of the "SIZECONF" conflict type.

* The interface program now numbers the real estate classes differently.It reserves classes 1 through 26 for zones and starts the first barrioas class 31. Each barrio now has a class number 30 larger than before.The renumbering requires rebuilding the index lines from a barrios file,but otherwise should cause no incompatibilities. This change makes itpossible to write the starting page of each zone in the index.

* The interface program now makes better names for the real estate classes.The top level window shows classes for just the 13 zones and calls them"ZA" through "ZM". The next level under the zones has the differentcategories, for example "ZAD1", "ZAC1", etc., and the next level hasthe barrios, for example "ZAD1:B.NORTE", "ZAD1:RECOLETA", etc.

* ClassPag now supports multiple index styles for testing.When you build an index from a barrio table file, ClassPag now asksfor a prefix for the style names. The prefix should be just one letter.You should have index styles with the prefix plus "initial" (the firststyle called), "initial1" (called to start the first group), "initial2"(called to start the second group), "final" (the last style called),"space" (called before the first letter changes), "titlepage" (calledto write the title and first page number), "page" (called to write thesecond and fourth page numbers), and "firstpage" (called to write thethird page number).

* Index line expressions now have access to the variable "LastClassTitle"which contains the title of the classification of the previous index linerecord. Expressions can compare this value to the current class titleto detect when the first letter of the titles changes, for example towrite the first letter in bold.

* When you rebuild the index banner, ClassPag now shows a message for thedifferent phases of building the EPS file. Also, ClassPag generatesthe index a little faster by caching information about the last classname and page number.

* The window to view the index lines of a banner text element has a newcommand to construct a barrio table file from the currently loaded classes.Since most classes do not have ads every day, the index generated fromthis file will have missing classes. This is only for testing the indexuntil Pablo can make a new version of the file.

* I made a new set of index styles with the prefix "b" for the new index.I still need an EPS of the new map to finish positioning the zone pagenumbers. Also, the map has room for only about 80 classifications oneach side, but there are about 200 barrios.

* The "Load"/"Cargar" command of the "View Ad Directories"/"Ver Avisos"window now supports loading all of the EPS files in a directory as aversions of a banner. This should make it easier to load groups ofpage elements (like jump blocks). Before, you either had to load themall as fillers or load them as banners one at a time.

* The "Remove"/"Eliminar" command of the "View Ad Directories"/"Ver Avisos"window now allows you to delete directories of posted pages. It checksthat the directory is contained in one of the posting directories in theprinter database.

* When a class header is near the top of the page, ClassPag will now pullthe header to the top instead of floating it. On a page with a class headerabove a display ad on the stack that grows from the top, ClassPag used tofloat the header between the display ad and the top of the column.It now places the header at the top of the column.

7/29/99

Changes in version 1.158:

* The configuration parameter "Repeat heading of parent class"/"Repetir cab. de padre" on the screen "Classified Heading Specifications"/"Especificaciones de Encabezados de Clasificaciones" has a new value "COL"which means to copy only column headers from parent classifications to theirsubclasifications. This eliminates the need to repeat the column headingsfor every subclassification in the dump files. Pablo had problems repeatingthe column header formats in classifications with only display ads."COL" differs from "COPY" by only taking headers marked as column headers."COPY" will take a normal header if the class does not have a column header.In the sort file, the page request "COPY" marks a header as a column header.

* The interface program no longer generates column headers before <RUB> lines.This should make the ordering of the class headers less restrictive.

* The interface program now writes headers only for classes withoutletter modifiers. This reduces the size of the sort file by about 10%and the size of the eps file by about 3%.

* The interface program stops parsing fields at a "<" (the characterthat starts a command sequence) to limit the damage done by commandsthat do not end correctly.

* The interface program allows all letters in the edition field of the"FR" date line. It used to think that the date line was invalid anddefault to the current date.

7/30/99

Changes in version 1.159:

* The "Side"/"Lado" field of the "Folio Text"/"Texto de folio" screen hasthe new values "FINALEVEN" and "FINALODD" to mark templates that ClassPagshould place last on the page. This allows you to draw an EPS file overthe page or folios.

* The "Type"/"Tipo" field of the "Folio Text"/"Texto de folio" screen hasthe new value "FILEEXPR". Items of the types "TEMPEVEN", "TEMPODD","FINALEVEN" and "FINALODD" can use the type "FILEEXPR" instead of "IMAGE"to specify that the file name is an expression in the text part of theentry instead of a fixed string in the "Image"/"Imágen" field.ClassPag evaluates the expression for each page just before printing thepage. The expression has access to the same variables as expressionsin the print command (PageNumber (absolute page number), SectionName,EditionId, EditionName, ZoneId, ZoneName, RunDate, EndingDate (all from theparameters screen), StartDate, EndDate (both from the folio page screen),BookName and BookPageNumber (both calculated from the secion size database)).The expression can return an empty string to avoid writing a template.For example, you can now set different templates depending on thepage number or section name.

* Folio templates (types "TEMPEVEN", "TEMPODD", "FINALEVEN" and "FINALODD")now check the first and last column fields.

* The configuration database has a new field "Folio Depth"/"Largo de folios"on the "Folios and Banners"/"Folios y Carteles" screen to set the maximumdepth to scan from the top of the page when checking whether a folio willcover ads.

* Before the folio template changes, you could always have used a compositionPC command to include EPS blocks, but this requires ClassPag to make a copyof the EPS in the folio database for each page. For example, the foliopagdatabase currently specifies creating folios for 100 pages and the folio.epsfile is about 150 KB. The Clarin logo is about 30 KB, so including it ina format instead of naming it as a template would increase the size of thefolio.eps file by 100 X 30 KB or 3 MB, about 20 times its current size.

* When a column had only display ads, ClassPag would cover them with theclass header of the next class of line ads instead of the class of thedisplay ads.

* ClassPag would sometimes not account for the depth of the column headerwhen calculating how high it could stack display ads. The result wouldbe a column of display ads before the first column with line ads, and thecolumn of display ads would have almost enough space for the class header.

* When ClassPag floats display ads, it now tries to keep them below thedisplay ad flow depth specified in the configuration database.

* When ClassPag squeezed a page to force the placement of a column header,it would sometimes not re-justify some of the columns on the left.

* When ClassPag generates PostScript output, it now calculates scalefactors as double precision real numbers instead of integers scaled by1000. Using integers never cause a problem in for full-size output becausethe value was exactly 1000. It did cause problems with proofs.For example, 14 inches is 1008 points. ClassPag would position the adsmore accurately than the folios, so the position of the folios could beoff by half a point. This could make it confusing to place the foliosbecause their position could differ depending on whether you createa full scale page or a letter-sized page. This should no longer happen.Also, ClassPag now positions page elements in points with 6 decimal placesinstead of 3.

* ClassPag no longer scales EPS images that are between 99.95 and 100.05of their size reservation. When the scale factor was an integer, ClassPagwould not have scaled them. Now that the scale factor is a real number,ClassPag sees much smaller size differences, and this prevents it fromscaling every ad.

* ClassPag should be smarter about drawing thick rules between ads andnews area. It now treats completely empty columns as news.

* The Cmd->"Add main headers"/"Añadir prim cabezales" command now placesonly the class header on the left column of the ad and no longer placesany column headers.

* When a class had display ads but no line ads, ClassPag would allowplacing the display ads with any line ads in a class under the classthat contained the display ad. For example, if class 620 only haddisplay ads and classes are nested by 100's, ClassPag could have placethe display ads with line ads from classes 600 to 699 without consideringit a conflict. ClassPag now looks for the previous and next classes withline ads. For example, if classes 610 and 630 have line ads, ClassPagwould require placing the display ads from 620 near line ads from 610and 630.

8/2/99

Changes in version 1.160:

* When the configuration parameter "Repeat heading of parent class"/"Repetir cab. de padre" on the screen "Classified Heading Specifications"/"Especificaciones de Encabezados de Clasificaciones" is set to "COL"(for ClassPag to copy column headers of parent classes to their children),if a parent class does not have a column header, ClassPag will copy thecolumn header from the first child (if it has one). This should fixproblems with missing column headers when a classification requestsstarting on a new column or page.

* RUBRO lines can now specify a page number and position similar to CLSCDlines for display ads. The syntax is </RUB#/adnumber/width/depth/desc/page/position>For example, the line </RUB15A23/R15A23X8/K08/T201.5/CABEZALAUTOS/5A/BL>creates an 8 column by 201.5 point banner at the bottom left of page 5.

* The interface no longer logs a warning when a RUBRO line is in aclass different from the digits after the RUB text. The dumps do thisintentionally to place tapas on the first few pages.

8/3/99

Changes in version 1.161:

* Modified the folios to add a raised "o" after the "1" for the firstday of the month.

* Changed the index to avoid showing lines barrios with no entriesin any of the four fields.

* Fixed another problem where ClassPag would not place column headersabove the main header of a class that started on a new column or pagewhen the classification with the start request (for example, 1510)did not contain any line ads.

* The new configuration parameter "Always center when scaling equally"/"Siempre centrar si escalado iqualmente" on the screen "Ad Image Scaling"/"Escalado de la Imagen del Aviso" controls how ClassPag positions ads whenthe field "Scale width and depth equally"/"Escalar el ancho y la profundidadigualmente" is enabled. When ClassPag scales the dimensions equally, itsets the size of the ad so that the larger dimension of the ad matches thesize of the reservation and the smaller dimension is smaller than thereservation. This creates empty space between the image and the reservationin the direction of the smaller dimension. ClassPag used to always centerthe space. Setting the new parameter to "N" tells ClassPag to use thenormal centering rules specified by the fields "Center horizontally"/"Centrar horizontalmente" and "Center vertically"/"Centrar verticalmente".

* Created a banner "s" with images "paseeco", "paseinclas", "paseclas","vieneclas", "pasaclas", "clastapa" and "claseco" that match the currentjump blocks. I made them pull the page numbers from the previous or nextpage instead of working in pairs.

* Added a CPagCompText formula that banner formats can call to compose thetext in composition user variable 10. This makes it easier to parameterizeitems in banners.

* New version of the index with a "ZONA" column and page numbers in reverseunder the letter for each zone in the map.

* More database windows obey the privilege values.

8/6/99

Changes in version 1.162:

* Fixed the interface program to avoid writing class information for RUBROlines that create 1 column headers. The RUBRO lines do not have all thefields to generate a correct class header. In particular, they do nothave a classification start column request.

* Changed the interface procedure to handle classes 1 to 199 normally if itdoes not find a class with a Z in its name. For the clarin.* dumps,the interface maps classes for zones with Z + letter + C or D + 1 to 4into numbers from 1 to 199 and groups them by zone. For the interiors.*dumps that use class numbers 1 to 199 and no classes with letters,it groups the classes by 100. The interiors.* dumps must not containany classes with a Z in their name.

* Changed ClassPag to save the name of the directory containing the EPS of thedisplay ads that was selected during the import step. The name is availableas the variable "AdsDirectory" when building banners. This allows ClassPagto locate EPS files for banners that are passed like ads (like the tapas).

* The banner file name lookup now searches for the file name in the originalcase in the configuration, plus upper case and then lower case.

* ClassPag now allows color ads to specify in postscript the gray level whenthey are printed on a gray scale page. For example, an ad with cyan textcould be hard to read on a gray scale page because the RIP would convert100% cyan into 30% black. (Most RIPs calculate convert CMY values toa black level using the formula black = 0.299*C + 0.587*M + 0.114*Y.)In order to make what would have been the cyan stand out, you can nowset a separate gray level to use when the ad is on a gray scale page.ClassPag defines a postscript operator cp_setcmykgcolor to set the colorthat takes five parameters for cyan, magenta, yellow, black and gray.On color pages, ClassPag defines the operator with /cp_setcmykgcolor { pop setcmykcolor } defto use the first four values as CMYK colors.On gray scale pages, ClassPag defines the operator with /cp_setcmykgcolor { setgray pop pop pop pop } defto use the final value as a gray level.Applications that wish to use these operators should include a sequence intheir prolog similar to /cp_setcmykgcolor where { pop } { /cp_setcmykgcolor { pop setcmykcolor } def } ifelseand then use cp_setcmykgcolor instead of setcmykcolor.For example, to show 100% cyan, instead of the standard 1 0 0 0 setcmykcolorwhich would become about 30% black on gray scale pages, you could use 1 0 0 0 0.3 cp_setcmykgcolorwhich would become 70% black on gray scale pages. (They gray levelis percent white, so 0.3 is 30% white which means 70% black ink.)

* The interface program allows an additional gray level parameter on the"CMYK" command. For example, the line <cf/HVB/7/8.3/9.7>Test <cmyk/0/1/1/0/0.7>in Helvetica <gray/0>bold <QJ>draws the text "in Helvetica" in 100% red on color pages and in 30% blackon black and white pages. If the gray scale field is empty, the interfacecalculates a value automatically by adding the four cyan, magenta, yellowand black values, subtracting the result from 1, and then adjusting valuesless than 0 or greater than 1. For example, text in 60% cyan plus 20% blackwould default to 80% black on gray scaled pages. If the RIP gray scaled thead instead, it might translate 60% cyan into 10% black, so cyan text thatwas meant to stand out would become harder to read.

* When ClassPag prints black and white pages using a "Paper Definition"/"Definicion de Papel" entry with "Create Separations"/"Crear Separaciones"set to "GRAY", it uses the gray levels specified by the interface programfor ad text. The changes do not affect EPS images and logos in order tocontinue allowing the RIP to select appropriate gray scale levels for them.(For stand-alone EPS files for ads, banners and fillers, the "GRAY" optionalso tells ClassPag to look for EPS files with the extension "-BW".For example, if the color ad "345" has color text on a color backgroundthat becomes unreadable in gray scale, you can save a special gray scaleversion as "345-BW" that ClassPag will use in its place on black and whitepages.)

* The field "PS Type"/"Tipo PS" on the screen "Paper Definition"/"Definicion de Papel" has a new value "CEPS" that creates an EPS file withunused columns cropped out.

* At Pablo's request, I changed the inmuebles index to preserve the case ofthe class titles in the tablabar.txt file. This leaves the names in uppercase.

* Added a "Delete Text"/"Borrar texto" command to the command window toedit banner image text lines. This allows you to clear text buffers fortext segments with index lines if you open the text window by accident.

* The "Vertical Spacing Specifications"/"Especificaciones de EspaciadoVertical" has a new field "Min Depth if Touches News"/"Prof. Mín. si tocanot." to control whether ClassPag places a cut rule to the right of thefinal column if the column has an automatically placed reservation fillerunder the last line ad. If the filler (i.e. empty space under the lastline ad) is less than this value, ClassPag continues the vertical cutrule to the right of the filler. Otherwise, ClassPag does not continuethe cut. If the field is empty, ClassPag defaults it to the value ofthe field "Minimum Depth"/"Profundidad Mínima" with the minimum verticalcut rule depth.

* The pstoepsf.sh script has a new "-mkdir" flag to create the directoryfor the EPSF file if it does not exists.

* I made a new printer entry "EPS with a preview to /u/eps,page number in name" that sends EPS files with 1-bit previews to thedirectory /u/eps. The name of the EPS file is the first letter of theedition name plus the page number plus a dash plus the day of the monthplus the extension ".epsf".

* I made a paper entry "EPS con prever a editorial" that uses the printerentry above. It also sets a "PS Type" of "CEPS" to crop unused columnsfrom the bounding box of the page.

* Rebuilt the index from Pablo's new tablabar.txt file.

* Built the miercoles tapa for inmuebles. The original without page numbersshould be called /u/clarin.ads/mie/tapamie.eps. The tapas for other daysshould be called /u/clarin.ads/{lun,mar,etc.}/tapagral.eps.

8/7/99

Changes in version 1.163:

* The configuration screen "Ad Importing"/"Importacion de Avisos"has three new fields "Directory sort order for Import, Copy and Save"/"Ordenar directorios para importar, Copiar y Guardar" with thevalues "DIR", "DATE" and "PROD" to set the initial order of thedirectories in the selection list when you import, copy or save a work area.

* More databases check the user privileges including folios, unix shellaccess, and the composition databases.

* When printing pages with a thick cut rule between the ads and news,if the rightmost column had a filler, ClassPag now places the thick ruleon the right side of the filler instead of the left side.

8/26/99

Changes in version 1.164:

* Every database window now checks the privilege system.The privilege system has a database for user profiles and a databasethat assigns users to profiles.

To create profiles, use Setup->PrivilegeSets.For each database, you can set the access to View, Edit, Insert, Deleteor All. The values are ordered, so Insert access allows youto view and edit records but not to delete records.

The special "Default Priv" field is the privilege for empty fields.You should always enter a value in this field because new versions ofClassPag may add new databases, and if the "Default Priv" field is empty,you will not be able to access the new databases until you update theprivilege field. Here is a sample access privilege screen for anadministrator:

To assign privilege profiles to users, use Setup->Users.This screen does not create operating-system level accounts.You must still create each user using utilities with the operating system.This screen tells ClassPag how to find the privileges of a user.ClassPag gets the user name from the LOGNAME environment variable.ClassPag ignores upper and lower case differences when checking user names.

If the user database has no entries, ClassPag gives every user full accessto all databases.

If the user database has any entries, and if a user logs in that does nothave an entry in the database, ClassPag denies the user access to anydatabase.

ClassPag currently gives users full access if their user name startswith "CP" and ends with "ADMIN", "ADM" or "ROOT". This provides anescape if you accidentally deny yourself access to the privilege database.

In the example below, accounts "CPAG" and "USER" have the privilegesassigned in the "USER" profile, while accounts "ROOT" and "WILLIAM"have the privileges assigned in the "ADMIN" profiles. The star (*)shows the current user.

* Folio and banner segments have a new type for expressions that generatePostScript. This allows ClassPag to run on operating systems that do notsupport SCS Composition, although some effects are much more difficult tocreate with PostScript than with SCS Composition.

Folio PostScript expressions have the Type/Tipo of "PSEXPR".The configuration field "Folios use Composition"/"Folios usan Comp."tells ClassPag whether any folio lines need composition.If the field is "Y" (the default), when ClassPag rebuilds the folios,it will start a new copy of "spice". This is usually what you want.If none of the folios need Composition, you may set the field to "N".

Banner PostScript expressions have the Type/Tipo of "S".The configuration field "Banners use composition"/"Carteles usan composicion"tells ClassPag whether any banner text segments need composition.If the field is "Y" (the default), when ClassPag rebuilds the banners,it will start a new copy of "spice". This is usually what you want.If none of the banners need Composition, you may set the field to "N".

* Folios now allow a combination of up to 5 templates and postscript segmentsper side. The previous limit was 3.

* Expressions for banners that produce PostScript (type "S") or file names(type "F") now have access to the additional variables PageNumber (theabsolute page number of the banner), ColumnNumber (the leftmost column numberof the banner), BookName (the section name from the "book sizes" window)and BookPageNumber (the page number relative to BookName). If the banneris not positioned on a page, ClassPag sets PageNumber, ColumnNumber andBookPageNumber to 0.

* ClassPag has more control with the placement of headers under display ads.The "Classified Heading Specifications"/"Especificaciones de Encabezadosde Clasificaciones" screen of the configuration database has a new field"Flow headers under display ads"/"Fluir abajo de destacados" with thevalues "ALWAYS", "NEVER" and "CLASS".

This field controls the placement of column headers on columns with adisplay ad at the top and line ads below. "ALWAYS" forces a class headerbetween the display ad and the line ads. "NEVER" prevents placing classheaders. "CLASS" places a class header only when the display ad andthe top line ad have different classifications. "CLASS" is the default.

* On output pages, ClassPag can draw an X over boxes with missing EPS files.The configuration screen ""Margins between Pages when Printing"/"Margenes entre Paginas cuando se Imprime" has a new field"Thickness of X"/"Grosor de X" that sets the width of the lines of the cross.0, the default value, does not add the cross.

* ClassPag handles island ads better at sites that place class headers overdisplay ads. Island ads are ads that you have positioned in the middleof a page using the right mouse button. If ClassPag placed a header overan island ad, it would sometimes not continue flowing line ads belowthe island ad. When you move ads around, ClassPag sometimes placesclass headers automatically. If you have island ads, you may sometimesstill need to remove some of the headers (click on the header and thenthe DELETE key) before reflowing the line ads.

* When ClassPag must place class headers at the top of every column and aline ad is too large to fit with a class header, ClassPag will place theline ad on the first open column where it fits. This fixes a recentchange where ClassPag would place class headers as soon as it starteda new column, so it would never find a column with enough space to placethe line ad.

* When you use Command->Ads->ConvertAdToEPS to convert a line ad into astand-alone EPS file, ClassPag now uses different variables to save thePostScript context than when placing ads on pages. This should correctPostScript errors at sites that do not use SCS Composition when theycreate EPS pages containing ads converted into EPS files with this command.

* When ClassPag converts an internal ad into a stand-alone EPS file,it uses the ad directory that you specified when you ran the Import step.

* When you use Command->Ads->ConvertAdType to convert between line adsand display ads, ClassPag now allows you to select a line ad in theline ad database without first converting it to the display ad database.This allows you to convert line ads to display ads while keeping theminternal to the ceps.out file. You previously had to convert line adsto display ads with stand-alone EPS files.

* ClassPag can now download fonts required by the display ads on a page.First, in the "Printer Definitions"/"Definiciones de la Impresora" database,set the field "Include Fonts"/"Incluir Fuentes" to "Y".Second, in the "Paper Definition"/"Definicion de Papel" database,set the field "Add Font Comments"/"DSCs de Fuentes" to "Y".Third, in the directory "/u/scs/gs/fonts.site", create a file for each font.You must save each font in a file with the exact name of the font.For example, if an EPS file needs the font "Helvetica-Black", ClassPag willsearch for the file "/u/scs/gs/fonts.site/Helvetica-Black".

ClassPag sets the "%%DocumentNeededFonts" and "%%DocumentSuppliedFonts"comments to reflect the fonts required by the ads and the fonts that itincluded, so if you create an EPS page and some ads use fonts not presentin the fonts.site directory, and you include the EPS page in another program(like Quark), it will be able to tell which fonts are still missing.ClassPag builds the list of fonts from the first page in its output file,so you should only use this option when printing single pages.

When possible, you should install all fonts on your RIP and requestthat any people that supply EPS files for ads include all of the fontswhen they save their EPS files.

* ClassPag is smarter about checking ad types when it draws verticalcut rules between ads and news.

* When ClassPag can not find an EPS file, it checks the directories in theCPAG_EPS environment variable. CPAG_EPS should contain a colon (:) separatedlist of directory names (or semi-colon (;) separated under Windows).If the directory name ends with a plus (+), ClassPag prefixes it to thedirectory name of the ad, otherwise, ClassPag replaces the directory nameof the ad. For example, if you have a ClassPag work area that was importedwith ads in /u/displayads, and you move some of the files into /u1/displayadsand /u2/displayads, you can set CPAG_EPS=/u1/displayads:/u2/displayadsFor another example, if you moved the EPS files into a CD but preserved thedirectory structure and then mounted the CD as /cdrom, you can set CPAG_EPS=/cdrom+ClassPag always looks in the current directory first.For each directory in CPAG_EPS, ClassPag performs the usual trials forupper and lower case name, with and without .EPS extensions, andwith -BW, as specified in the configuration.This variable is meant to aid in viewing old work area and is not meant forregular use.

* The batch file unloadsh.bat dumps databases to text transactions andthe batch file updatesh.bat rebuilds databases from text transactions.They are similar to the unix unload.sh and update.sh scripts without anyoptions. unloadsh.bat calls unload1.bat for each file, and updatesh.shcalls update1.sh for each file. The batch file tntcpes.bat runs theSpanish version of ClassPag under the MI/X server. The batch file setup.shnow looks on both C: and D:.

* Under Windows, ClassPag opens the HTML help files under the default browser.

9/3/99

Version 1.166:

* Spanish sites can control the spelling of September on their folios andbanners by using L$SPANISH$SPA or L$SPANISH$CAS with f$monthname().f$monthname(9,l$spanish$spa) is "septiembre", whilef$monthname(9,l$spanish$cas) is "setiembre".

[ Using the new language dialect features in folios and banners requiresa new "spice" executable dated after mid-September, 1999. ]

* The ClassPag setup scripts allow es:cas and es:spa options to setSPICE_LANGUAGE. Note that you will need a new version of all of theSCS tools if you use one of those values. Old versions of the tools willreject the dialect modifier and revert to English.You should leave SPICE_LANGUAGE set to "es" and use the new L$SPANISH$*options to create the correct spellings.

* Spanish sites can remove accents on their folios and banners by usingthe UNACCENTVOWELS option on f$edit(). For example,f$edit(f$dayname(3,L$SPANISH),"RAISE,UNACCENTVOWELS") is "MIERCOLES".

* The commands "Ads->Edit the ad EPS" and "Ads->Convert ad to EPS" shouldwork again. Changes in 1.164 broke these commands.

* The command "Position->Paste a banner" no longer shows wide (type 'W')banners with a zero insertion count. These banners square-off the firstpage of line ads for a classification when paginating back to front.

* The command "Help" that shows the hot keys on the page preview screennow itself has a hot key to save the hot key list to a file. Is alsohas hot keys to view the manuals and to view the keyboard mappings.

* When ClassPag is in demo mode, it does not allow you to enter the SetUpwindow. ClassPag currently sets demo mode if the user name matches thepattern CP*DEMO or if ClassPag is running under Windows.Under demo mode, only privileged users can enter the Setup window.

* The Windows setup.bat script now sets additional system variables if theyare empty and if directories under %CPAG_HOME% exist.It will set SCS_ROOT to %CPAG_HOME%\scs (to allow ClassPag to use its ownset of the SCS tools), GS_LIB to %CPAG_HOME%\fonts.site (to add additionalfonts), and CPAG_EPS to %CPAG_HOME%\ads (to set an EPS file search path).This makes ClassPag more self-contained.

9/13/99

Version 1.167:

* runcpag.sh and menprof.sh now handle "es" arguments with dialects.

* The configuration field "Default Spanish Dialect"/"Dialecto de espan~olpor defecto" on the screen "Screen Display Preferences"/"Preferencias deVisualizacion" can be "cas" or "spa" to override the dialect whenSPICE_LANGUAGE has a base language of "es". This controls only stringsdisplayed on the screen and not text composed into folios or banners.

* The ClassPag import now reads the sort file (classsrt.out) from the currentdirectory. It used to read the sort file from the $DATA search path, whichcontains $CPAG_HOME (usually /u/cpag) before the current directory.This could be confusing if you copied a classsrt.out file into /u/cpag.

* The expression interpreter now treats 2-byte packed character sequencesfor 9-bit characters (the 0x8E PCH_HSHIFT and the following character)as whitespace in expressions. This allows you to embed quads inexpressions to control how the editor re-wraps them.The HSHIFT was illegal in expressions, so this should not breakany existing expressions.You can still place 9-bit characters in quoted strings.Adding quads to long expressions makes them much easier to understand.

* Spanish sites can remove accents on their folios and banners by usingthe UNACCENTUCVOWELS or UNMARKALL options on f$edit(). UNACCENTUCVOWELSis like UNACCENTVOWELS, but only removes accents from upper-case vowels.UNMARKALL removes marks from all characters. For example, it changes "n~"to "n".

* ClassPag now tracks the depth of the text that it composes in eachcomponent of banner images. Windows that view banners records now havea "Show depth"/"Mostrar alto" command on the command-key (F12) window.It shows the banner name, image id and text id,the maximum depth (the maximum depth of all of the columns (in !s24)),the final depth (the depth of the last column (in !s22)),the banner depth (the depth entered in the ClassPag Banner Image record),the position (the Y Position of this component in the banner image),the scaled depth (the final depth multiplied by the vertical scale factorof the component times the cosine of the rotation), andthe free space (the position minus the scaled depth).On the setup window of banner images, the command shows the information fromthe text segment with the largest maximum depth.On the setup window of banners, the command shows the information for thedefault image.

* The new scanlogos.sh script processes each directory in COMP_LOGO withfixlogos.sh to remove tiff previews and then with scanps.sh to remove EPSfiles with binary data or that have PostScript errors. It places the badEPS files in a "badads" directory at the same level as each logo directory.

* The makeesc6.sh interface script for the North County Times now asksif you want Car Country when you select the Saturday Coastal dump.When "tac" exists, the script uses it to display the most recent dumps last.

* Editor windows now have a hotkey to move to matching parentheses, braces,brackets, composition marks, or single or double composition quotes.This makes it much easier to validate long expressions.Internally, routines that call the editor now include "editproc.ifm" foreditor-related declarations and "editform.ifm" for editor-related hotkeyformulas. The editor windows to enter banner text and folio text now alluse the same procedure instead of their own copy and should all work thesame way. Currently, F1, LKEY-B and LKEY-M execute the brace matchingfunction. In addition, LKEY-L shows the number of characters inside thebraces.

* ClassPag has a new configuration parameter to make moving segmented adsas easy as moving display ads. The parameter "Lock Legal Ad Segments whenDragged"/"Bloquear segmentos de avisos cuando traidos" on the screen"Screen Display Preferences"/"Preferencias de Visualizacion"makes it easier to move segmented ads. The default value for this parameteris "N". If you set it to "Y", when you drag any segment of a segmented ad,ClassPag will automatically mark the ad to prevent it from unflowing(as if you selected the command "Save ad in column"/"Recordar aviso"),and it will automatically move all of the segments (as if you selectedthe command "Position all segments"/"Posicion todas partes").

* ClassPag has a new configuration parameter to make the initial partsof segmented ads more visible. The parameter "Marked Depth on Screen"/"Alto a Marcar en Pantalla" on the screen"Legal and Segmented Ad Specifications"/"Especificaciones de Avisos Legales y Segmentados"sets the way ClassPag draws the first few segments of segmented ads.Before this change, if you set the color for a classification, ClassPagwould draw all of the segments in that color. Otherwise, ClassPag woulddraw the first segment in the color for ads with position requests andthe other segments in the default color for agate ads.Now, ClassPag always draws the first segment in the color for ads withposition requests. In addition, if the new parameter has a value greaterthan zero, ClassPag will draw the segments that start within that depthfrom the top of the ad in the color for position requests.A good value for this parameter is about an inch.

* If you apply the "Add headers"/"An~adir cabezales" command to a segmented ad,ClassPag will add the headers above the top segment of that ad in the columninstead of above the current segment. This makes it easier to place headersover segmented ads when the first segment is small.

* Added the script "addfonts.sh" to prepend fonts to a PostScript file.ClassPag and Track can use this when printing files.The font files must be in /u/scs/gs/fonts.site with the same file nameas the PostScript font name.The script uses fontlist and addcr in $TOOLS.The syntax is addfonts.sh input-file [ output-file ]If output-file is missing, the input-file is over-written.If output-file is "-", the output is written to standard output.The script adds some of the initial comment lines of the input file beforeadding the fonts, so printer queues looking for "%!PS-Adobe" or programslooking for a "%%BoundingBox" will still work correctly on the output.When the script over-writes the input file (in the one-argument mode),it creates a work file in the same directory as the input file, and ituses shell "trap" commands to restore the input file and delete the workfile if you abort the script.

* Added the script makefont.sh to create a ghostscript Fontmap file fromthe fonts in a directory. For example, in a directory with font files,you can use the command makefont.sh * > FontmapRecent versions of ghostscript can automatically locate fonts on itssearch path as long as the font file has the same name as the PostScriptfont name. Since ghostscript must read all of the Fontmap files atstart-up, sites with many fonts should enter only commonly used fonts(for example, fonts in line ads or class headers) in the Fontmap file.

* The readtxt interface program @LOGO command now takes three additionaloptional parameters with an x-offset, top margin and bottom margin.All three parameters are real numbers in points, can be negative anddefault to 0 when they are missing.Also, readtxt now centers the logo horizontally. The new syntax is @LOGO:name,x-scale,y-scale,x-offset,top-margin,bottom-marginFor example, the line @LOGO:star,200,200,-2,5.5,3adds the logo star.eps at twice its normal size, centered two points to theleft of the center of the column, with 5.5 points of extra space above and3 points of empty space below. The centering code extracts the column width(minus any indents) from composition variable s14, so it should work withany column width or indent.

* The formula to create index line records from a "tablabar.txt" file nowasks if you want to sort the index lines by the classification number orby the classification title. It used to sort only by classification number.

* Fixed a problem in the generated PostScript where printing gray-scalepages with folios that used cp_setcmykgcolor could cause PostScript errors.

* The banner text hotkey to delete text from a banner text record nowasks you if you want to delete the text in the initial and final textareas as well (if those areas are not empty).

9/27/99

Version 1.169:

* When the parameter "Lock Legal Ad Segments when Dragged"/"Bloquearsegmentos de avisos cuando traidos" is set, more commands now work on allof the segments instead of just the current segment.The <DELETE> key unpositions all of the segments and writes only oneentry to the paste list. If you position the entry from the paste list,ClassPag positions all of the segments.The commands to delete and unselect the current ad now unselect all ofthe segments. The "KILL" flag overwrites the segment information, so youneed to re-import in order to restore the ad.

* The configuration parameter "Same Ad Prefix Length"/"Largo de Prefijo de Nom."on the screen "Legal and Segmented Ad Specifications"/"Especificaciones de Avisos Legales y Segmentados" sets the common prefixfor segments of the same ad. The default is 4, which is compatible with theAdMax naming scheme with the first four characters of the ad number, an "S",and a five digit segment number. ClassPag uses this value to locate thesegments of an ad when you delete or unselect a segmented ad.If you set the value too large, ClassPag might not find all of the segments.If you set the value too small, ClassPag might remove other segmented adsin the same class that have the same sort key.

* On the preview display, you can now view an entire segmented ad.This makes it easier to identify the ad.Clicking on the "boX" view button or pressing "X" now displays the entire ad.Pressing "x" (lower case) displays only the current segment.The commands work as before for other types of ads.

* The ad list windows on the statistics screen under Ads->DisplayAds andAds->AgateAds have new options for segmented ads."View all segments"/"Ver todos los segmentos" displays all of the segmentsof the current ad. ClassPag scales the ad to fit on the screen."Print all segments"/"Imprimir todos los segmentos" prints all of the segments.

* The preview window has a new option "Command->Ads->Print All Segments"to print all of the segments of the current ad.

* When you use the "view box" button on the preview window and the addoes not have an image, ClassPag now displays a warning that shows thetype of ad and whether it has an internal or external image.It used to show "Internal ad has no image." even for fillers.

* When you select an option to print an internal ad, ClassPag always adds aninitial "%!PS-Adobe" line for printers that need this to auto-detect PostScript.

* The preview window has the new commands"Cmd->Columns...->Lock col range/no fill" and"Cmd->Columns...->Save col range/no fill" andthat save the position of ads like "Lock column range" and"Save column range" except for ignoring agate fillers.If you "save" several pages, you should save them in the reverse order thatyou paginate. For example, if you paginate front to back, you should savethe last page first and then work your way towards page 1.The "save" commands do not prevent ClassPag from placing other ads on thepage, so if you save page 1 first, and some columns on page 1 have largeenough spaces, ClassPag might flow in ads from page 2.The "lock" commands prevent ClassPag from squeezing other ads into holes onthe page.Use the "save" commands if you will position only a few ads by hand andwant ClassPag to flow the rest automatically.Use the "lock" commands if you will position every ads by hand.

* The preview window command "Ads...->Convert ad to EPS" now preservessegment and color information. The ClassPag import now handles segmentedads with external segments as long as the ad numbers of the segments arein increasing alphabetic order.

* The script initscr.sh now ignores the den version number when comparingfdf files. This prevents it from rebuilding the databases in work areasafter an upgrade if only the version of the tools changed.

9/28/99

Version 1.170:

* When you drag an ad over a segmented ad, ClassPag now places your ad abovethe top segment of the segmented ad. This makes it easier to place headersand fillers in columns with segmented ads.

* When you position segmented ads, ClassPag no longer allows you to placea segmented ad so that it breaks or is broken by another segmented ad.When it does not let you place the ad, it displays a popup message showingthe other ad and the column number with the problem.

9/30/99

Version 1.171:

* The makeesc6.sh interface script for the North County Times now has optionsto copy only the cardex or only the sort and eps files.

* When you try to move a segmented ad that crosses a page boundary,ClassPag now shows a warning and does not do anything. It used to movejust the half of the ad on the page with the selected segment.

* When the preview commands "Command->Position...->Position before" and"Position after" update the classification of a segmented ad, they nowmodify all of the segments instead of just the selected one.

10/4/99

Version 1.172:

* The banner setup window now has a hot key to copy banners from otherproducts. The hot key copies the banner record you select, plus all ofits images, text segments, index lines, and any index styles referencedby the index lines. When you select a banner, it opens a form that letsyou change the banner name if you want. The copy does not modify any recordsthat already exist. After the copy completes, ClassPag shows a status windowwith the number of each type of banner component that it copied.This command makes it easier to create and maintain test products.

* Banner text records now have an active flag, and the banner text setupwindow has a hot key to toggle the flag. This makes it easier to testchanges to banner text lines without deleting the original lines.

* The index line hot key to load a "tablabar.txt" file now asks if youwant to delete all of the old index lines before loading the new ones.This eliminates the need to select the "delete all" hot key first.In addition, status window after the load shows classifications withpossible errors. The load procedure is also smarter about creatingunique key names. For key names based on classification numbers, it nowadds the zone letter, and for key names based on classification titles,it now modifies the last few letters.

* The index style setup window now has a hot key to delete all of the records.

* Fixed a problem where ClassPag could start segmented ads in columnswithout enough space for the minimum initial length when the look aheadwas less than two.

* Possibly fixed a problem that could cause segmented ads with an islandrequest to have their segments placed in reverse order.

* The delete command can now unposition segmented ads with parts on morethan one page.

* When ClassPag unflows ads, if a column starts with the middle of a segmentedad, ClassPag shifts the segments up instead of down. This makes it harder toaccidentally place another ad above the segments. Also, it prevents ClassPagfrom placing a class header over the segments when it reflows the other ads.

* The preview window commands Cmd->Columns... to lock and save column rangeswithout saving fillers now also do not save leading fillers.

* The preview window commands "Position at top edge"/"Posicion a la cabeza"and "Position at bot edge"/"Posicion al pie" now clear the island flag.

* The makeesc6.sh interface script now has a "-esc" to work as before forEscondido and a "-fls" option to work for the Free-Lance Star. It now hasa more modular system of selecting directory name components, so it shouldbe easier to modify for other VisionData sites.

NOTE: Adding support for dragging and deleting ads that span more than onepage required a lot of changes to the routines that handle those commands,so you should watch for problems. This version of the ClassPag source has1820 lines of differences from the previous version, most of which arerelated to moving ads.

10/19/99

Version 1.174

* ClassPag now supports line ads that are more than one column wide.It used to place them like display ads, but it now flows them like normal lineads. A single classification should contain line ads of the same width.A classification with multi-column line ads should contain a class header withthe same width as its line ads.

* When the configuration allows ClassPag to place ads at the tops of pages,ClassPag now uses the same hole-filling algorithm as it does when it placesads at the bottoms of pages.

* When the configuration allows ClassPag to place ads at both the tops andbottoms of pages, ClassPag now distributes the ads a little more evenly.

* When ClassPag justifies the space in columns of ads, it divides the spacebetter in the case when a page has a stack of ads growning down from the topand the ads all have the same width.

* The list key on file name fields on the screens for banner images,display fillers and agate fillers now opens a directory browsing window.If the field current contains a file name, the window starts in thedirectory containing the file. This makes it easier to modify file names.

* The new configuration parameter "Warn if Multi-Column"/"Advertir si unas columnas" on the screen "Agate Ad Specifications"/"Especificaciones de Avisos Agate" writes a warning to the log file for lineads that are more than one column wide. The default is "Y".

* The new configuration parameter "Wide Ads on Divisible Col"/"Avisos Ancho en Col. Div." on the screen "Agate Ad Specifications (Continued)"/"Especificaciones de Avisos Agate (continuado)" forces ClassPag to placemulti-column agate ads only on columns divisible by the width.The default value is "N". For example, if you enabled this option,ClassPag would place two column ads only on columns 1 and 2, columns 3 and 4,etc., but would not place a two column ad on columns 2 and 3.You should enable this option for products with multi-column line ads.

* The new configuration parameter "Place Fillers in Square-Offs"/"Poner rellenos bajo Carteles" on the screen "Display Ad Dummying Style"/"Estilo de Diagramacion de Avisos Destacados" controls whether ClassPagplaces fillers in the first page of square-off. The default is "N".

* The page display handles the new spice FILL key the same as the END-LINE key.

* ClassPag has a new "Press" database to describe information about pressesfor use in a later release.

* Fixed a bug clearing areas under reserve fillers. This could causemiscalculations of ad or cut-rule positions, especially when viewingpages under a reserve filler after unflowing the line ads.

NOTE: Adding support for flowing multi-column line ads required delayingthe step the justifies completed columns. You should watch for small adssneaking into columns where they could not go before. You should also watchfor changes the placement and selection of class headers. This version ofClassPag has about 9000 lines of differences from the previous version.

10/20/99

Version 1.175

* Fixed a bug where ClassPag could leave columns with all fillers whenpaginating back to front with a classification with a large look-ahead.

* The four configuration parameters "Add Text Top, Bottom, Left and Right"/"Escribir texto Superior, Inferior, Izquierda y Derecha" on the screen"Registration Marks"/"Marcas de Registros" control whether ClassPag writesthe page number and plate name at each of the four edges of the pagewhen printing with a spread format that requests registration mark text.The four parameters are enabled by default.

10/25/99

Version 1.176

* When the "Justify last column" option is set to "No" (in order to placespace reservations in the last column instead of fillers), if all of thepages have their liner ads locked, ClassPag no longer places reservationson the first page.

* Fixed a problem where ClassPag would sometimes not place the initialclass header of a classification with line ads that spanned over more thanone page when some of the pages had their liner ads locked.

* Added a -f (fast) option to the updprod.sh script to skip the unload stepbefore updating the new records. This makes it run faster but makes recoveryharder if you update incorrect transactions.

* Fixed a problem where ClassPag would sometimes insert extra class headersin columns with open space.

* The "Box Information" window now shows some values to three decimal placesinstead of two if the value will still fit.

* When ClassPag adjust ads above or below multi-column ads, it used to setthe space to the minimum space of any of the pairs of ads. It now will notreduce the space below the configured minimum space.

* The configuration parameter "Add lead when placing ads with requests"/"Agregar interlineado cuando poniendo avisos con pedidos" on the screen"Display Ad Specifications (Continued)"/"Especificaciones de Avisos Destacados (continuado)"controls whether ClassPag adds leading when placing ads with page requests.By default, ClassPag does not add leading to allow you to stack ads to thefull height of the page. When you place an ad manually, ClassPag addsleading when possible. For example, if an ad requested page 2, ClassPagwould place it without leading. If you then touched an ad on page 2 withthe mouse, ClassPag would rebuild the page with leading, and fewer line adsmight fit. Setting this parameter to "Y" produces more consistent pages atthe risk of possibly not satisfying ad requests.

* ClassPag no longer shows a conflict for a line ad at the bottom of a columnwith a line ad from a different class above it if the class of the line adat the bottom does not have a header and the class of the ad above it hasthe same parent class.

10/27/99

Version 1.177

* You can now restrict which color separations to print.The Paper Definition screen field "Create Separations"/"Crear Separaciones"has the new values REQYES, REQAUR and REQPLA. The values produce separationsthe same as the YES, AURORA and PLATE values except that they only produceseparations for the colors that you have specified for the page withCommand -> Pages... -> Modify the color.

* The folio text database has a new field "Omit if Overlap"/"Omitir si solapa"to control the sense of column test. If the field is empty or "T", ClassPagwill omit folio records that overlap ads according to the column test. If thefield is "F", ClassPag reverses the test and only shows folio records with adsin the column range. For example, you can use this test to place folios abovethe page on pages with space reservations at the top but to move the folios tothe sides of the page on pages with full page ads.

* The mapclass option "Make test with only class headers"/"Probar solo con cabezales de clases" lets you test fonts by creatingan ad for each position in the font. The font selection window has anew option to control whether the composed text is a character or acomposition PI command to insert the character by number.

* If the command to download fonts to a printer has a long list of fonts,ClassPag now divides the list into groups to avoid long command lines.

* The list key on file name fields on the screens for replacement imagesand folio templates now opens a directory browsing window.

11/4/99

Version 1.178

* When papers that place a class header over every column have asaved/recordada (but not locked/bloqueada) column that ends with a classheader or line ad and the column does not have enough room to flow a newclassification, ClassPag would sometimes insert an extra class header atthe bottom of the column.

* ClassPag no longer shows a conflict for the top line ad in a column ifthe only element above the line ad is a class header from its parent class.This can happen normally in classes that copy column headers from their parent.

* The banner image configuration window has a new option"Select as the default"/"Seleccionar como el defecto" to make the currentbanner image the default. This eliminates the need to edit the banner recordto change the default image.

* When ClassPag must place cut rules above the top ad in a column or below thebottom ad, it is now more careful about preserving the leading around the topor bottom ad.

* Increased the maximum size of the eps dump file from 99.9 MB to 999 MB.The maximum size of any single line ad in the dump is still 9.99 MB.Quincy created a 450 MB sort file with many 8 MB ads.The eps dump file at most papers is between 5 and 60 MB.

* Increased the image start and offset fields in the image replacementdatabase from 8 digits to 10 digits.

* The configuration screen "Display Ad Dummying Style"/"Estilo de Diagramacion de Avisos Destacados" has new fields to set theminimum and maximum leading ratio. The default range is 0 to 999.Entering values in these fields prevents paginators from selectingunacceptable leading values.

* Fixed a problem where horizontal cut rules between legal ads would behairlines instead of the configured thickness.

* The horizontal cut rule flags for legal ads now default to the values foragate ads instead of PERMIT.

* Added a convprod.sh script to convert product numbers in transaction files.The syntax is convprod.sh old# new# file1.trn file2.trn ...where old# and new# are product numbers from 1 to 99 and file*.trn are thetransaction files to convert. This makes it easier to set up test areas.

* Fixed a problem where ClassPag would sometimes not place enough leadingunder class headers at the tops of columns on squeezed pages. When ClassPagvertically justifies columns, it now tries to satisfy the requested leadingunder class headers before processing the rest of the column.

* Fixed a problem where ClassPag could place fillers in the margin area ofsquare-offs when the "Place Fillers in Square-Offs" configuration parameterwas enabled and the page was too full to fit without reducing the leading.

* Fixed a problem where ClassPag would sometimes not place class headers overa display ad if all of the pages with line ads for the class containing thedisplay ad were locked. It now places headers over display ads if the columncontains less than the configured minimum flow depth of free space.This change might need to be undone if it causes problems with extra headers.

* When the "justify last column" option is turned off (in order to leave roomfor news in partially-filled columns instead of placing fillers), ClassPagwill now justify the column if the amount of free space is less than thecolumn justification threshold or less than the minimum flow depth.This prevents ClassPag from creating very small news reservations.

* Fixed a problem where ClassPag could place square-offs on pages withthe liner lock set.

* Fixed a problem where ClassPag could place the last line ad in a columnout of sort order. If the preferred leading between line ads is less thanthe default leading, ad settling can create additional space after placingthe look-ahead ads. If the next ad fits in the hole, ClassPag now places itin sort order.

* Fixed a problem where the mouse position routine would clear islandposition flags so manually positioned island ads would revert to normalpositions when you repaginated.

* When the estimation pass locates the initial and final classes, it nowcontinues after classes with very small amounts of ad area. This makes theestimation more accurate for interfaces that pass zero depth ads in thefirst classification.

* If a user does not have permission to view the classification database,ClassPag accepts the selected classes and continues. It used to show anerror and not let the user enter.

* The mapclass option "Make test with only class headers"/"Probar solo con cabezales de clases" for testing fonts now builds onefinal ad at the end with digits and the alphabet in upper and lower caseand some symbols and accented vowels to show how the characters fit together.You can display this final ad to verify the font metrics.

* The makegif.sh script now recognizes some additional extensions as binaryfiles that should not be converted.

NOTE: The change to increase the sort file size requires rebuilding the addatabases in work areas. The loadtape.sh command will rebuild the work area,so it will take longer than usual. Use the loadtape.sh -fast option toavoid rebuilding the work areas if you will not need to reopen them.

NOTE2: This version has almost 5000 lines of changes from the previous version.

11/15/99

Version 1.179

* Fixed the edit and insert commands in the "List position requests"/"Listar posic. pedidas" page list window on the statistics screen.The delete command now asks if you are sure before removing the record.

* ClassPag has new configuration parameters to select the information in thefirst text line within ad boxes. The parameters"First line in ad boxes: Class Headings", "Agate Ads" and "Display Ads"/"Primera linea en cajas: Cabezales", "Avisos lineales" and "Destacados"on the screen "Screen Display Preferences"/"Preferencias de Visualizacion"have the values NUMBER (the default to show the ad number),CLASS (to show the classification), SORT (to show the sort key) andSIZE (to show the size). For example, you could use these parameters toshow the classification in class headings, the sort key in line adsand the ad number in display ads.

* ClassPag has new configuration parameters to set the width and number ofdecimal places for numeric values in ad boxes and information boxes.The parameter "Depth field width"/"Ancho de campos de profundidad" sets thefield width and the parameter "Decimals"/"decimales" sets the number of decimalplaces. The width includes the decimal point and decimal places.The default width is 7, and the default number of decimal places is 2 or 3depending on the column depth and unit size. The maximum width is currently 7.ClassPag will adjust widths and decimal places that are too small or too large.

* ClassPag now only marks pages as printed if the page is printed to a paperdefinition marked as a "final output device"/"rendimiento final".ClassPag used to mark pages as printed if the output was a proof or(for single page selections) if you viewed the page without printing it.This makes the selection options for marking unprinted pages more useful.

* The banner field "Split Overflow"/"Partir Exceso" has a new value "F"to make a heading banner the full width of the page. Heading bannersappear over columns that contain line ads of a given class without buildinga square-off. Heading banners have type "P" (Primary), a valid clasification,a non-empty request name and a position of "E" (Every). If the split overflowfield is "H" or "V", ClassPag tries to select a banner that will cover just thecolumns that contain line ads of the class. If the split overflow field isthe new value of "F", ClassPag will select the widest banner that fits.For a more consistent look, you should set the "Display Fill Depth"/"Largo de Flujo de Destacados" to a value less than the column depth minusthe sum of the depth of the tallest banner and the minimum line ad flow depthto ensure that ClassPag leaves enough room for the banner and line ads when itplaces display ads.

* The banner field "Split Overflow"/"Partir Exceso" has a new value "C"to define class headings in addition to the ones in the sort and eps files.Class heading banners have type "P" (Primary), a valid classification,a non-empty request name, a position of "E" (Every) and a split overflowfield of "C". If ClassPag needs a multi-column classification header of agiven width and the sort file does not have one, ClassPag will select a classheading banner of the width if one exists.

* Fixed a problem where ClassPag would not always restore pages correctlyafter an attempt to drag an ad to a page where it would not fit.

* On output pages, the text inside ad boxes without EPS files now contains theexpected file name of the EPS file if the file name differs from the ad number.This makes it easier to locate the correct ad image when the name of the EPSfile can not be derived from the ad number.

* The "Setup -> Set Class Colors"/"Configurar -> Fijar Colores Clasif"window for defining classification specific colors has a new command"Print listing"/"Imprimir pantalla" to print a report with the color table.

* Added an extra call to free database locks in the command to remove an adand in the command to fill a page with ads in the paste list.

* Square-off banners now use the leading and position adjustments of displayads instead of class headers. This should improve the spacing above andbelow banners on papers with position adjustments for their class headers.

* When ClassPag levels columns of ads before placing a banner (or othermulti-column ad) over them, it no longer removes the leading above the ads.This should fix problems with uneven spacing below banners on pages withoutsqueezed leading.

11/16/99

Version 1.180

* Fixed a problem that caused a bad memory reference in a new test addedfor full width heading banners in the previous version.

* Removed a warning about invalid group types for classifications withempty group type fields.

* The "unload.sh" script now shows all of the command line options if youdo not give it any parameters.

11/30/99

Version 1.181

* The classification database has the new fields"Agate Scale"/"Escalar Lineales" and "Display Ad Scale"/"Escalar Destacados"to set a classification-specific scaling percentage.The scale factor is multiplied by the scale factor of the outer class.ClassPag treats an empty or 0 value as 100%.The scale factor is multiplied by the edition-wide scale factor in the initialedition parameter screen.

* ClassPag now supports classification-specific agate fillers.ClassPag now saves the classification entered with each filler.It used to use the classification only to select just fillers with activeclassification, but once it selected a filler, it could place the filleranywhere.If a filler has an empty classification field, ClassPag treats it as a genericfiller that it can place anywhere.If a filler has a value in its classification field, ClassPag will place thefiller only with ads compatible with the classification. ClassPag treats twoclasses as compatible if they are the same or if one is nested under the other.

* Classifications have a new "Filler Group"/"Grupo de Rellenos" to specifythe top level classification of fillers that ClassPag can place next to adsin that class. The filler group of the top level classification defaultsto the top level classification. The filler group of other classificationsdefaults to the filler group of their parent.A filler of a given class is only compatible with higher level classes thatare contained in the filler group of the filler's class.For example, to make a square-off with its own private set of fillers,set the filler group of the top level class of the square-off to the classand set the classification of the fillers to the class.

* Banner images have a new field Side/Lado with the values ANY, LEFT or RIGHT.The default is ANY. This field allows alternate TOP, BOT, MARTOP and MARBOTimages for left and right pages of square-offs.

* When ClassPag unflows ads and shifts locked line ads up, it now removesextra leading above the top line ad.

* Fixed a problem where the "Equalize columns"/"Dividir columnas" commandwould place column headers based on the classification of display ads at thebottom of the page instead of the line ads that it was placing.

* Fixed a problem where the "Equalize columns"/"Dividir columnas" commandwould not place column headers on saved columns.

* Fixed a problem where folio blobs 4 and 5 would sometimes not work.

* Updated the SCS URL in makehelp.sh.

* Added a new test to setup.sh for sco consoles that needXFontSize=20 at 1024x769 and XFontSize=24,12 at 1600x1200.

* The readcla interface program now avoids using the FL command on lines withthe PI command.

* The readcla interface program now uses "1c" instead of "7p" in all commandsexcept for the initial "dc". To change the column width, the first lineof the ad text should use <scs/cl 0/dc XX/ql><cf/...>, for example </CLSAD/5543/TestSmall> <scs/cl 0/dc 4p/ql><cf/HV/6/7/8>Test for short columns. <QJ> The cut rule below should be 4 picas also. <QJ> <scs/cl 0/el 2.5t/dr 1c,0.5t/ql>

* When you enter a banner image in a directory other than the normal bannerdirectory, ClassPag no longer skips checking the bounding box after displayingthe warning about the directory. This makes it easier to save banner imageEPS files in different directories.

* Fixed a problem where ClassPag would not place header banners (bannerswith type "P", a valid classification, a non-empty request name and a positionrequest of "E") on the first column of a classification that started on anew column due to a classification start request.

* ClassPag used to omit the banners for service directories if the heightof the largest top banner plus the height of the largest bottom banner wasmore than half the height of the page. It now allows larger banners.ClassPag builds service directories assuming the worst case of the tallestbanners. When possible, you should make the banners for different widthsall approximately the same depth.

* The example backup script now exits on systems with Sentinel disk mirroringwhen the current system is not the active server.

* fix.sh now corrects reverse video on Sun consoles.

* convprod.sh now shows a syntax message if you run it without any arguments.

12/8/99

Version 1.182

* Fixed a problem where the "Equalize columns"/"Dividir columnas" commandwould not place column headers on locked columns.

* Improved the use of fonts. The /u/comp/code/bin/pcspool program (the moduleof the SCS Composition engine that creates the EPS file for the line ads)now generates a smarter encode command that does not reprocess fonts thatit has already encoded. (The encoding places characters in the positionsthat the Font Creator program expects and constructs accented characters.)

When ClassPag detects an eps file generated by the new pcspool programand the configuration file lists fonts to preload, in addition to preloadingthe fonts, ClassPag also pre-encodes them. Only encoding each font once perfile instead of once per ad makes pages view a little faster. Also, whenconverting the pages into PDF, this makes one font object for font insteadof one font object for each ad, which helps Adobe's PDF viewer which canhandle only a few thousand font objects.

* For EPS output on Level 2 interpreters, pcspool now saves its SCS-encodedfonts into global memory. The author of ghostscript studied a sample of ourPostScript output and sent me this change. It makes the gs ps2pdf distillerrun over ten times faster and make smaller output. On mip486 with a 30 MBClassPag PS file with 60 pages of Clarin line ads, before this change,gs crashed from using more than 64 MB of virtual memory after 45 minutes.After this change, gs produced a 5.4 MB PDF file after 4 minutes 42 seconds.

* The product configuration screen "Additional PostScript"/"PostScriptadicional" now has five additional "Fonts Used"/"Fuentes usadas"lines and "Download fonts"/"Cargar fuentes" flags for entering the namesof fonts to preload. The new font usage optimizations only affect fontslisted in the "Fonts Used" fields. The optimization does not requiredownloading the fonts. As before, you should mark fonts for downloadingonly if you have no way to store them on your RIP.

* The lengths of the terminal name and import directory fields are increasedfrom 20 to 30. This allows import directories to have more descriptive names.

* The command "Check for conflicts"/"Checar conflictos" now asks"Do extra scan for internal ad images"/"Buscar imagenes de avisos internos".If you say "Yes", it will check the locations if internal ads in the EPS file.This can be useful if you suspect that the eps file is corrupted.

* The Setup -> "Set Class Names"/"Fijar Nombres Clasif" has a new command"Load Class Titles"/"Leer Titulos de Clases" that helps you loadclassification names from a text file with fixed length records.It first opens a file brower where you can select a text file that containsa list of the classification titles. Then it takes you to a window whereyou can set the positions of the classification name and title on the lines.The command key (F12) opens a window to set the field attributes and toaccept the field positions or quit without doing an update.If you select "accept", ClassPag will load the fields according to yourspecifications.

* ClassPag can now handle sort files (classsrt.out files) in Mac formatwith lines terminated by carriage returns (ascii 13) instead of line feeds(ascii 10). When it detects a Mac-format sort file, it uses the scs "addcr"program to convert it.

* The Setup -> "Log Files"/"Archivos de Apuntes" menu now has an entryto run the "top" system monitor program.

* The maketar*.sh scripts now check for /usr/local/bin/tar. If they find it,they use command line options for gnu-tar instead of options for sco's tar.

* When /usr/local/bin/uemacs exists, ClassPag uses it instead of emacsto avoid problems on systems with gnu-emacs installed as "emacs".

* When reading mail, ClassPag first looks for /usr/bin/X11/mailtool if itdoes not find /usr/bin/X11/scomail.

* ClassPag can now handle the longer sort file trailer sections.SII creates trailer sections several times longer than the onescreated by SCS or VisionData.

NOTE: Sites with AdMax should install a version of the pcspool program datedon or after Dec 3, 1999, on their AdMax server in order to take advantage ofthe new font loading optimizations.

NOTE2: On Dec 3, 1999, Bob H. fixed a problem in composition with segmentedads with exactly three segments and a zero-length last segment introducedin a change on Jan 7, 1999.

He also fixed another problem where Composition wrote the unparsed text ofincompatible commands after a FL (FitLine) command into the EPS output.

Sites with segmented ads should install a new version of spice on theirAdMax and ClassPag servers.

NOTE3: This version differs from the previous version by over 2800 lines.It is for testing the new features.

12/16/99

Version 1.183

* setup.sh now checks to add /usr/openwin/bin and /usr/ucb to the pathwhen they exist.

* The font creator formula is now in the Composition distribution in$COMP_SPICE, which is usually /u/comp/code/bin/spice. To run the formula, use $TOOLS/spice $COMP_SPICE/creator.xfm creator -if fontnamewhere "fontname" is the Composition name for a font that you have alreadyentered into Composition. The creator formula creates the file fontname.fntwhich you can add into the Composition font width tables with the command fontdef -a fontname.fnt

To add a font into Composition, you need to1) locate a copy of the PostScript font file for the font (the file shouldhave the same name as the font that it contains),2) select a font name for use in Composition commands (uppercase, up to 10characters), and3) select an unused font position in Composition (a number from 11-255 fornormal fonts or a number from 1-10 for symbol fonts).

Here is a full example to enter the PostScript font FranklinGothicITCbyBT-Bookinto Composition as font FGBK in position 64:

Select an unused number, in this case 64.Set the name to "PS_FONT_" plus the number, the description to the nameof the font inside Composition, and the value to the exact PostScript nameof the font (including the exact upper and lower case of each letter and alldashes and other punctuation).

2) Exit to a unix command line and go to the directory "/u/scs/gs/fonts.site".

3) Copy the PostScript file for the font into this directory.The font file must have the exact name of the font that it contains.

4) Run the command $TOOLS/spice $COMP_SPICE/creator.xfm creator -if FGBKwhere "FGBK" is the name of the font inside Composition.The creator program will write the file "FGBK.fnt" in the current directory.

If you get warnings about not being able to find font metric files,check that the file /u/gnu/gs4/lib/printafm is executable and contains the line exec gs -q -dBATCH -dNOPROMPT -dNOPAUSE -dNODISPLAY -- printafm.ps "$@"

5) Run the command fontdef -a FGBK.fntwhere "FGBK.fnt" is the name of the font file to enter into Composition.If this gives errors about an invalid character map or keyboard map, use CHMAP='[NOMAP]' KBMAP='[NOMAP]' fontdef -a FGBK.fnt

6) If you get an error that the font table is fullMake sure that no one is running any SCS applications on the server.Dump the font table fontdef -d fontdef.dmpReinitialize the font table with /etc/init.d/scs stop /etc/init.d/scs startThen re-run the fontdef -a command to add your font.

7) If you still get a message that the font table is fullMake sure that no one is running any SCS applications on the server.Dump the font table fontdef -d fontdef.dmpYou might want to keep an additional backup with the date, for example, fontdef -d fontdef-1991216.dmpCheck the size. You can find the number of fonts in the table with fontdef -l | wc -lThe dump file should have a little under 300 lines per font. wc -l fontdef.dmpThe dump file should have a little under 10,000 characters per font. wc -c fontdef.dmpIf the sizes are about right, clear the font table with fontdef -iConfirm that the font table is empty with fontdef -lRestore the fonts with fontdef -a fontdef.dmpThen re-run the fontdef -a command to add your font.

8) If you still get a message that the font table is fullIf any SCS applications are running, they could lock the shared memoryresource used by Composition and prevent Composition from expanding the table. Shut down the server and reboot it.

* lnexe.sh (used by maketar.sh to copy executables from development areas)now makes symbolic links instead of copies when the executables are on adifferent filesystem. This saves lnexe.sh and the strip calls in maketar.shfrom writing the executables over NFS.

* maketar.sh has a new -os option to add the operating system name to thedistribution file if the current system is not SCO Unix 3.2v4.The -kit option enables -os by default.

* Fixed the Mac classsrt.out conversion under X displays.

* ClassPag now trims trailing spaces from the sort key inside ad boxesand in the status area. This allows ClassPag to show more information onthe screen for ads with short sort keys.

* makegif.sh has a new -s# option to scale gif and jpeg files.For example, to convert EPS files in /u/displayads starting with an "a"to gif files in /u/gif reduced to 1/4 of their original size, use cd /u/displayads /u/cpag/makegif.sh -gif -s0.25 a*The scale factor must follow the -s without any spaces between them.This option can create thumbnails of ads for use on web pages.

* The field "PS Type"/"Tipo PS" on the printing setup screen"Paper Definition"/"Definicion de Papel" has a new value "BEPS" thatcreates an EPS file with the bounding box trimmed to the ads on the page.If you have a page with just a service directory, you can use thisoption to convert it into an EPS file that another session couldplace like a display ad. The bounding box does not include anyextra leading around the ads, but will still have leading built intothe ads.

* The "Classified Heading Specifications"/"Especificaciones de Encabezados de Clasificaciones" configuration screenhas a new field "Place wide headers over liners"/"Colocar cabezales anchos".When this field is "Y", ClassPag will place multi-column class headers overcolumns of ads (for classifications that have multi-column class headers)instead of repeating the single-column version.

* Expressions in print commands and in folio template file names can usethe new variables "RequestName" and "RequestPageNumber". If the page hasa request, RequestName is the name of the request and RequestPageNumber isthe page number counting from the first page of the request.Otherwise, RequestName defaults to BookName and RequestPageNumber defaultsto BookPageNumber.For example, if "garg" is a Garage sales service directory on pages 5 to 8,on page 7, RequestName would be "garg" and RequestPageNumber would be 3.If you are creating EPS pages for square-offs that you will pick up as bannersin a later session, you can use these variables to save the pages with fixednames in a common directory so you do not need to set the file name when yousave them or modify the banner image file names when you pick them up.

* ClassPag did not ignore all parts of class heading type banners whenthe count was 0.

* Fixed a problem where ClassPag would not place ads under manuallypositioned multi-column class headers.

* Fixed a problem where ClassPag would not place a classification bannerif the class at the top of the column had line ads but no class header.

* Added shell scripts, make files and other build scripts to maketard.sh.

* maketar.sh now handles systems without a "-level" option in find.

12/20/99

Version 1.185

* Windows to modify banner text segments now have the three commands"Copy main and finish to start"/"Copiar texto y fin a principio","Copy start and finish to main"/"Copiar principio y fin a texto" and"Copy start and main to finish"/"Copiar principio y texto a fin"to copy two parts of the current segment to the third part.This makes it easier to redesign a text segment if you entered a longsequence of commands into the main part and then want to divide itinto start and finish parts to reduce the commands visible to users.

* Fixed a problem where the "call CopyImportFiles" value for theimport command would not let you see weekly or special import area.

* ClassPag now saves the "Level First Page" option of each work areain its control record. This allows papers that paginate differentdumps with different level options to set the correct level optionin the control record for each import directory instead of settingthe level option manually in the product configuration setup.

* The pagination parameters screen has two new fields,"Level Pages"/"Nivelar Paginas" and "Initial Level"/"Nivelar Inicial".The first field shows the current level option.You can set it to "NO", "INIT", "ALL" or "LAST".The second field shows the level option in the product configuration.

* The page display command window has a new entryCmd -> Misc... -> "Level pages"/"Nivelar paginas" to change the level value.If the liners are flowed and you change the level option, ClassPag willautomatically reflow them using the new level value.

* The "Level First Page" option to level the first page now producesbetter results when paginating front to back and the edition hasmore pages than needed. In general, when leveling any pages,you should set the page count to the minimum value possible toavoid overflow pages.

* The "Ad Importing"/"Importacion de Avisos" product configuration screenhas a new field "Class Suffix Length"/"Largo de sufijo de nombres de clases"to nest classes with suffixes. For example, if the field is set to "2",the ClassPag import procedure will nest "123AA" under "123".Use this for interfaces that append a fixed length sort key classifications.Every classification in the sort file must have a suffix of the same length.Higher-level classifications, like "123" must have spaces in the suffix area.This field does not apply to the cardex file.If the interface writes class headers only for higher-level classifications,and you want column headers over each column, you can set"Repeat heading of parent class" to "COPY".

* If two classes have the same sequence number, ClassPag now orders themby their class name. This helps with suffixed classifications becauseClassPag must assign them a sequence number of 0 in order to precedenon-suffixed classes under the same parent classification.Using the order in the sort file would not work because it would requireintegrating display ads in order, and some interfaces append the displayads at the end.

* ClassPag no longer includes an XBoundingBox comment with pages createdwith the type "BEPS". ClassPag needs the XBoundingBox comment to find thesize of the imaged page area when building spreads from a posting area,but the comment has the wrong size for converting square-offs on a pageinto ads.

* Changed setup.sh to define SPICE_PALETTE on systems with old versions of/u/scs/spicedef that do not set it. When SPICE_PALETTE is not set correctly,den menu bars will be blue instead of gray.

* Added a -v option to testdef.sh to create a verbose def listing.

* Added "-man" and "+man" options to maketard.sh.-man (the default) includes the manual source.+man skips the manual source.

12/21/99

Version 1.186

* The import step to fix the class areas now also updates class titles.If the sort file does not assign a class title or sets it to the class number,ClassPag will check in the class name database and if it does not find a title,it will take the title of the parent. This allows ClassPag to generate usefultitles when using class name suffixes and suffixed classes do not have headers.

* The configuration screen "Ad Importing"/"Importacion de Avisos" has a newfield "Update class titles from class names"/"Actualizar titulos desde basede datos". When this field is enabled and the import step to fix the classareas finds an entry for a class in the class name database, it will setthe class title in the work area to the class title in the class name database.Use this only when the interface creates dump files without useful data in theclass title field. For example, some front-ends place the numeric ad numberof the class header in the title field. Otherwise, if your front-end writesreasonable values, you should set this field to its default value of "N".

* Fixed a problem where ClassPag would not place a classification bannerwhen a "Level First Page" option was enabled.

* The maketar scripts now remove files with "junk" in their name fromthe file list.

* The fixperm.sh script uses the xpg4 version of the "id" program to findthe group id if the normal "id" program does not support "-g".

12/29/99

Version 1.187

* If the import procedure did not see a classification with a parent of ******,it would create an entry for the parent of the final class it processed.It now creates the entry only when there is no import fixup formulabecause the fixup process is smarter about nesting and sequencing classes.

* setup.sh now adds fonts.site* directories to GS4_INC similar to loadfont.sh.

* Added WORK to the environment variables unset by unsetcp.sh.

1/12/00

Version 1.188

* ClassPag can divide long ads into segments automatically.In the "Legal and Segmented Ad Specifications"/"Especificaciones de Avisos Legales y Segmentados" configuration screen,the field "Minimum Auto Seg Depth"/"Auto Segmento Minimo" sets the smallestad that ClassPag will divide into segments and the field"Default Auto Seg Depth"/"Auto Segmento Altura" sets the size of the segments.To enable segmenting, you must set both of these fields larger than 0.The field "Auto Segment Ads"/"Dividir Avisos" has the values "NO", "TOP" or"BOT". "NO" means not to segment ads. "TOP" divides ads from the topwith an initial segment of "Minimum First Segment"/"Primero Segmento Minimo"."BOT" divides ads from the bottom with a final segment of"Minimum Last Segment"/"Ultimo Segmento Minimo".ClassPag currently segments only ads in legal classes.It segments the ads during the import step, so when you change the parameters,you must reimport the ads for them to take effect.For the best results, the segmented ads should have a regular format witha fixed line spacing. If the ads start with a variable title or logo and thenchange into a fixed format, you should divide the ads by the bottom and set theminimum first segment to the maximum expected size of the variable part.

* Agate ads can have the request "SEG1", "SEG2" or "SEG3".Use SEG1, SEG2 and SEG3 to divide a single eps stream into segments asa last resort for interfaces that know the depths of good break points butcan not generate a separate eps stream for each segment.You can not mix SEG1, SEG2 and SEG3 with other segment flags in the samead. All of the segments must have the same eps file offset and length.

* When a classification with a multi-column class header has subclassificationsthat can use its column header, ClassPag treats the copied column headers ascompatible with the parent class header when it checks to replace single-columnheaders with a multi-column version.

* The "Margins for Paginated Area within Pages"/"Margenes para Area Paginadadentro de Paginas" configuration screen has a new field"Warn if the margins are too large"/"Advertir si las margenes son grandes"to display a warning when you print pages if the size of the margins plus thesize of the page image is larger than the size of the paper or film that youare printing to. If the page image alone would fit, ClassPag can reduce themargins in order to print the page. The default value is "Y" to show thewarning.

* The "Margins for Paginated Area within Pages"/"Margenes para Area Paginadadentro de Paginas" configuration screen has a new field"Warn before printing all pages"/"Advertir antes de imprimir todas paginas"to ask if you are sure when you select an option that will print all of thepages. The default value is "N" to suppress asking the question.

* maketar.sh now uses gnu-find instead of the system find when it exists.The SCO 3.2v4.0 find does not support -level or -prune.

* Fixed the date sorting in the makeesc6.sh script for Vision Data interfaces.The Vision Data interface passes dates as MM/DD/YYYY. When the year wouldchange, if you made dumps for the same edition in both December and January,the sort in the menu would think that the December dump was more recent thanthe January dump.

* The "y)es N)o c)ardex-file only s)ort-file only >" prompt in the makeesc6.shscript used to treat "Y" as "y" and "S" as "s". Now uppercase replies show allof the dumps instead of just the most recent dump. You can use the uppercasevalues if you think that the script is not showing the correct dump or if youwant to see an old dump. Since some sites run the script in a small window,the prompt does not have room to show the new options.

* The list in the "Ads -> Agate Ads" now shows the ad depth in centi-points,the ad request flag, the ad color flag, and the eps length in bytes.You can use the centi-point depth and the request fields to verify theauto segmentation. You can use the eps length field to scan for ads withlarge logos.

* When ClassPag floats multi-column ads, it now will preserve the configuredleading values, even if that would leave the ad uncentered. This change helpsClassPag combine cut rules because ClassPag only combines cut rules that havethe same position, and ClassPag will not reduce the leading below the configuredvalue in order to line up ads.

* Outext file ad records now include the class name in columns 1-10 of card 2and the class title in columns 11-20 of card 2. The classification informationshould help to identify ads, and it could help when writing reports.The interfacing guide is not clear about columns 5-10, so the positionsmight need to be changed.

* A pre-scan to find the smallest ad within the look-ahead range did not checkfor compatible sort keys and could have started a class in a column withoutenough space.

* If you modify a product configuration record and quit without saving therecord, ClassPag will ask if you are sure. This reduces the chances oflosing changes by accidentally leaving with a control-Z.

1/21/00

Version 1.189

* In the banner setup window, the command"Copy from another entry"/"Copiar de una otra entrada" to copy a bannerand its images now asks"Show all products"/"Mostrar todo de los productos" to control whetherthe copy window shows banners from all products or just the current product.The copy window now also has a command to ask the question again, so youdo not have to close and reopen the window if you change your mind.Limiting the banners in the window should make it easier to find and copythe images from one banner to another within the same product.

As a reminder, the copy window shows all of the available banners.Select a banner, and then set the banner name and other fields to the valuesthat you want. ClassPag will copy the banner record, image records and textrecords for that banner into the current edition. If you set the banner nameto a name that already exists, ClassPag will leave the banner record alonebut will copy any images that do not already exist.

* The commands in banner and page name windows to enable and disable square-offsnow change banner records for edition 0 in addition to the current edition.The commands used to leave banners in edition 0 untouched if a banner existedin the current directory so papers with several editions could have a defaultbanner in edition 0 and a few specialized ones in other editions.If your banners are set up that way and if you regularly enable and disablethem, you should make versions of the banner for all editions.Sites with banner margins sometimes enter the common margins images intoa banner in edition 0 and the edition-specific top and bottom images intoedition-specific banners. In order to enable or disable banners, they mustupdate both the common and edition-specific banners. This change shouldhelp where people forgot to update the common banner. If this causes problemsin other sessions that need the common banner, you should use the"Copy from another entry" command to copy the images of the common banner intoall of the edition-specific banners and then delete the common banner.

* The "Vertical Spacing Specifications"/"Especificaciones de Espaciado Vertical"configuration screen has a new field "Max Repeat"/"Max" for the maximum numberof times to repeat line ads used to fill the front page when"Fill Front Page w/ Liners"/"Rellenar Pagina Primer con Agates" is enabled.The default value of 0 allows an unlimited repeat count.A value of 1 prevents repeating line ads.

* The "Legal and Segmented Ad Specifications"/"Especificaciones de AvisosLegales y Segmentados" configuration screen has the new fields"Legal Rules for Agate Ads"/"Lineas para Lineales" and"Display Ads"/"Destacados" to control the placement of cut rules.If the field for agate ads is enabled, ClassPag places cut rules accordingto the "Horizontal Rule Before"/"Linea Horizontal Antes" and"Horizontal Rule After"/"Linea Horizontal Despues" values for legal ads,otherwise ClassPag uses the values for agate ads.Similarly, if the field for display ads is enabled, ClassPag places cut rulesaccording to the values for legal ads instead of the values for display ads.By default, ClassPag uses legal ad specifications for legal agate ads butdisplay ad specifications for legal display ads.If you build legal display ads using formats in your classified front-endinstead of importing them as EPS files, you might need to set both of thesefields to "Y".

* The classification "Start Request"/"Iniciar Solicitud" field has the new value"2" to move a classification forward from page 1 to page 2. Papers that fillthe first page with special requests and fillers and then start flowing normalclasses on the second page can use "2" instead of "T" (start at the top of thenext page) for cases when the special requests overflow onto a second page.With "2", ClassPag will start the normal classes wherever the special classesstop on page 2, while with "T", ClassPag will start the normal classes onpage 3.

* The classification "Randomize"/"Aleatorio" field has the new values"G" and "I". "G" marks a classification as classification for legal adswithout changing the lookahead. "I" sets the lookahead of a classificationto the maximum (infinite) value without marking a classification for legal ads.

* The "Vertical Spacing Specifications"/"Especificaciones de Espaciado Vertical"product configuration screen has the new fields "Legal Types"/"Tipo" that pairwith the fields "Legal Classes"/"Clases con Legales". The type fields have thesame possible values as the classification "Randomize" field.The type defaults to "L" for legal classifications with an extended lookahead.

* The preview command "Edit square-off ranges"/"Editar encuadrados" now asksyou to reload ads if you enable or disable a square-off. Before this change,you had to exit to the initial screen and restart the pagination session inorder for the change to take effect.

* The preview command "Position..."/"Posicion..." now has the new command"Paste a filler by wid"/"Traer relleno/ancho" to position a display filler.It works like "Paste a filler"/"Traer relleno" except that it shows thefiller size before the filler name so you can use the keystrokes "1" through"9" to jump to a filler of that width no matter what method you used toname your fillers.

* The preview command "Lock..."/"Bloquear..." has the new commands"Mark page range"/"Marcar rango de pags." and"Unmark page range"/"Desmarcar hilera de pags." to mark or unmark a rangeof pages for printing. When you select one of these commands, ClassPagopens a form where you can enter the other page of the range.ClassPag will mark or unmark all pages between and including the page youentered and the current page.

* When ClassPag unflows ads, it now keeps class headers between display adsand other display ads or the top of the page (for products with headers atthe tops of pages). This should produce better behavior for sites thatplace class headers between display ads.

* When ClassPag unflows ads, it now unflows one-column display ads that itflowed in-column instead of dummying. This should prevent strange ad stackson pages with many one-column display ads.

* Fixed a problem where Command -> Ads... -> Edit the ad position wouldalign the bottom of the ad at the position instead of the top of the ad.

* Fixed a problem where ClassPag would not place classification bannerson pages with island ads. In general, ClassPag does not place classificationbanners on pages with ads positioned from the top of the page. When ClassPagsees an island ad at the bottom of the top stack, it now temporarily pushesthe ad to the top of bottom stack.

* Fixed a problem where positioning a copy of an island ad would changethe original into a normally positioned ad.

* If the setup has "N" for both pyramid left and right, ClassPag now actsas if they were both "Y".

* Fixed problems in ad positioning and column justification that could causemulti-column ads stacked from the top of the page to overlap.

1/21/00

Version 1.190

* When ClassPag writes EPS output, the generated postscript uses a differentsave area than when it writes postscript output. This change should fixproblems when inserting EPS output from one run into a later run.

1/27/00

Version 1.191

* ClassPag can now trim leading from internal ads. In the productconfiguration, class headers, agate ads and display ads have a new field"Depth Adjustment"/"Ajuste de Alto" to specify the amount of space to add orremove to the depth of the ad. Use a negative value to trim leading.If ads have extra space at the top, use "Position Adjustment"/"Ajuste dePosicion" to raise the ad (which pushes the extra space above the top of the adand opens space at the bottom of the ad) in addition to the depth adjustment.(Positive Position Adjustments move the image up; negative Position Adjustmentsmove the image down.)For example, to remove space from both the top and bottom of ads, set theposition adjustment to the amount of extra space on the top and the depthadjustment to the negative of the combined amount of extra space on the topand bottom. ClassPag applies the depth adjustment at import time rather thanpagination time, so you must rerun the "read" step of the import command if youchange the value.

* You can now select the action of the "f" hotkey (which opens a list offillers) through the "List Fillers by"/"Ordenar rellenos por" field on the"User Preferences"/"Preferencias de Usuarios" product configuration screen.Select "NAME" to show the filler name first or "SIZE" to show the size first.

* Expressions in print commands, banner text and folios can now access theproduct id through the ProductId variable. If a site has several productsand some products need slightly different print options (for example, whenthe print command generates an eps file), you can test the product id to makea single smart print command rather than depending on users to select adifferent print command for each product.

* Added a -mopen parameter to the rcpuniq.sh script that generates several"open" commands in the ftp script for ftp servers that sometimes do not acceptnew connections under heavy loads. If you have this problem, you shouldincrease the number of connections in "inetd" or "ftpd" (depending on howyou start the ftp server). For example, on SCO OpenServer 5, inetd has a-l option to specify the maximum backlog of requested connections.

* Fixed a problem where ClassPag would flow column headers between line adsof different classes when the classes had only column headers (and no normal,flowable headers) and the option to place class headers over display adswas enabled.

* When ClassPag is leveling pages and a page that needs a class banner hassome space but not enough for the banner (possibly due to an island ad),ClassPag will increase the leveling height instead of omitting the banner.

* In the box information window, ClassPag now labels the ad type"Type"/"Tipo" instead of "ElemType"/"TipoElem" and the ad description as"Desc"/"Desc" instead of "Source"/"Creador".

1/31/00

Version 1.192

* ClassPag can now look ahead over different classes. The classes must havethe same parent class, no flowable class header and the same column header.This can happen when you divided a class into subclasses by sort key values inorder to place display ads with line ads with both the same class and sort key.The product configuration screen "Agate Ad Specifications (Continued)"/"Especificaciones de Avisos Agate (continuado)" has a new numeric field"Classes Look Ahead Amount"/"Poder Ver Adelante entre Clases" with thenumber of additional classes to scan. The default is 0, which disablesthe scan into other classes. A value of 1 would allow the look ahead scanto enter the next class. The sort keys of ads in the additional classesmust still match the first unplaced ad in the original class for thelook ahead sort match length.

* Added a new position command "Position same height"/"Posicion al alto mismo"to position a copy of a filler or to move the original of a display ad to thecolumn that you select but at the same height as before. Use this commandif you want to place a copy of a house ad at the same height on several pages.

* The spread field "Add a Slug Line"/"Agregar una linea libre" has the newvalues "YES", "NO", "SINK", "PROOF", "PSLUG", "PSINK" and "DEMO"."YES" writes a slug line (the same as "T")."NO" omits the slug line (the same as "F")."SINK" writes the slug line starting from the height of the tallest ad insteadof the top of the page."PROOF" writes the word "PROOF" over the page in gray scale."PSLUG" writes a proof message and a slug line."PSINK" writes a proof message and sinks the slug line."DEMO" writes the word "DEMO" over the page in gray scale.

If you are generating partial-page square-offs for paste-up, the SINK optionsplace the slug line closer to the square-off block so you can trim the blockwithout losing the slug.

When you print test pages during training, the PROOF options help to preventaccidentally publishing a test page.

* The printer definition database has the new fields"Can Print PS"/"Imprimir PS" and "Text"/"Texto".The fields tell whether the printer can handle PostScript files and text files.The default value is "Y" to allow both PostScript and text.You should set RIPs for PostScript only and line printers for text files only.Windows to select printers now check these fields.

* The product configuration screen for "User Preferences"/"Preferencias deUsuarios" has the new fields "Report Printing Pop Up Shows: Print"/"Pantallapara imprimir mostra: Imprimir" and "Select"/"Seleccionar" to set the optionsin the "Report Completed" pop up. The default value is "Y" to producea pop up with the choices "View", "Print", "Select" and "Done"."View" views the report in a text editor."Print" prints the report to the printer specified by the "Report" entryin the paper database."Select" shows a list of printers and sends the report to the printer thatyou select. The "Select" option is new."Done" closes the pop up.If all users always print reports to the same printer, you can enable "Print"and disable "Select".If each user has their own printer, you can disable "Print" and enable "Select".Otherwise, you should leave both "Print" and "Select" enabled.

* The product configuration screen for "Margins between Pages whenPrinting"/"Margenes entre Paginas cuando se Imprime" has a new field"Thickness of Border"/"Grosor de Borde" with the thickness of the lines in thebox to draw around missing ads. The default is 0 for a hairline rule, whichmight be hard to see on a high resolution output device. ClassPag scales theborder thickness with the page to keep it in proportion on reduced pages.Use a negative value to omit borders.

The option in the list to rescan the images now reloads the list so youno longer need to exit and reopen the list to see the updates.

The reports of missing and missized ads in the current run now show anabbreviation of the ad type instead of its internal numeric value.

The reports of missing and missized ads in all books now show an abbreviationof the ad type. Also, the reports have been incorrect since a change to thead database in version 1.178.

* The filter to remove special characters from file names now removes initialperiods (.) and allows dashes (-) in any position but the first.This allows you to create save area with dashes in their names.

* Fixed a problem where the missing ads and incorrectly sized ads reportscould show stars for the width of ads with a 0 width.

2/3/00

Version 1.193

* The pop up in the command to scan for conflicts that asks if you want toscan the EPS of internal ads now shows the size of the ceps.out file.

* Added a -name option to copyuniq.sh. With the -name option, the firstparameter should be a file to create instead of a directory.You can use this as a copy command with reversed arguments for generatingcommand lines in the printer database for storing eps files.

* When a multi-column ad has ads under it in any column, ClassPag will flowliners under the other columns, even if the space is less than the classifiedheading minimum flow depth.

* Fixed a problem where ClassPag would sometimes include the space of thecolumn header when estimating the amount of space needed in a column forclasses with no main class headers.

These changes will need testing to ensure that they do not cause ClassPagto place headers in columns with no room for line ads.

* Note: the classified heading minimum flow depth is the minimum space thatmust remain for flowing other class headers and line ads after placing aclass header. It should not include the depth of the class header.

* Increased the number of legal classes in the product configuration from threeto six. This provides more control over setting special attributes for classes.

* The view box command now writes the ad number in the %%Title document comment.

* The page display now shows text in small ad boxes that it used to leave empty.

* When the rcpuniq.sh script generates ftp commands, it now does a "pwd" commandafter setting the directory and a "dir" command after sending the file.This adds more information to the log to confirm that the files were sent.It also has a new "-sleep #" parameter to change the number of seconds to sleepin the xterm from the default of 3. You can set it larger for more time toread the xterm text.

* The pagination formula closes more files when you leave. This might fixproblems where the column reservation window would show old values if youpaginated, then left, copied from a work area, and then returned to apagination system.

* Added "Mark all pages"/"Marcar todas las pags." to the Command -> Lockpagination menu to select all of the pages.

* When you set ClassPag to leave the last column unjustified, it used tostill justify columns with less space than either the column justificationthreshold or the minimum flow depth. It now also justifies columns withless space than the minimum unjustified depth, "Min Unjustified Depth"/"Prof. Min. No Justificada" on the "Vertical Spacing Specifications"/"Especificaciones de Espaciado Vertical" product configuration screen.For example, if most of your fillers are at least an inch and if your columnjustification threshold and minimum flow depth are both only a fraction ofan inch, you could set the minimum unjustified depth to an inch. That way,ClassPag will justify the final column when it has less than an inch but stillcreate a reservation if the final column has an inch or more.

* Added control over whether ClassPag unflows one-column display ads thatare not flowed between line ads. Set the field "Unflow In-Column Display Ads"/"Desfluir avisos destacados puestos en columna" on the product configurationscreen "User Preferences"/"Preferencias de Usuarios" to "Y" to unflow mostone-column display ads (the behavior added in version 1.189). The defaultvalue of "N" keeps most one-column display ads positioned when you unflow.

2/5/00

Version 1.194

* The paper definition has the additional "PS Type"/"Tipo PS" values of "BREPS"and "CREPS" that work like "BEPS" and "CEPS" except that if the rightmost usedcolumn is not the rightmost column of the page, "BEPS" and "CEPS" set therightmost edge of the bounding box to the rightmost edge of the last columnwhile "BREPS" and "CREPS" extend the bounding box by the width of the gutterin order to capture vertical cut rules.For example, on a 10 column page with only the first 8 columns used,"BEPS" and "CEPS" would set a width of 8 columns plus 7 gutters while"BREPS" and "CREPS" would set a width of 8 columns plus 8 gutters.Use "BEPS" and "CEPS" when making EPS files that you will pick up as ads orbanners in other ClassPag sessions.Use "BREPS" and "CREPS" when making EPS files that you will paste intoother programs.

Note that the "pstoepsf.sh" procedure to make previews depends on a boundingbox that starts at the lower left of the page (position 0,0). If you makepreviews, you must use the "EPS" value. If you use any of the other valuesthat crop the page, tbe preview will be offset by the left and bottom margins.

* Added a script interface/copyfonts.sh to copy a set of files or directories to/u/scs/gs/fonts.site. The script uses gnu-cp --update option to copy only filesthat are new or more recent. The script has a "-to name" option to change thedestination directory. The default source directory is /px-b/psfonts.

* Fixed a problem where if you deleted all of the line ads in a classificationin a square-off, ClassPag would still place the class header.

* Added a page display option Command -> Ads ... -> "Convert all ads to EPS"/"Convertir todos a EPS" that converts every internal ad to an EPS file.It works the same as running the command to convert an ad into an EPS filefor every internal ad. During a new installation at a site that passes fillersor banners in their dump files, you can use this command as a quick way tomake EPS files for their fillers and banners. You should probably temporarilyrename your /u/displayads directory and make a new one before running thiscommand to make it easier to clean up. The command will process every adin the databases but will only be able to convert ads in the classes selectedin the current session.

* The page display centers text in boxes that are large enough for only a singleline of text. This makes the text easier to read.

* Fixed a problem where ClassPag would place headers over or under display adsto separate ads of different classes but with class headers that were bothcopies of the same header.

This change affected several places where ClassPag decides whether to placea class header and will need testing to check that it works with allcombinations of configuration parameters, especially "Place over display ads"and "Flow headers under display ads".

* Fixed a problem where ClassPag would sometimes not place the main header fora class with only a header that contained sub-classes that copied its headerif any of its copies were pre-positioned (for example, above a display ad).

* Fixed a problem where if you set ClassPag to place headers over display adsand the class of the display ad had only a copy of a header from its parentclass, ClassPag would place the header even if it would later flow line adsof a compatible class over the display ad.

* Fixed a problem where ClassPag would show a conflict for line ads directlyunder a display ad of a different but compatible class when "Flow headersunder display ads" was set to "NEVER" or "CLASS".

* ClassPag now accepts the two-letter Layout position requests in lower casein addition to upper case. This makes it easier to enter them by hand.

2/11/00

Version 1.195

* ClassPag can now save ad positions to a remote system. If your interface alsowrites the sort and eps files to the remote system, you can restore your workby importing the sort and eps files on the remote system and then repaginating.This is for sites with a backup ClassPag server but without disk mirroring.In the "User Preferences"/"Preferencias de Usuarios" product configurationscreen, set "Use rcp"/"Usar rcp" to "Y". Then enter up to three pairs ofprimary and backup systems in the fields "System"/"Sistema" and"Backup"/"Respaldo". When you are on one of the primary systems and save yourad positions, either manually or through an auto-save, ClassPag will use a "rcp"command to copy the "request" database (with ad positions), the "incols"database (with column reservations) and the "inpages" database (with per-pageleading and printing statuses) to the same directory on the backup system.The backup system must contain a directory with the same absolute path.You might need to set symbolic links on the backup system.The backup system must allow the primary system to access it through rcp andrcmd from the account that you use to enter ClassPag on the primary system.You will probably need to create a $HOME/.rhosts file on the backup systemwith one line that contains the name of the primary system.

* When ClassPag squares-off service directories with line ads, it now does adeeper look-ahead than it did before. It should behave better on servicedirectories with only a few ads.

* The look-ahead starts one ad sooner on line ads. This should produceslightly tighter pages.

* Changed the default "First line in ad boxes" for class headers from NUMBER (toshow the ad number) to CLASS (to show the classification). The ad number forclass headers is often just an insertion number or a generated string withlittle descriptive value, while the class number should almost always be useful.

* The page display sometimes fits one more character into ad boxes.

* Fixed a problem where ClassPag would place unrequired class headers abovedisplay ads with line ads above them from a different class but with a copyof the same class header.

As with the class header changes in the previous versions, this change has thepotential to break class header positioning and needs testing.

* ClassPag checks the book size database before displaying the page list on thestatus screen. This should fix problems where the list showed absolute pages.

* The new configuration variable "Show Printing Age"/"Mostrar si imprimida" onthe screen "Screen Display Preferences"/"Preferencias de Visualizacion" showsa paragraph symbol after the page number on the page display.The symbol is green after you print a page. If you repaginate, it turns redto show that you might have changed the page after printing it.

* ClassPag now stores the print flags for each page in the input pages databasethat also contains other page information like colors and restrictions. Thisallows ClassPag to retain the list of printed pages if you exit and then reopena session. ClassPag clears the print flags when you use"Import Ads -> Read ClassPag Files".

* The "Page Information" window now has a column to show the print status anda hot key "Clear printed flag on all pages"/"Borrar sena de impresion de todaspaginas" that clears the flag on every page.

* Fixed a problem on the edition parameters start up screen where thereservation window would act like the pages had only one column if youjumped directly to "Page Reservation Info?".

* Fixed a problem where ClassPag would sometimes squeeze leading out ofthe last ad in a column with enough room for the ad but not the ad and itsconfigured amount of leading. It now positions the ad on the next column.

* When you move a square-off that contains agate fillers and you selectthe option to remove only the ads on the square-off, ClassPag is morecareful about removing the agate fillers. If any stay behind, ClassPagsets the line-ad lock flag on the page.

NOTE: This version has over 3000 lines of changes from the previous version.

2/11/00

Version 1.196

* When you save a work area and you have a remote backup system defined with the"Use rcp", "System" and "Backup" configuration parameters, ClassPag also does arecursive remote copy to copy the saved work area to the backup system.

* Added the sort file position code "TOP" that sets a request for the top ofa page the same as "TP" and "CABEZA".

* Fixed a problem where viewing all of the segments of an auto-segmented ad(clicking on "view boX" or typing "X" (but not "x" which shows the currentsegment)) would show a copy of the ad for each segment.

* Fixed a problem where viewing all of the segments of a segmented ad wouldshow just the current segment if you selected the final segment.

* Fixed a problem where viewing any single segment of an auto-segmented adwould always show the initial segment.

2/24/00

Version 1.197

* The control database has new fields for the default classification fixupentry and the default load type.The field "Fix Classes Id"/"Clases Cargadas" contains the default entry and"Type"/"Tipo" contains the default type of either "LOAD" (to set just theclass nestings) or "SEQ" (to set both the nestings and the sequence numbers).The fields after "Current"/"Actual" contain the most recently appliedclass fixup entry and type.If you have the default fixup entry set, the first time you select "Paginate"from the top menu and enter the classification list, ClassPag will ask if youwant to load that entry. If you say "No", ClassPag will open a list of all ofthe entries as before.If you have the default fixup type set, ClassPag will use that type insteadof the values specified by the product configuration field"Ask to Load Saved Class Nesting"/"Preguntar a cargar nidos de clases".

If you use different fixup entries for each day of the week or for each edition,you can pre-load the default fixup entry into the control record of each importarea to reduce the chances of loading the wrong one for that area.

* When ClassPag auto-segments long legal ads, you can now specify a clippingregion adjustment. The "Legal and Segmented Ad Specifications"/"Especificaciones de Avisos Legales y Segmentados" product configurationscreen has a new field "Auto Seg Clip Adjustment"/"Adjuste Clip Para Auto Sg"to adjust the clipping regions above and below cut segments of ads.If you have a large clipping region for normal ads, you can set the autosegment clipping adjustment to a small negative value to prevent partiallines of text from adjacent segments from appearing.

* Fixed a problem where a newline (ascii 10) or carriage return (ascii 13)in a sort key could cause ClassPag to make pages with bad postscript.ClassPag writes a postscript comment with the ad number and sort key beforeeach ad. A line-ending character in the sort key would stop the postscriptRIP from ignoring the rest of the comment line. ClassPag now convertscontrol characters in the sort key into spaces.

* interface/makeall.sh copies executables with the gcp --update option when/usr/local/bin/gcp exists to avoid unnecessary copies that could causeproblems if two people do imports at once.

* The "mapclass" interface procedure for sites sending text dumps now rebuildsthe classification table each time you load ads instead of just the first time.This fixes problems where running the procedure could produce different resultsif you ran it a second time without leaving.

* setup.sh sets DISPLAY to scoserv1c if the login name contains "ss1c".

2/29/00

Version 1.198

* Added support for printing several copies of the same page.This can be useful for sites with manual paste-up that have several editions.

The Spread database has two new fields "Number of Copies"/"Copias"and "Prompt"/"Preguntar". "Number of Copies" is a numeric value withthe number of copies to print. "Prompt" is a boolean value that tellsClassPag whether to ask for the number of copies.If "Prompt" is enabled, the value in the "Number of Copies" field isthe maximum number of copies that you can select.The default "Number of Copies" is "1" to print only one copy.The default "Prompt" is "N" to bypass the prompt.

Printers with values entered in the "Pages Directory" or "Spool Directory"fields do not support sending multiple copies of pages.

Print command expressions can access the two additional numeric variables"NumCopies" and "CurCopy". NumCopies is the number of copies, and CurCopyis the number of the current copy from 1 to NumCopies.Print commands that generate file copy commands instead of print commands,for example, ones that copy to a spool folder, can add "CurCopies" into thegenerated file name to avoid overwriting files.

* Added a procedure to scan for fillers with the same names as ads.From the pagination statistics screen, use Ads -> Display Ads or Agate Adsand then the command key (usually F12) and select"Check for ad number conflicts"/"Buscar conflicto entre nombres de avisos".ClassPag positions items by their ad number and might build pages incorrectlyif they contain fillers with the same names as ads.

* Changed copyuniq.sh to show the date and file listings to help track downwhat happened when it has errors sending files.

3/3/00

Version 1.199

* The control database Fix Classes Type field now accepts the value "NO"to suppress the window to load classifications even if it is the defaultfor the current product.

* Fixed a problem where auto-segmented ads could have their first segmentplaced out of order.

* Removed a warning about an invalid value when you started a paginationsession with "Ask to Load Saved Class Nesting" set to "NO".

* Fixed a loop added in 1.126 that could happen when flowing segmented ads onoverflow pages.

3/29/00

Version 1.200

* ClassPag now supports segmented ads with segments more than one column wide.ClassPag will flow the segments in order and allow you to drag ads with themouse in the same way as for single-column segmented ads.In the sort file, all segmented ads (whether single or multi-column) mustbe marked as agate ads (A in the first column) and not display ads (D in thefirst column).

* When ClassPag loads a classification with segmented ads, it sorts the adsby their sort key and then by their ad number. It no longer considers thesort file position in order to allow ads with mixed internal and externalsegments.

* Under X, the control-c keystroke now cancels print commands and searchesin lists. When you run the command to print all of the pages, ClassPag checksfor a cancel request after each page. For now, the cancel keystroke is set tocontrol-c whether or not the keyboard map defines control-c as the cancel key.

* Updated the Linux port from Slackware 3 to Red Hat Linux 6.0.

* Updated the tar commands in maketar*.sh to work with gnu tar under Linux.

* When ClassPag opens a preview display for an edition with three or fourpages, if the display would have more than four pages, it resets the displayfor a view with two pages across and two pages down.

* ClassPag is now smarter about justifying space between multi-column ads.Errors in the justification code could cause ClassPag to overlap ads, sobe careful to watch for this when using the next several versions.

* Fixed a recently introduced problem that could create columns with allfillers when a display ad would not fit next to its line ads.

* Fixed a problem where ClassPag sometimes would not justify columns near thefront of the edition when using front-to-back pagination.

NOTE: This version has over 2900 lines of changes from the previous versionincluding over 1000 new lines. Almost all of these changes are for handlingmulti-column segmented ads and will need testing.

5/4/00

Version 1.201

* When a column range has headers and a single wide segmented legal ad,ClassPag now shifts the ad up instead of down.

* ClassPag can now turn multi-column line ads into display ads to make themeasier to position manually. The configuration screen"Agate Ad Specifications (Continued)"/"Especificaciones de Avisos Agate (continuado)" has a new field"Convert if multi-column"/"Convertir si multi-columna" that defaults to "N".If you set the field to "Y", when you import sort files, ClassPag willconvert non-segmented multi-column agate ads into display ads, and whenyou print pages, ClassPag will treat multi-column internal display adslike agate ads when it places cut rules.

* Conflict checks are now tighter for display ads in classifications withoutline ads. ClassPag used to allow those display ads on any page that containedline ads in any classes below the parent of the class of the display ad.Now it only allows columns under line ads of the next or previous class.For example, if classes are nested by hundreds and classes 101 and 103 haveline ads but class 102 does not, ClassPag used to allow display ads for class102 under the line ads of any 100-level class, but now it only allows displayads for class 102 under the line ads of class 101 or 103.This change does not affect how ClassPag places display ads.It still tries to place them as close to their classification as possible.The change one affects which ads show as conflicts on the screen.

* When you specify the colors of ads in a classification, you can now specifydifferent border colors for line ads and display ads. This helps todifferentiate display ads from line ads, especially in classes that havemany one-column display ads. The classification color database has a new field"Display Border Color"/"Color Borde Destacado" for the border color of displayads. It defaults to the border color for agate ads if it is empty.

* The agate and display filler configuration windows now have a new option"Fix filler sizes"/"Fijar los taman~os de los rellenos" that walks youthrough any fillers that are too small or too large. Agate fillers must beat least the depth of the column justification threshold. Display fillersmust have a depth greater than zero. All fillers must have a depth of atmost the height of the page. The new option shows you which fillers have badsizes and then lets you deactivate small fillers or reduce the size of largefillers.

* The Command -> Pages menu has a new option "Modify Lead. on Range"/"Modificar Int./Rango" to change the leading on a range of pages.The range starts from the current page. After you select the option,ClassPag will prompt for the ending page, which can be before or afterthe current page. Then ClassPag will prompt for the leading value.You can close either the page number or the leading value window to leavewithout making any changes.

* The command to convert all internal ads into eps files now lets you specifythe eps file directory. This makes it easier to convert fillers passed as adsin a dump into fillers. If you can set the dump to assign all of the fillersto a classification, you can import the dump, select only the classificationwith the fillers, use Command -> Ads ... -> "Convert all ads to EPS"/"Convertir todos a EPS" to convert all of the ads into eps files in yourfiller or house ads directory, and then use "View Ad Directories"/"Ver Avisos"to convert all of the new files into fillers.

* The command to convert all internal ads into eps files checks for selectedclassifications earlier in the scan and no longer shows an error for everyad in each unselected classification.

* ClassPag can now place class headers for classifications with display adsbut no line ads. The product configuration screen"Classified Heading Placement"/"Ubicacion de Encabezados de Clasificaciones"has a new field "Place on first display ad if no liners"/"Colocar sobre destacado si no lineales". The default value is "N".If you set the field to "Y", when ClassPag reaches the place where it wouldstart flowing line ads (in a classification with display ads but no line ads),it scans all of the leftmost columns of all of the display ads in theclassification and places the main class header in the column to the currentcolumn. If you have set configuration parameters to place class headersover all display ads, and if the classification has a column header inaddition to a main header, ClassPag will place copies of the column headerabove the other display ads as needed.

* The product configuration screen "Additional PostScript"/"PostScriptadicional" now has five additional (for a total of fifteen) "Fonts Used"/"Fuentes usadas" lines and "Download fonts"/"Cargar fuentes" flags forentering the names of fonts to preload.

* bbcheck.sh, fixlogo.sh, getfiles.sh, makegif.sh and scanps.sh now use"$TOOLS/bd -x" if they can not find the "hd" (hex dump) program.SCO Unix has hd, but Solaris and Linux do not.

* When scanps.sh builds a font list from site-specific fonts, instead ofscanning just the single directory "/u/scs/gs/fonts.site", it now scans alldirectories matching the patterns "/u/scs/gs/fonts.site*" or"/u*/gnu/fonts.site*" and it takes all file names in addition to alias listedin Fontmap files.

* The new configuration field "Preflight using site specific fonts"/"Verificar usando fuentes en fonts.site" on the screen"Ad Import Restrictions"/"Restricciones de Importacion de Avisos"tells the preflight scan to compare against the site-specific fontsinstead of the fonts in the ripfonts.txt file.The default value is "N" to use the ripfonts.txt file.If you have no convenient way to build the ripfonts.txt file but have allof the fonts on the rip in /u/scs/gs/fonts.site* directories, you can setthis field to "Y" to compare against the fonts in those directories.

* If a column ends with a class header and segments that are all part ofthe same ad and the ad continues into another column, ClassPag now puts anyextra space at the bottom of the column instead of below the class header.

* When a middle segment of a segmented ad touches a normal ad (for example,when a class header is over the continuation of a segmented ad that spansmore than one column), ClassPag now places the configured amount of leadingbetween those two ads. It used to remove all of the leading the same waythat it removes all leading between segments.

* In the window to edit page name requests, if you edit the page name form(instead of using one of the hot keys to change specific fields for you),ClassPag now warns if the page name has no banners or if the active flagof the page name differs from the active flag of its banner. If youactivate or disactivate page names by changing the active field in the forminstead of using the hot key, this helps to remind you that you still needto update the banner record.

* The banner text window has a new hot key"Rebuild This Ad (fast but will not print)"/"Reconstruir este Aviso (rapido pero no se imprimira)".This hot key rebuilds the banner image that contains the current text record,but uses postscript include commands to include eps files instead of insertinga copy of the file. If you have a large eps template, this makes the rebuildmuch faster, which might be helpful when you are adjusting the positions oftext segments that must line up with text in the template. After you aredone, you will need to do a normal rebuild in order to produce a file thatwill print.

* The pstoespf.sh script has a -translate option to shift the preview imageif the lower left corner of the bounding box is not 0,0. It is not thedefault because some postscript files do not display correctly when theyare translated.

* The pstoepsf.sh script has a -convert option to use the ImageMagic convertprogram instead of the pbmplus pnmtotiff program to convert preview bitmapsto tiff format.

* If the pstoepsf.sh script still works when you see the message. pnmtotiff: Too many colors - proceeding to write a 24-bit RGB file. pnmtotiff: If you want an 8-bit palette file, try doing a 'ppmquant 256'.The message means only that the postscript file used more than 256 colorsso the tiff file needs to represent with a method that uses three bytesper color instead of one byte.

* The pstoepsf.sh script has a -quant # option to set the maximum number ofcolors in the preview. The default is now "-quant 256" to ensure thatthe color table will fit in a 256 entry palette. This option affectsonly the tiff preview and not the printable postscript image.Use "-quant no" to skip the quantization step.

Sites using pstoepsf.sh might need to download the ppmquant program.On Linux systems, it is part of the netpbm package installed into /usr/bin or/usr/bin/X11. On other systems, it should be installed into /usr/local/bin.

According to the Adobe specifications, drawing programs should accept anyvalid TIFF file for a preview, but we have found that Quark, MultiAd, andmost other drawing programs, only accept a limited number of TIFF formats.The default options on pstoepsf.sh should create previews that most programswill display.

* The cortops program has -t and -p options. The option extracts the tiffsection of an epsf file. The -p option (the default) extracts the postscriptsection. Also, the cortops program now allows a second argument to name theoutput file.

* Fixed a problem where ClassPag would not place repeat class headersin service directories positioned at the top of the page even when the"Place under square-off banners" class header configuration parameter was set.

* Fixed a problem when entering an eps image in a banner text form whereClassPag would write color names into the banner name field.

* Fixed warnings in unload.sh and updprod.sh that would complain about TOOLSnot being set. update.sh now runs the ClassPag setup.sh if needed.

* Fixed a problem where during front-to-back pagination on a class with a mainclass header, ClassPag would over-estimate how much space it needed to placethe first line ad, which could make it place the header at the bottom of acolumn and the first line ad at the top of the next column.

* Fixed a problem where during post-pagination clean up on a column with one1-column ad at the top, ClassPag could set bad column boundaries when itshifted the ad to the bottom.

* Fixed a problem where the column justification could try to move the topad with a special request when it equalized columns. It should never moveposition locked ads. When it did, it would not update the pointer to thetop ad with a special request, which could have caused other problems later.

* Fixed a problem where square-offs would count a normal amount of leadingbetween parts of segmented ads. This could cause square-offs to have emptyspace at the bottoms of columns containing legal ads. The configurationparameters to specify the minimum segment sizes do not to apply insidesquare-offs. If you place segmented ads in square-offs, you should checkthat the interface passes first and last segments with sizes large enoughto satisfy your editorial style.

NOTE: This version has 7150 lines of changes from the previous version.

5/10/00

Version 1.202

* Fixed a problem in back-to-front pagination where ClassPag would not leavespace for headers of parent classes before placing the last line ad in a class.Also, a similar test before placing class headers would count headers insibling classes with no line ads. Note that the configuration option toplace all headers was changed a few versions ago so it no longer placesheaders of classes with no line ads. You should avoid enabling this option,because it will probably be re-implemented in a later release.

* Fixed problems with column stretching. If a column with ads in the topstack had all one-column stretchable ads on the bottom stack, the ads onthe top stack could print too high or off the page. Horizontal and verticalcut-rules next to stretched ads now show in positions that match the stretching.The ad size written into ad boxes for stretched ads with missing eps filesnow shows the real size and not the stretched size. Auto-segmented adsnever stretched correctly and are no longer subject to stretching.

* When flowing back-to-front with a configuration that requests headers underdisplay ads, if a column has a class header and ads at the top and nothingat the bottom, and if the column has less than the configured minimum spaceto flow line ads, ClassPag will no longer try to place a class header atthe bottom of the column.

* The makehelp.sh script has -n, -p and -h arguments to control whether itproduces text, pcl or html versions of the manuals.

* Added the new Administrator's manual to the "help" distribution. Precie andJeff worked on it. This manual replaces the appendix of the User's Guide thatlisted all of the fields of the setup screens.

* Restructured the compile scripts so they do not make copies of objects orexecutables in the source area. maketar.sh writes the distribution to $HOMEinstead of the current directory if it thinks that it is running in across-development environment. This makes compiles for different operatingsystems faster by avoid writes over NFS.

* Changed menprof.sh to unset SCRATCH when CPAG_ROOT is set. When startingClassPag from an icon on Linux, this makes each ClassPag window move to a newwork directory instead of using the one for the login shell. To make a newdesktop icon, right click on the background and select New -> Launcher.The icon name is a unix file and should not have any slashes.Use "/u/cpag/menprof.sh" as the command line.Select the "Needs terminal to run" option. This allows ClassPag to pick adifferent work directory for each window. If you do not check the option,or if each window still has the same scratch area, change the command lineto "xterm -name ClassPag -e /u/cpag/menprof.sh".I used the gnome icon /usr/share/pixmaps/NewsAgent.xpm.If you are using kde but have gnome loaded, you can copy this file to"$HOME/.kde/share/icons/NewsAgent.xpm" and then select it.If you have a new cpag help distribution, you can use the icon"/u/cpag/help/cpagagent.xpm".

NOTE: This version has 1900 lines of changes from the previous version.

5/18/00

Version 1.203

* When you move to a new page in the multi-page display of the page preview,the third line of information now includes the page style flags after listingthe groups. This makes it easier to see the SQ flag for squeezed pagesand the OV flag for overflow pages.

* When you make a setup change within a pagination session that requiresreloading the ads, ClassPag now resets the banner and display filler runcounts. The run counts on the setup screens are default values.When you start a pagination session, ClassPag copies the default values toa second copy on a hidden screen that it uses. On the pagination statisticsscreen, the windows for Ads -> Banners and Ads -> House Ads show thehidden fields and let you modify them. The procedure to reload adsoriginally did not reset the run counts to avoid clearing any changesyou made in the Ads -> Banners or Ads -> House Ads windows.Since no one uses those windows and since it can be confusing to havechanges in the banner and filler in the setup windows ignored until youexit and restart a pagination session, the procedure to reload the adsnow resets the run counts. Since it is expensive to maintain the secondcopy of the run counts, if no one needs them, they might be removed ina later release.

* Added a verify.sh script to scan a list of databases for missing or bad files.For example, to check all of the databases, use cd /u/cpag ; verify.sh *.scrThe verify program is over-sensitive about some values in database headers.Sequences like the one below do not require any action. Validating Ctree header records: Key 1 has key type 24 in file, a4 expected. Data file is missing bit 80 NOIDXENT. Key 2 has key type 2c in file, ac expected. Data file is missing bit 80 NOIDXENT. *** Ctree header records have errors.

* When you ask to level pages, ClassPag handles overflows due to ads with topof page requests more efficiently than before. In general, overflow pagesdisable page leveling because the page leveling logic works by increasingthe sizes of reservation areas until a page overflows.People using page leveling should eliminate overflow pages as soon as possiblein their session because overflow pages greatly increase the amount of workthat ClassPag must do each time they paginate.

* Changed the Clarin interface to use the column and gutter width specifiedin the configuration file instead of 7 picas. This change affects only howthe interface converts the composed width in points into a number of columns.For display ads with </CLSCD/> lines, the interface passes the column countin the /K#/ field unchanged. Here is sample text to create a single columnad on a page with four columns of 173 points. The first line of the adshould set the leading to 0 <cl 0>, set the column width to the desiredsize <dc 173>, activate the new width with a quad <ql>, and then use along form of the change font command to set the font and leading.</CLSAD/5543/Test173><scs/cl 0/dc 173/ql><cf/HV/6/7/8>Test for wide columns. <QJ>This test should be wrapped to 173 points instead of 7 picas. <QJ>The cut rule below should be 173 points picas also. <QJ><scs/cl 0/el 2.5t/dr 1c,0.5t/ql>

* Added checking around calls to the formula extract function.Since the beginning, the extract function has not checked that the startingposition is valid.

* Added a script to expand the unix lost+found directory.The script lostexpand.sh in the interface directory expands the lost+founddirectory by making and removing 126 files. On a SCO Unix 3.2v4 EAFSfile system, this extends the directory file to 4 disk blocks or 2048 bytes.(The next file would extend the directory file to 6 disk blocks.)Run the script as root with the mount point of a filesystem as an argument,for example, "lostexpand.sh /u".

* If the configuration requests headers under display ads, it is no longera conflict to have a display ad with a header and then fillers to the bottomof the page.

* Changed the updprod.sh script so it uses the transaction file name that youenter on the command line if it contains ".trn" and does not end with a dash.Otherwise, as before, it strips the extension and uses ".trn".It could have been confusing when you ran updprod.sh with name.trn-sav butit used name.trn.When updprod.sh makes a backup of the database before applying the transactions,it makes a new transaction file in the same directory as the database withthe extension .trn- and the previous .trn- to .trn--.

* Fixed a problem where ClassPag would place class headers under square-offbanners in columns with enough space, even if you turned off the configurationparameter for placing headers under banners.

* Fixed a problem in back-to-front pagination where ClassPag would allocateenough space for a header of a parent classification while flowing eachcolumn of its first child classification instead of only at the firstcolumn. If the parent class had a large header, for example, if class 100had a large header with a logo and index, each column of its first childclass, for example, class 101, would have fillers equal to about the size ofthe top level header. Since each column would have the same size hole,ClassPag could end up placing the same filler, which can make this appearlike a problem with repeating fillers when it is really a miscalculationthat is creating a similar sized hole in a number of consecutive columns.

* Fixed a problem where the look-ahead scan would not account for extraleading needed when the configuration specifies cut-rules at the tops orbottoms of columns. With back-to-front pagination, this could cause thefirst segment to be placed out of order.

* Fixed maketar.sh to restore the gs*-dist directories to the distribution.

NOTE: This version has 1500 lines of changes from the previous version.

6/8/00

Version 1.204

NOTE: This version of ClassPag requires a version of spice version 4.110 orlater and dated on or after June 9, 2000.

* Spice and ClassPag now support toolbars. The pagination window has toolbarbuttons for most common functions and for most of the top-level functions inthe command menu.

* On the multi-page preview display, right clicking on the page number textmarks the page as selected instead of opening a command window. On pages withcolor letters, right clicking on the color letters opens the color dialog.Right clicking on other areas below and around the page images opens a commandwindow as before.

* Added a gslp.sh script that prints to a laserjet using ghostscript toconvert the file into pcl. This allows you to print any page that youcan view. The command line options are-d name = set ghostscript device name, default = laserjet usually laserjet, ljetplus, ljet2p, ljet3 or ljet4-r # = set ghostscript resolution, default = 300-gs cmd = set additional ghostscript arguments-lp cmd = set the lp command-x = enable unix shell tracingnames = anything without a dash is a file to print

For example, to print the file test.ps at 600 dpi to an HP LaserJet 4in the unix queue "hp4v", use the command gslp.sh -d ljet4 -r 600 -lp lp -lp -dhp4v test.psNot all printers support all resolutions. For example, you should not use-r 600 with -d laserjet.

To capture the gslp.sh output file, use "-lp cat" and then redirect the output.For example, the command below captures the flattened PostScript in a file. gslp.sh -d pswrite -lp cat test.ps > flat.ps

To use the gslp.sh script, you should have ghostscript 5.50 or later.Also, you need a version of the /usr/local/bin/gs4 script that does not redirectstandard output. If the command "gs -h" does not produce a help message,you should update the gs4 script. Sites with a recent version of ClassPagcan use the script /u/cpag/gs4-dist/gs4 as a model.

* makegif.sh has a new -jpg option that creates jpeg files like -jpeg butwith the extension ".jpg" instead of ".jpeg". Some Windows programs requirethree character extensions.

* makegif.sh has a new -extract option that extracts epsf previews when theyare present instead of trying to rebuild them with ghostscript. This makesmakes the script run much faster on files with previews.

* makegif.sh now recognizes extensions for jpeg, tiff and gif files andattempts to convert them into the requested format. This allows the scriptto work on a variety of file types.

* The printer database has a new "Pages Subdir" field to specify an expressionfor the pages subdirectory if the "Pages Directory"/"Dir. de Paginas" fieldcontains a posting directory. The subdirectory expression can reference thevariables RunDate, EndingDate, SectionName, ProductId, EditionId, EditionName,ZoneId and ZoneName. If you leave the pages subdirectory empty, ClassPag willjoin the RunDate, ProductId, EditionId and ZoneId as before. By customizingthe expression, you can force different products into the same directory,for example, to join pages with different column measures. Note that ClassPagexpects all of the pages to have the same size as the current product.

You can also use this to build a live index that accepts postings fromdifferent products. If you are only building an index but not posting pages,you may post classification data from products with different column measures.

* When ClassPag does not have enough room for an ad and its configuredmaximum leading, it used to split the available space above and below the ad.This could happen when rebuilding locked pages on products with configurationvalues for preferred leading between different types of ads.For one column ads, if the ad is on the bottom stack, it now tries to satisfythe preferred leading below the ad, and then places any remaining space abovethe ad. It does the reverse for ads on the top stack. This should producebetter results.

* Note on the banner page number "From"/"De" modifier:"F" is an absolute page number from the front of the paper (the default)."S" is a relative page number from the starting page number of this session."B" is a relative page number from the back.For example, on a session from pages 11 to 40 and a request of page 12:"F" means page 12."S" means page 25 (11+12-1)."B" means page 29 (40-12+1).If the starting page number of the session is "1", "F" and "S" are the same.ClassPag ignores requests outside of the session range (in this example,an "F" request below 11 or above 40 or an "S" or "B" request above 30).

* For banners, display fillers, corner ads and policy ads, ClassPag now usesthe run counts and page numbers on the setup screens instead of extra copieson a hidden screen. It used to update the hidden fields in each house adrecord at the start of each pagination session. In the pagination statisticsscreen, the windows under the Ads menu now modify the setup fields instead ofthe hidden fields. This should avoid some confusing behavior and also makepagination sessions start up a little faster.

* When you paste a banner manually, ClassPag no longer updates the setupinformation of that banner. It used to set the default image to the imagethat you selected and set the run count to 1 if it was 0.

* The product configuration field "Flow if over display ad"/"Fluir si encima de un avisos destacado" on the screen"Classified Heading Placement"/"Ubicacion de Encabezados de Clasificaciones"controls the placement of class headers in a column with a class header,display ads and line ads of the same class. ClassPag always used to repeatthe main class header between the display ads and the line ads.When paginating front-to-back, ClassPag now repeats the header only if the new"Flow if over display ad" is "Y", the default value. The value "N" suppressesthe repeated header. Papers with many one-column display ads and that dummydisplay ads from the top might benefit from suppressing the headers.

* The field "Show Missing Images As"/"Ver avisos sin EPS como" in the spreaddefinition screen has a new value of "JTEXT" to print just the ad text inreservations for ads with missing EPS files. "JTEXT" works like "TEXT",except that it does not draw a box around the ad or an X through the ad.Before this change, if you suppressed boxes on film output (by setting thebox line width configuration parameter less than zero), you could not getboxes to show on proofs.

* The makegif.sh script runs convert from /usr/local/bin if it exists.On SCO /bin/convert is a program to convert archives made with "ar".

* The makegif.sh script has a new -outdir option to change the output directoryfrom the default of "/u/gif".

* The makegif.sh script has new -one and -multi options. If the preview hasmore than one image, the ImageMagick bitmap conversion program writes eachimage in a different file using the extensions .0, .1, etc.-one, the default, takes the .0 file and deletes the others.-multi keeps all of the files.

* The makegif.sh script has new -ppm and -convert options. When creatinggif files from tiff previews, -ppm (the default) uses the gif writer inppmtogif while -convert uses the gif writer in ImageMagick convert.The ImageMagick convert program does not do compression and makes gifsabout ten times as large as ppmtogif.

* Added entries for the FLS StarAds in the makeesc6.sh import script.

* Added an icon subdirectory with toolbar icons. setup.sh adds the icondirectory to $SPICE_ICON. maketar.sh and save.sh now include the icondirectory.

* Fixed a problem where ClassPag could leave space (eventually packed withfillers) when the sort key match length was larger than 0. ClassPag looksat the next few ads when deciding to do the look ahead to fill the column.If one of the ads that triggered the look ahead had a sort key that did notmatch the sort key of the current ad, ClassPag would not have enough adsin the look ahead list to fill the column.

* ClassPag now reopens the replacement image database (image.dat in the workarea) each time it reloads ads. It used to open it only once during start upand could have read the original file if you copied a save area into yourwork area.

* In the classification list, the hotkeys to "insert the rest" and "removethe rest" of the classes used to touch every class with a sequence numbergreater than or equal to the sequence number of the current class.Now, if the sequence numbers are equal, they compare the class names.This works better with interfaces that pass the same sequence numbers fora range of classes.

NOTE: This version has over 4900 lines of changes, not counting the changesto the user interface code shared with spice.

6/14/00

Version 1.205

NOTE: This version of ClassPag requires a version of spice version 4.110 orlater and dated on or after June 14, 2000. It also requires a copy ofthe icon directory /u/scs/tools/icon from May 30, 2000 or later.

If you install this version on a system with a version of the SCS toolsinstalled before May 30, 2000, you must edit /u/scs/spicedef and addthe line def_var SPICE_ICON ${TOOL_ROOT}/iconafter the line with "def_var SPICE_TBIN ${TOOL_ROOT}/tbin" on line 64 andadd SPICE_ICON to the unset sequence on line 13 unset SPICE_ICON SPICE_PALETTE SPICE_ADMIN_DATA SPICE_PREFERENCES

* Shifted left mouse clicks on the page name on the multi-page previewnow have special meanings. On left clicks, if the control key is down,ClassPag will toggle the selection of the current page.If the shift key is down, ClassPag will select all of the pages fromthe current page to the previously selected page.

* Added the boolean field "Local classes"/"Clases locales" to the"Folios and Banners"/"Folios y Carteles" configuration screen.Set it to "Y" if the banners use classification information savedin the current work area. If banners use classifications in aposting area, set the field "Posted classes"/"Clases enviadas"to "Y".

* The command to rebuild banners now checks if you have paginatedsince saving the classification database. If you have paginated,if the "Posted classes" configuration field is "Y", ClassPag willask if you want to save the classes to the posting area.Otherwise, if the "Local classes" configuration field is "Y",ClassPag will ask if you want to save the classes to the currentwork area. This should help prevent people from building bannerswith old classification information.

* ClassPag now allows proof-only folios entries. You can use theseto create rulers along the side of the page or other markings thatare useful on proofs with page dummies but should not appear in thefinal output on film. To mark a folio entry proof-only, set thefield "Dummy"/"Prueba" to "Y". To enable the proof-only folios fora spread, set the spread field "Add Dummy Text"/"Agregar texto para pruebas"to "Y". Proof-only folio entries may use Composition formats orEPS templates.

* The page display has more toolbar icons, and some toolbar iconshave been updated.

* Picklist windows have been resized to account for the increasedsize of the scrollbar.

* Fixed a problem where ClassPag would repeat a class header for thetop level of a class range that ran for several columns and you lockedonly the first few columns of the class range.

* Fixed a problem where on the page display "Command -> Misc ->Toggle menu exit" would close the command menu but remain incommand mode.

NOTE: This version has over 8500 lines of changes from the previous version.Most of the changes relate to the new toolbar.

6/15/00

Version 1.206

* The pagination preview screen has more toolbar icons.

* The user preference product configuration field"Enable delete ad button"/"Habilitar boton para borrar avisos"to control whether the toolbar button to delete the current ad is allowed.The default is "Y" to allow the button to work.

* The page dummies show more lines of information for ads without EPS images.

* The lock menu has a new command to lock the line ads on only the currentlyselected pages, and the unlock menu has a corresponding command to unlockthe line ads only on the currently selected pages.

6/19/00

Version 1.207

* The square-off window has additional icons.

* This is the version demoed at Nexpo2000.

7/3/00

Version 2.08

* The version number has been changed from 1.208 to 2.08.

* The window to select the active classifications now has a toolbar.

* You can now close most nested list windows by clicking on their parent window.

* When ClassPag finds a line ad that is too large to fit with a class headerover it, it used to try to dummy the ad with the same rules as for display ads.It now tries to place the ad as close as possible on the current page.If that fails, it then reverts to dummying the ad as before.

* Fixed a problem where a line ad that was too large to fit with a classheader over it could cause ClassPag to pack other columns in that class toofull for a class header to fit.

* Some interfaces send class headers for a range of classes with the firstsubclass instead of with the parent class. If the first subclass has noline ads, ClassPag will not flow the header of the subclass because it doesnot know that it is really a top level header. For example, if classes"123aa" through "123zz" are under class "123" and the entire sequence hasonly one class header entered under class "123aa" but class "123aa" doesnot have line ads, ClassPag would normally either not place the "123aa" headeror else place it over one of the "123aa" display ads, and the first "123bb"line ad will not have a header above it. To tell ClassPag to flow the headerin-column, the product configuration screen"Classified Heading Placement"/"Ubicacion de Encabezados de Clasificaciones"has a new field "Advance to previous class"/"Adelantar a clase previa"that you can set to "Y" to place the header. The default is "N" to treatthe header as a normal subclass header.

* The test to tell when a class header was required during front-to-backpagination could place a top level header if all of the line ads in theclass of the header were locked but some line ads in subclasses were not.This change can be undone if it causes problems.

* Includes a fix of a recent problem in the display routines that ignoredXFontSize values larger than 24. Monitors in 1600x1200 mode need anXFontSize of 30.

* This version has a bug where toolbars sometimes overwrite themselves.It should be used for testing only.

7/7/00

Version 2.09

* The classification selection list window and the square-off list windownow require a mouse click to move the cursor and a mouse double-click toselect an item. This is required for windows with toolbars, because if theselected item follows the mouse, you can't move the mouse to the toolbararea without changing the current item. Arrow keys and other keystrokesall continue to work as before.

* When you print pages with settings that request ClassPag to track the fonts,if ClassPag finds missing fonts, the print selection window with the View,Print and Done options will have an additional "Fonts" option to view thelist of missing fonts. This can help you identify missing fonts whenconverting pages to EPS files.

* When you print pages and the last page is one megabyte or more, the printselection window shows the size of the last page in megabytes (where onemegabyte is 1,000,000 bytes). This can help you estimate how long a pagewill take to print.

* Fixed a problem where the mouse would not work in submenus of the commandmenu on the page preview screen.

* Adjusted a few more windows to fit with the new wider scroll bar.

7/22/00

Version 2.10

* The folio text field "All Plates"/"Todas plantillas" has changed froma logical field to a range field with the values "T", "F" and "U".As before, "T" tells ClassPag to write the template on all plateswhile "F" tells ClassPag to write the template on only the black plate.The new value "U" tells ClassPag to write the template on all plates,but to place it in an unseparated area.For example, to add an all black logo to the folio, use "F".To add a color logo to the folios, use "T". ClassPag will generatecolor separations from the logo.To add registration marks to the pages, use "U". The eps file shouldbe all black. ClassPag will write it in each color plate beforeenabling color separations.In items other than TEMPEVEN and TEMPODD, "U" is the same as "T".

* The classification database can now control the placement of class headersabove display ads by classification. The field "Fill Front Page"/"LlenarPra.Pag" has the additional value "B" for classes where display ads are likebanners and do not need headers above them when they are at the top of a page."B" also implies not using the class to fill the front page.The values "F" and "T", which control filling the front page imply that ClassPagcan place headers over display ads.

* The product configuration field "Justify Last Column"/"Justificar ColumnaUltima" on the screen "Vertical Spacing Specifications"/"Especificaciones deEspaciado Vertical" now has the additional values "YES", "RAISE", and "LOWER"."YES" or "T" justifies the space between line ads."RAISE", "F", or " " raises line ads by placing a space reservation below them."LOWER" lowers line ads by placing a space reservation above them.

When ClassPag raises or lowers the ads in the last column, it does not checkfor locks, although it will not raise ads if the top stack already has aone-column ad, which usually only happens on locked pages.

* The "Find Ad" window on the page preview has a new option "Paste ad"/"Traeravisos" to select an ad to position. After you select this option, you canclick on a page to place the ad.

* The "Find Ad" window now remembers the search state. Combined with theprevious change, this makes it easy to restrict the list to color ads andthen position ads from the list. The window has a new option "Initializesearch"/"Iniciar busqueda" to clear all of the search parameters at once.Also, the option text in the Spanish version of the window is now shorterso the search type is no longer truncated.

* When ClassPag detects an error in the ad paste list database, either whileinserting a record after a "remove ad" command or clearing the database beforerepaginating, it tries to rebuild the database. This should help stop themessage "Error rebuilding ad paste area" from repeating after an error.Also, as before, the ClassPag start up script rebuilds this database,so exiting all the way out and logging in again will also fix this problem.

* runcpag.sh has a -iv and -ix options to pass -v and -x options to initscr.sh.

* Fixed a problem where an internal list of pages was not adjusted when ClassPagplaced a banner at the base of a square-off. This might have made it not dummyads as evenly.

* Fixed a problem where having a multi-column ad on the top stack touching twodifferent ads above it could cause ClassPag to miscalculate the heights ofother ads around them.

* Updated the palette entry for popups. They now have a dark blue top andthe buttons now depress when you click on them.

* The page preview toolbar now has a button for creating ads.

* Here is a sample rcpuniq.sh command line for sending an eps file by ftp.This is for documentation only; the rcpuniq.sh script is unchanged.

-xterm runs the ftp command inside an xterm shell window if you are running X.This makes it easy to watch the progress. Also, you can kill the ftp by closingthe xterm window.-name newfile.eps sets the name to call the file on the remote server.-user cpag and -pass cpag set the user name and password of an account onthe new server.-ftp specifies using ftp instead of rcp.-mopen tries to open the ftp connection several times. Some ftp servers do notaccept connections on the first try when they are busy.newserver is the remote server that will receive the file./u/newdir is the directory on the remote server that will get the file.cpag.ps is the name of the file on the local server (running ClassPag).

If you send pages to a RIP spool folder, you will need to set a delay on theRIP so it does not try to process files until the ftp transmission has finished.

In "rcp" mode, this script can use "rcp" to copy the file to a holding areaand then use a unix "mv" command to move the file from the holding area intothe spool folder to avoid placing incomplete files in spool folders.Here is a sample command line using rcp:

This command copies the file "cpag.ps" to an "scsinput" holding area on"newserver", and then moves the file to the RIP "input" queue.The remote server must have account with the same name as the user runningClassPag (usually "cpag"), and the account on the remote server must allow"rcp" and "rcmd" (usually through entries in "$HOME/.rhosts").

* initscr.sh removes text in {} comments before comparing fdf files.This should avoid database rebuilds in updates like this one where a fieldin the classification database changed from a logical to a string.

NOTE: This version has over 4000 lines of changes from the previous version.

8/7/00

Version 2.11

* When paginating back to front, if a column has a display ad at the bottomand line ads of the same class at the top, ClassPag no longer attempts tosqueeze a class header in the middle.

* ClassPag now rebuilds packed columns correctly on pages where the ad stackis higher than the liner flow height. ClassPag used to leave ads at thebottom of the top stack unplaced. You could pack pages by dragging adswith the mouse, but as soon as you repaginated (or if you left ClassPag andcame back in), some of the ads would jump to other pages. This only affectedproducts where the line ad flow height was less than the column depth.

* When ClassPag places fillers, it now leaves room to place a class headerover the fillers if needed.

* When ClassPag writes an EPS file using a paper entry with"Add Font Comments"/"DSCs de Fuentes" enabled, it now also writes the%%DocumentProcessColors comment at the start of the file instead of atthe end. This should help programs like GoodNews and QuarkXPress thatdo not support the "(atend)" modifier.

* The configuration fields to allow class headers and in-line display adsat the bottoms of columns now defaults to 'N' instead of 'Y'.

* Added a -noclean option to pstoepsf.sh to keep its work files for testing.

* Fixed a bug in the pnmtotiff program that could cause it to core dumpon gray-scale images.

9/6/00

Version 2.12

* Product keys may now be up to 5 characters long and may include upper caseletters, digits and underscores. This increases the number of products from100 to several million. Each site should have a common prefix for all of theirproducts, for example. the three-letter abbreviation that we use when assigningnetwork node names. With this change, the products "1", " 1" and "01" are alldifferent.

NOTE: Information on products with ids using the new id format will be lostif you revert to a previous version of ClassPag.

* Pages can now have different numbers of columns. All columns must stillhave the same width and depth. The product configuration screen now hasfields for the standard number of columns per page, for the minimum numberof columns per page, and for the maximum number of columns per page.If the minimum or maximum number of columns per page is empty, it defaultsto the standard number.

The page information database now has the two additional numeric fields"Column Adjust Left"/"Columna Izq" and "Right"/"Der" that contain thenumber of additional columns on the left and right sides of the page.The values may be negative for pages with less than the standard amountof columns.

If the minimum number of columns entered into the product configurationis zero, ClassPag will allow you to create negative column count adjustmentslarge enough to eliminate all of the columns from a page.

Folio offsets currently count from the lower left corner of the leftmostprintable column, independent of the value of the left adjustment.

The left and right adjustments currently have an effect only when printingtab spreads. ClassPag shifts each page to the left by the number of columnsin its left column adjustment. A negative left column adjustment pushes pagesto the right. The shift per column is the column width plus the gutter width.

For example, to flow ads in the central gutter of a tab spread, set the rightcolumn adjustment of the left page to 1.

* The window to select a product now has hot keys to show all products(including the inactive ones) and to sort by product name instead ofproduct id. The window also no longer shows the paper and edition numbers.

* The product list under Setup -> Product Configuration now has a full-screenlist showing the product name, number of columns, and column depth.A dash before a product id means that the product is inactive.

* The product configuration has two new fields on the first screen to specifythe unit measure for displaying on the preview screen (Screen/Pantalla) andon output pages (Print/Imprimir). The original configuration unit measuresets the default values for configuration fields and for outext files.The two new units fields default to the original configuration units field ifthey are empty. For example, to keep all configuration records and screendisplays in inches but to show ad boxes in page dummies in lines,set the configuration units value to "inches",set the screen units value to "inches" (or leave it empty), andset the print units value to "lines".

* The unload.sh script "-p" parameter to unload only databases with a productkey now requires a product key. Also, it no longer adds a leading zero tosingle digit product keys. The new "-P" parameter (a capital P) works theold way. For example, "unload.sh -p 2 config" will unload product id "2"and treats the "2" as an argument to the "-p", while "unload.sh -P 2 config"will unload product id "02" and treats "-P" as a request to unload onlydatabases with a product key and "2" as a request to unload only product "02".

* The convprod.sh script now accepts the new format product ids and no longerappends leading zeros to single digit product ids.

* The "Screen Display Preferences"/"Preferencias de Visualizacion"product configuration screen has a new field "Print depth Decimals"/"Imprimir decimales" to set the number of decimal places in ad widthswithin ad boxes on printed page dummies. The default value is 2, whichmatches what ClassPag used to do. If you set the value to 0, ClassPagshows the width rounded to the nearest whole number. If you set thevalue larger than 0, ClassPag shows the width with a decimal point andthe specified number of decimal places.

* The "Classified Heading Placement"/"Ubicacion de Encabezados deClasificaciones" product configuration screen has a new field"Align second header"/"Alinear segundo cabezal" to line up sequencesof class headers at the tops of columns. The default is "Y" toset the space between class headers at the tops of columns to thepreferred leading specified in the product configuration.This is what ClassPag used to do. It creates an even space betweenall of the class headers. If you set the field to "N", ClassPag willconsider only the first class header. This might be useful of you arepaginating a product where all of the class headers and line ads areexactly the same size, a movie guide for example, and you want columnsthat start with section headings to look the same as columns with allline ads.

* The scan to extract %%DocumentProcessColors comments from EPS files for adsnow supports (atend) in EPS files with previews.

* ClassPag now places generic fillers in empty columns. Filler classificationchecks added in version 1.181 prevented ClassPag from placing fillers in columnswithout ads because ClassPag needed to find an ad to determine the list ofcompatible fillers.

* The runcpag.sh script now takes an XFontSize # parameter to set the font size.

* The import procedures support a dump in Quark XTag format, although notall tags are implemented. The import procedure searches for files with*.xtg and *.XTG extensions and converts them to SCS Composition commands.The conversion program must be updated to recognize which styles start newads or class headers and to map PostScript font names into SCS Compositionfont names.

* Fixed a problem where ClassPag would sometimes rejustify the last columnof ads that it flowed. This would cause it to distribute some of the spacebelow the top ad to below the other ads.

* Fixed a problem in the maintenance window for the classification fixupdatabase where the delete key would open a form with the record insteadof asking if it is to delete the record.

* When the option to remove all of the records in the book size databasegets a database error, it now asks you if you want to rebuild the database.If you say yes, after the rebuild completes, you should exit all the way outof ClassPag (to where you must click on a windows icon or log in again) assoon as possible. When you return, the book database should be empty.

* Fixed a problem with SII PSC dumps when the start of the trailer listedin the sort file points to the second % in the trailer where the trailerstarted "%%Trailer". If ClassPag had document structuring comment strippingenabled, it would convert "%%Trailer" to "% Trailer" and then write " Trailer"into the output file instead of "%Trailer".

NOTE2: This version has over 16,000 lines of changes from the previous version.The longer product ids and the adjustable column counts need testing.

NOTE3: This version requires a version of spice from Aug 25, 2000 or later.

9/13/00

Version 2.13

* Ad sizes inside boxes in page dummies now include the name of the units.

* On pages with adjusted column counts, folios and templates print relativeto where the leftmost column would have been. This should produce betterresults for tab spreads.

* Square-offs can now request ClassPag to flow one-column display ads insteadof dummying them. To flow one-column display ads, set the field "Flow"/"Fluir"to "Y". The default is "N". ClassPag still dummies ads with a square-offrequest in the page number field of the sort file. When the flow option isenabled, ClassPag selects one-column display ads under the classificationof the square-off.

* The square-off packing for display ads now works a little better when itdetects that it has been running too long and no longer writes a table ofdebug information when it exceeds its time limit.

* When ClassPag creates inverted spreads with pages that have adjusted columncounts, it now shifts the pages by the right adjustment instead of the leftadjustment.

* Fixed a problem where ClassPag would sometimes not create as many columnson a page as you requested.

* Fixed a problem where the newshole information box in the page previewwould have overwritten text on pages with more 18 or more columns.

* Fixed screen painting problems in the page preview after changes to thenumber of columns on a page.

* Fixed problems with the commands to lock and unlock column ranges onpages with no columns.

NOTE: This version has 1691 lines of changes.

9/18/00

Version 2.14

* ClassPag now warns when you insert or edit a page information recordon a page numbered before the first page or after the last page.ClassPag ignores requests before the first page or after the last page,even if a pagination run happens to overflow onto the specified page.

* The classification field "Randomize"/"Aleatorio" has a new value "H"to flow ads horizontally left-to-right instead of top-to-bottom.Use this setting to flow ads in real estate or auto books that read acrossinstead of down. For the best results, the classification should not containany class headers and all of its line ads should be the same size.

* The "Classified Heading Placement"/"Ubicacion de Encabezados deClasificaciones" product configuration screen has a new field "Align firstheader"/"Alinear primer cabezal" to line up class headers at the tops ofcolumns. The default is "Y" to set the space between the class header at thetop of each column (if there is one) and the ad below it to their preferredleading specified in the product configuration. This is what ClassPag used todo. It creates an even space below the top class headers. If you set the fieldto "N", when ClassPag distributes extra space in columns, it will place some ofthe space below the class header. This might be useful of you are paginatinga product where all of the class headers and line ads are exactly the same size,a movie guide for example, and you want columns that start with section headingsto look the same as columns with all line ads.

* Fixed a problem where the cropped and boxed EPS types in the paper databasewould set the left border of the bounding box too far to the left by the sizeof the gutter if the area of the page with ads did not start on the leftmostcolumn.

* Fixed a problem where the EPS bounding box would be wrong for pages withnon-standard column counts.

* Fixed a problem where the command to print the current page or spread wouldnot make the page large enough when auto-scaling the image.

* Fixed a problem where the count of paginated pages and columns on thestatistics screen would each be one too high.

* Fixed a problem where the readtxt program for the El Pais text interface woulddrop class headers if two classifications had text starting with the same sixcharacters and were exactly 10,000 class header entries apart in the interfacefile. The new version can handle over 450,000 class header entries.

* Added support for an Autopark product to the makesc6.sh import scriptand updated the Car Country product.

* Commented out palmap and chmap sections of altmap.sh.

NOTE: This version of 2517 lines of changes. Pages with adjusted columncounts still need testing.

9/19/00

Version 2.15

* When the configuration requests loading the Symbol or ZapfDingbats fonts,ClassPag now simply loads them and no longer attempts to pre-encode them.Some printers have problems encoding fonts with non-standard character mappings.

* When the "align first header" product configuration parameter is off,ClassPag centers column headers at the tops of columns the same way itcenters other ads.

* Print commands can now prompt for file names. Printer entries have a newfield "Ask for filename"/"Pedir nombre" that warns ClassPag to prompt for afile name. ClassPag exports the file name to the print command expressionthrough the variable "FileName". ClassPag will accept only letters,digits and underscores in the file name so users can not enter directorypaths or embed operating system escapes. The print command expression shouldtake care of adding any required directory paths or file name extensions.

10/2/00

Version 2.16

* Increased the length of the fifteen font used configuration fields"Fonts Used"/"Fuentes usadas" from 50 to 60 characters. This createsmore room for adding fonts.

* ClassPag no longer tries to pre-encode any font starting with "Symbol" or"ZapfDingbats" instead of only checking for an exact match. This will workbetter if the dingbat font has a longer name like "ZapfDingbatsITCbyBT-Regular".

* The "PS Titles"/"Titulos de PS" field in the printer database has a new"PAGE" value that creates a short title like the "SHORT" value but with thepage number first.

* When the "Add PS Comments" spread option is set, ClassPag now includes theclass name in the comment. In addition, ClassPag now includes the sort keyfor line ads. This should make it easier to locate ads from the comments.

* When ClassPag copies fonts to output pages, in addition to/u/scs/gs/fonts.site, it now searches for font files in /u/scs/gs/fontsand in each component of GS4_INC, which setup.sh sets to the list ofdirectories matching "/u/scs/gs/fonts.site*" and "/u*/gnu/fonts.site*".

* The View Ad Directories file browsing windows have a new function toadd a font to the font download list in the product configuration record.This saves in retyping the names of fonts entered into site-specific fontdirectories.

* Increased the length of the product name field in the product configurationfrom 30 to 40 characters.

* loadfont.sh can now handle font files that start with an %!PS-AdobeFont-1.0comment that is not followed by the font name.

* When you print a page at a View/Print/Done dialog, ClassPag now clearsthe dialog and displays a "Printing..." message while it is submitting thepage to a print queue. This makes it clearer that something is happening.

* If the $DISPLAY variable is set and does not start with a digit,the setup.sh script uses "xset +fp" to load the scscour and scsansifont directories.

* The setup.sh script sets XFontSize to 18 instead of 16 for SCO X serverswith 1024x768 or 1152x864 resolution. The new bitmapped fonts look betterat 18 and still fit on the screen.

* The setup.sh script tries to reset the $SCRATCH variable if it is ".".This helps recover when X Window start up runs the setup script too earlyand loads bad value of $SCRATCH in its environment.

* ClassPag uses a newer version of spice which allows sorting list viewsby columns. To resort a list by a column, click on its column heading.Click on the same heading a second time to resort the list in reverse orderby that column. All lists allow sorting except for lists of ads andclassifications, since they could potentially have a large number of entries.

* ClassPag list windows use updated palettes that make the column headingsstand out.

* The "Vertical Spacing Specifications"/"Especificaciones de Espaciado Vertical"product configuration screen has a new field "Justify Square-Off Pages"/"Justificar Paginas Encuadradas" to specify whether ClassPag should justifypages that contain only a square-off on the bottom and empty space in allother columns. The default is "Y" to justify the page as before.If you place square-offs on their own pages in order to create EPS files,you should set the field to "N". ClassPag will create reservations tofill the unused space instead of floating the ads in the square-off oradding fillers above the square-off. If the square-off is the full widthof the page, the rightmost column of the previous page or the leftmost columnof the next page must be empty or the page must be the first or last page.

* The printer database has a new field "Title Comment"/"Titulo" for anexpression to generate the %%Title comment on postscript pages.To use this field, you should set "PS Titles"/"Titulos de PS" tothe new value of "EXPR". For sending EPS files to Tera's Page^Pairer,you should set a title similar to f$format(RunDate,"MM/DD/YY") // " " // EditionName // " " // PageNumber // "PAGE"This field should also help create useful page identifiers for RIPs thatshow the Title comment in their print queues.

* Expressions for printing, folios and banners can now use the variable"ProductName", which contains the name of the current product.

* The "View Ad Directories" window has a new command "Edit Bounding Box"/"Editar BoundingBox" that opens a window showing the four parameters ofthe bounding box of the current file. You can edit the values and thenclick on "View" to see the file with the new bounding box, "Accept" to writethe new bounding box to the original file, or "Cancel" to leave withoutupdating the bounding box in the original file. This should make it easierto import ads or fillers when starting with EPS files that have incorrectbounding boxes.

* When ClassPag places an ad in a class that flows horizontally, it favorsplacing the ad next to the previous ad. This makes horizontal flowing workbetter if some of the ads have slightly different sizes.

* When you try to kill a banner, display filler or agate filler from thepreview display using Ads->UnselectAd or Ads->DeleteAd, ClassPag now asksif you want to disable it. This makes it easier to remove banners and fillersand eliminates the need to enter the setup screens where users sometimesdelete items instead of disabling them.

* The Pages->RedummyThePage command now shows a better message when it cannot find a good way to redummy the page.

* Added a "setbb" program that takes a file name and the four valuesfor the bounding box and updates the %%BoundingBox comment in the file.When possible, the program punches the numbers into the file instead ofcopying the file, so it should usually run quickly, even on large files.

* Fixed a problem with the checkbb program where it would make negativeoffsets one higher. For example, it would convert -20 to -19.

* Fixed a problem on a tab spread containing a page with zero columns wherethe folio on the zero-column page would sometimes be too large.

* Fixed a problem where ClassPag apply the procedure to shift ads betweencolumns in classes that flowed horizontally.

* setup.sh now runs /u/scs/buildenv if $InstArea is set.This makes is easier to run ClassPag with alternate versions of the tools.

* setup.sh now sets InstArea=dvl if the node name starts with "neo".This lets ClassPag select the correct version of the tools on neo.scs.com.

NOTE: This version requires a version of $TOOLS/spice from Oct 12, 2000 orlater, a version of $TOOLS/compmap from Sep 13, 2000 or later, and a versionof the palettes in $SPICE_PALETTE (usually /u/scs/terminal/palmap) from Oct 13,2000 or later. Older version of spice and ClassPag will not function withthe new palettes, so you should save the contents of the palette directorybefore installing the new palettes in case you need to return to an olderversion of ClassPag.

NOTE: This version has over 7000 lines of changes.

11/2/00

Version 2.18

* The product configuration screen "Column Vertical Rules"/"Lineas Verticales de Columna" has a new field "Agate and Display Ads"/"Agates y Destacados" to control whether ClassPag places vertical cut rulesbetween agate ads and display ads. If the field is empty, ClassPag defaultsto its previous behavior of placing vertical cut rules between agate ads anddisplay ads only when the configuration specifies vertical cut rules bothbetween agate ads and between display ads.

* The paper definition has the additional "PS Type"/"Tipo PS" value of "WEPS"to crop unused area on the top and bottom of the page but to preserve thefull page width and left and right margins. This might be useful whenbuilding eps files of full width square-offs with borders the extendoutside the page.

* Increased the number of legal classes in the product configuration from sixto nine. This provides more control over setting special attributes forclasses.

* ClassPag now cuts node names after the first period. This avoids problemson systems that sometimes report just the system name and other times reportthe entire network address.

* ClassPag has improved support for coupon ads. ClassPag now reads the couponflag from the correct position in the cardex. The ad information box now showsads with the coupon flag. ClassPag now writes the coupon flag in outext files.

* When ClassPag reads the sort file, it now accepts ads with the type "L" andtreats them the same as line ads. SII interfaces sometimes set that type.

* The page preview ads menu has a new option "Count Images"/"Contar imagenes"to rescan for missing eps files. After the scan, it reports the number ofmissing eps files. It checks only files that are marked as missing, so itshould run quickly if almost all of the ads were present during the import.If ClassPag is configured to show missing or incorrectly sized ads asconflicts, ClassPag will update the colors of ads on the preview display.To recheck if ads that were present during the import are now missing,use Command -> Misc -> "Retry missing images" / "Buscar faltantes" first.

* The printer setup no longer warns about print command lines that contain"lpr" but not "-c". Only "lp" has a "-c" option.

* On Linux, ClassPag uses "netscape" instead of "mail" as the mail reader.

* On Linux, the "xterm" program has a bug where it sometimes does not close.To close a stuck xterm, press the control key and then the left mouse button.This will open an xterm "Main Options" window. While keeping both the controlkey and the left mouse button pressed, slide the mouse down to the last option,titled "Quit". Release the mouse button and then release the control key.I have built a version of "rxvt" on /mci17/usr/local/bin that does not havethis problem. You can install it and replace xterm with a symbolic link to itif needed.

* Fixed a problem where ClassPag would sometimes not add vertical cut rulesin columns above a square-off with a margin.

* Fixed a problem where the top and bottom positions of the bounding box ofeps files made with BEPS or BREPS could be off by a little.

* Fixed a problem where the lists to create or widen page reservations wouldwork with the default column count instead of the column count of the page.

* Fixed a bug in gv-3.5.8 (usually installed as /usr/local/bin/ghostview)where it would crash loading postscript files if the bounding box happenedto match a media size known to gv but not enabled in its media size menu.Also fixed a few small bugs and added a 14x24 media size (which should belarge enough to open broadsheet pages). You should remove or renamesaved application default files in both "/usr/lib/X11/app-defaults/GV" and"$HOME/.gv" to see the new media size.

* The rebuild.sh script now shows the system name and start time.

NOTE: The SCO version will core dump if you delete the last item in a picklist. The Linux version is OK. This version has over 3000 lines of changes.

11/7/00

Version 2.19

* When the "Add PS Comments" spread option is set on a page where ClassPagmust include fonts, ClassPag now adds messages before loading each font.The messages say "Font" and then have the name of the font.This can help diagnose problems with bad fonts.

* ClassPag now adds %%BeginData and %%EndData document comments around theEPS segments of ads and folio blobs. Previewers like ghostview can read thecomments to skip over ads. This should fix problems where invalid commentsin ad EPS files could confuse ghostview and should eliminate the need to set"Remove DSCs (PS comments)"/"Borrar DSCs (comentarios)" in the paper database.

* ClassPag now adds %%BeginFont and %%EndFont document comments around fontfiles that it includes in output pages. Note that PostScript font filesshould not contain these comments. They should start with "%!PS-AdobeFont-1.0".

* lnexe.sh now says [OK] after the warning about not running it in a buildarea to show that it is OK to continue. The script is only needed whenrunning maketar.sh from the directory "/u/william/tools/cpag".

NOTE: This version has only 193 lines of changes, but the code to add%%BeginData changes the PostScript output and could potentially cause problems.

12/7/00

Version 2.20

* Increased the maximum number of columns per page from 20 to 32.

* When the printer database contains an expression for the %%Title comment,ClassPag now also writes the value of the expression into the "jobname"entry of the "statusdict" dictionary. Some RIPs list jobs in their queuesby the "jobname" value instead of by the %%Title comment.

* ClassPag can now position template banners at the top and bottom of everypage. You can use these banners to create page templates. For pages thatyou will print, folio templates are more efficient, but for pages thatyou will send as EPS, banner templates will transmit better because ClassPagsees them as page objects and can include them in the TIFF preview.ClassPag currently allows ten template banners. ClassPag places themin order by banner name from the top or bottom of the page to the center.ClassPag does not place template banners on overflow pages.If the edition has a full page ad, ClassPag will place it on an overflow page,and you will need to remove the template banners from a normal page and dragthe full page ad to that page.In the banner image Side/Lado field, you can enter "LEFT" or "RIGHT"to create separate template banners for left and right pages.The default is "ANY" to place the template banner on all pages.

To make a template banner, set the banner fields:Type/Tipo of "P" ("Primary", for the top of each page) or"B" ("Base" for the bottom of each page),Class/Clasif to a classification that will run,Request Name/Nom.Solicitud to all spaces,Default Image ID/Id Imagen to the image to place,Default Count/Cantidad Inicial to 1,Col Number/Nro. Col. to the column number (by default, ClassPag currentlyplaces the banner on the leftmost column possible),Position/Posicion to the new value of "T" for "Template",Spacer to "Y" (if you will place other banners or if you have ads that requestthe top or the bottom of the page),Overflow/Exceso to "F",Split Overflow/Partir Exceso to "H",Overflow Position/Posicion de Exceso to "L".

* When you paste a banner, the list of banner images now shows the number oftimes the banner runs in the edition, a slash, and then the number of timesthe banner is on the current page. This makes it easier to select bannersimages that you have not already placed.

* When you save or copy from a work area, ClassPag now shows the sizeof the ceps.out file that it will copy if the file is 1 MB or more.This should help you to estimate the amount of time that the copy will require.

* The new product configuration field "Save Area Name Expr"/"Expr para el nombre de la area" sets an expression to build the defaultwork area to copy into when saving. If this field is set, whenever youselect the command to save into a work area, ClassPag asks if you want tosave into the area specified by the expression. If you say "yes", ClassPagdoes the save immediately and does not open a window with the list of saveareas. This should make it easier to save into the correct directory.If you say "no", ClassPag opens the window of save areas as before.The expression can use the same variables as the printer "Pages Subdir"expression: RunDate, EndingDate, SectionName, ProductId, EditionId,EditionName, ZoneId and ZoneName.

* New product configuration parameters can add extra space at the bottomof a column that ends in the middle of a segmented ad. The screen"Legal and Segmented Ad Specifications (Continued)"/"Especificaciones de Avisos Legales y Segmentados (continuado)" has newfields "Leading Above Top Seg"/"Interlineado Sobre Seg" and"Leading Below Bottom Seg"/"Interlineado Debajo Seg" to set additionalleading at the top and bottom of columns spanned by segmented ads.If ads in the paper have more space at the bottom than the usual leadingbetween lines, the last line of a split segmented ad will be lower on thepage than the last line of normal ads. You can set "Leading Below Bottom Seg"to insert extra leading to make segmented ads line up with normal ads.ClassPag has several passes that remove space from the tops of columnsand usually pushes the leading specified by "Leading Above Top Seg" tothe bottom, so you should leave this value as "0" and change only"Leading Below Bottom Seg".

* The product configuration screen "User Preferences"/"Preferencias de Usuarios"has a new field "Find ad command preserves last search"/"Comando para buscar avisos guarda claves" to control whether the pagepreview command "Ads -> Find Ad" preserves the search parameters.The default is "Y" so you can restrict the ad list, for example, to color ads,and then repeatedly open the list and position ads without the need to specifythe search each time. The command key menu from the list window has a hotkeyto clear all of the search parameters.Set the field to "N" to have ClassPag reset the search parameters each timeyou open the list window.

* The product configuration screen "Page Numbers"/"Numeros de Paginas"has a new field "Show absolute page numbers in preview"/"Mostrar numeros absolutos en la pantalla" to control whether the pagepreview display shows absolute page numbers after the section-relative pagenumbers. The default is "N" to show just the section-relative page numbers.Set the field to "Y" to show absolute page number in parentheses after therelative page number. Even when the field is "Y", ClassPag shows theabsolute page number only when it differs from the relative page number.

* The product configuration fields with the font download list are nowblobs instead of fixed length strings. When you edit them, ClassPagopens an editor window.

* ClassPag now supports separating color ads that have an initial"%%DocumentProcessColors" comment specifying "(atend)". Very few adshave this format because most programs do not generate it or accept it.

* ClassPag can now write color information into banners that it creates.As ClassPag builds each banner, it sets the colors to the values specifiedin the "Banner Ads" form. This should make generated color bannersseparate correctly.

* Changed the line ad look ahead fit to run faster with long lists of smallads and of ads with similar sizes.

* Messages about errors while inserting records into databases now show atleast the database name. This should make it easier to track them down.The updated messages are for errors that should not appear under normalcircumstances.

* Most reports of ads now show the product name, edition name, zone name,and run date, plus the current date and time. This makes it easierto identify which reports are current.

* The statlist report under "View statistics" now shows the total ad countand area for each classification.

* Added the interface script purgeopi.sh to purge expired eps files basedon the list provided by SCS Track or SCS AdMAX in "/u/purge/OPICMD.TXT".The opicmd file has the format (blank line) OPICMD DELETE (blank line) adnumber1.eps adnumber2.eps (etc.)The script validates the first four lines of the opicmd file and then deletesthe specified eps files. For each file, it tries to remove the filename asgiven and then with no extension and then with the extensions .eps, .EPS, .psand .PS. This should prevent ClassPag from picking up old files.The script has the options -purgedir dir = set the directory with the OPICMD.TXT file. -opicmd name = set the name of the opi cmd file in /u/purge. -adsdir dir = set the name of the directory with the files. -olddir dir = set the name of the directory with saved files. -delete = delete the files. -move = move the files to /u/oldads. -log = show a log. -quiet = do not show a log. -echo = echo the delete commands instead of running them. -x = set shell-level debugging. -h = show this help message.

* Added the interface script convertpdf.sh to convert pdf files in thecurrent directory to eps files using the pdftops program.

* Added the interface script moveads.sh to process files in /u/displayads/ads.It moves eps files to /u/displayads and other files to /u/badads.

* The popups before saving or loading a work area now close before doingthe copy so you can see that you selected something.

* Fixed a problem where ClassPag could try to place too many parts of asegmented ad in a column.

* The handling of 4-character color abbreviations is now more consistent.The abbreviation for "Yellow" is now always "Yell" instead of "Yelo".

* Fixed a problem where ClassPag could sometimes misposition parts of spannedads on the top stack while justifying columns.

* The redummy command did not work on pages with more than 20 columns.

NOTE: This version has over 6000 lines of changes. Square-offs might notinteract well with template banners.

12/8/00

Version 2.21

* Square-off height calculations now take template banners into account.

* If a square-off had an irregular shape, ClassPag would usually placethe banner over the leftmost part, but if the rightmost part has a widerflat area, ClassPag will now place the banner over the rightmost part.

* Fixed a problem with generated banners with colors where ClassPag wouldnot write "Black" in the "%%DocumentProcessColors" comment. When ClassPaggenerates color separations, it needs to see an entry for "Black" in orderto copy the banner on the black plate.

* The Sun Solaris version includes Bob's fix for displaying toolbar icons.

NOTE: This version has 344 lines of changes. I built only a Sun versionfor testing in San Francisco.

12/27/00

Version 2.22

* The Import -> Read and Copy windows show the creation date of the eps filein the popup before copying them. This makes it easier to detect old dumpfiles.

* The Import -> Read and Copy windows have a new hotkey"Show/Hide Old Directories"/"Activar/Desactivar Seleccion de Directorios Antiguos"to control whether the list shows directories with old dump files.The Copy window shows both old and new directories by default.The Read window sets its default from the product configuration field"Hide old files in Import Read list"/"Esconder archivos antiguos en Leer"on the screen "Ad Loading"/"Cargar de Avisos".

* The Import -> Read and Copy windows can now sort directories bythe creation time of the sort file. The hotkey "Sort by Dump Time"/"Ordenar por tiempo de creacion" sets the sort.The three product configuration fields "Directory sort order for Import,Copy and Save"/"Ordenar directorios para importar, Copiar y Guardar" havea new value "TIME" to sort the directories by creation time.Depending on the operating system, the date for saved work areas might be thetime that the work area was saved instead of the creation time of the originalsort file.

* The product configuration has fields to set the initial size ofthe ghostscript previewer when viewing ads and pages. The fields"PostScript preview scale Ads" and "Pages"/"Escala para PostScript ver Avisos" and "Paginas" on the screen"Screen Display Preferences"/"Preferencias de Visualizacion"are small integers that control the ghostview "magstep" command line parameter.0 is normal scale, -1 is 0.707, -2 is 0.5, -3 is 0.25, -4 is 0.125, -5 is 0.1,1 is 1.414, 2 is 2, 3 is 4, 4 is 8, and 5 is 10. The values depend on theorder of the items in the ghostview magnification menu.The default for both fields is -3. If you have a large monitor, you couldincrease the initial sizes of preview windows by setting the scale for adsto "-1" and the scale for pages to "-2".

* The rcpuniq.sh now tests running ftp before sending the file and can detectif the login fails, if the ftp server is not running, or if the server is down.When it detects a problem, it returns an error status to prevent ClassPag fromsending additional pages.

* Editor windows have a new hotkey LKey-E (usually SHIFT-CONTROL-e or ESCAPE-e,see the LKEY line in the 'kb -Q' output to check) that passes the current textthrough the expression interpreter. You can use this to test expressionsas you are writing them. ClassPag supplies every variable supported inany context and sets the variables to default values. If the result hascomposition codes and if ClassPag is running in a place where Compositionis available, ClassPag will also show the results of passing the expressioninterpreter output through the Composition Engine. You can check theresults for composition warnings.

* The Save Name Area Expression in the product configuration can nowaccess the original import directory through the variable "ImportDir".Value of the variable comes from the new "Original Terminal" field in thecontrol record. This lets you build save area names from the import directory,which should help prevent users from saving to the wrong area. It is probablybetter to build the save area name from the current product and run dateinstead of using the import directory name, especially if the dump in animport directory can contain data for more than one product.

In the control record, "Original Terminal" tracks the original importdirectory (original import directories must have this field empty);"Source Terminal" is the most recent directory that the work area wascopied from, and "Import Terminal" is the directory where the importwas run that created the current ad databases. For example, if youlog in to ttyp1, import a dump from MonMain, paginate it, save it toSaveMonMain, and then copy it into ttyp2, the ttyp2 control record will havethe Original Terminal of MonMain (the original location of the dump),the Source Terminal of SaveMonMain (the last location of the work files),and the Import Terminal of ttyp1 (the location that built the work files).Hopefully this will help track down problems with work areas saved to thewrong places. The only way to view the control records is currentlythrough a hot key on the Import -> Copy list.

* The fixperm.sh script that runs during installs and updates now looksup the current directory in /etc/passwd to try to guess the correct user.It used to hard-code the user to "cpag". This should fix file ownershipproblems when installing into test accounts with different user ids thanthe "cpag" account.

* Fixed a problem where the page display would show absolute page numberseven when they matched the relative page numbers.

* Added a setdebug.bat script to set debugging flags for testing.

* A problem with the hot key to rebuild the classification areas frominside the classification selection window is now fixed. It was due toa formula bug from changes made on Oct 11, 2000.

* A routine to expand environment variables now works recursively, so somevariables can be defined in terms of others.

NOTE: This release is for testing only. It has over 2300 lines of changes.The version of spice linked in might not be stable. The next release ofClassPag will contain a version of spice with proportional fonts.

1/4/01

Version 2.23

* Most editor windows can now access save areas. The save area functionsused to work only in the interface "mapclass" formula (for entering legalads or importing ads from text dumps). This should make it easier to copyexpressions to new records or to other products.

* Most editor windows now have a binding for FKey-12 (usually F12 orControl-F,Shift-2) that shows all of the editor commands and their keystrokes.This makes it easier to find out what keystroke you need for a command.

* Editor windows in the "mapclass" formula now have the additional bindingsfor finding matching quotes, finding string lengths and evaluating the buffer.

LKey-B = match braces or quotesLKey-C = copy the entire buffer to a save areaLKey-E = evaluate the current bufferLKey-I = insert a text fileLKey-L = match braces or quotes and show the string lengthLKey-M = match braces or quotesLKey-P = paste text from a save areaLKey-S = copy the currently selected text to a save area

* Fixed a problem with the previous change the flipped some fields in thecontrol database. This messed up the control database screen.

* Added a creator.xfm -OW option to write the widths of all characters.This will generate an invalid dump but lets you see the widths of charactersin special positions. If you need to use one of those characters, once youknow its width, you can map one of the other characters to it.

* creator.xfm now specifies widths for the characters in positions 32 ' ',92 '\', 94 '^' and 95 '_'. Even though you can not use a backslash incomposition text (because it is the shove character), you can still access itthrough <PI 92,font> if the font has a width for it. This lets you generatea backslash without the need to steal a character or create a special font.

NOTE: If the fontdef "-a" option core dumps, get binary from 4-dec-00 or later.

NOTE: The changes are over 1700 lines (not counting creator.frm).

1/25/01

Version 2.24

* ClassPag and SCS Composition now support a limited form of OPI.The Composition PS_OR_EPS flag has a new value "opi" that producesan eps dump with opi substitution.The PS_OR_EPS flag is set in /u/comp/data/environ/<device>_envwhere <device> is the name of the photocomposer device.The mapclass interface formula for importing ads in marked-uptext runs CompSet with the "eps" device and then runs pcspoolwith the "cpag" device. AdMAX might use different devices.When PS_OR_EPS is set to "opi", on calls to insert logos,instead of inserting the EPS logo file, Composition writesa comment with "%SCSInclude:" and then the name of the file.This makes eps dumps much smaller.When the new ClassPag product configuration field"Check for SCS Composition OPI comments"/"Probar comentarios OPI de SCS Composicion" on the screen"Ad Import Restrictions"/"Restricciones de Importacion de Avisos"is set to "Y", whenever ClassPag writes internal ads, it willscan them for "%SCSInclude:" comments and insert the EPS fileswhen it can find them. If you run Composition on one server andClassPag on another, you will either need to mount the AdMax logodirectory on the ClassPag server or maintain copies logo fileson both servers.If ClassPag does not find the logo in the original location,it replaces the directory with "$COMP_LOGO/" and tries again.This allows you to have logos in different places on the AdMax andClassPag servers at a slight loss in efficiency.When ClassPag inserts the logo, it passes the SCSInclude comment butconverts the 'I' lower case to make it safe to reprocesses ClassPag epsoutput files.

* Composition can now recognize and skip previews in EPS files.

* ClassPag can now flow one-column display ads in-column with line adswhen they fit in the remaining space in the column below the line ads.If they do not fit, ClassPag dummies them as before. If you want alldisplay ads to flow in-column, you should change their ad type to line ads.The product configuration screen"Display Ad Specifications (Continued)"/"Especificaciones de Avisos Destacados (continuado)" has a new field"Flow one column display ads if possible"/"Fluir destacados de una columna si posible"with a default value of "N". Set it to "Y" to flow one column display ads.When ClassPag flows one column display ads, it also unflows them when itunflows line ads, even if the user preference "Unflow In-Column Display Ads"/"Desfluir avisos destacados puestos en columna" is set to "N".

* cortops now returns an error status when it has errors reading the input file.This can happen if the epsf header is corrupted or if the file is truncated.

* scanps.sh now checks the return status of cortops. If cortops returns anerror, scanps.sh treats the current ad as bad. This can help detect epsfcorrupted files where the extractable EPS segment does not product PS errors.

* The test to decide whether to treat fillers as display ads or line ads(for the purposes of placing cut rules) used to scan up and then down thecolumn to find the first non-filler and then use its type instead.Now, if that ad is a class header, in-line display ad or line ad,it counts only if it is at least as wide as the filler.Before this change, ClassPag would treat multi-column fillerssurrounded by line ads as if they were line ads instead of display ads.

* The new product configuration field"Max Agate Rule Filler Depth"/"Prof. max para tratar rellenos para agates"on the screen "Column Vertical Rules"/"Lineas Verticales de Columna"sets the maximum height of a filler that ClassPag will still consideras possibly being an agate filler for purposes of drawing vertical cut rules.ClassPag treats any filler larger than this height the same as a display adand does not try to scan adjacent ads to guess its type.The default value of 0 tells ClassPag to scan adjacent ads as before.A small value like 1 point will make ClassPag treat all fillers as displayads when drawing vertical cut rules.

* Fixed problems with locking line ads on the first page on editions wherethe first page is filled with randomly selected line ads instead of fillers.If you locked the line ads, saved the work area, and then reloaded it,ClassPag would convert all of the filler line ads on the first page intonormal line ads and then not flow those line ads in classification.

* Fixed a problem where square-offs with flowed ads would not work correctlyif two square-offs were over or under each other. The square-offs shouldnow work a little better and adapt to ads or other square-offs above orbelow them as long as there is still enough room to fit in the requestednumber of columns.

* Fixed a problem where ClassPag would scan only the first entry of a searchlist logical name when looking for images.

NOTE: This version has over 4600 lines of changes, not counting the changesto composition. The changes to composition require version of spice andpcspool from Jan 19, 2001, or later.

1/28/01

Version 2.25

* Start of changes for proportional fonts.

* rebuild.sh has a new -d option to run def only. This makes it easier totest updating screens.

* The banner setup window now has a mouse close box.

1/29/01

Version 2.26

* More changes for proportional fonts.

* The install procedure no longer tries to compile a local copy of thestandard palette in the palmap directory.

NOTE: Due to the preferences toolbar item, most windows now require a clickto place the cursor and a double click to select.

2/7/01

Version 2.27

* More changes for proportional fonts. All screens and windows have beenupdated.

* The editor buttons in the mapclass import formula are now spice push buttons.

* ClassPag handles leading at the tops and bottoms of columns better.The configuration parameters to add leading above and below legal adsegments at column breaks now work better. The additional leadingapplies any time a stream of segments is broken in the middle, whetherthe segments break at a column or at a class header or another ad.ClassPag also reserves space more consistently for horizontal cut ruleswhen an ad at the top of bottom of a column requires a rule.

* The checkinst.sh update post-processing script now removespalmap/standard.xpl if it exists. ClassPag now uses the standardpalette installed in /u/scs/terminal/palmap. The standard.xplshould be dated on or after Jan 31, 2001.

* The mapclass.sh interface script has a new debug option to enable debugging.

* The scratch.sh script now accepts the full path of a scratch area.

* The setup.sh script currently hard-codes the font size to 18.

* The testdef.sh script now runs def from $TOOLS instead of the current path.

* The unload.sh script now runs makespc from $TOOLS instead of the current path.

NOTE: There are over 4700 lines of changes since version 2.24,mostly related to the den screen changes for proportional fonts.A few pop-up windows paint incorrectly due to spice problems.

NOTE2: This version of ClassPag requires a version of the SCStools from the spiceprp mace area built on or after Jan 2, 2001and a version of spice built on or after Jan 31, 2001.

* The mapclass.frm now uses a palette so the text window looks better.

* The mapclass procedure includes two new formula: Include and CheckInclude.They both insert the text in the file named in user variable 10.If the file does not exist, they return an empty string and write an entryin the interface log file. In addition, CheckInclude displays a popupdialog on the screen.

* The procedure to create banner index line entries from a barrios filenow accepts an alternate format with two fields per line separated by acomma. The first field is the classification number and the second isthe classification title. When you load a barrios file, ClassPag asksif it has the barrios format or the new servicios format. The serviciosformat generates the index styles "initial" at the beginning, "titlepage"for classifications divisible by 100, "page" for other classifications,and "final" at the end.

* Fixed a problem where overflow pages with front-to-back pagination wouldsometimes have their first column unused.

* menprof.sh takes numeric options TOP and BOT to set the top and bottomcell margins. Spice currently has the built-in default of TOP 3 BOT 2.To use the full height of the screen on a 1600x1200 display with size 34fonts, use TOP 4 BOT 3.

* When ClassPag composes banners, it now includes a conditional definitionof cp_setcmykgcolor so banners with postscript segments that use thatoperator will be viewable and printable when not on ClassPag pages.

* The View Font option in View Ad Directories now looks for alphabet.psin /u/scs/gs/examples and /u/gnu/gs4/examples in addition to /u/scs/gs.

* The option to modify the environment looks for envmgr in /u/scs/bin andthen /u/scs/tools/bin.

2/21/01

Version 2.29

* setup.sh scans the X server font path (as reported by "xset q") and places thefirst entry starting with "tcp" first in the list if it is not already first.

* When the "align first header" product configuration parameter is off,ClassPag treats headers more like ads when it justifies columns.

* Fixed a proportional-font related painting problem in mapclass.frm.

2/22/01

Version 2.30

* Class titles can have composition commands embedded in <> (less than andgreater than). For example, in live indices, you can use <ql> to forcea line break. These characters may also be in barrios files used forloading index lines into banners.

* fixlogos.sh now sets TOOLS to /u/scs/tools/bin if it is not set.

* Added a WRQ Reflection X fontsize test in setup.sh.

* Fixed a problem where scans looking for the class of a nearby adwould stop too soon.

2/23/01

Version 2.31

* The command to open a popup dialog with the ClassPag version now alsoshows the full user name, terminal name and server name. This can helpto identify the system when the names are too long to fit in the informationwindow on the upper left of the main screen.

3/28/01

Version 2.32

* Increased the COMP_LOGO entry count in readcla from 20 to 100.

* readcla has a new -f option to take the first matching logo instead ofscanning all of the logo directories to check for duplicates.

* makecla.sh now runs readcla with the -f option. This should avoid warningson every logo when /u is a sym-link to /u1 and setup.sh finds every directorytwice.

* rcpuniq.sh now recognizes that the ftp reply "System type is unknown" doesnot indicate an error.

* Fixed a problem where ClassPag would not insert scs opi images in bannerswith segments produced by SCS Composition. ClassPag now scans externaleps files for scs opi comments if the %%Creator comment starts with "SCS".

* Changed spiceprp insmaint to generate a scs startup script(/etc/rc.d/init.d/scs on Linux) that supports Linux clustering.The script looks at the path used to run it. If the path doeslook like a standard place, like /u or /etc, the script looksfor /u. If /u does not exist, the script creates a symbolic link/u that points to the first component of the script's path.For example, on a cluster with /u1 and /u2, if the script is runfrom a directory under /u1, it will make a symbolic /u that pointsto /u1 and then start (or stop) the scs programs running from /u1.On shutdown, if /u is a symbolic link, the script removes it.The script exits on startup if /u exists. The script exits onshutdown if /u does not exist or if it points to another disk.This makes the script safe to run whenever the cluster servicesmount or unmount a file system under control of the cluster.For example, on a cluster with system1 and system2 and file systems/u1 and /u2 where system1 usually mounts /u1 and system2 usuallymounts /u2, if system2 fails, when the cluster software migrates/u2 to system1, it can run the scs startup procedures on /u2.If /u1 is active on system1, the scs procedure will not do anything,but if /u1 is not active, the scs procedure will run the scs startupfrom /u2.

* More changes for proportional fonts.

* Rebuilt with spice libraries from 26-Mar-01.

NOTE: This version needs a version of spice from 26-Mar-01 or laterand a version of the SCS X fonts from 24-Mar-01 or later.We have improved the naming of the SCS X fonts to avoid conflictswith standard fonts. ClassPag and spice will not start up if theycan not find the SCS X fonts that they require.There are over 19K lines of changes from 2.27 to 2.32.

* ClassPag can now search for EPS files in a list of directories.The product configuration field Alternate Ad Directories/Directorios alternativos on the screen Display Ad Specifications (Continued)/Especificaciones de Avisos Destacados (continuado)lists a comma-separated list of directory names to search.The directory names may be separated by spaces, commas or semi-colons.On unix-based systems, the names may also be separated by colons.When searching for a file, ClassPag first looks for the name as constructedfrom the interface file in the dump. Next it scans in the directories listedin the CPAG_EPS environment variable. Finally it scans the directorieslisted in the configuration. Within each directory, it tries variouspermutations of file name case and of extensions, as specifiedin the product configuration. The first match stops the scan.If the last character of a directory name is a plus sign (+),ClassPag prepends the directory to the original full file namepath instead of just to the file name.

* ClassPag now shows version and product information in the titleof the outer window created by the window manager.

* The Position->PasteBanner list on the page preview display andAds->Banners list on the statistics screen no longer show inactivebanner images.

* The product configuration field Before Internal Ads/Antes de avisos internosthat specifies PostScript to write before internal ads can now have thesyntax "include" plus a space plus a file name. If the file name hasno initial directory path or logical name, ClassPag will supply a defaultlogical name of "$DATA/" which includes the ClassPag home directory.This allows you to enter long sequences in a file that would not fitin a field. Also, the distribution now contains a file "fixinc.ps"that fixes some problems with logo space reservations in dumps madeby SII front-ends.

* The product configuration screenAgate Ad Specifications(Continued)/Especificaciones de Avisos Agate(continuado)has a new field Top Shift Ad Depth/Prof.para mover desde arribato specify the minimum height of ads to move to the top of columns.When ClassPag encounters a single-column line ad this size or larger,it moves the ad to the top of its classification in the column.If more than one ad in the classification is larger than this size,ClassPag sorts the large ads with the largest at the top.

* ClassPag can now divide pages into EPS blocks.The paper definition has the additional "PS Type"/"Tipo PS" value of "BLOCK".ClassPag will divide the page into vertical blocks where each block containsa range of columns that all have columns packed to the same height.The product configuration screen "Folios and Banners"/"Folios y Carteles"has a new parameter "Max EPS Gap in Blocks"/"Separacion maximo para EPS"to control the amount that the columns heights in a block may differ.Printer file name expressions can use the numeric variables NumBlocksand BlockNumber. NumBlocks is the number of blocks needed for the page.BlockNumber is the index of the current block from 1 to NumBlocks.If the print option is not writing blocks, both NumBlocks and BlockNumberare 0.

* Fixed a problem where running ClassPag as root would show a warningabout an uninitialized variable called "LOGNAME".

NOTE: This version has over 1800 lines of changes.

5/1/01

Version 2.35

* Overflow pages now show with reddish borders instead of black bordersin the page preview. This makes them easier to identify.

NOTE: The changes for overflow pages are about 60 lines.

5/3/01

Version 2.36

* ClassPag has a new ad configuration database to refine leading andcut rules between pairs of ads. This database lets you overridevalues for specific combinations of ad types. It has fields toset the preferred leading, whether to place a horizontal rule,and the horizontal rule depth and inset. If a field is empty,ClassPag ignores it and keeps the value specified by the productconfiguration, so you need to change only some of the values,you do not have to set them all. The only exception is thatif the field to place a horizontal cut rule is empty but thefield with the rule depth is not empty, ClassPag enables rulesif the rule depth is greater than 0 and disables rules otherwise.The new database is under Setup->Ad Configuration.

The entries for the type "leading fillers" also affectreserve fillers and the spaces above the top ad and belowthe bottom ad.

* ClassPag has a new configuration parameter to allow you to dragline ads and in-line display ads (internal type DISPLAY_FIRST).ClassPag will move the ad and then do the equivalent of saving theline ads in the column. The parameter is "Can Drag Line Ads"/"Poder traer avisos líneales" on the screen "Screen Display Preferences"/"Preferencias de Visualizacion".

* In the file list under ViewAdDirectories, Insert and Delete nowmark and unmark files. The window has new hotheys to mark andunmark all files. Marked files start with a star.The options to load all of the ads as fillers or banners now loadonly the marked files if any files are marked. This makes iteasier to load a few specific files.

* When ClassPag divides pages into EPS blocks, it treats elementswith image type "NONE" or with image type "EXTERNAL" but an emptyfile name as fillers. This allows you to create banners or fillersthat will work like space reservations.

* ClassPag now numbers EPS blocks from left to right.

* The length of the view ad directories window form to entera directory name is increased from 30 characters to 70.

* setup.sh now adds /usr/sbin to the PATH.

* setup.sh now searches for a font server on the unix server if thex server does not have a font server on its search path.

* setup.sh now recognizes WRQ at 1152x864 resolution.

* The gslp.sh script no longer ignores the -gs option.

* When ClassPag reads the list of used font names from the productconfiguration, it now treats SCS lchars as whitespace and ignores new lines.When the SCS editor opens a window, it rewraps the text, adding and removingnew lines at it sees fit. Since the rewrap can insert new lines in the middleof font names, ClassPag must ignore new lines. If you want to force linebreaks for readability, you can add quad left characters (the same as youcan in text for the expression interpreter).

5/8/01

Version 2.37

* The product configuration flag "Omit under reservations"/"Omitir debajo de reservas" on the screen "Classified Heading Placement"/"Ubicacion de Encabezados de Clasificaciones" prevents ClassPag from placingcolumn headers under reservations (leading fillers and reserve fillers).

* The product configuration screen"Top of Page Horizontal Rule Specifications"/"Especificaciones de Linea Horizontal a Traves de la Pagina"has two new fields "Rule Thickness"/"Grosor de la Linea" and"Rule Inset from Edges"/"Intercalado de la Linea" to set the thicknessand inset of horizontal cut rules between ads and news.ClassPag used to set the thickness and inset to zero.

* The product configuration field "After the Prolog"/"Detras del prologo"that specifies PostScript to write after the prolog can now have thesyntax "include" plus a space plus a file name. If the file name hasno initial directory path or logical name, ClassPag will supply a defaultlogical name of "$DATA/" which includes the ClassPag home directory.This allows you to enter long sequences in a file that would not fitin a field.

* The distribution now contains a file "fixinca.ps" that contains justthe lines in "fixinc.ps" that need to appear before each ad to fixproblems with dumps made by SII front ends. You should now use"include fixinc.ps" for the PS after the prolog and "include fixinca.ps"for the PS before internal ads. This will make ClassPag output filesabout 1KB smaller per ad, which can come to a few hundred KB per page.

* The classification selection window has a new hotkey"Move subclasses"/"Mover subclasificaciones" to move subclasses fromone class to another. To move subclasses, first highlight the classthat contains them. Then open the command window and select"Move subclasses". ClassPag will then show you a new list ofclassifications. Select the classification that you want to movethe subclasses to, and then answer ok to the prompt.After moving classifications around, you might want to selectthe hotkey to rebuild the class areas.ClassPag does not let you move a class under one of its own subclasses.

* setup.sh no longer tries to add the local scs font directories tothe X server's font path if the font path lists a font server or ifthe font directories are already on the path.

* The configuration parameter to place class headers even if thereare no other ads in their class now has an effect again, although itis untested since no one currently uses it.

* The file scan in the procedure to test composition looksfor additional files added in recent composition versions.It still checks for the old files, so composition could still be okeven if it shows a lot of errors, especially under /u/formats.

* The product configuration screen "Ad Importing"/"Importacion de Avisos"has a new field "Create Parent Classes During Import"/"Crear clases parientes durante importacion" to create as many levels ofclassifications as needed during an import. It defaults to the negationof the field "Sort File Has Nested Classes" (which is currently immediatelyabove it on the screen). For example, with a class suffix length of 3,a class nesting multiple of 100, and "Sort Field Has Nested Classes" setto "N", when ClassPag sees the first ad for class "141ACC", it will buildonly class "141ACC" with a parent of "141". A later post-pass will seethat class "141" does not exist and will create it with a parent of "100",and then will create class "100" with a parent of "******" (the top level).If "Create Parent Classes During Import" is enabled, ClassPag will check for(and possibly create) "141ACC", "141" and "100" as needed during the import.This is slightly less efficient than creating them during the post-pass,but their sequence numbers will follow the order of the dump filesmore closely. This might allow the plain load classes procedure to workin places that currently need to load classes with the sequence number.

* When the import class fixup creates parent classes for orphans,it now initializes all of the fields of the class record.

* ClassPag writes the missing fonts in both the level 1 "%%DocumentNeededFonts"format and now also in the level 2 "DocumentNeededResources: font" format.CCI editorial requires the level 2 format with the additional restrictionof one font name per line.

* Ads with image type NONE or with image type EXTERNAL and blank file namesno longer show as missing ads.

* When importing ads, ClassPag now checks to find images in thealternate ad directories if the product configuration specifies any.This makes the count of missing ads more accurate.

* ClassPag can now add vertical cut rules to eps blocks.The paper definition has the additional "PS Type"/"Tipo PS" value of "RBLOCK"that works like "BLOCK" except that ClassPag adds the gutter width to interiorcolumns in order to include vertical cut rules within the image.On blocks that did not touch either side of the page,the types "BREPS" and "CREPS" used to include only a gutter margin on the left.They now also include the gutter margin on the right.

* Fixed a problem with square-offs where ClassPag would sometimes not makesquare-offs of widths where columns would have only one or two ads.

* If the "CEPS SIZE" warning in the conflict report no longer contains nulls.

NOTE: This version has 2149 lines of changes from the previous version.

5/11/01

Version 2.39

* The reports of missing ads and missized ads now show the start of thead description.

* The product configuration screen "User Preferences"/"Preferencias de Usuarios"has a new field "Show ad image names in title area"/"Mostrar archivo para avisos en titulo". The default is "N". If you set itto "Y", on agate and display ads with external images that differ from the adnumber, ClassPag will show the image name before the ad description withinthe ad (when there is room on the screen) and in the description area forthe current ad at the upper right of the screen.

* The product configuration screen "Classified Heading Specifications"/"Especificaciones de Encabezados de Clasificaciones" has a new field"Preserve Rule Spacing"/"Fijar Espacio a Lineas" to force the cut ruleto one-half of the configured leading value below the class header.The default value of the field is "N" to center the cut rule between the ads.

* The paper definition database has a new field"EPS Hor. Margin"/"EPS Margen Hor." to set the size of the left andright margins on all types that print rules, currently BREPS, CREPSand RBLOCK. If the field is empty or 0, ClassPag uses the gutterwidth as before. Otherwise, ClassPag uses the value in the field.For proofs, ClassPag scales the margin the same amount as the page.If the margin value is larger than the gutter, ads from adjacentcolumns might show through.

* The paper size type "RBLOCK" now always includes a margin on both theleft and right, even if the left column is the leftmost column of thepage or the right column is the rightmost column of the page.

* Box Information gives run counts only on display fillers and line fillers.It used to show counts for banners and a few other types of ads.

* Fixed a problem where ClassPag could hang on a reflow if you dragged anad from inside a square-off to over the square-off banner. A loop hada bad test, but apparently only caused problems on Suns.

5/16/01

Version 2.40

* ClassPag can now use information in the classification nesting databasewhile importing ads. For dumps that have all of their classifications inthe order that they should run, if "Create Parent Classes During Import"is enabled, ClassPag can create parent classes by consulting a classificationnesting table rather than algorithmically. The result is similar to aload without updating sequence numbers, except that since ClassPag createsthe parent classes as they are needed, they will have sequence numbers thatplace them in the correct order with respect to other classes.To enter the name of the classification nestings to use,the product configuration screen "Ad Loading"/"Cargar de Avisos" hastwo new fields "Default Import Class Nestings"/"Nidos a usar para importacion"and "Use Control Nesting"/"Usar nido en control".The "Default Import Class Nestings" is the name of the classification nestingentry that ClassPag should use. If "Use Control Nesting" is "T", and if thecontrol record has a value entered in its "Fix Classes Id", ClassPag will usethat entry instead. The count-down window for the import now shows thename of the nesting that the import is using or "[NONE]" for no nesting.

* The product configuration screen"Screen Display Preferences"/"Preferencias de Visualizacion" has a newfield "Ask Before Drag"/"Pedir antes de mover". The default value is "F".If you set the field to "T", ClassPag will show a warning when you tryto drag a line ad that you have not already positioned or moved.This can help protect against mistakes when you have enabled theparameter to drag line ads.

* When setup.sh searches for the node name by scanning ifconfig output,it now takes the first entry that does not start with 127. It used toget confused if there was more than one entry not starting with 127.

* setup.sh now tries to find the font server by searching for the node namein the /etc/hosts file if the first attempt using ifconfig is not successful.

* When you change the ad configuration setup from inside a pagination session,ClassPag now asks if you want to reload the ads to make the change take effect.

5/16/01

Version 2.41

* ClassPag now accepts column position requests for display ads.The column request should appear in columns 60-61 of the sort file(with the 60 and 61 counting from 0). The value should be thedesired column of the leftmost column of the ad counting from theleft side of the page.

* The product configuration screen "Display Ad Specifications (Continued)"/"Especificaciones de Avisos Destacados (continuado)" has a new field"in square-offs"/"debajo carteles" to add leading between ads in square-offswhen ClassPag places banners. With the default value of "N", ClassPag worksas before where it sometimes needs to rebuild square-offs without leadingin order to ensure that other ads will fit on the page. If the field isset to "Y", ClassPag is more careful about preserving leading between adswith the risk that other ads outside the square-off might not fit.You should use this option on products that contain only a single square-off.

* When ClassPag calculates ad positions inside square-offs, it can span adsover other ads. If the product configuration specified no spanning, ClassPagwould not be able to place the ads according to its calculations and would endup dummying the page. The test to prevent spanning ads now permits ads insquare-offs to span other ads.

5/22/01

Version 2.42

* ClassPag pages now include a conditional definition of cp_setcmykgcolorincluding pages or converted ads using that operator will not change thecolor state of the page. This only affects eps pages at sites usingSCS Composition where the pages themselves contain eps files made by ClassPag.

* The product configuration screen "Additional PostScript"/"PostScript adicional" has a new field "Before the Prolog"/"Antes del prologo"to specify a PostScript sequence to write before the shared prolog forinternal ads. ClassPag writes this field immediately before the prologand now writes the value specified in "After the Prolog" immediately afterthe prolog. This allows these fields to encapsulate the prolog.

* Fixed a problem with SII-generated ads. The SII prolog saves the operator"setcmykcolor" as "old_setcmykcolor" and then redefines "setcmykcolor" interms of "old_setcmykcolor". If the SII prolog runs twice, it creates aloop by defining each of these two operators in terms of the other.If you use the ClassPag option to save an internal ad to a stand-alone EPSfile and then import the stand-alone EPS file on to a page, and if thatpage has a modified version of "setcmykcolor", for example, if anotherprogram is trying to do a software color separation, the second copy ofthe SII prolog contained in the stand-along EPS file will create a loop.Other parts of the SII prolog could cause less dramatic problems if theyrun a second time.

The solution is to prevent the second copy from running.The ClassPag distribution contains a new file "fixincbp.ps" for usein the "Before the Prolog" field and a modified version of "fixinc.ps"for use in the "After the Prolog" field. SII sites shouldset "Before the Prolog" to "include fixincbp.ps" and"After the Prolog" to "include fixinc.ps".The new fixinc.ps depends on fixincbp.ps.If you are using it, you must set the "Before the Prolog" to"include fixincbp.ps" or you will get PostScript errors.fixincbp.ps is /ICPS where { pop SII_work_dict begin SII_work_dict begin SII_work_dict begin SII_work_dict begin } {and the change to fixinc.ps is the initial line } ifelse

If you have fillers created from SII ads, you should find a 13,000 characterline at the top of the file starting (the BoundingBox numbers will be different)%!PS-Adobe-3.0^M%%BoundingBox: 0 0 19976 1584^M%%Creator: SII PS Output Moduleand ending0 setjobparams^M%%EndProlog^M% File /u/william/tools/cpag/fixinc.ps

Add the contents of fixincbp.ps before the long line and "} ifelse" afterthe long line.

If you have a lot of fillers, you should be to edit them at once(with "emacs *" or "emacs */*") and then create a keyboard macro(with "^X (" and "^X )") that searches for Adobe-3.0, and then insertsthe new text.

5/23/01

Version 2.43

* Fixed a problem where ClassPag could place two copies of a multi-columnline ad when the configuration requested copying headers from parent classesto child classes. The scan could go one ad too far.

5/31/01

Version 2.44

* Page names (to control square-offs) have a new field "Just" to control thevertical justification of pages that contain only ads from that square-off.The default value, "DEF", uses the value in the "Justify Square-Off Pages"from the product configuration "Vertical Spacing Specifications" screen."YES" adds fillers to justify the page."NO" fills the top of the page with reservations."EXP" adds fillers to increase the size of the square-off to thedefault depth.

* makegif.sh has new -eps and -tif options to generate eps or tiff files.

* When makegif.sh converts from tiff to eps, it now uses the tifflibprogram "tiff2ps". The ImageMagick "convert" program ignores the pixelsper inch value in the tiff and generates an incorrectly sized eps ifthe tiff image does not have 72 pixels per inch. tiff2ps with the -2option to generate Level 2 EPS files creates smaller files than convert.tiff2ps with -2 also requires -z to write image in the proper place andsize in the eps.

* When ClassPag searches directories for an EPS file, if it finds an invalidfile, it now continues the search. If an ad has an OPI reference pointingto a TIFF file, but the search path contains an EPS version, ClassPag willnow find the EPS version, where before, it would stop after finding the TIFFversion and leave a hole on the page.

* If the ClassPag logo search for OPI references does not find the file,ClassPag now retries the search using the same search list as for EPS filesfor ads. This allows ClassPag to find logos in directories specified inthe alternate eps file directory list in the product configuration.

* The PostScript file generated from an ad by clicking on the ViewBox buttonnow contains BeginData and EndData comments around the ad to keep Page commentsin embedded EPS files from confusing ghostview.

* ImageMagick writes EPS headers with the BoundingBox line after the Titleline, but it writes only one percent on the Title line. ClassPag and checkbbnow read past lines starting with one percent a few letters and a colon.

* Fixed a problem with the ViewAdDirectories LoadAll commands where they wouldtreat all of the files as the same type as the first file. If the first itemwas a directory, the load would end up skipping all of the files.

6/2/01

Version 2.45

* Page names (to control square-offs) have a new field "Col" to set thestarting column of the square-off. The square-off screen has a new toolbarbutton to change the starting column. You should set the column only onsquare-offs that fit on one page. If the square-off has too many adsto fit at the specified column, ClassPag will ignore the column requestand place the square-off at the left or right edge of the page accordingto the "Overflow Position" field. Column requests have not been testedon square-offs with margins.

* When you edit the square-off positions from inside a pagination session,ClassPag now warns in more places if you try to modify a square-off thatis not in the current edition or is for a classification that has no ads.

* The makegif.sh -eps option now uses tiff2ps with the -1 option to createa Level 1 EPS file. Use the new -eps2 option to create Level 2 EPS files.CCI editorial systems do not accept some Level 2 files because they tryto pass them through an old version of ghostscript.

6/2/01

Version 2.46

* The product configuration screen "Agate Ad Specifications"/"Especificaciones de Avisos Agate" has a new field"Warn if Duplicates"/"Advertir si duplicadas" with a default of "Y".If you set it to "N", the ClassPag ImportAds->ReadClassPagFiles will notdisplay pop-up warnings if it finds duplicated ads in the interface file.This can be helpful if the interface sends duplicate copies of some ads.

* The count-down window on the ImportAds->ReadClassPagFiles screennow displays a separate line for duplicate ads instead of combiningthem into the count for errors.

6/6/01

Version 2.47

* ClassPag now works-around a bug in a recent version of SII PSD dumpswhere the byte offset of the eps trailer in the sort file is one bytetoo large. The symptom is that pages view OK but get the error"Error: /undefined in rx" when they are printed.

* setup.sh now sets SPICE_PREFERENCES to CPAG_HOME. Usually all userslog in to /u/cpag. On sites with test systems, this allows each testsystem to have different preferences.

* ClassPag now writes the version number in the Creator comment of PS files.This makes it easier to find the version used to make a page.

* ClassPag no longer writes an XBoundingBox line in EPS files written withtype "BLOCK". The XBoundingBox is for ClassPag internal use only whenpairing EPS files of completed tab pages.

6/14/01

Version 2.48

* Updated the fixinc.ps and fixinca.ps SII correction scripts towork-around logo problems in the 7t PSD dump module. The scriptshad been written for the 5g PSD dump module, which had a differentset of errors. The scripts now auto-sense the SII version.

* The "Just" field in page name records (to control square-offs) hastwo new values "MULT" and "MEXP". Both produce multi-page square-offswith the maximum width and height on each page set by the width andheight specified in the square-off database. The difference is that"MEXP" works like "EXP" where ClassPag adds fillers to increase the sizeof each square-off block to the requested maximum height. ClassPag placeseach square-off block on the inner edge of its page.

* If the page name justification type is "EXP" or "MEXP" (to expanda square-off to a given height), ClassPag no longer places a smallerbanner if the heights of the columns inside the square-off differby more than the configured maximum banner gap.

* When you change the settings for a square-off, ClassPag now detects morechanges immediately instead of waiting until you exit and restart a paginationsession.

* When the square-off justification is set to anything but "YES",and a page contains only ads from the square-off, ClassPag no longer addsfillers if one of the columns of the square-off does not have a bannerabove it. This should produce a more useful EPS page when ClassPagreduces the width of the banner due to an irregular ad geometry.

* The product configuration field "Outext Export Command"/"Comando a exportar outext" contains a command to run after creating anoutext file. The field is now followed by a blob continuation fieldso that the command can be as long as needed. Also, if the field startswith a left paren or a double quote, ClassPag runs it through the expressioninterpreter. It has access to system variables related to the product andedition, similar to the variables available in expressions for building savearea directory names. ClassPag appends a space and the name of the outextfile to the command. If the copy commands needs to have the outext filename in the middle, you can append "; echo" to the end of the command,for example, "cp outext.txt /exportarea/outext-" // f$edit(RunDate // ProductId // EditionId // ZoneId, "COLLAPSE") // ".txt ; echo "

6/21/01

Version 2.49

* maketard.sh now includes *.ps files.

* Fixed a problem where square-offs with line ads could sometimes overflow.The full pagination used a larger look-ahead than the estimate and in rarecases could produce a worse fit if it grabbed small ads to fill an earlycolumn and then had only left poorly fitting large ads in the next column.Also, ClassPag now allows a little extra space in the last column in case manualpositioning of line ads below the square-off makes the fill slightly worse.

* The "BLOCK" and "RBLOCK" paper size types now increase the bounding boxto the bottom of the page for each column that has a real ad at the bottomif the ad needs a cut rule below it. ClassPag used to crop the cut ruleout of the bounding box.

* The "Ad Importing"/"Importacion de Avisos" product configuration screen has anew field "Clear Book Sizes on Import"/"Borrar tamano de libro antes importacion" to clear the book sizes entriesbefore copying files from another work area. If you set the field set to "Y",ClassPag clears the book size entries if you say to remove the old files beforecopying new files. If you say to keep the old files and you are copying from animport area, ClassPag will ask if you want to clear the book size entries.

* The product configuration screen "Additional PostScript"/"PostScript adicional"has a new field "Patch After Prolog"/"Mas detras del prologo".The field has the same format as the "After the Prolog" field before it.ClassPag inserts both fields into output files after the prolog.For sites with an interface that needs a large fix in all products and smalleradjustments in different products, the "After the Prolog" field should havethe large common fix, and the "Patch After Prolog" should have theproduct-specific fixes.

* The fixincleft.ps sets a flag that keeps the fixinc.ps procedure fromshifting logos. Use it as the "Patch After Prolog" for SII products thathave their logos print OK with any adjustments.

7/9/01

Version 2.51

* The "User Preferences"/"Preferencias de Usuarios" product configuration screenhas a new field "Ask before squeezing pages"/"Preguntar antes apretar paginas".The default value is "N". If the field is "Y" and you drag an ad to a positionthat would cause a previously unsqueezed page to be squeezed, ClassPag willdisplay a warning and ask if you want to squeeze the page.

* When ads, fillers or banners have a fractional height in points,ClassPag now takes just the integer part instead of rounding the height.For papers with a page depth that is not an even number of centi-points,half-page ads will have a fractional number of points.For example, a 21" page has 21 X 7227 or 151767 cpts,so a half-page ad will have 10.5" X 7227 or 75883.5 cpts.If ClassPag rounds the height to 75884, two half-page ads would not fit.Some interfaces, SII in particular, pass 10.5" ads as 75884 cpts in thesort file, so two half-page ads will not fit, and rounding is not an issuebecause the value in the interface, as required by the interfacespecifications, is an integer with no decimal places.For interfaces that round up, the solution is to make the page depthan extra centi-point larger. This increases the page height by 1/7227",which is still a few times smaller than the smallest dot that an imagercan create.

* The classification sequence number is now a five-character string insteadof a four-digit number. This should make it easier to sequence five-digitclassifications and to sequence sub-classifications with alphanumericsuffixes.

* When using dumps from SII interfaces, if you will embed square-offs fromone ClassPag session inside another session, you should avoid using the"Patch After Prolog". Also, all ClassPag products should be made with thesame patch in the "Before the Prolog", the "After the Prolog", and the"Before Internal Ads" fields.

* ClassPag now checks if the book size database has any entries beforeasking to clear it.

* Fixed a warning where ClassPag would complain that the value was toosmall when you entered a value into the internal centi-point fields.

NOTE: This version has over 2000 lines of changes from 2.49.

NOTE2: The change to the ad sort key in version 2.50 and the classificationsequence number in this version both require rebuilding work areas whenthese versions are installed. The loadtape script will do the rebuildsautomatically.

NOTE3: The change to square-off packing in version 2.49 and the changesto the classification sequence number and the test for squeezing pagescould cause problems and should be tested before using this version.

7/13/01

Version 2.52

* The product configuration screen "Ad Importing"/"Importacion de Avisos"has a new field "Format Class Name in Sequence"/"Formatar nombre si ordenar usandolo" to tell ClassPag whetherit should reformat the sequence number field before storing it.The default is "Y" if "Sequence Classes by Class Number" is set and"N" otherwise. The defaults make ClassPag behave closer to what itdid when classification sequence numbers were numeric.The important issue is that if classification names are not all zerofilled to the same length, ClassPag must reformat them in order toprevent class "2" from coming after class "10".

* Expressions to copy outext files and to generate work area save namescan now use the variable "ClassNestingName" which evaluates to the nameof the last classification fixup entry applied. If you make severalsquare-offs from the same dump files, this might help to tell them apart.

* In expressions, ClassPag now trims trailing spaces from the ProductIdvariable.

* Expressions for print commands can now use the variables "ImportDir"and "ClassNestingName".

* When the product configuration flag "Ask if not written" (to warn if youexit a pagination session without writing an outext) is enabled, ClassPagnow asks if you want to write an outext instead of just displaying a warning.

* If the product configuration has an outext export command, for purposesof printing the outext warning, ClassPag considers the outext written whenyou tell it to run the outext export command. If you select an optionto generate an outext but then say "no" to the prompt to run the command,ClassPag will consider that the outext has not been written.

* ClassPag splits long outext command lines better between the pair offields in the product configuration.

7/25/01

Version 2.53

* The product configuration screen "Ad Importing"/"Importacion de Avisos" hasa new field "Sequence Classes by Suffix"/"Ordenar clases usando el sufijo"for products with classifications built from class numbers and sort keys.If classifications have suffixes, and you set this field to "Y", ClassPagwill order suffixed classifications under their parent by their suffix.This allows suffixed classes to appear in any order in the sort file,which can happen for interfaces that send more than one set of dump files.Before this change, dumps with suffixed classes required setting"Sequence Classes by Class Number" to "Y", and ClassPag would sequencethe classes by the order that they appear in the dump.

* Square-off records have a new field "Pos" that can be "TOP", "BOT" or "DEF".The default value, "DEF" or empty, placed the display ads at the top forsquare-offs placed at the top and display ads at the bottom for square-offsplaced at the bottom. The values "TOP" or "BOT" placed the display adsat the top or the bottom inside the square-off.

* Square-off records have a new field "Fill"/"Rell" that can be "YES", "NO" or"DEF". ClassPag can place large and small fillers in square-offs.Large fillers are large multi-column fillers placed between display ads.Small fillers are small single-column fillers placed within columns of line ads.The default value, "YES" or empty, means that square-offs can have large fillersas before. The "Place Fillers in Square-Offs" configuration parameter controlswhether square-offs can have small fillers. "NO" means that square-offs can nothave large or small fillers. "DEF" means that square-offs can have large andsmall fillers only if the "Place Fillers in Square-Offs" configuration parameteris set.

* The classification selection window has a new hotkey"Combine Subclasses"/"Combinar subclases" that combines all of thesubclasses of the current class. For example, if the class structure is100 -> 101 -> 101A, 101B 102 -> 102A, 102BAfter running combine subclasses on class 100, the structure will be100 -> 101A, 101B, 102A, 102Band any ads within classes 101 and 102 will be combined with any adsalready in class 100. The ads will be sorted by their sort keys.Classes 101 and 102 actually still remain under class 100 (in orderto enable any fillers or banners that they contain), but they willno longer contains any ads or subclasses.

* The Box Information window for class headers now shows some informationabout the classification.

* Added an "es" option to tntcpag.bat.

* Fixed a problem introduced around version 2.14 where the horizontal scalewould be applied twice when printing pages. This would only matter if thehorizontal scale was not 0 or 1.

* When printing pages, if the spread entry has no horizontal or verticalscale but the paper entry does, ClassPag now uses the value in the paperentry instead of 0.

* ClassPag writes cleaner EPS Document Structuring Comments.ClassPag now reads and writes EPS files with HighResBoundingBox lines.ClassPag now writes only integers in the BoundingBox lines.When viewing an ad, ClassPag writes both fields of the Page line andno longer writes an extra EndProcSet line.

* When you open a list of display fillers to paste, ClassPag now shows onlyads with active classifications. The list used to show all fillers, but youwould get a warning if you tried to paste a filler from an inactive class.

* Fixed a problem where ClassPag would open the ceps.out file with theroutine for opening normal EPS files. Since version 2.44, that routineignores files that do not look like EPS (which currently means startingwith a percent sign). If the ceps.out file had no header and started witha NULL, ClassPag would ignore it.

* The commands to paste fillers now open the filler list faster.The new version of spice attempts to read all of the records in a listand had to do a lot of disk access for products with a large number of fillers.ClassPag now reads the fillers into a table and displays the list fromthe table instead of the file.

* When you use the list key on file names, ClassPag is smarter about settingthe starting directory.

* Added a work-around for a formula problem where using Ads -> EditTheAdDataand changing the image name with the list key would give a duplicate insertionerror the first time.

7/26/01

Version 2.54

* The "Fill Front Page"/"Llenar Pra.Pag" field of the classification databasehas a new value "R" to mark classes with display ads that are reservations.The display ads behave normally except that if you print with a paper entryusing the "PS Type" of "BLOCK" or "RBLOCK", ClassPag will trim the ad fromthe page.

* The "placement reason" in the box information window now has additionalvalues for ads in square-offs to provide more information about why ClassPagplaced the ad."PgNm Fill"/"PgNm Llenar" is a display ad that ClassPag placed using itspacking routines."PgNm Flow"/"PgNm Fluir" is a header or line ad that ClassPag flowed intothe square-off around display ads."PgNm Request"/"PgNm Pedida" is a display ad with a special request liketouching a given ad."PgNm Dummy"/"PgNm Pir" is a display ad that ClassPag could not place whereit wanted, for example, if you had moved another ad in the square-off tothe place where ClassPag planned on placing this ad."Page Name"/"Pagina Nombrada" is an ad placed for any other reason.

* Added tool bar icons to remove all of the ads on the current pageand all of the ads from the current page to the end.

7/26/01

Version 2.55

* The "Save" option in the classification selection window to save thecurrent class nesting now checks if classifications have suffixes.If they do, it asks whether you want to skip the suffixed classes.Skipping the suffixed classes should produce better results if you do a loadwith sequence numbers. When you do a load with sequence numbers, and you setthe sequence numbers by the order in the dump instead of by the classificationnumber, if a new dump has classes that were not present in the dump that youused to make the save data, the sequence numbers of the new classes in the newdump will probably not correspond to the sequence numbers in the saved list.The base unsuffixed classes will probably not change between dumps, but thesuffixed classes will probably differ in each dump, and any new suffixed classeswill run out of order. The new save option to skip loading suffixed classes inthe save area will prevent the load procedure from resequencing the suffixedclasses from the dump order.

* The classification selection has a new option "View class nestings"/"Ver nidos para clases" to show the list of saved classification nesting tables.If you want to look at the tables, this option is safer than using one ofthe load or save options because you do not need to worry about accidentallyrunning a save or a load if you select an item in the list.

* Added tool bar icons to modify reservations.

* When you view the reservations for the current page,the window title now shows the page number.

* When you enter an image name in the ad data form, ClassPag searchesfor the image and sometimes updates the file name. It now shows a dialogwhen it updates the file name to make it clear why it changed the name.

NOTE: This version has over 4200 lines of changes from 2.52.

9/13/01

Version 2.56

* The product configuration screen "Ad Import Restrictions"/"Restricciones de Importacion de Avisos" has a new field"Ignore CCI"/"No probar si CCI". The default value is "N".If you set it to "Y", ClassPag ignores OPI comments in EPS filesthat have initial comment lines that contain the string " CCI-".The OPI includer built into CCI AdDesk does not remove OPI commentsafter including the EPS files requested by the comments.When ClassPag sees the comments, it has no way to tell that the filesare already included and will insert another copy of the file if it canfind it. The second insertion will usually cause problems.CCI AdDesk in particular converts all incoming EPS files into huge bitmaps,and the CCI code to load bitmaps leaves graphics state of the PostScriptinterpreter in an altered state that causes the second copy of the imageto show inverted and flipped.

* When ClassPag includes OPI files, it writes the comment "%%XIgnoreOPI"into the PS or EPS header. When ClassPag processes EPS files that containthe comment "%%XIgnoreOPI", it does not check for OPI inclusions within them.This way, if a ClassPag EPS block contains a CCI ad (for example,a service directory built by ClassPag that contains a display ad madewith CCI) and if you place the ClassPag block inside another ClassPag page,ClassPag will know to ignore OPI comments within the block.

* Added a MSDOS cleanall.bat script to remove work files.

* profile.sh now sets the mail directory to /var/spool/mail instead of/usr/spool/mail when it exists.

* update.sh has a new -b option to run diff with "-b" to ignore white spacechanges. This can help when transactions have MSDOS line endings.

* update.sh has a new -nd option to suppress running diff after loadingthe transactions. This can help when the transactions were not unloadedwith the "/h/k1" options.

* update.sh has a new -f option to force an update even if the .dat and,idx files are not present. This makes it possible to use the scriptto create databases from just screen files and transactions.

* setup.sh now includes $CPAG_HOME/fonts.site on the gs font search list.

* setup.sh now sets CPAG_EPS to $CPAG_HOME/ads if CPAG_EPS is emptyand $CPAG_HOME/ads exists.

* ClassPag now closes the ceps.out file before copying to or from anotherwork area. Windows does not like to delete or copy over open files.

* Ignore the error status when opening Netscape under Windows to view theon-line manuals. If Netscape has any warnings, it returns an error status.

* When ClassPag opens the html manuals under Windows, it now searchesfor Netscape.exe and then for IExplore.exe. If it find them, it runsthem directly, which eliminates a windows warning at the expense ofignoring the currently selected default browser.Executing index.html opens the default browser but generates a windowserror dialog.

* The top level ClassPag menu and a few other places now check if you clickedon the window manager's close button and exit cleanly.

* ClassPag used to print pages at their actual (100%) size if the printer setup"Postscript Name" field started with an "a" or an "A". It now also checks thatthe second character is a space or a "c" or a "C". This allows you to set "A4"paper size.

* The count-down window in Import->LoadClassTitles is now aligned withproportional fonts and can show Spanish text.

* The maketar.sh script can now run from the staging area created bymakedist.sh.

* Renamed the icon newad to newad2 and edit to editpage and removedthe unused icon import. Spice had icons with these names.

* The icon for opening page reservations is now a little larger.

* The debug option on the runcpag.sh script now sets XMOD_DEBUG andthe bounds options turns off the warn-overlap check.

* If $BATCH is "yes", the setup.sh script does not try to locate anX11 font server. The unload.sh and update.sh scripts now set BATCH=yes.This makes some system administration procedures run faster.

NOTE: This version has over 3600 lines of changes.

9/21/01

Version 2.57

* ClassPag PostScript output now protects against EPS files thatleave items pushed on the dictionary stack. EPS files are notsupposed to change either the dictionary stack or the execution stack.ClassPag already checked for extra items on the execution stack.

* A change made to the mergeint program in Sep 97 to strip trailing whitespaceand nulls from merged ads caused problems in ads that did not end witha comment. mergeint now adds a null after stripping the whitespace.

* The ClassPag 4GL code now closes the inpages and adlist databases in moreplaces. Hopefully this will fix problems on Solaris that cause the message"Error Code DB 0000 OS 0020 inserting inpages records in database.Please contact your system manager."

* ClassPag can now hide comments in PostScript files. Some EPS files printthe messages "%%[ Page: 1 ]%%" and "%%[ LastPage ]%%" to the ghostview statuswindow. The "Spread" field "Add PS Comments"/"Poner comentarios en PS" has anew value "HIDE" that tells ClassPag to replace the PostScript message loggingcommand with a version that ignores the message. Also, the field value is nowa string instead of a logical. The possible values are "T" and "YES" (forClassPag to add messages before loading each ad), "HIDE" (for ClassPag tohide messages), and the default "F", "NO" or empty (for ClassPag to passmessages within ads but not to write any new messages).

* Added a maketarm.sh script to create an archive of the "cpag" mace area(the source code control database as SCS that contains the ClassPag source)and a script to unpack it.

NOTE: This is the first change in several years to the PostScript codethat wraps ads. Sites updating to this version should check that itworks for their particular ads before going live with it.

NOTE2: This version has over 700 lines of changes from the previous version.

10/03/01

Version 2.58

* The position requests ARRIBA, ABAJO and FRENTE can now be reduced to fourcharacters and preceded by a two-digit column number to indicate the columnon the page. For example, to place two 5 column ads under a 10 column adat the top of the page, the 10 column ad should request "TL", andthe two 5 column ads should specify the 10 column ad as their target,plus one should have the position request "01ABAJ" while the other shouldhave the position request "06ABAJ".

* Split the last half of the Product Configuration screen"Display Ad Dummying Style (Continued)"/"Estilo de Diagramacion de Avisos Destacados (continuado)"into a new screen "Request Checking"/"Comprobar Solicitudes".

* The Product Configuration screen "Request Checking"/"Comprobar Solicitudes"has a new field "Allow multiple TOP requests"/"Permitir mas que un pedido para CABEZA" that allows ClassPag to stack adsthat all request the top position on a given page.The default value of the field is "N" to handle over-sold top positions ona given page by moving the extra ads to the closest page with an availabletop position.If you set the field to "Y", ClassPag handles over-sold top positions byplacing the ads in a stack from the top, and ClassPag will not count an adwith a top request as a conflict if all of the ads above it have top requests.

* The "Page Name" form for square-offs has four new fields under"Add Hor Rules"/"Lineas hor" for specifying horizontal cut rules abovethe top banner, below the top banner, above the bottom banner, and belowthe bottom banner. The default value of "Y" allows cut-rules if the productconfiguration specifies them. The value "N" suppresses the cut-rules.You can use these fields to eliminate cut-rules for specific square-offs.

* The ClassPag OPI includer now searches for black-and-white versionsof images on black-and-white pages. This allows ClassPag to generateblack-and-white versions of color line ads provided that the only colorin the line ads is within logos that are loaded through OPI references.This should help sites that use color logos in line ads but that have editorialsystems that do not support placing color images on black-and-white pages.Since the ad takers do not know whether any particular line ad will fall ona color page or black-and-white page, they can not pick the correct versionof the logo when they take the ad. With this change, ClassPag can pick thecorrect logo at the time that the page is printed.To print a black-and-white page from ClassPag, make sure that the productconfiguration field "Check for grayscale -BW EPS files" is set to "Y"and then print through a paper option with the field "Create Separations"set to "GRAY". Also, for every color OPI image, you must create ablack-and-white version with the same name plus the suffix "-BW".The front-end system that creates the line ads does not need any modifications.

NOTE: This version has over 1500 lines of changes. The horizontal cut-rulecode and the new OPI code need testing.

10/17/01

Version 2.59

* ClassPag now ignores column requests that are unreasonably large.It used to convert column requests for positions off the side of thepage into requests for the rightmost possible column, but now it doesthis only if the column number is reasonably small and not followedby a third digit in the position field.ClassPag now logs a warning when it ignores or reduces a column request.

* If a square-off has no default banner, ClassPag uses the largest bannerimage the default.

* Fixed a problem where ClassPag would sometimes miscalculate the amount ofspace needed to flow line ads into a square-off if the tallest line ad wasabout the same as the depth needed on the partial page.

* Commands, like the ones to view log files, that redirect the output of acommand to a file and then view the file now let you view the file even if thecommand returned an error status. Commands that list directories, for example,can return an error status if they do not have permissions to list some of thefiles.

* When ClassPag shows information in ad boxes, it now knows to ignore thesort key for display ads. ClassPag dummies display ads instead of flowingthem, so the sort key is not as useful as other field, like the image name,that ClassPag can show instead.

* When ClassPag checks to show the image name in ad boxes, it now suppressesthe image name if it is the same as the ad number (except for a shortextension). Also, ClassPag now shows the image name if it is a substringof the ad number.

* If the "Current Page" spread option asks for a number of copies,ClassPag now temporary closes the page display to keep the promptfrom getting overwritten by the display.

* The ClassPag import now treats a blank page request (column 71 of thesort file, counting from 0) as an "N". If internal line ads had a blankrequest instead of an "N", ClassPag used to do more expensive processingon them as it would for line ads with special requests.

* Fixed a leading calculation when ClassPag would resort a column aftersqueezing in an extra ad.

* mapclass.frm popups are centered better for proportional fonts.

* mapclass.frm generates fewer errors if composition is not running.

* creator.xfm now specifies a width for the bar (aka pipe) character inposition 124.

10/19/01

Version 2.60

* On the page preview display, if you select Ads->FindAd->FindPageNumber,ClassPag now has an option to go to the page with the ad.

* For configurations that do not permit spanning ads,ClassPag now allows a row of class headers sandwiched between two ads.

* When ClassPag scans for pages for square-offs, if the class of thesquare-off does not have enough normal (non-square-off) line ads,ClassPag tries to place the square-off closer to where the line ads wouldflow instead of expanding the search to any page in the outer class.This allows ClassPag to find better places for square-offs on papersthat have flat classification structures.

* ClassPag now attempts to dummy ads with widths larger than the defaultcolumn measure before flowing any line ads. This should help ensure thatClassPag places double truck ads on double truck pages.

* When ClassPag can not place ads with widths larger than the default columncount, ClassPag now makes overflow pages wide enough to hold the ads.ClassPag used to leave the ads unplaced.

* Removed a log warning about finding display fillers for inactive classessince this can happen normally.

NOTE: This version has over 1300 lines of changes from 2.58.

10/22/01

Version 2.61

* You can now use the top level class "******" in the product configuration"Legal Classes and Types" form. ClassPag used to ignore class names thatdid not exist, but it now handles "******" as a special case to processall of the classes. For example, in a product with all legal ads,you could use this form to set all of the classes to type "L" in one entry.

NOTE: The version of spice linked into the previous two versions containeda bug in date editmasks.

10/31/01

Version 2.62

* rebuild.sh now requires the -F option to run on non-build systems.

* The "Auto Segment Ads" field on the "Legal and Segmented Ad Specifications"screen of the product configuration has a new value "WORD" that allowsClassPag to autosegment internal ads created by MS Word for Windows NT 4.0.

* The "View Box" command on a segmented ad now clips the ad segmentwithout any extra margin. This makes it easier to check that segmentscontain complete lines of text.

* setup.sh no longer looks for an X font server if it finds entriescontaining "scs" or "unix/" on the font path.

* Fixed a problem where the OPI inclusion would sometimes miss commentsof they came near the end of a buffer.

NOTE: This version contains over 2600 lines of changes from version 2.60.

11/12/01

Version 2.63

* ClassPag has a run statistics database that tracks the count and areaof the different types of page objects. The product configuration screen"Outext Export"/"Exportar de outext" has a new field"Save Run Stats on Exit"/"Guardar estadisticas en salir" that you canset to "Y" to request ClassPag to ask if you want to save the runstatistics each time that you close a pagination session.The editions database has two new fields,"Save Run Statistics"/"Guardar estadisticas" and "Active"/"Activo".You can set the "Save Run Statistics" field to "N" to prevent ClassPagfrom saving or reporting on the run statistics of certain editions.You can unactivate an edition by settings its "Active" field to "N".

* The page preview "Ads..." menu has "View Run Stats" command to updatethe run statistics database and then to prompt you for starting andending dates for a report.

* The new runstats.sh script generates a run statistics report.The script takes two arguments. The first is the starting date inYYYYMMDD format. The second is the number of days (the default is 7).The script leaves the report in a file called "report.lis" in thework directory.

* The setup screens for Editions and Zones now show a wider list withthe edition or zone name instead of showing a preview of the currentlyselected name. This makes the list easier to scan.The lists also show the value of the active field and have hotkeys tochange the active field.

* Fixed a problem introduced in version 2.57 where ClassPag EPS files wouldleave a "0" on the postscript operator stack.

* In bash, setup.sh ends the PS1 prompt with \\$ so the $ changes to a #when you change to root.

* When ClassPag can not read internal EPS ads, for example, if the ceps.outfile was truncated, it now writes a %%BeginData comment for 1 byte insteadof for the length that the EPS should have been.

* ClassPag no longer writes warnings to its error log about copying aninvalid ad when you restore from a work area that contained a filler orbanner that no longer exists.

* The product configuration maintenance command to remove configurationentries without products now runs a little faster.

11/30/01

Version 2.64

* ClassPag now treats class names and sort keys as case sensitive.It always allowed lower case characters in class name and sort key fields,but then it upper cased the characters when building database key.With this change, classifications like "100a" and "100A" are now different,and the sort key "BBB" comes before the sort key "aaa" because "B" is ascii66 while "a" is ascii 97.

* Split the top of the "Ad Importing"/"Importacion de Avisos"product configuration screen into a new "Ad and Class Name Conversions"/"Conversion de nombres de avisos y clases" screen.

* Note that the product configuration field"Class Suffix Length (counting spaces)"/"Largo de sufijo de nombres de clases"on the "Ad and Class Name Conversions" screen counts from the end of theclass name field. If class names have different lengths, for example,if some are three characters and some are four, the shorter names mustbe right justified so the first character of the suffix always startson the same column. The suffix length should include the suffix andtrailing spaces to the end of the class name field. For example,the total length of the class name field is 8, and if the base classesare 3 characters, the suffix length should be 8 minus 3 or 5.If the base classes are 4 characters, the suffix should be 8 minus 4 or 4.

* The "Ad and Class Name Conversions" product configuration screen has a newfield "Length of Sort Key to Append to Class"/"Largo de clave a copiar a clase"to append characters of the sort key to the class name. If display ads mustmatch the sort keys of line ads, for example, if employment is all one classand display ads for different types of jobs must appear near line ads forthe same job, you can use this parameter to place some of the sort key intothe class. For line ads, ClassPag uses the sort key field from the sort file.For display ads, ClassPag uses the descriptive text that starts after thefirst white space within the external file name field.

* Print command expressions in the printer database can now use thestring variable "ColorList" to determine the colors used on the page.The variable contains the initial letter of each color (other than black).For example, if the page has cyan, magenta and black, ColorList will be "CM".

* The "Ad and Class Name Conversions"/"Conversion de nombres de avisos y clases"product configuration screen has a new field "Ignore class record information"/"No usar informacion de clases" to ignore the extra information in *CLASSHDR*and *GROUPHDR* header lines in the sort file. The default value is "N" touse all of the header fields. If the interface passes bad values in theheader fields, set this field to "Y" as a work-around until the supplierof the interface can fix it.

* ClassPag now places copies of display fillers that have a countgreater than 0. It used to place them only if they had a page requestor if the "Dummy Ads by Page" configuration parameter was "R".

* Added make.* to the file list in maketard.sh.

* The import ads count-down window no longer shows extra top-level headersthat the import creates. This makes the totals match the totals in thesort file, which should make the count-down window match the statisticswritten by the front-end.

* On sort files using old style H lines for class headers, if a class hadmore than one class header, ClassPag would place the class headers in orderby size with the smallest one first. It now places the class headers inthe order that they appear in the sort file.

* When the ClassPag import scans for orphan classifications, it is smarterabout placing new classes in the correct place. For example, on a productwith three character suffixes and nestings by hundreds, it will placeclass 389ABC under class 389 (and class 389 under class 300 if needed),and it will give them the correct sequencing. It used to place allorphaned classes at the top level.

* Added a fixsort filter in the interface directory that reads a sort fileand replaces lower case letters in the sort key field of internal ads witha single quote (the character before an a) and the letter in upper case.This program can help for interfaces that send lower case letters insort keys if they do not use all 14 characters of the sort key.

* Added a sortads filter in the interface directory that sorts the adsin the sort file by class and then by type. This program can help forinterfaces that do not send ads in classification order.

* The run statistics filler report now has a third line of headings.

* Fixed a problem where ClassPag would not paginate ads or seesubclasses of classes with lowercase letters in their names.ClassPag currently uppercases class names when it stores them in databases.Interfaces must create class names that are unique after uppercasing.Interfaces that build class keys by appending an algorithmically-generatedsort key should avoid placing lowercase letters in the sort key.

* Fixed a problem where ClassPag would sometimes place two class headers ona display ad when the display ad was at the top of the bottom stack on itsrightmost column, and there was space between the top and bottom stacks,and the top stack ended with an ad of a different class than the display ad.

* If CPAG_EPS and the product configuration search path were both set,ClassPag would start reading the search path from the length of CPAG_EPS.

* ClassPag would ignore entries of "." and ".+" in CPAG_EPS and the productconfiguration search path.

* Fixed a problem where ClassPag could overwrite a buffer when copying thelast chunk of an EPS file to an output page on about 1 out of 100 ads.This could happen both when printing pages and when viewing ad.This has been present since version 2.32.

NOTE: This version has 23,422 lines of changes from the previous version, inpart due to updates to auto-generated files due to the changes for lower keys.

12/04/01

Version 2.65

* Changed the default report name from report.lis to report.txt.This should make it easier to insert reports into Windows programsbecause MS programs understand that .txt means a text file but getconfused by .lis.

* The runstats.sh script copies the filler report to the file"/u/reports/SCSClassifiedReport_Week##.txt", where ## is the week numberin the year, counting from 1 from the week starting on the first Mondayof the year.

* The runstats.sh script allows a "-" as a null argument for thestart-date or days parameters.

* If the DAYS parameter to the RunStatsReport formula (which is called bythe runstats.sh script) is empty or starts with a capital "M", the formulabacks up the start date to the first Monday at least 6 days in the past.The standard report runs from Monday through Sunday, but Sunday paginationsruns are usually completed by the end of Saturday. The date logic worksso that running the report on a Sunday produces data for the Monday toSunday week ending on that Sunday, and running the report later in theweek produces the same results for the previous week as running the reporton Sunday. The means that if the report did not run correctly, the scriptmay be run again any day during the week to post the previous week's data.

* Page preview Cmd -> Ads... -> ViewRunStats window has a "Post Filler Report"command that calls the "runstats.sh" script without any arguments to posta filler report from the previous week. This command may be run manuallyfrom any pagination session during the week to regenerate the filler reportand post it to the /u/reports directory.

NOTE: This version has about 200 lines of changes from the previous version.The change from printer.lis to printer.txt should be tested.

12/18/01

Version 2.66

* When ClassPag searches for EPS files, if the file name contained a dot,it would strip any extension after the dot before retrying with .EPS.It now only strips extensions if they are 4 characters or less.For example, this will allow it to strip .PS, .EPS, .EPSF while leaving the.MASTER and .COPY1 extensions used by Unisys. Unisys dumps contain file nameswith the format ######.MASTER, but the EPS files are actually ######.MASTER.EPS.Before this change, when ######.MASTER did not exist, ClassPag would search for######.EPS instead of ######.MASTER.EPS.

* When ClassPag follows %ALDImageFileName comments for OPI inclusions,it checks for a %%BeginObject/%%EndObject pair after the %ALD lines.If the pair is not present, ClassPag adds the pair after the final %ALD lineand includes the eps file inside the pair.If the pair is present but with nothing inside, ClassPag includes theeps file inside the pair. These two changes should prevent OPI includersfrom including a second copy of an eps file that ClassPag has included.If the pair is present and has something inside, ClassPag does notinclude the eps file. This should prevent ClassPag from includingan OPI image that has already been included.

* The product configuration screen "Display Ad Specifications(Continued)"/"Especificaciones de Avisos Destacados (continuado)" has a newfield "Default Ad Creation Dir"/"Dir. por creando avisos" to specify the defaultdirectory within the manual ad creation form. If paginators create ads from epsfiles in a directory different from the one with display ad eps files (forexample, if the ad eps files come from a read-only mount of an opi server whilepaginators create ads to pick up square-off blocks made in other ClassPagsessions), you can enter the directory for blocks in this field.This directory is only a default in the ad creation form; ClassPag does notuse it when searching for eps files.

* When ClassPag built the postscript for a page with an invalid line ad,it could write a BeginData comment without a matching EndData comment.The page would still print OK, but viewers like ghostview could hang.

* Added palmap and icon to maketard.sh so the development kit doesnot need the runtime kit.

* setup.sh handles a missing root/bin directory a little better.

* The import and page display could sometimes carry over the descriptiontext of one ad into the following ad.

* If the configuration parameter is set to mark that the folios do not needcomposition, rebuilding the folios no longer produces a "compset failed"warning. The rebuild also marks that it was run, so ClassPag will notcontinue to prompt to rebuild the folios.Note that if you have any composition commands in any folio entry,you must say that the folios use composition.

* If you enable composition debugging on the folios, new debug messagestell that the rebuild started and the number of even and odd foliosand warn if the configuration parameter is set to mark that the foliosdo not use composition.

NOTE: This version still calls itself 2.65.

12/20/01

Version 2.67

* Added a "Check Errors"/"Probar errores" field to the printer setup.The default is "Y" to stop printing when the print command returns an error.Set it to "N" to make ClassPag ignore print errors and continue printing.This can help on systems where the print command returns an error codebut still prints the page. Also, the dialog when ClassPag detects anerror now shows the error status.

* Added an "Include OPI"/"Incluir OPI" field to the printer setup.The default is "Y" to include OPI images if the configuration says to checkfor them. Set it to "N" to stop ClassPag from doing OPI inclusions.This can help when printing to OPI servers that get confused by imagesthat ClassPag includes. Set the field to "N" for printers that go throughOPI servers and "Y" for other printers and for screen previews.

* Added an "Extra userdict copies"/"Copias de userdict" field to the"Additional PostScript"/"PostScript adicional" product configuration screen.The default value is 0. If you enter a positive value, ClassPag opensthe postscript user dictionary that many additional times before each ad.Old SII systems with the 2.6g PSD generate postscript for line ads thatpops too many dictionaries. When you are doing color separations,the SII code causes postscript errors by popping the color separationdictionaries. If you have an old SII version and see postscript undefinedoperator errors when you do separations, try setting this field to 3.

* Added "Set Sort Key to Sort Line"/"Fijar clave a orden" field tothe "Agate Ad Specifications (Continued)"/"Especificaciones de Avisos Agate (continuado)" product configuration screen.The default value is "N". If you set the field to "Y", when ClassPag importsa line ad with an empty sort key from the sort file, it sets the sort key tothe count of line ads. This allows ClassPag to preserve the order of line adsin dumps with sort files that do not contain sort keys.

12/20/01

Version 2.68

* ClassPag can now extract segmentation break points from SII ads withembedded "%%LongLiner" comments. To enable the SII segmentation, changethe "Auto Segment Ads" field on the "Legal and Segmented Ad Specifications"screen of the product configuration from "TOP" or "BOT" to "WORD".

1/10/02

Version 2.69

* ClassPag can now truncate a limited amount of junk from the end of EPS files.

* ClassPag can now handle broken SII "%%LongLiner" comments that containthe control characters with values xFA and xC8 instead of new lines.The ClassPag import step replaces the control characters with validpostscript characters during the scan for the LongLiner commentsand requires write access to the ceps.out file.

* ClassPag can now wrap long SII ads even if the ads do not use an SII breakstyle.

* The "Auto Segment Ads" field on the "Legal and Segmented Ad Specifications"screen of the product configuration has two new values, "SIIB" and "SIIP"."SIIB" tells ClassPag to search for break points marked by SII "%%LongLiner"comments. "SIIP" tells ClassPag to search for break points the same as "SIIB",but if an ad does not have any break points, for example, if it was not composedwith an SII break style, ClassPag then calculates break points by reading theSII postscript commands.

* When ClassPag scans for segment breaks, it now looks into classes witha "Randomize" value of "G" in addition to classes with a value of "L"."L" and "G" both mark legal classifications, but in addition,"L" sets an infinite look ahead while "G", keeps the default look ahead.

* When ClassPag flows segmented ads, it can now flow segments aroundfull-column reservations.

* The "Version" command to show the ClassPag version now also showsthe ClassPag home directory.

* The dialog to save a work area is now clearer about showing whichinformation is from the current area and which information is fromthe save area.

NOTE: This version has 915 lines of changes from the previous version.

1/31/02

Version 2.70

* If a page had more than one square-off, ClassPag would sometimes flowthe second square-off to the height that it would need if it were overthe first square-off even if the square-offs were on different columns.

* ClassPag now places class headers over display ads at the tops of columnsif the configuration says both to place headers over display ads and to placeclass headers at the top of every column.

* The "Ad Loading"/"Cargar de Avisos" product configuration screen has a newfield "ceps.out Age In Hours Before Warning"/"Vejez de ceps.out en horas hastaaviso" to specify the age of the interface files in hours before ClassPag shouldstart showing warnings. ClassPag also now shows warnings if the interface filesin the current work area are older than the files in the import area that theywere copied from. These warnings should provide an extra level of checking ifyou need to redump or reimport the interface files.

* Added readaii and makeaii.sh to read autologic text dumps with special markup.mapclass.sh has an "aii" option to configure mapclass for aii.

* Added a cleanceps.sh interface script that removes all ceps.out filesolder than a given number of days from the scratch directories.The default is currently three days.Use the options "-d #" to set the number of days,and "-r" to remove the files instead of just listing them.For example, to remove all ceps.out files older than two days, run cleanceps.sh -d 2to check what it will do and then cleanceps.sh -d 2 -rto remove them.This can help at sites that have large ceps.out files and are running out ofdisk space.

* Improved the test in runcpag.sh to run cpag from $CPAG_HOME or$TOOL_OBJ_ROOT/cpag.

NOTE: This version has over 300 lines of changes from the previous version,about half due to the new readaii conversion program.

NOTE2: The new test for placing class headers over display ads might needto be changed if it places headers where they are not wanted.

2/13/02

Version 2.71

* The product configuration screen "Classified Heading Placement"/"Ubicacion de Encabezados de Clasificaciones" has a new field"Flow over display ads at top"/"Fluir arriba de des. a tope" to controlwhether ClassPag places class headers above display ads that are touchingthe top of the page. If the field is empty, ClassPag places class headersif the configuration says both to place headers over display ads and to placeclass headers at the top of every column. If the field is "N" or if thefield to place class headers over display ads is "N", ClassPag does not placeextra class headers. If the field is "Y", ClassPag will place class headers.

* The product configuration field "Flow one column display ads if possible"now has a stronger effect. If you set it to "N" and paginate back to front,ClassPag no longer flows one-column display ads mixed between line ads.

* The product configuration screen "Ad Loading"/"Cargar de Avisos" has a newfield "Require the Load of Saved Class Nesting"/"Exigir cargar de nidos"with the values "NO", "USEDEFAULT", and "SHOWLIST".The default value of "NO" does not require any loading."USEDEFAULT" always loads the default nestings entered into the control recordfor the current work area. Use this for special products where every importarea has a specific class nesting that it requires."SHOWLIST" requires a selection from either the default nesting in the controlrecord or from the list of class nestings. Use this for products where usersalways need to remember to select a nesting.

* The product control database has a new field "Req"/"Exi" with the values"N" (No), "U" (Use without asking), and "S" (Show a list for the user to select)that override the "Require the Load of Saved Class Nesting" field in the productconfiguration. This allows you to enforce the class nesting by work area.

* The run statistics report now calculates week 1 as the first week that endswith a day in the year instead of the first week with a monday in the year.

* runstats.sh has a "scr" parameters to use the current directory as thescratch area. runstat.sh preserves the log file with "debug" or "-i".

* The convertpdf.sh script now scans for all files with a period plus theletters "pdf" in any mix of upper and lower case. In addition, any sequenceof characters may follow the "pdf". The script forms a name for the eps fileby removing everything after the period and adding "eps". The script used tosearch only for files with names ending in ".pdf" in lower case and with noextra characters.

NOTE: This version has over 2500 lines of changes from the previous version,

2/22/02

Version 2.72

* The command to show the ClassPag version now shows the login name in additionto the user id when they are different. ClassPag looks up privileges from thelogin name, not the user id.

* In the product configuration, the print screen toolbar icon now prints all ofthe screens instead of just the current screen. This makes it easier to printall of the configuration fields for a product. The new screen printing routineis in the denprintscr.xfm formula. If it causes problems, you can remove thefile to make ClassPag revert to the default screen printer.

* The "Request Checking"/"Comprobar Solicitudes" screen has a new field"Show Split Ads in Blocks as Conflicts"/"Mostrar conflictos de avisos dividospor bloques". If the field is set to "Y" and an ad could be split if thepage is divided into EPS blocks, ClassPag will show the ad as a "SPLIT_AD"conflict.

* The dialog after printing pages now shows the number of split ads and the adnumbers of the first few split ads. Split ads can happen only with the "BLOCK"and "RBLOCK" postscript types that divide pages into EPS blocks.

* When you print a range of pages, the final dialog now shows the cumulativecount of missing and split ads instead of just the count for the last page.

* Fixed a problem where ClassPag would not check OPI calls that came nearthe end of a buffer.

* Fixed a problem where ClassPag would add an extra character in the outputif the sequence of text in a group of OPI comments did not fit in the buffer.

* Fixed a problem where writing the run statistics for the filler report wouldsometimes show an error when updating the values for a session with an editionor zone of zero.

NOTE: This version has over 1500 lines of changes from the previous version,

2/26/02

Version 2.73

* Fixed a problem in the banner setup where the banner text detail window didnot show. I uncommented lines to open the detail window. A previous versionof spice had problems when the windows were opened by OpenWindow calls.

2/28/02

Version 2.74

* The Paper database has a new field "Shift to origin"/"Mover a origen".If you set the field to "Y", ClassPag will write EPS files with the lower leftof the image shifted to the origin. This will make the lower left of thebounding box be 0 0 and the upper right of the bounding box be the size of theimage. The default value of the field is "N" to write the page image with themargins specified in the product configuration and then to clip the desiredregion of the page through the bounding box. Before this change, you couldachieve the same effect by setting the Horizontal and Vertical Paper Offsetfields to the negative of the sum of the margins in the product configuration,but this would require updating each time you changed the product configurationand it would work for entire pages but not for blocks. This will also eliminatethe need to use the pstoepsf.sh -translate option.

3/22/02

Version 2.75

* You can now create custom tab pairings through the book size database.The book size database has a new field "Paired Tab Page"/"Pagina empalmada"to specify the page (by absolute page number) that pairs with the current page.If the field is empty, it has no effect, so you can ignore it if you are usingthe book size database only to set section names and relative page numbers.When you modify entries, ClassPag warns you if you create an inconsistentpairing. The book size window has a hotkey to run the verification scan andanother hotkey to show the relative page number and tab pair of each page.

* The window to select which posted pages to print now has a hotkey for helpto show the meanings of the character codes.

* Reduced the length of the ShiftToOrigin variable to eliminate a warning inthe log file.

* In the "Ad Configuration" setup, entries for leading fillers now also applyto reserver fillers, and entries for banner ads (stand-alone banners) alsoapply to request headers (banners over square-offs).

* When you edit an ad configuration record, ClassPag now fills in thetext ad type descriptions to match the numeric values.

* When ClassPag builds square-offs with a mix of display ads and line ads,it checks to place the last few display ads in positions that leave morearea for the line ads to flow.

* Fixed a problem where square-offs with no display ads would sometimes notwork on papers with a maximum number of columns configured larger than thedefault number of columns.

* Fixed a bad array test in back-to-front pagination when checking the spaceneeded below the first ad in a class when looking for a column to placea display ad. A bounds-checked build from spicedst did not find any otherbad memory accesses.

* Fixed a problem in the routine to rebuild pages where it would sortthe ad positions but not the placement reasons. If you saved a columnrange on a page that also had display ads and then removed ads aftera given class, sometimes a few extra line ads would be removed.

* Shortened the description field in the banner detail window to keep itfrom running into the next column of fields.

* The fix.sh script to reset the terminal now also clears the scrolling region.

* The commands to save and restore work areas no longer show a warning whenthe copy command can not preserve the date or owner of a file created byanother user.

NOTE: This version has almost 1500 lines of changes from version 2.72.

4/3/02

Version 2.76

* The "Auto Seg Clip Adjustment" field on the "Legal and Segmented AdSpecifications (Continued)" product configuration screen now has separate valuesfor the clipping above and below segments. If the value for above segments isempty, it defaults to 0. If the value for below segments is 0, it defaults tothe value above segments. When you update to this version of ClassPag, the oldauto seg clip adjustment field is copied into the value for above segments.As before, the values in both of these fields should be small negative valueswith approximately the same size as the clipping margin for normal ads.A good starting point is the negative of the clipping margin for normal ads.Increasing the value shows more of the ad.Decreasing the value shows less of the ad.Something is wrong if you set these fields larger than 0 or more than twopoints less than the negative of the clipping margin.

* When ClassPag auto segments long ads, it now knows that fonts starting"ObsC34" have different metrics than standard fonts and sets the breakpoints closer to the base lines.

* Fixed a problem in front-to-back pagination where ClassPag could place a classheader over a display ad when the display ad had compatible line ads above it.

* The procedure to view the column measures now shows an additional line for thedouble truck offset, which is the offset of the left edge of the right-hand pagefrom the left-hand page. This value can be helpful when building special foliosfor double truck pages.

* The pagination statistics window no longer shows an unplaced banner ad ifyou restore from a session that uses a non-default image of a required banner.

* The page information list window is now larger and formatted better,especially when viewing entries for all products. When showing the currentproduct, it no longer shows other products that start with the same firsttwo characters.

* The Box Information window now shows more characters of the ad type.

* Added a work-around for loops in SII color operator definitionswhen another application attempts to separate it.Set the "Before the Prolog" to "include fixincsep.ps" to insert the contentsof the new file "fixincsep.ps" at the start of each page. This file defines avariable that makes the SII prolog code think that it is already within an SIIpage.

* Added an initialization for "wc" in sepbegin.ps.Adobe Photoshop Version 5.5 pulls some color operators from the systemdictionary, bypassing the redefined versions needed for separations.This change works-around Photoshop's incorrect use of the "image" operator.

* The setup.sh init script now exports LC_COLLATE as "C".In newer shells, the collation order comes from first one of LC_COLLATE,LC_ALL, or LANG that is set. The default value is "en_US", which sortsAaBb...Zz, so the pattern [A-Z]* matches file names that begin with acapital letter or with any lower case letter except for "z".Similarly, [a-z]* matches files that begin with any letter except "A".Use the "locale" command to view the current values of these variables.Setting LC_COLLATE to "C" makes [A-Z] and [a-z] select only upper andlower case characters as in older shells.

* rebuild.sh now uses $SPICE_COMP instead of $TOOLS for the compilers.

* The fixperm.sh script now continues over files that have single or doublequotes in their names. Some Linux desktop managers create files with quotes.

* The maketar.sh script now picks up symbolic links in the interface directory.

NOTE: This version has over 2300 lines of changes from the previous version.

4/14/02

Version 2.77

* ClassPag now supports double cut-rules and provides more control over theposition of rules. The Ad Configuration database has new parameters to controlthe rules.Leading/Interlineado is the target amount of space to place between ads.ClassPag divides the space into several areas.Space Above Rule/Espacio sobre la Linea is the space between the top and thefirst cut rule.Rule Depth/Profundidad de la Linea is the depth of the first cut rule.Rule Separation/Espacio entre Lineas is the space between the rules.Second Rule Depth/Segunda Linea is the depth of the second cut rule.Space Below Second Rule/Espacio debajo la Linea is the space below the secondcut rule.If you want only a single cut rule, the Rule Separation, the Second Rule Depth,and the Space Below Second Rule should all both be zero or empty.Place Horizontal Rule/Poner Linea Horizontal tells ClassPag how to placethe actual leading differs from the target leading.The default values 'F' and 'NO' mean not to draw any cut rules.'T' and 'YES' mean to draw a cut rule centered between the ads.This is how ClassPag used to draw all cut rules.For centered rules, you need to set only the Rule Depth for single rules,and the Rule Depth, Rule Separation, and Second Rule Depth for double rules.'RAISE' means to raise the cut rule so that it is justified against thead above it according to the Space Above Rule.'LOWER' means to drop the cut rule so that it is justified against thead below it according to the Space Below Second Rule.

* The "Load" procedure in the "View Ad Directories" browser window nowhas options to load eps files as class headers by creating or updatingbanner records with "Split Overflow" of "C". ClassPag builds the classname from the name of the eps file. ClassPag removes the extension ofthe eps file and then tries looking up the result in the class name database.If the name is not found, ClassPag tries again with the name truncated atthe first dash or underscore and then at the last capital X.This allows you to save class headers in formats like Class#XWidth.EPS,Class#-description, Class#.PS, etc.If an image record already exists, ClassPag updates it with the new EPS fileso you can rerun the class header load against an updated set of EPS fileswithout the need to delete old records.ClassPag builds the banner record with the ad number "H" plus the classand with a "Request Name" of the class.If the current image is one column wide or if the banner does not havea default image, ClassPag sets the default image to the new image.

* The Cmd -> Misc... menu has a new "Product Configuration"/"Config de Producto"entry to enter the product configuration directly. It eliminates the needto select "Product Configuration" from the "Setup" menu and then to selectthe current product from the product list.

* Added a sample copyex.sh script in the interface directory with samplecommands for doing nightly copies of ClassPag files from a primary serverto a backup server.

* Added a makerun.sh interface script to run the readrun interface program.

* Updated fixinc.ps to work with newer versions of SCOOP that do not loadfour extra 1's on the stack before calling include_epsf.

* When you use one of the "AllAs" options in the "Load" procedure of the"View Ad Directories" window, you no longer get a warning for ".."and other directories in the current directory.

* When alternate class headers were loaded as banner records with"Split Overflow" of "C", ClassPag would check them when it neededa multi-column header, but it would still require a normal one-columnheader in the sort file. If a banner record defines a one-columnheader for a class that has no header in the sort file,ClassPag will now use that header as the main header for its class.This allows sites that can not pass class headers in their dump filesto enter headers into the ClassPag configuration.

NOTE: This version has over 2000 lines of changes from the previous version.The tests for cut rules and for placing leading below the bottom ad on a columnhave been redone and need testing. The load procedure also needs testing.

4/15/02

Version 2.78

* The class name setup window has a new option to show only classes thatdo not have banner entries for class headers. This provides an easy wayfor sites that enter class headers as banners to see if they have missedany classes.

* The banner setup window has a new option to open the class name setupwindow with a view that shows the classes without headers.

* The banner setup window has a new option to delete all of the bannersfor class headers.

* When the ClassPag import procedure reads a sort file line with an externalline ad, it skips over the eps file name before extracting the sort key.For example, a sort file line ending with "YN#390965 0005 MAPLEWOOD APARTME"would now have the sort key "0005 MAPLEWOOD" instead of "#390965 0005 M".This should help interfaces that send line ads as external images.

NOTE: This version has 240 lines of changes from the previous version.

4/18/02

Version 2.79

* The product configuration screen "Ad Image Scaling"/"Escalado de la Imagen del Aviso" has a new field"Preserve external line ads"/"Preservar avisos lineales externales"to leave external line ads and class headers unscaled.If the field is "F" or blank, ClassPag scales all external ads as before.If the field is "T", ClassPag will preserve the sizes of external lineads and class headers. Use this option on interfaces that pass all adsas external if the bounding boxes of line ads are incorrect but thebounding boxes of display ads are valid.

* The field "Add Clipping Regions for Display Ads"/"Regiones de Recorte de Avisos Destacados" on the"Ad Import Restrictions"/"Restricciones de Importacion de Avisos"product configuration now has a new value "D" to clip only external display ads.The values "T" or blank clip all external ads as before.The value "F" does not clip any external ads.

* ClassPag now preserves the "!" flag for pages with assign locks when itsaves and restores from work areas. It saves the page assign lock requestwith a special ad number of "*PAGAL#" in the request database.

* Fixed a problem where did not restore the "#" flag for pages with locked lineads when it loaded a page with locked line ads from a save area.

4/19/02

Version 2.80

* The product configuration screen "Ad Image Scaling"/"Escalado de la Imagendel Aviso" has new fields "Preserve external headers"/"Preservar cabezales"and "Word eps".If "Preserve external headers" is "Y", ClassPag will not scale external classheaders. The previous version tied this field to line ads, but now theycan be specified separately.If "Word eps" is "Y", ClassPag will not scale any external files created by MSWord. ClassPag currently tests for Word EPS by looking for a "%%Title" commentthat starts "Microsoft Word". This test applies to all ad types.

* ClassPag now preserves the "#" flag for pages with line ad locks when itsaves and restores from work areas. It saves the page line ad lock requestwith a special ad number of "*PAGLL#" in the request database.This allows ClassPag to restore line ad locks on pages without any line ads.

* On pages with assign locks but not line ad locks, ClassPag no longer showsthe line ads with the color of locked ads on the page display.

* Exchanging pages now also exchanges the page locks.

* Fixed a check where ClassPag would try to place headers on locked pageswhen it justified columns.

NOTE: This version has over 1000 lines of changes from the version two back.

4/22/02

Version 2.81

* Fixed a problem where moving ads on a page with a square-off that containedline ads and repaginating would cause ClassPag to place extra copies of someclass headers outside the square-off when the class headers were entered asbanners instead of sort file entries.

* Fixed a problem where ClassPag would place class headers for classes withoutline ads inside square-offs when the class headers were entered as bannersinstead of sort file entries.

* Fixed a problem where ClassPag would not strip the previews from imagesin DCS single-file format. Also, ClassPag is now more tolerant of corruptedDCS files with plate offsets that start after the end of the file.

* Fixed a problem during front-to-back pagination where ClassPag wouldplace an extra header at the top of the first column of the first pageif there was a display ad at the bottom of the page.

* Fixed a problem where the equalize columns command could duplicateclass headers at the tops of columns.

NOTE: This version has 485 lines of changes from the previous version.The changes for placing class headers could break different cases thatI did not test.

4/30/02

Version 2.82

* The product configuration screen "Legal and Segmented Ad Specifications"/"Especificaciones de Avisos Legales y Segmentados" has a new field"Preserve Name"/"Preservar Nombre" to preserve the ad number of thefirst segment of long ads that ClassPag segments. This might helpinterfaces that need to extract ad numbers from the outext.

* Increased the depth and sort file offset fields in the agate ad anddisplay ad databases. The agate ad database now holds the full 10-digitad depth, eps file offset, and eps file length fields from the sort file.This should help sites that need to pass long legal ads.The 10-digit ad depth is enough for 65,890 21-inch columns.The display ad database now has a 7-digit ad depth (enough for 65.821-inch columns), a 10-digit eps file offset (enough for a 10 GB eps file),and an 8-digit eps file length (enough for a 100 MB line ad).

* Increased the maximum number of autosegment breaks with SIIP from2,000 to 100,000. At 7 points per segment, this is enough to fillover 460 21-inch columns.

* When ClassPag imports a line ad greater than the Import Conversion Depthspecified in the product configuration, if the line ad is in a class marked asa legal class in the product configuration or is in a child class of a legalclass, ClassPag no longer converts the ad from an agate ad to a display ad.This saves the ad for the later pass when ClassPag will segment it.

* When ClassPag auto segments long ads, it now knows that fonts starting"MCClassified" have different metrics than standard fonts and sets the breakpoints closer to the base lines.

NOTE: This version has over 2300 lines of changes from the previous version.The agate ad database now has binary integer data and should be tested.This increased the range of the fields while reducing therecord size by 17%.

5/6/02

Version 2.83

* Banner text composition expressions can now use the variablesPageNumber, ColumnNumber, BookName, and BookPageNumber.These variables were available before but returned empty strings.

* The Setup -> Cancel Printing window now correctly parses the processinformation under SCO Unix 3.2v4 and OpenServer 5, RH Linux 6 and 7,and Solaris 5.6.The parsing is now more self-adapting when it searches for information.When the terminal field is empty, ClassPag now scans for a DISPLAY= stringon the command line. When that fails, ClassPag checks the terminalof the parent process. The list now includes the command line.The popup dialog now includes the parent process id, the command line,and the start time.These changes should make the cancel printing window more useful.Also, if an X server quits without closing the cpag process on the ClassPagserver, you can use the Cancel Printing window to find and kill the process.

* Fixed a problem where class headers would sometimes not be placed insidesquare-offs on the right side of the page.

* Fixed a problem where moving a square-off from the right side of the pageto the left side would make it overflow.

* Made internal page keys more consistent, which fixed a warning about page Xand page X being locked (where X is the same page) if you tried to move an adwithin an assign locked page.

* Fixed some popup dialogs that show banner and composition results so that theytruncate their lines if needed. Spice used to truncate long lines to fit indialogs, but the new version displays an error message instead of the dialogtext.

NOTE: This version has 524 lines of changes from the previous version.

5/7/02

Version 2.84

* Increased the maximum number of ads on a page from 2000 to 4000.On a 21 inch page with 7 point legal ad segments, 2000 ads was onlyenough to cover 2000 * 7 / (72 * 21) or about 9 1/4 columns.4000 is enough to cover a 10-column 21" inch page with ads of10 * 21 * 72 / 4000 or about 3.8 points.

* Increased the maximum number of active classes from 3000 to 5000.This should prevent problems in interfaces that embed sort keys inclass names.

* The product configuration field "Show Class Square-Offs in Request Color"/"Mostrar carteles por class en el color de pedidos"on the screen "Display Ad Dummying Style"/"Estilo de Diagramacion de Avisos Destacados" now has a stronger effect.If it is "Y", ads in square-offs have the color of ads with requests.If it is "N", ads in square-offs have the color of their classificationif their classification sets a color.

* rcpuniq.sh -ftp no longer requires a user name for printers thatdo not require a login.

* rcpuniq.sh has a new -auto option to auto-login to the remoteftp server using authentication information from "$HOME/.netrc".You should not specify the -user option with the -auto option.

* loadfont.sh now searches for the font name in a line starting /FontName if theother test fail. This prevents some "could not extract a font name" warnings.

* From the Statistics screen, the Ads -> DisplayAds list has a new option"Fix ad sizes" to set the ad reservation sizes of external ads to the sizeof the bounding of their EPS files.

* The new interface script loadepsads.sh generates sort file lines forthe eps files on its command line. It can help to load a set of adsinto ClassPag when you have only the EPS files.

* When you copy from a work area, the "Remove old files" dialog now clearswhen you click on it instead of staying open until the copy finished.This makes it clearer that ClassPag detected the mouse click.

* The makeesc6.sh script now places /usr/local/bin first on the path topick up gnu awk before the system's awk. The script is also smarter aboutlooking for awk and gawk in /usr/local/bin and about running /usr/ucb/echoon Solaris. The script should now work on SCO, Linux, and Solaris.The script also includes Jeff's Dec 2000 changes for two additionalreal estate products.

* Fixed the formatting of the "Current Area" dialog in the classification list.

* Fixed a problem with square-off headers when "Place under square-off banners"was set to "N". If a header would have appeared at the top of a column,ClassPag would not place it in the square-off. If the square-off was positionedat the right side of a page, the header would end up flowing on the page whereit would have gone if there were no square-off.

* Fixed a problem where folio templates with the "All Plates" value of "U"(to write into the unseparated area on a page) would not show correctlyon pages printed as landscape or with "Shift to origin" set to "Y".

* Fixed a problem where landscape pages would not work in combinationwith eps pages or with the shift to origin option.

* Fixed a problem with the internal page key version 2.83 so negativeoverflow pages now work.

* Linked to a new version of spice that undoes the recent change of displayingan error for long lines in dialogs instead of truncating the text.

NOTE: This version has 925 lines of changes from the version two back.

* The View Ad Directories -> Load -> AllAsHeaders now tries to build a classname from the first sequence of digits in the file name if the other tests donot create a valid class name. This should help when the eps files have beensaved with alpha suffixes for classes with headers of different widths.

* The classification setup window has a new option"Create entries for classes in the class name list"that creates a class entry for every record in the class names databasethat is not in the current class list.This can help to produce a full list of classes when making classresequencing tables.

* When a class has multi-column line ads, ClassPag now does a betterjob of packing in single column line ads below multi-column ads.

* Added a makehosts.sh interface script to generate hosts file lines.Sites with a DHCP range without DNS sometimes need to have hosts fileentries for workstations in order for the server to accept rexec commands.If an X Servers show the message "Where are you", you need to add itsIP address to the hosts file.

* Fixed the field entry test after the folio file name so it does notshow an error about I_ImageName.

5/27/02

Version 2.87

* The product configuration screen "Display Ad Specifications (Continued)"/"Especificaciones de Avisos Destacados (continuado)" has a new field"Convert all display ads to line ads"/"Convertir todos destacados a lineales".The default value is "N" to pass display ads. If the field is "Y",ClassPag will convert all display ads to line ads as it imports them.Use this option to flow display ads in class order instead of dummyingthem at the bottom of the page. Magazines sometimes do this.

* The classification field "Randomize"/"Aleatorio" has a new value "P"to paginate ads by pairs of columns. Use this value for paginatingfront-to-back with classes with a mix of one and two column line ads.ClassPag will ignore the look-ahead and place the longest ads first.Also, ClassPag will place classes out of order in order to fill small holes.

* Added the field "Ignore headers in sort file"/"No usar cabezales en sort"to the screen "Classified Heading Placement"/"Ubicacion de Encabezados deClasificaciones" in the product configuration. The default value is "N"to preserve class headers passed in the sort file by the front-end.The value "Y" tells ClassPag to ignore all class headers in the sort file.If you use this option, you should enter the headers that you want as bannersin the ClassPag setup.

* The "Columns" command has a new "Equalize paired"/"Dividir emp col" optionfor equalizing columns in classes with multi-column line ads.

* Fixed a problem where ClassPag would not place multi-column line ads thatwere the full width of the page.

5/29/02

Version 2.88

* The window to edit the fonts to download now has an option to removeall of the entries.

* The banner setup has a new hotkey"Show/Hide Common Edition"/"Mostrar por edicion"to restrict the view to banners that specify an edition. On products that havefew or no banners keyed by edition, you can use this command to check that thebanners have the correct edition.

* ClassPag dummies line ads in square-offs if "convert display ads" is set andthe square-off includes display ads and liners and does not flow display ads,and if the square-off's class specifies "pair columns".

* ClassPag no longer tries to place class banners on overflow pages.

* ClassPag handles a missized class banner with wide line ads better.

5/29/02

Version 2.89

* The paper list no longer shows entries for print commands that arenot keys in the paper database, except for the command "echo".This keeps extra paper entries from showing if you delete unused printerentries.

* The paper database has a new "Set PageSize"/"Fijar PageSize" field.If it is "Y", ClassPag adds a "<</PageSize [# #]>> setpagedevice"line in the postscript page. This is a Level 2 PostScript commandthat sets the output page size. Newer printers that have multipletrays can use this command to select the proper sized paper.The default value is "N" to omit this line.Some HP printers will flush the page if this option is enabled and thespecified page size is larger than the page size that the printer supports.You should enable this option on a printer only when the printer selectsthe wrong tray without it.

6/3/02

Version 2.90

* Fixed a problem where the "Download Fonts" list from the "Printer Name" listshowed question marks after some font names. Also, the list now loads all 15configuration font lines instead of just the first 5, and if you enter the listfrom the setup window without having paginated, it no longer skips the check fornew fonts entered into the product configuration.

* Added support for "Pongrass" dumps from Mactive.ClassPag now accepts sort files with zeros in the trailer start and endlocations and eps files that start with slashes instead of percents.In the product configuration field for the patch after the prolog,use "include fixmactive.ps".

* ClassPag shows better diagnostics in its log file when it findsinvalid header information in the sort file.

NOTE: This version has over 1500 lines of changes from version 2.87.

6/12/02

Version 2.91

* ClassPag can now size internal ads from the postscript in the ad fileinstead of from the values in the sort file. This can help when importingads from interfaces that write incorrect sizes in the sort file (for example,marking all ads as one column wide) as long as the EPS in the ad filecontains a "bounding box" comment.

On the pagination statistics screen, the menu under Ads -> DisplayAdshas a new option "Fix internal ad sizes"/"Corregir taman~os de avisos internos"to scan the currently imported ads.

The "Ad Loading"/"Cargar de Avisos" product configuration screen has a new field"Scan Internal Ad EPS"/"Comprobar avisos internos" that you can set to "Y" torequest the scan automatically during imports, The scan makes the import takelonger, so you should leave it disabled (by setting the field to "N" or allspaces) unless you need it.

* The product configuration screen "Outext Export"/"Exportar de outext"has new fields "Min Base Length, Max Suffix Length, and Right Justify Length"/"largo min de base, max de sufijo, de justificar" to control the formattingof classification names in the outext. If classification names havethe format "###AAA" where "#" is a digit and "A" is a letter, and youneed them formatted " ###AAA" in the outext, but some classes haveonly two digits, set "Min Base Length" to 2 (the fewest number of digits),"Max Suffix Length" to 3 (the maximum number of letters), and"Right Justify Length" to 7 (the final length of the name in the outextincluding leading spaces).

* The procedure to rebuild banners now writes warning messages into thebanner eps in addition to showing them on the screen. This should makeit easier to diagnose banner problems from just reading the eps.

* The procedure to rebuild banners now writes a comment in the banner epsfor inactive text segments, and it shows a warning for banner images withno active text segments.

* ClassPag no longer leaves empty columns when a class with only one-columnline ads has only multi-column class headers.

* lnexe.sh now links the interface readrun program.

6/25/02

Version 2.92

* The ad context configuration has a new context "SPLITCONF" for the colorto show ads that would be split when printing the page as blocks.The color defaults to the color for ads missing eps which in turn defaultsto the color for generic conflicts. You must set the product configurationparameter "Show Split Ads in Blocks as Conflicts" to make ClassPag checkfor split ads. If an ad has additional conflicts, ClassPag still shows thead in the split ad conflict color because the split ad conflict must beresolved before printing the page. The current conflict testing order issplit ad, missing eps, color conflict, incorrectly sized eps,zone conflict, class conflict by page, class conflict by column,and invalid ad reservation size.

* The "Show Split Ads in Blocks as Conflicts" product configuration parameternow has three values, "T", "F", and "U". As before, "T" shows split adconflicts when the line ads are flowed, and "F" (the default falue) doesnot show any split ad conflicts.The new value "U" shows split ad conflicts both when the line ads are flowedand when they are unflowed. Showing split ad conflicts when ads are unflowedhelps to prevent you from creating split ad, but might show that ads are splitwhen the flow of line ads will square-off a block and keep them in one piece.The test for split ads is expensive, so you should enable this option onlyif you regularly print EPS blocks using the "PS Type" of "BLOCK" or "RBLOCK".

* The product configuration screen "Ad and Class Name Conversions"/"Conversionde nombres de avisos y clases" has a new field "Class Name Length To Copy ToSequence"/"Largo de nombre a copiar" to specify the number of characters tocopy from the class name to the class sequence number when the field "SequenceClasses by Class Number" is enabled for ClassPag to build class sequence numbersfrom the class name instead of from the the four-digit sequence number incolumns 79-82 of new-format header lines in the sort file. The default valueis "5" to fill the entire five-character class sequence number field. If classnames have a format with a fixed number of digits and then some text that mightcontain digits, and if the field "Format Class Name in Sequence" is enabled,you should set the copy length to the fixed number of digits.For example, if you have classes "16102X4" and "1610VANS" and you have enabledformatting, "16102X4" would become "16102", while "1610VANS" would become"01610", and the classes would come in the wrong order. You can fix this bysetting the new copy length field to "4" to make both sequence numbers "01610"or by disabling formatting to make the sequence numbers "16102" and "1610V".

* ClassPag no longer attempts to download fonts that the configuration saysdo not need to be downloaded, even when an ad uses them. This allows youto prevent ClassPag from downloading fonts that cause problems on printers.

* When ClassPag justifies ads on pages, it now places less additional leadingbelow class headers than below other types of ads to keep class headerscloser to the ads in their class.

* Added an "unplate" program to split DCS 2.0 files into separate plates.This can help to view the separations for testing.This program is currently not included in the distribution.

* ClassPag does a better job justifying multi-column ads on the top stack.

* The calculation of estimated ad areas is done later in the paginationand is more accurate.

* Fixed a calculation floating ads when the top ad on the bottom stackwas a multi-column class header.

* Fixed a problem where ClassPag would sometimes place extra headers atthe tops of columns for products that place requests column headers onlyat the leftmost column of pages when pages had island ads or locked headers.

* Fixed a problem in the report of missing ads where ads with no descriptionwould show the description of the previous ad in the report.

NOTE: This version has over 3800 lines of changes from version 2.90.

6/26/02

Version 2.93

* The product configuration screen "Classified Heading Placement"/"Ubicacion de Encabezados de Clasificaciones" has a new field"Use smaller extra header as copy"/"Usar cabes chicos como copias"to use the smallest class header (in classes with more than one header)as the header to repeat at the tops of columns and over display ads.ClassPag will not flow this header at the start of the class.It will flow only the larger headers.Use this option when you need to pass a repeat header from an interfacethat can not set the "COPY" flag on lines for header ads in the sort file.If you have a class that really has two headers that need to flow atthe start of the line ads, you should either recompose them to make asingle larger header or else enter a third header for ClassPag to useas the repeat header.

7/8/02

Version 2.94

* ClassPag can now highlight the ads of a given class.This makes it easier to find the line ads that match a display ad.Set the highlight color using the new "SELCLASS" context underSetup -> Set Ad Colors.The highlight color for line ad defaults to the color for conflicts.Other types of ads have no default and change color only if they have a"SELCLASS" context entry. This allows you to control whether other typesof ads like display ads, fillers, headers, or banners change color.To highlight line ads by class, click on any ad of the class that youwant to highlight and then click on the "Find class" button on thetool bar. You can also select Cmd -> Ads... -> Find classin the command menu.

* The window to load class nestings has a new function"Copy from another product"/"Copiar de un otro producto"to copy a set of nestings from an entry in another product.ClassPag copies the nestings into the currently selected entry.If you want to place the nestings into a new entry,use the Insert function to create a new entry and then move the cursor overthe new entry before selecting the "Copy from another product" function.Once you select the new copy function, ClassPag will open alist of all pairs of products and class nestings.You can close the list to leave without making any changes,use the "List" function (using F2 or using F12 -> "List")to view the entries in a nesting,or you can select a nesting by highlighting it and pressing Enter.If you select a nesting, ClassPag will show a dialog confirmingyour choice. You can answer "No" to exit without changing anything,"Copy New" to copy only new entries for classes that do not havean entry in the target nesting list, or"Copy All" to copy all of the entries.If you select one of the "Copy" entries, ClassPag will do the copiesand tell you how many class entries it modified.

* The window to view the entries in a class nesting table now has additionalfunctions to toggle the class selection flag and to remove all of the entries(except the top entry for ******).

* The window to view the entries in a class nesting table now has a tool bar.

* The "View Ad Directories" browser handles symbolic links better.Symbolic links to directories now show with the suffix "/@",and the browser allows you to step into them.Broken symbolic links now shows with the suffix "?@",and the browser displays a warning if you try to open them.

* Added a "showads.sh" script to the interface directory that addsdebug messages before each ad in a cpag.ps file produced by ClassPag.Run it with "showads.sh cpag.ps cpagdebug.ps" and then use "gs cpagdebug.ps".

* profile.sh now passes the contents of the shell variable RUNCPAG_OPTS toruncpag.sh.

* menprof.sh now looks for ClassPag in the directory that contains the menprof.shscript before checking /u/cpag and /u1/cpag.

* menprof.sh has options for loading runcpag.sh parameters into the RUNCPAG_OPTSvariable. The option "runcpag" followed by a name appends the name toRUNCPAG_OPTS. Menprof.sh also recognizes the options"bounds" (for use with cpag version built with a bounds-checked gcc),"debug" (to enable all spice debugging),"gdb" (to run cpag under the gdb debugger),"gdbint" (to run cpag under the gdb debugger in interactive mode,you must type "r" at the gdb prompt to start cpag), and"scr" (to set the scratch directory, does not work from inside menprof.sh).

NOTE: This version has over 3200 lines of changes from version 2.92.

8/6/02

Version 2.95

* When you drag an ad into a position where it does not fit,ClassPag now shows a line at the lower right of the page displaywith the amount of space by which the ad does not fit.

* If checking for eps blocks with split ads is enabled, if you drag an ad to aposition that would split an ad on the current page, ClassPag shows a warningline with the ad number of the split ad at the lower right of the page display.

* The "Request Checking"/"Comprobar Solicitudes" screen has a new field"Show Locked ads in Lock Color"/"Mostrar avisos bloqueados en color de bloquear"to control the color of locked ads. The default value is "Y" to show lockedads in the color specified in the "Ad Colors" table in the setup.The value of "N" applies the color for the class after setting the lock color.This makes it easier to identify the classes of ads on locked pages.

* Folios composition expressions can now use the variables "ImportDir"and "ClassNestingName". This allows folios to customize themselvesto an import area or a class nesting and might prevent the need tocreate new editions or section names.

* The classification nesting list window has a new option "Format sequencenumbers"/"Formatar secuencia" to reformat numeric sequence numbers.This can be useful when upgrading from version 2.50 or earlier of ClassPag(which had 4 digit sequence numbers). It can also help if you change thesequence number creation rules in the product configuration.This option affects only the current nesting table.You must update each nesting table separately.

* Added a renamefont.sh interface script that renames font filesto match their font name. The syntax is renamefont.sh -y file1 file2 ... fileNwhere each file is a font file and the -y option means to rename(actually link) the file to the name of the font it contains.The font files are written to the current directory even if theoriginal files have paths.

* The popup dialogs for testing expressions in the editor now trim andcollapse spaces in the strings so the text is formatted better.

* The expression interpreter now converts three or more D's into thename of the day of the week. For example, you can now use f$format(RunDate,"dddddddddd, mmmmmmmmmm dd, yyyy")instead of f$dayname(f$dayofweek(f$gregorian(RunDate))) // ", " // f$format(RunDate, "mmmmmmmmmm dd, yyyy")This feature requires a new version of spice.

* This is just a note. For weekly products, the save area expression can use "z_" // ImportDir // f$integer( (f$format(RunDate,"dd")+6.5) / 7 )to build a save area name based on the week of the month.

* Added -level1, -level2, -level3, -level1sep, -level2sep, and -level3sepoptions to convertpdf.sh. convertpdf.sh passes the options to pdftops.If pdf files can have color, you should use -level2sep.

* ClassPag shows a warning when the interface files are older than a few hoursbut not when they are really old. The "really old" date is now 90 days insteadof 14 days so it is useful for weeklies that use a different directory for eachweek of the month.

* The import directory list has a new hot key to show only the directoriesmissing control records. This makes it easier to see if you have importareas that you have not entered into the ClassPag control database.

* The cleanceps.sh script also removes old *.trn, *-, cpag.ps, and *_o files.It also now removes only normal files, so it preserves symbolic links.

* The arrow keys in the page preview now checks the edge of the ad in thedirection that you are moving instead of always checking the upper left.This should make the arrow keys more predictable.

* Updated the key bindings so the shifts of the arrow keys moves as faras possible in that direction.

* Fixed a problem in front-to-back pagination where ClassPag would placean extra class header below a display ad if the class that started belowthe display ad was the same classification as the display and the displayad had a header above it.

* Updated fixmactive.ps for PAGNENDEPSF.

* ClassPag can now extract sort and class information from CLS dumps.After ClassPag imports the normal classsrt.out and ceps.out files,if there is a cls.out file, ClassPag will ask to load it.For each ad, ClassPag updates the sort key (from field 2 of the CLS file)and the classification (field 20 of the CLS file).For the classification, ClassPag reads the long class title from the CLSfile and does a reverse-lookup in the class name database. If the titlematches a name, ClassPag updates the class of the ad with the class name.

* ClassPag now opens text files as "CRLF" instead of "TEXT" so it canread Mac-format sort files without converting them with "addcr".

* The product configuration screen "Outext Export"/"Exportar de outext"has a new field "Convert to Mactive"/"Convertir para Mactive" to writea mactive.txt file after writing the outext.txt file.The file contains the same ads as the outext file but with the formatad-number <tab> class-name <tab> page-number

* The product configuration screen "Ad Import Restrictions"/"Restriccionesde Importacion de Avisos" has a new field "External ad names have embeddedspaces"/"Nombres en sort tienen espacios" to control how ClassPag treatsembedded blanks in external file names in the sort file. Spaces are thedelimiters between the file name and the ad description, so file namesshould never have embedded spaces. The default value of "N" works asbefore where ClassPag terminates the file name at the first space.The value of "Y" tells ClassPag to try the full contents of the combinedfile name and description field. Use this option only if the sort filesometimes contains external ads with embedded spaces in their file namesand never contains descriptions for external ads.

* Increased the internal length of eps file names from 48 characters to 64characters. The databases for fillers and banners have fields that are 60characters long, All 60 characters can now be used.

* The Load option in the ViewAdDirectories window now works with EPS files namesthat contain embedded spaces. You should still avoid saving file names withembedded spaces because it makes the files trickier to process with unixcommands.

NOTE: This version has over 5000 lines of changes from the previous version.

8/8/02

Version 2.96

* If checking for eps blocks for split ads is enabled, ClassPag now checksthe ads on the current page each time you paginate. If an ad on the currentpage would be split, ClassPag shows a warning with the ad number at thelower right of the page display.

* The "Show Split Ads in Blocks as Conflicts" product configuration parameternow has a fourth value, "E", that works like "U" to show conflicts when adsare unflowed, but it includes an estimate of the line ads into the conflicttest. This allows it to find ads split by reservations and by banner blocks,without complaining about ads that would no longer be split after they arecovered by line ads.

* fixperm.sh is now smarter about finding the 'cpag' user if several userslog into the cpag home directory.

* rebuild.sh now tries $TOOLS if a compiler is not in $SPICE_COMP.

* Columns->EqualizeColumns now accounts for the class header at thetop of the leftmost column on the page if that column is empty andthe configuration requests a copy of the class header there.

* Column->EqualizePaired and pagination with classes with a "Randomize" valueof "P" no longer place extra class headers between classes that have the sameheader image, for example, between 101AAA and 101BBB if they both share the101 header.

* Fixed a problem where the Columns->EqualizeColumns did the same asColumns->EqualizedPaired.

* NOTE: gs7.21 and higher gets "Error: /invalidfileaccess in --file--"on postscript "run" commands when "-dSAFER" is set.If you see this error after upgrading ghostscript, in gv, useState -> Ghostscript Options ... -> [click on the "Safer" buttonto change it from light (enabled) to dark (disabled)],then click on "Apply", click on "Save", and click on "Dismiss".Then close gv and try to view the file again.

NOTE: This version has 388 lines of changes from the previous version.

8/17/02

Version 2.97

* Paired pagination (Randomize of "P") works better with ads that are tootall to fit on a page with class headers. It also does a better job ofkeeping ads in classification.

* ClassPag now shows a warning to rebuild the folios if the ending date changes.

* If Cmd->Ads->CheckForConflicts is scanning internal ads and if theproduct configuration "Convert to Mactive" flag is enabled,ClassPag generates "BAD FONT" listings for internal ads that contain fontswith commas in their name. This allows you to check for ads with invalidfonts like "Univers-57-Condensed,BOLD".

* The page preview commands Ads->CheckForConflicts, Ads->ScanImages,Pages->ViewNamedPageOutputs, and Misc->ViewClassResults now let yougo to the selected ad or page. Before, you could only go to an ad ora page from the Pages command list of the pagination statistics window.

* The product configuration screen "Outext Export"/"Exportar de outext"has a new field "Ads with Alpha Names"/"Avisos con Nombres alfa." toinclude records for line ads and display ads with ad numbers that do notbegin with a digit (i.e. "0" through "9"). The default value is "Y"to write records for all line ads and display ads.Set the field to "N" to omit ads that do not start with a digit.For front-ends that pass only numeric ad numbers, this option can be usefulif the front-end complains about outext records for ads that were createdby operators within ClassPag,

* The product configuration screen "Outext Export"/"Exportar de outext"has a new field "Trailing Segments"/"Segmentos Siguientes" to includerecords for trailing segments of long ads in the outext.The default value is "Y" to write records for all segments in the outext.Set the field to "N" to write records only for the initial segmentinto the outext. This can be useful for interfaces to front-ends thatcomplain about outext records for ad segments.

* The eps font name scanner now stops after the first non-comment line.This should make it faster.

* If the flag to convert display ads to line ads is set, ClassPag no longerconverts line ads to display ads based on the input conversion depth or theflag to set multi-column line ads to display ads.

* The commands to copy and save work areas now copy outext files if theyare present.

* ClassPag now initializes the fontmod debug level to the numeric valueof the FONTMODDEBUG environment variable. The "debug" parameter ofruncpag.sh now sets FONTMODDEBUG to 9.

* Fixed a problem where ClassPag would take the last character of theimage name as the sort key for external line ads with no ad description.

* Removing ads no longer clears the highlighted ads from the "find class"button.

* Fixed a problem where the "find class" highlight would sometimes notdisappear on all pages until you did a reflow.

* The classification name importer now uses a fixed font instead of aproportional font in the preview so it is easier to count the column positions.

* The "deleteint" parameter of the cleandir.sh script, used byImport->CopyClassPagFiles if you say "Yes" to "Remove old files", now deletesfiles with the extension ".eps" in the current work area before doing the copy.This should help keep eps files for generated banners from accumulating in workareas then getting copied into save areas.

* The cleandir.sh script has a new "nodelete" parameter to run without deletingany files. Use "cleandir.sh deleteint nodelete" to check what "deleteint" willdelete.

* Removed the #800080 color from the "findclass" icon.The Mac eXodus X server did not like it.

NOTE: This version has 1394 lines of changes from the previous version.

8/27/02

Version 2.98

* The product configuration screen "Additional PostScript"/"PostScriptadicional" has a new field "Before External Word"/"Antes de avisos por Word" toinclude a postscript patch to insert before external ads created by MS Word.

* Added a new "fixppi.ps" patch file for PPI interfaces that use Word.To fix the problem where Word writes EPS that separate poorly because theydraw black text in RGB color space, set the "Before External Word" productconfiguration field to "include fixppi.ps".

* Removed a test in paired pagination that would place a two column adabove two one column ads of a smaller class if the two column ad was theonly ad in its class.

* fixperm.sh now uses -R options on chmod and chown instead of find so itshould no longer complain about files with embedded spaces in their names.

* ClassPag now prompts you to rebuild the folios if you a page and the folio.epsfile is missing even though the control file says that the folios are current.This makes it easier to rebuild the folios if you accidentally delete thefolio.eps file.

* Updated rpt.bat to write report.txt instead of report.lis.

* Updated tntcpag.bat to look for mix_nt in d:\cpag.

* In Demo mode, ClassPag does not display warnings about the display adsdirectory or missing cardex files during import. Also, ClassPag showsa "not available" message when you try to rebuild folios.

* Added a rebuilds.sh script for rebuilding formulas from a demosource area with a directory matching /*cpag*/source.This helps rebuild formulas in demo areas.

* maketarh.sh now includes *.ico files.

NOTE: This version has 1499 lines of changes from the previous version.

11/7/02

Version 2.99

* ClassPag now supports ads in PDF, TIFF, JPEG, and GIF.When ClassPag encounters an ad that is not in EPS,it converts the ad to EPS and stores the EPS file in $CPAG_ROOT/cache.$CPAG_ROOT is usually "/u/cpag/root".

When ClassPag needs an EPS file from the cache, it checks that date against thedate of the original and automatically rebuilds the EPS if it is out of date.If the original files are on a different server (for example, if they aremounted on the ClassPag server over NFS), it is important to keep the systemdates synchronized.

The name of the cache file is the name of the original with slashes replaced byunderscores and other nonalphanumeric characters replaced by "=" followed theascii code of the character as two hex digits. ClassPag builds two versions ofeach file, a Level 1 version used when making color separations, and a Level 2version used when making composites. The Level 2 versions are smaller anddisplay faster at the expense of using postscript operators that can not beseparated in software. The Level 1 version ends with "s.ps" and the Level 2version ends with "c.ps". For example, the composite version of the file"/u/displayads/cake.tiff" would be stored as "_u_displayads_cake=2Etiffc.ps".Note that these naming conventions are subject to change.

It is safe at any time to remove files from the cache directory.For example, find /u/cpag/root/cache -atime +3 -print | xargs rmwill remove EPS cache files that have not been used in the last three days.You should remove files by access time (-atime) instead of creation time(-mtime) to preserve cached files for images like banners or logos thatare used every day and rarely changed.The command "ls -ltu" shows files sorted in order by access time.

* Added an interface purgecache.sh script to purge old files from the EPS cache.It takes the options below: -cachedir dir = set the ClassPag eps cache directory to purge. -days # = set the maximum age of files to keep. -delete = delete the files.If the script is run from a ClassPag account, it will use the cache directoryfor that account. Otherwise, you must specify the cache directory.The default number of days is currently 7.The script lists the files by default.To remove files, use the -delete option.

* ClassPag now shows bitmap previews of ads when they are availablein TIFF files, in TIFF previews in EPSF files, or in JPEG files.The product configuration screen "Screen Display Preferences"/"Preferencias de Visualización" has a new field "Show Ad Preview Images"/"Mostrar imagenes de avisos en pantalla" to control whether ClassPagshows previews. The default value is "Y" to show previews.Set the field to "N" to disable previews.You can change the value for the current work area using"Cmd -> Misc -> Show ad preview images". You will need to page down tothe end of the Misc menu to select this option.The control records has a new field "Show Ad Images"/"Ver imagenes"to save the value for each work area.

* The Box Information button now updates the ad preview of the current ad.If you update an EPS file that has a preview, and then click on the ad,and then click on the Box Information button, when you move to another ad,the updated ad will show the new preview.

* Folios expressions can now access the number of columns on the pagethrough the variables PageNumColumns, LeftColumnAdjust, and RightColumnAdjust.LeftColumnAdjust and RightColumnAdjust are the column adjustmentsentered into the page information record in the "inpages" database.PageNumColumns is the number of columns on the page, calculated as thenumber of columns in the product configuration plus the LeftColumnAdjustand the RightColumnAdjust values. ClassPag places the folio counting fromwhere the leftmost column would have been. Folios that flush left mightneed to use LeftColumnAdjust, and folios that flush right might need touse RightColumnAdjust.

* The product configuration folio screen has a new field"Warn if folios not made for ... cols"/"Avisar si los folios no se hacen por ... cols" to check ifClassPag should rebuild the folios if you change the number of columnson a page. This field also enables the lookups for the folio variablesPageNumColumns, LeftColumnAdjust, and RightColumnAdjust.If this field is not set to "Y", PageNumColumns will be fixed at thedefault number of columns from the product configuration, andLeftColumnAdjust and RightColumnAdjust will both be fixed at 0.

* ClassPag can now update ad positions from an outext file.The Cmd -> Ads menu has a new "Load outext"/"Cargar outext" option.If an outext file is present in the current work area,ClassPag will ask if you want to load that outext, if you want to browsefor an outext, or if you do not want to load anything.If the current work area does not have an outext file, ClassPag will opena directory browser to allow you to select the outext file that you want.Once you select an outext file, ClassPag shows the outext file date andasks if you want to "Quit" (quit without loading the outext),"Load New" (update positions only for ads with no position requests), or"Load All" (update positions for all ads, including ads that you have positionedmanually).ClassPag maps the absolute page numbers in the outext to the absolutepage numbers in the current pagination session (the numbers in the initialedition parameters screen). If you plan on loading outext files,you should enter page numbers in the edition parameters screen thatcorrespond to the classified pages in the Layout session.

* The exchange command now updates square-off page ranges of square-offs witha first or last page on one of the exchanged pages. If the square-off has bothits first and last page set, they must be the same for ClassPag to update them.

* ClassPag now treats square-off request names as case-sensitive.ClassPag always required exact matches during pagination, but the page namedatabase used to have a case-insensitive key, so sometimes the configurationscreens would give misleading information.

* ClassPag now checks that request names in square-offs have entries in thepage name database. When you enter the banner setup screen, ClassPag nowshows a warning for banners that contain request names do not have page names.If a page name exists but with a different capitalization,ClassPag includes its name in the warning. If the banner is active,ClassPag shows a warning if the page name is present but inactive.

* In Demo mode, ClassPag now displays a "not available" meesage if youtry to rebuild the index. Also, ClassPag no longer checks the dateof the interface files.

* In Import->Copy on non-unix systems, ClassPag now removes the cardex,outext, and some work files in the current directory before doing the copy.

* Added an interface/fixpdfads.sh script to convert PDF files to EPS filesfor ads in the current work area. You must run this script from withina shell after importing the ads. The script scans only the ads referencedby the sort file. It reads the ads directory from the control records.

* The Load option in the ViewAdDirectories window now works with AdobeIllustrator EPS files that have header lines starting with "%AI".The bounding box scan usually stops when it finds a line that doesnot start with two percent signs.

* Added a terminal name key to the control database.This should make lists of import directories slightly faster.

* The window to edit the control database now has hotkeys to sortby user or by terminal.

* Fixed a problem where the aurora separation prolog would sometimes geterrors on color images.According to Adobe's Technical Notes #5044, 24 May 96 edition, pg 16,for the "image" operator, "only the DeviceGray case of the single-operandversion is currently supported by standard prepress applications."The aurora separation prolog used to generate a postscript error when eps filesused the dictionary version of the image operator. It now passes the image incolor so that the page is printable. Since the dictionary version of theoperator is not permitted in eps files, the solution is to remake the eps file,but if that is not possible, the page is still printable.

* Fixed a problem where the standard (non-aurora) separation would sometimesdrop out color bitmapped images.

* Fixed the tiff-v3.4beta03 tiff2ps program so that its level 1 eps coloroutput is separable. You must use the updated tiff2ps for ClassPag to importtiff files.

* Ported to MacOS 10.2 Darwin 6.0.

* Updated to compile under both spicedst and spice. MacOS uses spice.The other builds still use spicedst.

* pdf inclusion requires a version of pdftops-1.01 that I have modified-level1sep to show process color information. For ClassPag to importpdf files, you must use either the updated pdftops-1.01 or pdftops-2.00or higher (which incorporates my modifications).

* The maketar.sh -kit option no longer strips executables by default.This will make the kits more useful but slightly larger.

* The interface mapclass formula now shows the number of classes with errors.

* Increased the error log limit in mapclass from 20 to 1000.

* The interface maketext.sh now checks if TOOL_BIN_ROOT is set.

* The fixinc.ps patch file for SII now checks the variable cp_force_logo_fix toapply the logo position fix to all logos. The default is "false". If ad textfollowing a logo starts near the middle of the logo instead of under the logo,enter "/cp_force_logo_fix true def" in the "Patch After Prolog" configurationparameter. In general, ads with logos will have their ad text too high by halfthe height of the logo, and the ad will have a matching amount of blank spaceat the bottom. This should only be needed for very old versions of SII.You should already have "Before the Prolog" set to "include fixincbp.ps","After the Prolog" set to "include fixinc.ps", and "Before Internal Ads"set to "include fixinca.ps".

* Added a "cpagdebug" option to runcpag.sh to set the ClassPag debug level to 9.

* Fixed a problem where ClassPag would sometimes not place class headers toseparate a display ad from an ad below it of a different class if the top ofthe page had a class header that matched the ad below the new ad.

* If you run a report in a product with an empty run date in its editionparameters, the report heading now shows the current date instead of stars.

* The ClassPag postscript prolog now defines the setseparationgray operatorif it is not already defined. This operator writes black on all separationsand can be used to generate registration marks when doing software separations.It will also work for in-RIP separations if the RIP supports the operator.

* The Setup->Version message now shows the spice major and minor versions.For versions of ClassPag built with the current version of spice, the majorand minor version numbers will both be 1.For versions of ClassPag built for backward compatibility with the previousversion of spice, the major version number will be 1, but the minor versionnumber will be 0.For versions of ClassPag capable of showing preview images, the version numbersare followed by "+XImage".

NOTE: This version of ClassPag requires a version of the SCS spice tools fromNovember 7, 2002, or later, with a spice interpreter of version 4.147 or higher.The previous version of ClassPag required only version 4.130 or higher.

If you try to rebuild folios without updating the tools, you will seespice.dbg logs similar to this:Frm-Info: Formula Interpreter Version 4.132Frm-Info: Formula XFM $CPAG_SPICE/folioelp.xfm Requires 4.133 ( Compiled by 4.147 )Frm-Info: Version number mismatch. Please recompile formulaspice: Formula "MakeFolioTextEPS" not found. XFM = "$CPAG_SPICE/folioelp.xfm"

NOTE2: This version has over 9400 lines of changes from the previous versionin addition to building with a newer version of spice.