Mr Poncelet, I'm interested in this example.  Two questions:

1) Once TRUE is set to a '1'b in the last two sections, why does the program
not abend when it encounters "IF TRUE THEN..."?  Seems to me REXX should
complain that TRUE is not 1 or 0.

2) From your preceding posts I got the impression you were disagreeing with
Mr Metz, that you believed REXX represented data in other forms that EBCDIC
character strings.  (EBCDIC in TSO REXX, that is; I'm not concerned with
ASCII platforms here.)  But your example seems to support his assertion.
Did I misunderstand you?  What am I missing?

---
Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313

/* This is how sin happens. We don't set out to do something very wrong. We
make up stories that sound good to ourselves about how the thing really
isn't that wrong, or how it really isn't anybody else's business. / Before
we lie to others, we lie to ourselves. Do that, and it can be hard to find
the truth again, even when it is obvious nothing but the truth will do.
-Maggie Gallagher, 2001-08-27 */

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of CM Poncelet
Sent: Monday, September 7, 2020 22:33

You said, "It isn't boolean; everything in REXX is a character string."
 
I agree that "it's all strings", but not that "everything in REXX is a
*character* string."
 
Try the following:
 
ARG DEBUG
IF ABBREV(DEBUG,D,1) THEN ,
  TRACE I
 
SIGNAL ON SYNTAX NAME ERROR0
TRUE = 1
SAY 'TRUE NUMERIC   = 'TRUE
SAY 'DATATYPE TRUE  = 'DATATYPE(TRUE)
IF ¬TRUE THEN SAY 'NOT TRUE NUMERIC'
IF TRUE THEN SAY 'YES, TRUE NUMERIC'

ERROR0:
SIGNAL ON SYNTAX NAME ERROR1
TRUE = '1'
SAY 'TRUE CHARACTER = 'TRUE
SAY 'DATATYPE TRUE  = 'DATATYPE(TRUE)
IF ¬TRUE THEN SAY 'NOT TRUE CHARACTER'
IF TRUE THEN SAY 'YES, TRUE CHARACTER'

ERROR1:
SIGNAL ON SYNTAX NAME ERROR2
TRUE = '31'X
SAY 'TRUE HEXADECIMAL = 'TRUE
SAY 'DATATYPE TRUE  = 'DATATYPE(TRUE)
IF ¬TRUE THEN SAY 'NOT TRUE HEXADECIMAL'
IF TRUE THEN SAY 'YES, TRUE HEXADECIMAL'

TRUE = '00110001'B
SAY 'TRUE BINARY HEX  = 'TRUE
SAY 'DATATYPE TRUE  = 'DATATYPE(TRUE)
IF ¬TRUE THEN SAY 'NOT TRUE BINARY HEX'
IF TRUE THEN SAY 'YES, TRUE BINARY HEX'

TRUE = '00000001'B
SAY 'TRUE BINARY ONLY = 'TRUE
SAY 'DATATYPE TRUE  = 'DATATYPE(TRUE)
IF ¬TRUE THEN SAY 'NOT TRUE BINARY ONLY'
IF TRUE THEN SAY 'YES, TRUE BINARY ONLY'

ERROR2:
SIGNAL ON SYNTAX NAME ERROR3
TRUE = '1'B
SAY 'TRUE BINARY BIT  = 'TRUE
SAY 'DATATYPE TRUE  = 'DATATYPE(TRUE)
IF ¬TRUE THEN SAY 'NOT TRUE BINARY BIT'
IF TRUE THEN SAY 'YES, TRUE BINARY BIT'

ERROR3:
EXIT 0
 
 
... which produces output:
 
TRUE NUMERIC   = 1
DATATYPE TRUE  = NUM
YES, TRUE NUMERIC
TRUE CHARACTER = 1
DATATYPE TRUE  = NUM
YES, TRUE CHARACTER
TRUE HEXADECIMAL = 1
DATATYPE TRUE  = NUM
YES, TRUE HEXADECIMAL
TRUE BINARY HEX  = 1
DATATYPE TRUE  = NUM
YES, TRUE BINARY HEX
TRUE BINARY ONLY = ?    <--
DATATYPE TRUE  = CHAR   <--
TRUE BINARY BIT  = ?    <--
DATATYPE TRUE  = CHAR   <--

PRESS ANY KEY TO CONTINUE.

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

Reply via email to