Here is a quick example of Byname if you want to set variables using an indirect address
--------------------
PROGRAM DgTest
--------------------
%COMMENT = 'Tests Byname'
VAR
iTest : ARRAY[16] OF INTEGER
ROUTINE IntToString(piNumber : INTEGER) : STRING FROM DgGeneral
-----------------------------------------------------------------------------
ROUTINE DoByname(piByname : INTEGER)
--
-- This routine sets Frame and Track Uframe if needed
--
BEGIN
iTest[11] = piByname
END DoByname
-----------------------------------------------------------------------------
ROUTINE DoTest
--------------------------------------------------------------------------------
-- Creation date: 2023.07.01
--
--Routine
--
-- Used to: DoSomething
--
-- Arguments: Any Pass In Arguments
--
-- Return value: AnyReturn Values
--
--------------------------------------------------------------------------------
CONST---------|
COUNTER_DEL = 2000
VAR-----------|
liStatus,
liCnt : INTEGER
lsCnt : STRING[2]
BEGIN
iTest[1] = 1
iTest[2] = 2
iTest[3] = 3
iTest[4] = 4
iTest[5] = 5
iTest[6] = 11
iTest[7] = 12
iTest[8] = 13
iTest[9] = 14
iTest[10] = 15
FOR liCnt = 1 TO 10 DO
lsCnt = IntToString(liCnt)
DoByname(BYNAME('', 'iTest[' + lsCnt + ']', liStatus))
DELAY(COUNTER_DEL)
ENDFOR
END DoTest
-----------------------------------------------------------------------------
--Begin Main program
BEGIN
DoTest
END DgTest