Arithmetic evaluation: Difference between revisions

m
→‎{{header|REXX}}: added whitespace, elided an erroneous DO-END comment.
m (→‎{{header|REXX}}: aligned bullet points, added verbage.)
m (→‎{{header|REXX}}: added whitespace, elided an erroneous DO-END comment.)
Line 3,860:
z=z _ $; iterate
end
if _=='+' | _=="-" then do; p_=word(z,words(z)) /*last Z token*/
if p_=='(' then z=z 0 /*handle unary ±*/
z=z _ $; iterate
end
Line 3,870:
#=# || _
iterate
end /*exp*/
if pos(_,nchars)==0 then leave
lets=lets+datatype(_,'M') /*keep track of # of exponents. */
#=# || translate(_,'EEEEE','eDdQq') /*keep building thebuildingthe num.*/
end /*j*/
j=j-1
if \datatype(#,'N') then call serr 'invalid number: ' #
z=z # $
end /*forever*/
 
_=word(z,1); if _=='+' | _=='-' then z=0 z /*handle unary cases.*/
x='(' space(z) ') '; tokens=words(x) /*force stacking for expression. */
do i=1 for tokens; @.i=word(x,i); end /*i*/ /*assign input tokens*/
Line 3,950:
parse source upper . how . /*invoked via C.L. or REXX pgm?*/
if how=='COMMAND' | ,
\datatype(z,'W') then exit /*stick a fork in it, we're done.*/
return z /*return Z ──► invoker (RESULT).*/
/*──────────────────────────────────subroutines─────────────────────────*/