Just to confirm my thoughts: (This is for a T100MD888+)
1: The ladder is executed from top to bottom, in order, with all changes to outputs occuring at the very bottom of the ladder.
2: Custom functions are executed as part of the rung that they occupy from top to bottom. Exception a "CALL" would bring a copy of programming related onto that rung.
3: Variables, both A -Z and DM[]'s can be assigned a value in on Custom Function (A = ADC(1) , in a lower rung function, modified (A = A/2), and at a lower yet rung, in a custom function use the value (SETLCD 1,1,STR$(A) ).
The CUstom Functions would do there things and at the end the proper value of "A" would be displayed.
Seems this works with A-Z but may not work with DM[]'s ? The ADC values don't change quickly, and an erroneous result for a cycle or 2 is not a problem.