It's admirable and correct that you're seeking to modularize this system, and your block diagram comments are helpful.
Let me answer your main question, which you raised in your first post but I didn't specifically address: why don't your L1 changes cascade down to your array indicator in L3? The answer is that L3 only reads those values one time--the first (and only) time L3 is executed on the block diagram of L2. You can observe this if you turn on execution highlighting (the light bulb) and run L2. You'll see that values are passed to L3 once and then L2 is done, never able to pass any updated values to L3.
I want to make sure you took a look at the code I attached above. There you can see that the values from L2 are read fresh in each loop iteration inside L3, and that's the kind of thing you'll need to construct in order to get the behavior you're looking for. It's most common to see LabVIEW modularization take the form of subVIs that all share the same block diagram and pass values along from one to the next.
Now, there are shortcuts that you can take to sort of brute-force the behavior you expect and allow "wireless" communication between VIs--namely, global variables. But there are better ways to solve the inter-VI communication problem, such as a queue (Advanced >> Synchronization) or even TCP/IP. And anyway, I'm inclined to think that your best solution is to rearchitect your system so that everything is taking place on one block diagram.
Regards,
John