This week saw the 40th anniversary of IBM CICS, the Customer Information Control System. It had 7 releases before being re-engineered as CICS TS (Transaction Server); CICS TS has just seen the release of version 4.1. I’m going to take a guess that they don’t use agile software development methods in the CICS department at Hursley. Yet for all its age, CICS keeps up with the times: it now supports Atom feeds, Java, and Web Services — REST as well as SOAP.

Of course, that’s not why 90% of Fortune 500 companies use it. It’s one of those rather dull products that runs invisibly, year after year, processing millions of transactions reliably and actually getting the answers right. Key parts of its behavior are formally specified in Z notation. It’s the back-end software that processes your ATM transactions and airline reservations. Yet in spite of that, it seems to have a fan following — there’s an I ♥ CICS group on Facebook. If you’re wondering what you’re missing, the University of Maryland has some screenshots of their CICS system. Of course, these days you can do your CICS development using Eclipse and give your applications a web interface.

Another really old IBM product that’s still in service is IMS, a database so old that it predates the relational model, let alone SQL. Built to track all the parts required to build the Saturn V rocket for the Apollo moon missions, it’s still being used today, 41 years later. It’s the product you use if your database is 60 terabytes in size. After CICS has processed your ATM transactions, chances are at some point the movement of the money will be noted in the Federal Reserve’s massive IMS database.

Like CICS, IMS has kept up with the times, with support added for web technologies. Ironically, the fact that XML is hierarchical makes IMS a better match for XML processing than the more modern relational databases — you can translate your entire document directly into IMS fields, preserving the hierarchical element structure directly, and then perform XPath queries via IMS’s JDBC interface.

I don’t use CICS or IMS myself. I only occasionally use a 5250 emulator, mostly to perform System i administration tasks; I haven’t logged in to z/OS in over a year. The mainframe I do use runs Linux, and I like it that way — Unix is quite old enough for me. Yet there’s something oddly fascinating about these mainframe products and their continued existence; it’s almost like discovering there are trilobites still living in the back of your filing cabinet.