No ROW Flag - Caveat

Since the typical use of loop statements is to process one return value/row at a time and not accumulate values, all looping statements in (syntax) version 8 are non-accumulating (as if ROW were given in version 7), and the non-looping (self-closed) versions accumulate values. Thus the ROW flag is redundant in (syntax) version 8 - and is no longer permitted.

This helps prevent inadvertent memory wastage (by forgetting the ROW flag in loops), as well as prevents problems due to inadvertently attempting to modify $ret etc. in a loop context (type and number of values cannot be changed).

In scripts, sometimes return values are processed more than once - a situation often handled in (syntax) version 7 with a non-ROW looping statement that processes values, followed by an explicit <LOOP> that processes again. Such constructs in (syntax) version 8 and later must use a non-looping statement (to accumulate), followed by two <LOOP>s.

See the syntaxversion pragma (here) for more details, as well as the --translate-from-version option (here) for aid in modifying existing scripts.


Copyright © Thunderstone Software     Last updated: Jun 15 2022
Copyright © 2022 Thunderstone Software LLC. All rights reserved.