/* rexx *************************************************************** 00010000
signal value ... ist ein dynamisches goTo, alle do,if usw. 00020000
der aktuellen procedure werden verlassen, 00030000
aber nicht die procedure (erst beim nächsten return |) 00040000
interpret ist sehr schnell, 00050000
interpret call ... durch signal value zu simulieren 00060000
lohnt sich i.a. NICHT 00070000
**********************************************************************/ 00080000
p0Cnt = 0 00090000
p1Cnt = 0 00100000
p2Cnt = 0 00110000
p3Cnt = 0 00120000
tms = 10000 00130000
call showTime('start') 00140000
do i=1 to tms 00150000
p0Cnt = p0Cnt + 1 00160000
end 00170000
call showTime(tms 'do + ' v p0Cnt) 00180000
do i=1 to tms 00190000
call p1proc i 00200000
end 00210000
call showTime(tms 'call p1Proc' p1Cnt) 00220000
do i=1 to tms 00230000
call p2sub i 00240000
end 00250000
call showTime(tms 'call p2Sub' p2Cnt) 00260000
i=1 00270000
Lab3: 00280000
i = i + 1 00290000
p3Cnt = p3Cnt + 1 00300000
if i <= tms then 00310000
signal Lab3 00320000
call showTime(tms 'signal lab3' p3Cnt) 00330000
do i=1 to tms 00340000
interpret 'p0Cnt =' p0Cnt '+ 1' 00350000
end 00360000
call showTime(tms 'do interpret + ' v p0Cnt) 00370000
v = 'p1Proc' 00380000
do i=1 to tms 00390000
interpret 'call' v 'i' 00400000
end 00410000
call showTime(tms 'interpret call' v p1Cnt) 00420000
v = 'p2Sub' 00430000
do i=1 to tms 00440000
interpret 'call' v 'i' 00450000
end 00460000
call showTime(tms 'interpret call' v p2Cnt) 00470000
i=1 00480000
v='LAB32' 00490000
Lab32: 00500000
i = i + 1 00510000
p3Cnt = p3Cnt + 1 00520000
if i <= tms then 00530000
signal value v 00540000
00550000
call showTime(tms 'signal value lab32' p3Cnt) 00560000
call testSignal eins, 'tEins' 00570000
call testSignal 'Zwei', 'tZwei' 00580000
say 'signal testSignal' 00590000
signal testSignal 00600000
say 'after signal zwei' 00610000
exit 00620000
00630000
testSignal: 00640000
parse upper arg goal, text 00650000
say 'testSignal' goal',' text 00660000
parse upper arg goal, text 00670000
say 'testSignal2' goal',' text 00680000
signal value goal 00690000
eins: 00700000
say 'after eins:' 00710000
zwei: 00720000
say 'after zwei:' 00730000
drei: 00740000
say 'after drei:' 00750000
return 00760000
say 'after return of testSignal' 00770000
00780000
p1proc: procedure expose p1Cnt 00790000
parse arg a1 00800000
p1Cnt = p1Cnt + 1 00810000
return 00820000
00830000
p2sub: 00840000
parse arg a1 00850000
p2Cnt = p2Cnt + 1 00860000
return 00870000
00880000
showTime: 00890000
parse arg showmsg 00900000
say time() sysvar('syscpu') sysvar('syssrv') showmsg 00910000
return 0 00920000