Go to Record [First]
If [not Is Empty (Main_Page::Field_A)]
Set Variable [$Field_A_Data; Value:Main_Page::Field_A]
Set Field [Main_Page::Field_B; $Field_A_Data]
Go to Record [Next; Exit after last]
I think you wan that first line to be Go To Record [first], not next.
I see no issues that would make this script work differently on Windows. On my XP system I use similar scripts all the time.
If Field_B and Field_A are from the same record, you should be able to replace the two steps inside the If-End If block with just:
Set Field [Main_Page::Field_B; Main_Page::Field_A]
One thing that I can't tell from your post is what layout is current, nor what table occurrence it refers to in Show Records From of Layout Setup... From what your script shows, this most likely should refer to Main_Page. If it refers to a different table occurrence or if your layout is sometimes run from a different layout, the results--for both Mac and Windows could be difficult to predict.
If none of that suggests a solution, I recommend enabling the debugger and data-viewer before running this script. Watching it step through this loop step by step while you monitor the values in the fields and variables may provide a clue.
Phil, you are correct. I found that after the import, the wrong layout was current. It only seemed to matter on the Windows Runtime, not the Mac Runtime as the scripts for each system were both identical.