Not long ago, the HP 3000 community was wondering about the limits of message files in the operating system. HP introduced the feature well back in the 20th Century, but only took Message Files into Native Mode with MPE/iX 5.0. That's certainly within the realm of all operating HP 3000s by today. The message file, according to HP's documentation, is the heart of the 3000's file system InterProcess Communication.
Message files reside partly in memory and partly on disk. MPE XL uses the memory buffer part as much as possible, to achieve the best performance. The disc portion of the message file is used only as secondary storage in case the memory buffer part overflows. For many users of IPC, MPE XL never accesses the disc portion of the message file.
Yes, that says MPE XL up there. The facility has been around a long time.
What do you do with message files? A program could open a message file and write a data record every 2 seconds. The data record could be the dateline plus the 2-word return from the CLOCK intrinsic. In another example, a message file could be used to enable soft interrupts. It might then open a log file to write progress messages from the interrupt handler.
HP's examples of using message files are illustrated using Pascal/XL, so you know this is 3000-specific technology. You'd think they'd be little-used by now, but this month the developers on the 3000 mailing list were asking about limits for the number of message files. An early answer was 63, but Stan Seiler used a classic 3000-era method to discover it: testing.
The answer is 4083. Or, why testing counts.
I just successfully opened 4,083 new message files from one process. Since the max-files-per-process is 4095, I suspect I could probably have squeezed in a couple more, but my test program already had some files open.
That this programming facility is still in use seems to suggest it's got utility left. Multiple programs and processes use message files to communicate. HP explains in an extensive document, "Suppose that a large programming task is to be divided into two processes. One process will interface with the user. This process is referred to as the "supervisor" process. It does some processing tasks itself and offloads others to a "server" process. This process only handles requests from the supervisor and returns the results."