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

Reply via email to