Anonymous user
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))
if p_=='(' then z=z 0
z=z _ $; iterate
end
Line 3,870:
#=# || _
iterate
end
if pos(_,nchars)==0 then leave
lets=lets+datatype(_,'M') /*keep track of # of exponents. */
#=# || translate(_,'EEEEE','eDdQq') /*keep
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
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
return z /*return Z ──► invoker (RESULT).*/
/*──────────────────────────────────subroutines─────────────────────────*/
|