> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:[email protected]]
> On Behalf Of Paul Gilmartin
> Sent: Monday, September 08, 2014 7:26 PM
> To: [email protected]
> Subject: Re: FTP of EBCDIC file
>
> On Mon, 8 Sep 2014 18:52:03 +0200, Thomas Berg wrote:
> >
> >I have no problems with the stack (or rather: not more than with any other of
> the language "constructs").
> >Although I nearly always uses QUEUE/PULL/EXECIO with
> NEWSTACK/DELSTACK.
> >
> >There is a theoretical performance enhancement with using the stack instead
> of stem.
> >With stack REXX need only one "parsing" of variable and don't need to setup a
> stem.
> >This depends of course much on how smart the REXX interpreter or compiler is.
> >
> Does the stem setup cost affect every reference to a compound symbol,
> or only the first?
I don't know. But it would be very surprising if the stem setup would be done
more than one time.
> CMS EXECIO provides an "EXECIO ... (VAR" as well as stem. I wonder why
> z/OS lacks the former. CMS also provides "EXECIO ... (STRING", but I
> suspect z/OS balked at the parsing considerations.
I can't see that to be a problem really (or do miss something?), they could
just use the standard string routines when "parsing" the input for EXECIO.
If you restrict the name of the variable to end with a numeric you have (just
guessing how ..(VAR works in CMS) something alike ..(VAR:
r1 = 'foo'
EXECIO 1 DISKW xxx (STEM R FINIS'
(etc.) ... :)
> There's good empirical evidence for the reasonable assumption that writing
> multiple records in a single EXECIO performs better than record-by-record.
> But John's objective was not performance but didactic transparency.
>
> And that stack performs better than stem, but that doesn't move me to use
> the stack when it's avoidable, nor to avoid subroutines when they are
> clearer than straight-line code that might be more efficient.
One thing to maybe think about is that leaving out "Procedure" in subroutines
may enhance performance (no setup of separate variable "pool"):
SLOW_SUBROUTINE: Procedure Expose foo
...
FAST_SUBROUTINE:
...
> And if one chooses multiple-record EXECIO, one must beware of REGION
> constraints, which are fatal, and of paging, which can vitiate any advantage
> of blocking EXECIO.
>
> I shirk "EXECIO 0 ddname (FINIS" and "FREE ddname" when I can rely
> on termination code to perform the operation and DDNAME or DCB
> exhaustion is not a concern. If the data set was allocated in JCL, then
> JCL can flush it and free it.
I usually always recommend when the amount of file data could be large to code
like this:
Reasonableamount = 5000
rcexecio = 0
Do While rcexecio = 0
'EXECIO' reasonableamount 'DISKR xxx (STEM R.'
Do j = 1 To r.0
...
End
End
'EXECIO 0 DISKR xxx (FINIS'
YMMV!
Best Regards,
Thomas Berg
___________________________________________________________________
Thomas Berg Specialist zOS/RQM/IT Delivery Swedbank AB (Publ)
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN