Shmuel Metz (Seymour J.) wrote:

In <500e6b77.2090...@bcs.org.uk>, on 07/24/2012
  at 10:31 AM, CM Poncelet <ponce...@bcs.org.uk> said:

OK. But I do not *have* to code "ISPEXEC CONTROL ERRORS RETURN". The rest is mostly "ISREDIT ..." apart from pure REXX instructions which do not need quotes around them.

Address ISREDIT does not in general require quotes either. The quotes
are only needed because you want constants with special characters.
Had you wanted, e.g.,

 Address ISREDIT F NEXT

then you wouldn't have needed quotes, assuming that you haven't
assigned values to F or NEXT.

Yes I know that. ADDRESS ISREDIT, on its own, is sufficient to cause all commands that follow it to be interpreted as ISREDIT ones (without quotes and without having to specify ADDRESS ISREDIT FIND NEXT etc. each time) - until another ADDRESS <whatever> is found. But I do not normally use ADDRESS except for IPCS: it is just as easy, and quicker, to put strings in quotes. So I put quotes around ISREDITs (when writing in REXX) and then pure REXX code without quotes.


So I assume that "ISPEXEC ..." is calling ISPEXEC directly, but that "ISREDIT ..." is then calling ISREDIT likewise directly

No; Address ISPEXEC is calling ISPECEC directly and Address ISREDIT
... is calling ISREDIT directly. A statement containing only an
expression is evaluated and the result passed to the current
environment.

That is what I said, except that I use quotes instead of ADDRESS.


But on the other hand, if REXX does an ADDRESS IPCS followed by an IPCS call - and then an ADDRESS ISREDIT followed by one or more ISREDIT calls - does that imply that IPCS is now calling ISREDIT, or is ISPEXEC still calling it?

By "IPCS call" and "ISREDIT call" do you mean expressions beginning
with IPCS or ISREDIT? If so, it's indirect. OTOH, if you mean
expressions recognized by IPCS or ISREDIT, then it's direct.

Address ISREDIT
ISREDIT foo            /* indirect */
foo                    /* direct   */

Yes, by IPCS call I mean expressions beginning with IPCS (unless ADDRESS IPCS is coded beforehand, when the expressions that follow it are then interpreted as IPCS ones - i.e. as 'direct' IPCS). Etc.


Meanwhile, REXX is a function-like sort of interpretative and simplified PL/I

Don't confuse REXX syntax with the syntax of commands that REXX is
passing to an environment. From a REXX perspective, what it is passing
to TSO, ISPEXEC, ISREDIT or any other environment is an arbitrary
character string.

I mean pure REXX syntax is a function-like interpretative and simplified form of PL/I - e.g., from memory, X= D2C(X2D(VAR)) is what I would call pure REXX. I am not referring to REXX invoking other environments - which requires either an ADDRESS (which I do not use) or quotes (which I do use).


But I have a feeling that this is 'barking up the wrong tree'.
Panels are associated with ISPF dialogs which, in turn, rely on the 'old' standards (which include Clist as well as panels).

Why do you believe that CLIST had any impact on the design of ISPF
panels?

That is not what I believe. I am pointing out that Clist and ISPF panels come from a same 'era' in which ampersands were used to denote variables - but without implying that one had a direct impact on the other. Two people can speak a same language without necessarily having any impact on each other - although it is more efficient to choose people who can speak the same language if they are to interact with each other.


So I guess there is a clash between the 'old' way of prefixing variables with &'s and the 'new' way of declaring them without &'s.

No; there's a clash between the way ISPF works and your preconceptions
about how it works. From an ISPF and CLIST perspective, REXX is just a
consumer of strings; how it interprets those string is beyond the
scope of the scripting language.

I have no preconceptions about how ISPF works. I do not dispute that REXX is just a consumer of strings. But from a CPU's perspective - ISPF, Clist and REXX are just 'producers of strings' (of machine code, ultimately), and how they build their strings or in what sequence they are then 'presented' is irrelevant. The CPU executes whatever is in its instruction cache. How the CPU interprets this machine code is beyond the scope of even the machine code itself, because the CPU is 'hard-wired' to 'interpret' microcode. Hence the machine code can be described as the 'old way' and Clist as the 'new way', or Clist as the 'old way' and REXX as the 'new way', or REXX as the 'old way' and mobile phone apps (whatever they are) as the 'new way' etc. ad nauseam. But at the 'atomic level', it is the microcode that makes things work.


but because they use different 'building blocks' that don't fit together.

Actually, REXX and ISPF fit together quite well, but you have to
understand both.

I do understand both. I mean different 'building blocks' not fitting together in a way similar to that of COBOL and Fortran, or assembler and Forth, not 'fitting' together. But everything 'fits' together at the machine code level if it hasn't done so 'higher up'. (BTW I have in the past called Fortran from COBOL, just in case you want to lecture me on that too.)

Meanwhile, I'm dropping out of this discussion topic.

Thanks for all your input and clarifications.

Cheers, Chris Poncelet



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to