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