Re: REXX question: if a string is printable
Hi Thank you very much , I'm using the routine bellow, to display MQ messages as text, and with c2x as hexa string Perfect , thank you again . On 1/19/2011 2:41 PM, Paul Gilmartin wrote: On Wed, 19 Jan 2011 04:15:39 -0600, Bruce Hewson wrote: Actually, this can be shortened to: Readable:Procedure to = to = to || to = to || to = to || to = to || ...(+| to = to || .!$*);¬ to = to || -.\,%_? to = to || ..:#@'= to = to || .abcdefghi.. to = to || .jklmnopqr.. to = to || ..stuvwxyz.. to = to || to = to || .ABCDEFGHI.. to = to || .JKLMNOPQR.. to = to || ./STUVWXYZ.. to = to || 0123456789.. Return Translate(Arg(1),to) FSVO printable. Brackets? Braces? Caret? Tilde? I couldn't live without most of those; I use them daily. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
Miklos, I use this function:- Readable:Procedure from = Do i = 0 to 255 from = from || X2c(D2x(i)) End to = to = to || to = to || to = to || to = to || ...(+| to = to || .!$*);¬ to = to || -.\,%_? to = to || ..:#@'= to = to || .abcdefghi.. to = to || .jklmnopqr.. to = to || ..stuvwxyz.. to = to || to = to || .ABCDEFGHI.. to = to || .JKLMNOPQR.. to = to || ./STUVWXYZ.. to = to || 0123456789.. Return Translate(Arg(1),to,from) e.g.Readable(Left(chunk_data,16)) of course you can customise the to values as you need. Regards Bruce Hewson -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
Actually, this can be shortened to: Readable:Procedure to = to = to || to = to || to = to || to = to || ...(+| to = to || .!$*);¬ to = to || -.\,%_? to = to || ..:#@'= to = to || .abcdefghi.. to = to || .jklmnopqr.. to = to || ..stuvwxyz.. to = to || to = to || .ABCDEFGHI.. to = to || .JKLMNOPQR.. to = to || ./STUVWXYZ.. to = to || 0123456789.. Return Translate(Arg(1),to) On Wed, 19 Jan 2011 03:58:32 -0600, Bruce Hewson bruce_hew...@hotmail.com wrote: Miklos, I use this function:- Readable:Procedure from = Do i = 0 to 255 from = from || X2c(D2x(i)) End to = to = to || to = to || to = to || to = to || ...(+| to = to || .!$*);¬ to = to || -.\,%_? to = to || ..:#@'= to = to || .abcdefghi.. to = to || .jklmnopqr.. to = to || ..stuvwxyz.. to = to || to = to || .ABCDEFGHI.. to = to || .JKLMNOPQR.. to = to || ./STUVWXYZ.. to = to || 0123456789.. Return Translate(Arg(1),to,from) e.g.Readable(Left(chunk_data,16)) of course you can customise the to values as you need. Regards Bruce Hewson -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
On Wed, 19 Jan 2011 04:15:39 -0600, Bruce Hewson wrote: Actually, this can be shortened to: Readable:Procedure to = to = to || to = to || to = to || to = to || ...(+| to = to || .!$*);¬ to = to || -.\,%_? to = to || ..:#@'= to = to || .abcdefghi.. to = to || .jklmnopqr.. to = to || ..stuvwxyz.. to = to || to = to || .ABCDEFGHI.. to = to || .JKLMNOPQR.. to = to || ./STUVWXYZ.. to = to || 0123456789.. Return Translate(Arg(1),to) FSVO printable. Brackets? Braces? Caret? Tilde? I couldn't live without most of those; I use them daily. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
Paul Gilmartin wrote: FSVO printable. Brackets? Braces? Caret? Tilde? I couldn't live without most of those; I use them daily. Thanks for noting this. I tried this one to see what I get... /* REXX */ DO I = 0 TO 15 LYN = '' /* Two Single Quotes */ DO J = 0 TO 15 X = I * 16 + J LYN = LYN || D2C(X) END SAY I LYN END EXIT 0 Not everything is SAYed here properly... :-( 0 1 2 3 4 ¢.(+| 5 !$*);¬ 6 -/¦,%_? 7 `:#@'= 8 abcdefghi 9 jklmnopqr 10 ~stuvwxyz Ý 11 ¨ 12 {ABCDEFGHI ö ó 13 }JKLMNOPQR 14 \ STUVWXYZ Ö 15 0123456789³ Back to that 'printable' question... Perhaps I missed something like everyone. Groete / Greetings Elardus Engelbrecht -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
Put my REXX program (in previous post) in a batch job and type SE (not S) next to the job output in SDSF, and you get this nice output. READY EXEC '...(TEL)' 0 1 2 3 4 âäàáãåçñ¢.(+| 5 éêëèíîïìß!$*);¬ 6 -/ÂÄÀÁÃÅÇѦ,%_? 7 øÉÊËÈÍÎÏÌ`:#@'= 8 Øabcdefghi«»ðýþ± 9 °jklmnopqrªºæ¸Æ¤ 10 µ~stuvwxyz¡¿ÐÝÞ® 11 ^£¥·©§¶¼½¾[]¯¨´× 12 {ABCDEFGHIôöòóõ 13 }JKLMNOPQR¹ûüùúÿ 14 \÷STUVWXYZ²ÔÖÒÓÕ 15 0123456789³ÛÜÙÚ READY END Much better ... Groete / Greetings Elardus Engelbrecht -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
huh, never had that issue... maybe a spf macro (not my area of expertise) using edit command: f p'.' or c p'.' ' ' all is there only 1 character or multiple characters that your print function can't handle? don't have the rexx manual handy, but there are hex conversion functions the could be used to translate and then see if results are dissimilar. or maybe the INDEX/POS or TRANSLATE function searching for x' value? its a holiday here in the US, celebrating civil rights, equitable justice and Christian values today. Will check the manual myself tomorrow. --- On Mon, 1/17/11, Miklos Szigetvari miklos.szigetv...@isis-papyrus.com wrote: From: Miklos Szigetvari miklos.szigetv...@isis-papyrus.com Subject: REXX question: if a string is printable To: IBM-MAIN@bama.ua.edu Date: Monday, January 17, 2011, 6:09 AM Hi Any REXX function to decide if a string contains only printable characters? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
On Mon, 17 Jan 2011 12:09:46 +0100 Miklos Szigetvari miklos.szigetv...@isis-papyrus.com wrote: :Any REXX function to decide if a string contains only printable characters? Define printable characters. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
Miklos Szigetvari wrote: :Any REXX function to decide if a string contains only printable characters? Look at functions DATATYPE and VERIFY and then come back to Binyamin's question: Define printable characters. Perhaps, you could place a list of 'printable characters' in 'reference' and use VERIFY function to check your string against the reference. Groete / Greetings Elardus Engelbrecht -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
On Mon, 17 Jan 2011 12:09:46 +0100, Miklos Szigetvari miklos.szigetv...@isis-papyrus.com wrote: Hi Any REXX function to decide if a string contains only printable characters? I'm sure there are different ways. Here is what I do in my IPLINFO exec for displaying subsystem names which often have non-display characters (I replace them with a period like ISPF browse does by default): Call XLATE_NONDISP SSCTSNAM /* translate non display chars */ SSCTSNAM = RESULT /* result from XLATE_NONDISP */ XLATE_NONDISP: /* translate non-display characters to a .*/ Arg XLATEPRM XLATELEN = Length(XLATEPRM) /* length of parm passed to routine */ Do I = 1 to XLATELEN /* check each byte for */ If (Substr(XLATEPRM,I,1) '00'x ,/* non-display characters */ Substr(XLATEPRM,I,1) '40'x ) | ,/* and replace each*/ Substr(XLATEPRM,I,1) = 'FF'x then , /* character that */ XLATEPRM = OVERLAY('.',XLATEPRM,I)/* is non-displayable */ End /* with a period (.) */ Return XLATEPRM -- Mark Zelden - Zelden Consulting Services - z/OS, OS/390 and MVS mailto:mzel...@flash.net Mark's MVS Utilities: http://home.flash.net/~mzelden/mvsutil.html Systems Programming expert at http://expertanswercenter.techtarget.com/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question: if a string is printable
Hi Thank you very much On 1/17/2011 2:30 PM, Mark Zelden wrote: On Mon, 17 Jan 2011 12:09:46 +0100, Miklos Szigetvari miklos.szigetv...@isis-papyrus.com wrote: Hi Any REXX function to decide if a string contains only printable characters? I'm sure there are different ways. Here is what I do in my IPLINFO exec for displaying subsystem names which often have non-display characters (I replace them with a period like ISPF browse does by default): Call XLATE_NONDISP SSCTSNAM /* translate non display chars */ SSCTSNAM = RESULT /* result from XLATE_NONDISP */ XLATE_NONDISP: /* translate non-display characters to a .*/ Arg XLATEPRM XLATELEN = Length(XLATEPRM) /* length of parm passed to routine */ Do I = 1 to XLATELEN /* check each byte for */ If (Substr(XLATEPRM,I,1) '00'x ,/* non-display characters */ Substr(XLATEPRM,I,1) '40'x ) | ,/* and replace each*/ Substr(XLATEPRM,I,1) = 'FF'x then , /* character that */ XLATEPRM = OVERLAY('.',XLATEPRM,I)/* is non-displayable */ End /* with a period (.) */ Return XLATEPRM -- Mark Zelden - Zelden Consulting Services - z/OS, OS/390 and MVS mailto:mzel...@flash.net Mark's MVS Utilities: http://home.flash.net/~mzelden/mvsutil.html Systems Programming expert at http://expertanswercenter.techtarget.com/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
As long as you are on z/OS 1.12 you have direct access to the SYSLOG. -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of McKown, John Sent: Wednesday, December 15, 2010 2:37 PM To: IBM-MAIN@bama.ua.edu Subject: Re: REXX Question Which one? z/OS SYSLOG, OPERLOG, or UNIX SYSLOG Daemon? UNIX SYSLOG Daemon usually goes to one or more files in /var/log depending on the syslog.conf file . z/OS SYSLOG or OPERLOG, I'd use the new address sdsf functions for REXX. http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ISF4CSA0/13.0 -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of gsg Sent: Wednesday, December 15, 2010 1:11 PM To: IBM-MAIN@bama.ua.edu Subject: REXX Question Is there a way for a Rexx routine to collect information from the active system log? If so, do you have any code you can share? Thanks in advance. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On 12/15/2010 11:11 AM, gsg wrote: Is there a way for a Rexx routine to collect information from the active system log? If so, do you have any code you can share? (E)JES provides SYSLOG and OPERLOG data to REXX programs. I assume most if not all of the other SPOOL management/access products do as well. Check the doc for whatever your using and see if it provides that capability. Even if there is no direct support for REXX, you might be able to CALL it and get it to copy the information you need into a data set that you then read with EXECIO. -- Edward E Jaffe Phoenix Software International, Inc 831 Parkview Drive North El Segundo, CA 90245 310-338-0400 x318 edja...@phoenixsoftware.com http://www.phoenixsoftware.com/ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
Which one? z/OS SYSLOG, OPERLOG, or UNIX SYSLOG Daemon? UNIX SYSLOG Daemon usually goes to one or more files in /var/log depending on the syslog.conf file . z/OS SYSLOG or OPERLOG, I'd use the new address sdsf functions for REXX. http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ISF4CSA0/13.0 -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of gsg Sent: Wednesday, December 15, 2010 1:11 PM To: IBM-MAIN@bama.ua.edu Subject: REXX Question Is there a way for a Rexx routine to collect information from the active system log? If so, do you have any code you can share? Thanks in advance. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In 4ce2016f.9010...@acm.org, on 11/15/2010 at 09:58 PM, Joel C. Ewing jcew...@acm.org said: Not really. I am talking about algorithmic concepts, The mapping of multiple indexes into a single index is not an algorithmic concept, it is a peculiarity of specific languages. You are unnecessarily restricting the concept of a symbol table mapping function. I'm using the standard CS definition, which does not include any concept of range, only a defined/not defined dichotomy. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In of4cb20912.bd256fba-on802577d4.00432020-802577d4.00438...@uk.ibm.com, on 11/07/2010 at 12:17 PM, Martin Packer martin_pac...@uk.ibm.com said: ... this really shows off the grottiness of Classic REXX as a language... No, it just shows that a hammer is a poor screwdriver. Most of this example would be MUCH better if implemented in Object REXX. There we agree. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In 1289080727.11210.36.ca...@mckown5.johnmckown.net, on 11/06/2010 at 04:58 PM, John McKown joa...@swbell.net said: I think of a REXX stem variable the same way that I do an Perl hash. Or more like a value associated with a key where the key is an arbitrary value. And a stem.var1.var2 is like a hash of a hash in Perl. Not really. In Perl I can write $foo{$bar}=%baz; there's no equivalent in Rexx, although the is in Object Oriented Rexx (OOREX). -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In listserv%201011070943066366.0...@bama.ua.edu, on 11/07/2010 at 09:43 AM, Paul Gilmartin paulgboul...@aim.com said: Could such a port be naturally compatible with all the existing host command environments (TSO, ISPEXEC, ISREDIT, MVS, LINKMVS, SYSCALL, SDSF, etc.), or would they need to be recoded entirely, or at least a lot of glue code written? Such a port would run existing Rexx code in those environments. The API might be different, requiring coding changes to, e.g., ISPF, SDSF, TSO, but not to the Rexx code. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In snt113-w62b78c8d3ab60fe7f3293bc6...@phx.gbl, on 11/06/2010 at 07:06 PM, john gilmore john_w_gilm...@msn.com said: All subscripting schemes are devices for viewing a one-dimensional sequence of storage locations as a multidimensional one. No, although that is how it is defined in FORTRAN. On the B5000, Burroughs implemented multi-dimensional arrays as arrays of array descriptors. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In listserv%201011052218485443.0...@bama.ua.edu, on 11/05/2010 at 10:18 PM, Paul Gilmartin paulgboul...@aim.com said: First, always, always, always start every EXEC with signal on novalue Chacun à son goût. I understand the argument, but consider the usage too convenient to discard. OTOH, it's probably a good practice for neophytes to use SIGNAL ON NOVALUE as training wheels. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In 009066fa266f9b428db827deaa3c0e2701d7a...@exchangevs-04.ad.wsu.edu, on 11/05/2010 at 04:57 PM, Gibney, Dave gib...@wsu.edu said: And, I can't seem to use a stem value (values of A.x) to index a stem. Not in Rexx, although you can in object oriented REXX (OOREXX). -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In 819636076-1288989519-cardhu_decombobulator_blackberry.rim.net-7272712...@bda506.bisx.prod.on.blackberry, on 11/05/2010 at 08:38 PM, Ted MacNEIL eamacn...@yahoo.ca said: While I used to have that bias, It's not a bias. I have since found valid uses for it. That does not contradict the warning to avoid it. Gerhard did *not* say that it had no uses or that you should never use it. This sounds Knee-Jerk. PKB. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In 009066fa266f9b428db827deaa3c0e2701d7a...@exchangevs-04.ad.wsu.edu, on 11/05/2010 at 11:12 AM, Gibney, Dave gib...@wsu.edu said: Is it possible to dynamically define Rexx variables? Of course. Use the value() function. Don't use interpret; it will just make the code harder to follow. It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy X='first' y='second' call value x|magic|y,'fred' Say value(x|magic|yy) What are you trying to do that wouldn't be easier with simple compound variables? X='first' y='second' foo.x.y='fred' Say foo.x.y -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
In 4cd5c2dc.7070...@acm.org, on 11/06/2010 at 04:04 PM, Joel C. Ewing jcew...@acm.org said: I believe that REXX only directly supports one of those two mechanisms, namely the symbol table lookup and not true indexed arrays. Correct, although Object Oriented Rexx (OOREXX) has true arrays. The distinction made is rather one of whether the original variable domains consist of consecutive integer values or not. There's also the issue of trapping subscripts that are out of range. But, functionally, indexed arrays are just a special subset of symbol table lookup: Not in a language that includes bounds checking. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On 11/15/2010 12:05 PM, Shmuel Metz (Seymour J.) wrote: In4cd5c2dc.7070...@acm.org, on 11/06/2010 at 04:04 PM, Joel C. Ewingjcew...@acm.org said: I believe that REXX only directly supports one of those two mechanisms, namely the symbol table lookup and not true indexed arrays. Correct, although Object Oriented Rexx (OOREXX) has true arrays. The distinction made is rather one of whether the original variable domains consist of consecutive integer values or not. There's also the issue of trapping subscripts that are out of range. But, functionally, indexed arrays are just a special subset of symbol table lookup: Not in a language that includes bounds checking. Not really. I am talking about algorithmic concepts, not about specific programming language implementations of those concepts. You are unnecessarily restricting the concept of a symbol table mapping function. There is no reason why a symbol table mapping function that computes a table offset as a linear function of integer indices could not and should not also detect and trap index values that are outside the domain of the function. Just because some particular programming language may or may not directly support this does not preclude it from being part of the algorithmic concept. Implementation just takes more effort if this feature is required and direct language support is lacking. -- Joel C. Ewing, Fort Smith, ARjcew...@acm.org -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
I have a hard time seeing that a non-programmer would find stem variables easy to understand, but maybe that's just me. When I was learning REXX I wish someone would have told me to just think of them as keyed arrays or associative arrays, or even hashmaps, though I hate that term since to me a hash is an implementation detail and not a language feature. Frank On 11/7/2010 at 8:40 AM, in message b870629719727b4ba82a6c06a31c29123119dc4...@hqmailsvr01.voltage.com, Phil Smith p...@voltage.com wrote: On Sun, Nov 7, 2010 at 7:17 AM, Martin Packer martin_pac...@uk.ibm.com wrote: Not to dismiss the sample at all but... ... this really shows off the grottiness of Classic REXX as a language... I have incantations just like these (and knowing enough of object-oriented languages and Object REXX) I wonder why we haven't ported Open Object Rexx to z/OS yet... Most of this example would be MUCH better if implemented in Object REXX. For example alloc_member and alloc_dsname stems could be attributes/properties/members of a single object. (And increment and decrement operators wouldn't be a bad idea either - though in THIS case some form of collection class would probably be better.) You're misinterpreting (sic) the goals of Rexx, and calling it grotty in the wrong context. It's like complaining about the cargo capacity of your motorcycle, or the acceleration of your semi (truck). Classic Rexx was designed to be easy to use, even for end-users. The fact that it's gone way beyond that and is used for full-fledge applications is a tribute to its elegance and power. Hardly grottiness. If you showed the average non-programmer Object Rexx, they wouldn't get it and wouldn't use it. And loading it up with operators like increment and decrement not only won't help, but will hurt. -- ...phsiii Phil Smith III -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
I have been using interpret for this type of processing for a lot of years. Maybe it's just a bad habit, but it's always worked for me. I will have to experiment with some of the other suggestions. I certainly did not want to start a religious war. Pax, Jon -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gerhard Postpischil Sent: Friday, November 05, 2010 3:03 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On 11/5/2010 2:24 PM, Veilleux, Jon L wrote: INTERPRET TEST='FRED' INTERPRET 'SAY TEST' At the risk of starting another flame war, I would strongly discourage use of INTERPRET. While it may work correctly in some instances, it leads to problems in general, and is easily replaced by value(). I first ran across this problem while working at an ISV, and had to maintain code designed to manipulate JCL. The author used an INTERPRET that self-destructed the first time it encountered a JCL comment. Gerhard Postpischil Bradford, VT -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
I have found this form quite useful:- alloc_member_cnt = alloc_member_cnt + 1 alloc_member.alloc_member_cnt = my_member alloc_member.my_member = alloc_member_cnt additional information can be retained in the array:- alloc_dsname.alloc_member_cnt = my_dsn alloc_dsname.my_dsn = alloc_member_cnt allowing you multiple ways to process the data. If Strip(alloc_member.new_member) Then Do Say member new_member found at entry alloc_member.new_member End Else Do alloc_member_cnt = alloc_member_cnt + 1 alloc_member.alloc_member_cnt = new_member alloc_member.new_member = alloc_member_cnt End Regards Bruce Hewson -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
Not to dismiss the sample at all but... ... this really shows off the grottiness of Classic REXX as a language... I have incantations just like these (and knowing enough of object-oriented languages and Object REXX) I wonder why we haven't ported Open Object Rexx to z/OS yet... Most of this example would be MUCH better if implemented in Object REXX. For example alloc_member and alloc_dsname stems could be attributes/properties/members of a single object. (And increment and decrement operators wouldn't be a bad idea either - though in THIS case some form of collection class would probably be better.) Martin Martin Packer, Mainframe Performance Consultant, zChampion Worldwide Banking Center of Excellence, IBM +44-7802-245-584 email: martin_pac...@uk.ibm.com Twitter / Facebook IDs: MartinPacker From: Bruce Hewson bruce_hew...@hotmail.com To: IBM-MAIN@bama.ua.edu Date: 07/11/2010 11:27 Subject: Re: Rexx question - Dynamic generation of variables? Sent by: IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu I have found this form quite useful:- alloc_member_cnt = alloc_member_cnt + 1 alloc_member.alloc_member_cnt = my_member alloc_member.my_member = alloc_member_cnt additional information can be retained in the array:- alloc_dsname.alloc_member_cnt = my_dsn alloc_dsname.my_dsn = alloc_member_cnt allowing you multiple ways to process the data. If Strip(alloc_member.new_member) Then Do Say member new_member found at entry alloc_member.new_member End Else Do alloc_member_cnt = alloc_member_cnt + 1 alloc_member.alloc_member_cnt = new_member alloc_member.new_member = alloc_member_cnt End Regards Bruce Hewson -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sun, 2010-11-07 at 12:17 +, Martin Packer wrote: Not to dismiss the sample at all but... ... this really shows off the grottiness of Classic REXX as a language... I have incantations just like these (and knowing enough of object-oriented languages and Object REXX) I wonder why we haven't ported Open Object Rexx to z/OS yet... Most of this example would be MUCH better if implemented in Object REXX. For example alloc_member and alloc_dsname stems could be attributes/properties/members of a single object. (And increment and decrement operators wouldn't be a bad idea either - though in THIS case some form of collection class would probably be better.) Martin Martin Packer, I agree that Object REXX on z/OS, especially in the UNIX arena, would be wonderful. Once again, I am frustrated by things beyond my control. I would love to look at porting it. The source is available. What is not available, to me, is a real C compiler. GCC is a real C compiler. But I just can't get the GCCMVS to work for me. Guess I'm just stupid. I failed compiler theory in college and it's still haunting me, 35 years later. Wish I could afford Dignus C ASM or Tachyon Workbench (ASM only). I just can't. 'Nuff said or I'd say too much. -- John McKown Maranatha! -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sun, Nov 7, 2010 at 7:17 AM, Martin Packer martin_pac...@uk.ibm.com wrote: Not to dismiss the sample at all but... ... this really shows off the grottiness of Classic REXX as a language... I have incantations just like these (and knowing enough of object-oriented languages and Object REXX) I wonder why we haven't ported Open Object Rexx to z/OS yet... Most of this example would be MUCH better if implemented in Object REXX. For example alloc_member and alloc_dsname stems could be attributes/properties/members of a single object. (And increment and decrement operators wouldn't be a bad idea either - though in THIS case some form of collection class would probably be better.) You're misinterpreting (sic) the goals of Rexx, and calling it grotty in the wrong context. It's like complaining about the cargo capacity of your motorcycle, or the acceleration of your semi (truck). Classic Rexx was designed to be easy to use, even for end-users. The fact that it's gone way beyond that and is used for full-fledge applications is a tribute to its elegance and power. Hardly grottiness. If you showed the average non-programmer Object Rexx, they wouldn't get it and wouldn't use it. And loading it up with operators like increment and decrement not only won't help, but will hurt. -- ...phsiii Phil Smith III -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sun, 7 Nov 2010 07:37:01 -0600, John McKown wrote: I agree that Object REXX on z/OS, especially in the UNIX arena, would be wonderful. Once again, I am frustrated by things beyond my control. I Could such a port be naturally compatible with all the existing host command environments (TSO, ISPEXEC, ISREDIT, MVS, LINKMVS, SYSCALL, SDSF, etc.), or would they need to be recoded entirely, or at least a lot of glue code written? Could Object REXX call existing functions in classic Rexx and vice-versa? What about Object System Rexx? would love to look at porting it. The source is available. What is not available, to me, is a real C compiler. GCC is a real C compiler. But I just can't get the GCCMVS to work for me. Guess I'm just stupid. I failed compiler theory in college and it's still haunting me, 35 years later. That's not theory; that's practice. This thread would better be on TSO-REXX, except that John G. wouldn't be able to contribute. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sun, Nov 7, 2010 at 10:54 AM, john gilmore john_w_gilm...@msn.com wrote: Move this discussion to TSO-REXX or elsewhere as you see fit. I am an advocate of proper fora, and I shall not feel excluded from a discussion I am unaware of. Jawohl, Herr Oberst. Actually, no. This isn't TSO-REXX specific; it's Rexx-specific. And Rexx has been the scripting language on all major IBM platforms for 20+ years, including mainframes. So this is hardly the improper forum. -- zMan -- I've got a mainframe and I'm not afraid to use it -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On 11/05/2010 07:24 PM, Gibney, Dave wrote: -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Phil Smith Sent: Friday, November 05, 2010 5:09 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? snip Stems are not arrays. Not now, not ever. But in some ways they're more powerful, as they let you do associative memory. That's why I decided on Rexx, I want what is in effect a 3 dimensional associative memory space. Dsname X volser X Lpar. -- ...phsiii Phil Smith III p...@voltage.com Voltage Security, Inc. www.voltage.com ... Since the stem index is an arbitrary variable value, whenever I have needed a table lookup dependent on multiple variable values I have usually been able to use a construct like table. = 'some default value' ... index = dsname # volser # lpar table.index = 'some value' and then use a similar setting of index before using table.index to lookup a value in the table. This technique in effect maps any number of dimensions to a single dimension. -- Joel C. Ewing, Fort Smith, ARjcew...@acm.org -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sat, 6 Nov 2010 08:33:02 -0500, Joel C. Ewing wrote: Since the stem index is an arbitrary variable value, whenever I have needed a table lookup dependent on multiple variable values I have usually been able to use a construct like table. = 'some default value' ... index = dsname # volser # lpar table.index = 'some value' and then use a similar setting of index before using table.index to lookup a value in the table. This technique in effect maps any number of dimensions to a single dimension. Of course: table.dsname.volser.lpar = 'some value' is simpler. I can imagine only two reasons for manufacturing the index. o The '.' character may appear in dsnames, allowing ambiguity. But it's still safe if neither of the other two tail components can contain '.'. And since '#', like '.' can appear in dsnames, you gain nothing by using it as a delimiter. Best use a delimiter that's prohibited in all tail components. Even here there's a hazard. JCL allows (or allowed a couple decades ago) any code point in a volser surrounded by apostrophes. In a POC back then, we discovered that a volser starting with x'FF' was taken as a special form where the remaining five bytes contained a memory address. Strange program checks in label processing. o Generating the tail separately allows NOVALUE signals, detecting possible undefined variables. Explicit use of an undefined symbol in a compound tail does not signal NOVALUE. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
Joel Ewing wrote: | This technique in effect maps any number of dimensions to a single dimension. and there is an important functional sense in which his statement is correct; but 1) it confounds two very different mechanisms, 2) it is not a scheme specific to REXX, and 3) these two mechanisms have their own distinct, non-overlapping uses. Let us look first at subscripting, specifically at a one-dimensional, eight-element single-byte array having what I shall call the identifier x, |0|1|2|3|4|5|6|7| Suppose now that we wish to access element i, 0 = i = 7 of x. If the address of this array is addr(x) then the address of its i-th element is just addr(x) + i. If now we consider another, two-dimensional, 2 x 4, eight-element single-byte array having the identifier y, |0,0|0,1|0,2|0,3|1,0|1,1|1,2|1,3| the address of its element having the subscripts i, j is just addr(y) + j + (i - 1)4 Here eight bytes of storage can be viewed as a one-dimensional array, as a two-dimensional one, or, on occasion, as both. The location of an element of a one-, two-, or n-dimensional array is determined arithmetically. (For simplicity I have made these elements single-byte ones that are stored in zero-origin, row-major sequence. Some arrays are one-origin ones; most have elements more than a single byte in length, and some FORTRAN dialects still store arrays in column-major order; but these differences are trivial.) What is important is that subscripting uses numeric function. Its argumet is a set of one or more subscripts and its value is an address. All subscripting schemes are devices for viewing a one-dimensional sequence of storage locations as a multidimensional one. Historically, identifiers or variable names were specified at program-writing time, but they can also be created at program-execution time. One needs a table of identifiers--It is/was often called a symbol table--and a convention for specifying/identifying the value of an identifier. In the IBM HLASM macro language, for example, ordinary set symbols have names like counter, switch, or abort that are given to them at program-writing time. They can also be created later, and these created set symbols are distinguished from ordinary set symbols using an extra set of parentheses. Thus |name0setc'gubbins' --set-symbol identifier |gblc(name0) --created set symbol Encoumntering these statements, the HLASM macro processor loks in its symbol table for the identifier 'gubbins'. If it finds that identifier, its value is used. If not a created global set symbol is added to the appropriate symbol table. We can do much more interesting things too. Consider |name1setc 'name0'.'sex'.'age'| gblc (name1) where sex is always either 'M' or 'F' and age is always one of '000', '001', '002', . . . , '999'. If then on some occasion name1 has the value 'gubbinsM024' we ca view the statement |name1 seta (name1)+1 as incrementing the count of 24-year-old males in some population. In practical terms this is much is scheme is very similar to one that uses a 2 x 1000 array, but the mechanism used to implement it is very different: ituses not subscripting but a large number of scalar identifiers that have an internal, decodable structure like that of a part number, insdurance-policy number or savings-account number, here some or all of gubbinsF000, gubbinsF001, . . . , gubbinsF999, gubbinsM000, gubbinsM001, . . . , gubbinsM999. Identifier-construction schemes like these are slower, much slower, than arithmetic subscripting; but if a table is sparsely populated, i.e., if only a few of the identifiers that a particular sceme makes possible are in fact used, they can be very useful. They have another important use in both the HLASM and REXX. They can be used to make data 'reentrant' in a Pickwickian but important sense. In certain HLASM table-generation macros, for example, I accumulate information in sets of global set symbol of the form |valueid setc 'macname'.'tabname'.'whatever' | gblc (valueid)(1) and the use of this scheme permits two, three, or n different tables of the same sort but having different tabname= values to be assembled concurrently: the data for table alpha are distinguishable and distinguished from the data for table delta because 'alpha' and 'delta' appear as positional substrings in the different, non-overlapping identifiers of their data.Table-generation macros that use this scheme are reentrant in much the same sense in which procedures trhat use different blocks of automatic storage are reentrant. John Gilmore Ashland, MA 01721-1817 USA -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to
Re: Rexx question - Dynamic generation of variables?
I believe that REXX only directly supports one of those two mechanisms, namely the symbol table lookup and not true indexed arrays. Although one may use in a REXX program symbol.ix, where ix in that particular program is always a positive numeric integer, I would think this only gives the illusion of an indexed array and not the reality, since an interpreter like REXX cannot assume that later stem arguments will continue to be numeric, and also symbol.1 is distinct from symbol.001. The distinction that John draws is not really related to the number of dimensions involved or to the concept that a multi-variate function may be re-conceptualized as a single-variate function whose domain is a set involving a product of the original domains. The distinction made is rather one of whether the original variable domains consist of consecutive integer values or not. If so, the process of locating and retrieving values can be done much more cheaply by offset calculation. Indexed lookup is definitely more efficient, and simpler techniques can be used to implement it -- and this may affect the contexts in which each approach is best used or even practical. But, functionally, indexed arrays are just a special subset of symbol table lookup: where the symbol values (consecutive integers) are so predictable they need not be stored, the hashing function to locate an entry is the simple offset calculation previously indicated, and collisions with conflicting symbols are known to be impossible. Joel C Ewing On 11/06/2010 02:06 PM, john gilmore wrote: Joel Ewing wrote: | This technique in effect maps any number of dimensions to a single dimension. and there is an important functional sense in which his statement is correct; but 1) it confounds two very different mechanisms, 2) it is not a scheme specific to REXX, and 3) these two mechanisms have their own distinct, non-overlapping uses. Let us look first at subscripting, specifically at a one-dimensional, eight-element single-byte array having what I shall call the identifier x, |0|1|2|3|4|5|6|7| Suppose now that we wish to access element i, 0= i= 7 of x. If the address of this array is addr(x) then the address of its i-th element is just addr(x) + i. If now we consider another, two-dimensional, 2 x 4, eight-element single-byte array having the identifier y, |0,0|0,1|0,2|0,3|1,0|1,1|1,2|1,3| the address of its element having the subscripts i, j is just addr(y) + j + (i - 1)4 Here eight bytes of storage can be viewed as a one-dimensional array, as a two-dimensional one, or, on occasion, as both. The location of an element of a one-, two-, or n-dimensional array is determined arithmetically. (For simplicity I have made these elements single-byte ones that are stored in zero-origin, row-major sequence. Some arrays are one-origin ones; most have elements more than a single byte in length, and some FORTRAN dialects still store arrays in column-major order; but these differences are trivial.) What is important is that subscripting uses numeric function. Its argumet is a set of one or more subscripts and its value is an address. All subscripting schemes are devices for viewing a one-dimensional sequence of storage locations as a multidimensional one. Historically, identifiers or variable names were specified at program-writing time, but they can also be created at program-execution time. One needs a table of identifiers--It is/was often called a symbol table--and a convention for specifying/identifying the value of an identifier. In the IBM HLASM macro language, for example, ordinary set symbols have names like counter,switch, orabort that are given to them at program-writing time. They can also be created later, and these created set symbols are distinguished from ordinary set symbols using an extra set of parentheses. Thus |name0setc'gubbins' --set-symbol identifier |gblc(name0) --created set symbol Encoumntering these statements, the HLASM macro processor loks in its symbol table for the identifier 'gubbins'. If it finds that identifier, its value is used. If not a created global set symbol is added to the appropriate symbol table. We can do much more interesting things too. Consider |name1setc 'name0'.'sex'.'age'| gblc(name1) wheresex is always either 'M' or 'F' andage is always one of '000', '001', '002', . . . , '999'. If then on some occasionname1 has the value 'gubbinsM024' we ca view the statement |name1 seta(name1)+1 as incrementing the count of 24-year-old males in some population. In practical terms this is much is scheme is very similar to one that uses a 2 x 1000 array, but the mechanism used to implement it is very different: ituses not subscripting but a large number of scalar identifiers that have an internal, decodable structure like that of a part number, insdurance-policy
Re: Rexx question - Dynamic generation of variables?
On Sat, 2010-11-06 at 16:04 -0500, Joel C. Ewing wrote: I believe that REXX only directly supports one of those two mechanisms, namely the symbol table lookup and not true indexed arrays. Although one may use in a REXX program symbol.ix, where ix in that particular program is always a positive numeric integer, I would think this only gives the illusion of an indexed array and not the reality, since an interpreter like REXX cannot assume that later stem arguments will continue to be numeric, and also symbol.1 is distinct from symbol.001. The distinction that John draws is not really related to the number of dimensions involved or to the concept that a multi-variate function may be re-conceptualized as a single-variate function whose domain is a set involving a product of the original domains. The distinction made is rather one of whether the original variable domains consist of consecutive integer values or not. If so, the process of locating and retrieving values can be done much more cheaply by offset calculation. Indexed lookup is definitely more efficient, and simpler techniques can be used to implement it -- and this may affect the contexts in which each approach is best used or even practical. But, functionally, indexed arrays are just a special subset of symbol table lookup: where the symbol values (consecutive integers) are so predictable they need not be stored, the hashing function to locate an entry is the simple offset calculation previously indicated, and collisions with conflicting symbols are known to be impossible. Joel C Ewing I think of a REXX stem variable the same way that I do an Perl hash. Or more like a value associated with a key where the key is an arbitrary value. And a stem.var1.var2 is like a hash of a hash in Perl. -- John McKown Maranatha! -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sat, 6 Nov 2010 16:58:47 -0500, John McKown wrote: I think of a REXX stem variable the same way that I do an Perl hash. Or more like a value associated with a key where the key is an arbitrary value. And a stem.var1.var2 is like a hash of a hash in Perl. If I understand what you mean by hash of a hash, I believe not. As I posted yesterday: Beware the pitfall. If: W = 'a.b' X = 'c' Y = 'a' Z = 'b.c' then Stem.W.X and Stem.Y.Z refer to the same member of the compound, regardless that none of the subscripts are equal. Multiple subscripts are flattened, in a possibly degenerate manner. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Sat, 2010-11-06 at 18:26 -0500, Paul Gilmartin wrote: On Sat, 6 Nov 2010 16:58:47 -0500, John McKown wrote: I think of a REXX stem variable the same way that I do an Perl hash. Or more like a value associated with a key where the key is an arbitrary value. And a stem.var1.var2 is like a hash of a hash in Perl. If I understand what you mean by hash of a hash, I believe not. As I posted yesterday: Beware the pitfall. If: W = 'a.b' X = 'c' Y = 'a' Z = 'b.c' then Stem.W.X and Stem.Y.Z refer to the same member of the compound, regardless that none of the subscripts are equal. Multiple subscripts are flattened, in a possibly degenerate manner. -- gil -- Ouch. I didn't realize that. I must have missed some of the previous posts. -- John McKown Maranatha! -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Fri, 5 Nov 2010 11:12:44 -0700, Gibney, Dave gib...@wsu.edu wrote: I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Are you looking for something different from REXX's standard compound symbols? X='first' y='second' x.y = 'fred' say x.y http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ikj4a390/2.4.3?SHELF=EZ2ZBK0KDT=20100603150559 -- Walt Farrell IBM STSM, z/OS Security Design -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
Try this...although it is not great... X='FIRST' Y='SECOND' TEST= X'MAGIC'Y INTERPRET TEST='FRED' INTERPRET 'SAY TEST' -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gibney, Dave Sent: Friday, November 05, 2010 2:13 PM To: IBM-MAIN@bama.ua.edu Subject: Rexx question - Dynamic generation of variables? I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Dave Gibney Information Technology Services Washington State University -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
-Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Walt Farrell Sent: Friday, November 05, 2010 11:18 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, 5 Nov 2010 11:12:44 -0700, Gibney, Dave gib...@wsu.edu wrote: I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Are you looking for something different from REXX's standard compound symbols? X='first' y='second' x.y = 'fred' say x.y Yes, in the end, and I should have mentioned it, I want to dynamically define the stem root. I want to able to set dsnamevolser.catlg = 'YES' and dsnamevolser.poe - 'yes' http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/ikj4a390/2.4.3?SHELF=EZ2ZBK0KDT=20100603150559 -- Walt Farrell IBM STSM, z/OS Security Design -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
Oops had my ' in the wrong place TRACE ?R X='FIRST' Y='SECOND' TEST= X'MAGIC'Y INTERPRET TEST='FRED' INTERPRET 'SAY ' TEST this will show as 'say FIRSTMAGICSECOND' and the result will be FRED -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Veilleux, Jon L Sent: Friday, November 05, 2010 2:25 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? Try this...although it is not great... X='FIRST' Y='SECOND' TEST= X'MAGIC'Y INTERPRET TEST='FRED' INTERPRET 'SAY TEST' -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gibney, Dave Sent: Friday, November 05, 2010 2:13 PM To: IBM-MAIN@bama.ua.edu Subject: Rexx question - Dynamic generation of variables? I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Dave Gibney Information Technology Services Washington State University -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
Dave, You can use the Rexx function VALUE to do this: Oldvalue = value(x|magix|y, 'newvalue') HTH Peter -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gibney, Dave Sent: Friday, November 05, 2010 2:29 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Walt Farrell Sent: Friday, November 05, 2010 11:18 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, 5 Nov 2010 11:12:44 -0700, Gibney, Dave gib...@wsu.edu wrote: I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Are you looking for something different from REXX's standard compound symbols? X='first' y='second' x.y = 'fred' say x.y Yes, in the end, and I should have mentioned it, I want to dynamically define the stem root. I want to able to set dsnamevolser.catlg = 'YES' and dsnamevolser.poe - 'yes' http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/ikj4a390/2.4.3?SHELF=EZ2ZBK0KDT=20100603150559 -- Walt Farrell IBM STSM, z/OS Security Design -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
Something like this? Using dsn and volser TRACE R Q=LISTDSI(SYS1.PARMLIB) X=SYSDSNAME Y=SYSVOLUME TEST= X'.'Y INTERPRET TEST='FRED' INTERPRET 'SAY ' TEST -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gibney, Dave Sent: Friday, November 05, 2010 2:29 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Walt Farrell Sent: Friday, November 05, 2010 11:18 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, 5 Nov 2010 11:12:44 -0700, Gibney, Dave gib...@wsu.edu wrote: I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Are you looking for something different from REXX's standard compound symbols? X='first' y='second' x.y = 'fred' say x.y Yes, in the end, and I should have mentioned it, I want to dynamically define the stem root. I want to able to set dsnamevolser.catlg = 'YES' and dsnamevolser.poe - 'yes' http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/ikj4a390/2.4.3?SHELF=EZ2ZBK0KDT=20100603150559 -- Walt Farrell IBM STSM, z/OS Security Design -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
If you want to use a DO loop you can iterate through it like this: Q=LISTDSI(SYS1.PARMLIB) X=SYSDSNAME Y=SYSVOLUME TEST= X'.'Y DO Z=1 TO 4 TRACE R INTERPRET TEST'.'Z='FRED'Z INTERPRET 'SAY ' TEST'.'Z TRACE OFF END EXIT -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Veilleux, Jon L Sent: Friday, November 05, 2010 2:40 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? Something like this? Using dsn and volser TRACE R Q=LISTDSI(SYS1.PARMLIB) X=SYSDSNAME Y=SYSVOLUME TEST= X'.'Y INTERPRET TEST='FRED' INTERPRET 'SAY ' TEST -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gibney, Dave Sent: Friday, November 05, 2010 2:29 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Walt Farrell Sent: Friday, November 05, 2010 11:18 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, 5 Nov 2010 11:12:44 -0700, Gibney, Dave gib...@wsu.edu wrote: I don't subscribe to the Rexx list and am not sure I'd survive another list :) Is it possible to dynamically define Rexx variables? It doesn't work but I'd like something like: X='first' y='second' x|magic|y='fred' Say x|magic|yy And get 'fred' as the output. Really x is a dsname and y is the volser and I'd like a variable dsn|magic|volser. Are you looking for something different from REXX's standard compound symbols? X='first' y='second' x.y = 'fred' say x.y Yes, in the end, and I should have mentioned it, I want to dynamically define the stem root. I want to able to set dsnamevolser.catlg = 'YES' and dsnamevolser.poe - 'yes' http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/ikj4a390/2.4.3?SHELF=EZ2ZBK0KDT=20100603150559 -- Walt Farrell IBM STSM, z/OS Security Design -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On 11/5/2010 2:24 PM, Veilleux, Jon L wrote: INTERPRET TEST='FRED' INTERPRET 'SAY TEST' At the risk of starting another flame war, I would strongly discourage use of INTERPRET. While it may work correctly in some instances, it leads to problems in general, and is easily replaced by value(). I first ran across this problem while working at an ISV, and had to maintain code designed to manipulate JCL. The author used an INTERPRET that self-destructed the first time it encountered a JCL comment. Gerhard Postpischil Bradford, VT -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Fri, Nov 5, 2010 at 3:03 PM, Gerhard Postpischil gerh...@valley.net wrote: On 11/5/2010 2:24 PM, Veilleux, Jon L wrote: INTERPRET TEST='FRED' INTERPRET 'SAY TEST' At the risk of starting another flame war, I would strongly discourage use of INTERPRET. While it may work correctly in some instances, it leads to problems in general, and is easily replaced by value(). I first ran across this problem while working at an ISV, and had to maintain code designed to manipulate JCL. The author used an INTERPRET that self-destructed the first time it encountered a JCL comment. And for that matter, it's not needed in any of the cases used here -- even VALUE isn't needed. -- zMan -- I've got a mainframe and I'm not afraid to use it -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
s_dsn = translate(i_dsname,'.!','!.') say s_dsn i_volume trace r defvar= s_dsn||i_volume interpret defvar='Set to this' interpret 'say ' defvar This sequence works and I get a variable named as the concatenation of the dsname and the volser. How would I get a similarly named variable using value(). Actually, I see how I can get the variable using value, I just have difficulty seeing how I can use the resulting variable in other statements. Once I have the variable and have assigned it a value, I will need to use the variable in comparison and assignment statements. Normally, I would just brute force this with some arrays. Since I am at a Software AG shop, I'd use Natural. But, I thought I'd refresh my Rexx and I remembered the power of using stems as associative arrays. Someway of nesting stems would also serve my needs. My actual problem is audit/clean-up of several volumes shared across 4 Lpars with separate catalogs and duplicate dsnames. I want to identify miscatalogs and completely uncataloged datasets. I also want to flag potential troublesome PDS/E Dave Gibney Information Technology Services Washington State University -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Gerhard Postpischil Sent: Friday, November 05, 2010 12:03 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On 11/5/2010 2:24 PM, Veilleux, Jon L wrote: INTERPRET TEST='FRED' INTERPRET 'SAY TEST' At the risk of starting another flame war, I would strongly discourage use of INTERPRET. While it may work correctly in some instances, it leads to problems in general, and is easily replaced by value(). I first ran across this problem while working at an ISV, and had to maintain code designed to manipulate JCL. The author used an INTERPRET that self-destructed the first time it encountered a JCL comment. Gerhard Postpischil Bradford, VT -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
At the risk of starting another flame war, I would strongly discourage use of INTERPRET. While I used to have that bias, I have since found valid uses for it. While it may work correctly in some instances, it leads to problems in general, and is easily replaced by value(). This sounds Knee-Jerk. I first ran across this problem while working at an ISV, and had to maintain code designed to manipulate JCL. The author used an INTERPRET that self-destructed the first time it encountered a JCL comment. Is this a problem with INTERPRET, or a problem with programming/testing skills? - I'm a SuperHero with neither powers, nor motivation! Kimota! -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Fri, 5 Nov 2010 11:28:44 -0700, Gibney, Dave wrote: Yes, in the end, and I should have mentioned it, I want to dynamically define the stem root. Why? I want to able to set dsnamevolser.catlg = 'YES' and dsnamevolser.poe - 'yes' What exactly is wrong with A.dsnamevolser.catlg and A.dsnamevolser.poe BTW, you'll find it easier to blend unnoticed among the Rexx experts if you remember that Rexx's boolean values are '1' and '0' and use those in place of 'YES' and 'NO'. You can even facilitate printing by defining a compound: DisplayPOE.1 = 'Library' DisplayPOE.0 = 'PDS' (Application is left as an exercise for the reader.) -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
-Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Paul Gilmartin Sent: Friday, November 05, 2010 1:40 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, 5 Nov 2010 11:28:44 -0700, Gibney, Dave wrote: Yes, in the end, and I should have mentioned it, I want to dynamically define the stem root. Why? I want to able to set dsnamevolser.catlg = 'YES' and dsnamevolser.poe - 'yes' What exactly is wrong with A.dsnamevolser.catlg and A.dsnamevolser.poe Perhaps blinders :) I have always seen stems as the part before the period and the part after the single, one and only period. Perhaps I'm trying to solve a non-existent problem due to my lack of Rexx experience. Yes, it seems I missed the section on Compound symbols (2.4.3) in the z/OS 1.11 version. :) BTW, you'll find it easier to blend unnoticed among the Rexx experts if you remember that Rexx's boolean values are '1' and '0' and use those in place of 'YES' and 'NO'. I certainly don't claim full knowledge of Rexx and appreciate your help. In this almost 1 sysprog shop, I rarely have time to become expert at on any z/OS subject before the next issue arises :( In reading the above noted section, I think I should start thinking of symbols and not classic variables. You can even facilitate printing by defining a compound: DisplayPOE.1 = 'Library' DisplayPOE.0 = 'PDS' (Application is left as an exercise for the reader.) -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Fri, 5 Nov 2010 13:58:22 -0700, Gibney, Dave wrote: Perhaps blinders :) I have always seen stems as the part before the period and the part after the single, one and only period. In a way, your intuition is good. Rexx compounds are truly one-dimensional; Rexx tries to fool you by concatenating the tail components. But beware the pitfall. If: W = 'a.b' X = 'c' Y = 'a' Z = 'b.c' then Stem.W.X and Stem.Y.Z refer to the same member of the compound, regardless that none of the subscripts are equal. This is eerily reminiscent of the way FORTRAN flattens multidimensional arrays. Perhaps I'm trying to solve a non-existent problem due to my lack of Rexx experience. Would it be more courteous to disagree with you, or to agree? Ted is right; there are legitimate uses for INTERPRET and VALUE. Using INTERPRET or even VALUE here is using a hand grenade where a Swiss Army Knife would be a more suitable tool. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
-Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Paul Gilmartin Sent: Friday, November 05, 2010 2:18 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, 5 Nov 2010 13:58:22 -0700, Gibney, Dave wrote: Perhaps blinders :) I have always seen stems as the part before the period and the part after the single, one and only period. In a way, your intuition is good. Rexx compounds are truly one-dimensional; Rexx tries to fool you by concatenating the tail components. But beware the pitfall. If: W = 'a.b' X = 'c' Y = 'a' Z = 'b.c' then Stem.W.X and Stem.Y.Z refer to the same member of the compound, regardless that none of the subscripts are equal. And, I can't seem to use a stem value (values of A.x) to index a stem. A.x = 'foo' say A.x B.foo = 'bar' say B.foo say B.A.x y = A.x say y say B.y Gets: foo bar B.A.X foo B.foo I want bar where I get B.A.X and B.foo This is eerily reminiscent of the way FORTRAN flattens multidimensional arrays. Perhaps I'm trying to solve a non-existent problem due to my lack of Rexx experience. Would it be more courteous to disagree with you, or to agree? Ted is right; there are legitimate uses for INTERPRET and VALUE. Using INTERPRET or even VALUE here is using a hand grenade where a Swiss Army Knife would be a more suitable tool. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Fri, Nov 5, 2010 at 7:57 PM, Gibney, Dave gib...@wsu.edu wrote: And, I can't seem to use a stem value (values of A.x) to index a stem. A.x = 'foo' say A.x B.foo = 'bar' say B.foo say B.A.x y = A.x say y say B.y Gets: foo bar B.A.X foo B.foo I want bar where I get B.A.X and B.foo Right. That would be a case for using VALUE. Stems are not arrays. Not now, not ever. But in some ways they're more powerful, as they let you do associative memory. -- ...phsiii Phil Smith III p...@voltage.com Voltage Security, Inc. www.voltage.com -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
-Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Phil Smith Sent: Friday, November 05, 2010 5:09 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, Nov 5, 2010 at 7:57 PM, Gibney, Dave gib...@wsu.edu wrote: And, I can't seem to use a stem value (values of A.x) to index a stem. A.x = 'foo' say A.x B.foo = 'bar' say B.foo say B.A.x y = A.x say y say B.y Gets: foo bar B.A.X foo B.foo I want bar where I get B.A.X and B.foo Right. That would be a case for using VALUE. Stems are not arrays. Not now, not ever. But in some ways they're more powerful, as they let you do associative memory. Yup value(B.y) gives bar. But value(B.A.x) still gives B.A.X. I suppose I can nest the value function. Whoops, guess not: 11 +++ say B.value(A.x) IRX0043I Error running TEST, line 11: Routine not found -- ...phsiii Phil Smith III p...@voltage.com Voltage Security, Inc. www.voltage.com -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
-Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Phil Smith Sent: Friday, November 05, 2010 5:09 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? snip Stems are not arrays. Not now, not ever. But in some ways they're more powerful, as they let you do associative memory. That's why I decided on Rexx, I want what is in effect a 3 dimensional associative memory space. Dsname X volser X Lpar. -- ...phsiii Phil Smith III p...@voltage.com Voltage Security, Inc. www.voltage.com -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On 11/5/2010 4:38 PM, Ted MacNEIL wrote: At the risk of starting another flame war, I would strongly discourage use of INTERPRET. While I used to have that bias, I have since found valid uses for it. English is not my native language. Please explain what part of strongly recommend against means never? While it may work correctly in some instances, it leads to problems in general, and is easily replaced by value(). This sounds Knee-Jerk. Unfortunately programmers, especially less experienced ones, do some of their job by cut and paste, and may miss inherent limitations that are obvious to the more experienced coder. Is this a problem with INTERPRET, or a problem with programming/testing skills? INTERPRET was written for a reason, and value() for a different one; they behave differently, and that's a problem for coders who fail to consider the nuances. I don't know the original author, so can't comment on that. But it strains credulity to use tests or programming circumventions when a simple value() will do the job without risk. And I've worked for ISVs long enough to learn that users will do unexpected things. Gerhard Postpischil Bradford, VT -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx question - Dynamic generation of variables?
On Fri, 5 Nov 2010 17:20:49 -0700, Gibney, Dave wrote: -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Phil Smith Sent: Friday, November 05, 2010 5:09 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx question - Dynamic generation of variables? On Fri, Nov 5, 2010 at 7:57 PM, Gibney, Dave wrote: And, I can't seem to use a stem value (values of A.x) to index a stem. A.x = 'foo' say A.x B.foo = 'bar' say B.foo say B.A.x y = A.x say y say B.y Gets: foo bar B.A.X foo B.foo I want bar where I get B.A.X and B.foo First, always, always, always start every EXEC with signal on novalue always. This will cause your EXEC to abort on any use of an undefined symbol. You'll need to quote every string constant instead of using naked symbols. At first, you'll find this a PITA, and stop using it. Over time, you'll recognize cases where it would have saved you by detecting a programming error; sometimes a simple typo, and you'll return to it. Yup value(B.y) gives bar. But value(B.A.x) still gives B.A.X. I suppose I can nest the value function. Whoops, guess not: 11 +++ say B.value(A.x) IRX0043I Error running TEST, line 11: Routine not found I suggest: /* Rexx (Untested!) */ signal on novalue ... say value( 'B.'A.x ) say value( B.A.x ) The understanding is left as an exercise for the student. A special challenge, since I believe an important piece of documentation is omitted, AFAIK, from all the manuals. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx Question
The reason for the outtrap is because the program scans the the output fro the RMM command and I display some, but not all, output. Thanks, Ray Baraniecki Morgan Stanley Smith Barney 18th Floor 1 New York Plaza New York, NY 10004 Office - 212-276-5641 Cell - 917-597-5692 ray.baranie...@morganstanley.com BE CARBON CONSCIOUS. PLEASE CONSIDER OUR ENVIRONMENT BEFORE PRINTING THIS E-MAIL. -Original Message- From: IBM Mainframe Discussion List [mailto:ibm-m...@bama.ua.edu] On Behalf Of Mike Wood Sent: Thursday, August 13, 2009 7:54 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Rexx Question Ray, Why are you using outtrap for an rmm subcommand? Do you really want to trap the line mode output, and if so, why? Have you perhaps also set SYSAUTH.EDGDATE so that all command output is via rexx variables - hence no line mode output. Mike Wood RMM Development -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- Important Notice to Recipients: It is important that you do not use e-mail to request, authorize or effect the purchase or sale of any security or commodity, to send fund transfer instructions, or to effect any other transactions. Any such request, orders, or instructions that you send will not be accepted and will not be processed by Morgan Stanley Smith Barney. The Global Wealth Management Group of Morgan Stanley Co. Incorporated and the Smith Barney division of Citigroup Global Markets Inc. have combined into Morgan Stanley Smith Barney LLC, a new investment adviser and broker-dealer registered with the Securities and Exchange Commission. The sender of this email is an employee of Morgan Stanley Smith Barney. Important disclosures on Morgan Stanley and Citi Investment Research Analysis research reports may relate in part to the separate businesses of Citigroup Global Markets Inc. and Morgan Stanley that now form Morgan Stanley Smith Barney LLC. To view these important research disclosures, go to http://www.morganstanley.com/researchdisclosures and https://www.citigroupgeo.com/geopublic/Disclosures/index_a.html. If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error. We may monitor and store emails to the extent permitted by applicable law. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx Question
This is a curiosity. I ran your code (after setting a value to volnbr and rmmcmd.volnbr) and the value of rmmout.1 was: EDG3201I THE ENTRY IS NOT DEFINED TO DFSMSrmm I'm not sure I understand the scenario shown in your trace results where rmmout.1 could be equal to null while rmmout.0 is equal to 0. I realize you've snipped the REXX a little, but I tried and failed to force that result (using DROP rmmout. or rmmout. = ''). I guess that's no help, sorry. Greg Shirey Ben E. Keith Company -Original Message- From: IBM Mainframe Discussion List On Behalf Of Baraniecki, Ray Sent: Thursday, August 13, 2009 9:56 AM To: IBM-MAIN@bama.ua.edu Subject: Rexx Question I am issuing a Listdataset RMM command, which worked yester. Today I get a rc of zero but no output. The actual that is issued is contained in the above comment. I sure would like to know what went wrong. Code: /* RMM LD 'TSTPRB.$.TESTTAPE' VOL(V59019) */ x = Outtrap(rmmout.) Address TSO rmmcmd.volnbr lcc = rc x = Outtrap(OFF) If lcc \= 0 Then Do lmsg = RMM LD command failed. RC=lcc CMDERR: smsg = Command Error Call Do_Msg Signal EXIT /* Exit with End /* Do */ rmmlines = rmmout.0 TRACE Output: 77 *-* /* RMM LD 'TSTPRB.$.TESTTAPE' VOL(V59019) */ 78 *-* x = Outtrap(rmmout.) Lrmmout. FRMMOUT. 79 *-* Address TSO rmmcmd.volnbr L CRMMCMD.1 VRMM LD 'TSTPRB.$.TESTTAPE' VOL(V59019) ORMM LD 'TSTPRB.$.TESTTAPE' VOL(V59019) L ORMM LD 'TSTPRB.$.TESTTAPE' VOL(V59019) 80 *-* lcc = rc V0 81 *-* x = Outtrap(OFF) LOFF FOFF 82 *-* If lcc := 0 V0 L0 O0 89 *-* Say rmmout.1 V 90 *-* rmmlines = rmmout.0 V0 92 *-* items = 0 L0 93 *-* Do cnt = 1 To rmmlines L1 V0 131 *-* End /* Do volnbr = 1 To volcnt */ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Rexx Question
Ray, Why are you using outtrap for an rmm subcommand? Do you really want to trap the line mode output, and if so, why? Have you perhaps also set SYSAUTH.EDGDATE so that all command output is via rexx variables - hence no line mode output. Mike Wood RMM Development -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
If your program might also be using the data stack, aka external data queue, be sure to code parse [upper] external yourvariable instead of parse [upper] pull if you want the code to read from the terminal. pull will read from the stack unless it is empty. -- Peter Hunkeler CREDIT SUISSE -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Lizatte, I don't think TSO-REXX is active any more... Itschak On Sat, Oct 4, 2008 at 4:23 PM, Lizette Koehler [EMAIL PROTECTED]wrote: Rexx is case sensitive. Use PARSE Pull UPPER Answer Then it will always be upper case and a test for Upper Case letters/words will work. Lizette PS. You may wish to join the TSO-REXX newsgroup. For TSO-REXX subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO TSO-REXX hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Actually TSO-REXX at Marist college is very active, that is unless it has died over the last couple of days. It is one of those newsgroups that does spurts. Some days we are very active and others, not so much. Check it out. We have a lot to say and discuss about REXX on that newsgroup. Lizette Lizatte, I don't think TSO-REXX is active any more... -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Rexx is case sensitive. Use PARSE Pull UPPER Answer Then it will always be upper case and a test for Upper Case letters/words will work. Lizette PS. You may wish to join the TSO-REXX newsgroup. For TSO-REXX subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO TSO-REXX hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Hello, AFAIK pull is the short form for parse upper pull, so it shouldn't make any difference to your version. What makes me nervous instead is the single quote in the do until clause ... : N' Lizette Koehler schrieb: Rexx is case sensitive. Use PARSE Pull UPPER Answer Then it will always be upper case and a test for Upper Case letters/words will work. Lizette PS. You may wish to join the TSO-REXX newsgroup. For TSO-REXX subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO TSO-REXX hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- ___ Freundliche Gruesse / Kind regards Dipl.Math. Juergen Kehr, IT Schulung Beratung, IT Education + Consulting Tel. +49-561-9528788 Fax +49-561-9528789 Mobil +49-172-5129389 ICQ 292-318-696 (JKehr) mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] ___ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
I looked up the PARSE command in the TSO REXX commands manual. It states If you specify the UPPER option, the data to be parsed is first translated to uppercase (that is, lowercase az to uppercase AZ). Otherwise, no uppercase translation takes place during the parsing. I did have my syntax backward. It should have read PARSE UPPER PULL answer Lizette Hello, AFAIK pull is the short form for parse upper pull, so it shouldn't make any difference to your version. What makes me nervous instead is the single quote in the do until clause ... : N' Lizette Koehler schrieb: Rexx is case sensitive. Use PARSE Pull UPPER Answer Then it will always be upper case and a test for Upper Case letters/words will work. Lizette PS. You may wish to join the TSO-REXX newsgroup. For TSO-REXX subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO TSO-REXX hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Hi, I looked up the TSO REXX reference, it says: PULL reads a string from the head of the external data queue. It is just a short form of the instruction: PARSE UPPER PULL template_list ; if you do not need the uppercase translation you should code parse pull. Lizette Koehler schrieb: I looked up the PARSE command in the TSO REXX commands manual. It states If you specify the UPPER option, the data to be parsed is first translated to uppercase (that is, lowercase a–z to uppercase A–Z). Otherwise, no uppercase translation takes place during the parsing. I did have my syntax backward. It should have read PARSE UPPER PULL answer Lizette Hello, AFAIK pull is the short form for parse upper pull, so it shouldn't make any difference to your version. What makes me nervous instead is the single quote in the do until clause ... : N' Lizette Koehler schrieb: Rexx is case sensitive. Use PARSE Pull UPPER Answer Then it will always be upper case and a test for Upper Case letters/words will work. Lizette PS. You may wish to join the TSO-REXX newsgroup. For TSO-REXX subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO TSO-REXX hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- ___ Freundliche Gruesse / Kind regards Dipl.Math. Juergen Kehr, IT Schulung Beratung, IT Education + Consulting Tel. +49-561-9528788 Fax +49-561-9528789 Mobil +49-172-5129389 ICQ 292-318-696 (JKehr) mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] ___ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Why are folks giving him the same answer over and over again? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
Hi, we brought it about to solve the problem!!! correct syntax of the command, in this case, is: do until answer \= N - ( For example, here we repeat the loop until the variable answer does not have the value NO) instructions instructions say 'Do you want to exit? (s/n)' pull answer end it workedthanks to all !!! more question, when typed less four digits to the year or a charecter alfa, occurs the error: IRX0040I Error running Incorrect call to routine how can consist the field of the year typed? regards - Original Message - From: Alexandre [EMAIL PROTECTED] Newsgroups: bit.listserv.ibm-main To: IBM-MAIN@BAMA.UA.EDU Sent: Saturday, October 04, 2008 10:05 PM Subject: Res: REXX question The code below worked fine for me. /* rexx */ op = Hi The code below worked fine for me. /* rexx */ op = '' DO WHILE op \= 'E' SAY '' SAY 'Enter a text or e to exit.' PARSE UPPER PULL op SAY 'The text is 'op'.' END SAY 'You selected the exit option.' EXIT Regards, Alexandre - Mensagem original De: Jürgen Kehr [EMAIL PROTECTED] Para: IBM-MAIN@BAMA.UA.EDU Enviadas: Sábado, 4 de Outubro de 2008 14:11:23 Assunto: Re: REXX question Hi, I looked up the TSO REXX reference, it says: PULL reads a string from the head of the external data queue. It is just a short form of the instruction: PARSE UPPER PULL template_list ; if you do not need the uppercase translation you should code parse pull. Lizette Koehler schrieb: I looked up the PARSE command in the TSO REXX commands manual. It states If you specify the UPPER option, the data to be parsed is first translated to uppercase (that is, lowercase a–z to uppercase A–Z). Otherwise, no uppercase translation takes place during the parsing. I did have my syntax backward. It should have read PARSE UPPER PULL answer Lizette Hello, AFAIK pull is the short form for parse upper pull, so it shouldn't make any difference to your version. What makes me nervous instead is the single quote in the do until clause ... : N' Lizette Koehler schrieb: Rexx is case sensitive. Use PARSE Pull UPPER Answer Then it will always be upper case and a test for Upper Case letters/words will work. Lizette PS. You may wish to join the TSO-REXX newsgroup. For TSO-REXX subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO TSO-REXX hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- ___ Freundliche Gruesse / Kind regards Dipl.Math. Juergen Kehr, IT Schulung Beratung, IT Education + Consulting Tel. +49-561-9528788 Fax +49-561-9528789 Mobil +49-172-5129389 ICQ 292-318-696 (JKehr) mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] ___ -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com. http://br.new.mail.yahoo.com/addresses -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
This would work: == do until answer = N' say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end == It could be made a lot more elegant, of course. On Fri, Oct 3, 2008 at 9:20 PM, Claudio Marcio [EMAIL PROTECTED] wrote: Hi, How make to receive one string in rexx language?? Ex. say ' you want exit (s/n)?' pull ?? arg ?? parse ?? if (string??) = 's' return to begin exec else exit I want ready the string with which command? regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
On Fri, 3 Oct 2008 22:20:11 -0300, Claudio Marcio [EMAIL PROTECTED] wrote: Hi, How make to receive one string in rexx language?? Ex. say ' you want exit (s/n)?' pull ?? arg ?? parse ?? if (string??) = 's' return to begin exec else exit I want ready the string with which command? regards It this a homework question?How about this one: /* REXX */ /* Question: */ /* Execute this EXEC. What must be entered to */ /* get the EXEC to respond okie dokie? */ /* */ Say 'Enter value for number:' pull number color = blue if number = 7 but color is not green then say okie dokie else say get outta here -- Mark Zelden Sr. Software and Systems Architect - z/OS Team Lead Zurich North America / Farmers Insurance Group - ZFUS G-ITO mailto:[EMAIL PROTECTED] z/OS Systems Programming expert at http://expertanswercenter.techtarget.com/ Mark's MVS Utilities: http://home.flash.net/~mzelden/mvsutil.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX question
hi I make this: do until answer = N' instructions say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end I type s, but not exit of the do until?? Why?? this is a case sensitive?? It´s correct?? more a question: how i do to treat for error: 10 +++ dec25 = date(B,year1225,S)//7 IRX0040I Error running CHRISTMA, line 10: Incorrect call to routine the error ocorred when typed less four digits to year?? ex: year with tree or two or one digits 200 or 20 or 2. regards - Original Message - From: P S [EMAIL PROTECTED] Newsgroups: bit.listserv.ibm-main To: IBM-MAIN@BAMA.UA.EDU Sent: Friday, October 03, 2008 10:30 PM Subject: Re: REXX question This would work: == do until answer = N' say 'Do you want to exit? (s/n)' pull answer if answer = 'S' then exit end == It could be made a lot more elegant, of course. On Fri, Oct 3, 2008 at 9:20 PM, Claudio Marcio [EMAIL PROTECTED] wrote: Hi, How make to receive one string in rexx language?? Ex. say ' you want exit (s/n)?' pull ?? arg ?? parse ?? if (string??) = 's' return to begin exec else exit I want ready the string with which command? regards -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Wed, 16 May 2007 01:15:08 +0530, Varun Manocha [EMAIL PROTECTED] wrote: Yes, that worked. Thanks! It was driving me crazy... Can you please send me a copy (offline) of your working REXX code? THANX. mhyI -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
try X = Format(used.i,,0) I believe it is trying to execute the results of your format statement Brad Taylor Senior Software Engineer Workload Automation 713 625 9490 (ext 19490) -Original Message- From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf Of Varun Manocha Sent: Tuesday, May 15, 2007 2:27 PM To: IBM-MAIN@BAMA.UA.EDU Subject: REXX Question I am working on a rexx exec, in which I am using the REXX built-in function FORMAT to roundoff a numeric variable to required number of digits after the decimal. However, when I execute the REXX I get RC(-3), everytime the REXX executes the FORMAT function. 1) I havent been able to supress the messages using MSG('OFF') 2) I am not sure what does RC(-3) means for the FORMAT function. Nothing has been documented about a negative RC from FORMAT function in the REXX Reference Guide. This is what I get, when I turn the TRACE ON: 107 *-* Format(used.i,,0) CUSED.5 V0.3 L L0 F0 +++ RC(-3) +++ Any help would be appreciated. Thanks, Varun -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
Yes, that worked. Thanks! It was driving me crazy... This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery. NOTE: Regardless of content, this e-mail shall not operate to bind CSC to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
In [EMAIL PROTECTED], on 03/19/2007 at 01:10 PM, George, William (DHS-ITSD) [EMAIL PROTECTED] said: And it does NOT work for me. Why not run a TPUT trace and a VTAM buffer trace to see what is actually being sent? -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
On Sun, 25 Mar 2007 05:58:45 +, Dave Salt [EMAIL PROTECTED] wrote: ... As you know, there is already a language out there called CLIST. To describe REXX as a REXX CLIST is (IMO) at the very least redundant, and at worst, confusing. It's more than enough to just say REXX. After all, a CLIST is just a CLIST, and I've never heard anyone describe it as a CLIST clist. ... Both TSO and NetView allow clists and execs to coexist in their CLIST libraries. Refering to the content of the library as clists seems reasonable to me. But more to the point: it doesn't matter. Once we're talking 3270 datastream it doesn't much matter what created it. ... (i.e. D4C32XX3). I tried it, and the invisible field started working. ... So to me, the logmode doesn't appear to be irrelevant, whether in principle or otherwise. ... The logmode is absolutely irrelevant in theory. The non-display attribute has existed since before logmodes. It sounds like either the 3270 emulator involved has incorrectly incorrectly tied something to logmode processing, or the program building the datastream has implemented the non-display as some extended attribute (if such an an extended attribute exists) rather than using a simple field attribute. Chris's statement is correct. Pat O'Keefe -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
In article [EMAIL PROTECTED] you wrote: Paul I couldn't agree more. Until now I left this thread alone but having a peek at one of the responses floating by, I see it's all about 3270 data stream. Having now looked through the responses, I see a rather large flock of wild geese - or would it be a shoal of red herrings. What is being talked about here is a feature of the *original* 3270 data stream, namely the creation of a nondisplay field. In principle, this means that logmodes and related issues are totally irrelevant. I saw that the sample code provided by Tomas Fott works on a regular 3270 - as reported by Don Poitras. So, in principle, it's a valid technique to slip 3270 start field sequences into text output from a REXX Clist. It works with some emulators and not others and - I think - when it doesn't work, it's because the 3270 order characters are not being recognised. Unfortunately, my test doesn't settle the question. We don't use logmodes at Sas (the 'd net' command returns ***NA***). We logon to a home-grown solicitor program that determines the bind. It's very possible that PSERVIC is different for the different emulators and 'real' 3270 I have access to. And no, I don't have any way to specify a logmode. Don't think I haven't asked. :) -- Don Poitras - SAS Development - SAS Institute Inc. - SAS Campus Drive [EMAIL PROTECTED] (919) 531-5637Cary, NC 27513 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
In a message dated 3/25/2007 7:15:35 A.M. Central Daylight Time, [EMAIL PROTECTED] writes: solicitor program that determines the bind. It's very possible that PSERVIC is different for the different emulators and 'real' 3270 I have access to. And no, I don't have any way to specify a logmode. Don't think I haven't asked. :) We used NETSOL off CBTTAPE to pass LOGON required via NCPASS RSA token and passthru to Library catalog. Seemed like NETSOL stripped extended attributes if the request and the emulator didn't line up exactly in passthru. NCPASS blocks LOGON APPLID(xx) LOGMOD() but have a few terminals inside the glass that are direct connected and can play around. ** AOL now offers free email to everyone. Find out more about what's free from AOL at http://www.aol.com. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
In [EMAIL PROTECTED], on 03/19/2007 at 11:33 PM, Ed Finnell [EMAIL PROTECTED] said: Great work. If I had to guess. The PSERVIC bit is not on '08' for the latter That might matter for Start Field Extended, but why should it matter for Start Field? -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
Paul I couldn't agree more. Until now I left this thread alone but having a peek at one of the responses floating by, I see it's all about 3270 data stream. Having now looked through the responses, I see a rather large flock of wild geese - or would it be a shoal of red herrings. What is being talked about here is a feature of the *original* 3270 data stream, namely the creation of a nondisplay field. In principle, this means that logmodes and related issues are totally irrelevant. I saw that the sample code provided by Tomas Fott works on a regular 3270 - as reported by Don Poitras. So, in principle, it's a valid technique to slip 3270 start field sequences into text output from a REXX Clist. It works with some emulators and not others and - I think - when it doesn't work, it's because the 3270 order characters are not being recognised. Pouring through the 3270 manual mentioned earlier might solve this but another way - for someone with a working setup and NetView Session Monitor to hand - using TRACE CPIU of course - could be to check that the start field sequences used in the usual output from TSO are using the same character values as the REXX Clist. Incidentally, since I saw someone talking about colours, there is a standard mapping of the *original* 3270 data stream fields to colours - green for unprotected normal intensity, red for unprotected high intensity, blue for protected normal intensity and white for protected high intensity. I don't know what colour is used for nondisplay. g Chris Mason -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
From: Chris Mason [EMAIL PROTECTED] What is being talked about here is a feature of the *original* 3270 data stream, namely the creation of a nondisplay field. In principle, this means that logmodes and related issues are totally irrelevant. I think you're mistaken. I couldn't get the non-display field to work until I changed my logmode. It works with some emulators and not others and - I think - when it doesn't work, it's because the 3270 order characters are not being recognised. I didn't change my emulator; all I changed was my logmode. Pouring through the 3270 manual mentioned earlier might solve this but another way - for someone with a working setup and NetView Session Monitor to hand - using TRACE CPIU of course - could be to check that the start field sequences used in the usual output from TSO are using the same character values as the REXX Clist. FYI: There is REXX, and there is CLIST. But never the twain shall meet. Dave Salt SimpList(tm) - The easiest, most powerful way to surf a mainframe! http://www.mackinney.com/products/SIM/simplist.htm _ http://local.live.com/?mkt=en-ca/?v=2cid=A6D6BDB4586E357F!420 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
Dave Clist means command list and is a generic term. REXX is an interpretive language, in principle, consisting of commands which do something and commands which direct logic - to describe it loosely. Thus REXX is a particular example of a clist language. Probably you have in mind the original TSO clist language as distinct from REXX. The original TSO clist language is another specific example of a clist language. I have also worked with VM and NetView which also have their own clist languages and I am vaguely aware of many others. Actually, there's even one I use on my PC which is very clever in manipulating windows. You'll note I used the expression in principle above - since I'm aware that REXX can be compiled and so isn't simply interpretive, the usual characteristic of a clist language. I also used the expression in principle in the post to which you refer when stating that logmodes and related matters are irrelevant. The reason I contend that it is irrelevant is that the possibility to create a nondisplay field is part of the *original* 3270 data stream. It's possible that there is some sort of indirect relationship and your experience is that there would appear to be such a relationship. I have a gut feeling it may be related to those top two bits in the 3270 byte. I'd have to go pouring through the manual to try to follow up on that idea. Since you can reproduce the circumstances where Tomas's clist works and doesn't work, you are ideally placed to determine what the difference in specifically the start field order character is in the two cases using the blunt instrument of the VTAM buffer trace or the fine instrument of the NetView Session Monitor TRACE command with CPIU (complete PIU). Naturally, it would be of great interest to know which of the fields in the logmode table entry was actually responsible for allowing Tomas's start field order character to be recognised, how it was set to allow recognition and how it was set to disallow recognition. We all await your discoveries - on tenterhooks. Incidentally, I checked your previous posts in this thread and I don't see you saying you got it to work. Chris Mason - Original Message - From: Dave Salt [EMAIL PROTECTED] Newsgroups: bit.listserv.ibm-main To: IBM-MAIN@BAMA.UA.EDU Sent: Sunday, March 25, 2007 5:13 AM Subject: Re: REXX Question (subject too broad) From: Chris Mason [EMAIL PROTECTED] What is being talked about here is a feature of the *original* 3270 data stream, namely the creation of a nondisplay field. In principle, this means that logmodes and related issues are totally irrelevant. I think you're mistaken. I couldn't get the non-display field to work until I changed my logmode. It works with some emulators and not others and - I think - when it doesn't work, it's because the 3270 order characters are not being recognised. I didn't change my emulator; all I changed was my logmode. Pouring through the 3270 manual mentioned earlier might solve this but another way - for someone with a working setup and NetView Session Monitor to hand - using TRACE CPIU of course - could be to check that the start field sequences used in the usual output from TSO are using the same character values as the REXX Clist. FYI: There is REXX, and there is CLIST. But never the twain shall meet. Dave Salt -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question (subject too broad)
From: Chris Mason [EMAIL PROTECTED] Clist means command list and is a generic term. REXX is an interpretive language, in principle, consisting of commands which do something and commands which direct logic - to describe it loosely. Thus REXX is a particular example of a clist language. Chris, As you know, there is already a language out there called CLIST. To describe REXX as a REXX CLIST is (IMO) at the very least redundant, and at worst, confusing. It's more than enough to just say REXX. After all, a CLIST is just a CLIST, and I've never heard anyone describe it as a CLIST clist. I also used the expression in principle in the post to which you refer when stating that logmodes and related matters are irrelevant. The reason I contend that it is irrelevant is that the possibility to create a nondisplay field is part of the *original* 3270 data stream. It's possible that there is some sort of indirect relationship and your experience is that there would appear to be such a relationship. I posted an email to the listserv saying the invisible field didn't work for me. Someone sent me a reply off-list and suggested I try a specific logmode (i.e. D4C32XX3). I tried it, and the invisible field started working. I didn't change anything else. I'm not an expert in logmodes or VTAM or 3270 buffer displays or anything else of that nature. All I know is, I changed the logmode and it started working. So to me, the logmode doesn't appear to be irrelevant, whether in principle or otherwise. Naturally, it would be of great interest to know which of the fields in the logmode table entry was actually responsible for allowing Tomas's start field order character to be recognised, how it was set to allow recognition and how it was set to disallow recognition. I tried a different logmode (i.e. one which made the field become invisible), so it should be easy enough to do the same in reverse (i.e. try one that makes the invisible field visible). You should then be able to run one of the traces you mentioned and see what happens. It you posted the results it wouldn't mean much to me personally, but I'm sure others on this list might be interested. Dave Salt SimpList(tm) - The easiest, most powerful way to surf a mainframe! http://www.mackinney.com/products/SIM/simplist.htm _ Check Out Our List Of Trendy Restaurants. You'll Eat It Up! http://local.live.com/?mkt=en-ca/?v=2cid=A6D6BDB4586E357F!378 -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Mon, 19 Mar 2007 13:23:12 -0400, Veilleux, Jon L [EMAIL PROTECTED] wrote: I did that. It didn't work. What emulation program are you using? We use Rumba. I am also at 1.8 on this system. It works with 1.8 running PCOMM 5.7 (setup as a model 4) and I've just tested it with 1.5 running x3270 3.3.4p4 (set asa model 2 in VTAMLST but as model 4 in configuration.) Seb -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
In [EMAIL PROTECTED], on 03/19/2007 at 12:52 PM, Binyamin Dissen [EMAIL PROTECTED] said: How about using CLIST and attribute bytes on a WRITENR? That has to generate a TPUT CONTROL. I doubt it; it's probably TPUT NOEDIT. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
Shmuel wrote: snip Call an assembler routine to do a TPUT NOEDIT. You'll need to specify the proper control character (DIS?) to suppress display in the input field. I don't recall whether you need a second TPUT to restore display. /snip I love coding in REXX but it seems to me that I shouldn't have to write an assembler program to perform such a basic function as this. Non-display prompting should be built in to REXX. Jon L. Veilleux [EMAIL PROTECTED] (860) 636-2683 - This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Fri, 16 Mar 2007 09:31:03 -0400, Veilleux, Jon L [EMAIL PROTECTED] wrote: Is there a way, other than using ISPF panels, to enter hidden data (passwords) as a response to a prompt from a REXX exec? It is possible to use Start Field or Start Field Extended order in SAY rexx statement and write fields with various attributes (protected, invisible, hilight, color). Details are in 3174 Establishment Controller: Functional Description, GA23-0218-11 */ When PULL rexx statement is executed then you can type data into any unprotected field on the screen, not just on the line where cursor is curently located. So you can type data into invisible field. When you press ENTER, then data from the first modified field is returned by PULL stsatement. /* REXX */ /* Prompt to enter invisible data */ sf='1D'x nopr='60'x /* normal protect */ invi='4C'x /* invisible */ hipr='E8'x /* hilight protect */ prompt='' promptend='' len=80-length(prompt)-length(promptend)-7 nulls=copies('00'x,len) s1='Enter data into invisible field on the following line:' say sf''nopr''s1 say sf''hipr''prompt''sf''invi''nulls''sf''hipr''promptend parse pull data say 'You entered data:'data exit 0 Note. I avoid using concatenation symbol in REXX because it may get corrupted during transfer between ASCII and EBCDIC. Tomas -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
Tomas, I tried this on my TSO ID and the response was still visible. Is the code dependant on a specific type of controller? The manual you reference is a chargeable item so I am unable to look at it. Thanks, Jon Jon L. Veilleux [EMAIL PROTECTED] (860) 636-2683 -Original Message- From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf Of Tomas Fott Sent: Monday, March 19, 2007 10:25 AM To: IBM-MAIN@BAMA.UA.EDU Subject: Re: REXX Question On Fri, 16 Mar 2007 09:31:03 -0400, Veilleux, Jon L [EMAIL PROTECTED] wrote: Is there a way, other than using ISPF panels, to enter hidden data (passwords) as a response to a prompt from a REXX exec? It is possible to use Start Field or Start Field Extended order in SAY rexx statement and write fields with various attributes (protected, invisible, hilight, color). Details are in 3174 Establishment Controller: Functional Description, GA23-0218-11 */ When PULL rexx statement is executed then you can type data into any unprotected field on the screen, not just on the line where cursor is curently located. So you can type data into invisible field. When you press ENTER, then data from the first modified field is returned by PULL stsatement. Tomas -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html - This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Mon, 19 Mar 2007 10:44:27 -0400, Veilleux, Jon L wrote: Tomas, I tried this on my TSO ID and the response was still visible. Is the code dependant on a specific type of controller? The manual you reference is a chargeable item so I am unable to look at it. Jon, Apparently it is chargeable if you order the hardcopy but if you just want to look at the bookmanager (or pdf) version it is (still) free. Try: http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/books/cn7a7003 -- Tom Schmidt Madison, WI -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
Thanks Tom, I tried searching the IBM doc sites and couldn't find a link to it. Your URL worked. Jon L. Veilleux [EMAIL PROTECTED] (860) 636-2683 -Original Message- From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf Of Tom Schmidt Sent: Monday, March 19, 2007 11:05 AM To: IBM-MAIN@BAMA.UA.EDU Subject: Re: REXX Question Jon, Apparently it is chargeable if you order the hardcopy but if you just want to look at the bookmanager (or pdf) version it is (still) free. Try: http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/books/cn7a7003 -- Tom Schmidt Madison, WI -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html - This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Mon, 19 Mar 2007 10:44:27 -0400, Veilleux, Jon L [EMAIL PROTECTED] wrote: Tomas, I tried this on my TSO ID and the response was still visible. Is the code dependant on a specific type of controller? After prompt for input you have to move cursor to previous line into invisible field: press keys: Up, Tab, then type data, press ENTER. There is no dependency on controller. To find docimentation, you do not have to remember long url. Goto www.ibm.com, search word: library. The first item is http://www.elink.ibmlink.ibm.com/publications/servlet/pbi.wss Welcome to the IBM Publications Center Tomas -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
From: Tomas Fott [EMAIL PROTECTED] After prompt for input you have to move cursor to previous line into invisible field: press keys: Up, Tab, then type data, press ENTER. There is no dependency on controller. It didn't work for me either. I tried the REXX from within ISPF, and again from the TSO READY prompt. In both cases, everything I entered was displayed. I tried to 'tab' to the invisible field, but it just moved my cursor down to the start of the next line. I tried manually positioning the cursor before entering data, but everything I entered was still displayed. Maybe it has something to do with the emulator? Dave Salt SimpList(tm) - The easiest, most powerful way to surf a mainframe! http://www.mackinney.com/products/SIM/simplist.htm _ Dont waste time standing in linetry shopping online. Visit Sympatico / MSN Shopping today! http://shopping.sympatico.msn.ca -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
Tomas, I tried all of these methods and none worked. It doesn't look like any of the attribute bytes are being recognized. Jon L. Veilleux [EMAIL PROTECTED] (860) 636-2683 After prompt for input you have to move cursor to previous line into invisible field: press keys: Up, Tab, then type data, press ENTER. There is no dependency on controller. To find docimentation, you do not have to remember long url. Goto www.ibm.com, search word: library. The first item is http://www.elink.ibmlink.ibm.com/publications/servlet/pbi.wss Welcome to the IBM Publications Center Tomas -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html - This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Mon, 19 Mar 2007 12:33:40 -0400, Veilleux, Jon L [EMAIL PROTECTED] wrote: Tomas, I tried all of these methods and none worked. It doesn't look like any of the attribute bytes are being recognized. worked fine on a 1.8 system here. Just remember to move the cursor to between the '' field. Seb -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
On Mon, 19 Mar 2007 12:33:40 -0400 Veilleux, Jon L [EMAIL PROTECTED] wrote: :Tomas, I tried all of these methods and none worked. It doesn't look :like any of the attribute bytes are being recognized. How about using CLIST and attribute bytes on a WRITENR? That has to generate a TPUT CONTROL. Why not ISPF? What is your business need? -- Binyamin Dissen [EMAIL PROTECTED] http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: REXX Question
I did that. It didn't work. What emulation program are you using? We use Rumba. I am also at 1.8 on this system. Jon L. Veilleux [EMAIL PROTECTED] (860) 636-2683 -Original Message- From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf Of Sebastian Welton Sent: Monday, March 19, 2007 12:52 PM To: IBM-MAIN@BAMA.UA.EDU Subject: Re: REXX Question worked fine on a 1.8 system here. Just remember to move the cursor to between the '' field. Seb -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately. Thank you. Aetna -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html