zOs/REXX/EXASS
/* rexx
*/
c0 = sysvar('syscpu')
say c0 c0 'start'
c1 = c0
call mkStr eins, 300 , 1000
c0 = sysvar('syscpu')
say c0 (c1-c0) 'make'
c1 = c0
call copyA eins, zwei.e.f.g.h, 1000
c0 = sysvar('syscpu')
say c0 (c0-c1) 'copyA'
c1 = c0
call copyV eins, drei.e.f.g.h, 1000
c0 = sysvar('syscpu')
say c0 (c0-c1) 'copyV'
c1 = c0
exit
mkStr: procedure expose m.
parse arg m, len, cnt
abc = 'abcdefgehijklmnopqrstuvwxyz'
abc = copies(abc, 1 + cnt % length(abc))
do i=1 to cnt
s = i
do j=1 while length(s) < len
s = s substr(abc, j, 1) s
end
m.m.i = left(s, len)
end
m.m.0 = cnt
return
endProcedure mkStr
copyV: procedure expose m.
parse arg s, t, cnt
do i=1 to cnt
do j=1 to m.s.0
m.t.j = m.s.j
end
end
return
endProcedure copyV
copyA: procedure expose m.
parse arg s, t, cnt
do i=1 to cnt
do j=1 to m.s.0
m.t.j = s'.'j
end
end
return
endProcedure copyV