It's a bug, IMO. No command should change workarea randomly. Here's a simpler repro.
CLEARCLOSEDATACREATECURSOR Test (nnn I)
SELECT Test
? SELECT() && 1 - correctSELECT * FROM Test ;
JOIN (SELECT nnn FROM Test ) dt1 ;
ON Test.nnn = dt1.nnn ;
INTOARRAY myarray
? SELECT() && 5 - Incorrect, shold be 1