26 lines
1.7 KiB
Rexx
26 lines
1.7 KiB
Rexx
/*REXX pgm applies a callback to an array (using factorials for demonstration)*/
|
|
a.=; b.=; a.0 = 0
|
|
a.1 = 1
|
|
a.2 = 2
|
|
a.3 = 3
|
|
a.4 = 4
|
|
a.5 = 5
|
|
a.6 = 6
|
|
a.7 = 7
|
|
a.8 = 8
|
|
a.9 = 9
|
|
a.10 = 10
|
|
call listAB 'before'
|
|
call bangit 'a','b' /*factorialize the A array, store results───►B.*/
|
|
call listAB ' after'
|
|
exit /*stick a fork in it, we're all done. */
|
|
/*────────────────────────────────────────────────────────────────────────────*/
|
|
bangit: do i=0; _=value(arg(1)'.'i); if _=='' then return
|
|
call value arg(2)'.'i, fact(_)
|
|
end /*i*/
|
|
/*────────────────────────────────────────────────────────────────────────────*/
|
|
fact: procedure; !=1; do j=2 to arg(1); !=!*j; end; return !
|
|
/*────────────────────────────────────────────────────────────────────────────*/
|
|
listAB: do j=0 while a.j\==''; say arg(1) 'a.'j"="a.j; end /*j*/; say
|
|
do k=0 while b.k\==''; say arg(1) 'b.'k"="b.k; end /*k*/
|
|
return
|