December 20, 2017 at 11:27 #3709
I’m getting inconsistent results depending on whether ADDGROUP is used in a subroutine or in the main script. Example:
Version 1, add groups in main script, works:
GROUP ‘things’ etc ENDGROUP GOSUB 100 foobar_ = ADDGROUP(‘foo’, ’bar’) !! NB, in main final_ = SUBGROUP(foobar_, ‘things’) !! this works PLACEGROUP final_ END 100: GROUP ‘foo’ stuff ENDGROUP GROUP ‘bar’ more stuff ENDGROUP RETURN
Version 2, add groups in subroutine, doesn’t work:
GROUP ‘things’ etc ENDGROUP GOSUB 100 final_ = SUBGROUP(foobar_, ‘things’) !! this gives error that foobar_ isn’t group name PLACEGROUP final_ END 100: GROUP ‘foo’ stuff ENDGROUP GROUP ‘bar’ more stuff ENDGROUP foobar_ = ADDGROUP(‘foo’, ’bar’) !! NB, in subroutine RETURN
December 20, 2017 at 12:41 #3710
Wow that formatting looks great. Never mind. If you want to use an ADDGROUP result in a subsequent SUBGROUP operation, you can’t do the ADDGROUP in a subroutine. It would be nice to know why.
December 21, 2017 at 08:53 #3711
the GDL interpreter runs some checks before executing the script. This check is done line-by line, not in execution order. In version 2 when it first comes to foobar_, that is an uninitialized variable, but it would expect string or group type. Sadly we can’t easily initialize a variable to be group type.
– move the subgroup and placegroup commands to another subroutine, placed after subroutine 100
Less elegant solution if the above doesn’t work for your code structure:
– initialize group type variable: create an empty group and add it to itself, creating a group type variable
foobar_ = ADDGROUP(“dummy”, “dummy”)
Software Engineer, Library Team
You must be logged in to reply to this topic.