Hi All This is my first post so please be gentle with me! I've been reading the forums for many months and the open nature of the communications within the C-Bus world is what convinced me to go this way. It is an excellent forum and greatly appreciated ! I am currently building a new house and installing C-Bus. The sparky is doing all the 240v and C-Bus terminations (and has done this before) and I'll be doing the setup and programming. I am pretty comfortable with what needs to be done to make things work. I've also done all the Clipsal training courses. Looking at PICED (and having done the Logic course) it seems that all the examples use hard-code the tag names such as GetLightingLevel("Kitchen"). I know that PICED is a modified version of PASCAL and that "Kitchen" is interpreted by the compiler and translates this tag to an integer value representing the actual group address. Hard coding strings have always been a big no-no in (most) software development so I was hoping to find a way not to do this. My query is if there is a way to generate the group address dynamically either by initialising a variable or using a constant and passing this to the function. That way it is only necessary to change the value in one place, and not in (potentially) many places throughout code. The compiler doesn't like using a string variable in the functions such as GetLightingLevel(myString) - it only seems to accept literal double-quoted strings GetLightinglevel("Kitchen"). I'd thought perhaps I could fool the compiler by using the StringToInt function and passing a string initialised by declared as myString : string; and intialised as myString := '"Kitchen"'; (Double-quoted string in real single quoted string) so the call in the logic would be GetLightingLevel(StringToInt(myString)) but unfortunately whilst this compiles and runs it doesn't give actually use the proper integer value from the tag. Hope this makes sense (at least a little) and isn't too silly a question. Any feedback greatly appreciated.