IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Bad arithmetic conversion when assigning a stem var


IBM Mainframe Forums -> CLIST & REXX
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Ajay Baghel

Active User


Joined: 25 Apr 2007
Posts: 206
Location: Bangalore

PostPosted: Tue Nov 26, 2019 11:29 am
Reply with quote

I am reading file into stem var inrec.

"execio * diskr indd (stem inrec. finis"

last-var = inrec.1

The above assignment statement is failing with bad arithmetic conversion error.

I am able to see value 191003 correctly when I display inrec.1 using say.

Pls advise
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Tue Nov 26, 2019 2:05 pm
Reply with quote

Show a trace, straight assignments in REXX cannot cause this error!
Back to top
View user's profile Send private message
Willy Jensen

Active Member


Joined: 01 Sep 2015
Posts: 712
Location: Denmark

PostPosted: Tue Nov 26, 2019 3:47 pm
Reply with quote

'last-var = inrec.1 ' means subtract value of var=inrec.1 (which would evaluate to 0 or 1) from value of last.
Change the minus sign to something else.
Back to top
View user's profile Send private message
Willy Jensen

Active Member


Joined: 01 Sep 2015
Posts: 712
Location: Denmark

PostPosted: Tue Nov 26, 2019 5:42 pm
Reply with quote

Sorry, my explanation was wrong - but it is caused by the minus sign in the varname.
Back to top
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2018
Location: USA

PostPosted: Tue Nov 26, 2019 7:12 pm
Reply with quote

Willy Jensen wrote:
'last-var = inrec.1 ' means subtract value of var=inrec.1 (which would evaluate to 0 or 1) from value of last.

Even worse:

The expression last-var = inrec.1
is in fact considered as
last - (var = inrec.1)
where the comparison (var = inrec.1) is always valid; it produces either 1, or 0 (with the highest probability of 0)

Next, the current value of last is considered:

1) when last is not defined, the value is 'LAST'
An attempt to calculate 'LAST' - 1 or 'LAST' - 0 would cause "bad arithmetic conversion"

2) when last is defined as non-numeric, like last = 'Hello!', then the same result as #1: "bad arithmetic conversion"

3) when last is defined as numeric, like last = 12345, then result of subtraction would be either 12345, or 12344, and then this numeric value would tried to be considered as invalid REXX expression, or TSO command, and would cause another error.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CLIST & REXX

 


Similar Topics
Topic Forum Replies
No new posts 10 byte RBA conversion DB2 2
No new posts 10 byte RBA conversion -non applicati... JCL & VSAM 1
No new posts file manager is doing string conversion IBM Tools 3
No new posts STEM usage in REXX CLIST & REXX 14
No new posts SMF Record Date conversion failing CLIST & REXX 1
Search our Forums:

Back to Top