1988-2014 TSI: AdDept: System Structure

A complicated system. Continue reading

People who have not worked in retail advertising will probably have trouble understanding this entry. Nevertheless, because the AdDept system was the focus of my life for so many years, I feel obliged to document as much of its structure as I can remember. It did not occur to me that I might want to undertake such a task until very recently. Consequently, when I closed down TSI in 2014 I discarded almost all of the system’s documentation. The few computer files that I have subsequently found are mostly PageMaker documents. I don’t have that software on my computer, and the files are too large for the services that will convert them to pdf files online. So, I must rely on my memory, which is not as reliable as it once was.

AdDept was designed for and implemented in OS/400, the operating system of the AS/400 and its follow-on hardware. Some of the important and unique features of this operating system are described here. Every line of code that we wrote in 1988 still worked in 2014, and I have no reason to expect the code to stop working any time soon.

All programs were originally written in BASIC. Around the turn of the century IBM stopped supporting BASIC, but TSI was authorized to install the product (a compiler, and interpreters of both BASIC commands and BASIC procedures) on any system that use our software. This only caused one major problem, which is documented here. However, Denise Bessette did not like this arrangement and undertook to convert the programs to ILE RPG. I never appreciated the value of that idea, and I never took the time to learn that language, which is supported on no other system.

All data tables and the major programs in AdDept began with the letter D, which stood for department. This was for TSI’s benefit. The ad agency system used a similar structure, but no files or programs began with D. The second letter in AdDept tables was usually A, I, M, or P, which stood for accounting, (loan room) inventory, media, and production. Programs that were used for cleanup, copying, and other miscellaneous tasks began with DX.

All AdDept programs were stored in the same library1. It was usually named TSIPROG. The data was in a library named TSIDATA. A few clients had additional data libraries for additional companies. At these installations we created a separate library called COMMON or TSIDATACOM to hold the tables that were used for both companies. For example, both companies probably used the same ad types and expense classes (major media). The tables used by both were moved from TSIDATA to the common library. A new data library was created for the data files for the second company. In the beginning it contained empty copies of all of the remaining files in TSIDATA.

No two instances of AdDept were the same, but each had the same TSIPROG library. The settings for each installation were designated in two ways: 1) A set of empty one-byte files, the existence of which activated certain features; 2) a file called DASPECS that contained a very large number of switches, descriptions, and system values. The program to maintain the system values was not on a menu, and users were not allowed to run it.

Everyone needed a user ID to sign on to the system. Those connecting through a network could have any number of simultaneous sessions open.

AdDept’s user table, which was also on no menu and could be run only by the AdDept liaison, limited the programs to which the user had access. If the same employee worked with two different data libraries, a second user ID was required. The two user ID’s would have different library lists.This arrangement may sound cumbersome to people who are used to managing hundreds or even thousands of nested folders, but it did not seem strange to the users of a multi-user system. Furthermore, it was absolutely critical that changes not be made on files in the wrong library. All TSI menus displayed the name of the data library to help eliminate confusion.

The retail calendar was accommodated by the season table. The key was a three-digit number. The first two digits were the fiscal year. The third digit was 0, 1, or 2. 0 meant that a standard twelve-month calendar was used. 1 and 2 were used for 4-5-4 retail calendars, which are described here. This table contained the name of the season, the starting date, and the number of weeks in the season.

Ads were classified by three separate codes:

  1. The one-digit insertion code determined which set of screens was used for data entry. This was a fixed set, but more codes could be added for additional media.
  2. The one-digit expense class identified how the ads were categorized for accounting purposes. Later a sub-class code (blank default) was added for one client.
  3. The two-digit ad type was specified when an ad was created. This table held the insertion code and expense class. It also had a binary field to identify whether color charges were applicable.

Media vehicles, such as newspapers, magazines, and broadcast stations and networks (called pubs in AdDept), were identified by a five character codes combined with a two-digit number (usually 0). For newspapers at least one number was reserved for inserts (usually 10). The users specified the days on which the paper published, whether it was AM, PM, or a combo2 and the paper’s depth (maximum number of inches vertically on a page). For direct mail the pubs were usually geographic markets.

Stores could be identified by a five-digit number.

Every pub had a list of stores that were associated with it. There was also a date-sensitive pub-store allocation table that contained the percentages allocated to each store associated with the pub. The key to this table included an effective date. Less than half the AdDept retailers allocated costs to stores, but the ability to do so was very important to those that did.

AdDept users almost never paid the published rates.

Rates for ROP and inserts were date-sensitive. For ROP separate rates could be entered for black-and-white and several different color choices. There were also tables for linage-based discounts and premiums for things like special positioning such as “back of main”—the last page on the first section of a paper. For inserts a table of usual quantities (thousands of copies) could be created, with rates for each.

The system needed to be able to find the right rate to apply whenever an ad was changed or moved. Costs could also be recalculated en masse when a new contract had been negotiated. These were attractive features.

Probably the best idea that I had when designing the system was to allow the definition of pub groups (identified by five-character codes) to specify sets of pubs in which the same ads often ran. Clients could have hundreds of these or none. When a new ad was created, one pub group could be specified. A schedule could automatically be created with all the pubs in the group.

The hierarchy of participating merchants had five levels in AdDept. The lowest (most detailed) was the department. The system called the other four ADMGP, GRPVP, SENVP, and GRSEN to match Macy’s East’s designations. Most retailers had only two: DMM’s and GMM’s. The May company used “CCN numbers” to group related departments. For each level each client determined the descriptions used on screens and reports.

Employees were identified by three-character codes. Employees could be assigned to production jobs. So, an employee could see a list of all of his open assignments.

The traffic system allowed specification of a code for each production job that determined the job’s production schedule. So, black-and-white ROP ads might have a three-week production schedule with eight steps. The number of days for each step could be specified. Then the system would count backwards from the release date to build a schedule of due dates that accounted for weekends and holidays. The completion dates of each could also be entered (an X meant “today”).

This seemed important to several clients, and we built it precisely the way it was described to us. However, the production employees did not like it. For one thing, most of them used Macs for working on the ads, and they found a text-based system clumsy. I don’t honestly think that they would have liked it much better with a GUI (graphical user interface) as the front end.


The accounting tables were similar to those in the GrandAd System (described here) or any other system. They were designed to be consistent with whatever system was used by the accounting department, but AdDept users did not need to memorize the very long codes that were common in those systems. In AdDept the main entity was the sub-account, which was identified by a five-character code. One corporate G/L account was specified for each sub-account.

The vendor table also had a five-character key. The corporate vendor number was specified there. This table was used for merchandise, media, production, and other vendors.

Categories of production costs were identified by three-digit codes, just as in the GrandAd system.

The Ad Files

The system had one major header file for ads of all types and a number of lists that were associated with it. The ads file3 was identified by the season, a five-digit ad number (usually generated by the system using client-specific rules), and a one character version code (usually blank). The ad number could either be entered or generated by the system. Data entry began with the specification of the run date and ad type. A large amount of information was deduced from those two values. The headline and size4 of the ad were then entered on the header screen, which also contained many other fields.

The second step for ads of all types was the media schedule. If the pub group was accurate, nothing had to be entered here for ROP and inserts. For direct mail the quantities by market were entered.

The third step was the list of participants with percentages and co-op commitments.

Expected production costs could either be entered as one lump sum or detailed by category.

Audit Trails

History records were created for any activity that affected planned, committed, or actual costs or income. Reports and screens were written for viewing them. A few custom reports were also written for clients.

Planning

New ads were ordinarily assigned a status of P, which stood for “planned”. When the plan was completely approved, a program could be run to change the status of all status P ads to A (active). At the same time records of the detail of the costs of those ads at that time were recorded in separate files named DAPLAN (by department or group) and DAPLANST (by store).

Changes could still be made to any aspect of any ad, of course. Those values were considered “committed”. The actual costs were based on the measurements and the invoices from the media and production vendors. Actual co-op was based on the “claims” that had been processed.

In subsequent years several AdDept users let the system build the entire schedule based on the previous year. Thus season 951 could be built based on the ads run in 941. This process was called “anniversarying”.

Cost Accounting

What I called “cost accounting” was commonly called BI later.

Most advertising departments were keenly interested in comparing planned, committed, and actual costs by merchant or by store. AdDept had programs that would create detailed records every night by store and/or merchant for all ads in the current season. The merchant records were stored in DACOMMD (committed) and DAPANDL (actual). The records by store were in DACMDST and DAACTST.

Numerous reports were written to allow comparison of planned, committed, and actual costs and income (from co-op). Some users also queried these files on a regular basis using IBM’s Query/400 product.

Interfaces

Broadcast ads could be fed into the system from Doner, the May Company’s ad agency, and from Media Management + files created either internally or by an agency. There may have been one or two others of these.

A couple of clients used ad agencies for their newspaper ads. TSI constructed interfaces to receive the ad schedules from the papers.

Several interfaces were created to send files to feed corporate Accounts Payable and General Ledger systems.

Sales at the department level could be downloaded from the mainframe. Customized reports helped gauge the effectiveness of ads in comparison with the costs.

Backup

It was easy to schedule a backup nightly and to schedule the cost accounting programs to start when the backup was done. The backup would not save files that had record locks. Any time that a record was read from a program that could update that file (as often occurred), the record was locked to prevent one user from accidentally overwriting the work of another. It was sometimes difficult to persuade users either to make sure that everyone had signed off every night or to shut down the interactive subsystem before backing up and restarting it later.

TSI recognized this problem and warned the users about the possibility of lost data if files were not backed up routinely and correctly. We even offered (for a modest fee) to check their backups every day and notify them by telephone if the backup for the previous nights did not complete correctly. Only one client took advantage of this service.

The failure to check backups resulted in one ugly mess that was described here.

Cleanup

By the standards of the day the cost accounting and history files often became extremely large. A menu of programs that permanently deleted records from old seasons was provided.

Other Modules

The Loan Room inventory system was successfully used by Macy’s East for approximately twenty years.

A Photo Shoots system was also designed for Macy’s East, but it was never implemented. I don’t remember why they lost interest in managing the activities of their studio. The location of the studio in Newark may have been a factor.

Many modules were developed for Belk. One that I remember calculated the store’s use tax liability for direct mail pieces for each jurisdiction.

Saks Inc. in 1999 wanted TSI to design a very complicated system for collecting data from the systems of each of its divisions and, eventually, to produce reports that compared divisions. I was very happy that nothing came of this idea.

A special module was created for Radio Shack to manage its advertisements in magazines.

I suspect that there must have been a dozen more of these modules that I cannot recall. We delivered hundreds of custom programs over the years and quoted a similar number that were never approved.


AdDept was a fabulous system. Because it contained so many features, it was somewhat difficult to demo. The screens and most of the reports were ugly. Nevertheless, as soon as prospective clients understood its potential, it was easy to sell to anyone with a budget.


Unfortunately by the time of the Bush-era Great Recession in 2008, Tarot card readings for most major retailers—especially the ones that did a lot of advertising—began with the thirteenth trump card: Death.


1. “Libraries” were a type of object on the AS/400. They were places to store other objects in the same way that folders or directories are used on PC’s. However, it was not possible to build a “tree” of libraries. All other libraries resided in the QUSR library.

2. Yes, a few papers still published two editions per day in the nineties.

3. As far as the OS/400 was concerned, DMADS, the ads file, and the files that contained all of the lists were equivalent to the tables. However, TSI’s organization and documentation drew a useful distinction between the relatively stable tables that were defined at the beginning of the installation and the much more volatile ad files and transaction files.

4. The size for ROP ads was entered in columns and inches. A full-page broadsheet ad was entered as 6×21. The program knew to adjust the inches to match the paper’s depth. The size for inserts was entered in terms of thousands of copies. The size for broadcast ads was the length of the spot in seconds, usually 15 or 30.

1994-2014 TSI: AdDept Client: Gottschalks

Independent chain of department stores in Fresno CA. Continue reading

In the Model T days the name still had the apostrophe.

Doug Pease, TSI’s Marketing Director who was introduced here, took the phone call from someone in the IT department at Gottschalks (never an apostrophe) in 1994. Gottschalks was an independent chain of department stores based in Fresno, CA. I am not sure how the people in the IT department had heard about TSI. We had previously had only incidental contact with the Advertising Director there. Since they seemed like an ideal candidate for the AdDept system, I quickly agreed to talk with them in person.

The only reasonable way to get to Fresno was by way of LAX. Sometimes I drove (3+ hours). Sometimes I took the short flight.

Doug and I flew out to Fresno on a Saturday to make a presentation and gather specs about their requirements. On Sunday we decided to drive up to Carmel by the Bay and then drive down Highway 1 along the coast. This was a very pleasant trip for me, but, as I described here, Doug enjoyed it a lot less than I did.

The presentation and demo in Fresno seemed to go well, but almost no one from advertising except Robert Guinn1, the manager of the Advertising Business Office, attended. At some point during that first visit Doug and I were also introduced to the president of Gottschalks. He made the startling claim that he would make sure that the other members of the Frederick Atkins2 group would also purchase AdDept3.

Shortly thereafter a contract was signed, and a small AS/400 was ordered.

In December of 1994 I flew back to Fresno and installed AdDept on an AS/400 that the company had purchased from IBM. The machine was kept in the data center. That room had tight security, and it was always very cold, at least from my perspective. Because it was December, I had my overcoat with me. The only place that I wore it was in the data center.

Gottschalks’ headquarters was several miles north of downtown Fresno.

Gottschalks recommended that I stay at the DoubleTree hotel in downtown Fresno. It was right next to the casino4. The entire downtown area, aside from the casino, was pretty much dead by the mid-nineties. I did not like staying at that hotel. Fortunately, it was easy to persuade Gottschalks to let me stay somewhere on the north side of town that was both cheaper and closer to the company’s headquarters at 7 River Park Place East.


The primary purpose of the installation was not to improve or make more efficient Gottschalks’ advertising. Its main use was to keep better track of the money spent by the department. Here is what I wrote in 2000:

The liaison is now and always has been an accountant. The advertising department has shown very little interest in using the system. Their opinion is that the system was forced down their throats. This opinion is accurate. The accounting department and the IS department purchased the system in order to hold the advertising people’s feet to the fire.

On the other hand, there may be an opportunity here. Most of the people involved at the time of the installation have moved on. If contact is made with the new people, we may be able to sell them on efficiencies to be derived from using AdDept for scheduling.

Shortly after I wrote this evaluation Ernie Escobedo5, who succeeded Robert as TSI’s primary contact, arranged for an upgrade to the painfully slow AS/400 that they had been using. The new Model 170 was sitting next to the old one in the frigid data center when I arrived on August 19, 2000, to migrate the AdDept programs, the data, and everything else.


The fiasco: Writing about this episode is one of the most painful things in the entire 1948 Project. It was certainly the low point of my career as a cowboy coder.

The new system used RISC processors; the previous system used CISC. The compiled versions of the hundreds or maybe thousands of programs in the AdDept system needed to be converted. I had already done this a few times, including on a system used in TSI’s office. In fact, we used precisely the same model of AS/400 that Gottschalks had just purchased, and I was very familiar with the CISC model that they had been using. I knew that it would take most of the weekend to effect the changes, but I was quite confident of my ability to pull it off. I was so certain that I had scheduled time at Robinsons-May in North Hollywood for Tuesday and Wednesday. I planned to drive to Santa Clarita on Sunday evening and commute from the Hampton Inn there to Rob-May

The trip started very well. Here is what I wrote:

Yes, I often wore a suit, too.

I managed to get upgraded to first class for both legs today. Nadine told me that when she called three weeks ago they told her that there were no first class seats available on the Cincinnati to LA leg. It was indeed full, but I got one of the seats.

In first class they give you a hot wet towel before dinner. I have never quite understood what this was for. I guess that maybe they are afraid that the common people might have touched something on their way through our section. We wouldn’t want their common germs to mix with ours. I had delicious food on both flights. The food in first class on Delta is really excellent.

A guy across the aisle from me who was at least my age had a short haircut which had been dyed blonde on top. The only thing I can think of to explain this is that he must be the manager of a supermarket who did it to identify with his employees.

Wow! We just passed over Albuquerque. I could easily pick out the base that I was stationed on, the airport, and the two golf courses I played. The last was easy. They were the only green spots to be seen. The southwest is really desolate.

The drive to Fresno wasn’t too bad. Well, the first 22 miles were horrible, but the last 200 were easy. The car has a CD player. I played the duet CD through twice. I changed cars at Avis. When I got to Fresno, I realized that I still had the key to my first car. Whoops.

I am pretty certain that I stayed at a Holiday Inn Express on that occasion. I must have arrived late. The only room that they had was handicapped-accessible. There was a tub, but no shower. I had to sit down and spray myself with one of those handheld devices that are so common in Europe.

Both a football (soccer) and volleyball team are known as the Fresno Heat.

Although it was August, and Fresno had a reputation for very hot summers, I brought a jacket because I knew that I would be cold in the data center. If I had not, I would have been even more miserable than I was. David Seeto, our technical contact in the IT department, was there during the following process:

The new system came with the operating system and licensed programs already loaded. We had to call IBM to find out what to do. Unfortunately Gottschalks’ software contract did not cover weekends. Nevertheless we finally got IBM to tell us how to remove the licensed programs. When we did so, we got a processor check on the new machine. We called IBM again. They told us first that we probably had a bad disk drive, but we should try to IPL from the tape again. We did. This time the system said that it could not find one of the disks, but it completed the task. A second IBMer told us how to reconfigure the disks to find the second disk drive. By now it was 4 PM.

A “processor check” is a fatal error. The system is not usable without extraordinary intervention.

I then began the process of bringing over the data (trivial but time-consuming) and programs (much more complicated). The most important programs were in the library named AdDept. I successfully brought that entire library over to the new system. Then I deleted all the objects in the AdDept library on the old system. I don’t know why I decided to do that. It was certainly unnecessary, but I could not see how it could cause a problem. That system with all of its contents was surely headed for the junk heap anyway.

The process of converting all of the programs was still running when I left on Saturday evening. I came in on Sunday morning and was delighted to discover that the conversion had completed without any problem. I then put the system through some simple tests to make sure that everything was OK. I soon discovered that, while some programs performed correctly, a few of the most important ones did not. The most commonly used program in the system, WRKADS (work with ads), produced erroneous results.

I tried recompiling the programs that were producing erroneous results. That did not help. This was intolerable. I had no choice. I had to make the CISC system usable again. Here is what I wrote to my partner, Denise Bessette (introduced here), about the process.

David Seeto.

Well, I think that clearing that AdDept library was the stupidest thing that I have ever done. My recovery technique did not work. The 3/5 tape was missing everything changed from their previous install through that date. I had no way of knowing what the previous install date was. Therefore, I selected everything on the RISC box with a change date from 1/1 through 4/30. I think that this is a fairly good approximation since there was definitely an install here on 4/20. However, I did not discover this until 7 PM. I left Gottschalks at 11:15. The files were finished, but the compiles were still running. Could someone sign on tomorrow morning to test the WRKADS programs? Send me a message with the results.

I canceled my hotel reservation in Santa Clarita. I am staying at the Holiday Inn near Gottschalks. I plan to go into Gottschalks to make sure that things are running reasonably well.

Could you tell Mary Ng that I will try to be in early in the afternoon?

If I had to work with David Seeto every day I would have to take a header off of a bridge.

I only punched one wall today. The wall is fine, but one of my knuckles is very sore.

Gottschalks’ IT department placed a service call with IBM. A customer engineer appeared and ran diagnostics on the new hardware. He testified that it was all in order. As far as IBM was concerned, since the hardware was functioning correctly, the problem must lie in either its BASIC program product, for which IBM had withdrawn support, or our AdDept code. In either case it was not IBM’s problem. End of story. The fact that exactly the same model in Connecticut produced results that were different from those of the one in California did not affect the judgment of the IBM people in Fresno.

I tried to explain this to the people in the IT department at Gottschalks. I promised that I would continue working on the problem remotely. They were not a bit happy with a resolution that left them with an unusable computer that they had already paid for and a very slow one. However, they agreed to keep the new system on, as well as the communications setup that allowed people in TSI’s office to sign on to it. So, at least I would be able to gather data from afar.

I returned to New England with my tail between my legs. Two important clients were angry at me, and I could not blame either of them.

I had plenty to keep me busy for the next few months. At some point I flew to California to make up for the visit to Rob-May that I had canceled. A week or two later I flew to Bradenton, FL, to do a demo for Beall’s. After that trip I needed a few days to cobble together a detailed Design Document and a proposal.

During the periods in which I was at TSI’s office I devoted as much time as possible to trying to isolate the problem with Gottschalks’ new system and to find someone at IBM who would listen to my argument. I remember more about the former than the latter. I do, however, remember the moment when I asked an IBMer to look at an example that contained almost no programming code at all. While working in the BASIC interpreter at Gottschalks I displayed on the screen the erroneous result from a simple sum of two constants. I then performed the same task on TSI’s system and got the right answer.

The IBMer was forced to admit, “This must be a hardware problem.” A day or two later he got the customer engineer to return to Gottschalks and replace the “floating-point processor,” which I did not even know existed. Evidently it was used by BASIC and almost nothing else. I signed on and put the new system through its paces. Everything seemed to work perfectly. I called Gottschalks and scheduled another trip in November to effect the migration.

The flight out to California was not as pleasant as the one before the disastrous August trip. Upon arrival in Fresno I wrote back to Denise,”I was nearly overcome with sadness in the airport in Chicago. If this trip goes well, I will probably feel better. The last one made me rethink my whole approach to life.”

Gottschalks went from a grey box to a black one.

The November migration also occurred over a weekend. It went much more smoothly than the first one, but there were still quite a few hiccoughs.

I cleared out the TSIDATA library on the new machine. I then restored the data from the CISC box. It took six hours.

I keyed in all of the user profiles. I checked the system variables, the backup and cleanup schedules, and the automatic reply list entries. I set it up so that QSNADS was started with QBATCH. I keyed in all of the scheduled jobs. I scheduled jobs to stop and start fax support.

Todd Burke5 from IBM came in the afternoon. He had installed the operating system in August. However, he had failed to install the extended help, the previous compiler support, Advanced Function Printing (needed for faxing), and the Communications Utilities (needed for RJE6). He set up a console in the operator’s area so that it receives break messages from the QSYSOPR message queue.

DATEINFO7 was not in TSIDATA. I discovered this last time, but I forgot. I had to restore it from the old system.

I installed all changes from our system from 8/17 through 11/3. I didn’t leave on Sunday until 8 PM. I was the first to go. I was so tired that I missed my exit going back to the hotel.

I changed TOSHA_B’s user ID to TOSHA_A8 and STEPH_K’s to STEPH_M. If they are going to use ID’s like those, they should prevent the women from getting married.

Todd set up the faxing incorrectly. I don’t know what he did wrong, but the software support person had me delete everything he did and key it in again. She also had me fudge one of their files using DFU9!

When I left everything was working. David Seeto said that he felt as if a huge weight had been lifted from his back.

I’ve spent considerable time in the L.A. airport three times this year. No movie producer has yet to approach me with a multi-picture deal.

That was not the end of the story. I submitted two invoices to Ernie Escobedo for my time at Gottschalks in August and November. I did not ask for reimbursement for the dozens of hours that I had spent researching the problem and trying to get IBM to take a second look When TSI had not received payment more than a month later, I asked Ernie about them. He said that he was “not inclined to pay them.”

I wrote him a long letter in which I described the efforts that I had undertaken to get that defective new system to work. I also said that I understood why Gottschalks was still upset about the situation, but the villain in this case was IBM. The company had installed equipment that did not work and refused to recognize that fact just because the diagnostics that someone at IBM had designed did not allow the customer engineer to detect the problem. Ernie promptly approved the payment of both invoices.


Stephanie Medlock.

AxN: In 2003 Bob Wroblewski and I made a trip to California to show TSI’s online insertion order system to Rob-May and Gottschalks. That trip and Bob’s involvement with the project has been described here.

The reception to the presentation seemed quite positive, bur Stephanie never agreed to try AxN. She stuck with faxing her orders until the end.


Life in Fresno: During most visits to Fresno I stayed at a Hampton Inn that was a short drive from Gottschalks’ headquarters. I always rented a car; public transportation was not a viable option in Fresno. I found no restaurant in which I felt comfortable dining alone. For most suppers I got takeout. There was no shortage of establishments that specialized in fast Mexican food.

My only recreation was running. I was able to map out a course through the suburban streets near the hotel. Traffic was a problem at only a few intersections.

The weather always seemed good. The most peculiar thing that I remember about Fresno was the tule fog. Occasionally a fog bank would abruptly drop the visibility to zero for a short period of time. This happened once while I was there. On Highway 41, the major north-south road in the San Joaquin Valley, it caused a collision that involved a large number of vehicles. The phenomenon has its own Wikipedia page.


Epilogue: In 2000 Gottschalks acquired the Lamonts department store chain. The acquisition gave Gottschalks a presence in the Pacific northwest and Alaska. In retrospect this must have been the impetus for the upgrade to the AS/400. However, the results did not meet expectations. In 2008 the company was delisted from the New York Stock Exchange. In the next year it declared Chapter 11 bankruptcy. By July of 2009 all the remaining stores had been closed.


Robert Guinn.

1. Robert Guinn’s career after Gottschalks led him back to his alma mater, Fresno State, as is described on this webpage.

2. Frederick Atkins Inc. was a non-profit company that bought merchandise for the companies in the Frederick Atkins Group. In the late nineties quite a few independent chains of department stores still belonged to the group. A description of the concept is posted here. The company went out of business in 2015. At that point the number of independent department store chains could be counted on one hand.

3. As far as I remember, he persuaded no other company to buy the system. Of course, I did not expect him to. However, he did arrange for me to make a presentation to members of the group at a convention in Naples, FL. That adventure has been described here.

4. The Club One Casino, which was really just a card room, moved away from downtown during the pandemic.

5. I do not remember Todd Burke, but I found his LinkedIn page here. For some reason his list of experiences skips over his time in Fresno, as well as everything else in 1999 through 2018.

6. RJE is one of the hundreds of TLAs (three-letter abbreviations) employed by IBM in those days. It stands for Remote Job Entry. I don’t remember precisely how it worked.

7. I don’t remember what DATEINFO was used for or why it was not in TSIDATA, the library that contained all information that pertained to the client.

8. According to LinkedIn Tosha’s user ID would be TOSHA_G if she was still working at Gottschalks. For some reason I was not allowed to see her LinkedIn page, but I did find a reference to her here.

9. DFU was shorthand for Data File Utility. We never told any of our clients that it existed, and we never used it. It allowed the user to go in and change any field on any record of any data file. There was no audit trail whatever. This violates sacred principles of database design.

1998-2005 TSI: AdDept Client: Proffitt’s

Proffitt’s was a chain of department stores based, for the period in which I was associated with the company, in Alcoa, TN. Proffitt’s was the first division in the entity Proffitt’s Inc. The corporation changed both its name and orientation … Continue reading

Proffitt’s was a chain of department stores based, for the period in which I was associated with the company, in Alcoa, TN. Proffitt’s was the first division in the entity Proffitt’s Inc. The corporation changed both its name and orientation in 1998. The new entity was called Saks Inc. TSI’s relationship with that corporation and the people in Proffitt’s Marketing Group (PMG) has been described here.

Proffitt’s headquarters was four miles south of the airport. I usually stayed at the Hampton Inn at the top of the map. Although the town of Maryville was only about a mile away I seldom went there, and I never went to Knoxville.

I don’t think that I did a demo for Proffitt’s. Rather, the decision to use AdDept there was made by PMG based on the success of the installation at McRae’s that is described here. I definitely remember my first trip to the divisional headquarters. In April of 1998 I flew on Delta from Atlanta and arrived at McGhee Tyson Airport1, which is also located in Alcoa. I rented a car and drove the short distance to Proffitt’s headquarters, which was in a strip mall that did not have a Proffitt’s store. The mall’s anchor store, if you could call it that, was a Burlington Coat Factory.

By the day that I arrived, the advertising department’s AS/400 was already installed in a closet. Next to it was the system console. There was already a premium on space there, and it got worse very quickly. On some occasions I was required to work in that closet. It was a strong contender for the worst work environment that I had to endure.

The connectivity was also installed and configured by someone else. Specifically, TSI had nothing to do with the selection of the emulation software for the Macs.

Proffitt’s advertising department was not very large. The primary reason for this was that much of the creative and production work had been outsourced to an ad agency in Chicago named Ambrosi. I wrote this about the agency’s practices in April of 2000:

Ambrosi has a minimum charge of $175 for materials. They sent an invoice to Proffitt’s with a line on it with a $175 charge for “eye shadow kit.” Proffitt’s paid it without questioning it. The bill was nearly $20,000 over the budget – for one catalog.


The people: My original contact was the production manager, Tom Henry. All that I remember about him is that he took me to lunch that first day in his Corvette that was not really a Corvette. He said that it was “a knock-off”. I should have asked him to elaborate on the subject, but I did not. I think that we ate at an extremely inexpensive pizza place where you just pointed at the slices that you wanted. I have forgotten the name of the place.

Long after I posted this entry I discovered this photo of a meeting at PMG in Birmingham. Tom Henry is on the left in the shirt with horizontal stripes. On the opposite side of the table are two other people from Proffitt’s: Tom Waltz at the far end and Cindy Karnoupakis in red and white. I think that Tom W. was the manager of the business office before Jim Pierce. Cindy may have been his assistant. Steve VeZain of PMG is waving on the right. I don’t remember the meeting, and I have no firm recollections of Tom W. and Cindy.

I did not work with him much after that day. He was in charge of the department’s computers. Therefore, he had me train some people who worked for him how to check the backups. Leaving this important role up to them was a mistake.

I wrote this about the situation in early 2000:

This installation got off to a very slow start. All the people involved in the project initially bailed out when the data entry started. Three people are now involved – Jeannie Gorman for ROP, Lucy Delk for other media, and Jim Pierce in the business office. Jim, although a very laid-back guy, has more or less taken the bull by the horns in the last few months. They are now using AdDept for closing – accruals and the prepaid to expense journal entry for all media.

Don Alexander2 was the Senior VP of the department until July of 2000, but I do not remember dealing with him much. In fact, I remember very little about most of the people in the department until Marianne Jonas came from McRae’s to become the Advertising Director in August of 2000.

Jim Pierce handled the finances. His assistant was named Charlene. Christi Bullock worked with her. Jeannie Gorman scheduled and purchased newspaper advertising. Lucy Delk handled other media. I also took a photo that included a woman named Cindy. I don’t remember any of these people very well. I need to rely on the notes that I have discovered, and they do not begin until 1999. Furthermore, my research has been unable to determine anything about their subsequent lives.


Hardware issues: Most users of the AdDept system on AS/400’s experienced few if any problem with their hardware. If they did, they solved it themselves or got the IT department involved. My notes from Proffitt’s for 1999 and 2000 are replete with references to SNAFUs attributable to hardware. On July 13, 1999, I wrote “Evidently the power failure at Proffitt’s fried their fax modem.” This modem was used to send insertion orders automatically to the newspapers. If it was not working, Jeannie had to print the orders and send them one at a time via a fax machine.

The very next day I wrote the following about an incident handled by Jamie Lisella2 at TSI’s office:

Jamie got frustrated with Proffitt’s. As usual they have no one who is both willing and able to do something, in this case switch the modem cables for IBM.

TSI also had an HP Laser Jet 5 in its office.

TSI even was called about very trivial printer issues. This note is dated exactly two months after the modem cable problem:

Their HP 5 printer wasn’t working. The Powersave feature was on. I think when they had a power failure it may have reverted to the factory settings. I turned it off and restarted it. I printed out five copies of my write-up of how to take care of this. Maybe someone will read it this time.

In April of 2000 much of my attention was dedicated to getting TSI’s insertion order project, AxN, operational. I needed to document potential benefits vis-à-vis having the computer generate faxes.

I asked Jeannie Gorman to try to think of everything she hated about faxing insertion orders. She told me that she has to fax about one in ten by hand because they do not go through. While I was in the computer room I heard several busy signals.


The Disk Crash: In all of the time that TSI worked with IBM midrange systems, only one catastrophic disk failure2 ever occurred. It happened at Proffitt’s in late November or early December of 2000, only a few months after Marianne Jonas had moved to Tennessee from Jackson, MS.

One problem with IBM midrange and mainframe computers was that they were so reliable that users sometimes took them for granted. When I set up the system for Proffitt’s I programmed backup jobs that ran every night. All files used by AdDept were saved to tape. A different tape was used every night. They were recycled weekly. So, if there was a failure on Thursday, they could restore from the Wednesday night tape. If, for some reason that tape could not be used, the Tuesday night tape could be used, and so on. Total system saves were done whenever a new version of the operating system or a new set of PTFs4 was installed.

The process could not be completely automated. Someone had to change the tape every day and check to make sure that the backup completed normally.

Every multi-user system must have some method to prevent one user from overriding what another user has just done. On the AS/400 this was done at the record level. So, if one person was working on an ad or an invoice, other users were prohibited from deleting or changing information about that ad or invoice while the first person had the record open for editing. When the user finished working on an item or closed the program, the locked record or records were released. This occasionally caused problems when someone called up a record in a program that allowed editing and left the program open.

IBM’s backup procedure was also affected by locked records. It could be set either to skip backing up the locked files altogether or to back up the previous version of the locked records (called “Save While Active”). The latter sounded like a good idea, but it ran the risk of leaving some files out of sync with others. Besides, the backup was only really useful if all the files on it were complete.

When the disk drive was reported faulty, IBM replaced it with a new one. At that point it was discovered that the backup tapes for every day of the previous week were incomplete. The last usable backup was from the system save tape from more than a month earlier. Evidently no one had been checking the backup logs.

Of course,I changed planes in Atlanta.

When these facts were reported to TSI I ordered an “all hands on deck” response. The problem must have been discovered on a Friday. Jamie made a reservation for me to fly to Alcoa in time for business hours on Monday. Denise Bessette5 and I worked out a plan for getting as much of the data as possible back on the system while retaining the system’s integrity. We also devised ways of checking the consistency of the data and printing lists of records that should have matched but did not.

When I arrived at Proffitt’s Marianne escorted me to a conference room, closed the door, and screamed at me for a very long time. She said that it was irresponsible of me not to tell the people involved how to check the tapes. I explained that I had shown the people at Proffitt’s how to do this, and I had shown the two IT people whom she had designated how to perform this task at McRae’s. I also showed her the letter that I had sent to all of the divisions emphasizing how important it was to check the backup logs. It also explained the service that TSI offered for $150 per month whereby a TSI employee would sign on and check the logs every morning. Employees in the advertising department were notified if anything was amiss. Parisian was the only division that purchased this service.

Marianne was not persuaded or even mollified in the slightest by any of these facts, but she let me go on with my work to salvage as much as possible. The notes below include a lot of technical jargon, but at least they show how much effort I made to righten the ship. I have inserted footnotes to explain a few items.

Proffitt’s Recovery Journal

1. Sandy located all of the files missing from the save tape.

2. I used CHGJOB to bring all of the missing files up to speed.

3. I created records on the season file 6 for 001, 002, 011, and 012.

4. I deleted all logical files7 with 00 in them. These files were ones on the system save tape that were overridden by the ones on the nightly save tape.

5. I deleted all logical files whose source had been changed since 1/1/01. I then created them again.

6. I wrote a program named CRTPROFJCS to create DPJCSUM from DPJCSXMO. I ran it for 001, 002, 011, 012, and 021.

7. I created a logical file named DAACTSTAD2 to use in my program to create ads in 001 and following.

8. Dave Weeast left Jim a message that I should IPL8. I did so.

9. I used SQL to set the values of the latest projections in DPJCSUM to the sum of the open purchase orders plus the actual invoices for 001, 002, 011, 012, and 021. I did not change the original estimates. I tried to explain this to Marianne and to find out whether I should, but I couldn’t get her to understand what I was talking about.

10. I set up the user profile and the directory entry for Marianne, Ivy, and Phyllis Compton. These were the only people that had records in DAUSERS but no user profile.

11. I change the system value QINACTIV to 180. I also scheduled a job to end and start the interactive subsystem at 1 a.m. Bill9 said that we should do both of these things.

12. Marianne seemed to think that the store cost accounting would be worthless, but I still think that it is better than nothing for 002 and for the past.

13. Dave Weeast could not get the Mac network to come up. Daniel Moore10 came in at noon on Monday. Evidently it was never plugged back in. After he plugged it in it worked OK.

14. The HP network printer did not work. The IP address was wrong. I got the new one from Daniel and gave it to Dave Weeast. He changed the address, and it worked fine.

15. I changed DAACTSTAD2 to sort by expense class and month before ad number, so I could do a month at a time.

16. After a great many false starts I was able to get a program called CRTPROFADS to create the ROP ads for 011. It did not put in headlines. I set the columns and inches to 1 each. I set the ad type to 2 (B&W). I used defaults for everything else, borrowing the code from DM021 and DM041. I used storewide as the principal participant and assigned it 100% of the costs.

17. I wrote a query named ROPSEQ10 to extract the first pub on every ad. The results were stored in FEB01ROP, MAR01ROP, etc.

18. I wrote a program named RPFIXCI to calculate the column inches for each ad. It also deduced the ad type – black & white (2), one-color (6), or full color. I then changed the ad types in option 9 for the color ads and the size in option 1 for all ads.

19. I wrote a query named ACTST0011M to get the costs for each insertion in DAACTST. I wrote a second query named CHK0011M to compare this file with DMPSDET and report the discrepancies. I then fixed the obvious ones and kept the short list of the remaining ones.

20. I ran CRTPROFADS and RPFIXCI for February and March. I also did step 19 for both months. The March files and queries have 0012 instead of 0011.

21. The CPU attention light seems to be permanently on with SRC A6001730. Dave Weeast said that it is was OK.

22. Marianne complained about getting stuck in the “Cost” column in DM029 if she accidentally puts something there. I changed DM029S to accept blank, which is what they put in 90% of the time any way.

23. Jeannie did not put in a tape on Monday night, so we could not check the backup. She did put one in on Tuesday.

24. On Monday I worked in an office that had been turned into a shrine to Dale Earnhart. On Tuesday I worked in the closet in which they keep the AS/400. No kidding.

Issues

1. Marianne would like to be able to lock quantities in DM025.

2. I only got through March 2001. I ran CRTPROFAD3 but got no farther.

While I was at Proffitt’s I spent a little time researching what could have caused this problem. I was pretty sure that everyone turned off their terminals or PC’s before leaving every evening. I was quite certain that no one ever worked so late that their session would overlap the period scheduled for the backup. Moreover, there were only a few other scheduled jobs, and none of them locked records for important files.

Eventually I discovered that one person—a Mac user—did not close active AS/400 sessions before turning off the computer. The third-party emulation software running on the Macs, unlike the PC software that had been written by IBM, failed to notify the AS/400 that the session had ended abnormally. So, the job was still running, and records were locked. That user was Marianne herself.

When I left on Tuesday evening, I thought that the system was in pretty good shape. I left Marianne with a list of the ads that were still inconsistent and told her what needed to be done to fix them.

My recollection is that instead of proceeding as I suggested she decided to delete a large number of ads and have her employees key them in from scratch. That, of course, was her right.

Needless to say, TSI sent an invoice to Proffitt’s for the two days that I spent there. We did not bill them for any of the employees’ time. Marianne refused to pay the invoice. She insisted that the whole mess was TSI’s fault, and Proffitt’s would not pay.

The next time that I was in Alcoa I asked for a meeting with the man (whose name I do not recall) who replaced Don Alexander as Senior VP. I explained the situation to him. The invoice was promptly paid. I never mentioned anything about this to Marianne, and she never said anything to me. Our relationship thereafter was cordial but a little distant.


The Atmosphere:The trip to try to recover Proffitt’s files was no fun, but I went there a number of times, and I had quite a few memorable moments. I usually stayed at the Hampton Inn that was near the airport but not so near that the air traffic disturbed me. One night I was pleasantly surprised to see that I was the Guest of Honor. I received a basket of fruit and, I think, a bottle of wine.

My favorite place to eat was within walking distance of the Hampton Inn. Here is what I wrote about El Sazon11 in September of 1999:

I treated myself to chicken chimichanga last night at El Sazon, a nice little family-run Mexican restaurant within walking distance of the hotel. It came with rice, beans, guacamole, pico de gallo, chips and salsa. I also ordered iced tea with a free refill. My bill was $8.34 with tax. Things are a little cheaper here.

I wonder what you can get for $8.34 today.

My favorite place in all of Tennessee was Springbrook Park, which was about halfway between the Hampton Inn and Proffitt’s. It contained a 1.4 mile dirt path that wound through some very interesting scenery. I vividly remember jogging there nearly every night while listening to opera arias on my CD player or Walkman. Here is how I described one of those experiences:

I had a delightful seven-mile run yesterday evening. It was close to 70 with a gentle breeze. I love running in Springbrook Park – through the woods, alongside the brook, around the fountain, across the wooden bridge, up towards the playground. A few dog walkers, a few amateur joggers who never seem to do more than one lap, a few strollers (mostly in pairs), a lady just sitting in the sun on one of the many wrought iron benches, and two adolescent girls using a jar to catch something in the stream and then — on the next lap — painting each others’ faces with mud divert my attention momentarily from Professor Greenberg’s12 dissection of Verdi. The very end of the path is steeply uphill. On the last lap the tape had run out, and my calves started to cramp, but I liked the feeling. It meant that I was pressing just enough.

The atmosphere at the Proffitt’s building was also remarkable. The shrine to Dale Earnhardt had a serious competitor for most unusual workspace in the advertising department. One lady’s cubicle was filled to the brim with Warner Brothers cartoon characters—cutouts and stuffed versions of Bugs, Porky, Sylvester, and all the others.

In 1998 the University of Tennessee, located in nearby Knoxville, won the national championship in football. At the beginning of the 1999 season enthusiasm for the prospects of the Vols was at a feverish pitch, and Proffitt’s participated. Here is what I wrote about the most obvious manifestation.

Proffitt’s has put up a whiteboard across from the lunch room. Employees are encouraged to write their predictions for the Tennessee-Florida game. All day long yesterday people were standing around the board, which has also sprouted derogatory comments about various Southeast Conference schools.

After Marianne Jonas arrived, the atmosphere in the department became more serious. On the first occasion in which she invited me to Alcoa she did not let me rent a car. Instead she told me to stay at the Hilton at the airport. She personally drove to the airport and picked me up the next morning. I complained to her that my room was a very short distance from the end of the runway where the delivery service planes departed from between 2:00 and 3:00 in the morning. I got very little sleep because of the roar of their engines.

I needed to use cabs to get back and forth to the hotel for the rest of that trip, but thereafter she let me rent a car and stay at the much cheaper Hampton Inn.


Epilogue: In 2005 Saks Inc. sold the Proffitt’s and McRae’s stores to Belk13. The administrative offices in Alcoa were closed. Within a year all of those stores were converted to Belk stores or closed.

To the left is a photo of the Belk store in Foothills Mall in Maryville, TN. It was formerly a Proffitt’s.


1, McGhee Tyson Airport serves the greater Knoxville area. It is located south of the city in the town of Alcoa, which was named for its biggest employer, Alcoa Corporation.

2. My on and (mostly) off relationship with my sister Jamie is addressed in several blog entries. My relationship with the Lisella family is detailed here. The big crisis that developed shortly after her modem incident is described here.

3. Later versions of the AS/400 circumvented this problem using a technique called RAID (Redundant Array of Independent Disks) by which a set of disk drives could be recovered from redundant information on the remaining drives when one failed.

4. PTF is one of hundreds of three-letter abbreviations used by IBM. It stands for Program Temporary Fix. Every few months IBM would release a new set of PTFs for problems in the operating system or in IBM-provided programs.

5. More information about Denise can be found here and in many other blog entries.

6. The season file had two seasons per year. 001 was the spring season of 2000; 002 was the fall season of 2000. The two seasons that began with 01 were for 2001. Thus there was a mixture of past, present, and future on the file.

7. A “logical file” does not contain data. It contains pointers to data that may be sorted in a different order and may not include all of the records.

8. Dave Weeast was in charge of all AS/400’s for Proffitt’s Inc. More information about him can be found here. IPL, which stands for Initial Program Load, is IBM-speak for rebooting the system.

9. I am not sure who Bill is, maybe Bill Giardina, who worked in IT at McRae’s. That installation is described here.

10. I don’t remember Daniel Moore.

11. El sazon means “the seasonings”.

12. Robert Greenberg made a series of recordings for The Teaching Company (which subsequently changed its name to The Great Courses). They analyzed various aspects of classical music and opera. Sue Comparetto and I also attended a few lectures that he gave in association with performances by the Hartford Symphony Orchestra.

13. The advertising department at Belk was in a huge complex in Charlotte, NC. It used AdDept to manage its advertising. The details are posted here.