home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!vnet.ibm.com
- From: francis@vnet.ibm.com (Tim Francis)
- Message-ID: <19930125.082123.510@almaden.ibm.com>
- Date: Mon, 25 Jan 93 09:56:59 EST
- Subject: Rexx question
- Newsgroups: comp.os.os2.programmer
- References: <1993Jan24.181958.6740@athena.mit.edu>
- Reply-To: francis@vnet.ibm.com
- Organization: IBM Canada Lab, WorkFrame/2 development
- Disclaimer: This posting represents the poster's views, not those of IBM
- Lines: 55
-
- In article <1993Jan24.181958.6740@athena.mit.edu>,
- jawetzel@athena.mit.edu (The Rottweiler) writes:
- >
- >I'm doing a little Rexx programming and came upon the following:
- >
- >--------------------------------------
- >/* */
- >
- >line = "prpipgphptp"
- >
- >do while((n = pos("p", line)) \= 0)
- > line = overlay(" ", line, n)
- >end
- >
- >say line
- >
- >line = "prpipgphptp"
- >
- >n = pos("p", line)
- >do while(n \= 0)
- > line = overlay(" ", line, n)
- > n = pos("p", line)
- >end
- >
- >say line
- >
- >-------------------------------
- >
- >The output when this program is run is the following:
- >
- >prpipgphptp
- > r i g h t
- >
- >My question is simple - is this a bug or a limitation of the
- >Rexx programming language? Or is it that I'm doing something
- >wrong?
- >
- > Jake
-
- The problem is that REXX doesn't support assignment within conditional
- expressions. This can be seen fairly easily by running your program
- with TRACE ?I (I = show intermediate values)
-
- *-* Do While ( ( n = pos('p', line) ) <> 0 ); My Comments
- >L> "N" n = 'N'
- >L> "p"
- >V> "prpipgphptp"
- >F> "1" pos('p',line) = 1
- >O> "0" (N = 1) = 0
- >L> "0"
- >O> "0" (0 <> 0) = 0
- >>> "0"
-
- The key is the part (N=1), which is evaluated as a condition, whose
- result is either 0 (FALSE) or 1 (TRUE). -tim
-