Would a named pipe suit your needs?
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Charles Mills [charl...@mcn.org] Sent: Saturday, June 18, 2022 12:51 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Some UNIX file usage questions Hope some of you can help out a dinosaur. <g> I am designing a z/OS application (for in-house use, not an ISV product). It will consist of a started task that runs continuously plus one or more small reporting programs, one of them to be run daily shortly after midnight. The started task will record a very small amount of data (about 24 bytes or so) every fifteen minutes, 96 times a day. That data will be input to the reporting program(s). Being a dinosaur, I thought in terms of recording that information in a traditional MVS dataset. There are some problems with that: basically if I do allocate, open, write, close, de-allocate then I think I am going to have 24-byte blocks on disk*, which is going to give me really poor track utilization; and if I don't, then the report program is not going to be able to read the dataset due to ENQ contention (absent some sort of special "close it for a little while around midnight" logic) and also any abnormal termination of the started task (such as an IPL) will cause a loss of data -- not a critical issue, but less than desirable. *Yeah, emulated blocks on emulated tracks. There are of course no real tracks anymore. But the emulation is pretty realistic, right down to the poor track utilization! I thought about various approaches such as accumulating the records in memory and then writing all 96 of them in a single blast right after midnight. That would probably work out and solve the ENQ problem (but not the IPL problem). It would unfortunately preclude any ad hoc reporting in the middle of the day. And I would still end up with fairly small 2K blocks. This morning I thought "why not a UNIX file?" I can of course look up any specific questions in the relevant manuals, but I am just unfamiliar with the big picture. Am I correct that (1) there is of course no "physical block size/track utilization" issue with UNIX files; (2) that shortly after I write a record it will be fixed in place and would survive an IPL or other abnormal termination of the writing task; and (3) most importantly, the report program can read the file while the writing task has it open? Are those premises correct? (By "shortly after" I mean that I could live with a delay of a few minutes or so; this is not a banking application where two-phase commit is critical.) I picture writing the started task in Rexx, so I would have to write to a DD name allocated to the UNIX file (either dynamically or with JCL), not with "native" C fopen(), fwrite(), etc. Does that change any of the answers? Anyone see any gotcha's with the UNIX file approach that I seem not to have thought of? Thanks! Charles ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN