On Sat, 12 Nov 2016 12:53:40 -0600, Paul Gilmartin ([email protected]) wrote about "BPAM" (in <[email protected]>):
> In a recent thread in ASSEMBLER_LIST, the OP asks if it's possible > to append to a PDS(E) member. No, because the architecture of > PDS makes this prohibitively difficult. Likewise, concurrent writing > to multiple PDS members is prohibited because of that architecture. > > But the (undisclosed) architecture of PDSE removes the second > restriction. Why not also remove the first? Clearly not all writes > to a PDSE occur at end-of-information. > > Several answers to the "append" question suggested copying > to a temporary name, appending, and at the end deleting the > original and renaming the temporary, but cautioned of a timing > window. It would seem that STOW ,,R closes that widow. > Is there any need even to specify a member name before > the STOW? The traditional way to do this was to use a spill file, thus: OPEN (PDS,INPUT),(SPILL,OUTPUT) FIND PDS,<member> loop: READ PDS WRITE SPILL end loop: WRITE SPILL with additional records CLOSE PDS,SPILL OPEN (PDS,OUTPUT),(SPILL,INPUT) loop: READ SPILL WRITE PDS end loop: STOW PDS,<member>,R CLOSE PDS,SPILL > And I was pleased to learn that ISPF Library Management Services > allow concurrent writing to multiple PDSE members. There's no > specific documentation of this. There needn't be; it simply works. I suspect that BPAM uses an internal ENQ/DEQ mechanism to serialize access to a PDSE. This never happened for a traditional PDS. This would not facilitate the appending of data to an existing member. The serialization mechanism would not provide additional space to hold additional records within a member. > But I stumbled on a puzzling restriction: ISPF LMMREP can not > create an empty member; it must be preceded by at least one > LMPUT, which creates a record. Is there a sound technical reason > for this, or is it the whim of a designer who couldn't imagine a > use for an empty member, therefore it should be prohibited/ > (Dog in the manger?) > > It's clearly not impossible: IEBGENER with SYSUT1-DUMMY or > ISPF Edit readily create empty members. But is specialized > processing necessary to achieve this? If you use a STOW immediately after opening a PDS for output, you will create a member with no records in it. -- Regards, Dave [RLU #314465] *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* [email protected] (David W Noon) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
