procedure main() testdata := [ # args Comment # start stop incr [[-2, 2, 1], "Normal"], [[-2, 2, 0], "Zero increment"], [[-2, 2, -1], "Increments away from stop value"], [[-2, 2, 10], "First increment is beyond stop value"], [[ 2, -2, 1], "Start more than stop: positive increment"], [[ 2, 2, 1], "Start equal stop: positive increment"], [[ 2, 2, -1], "Start equal stop: negative increment"], [[ 2, 2, 0], "Start equal stop: zero increment"], [[ 0, 0, 0], "Start equal stop equal zero: zero increment"] ] range := proc("...",3) ; # range(i,j,k) same as "i to j by k" every argcom := !testdata do{ write("\n",argcom[2]) writes("range(",seqimage(argcom[1]),")") &error := 1 every elements := [] & put(elements, range ! argcom[1]) if &errornumber then{ write(" --->") write("\tRun-time error ", &errornumber) write("\t",&errortext) write("\toffending value: ", image(&errorvalue)) errorclear() }else{ &error := 0 if *elements ~= 0 then write(" = ",seqimage(elements)) else write(" (no result)") } } end procedure seqimage(L) every result := "" & result ||:= image(!L) || ", " return result[1:-2] end