(A) In
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[1,"age"]=4;
row()=1;
AsColumn(dt, tmp=As Column(2);print(tmp);tmp /*=4*/); // column #4 , row #1= 59
Sum(As Column(2) ,7) // 4 + 7 = 11
The result of As Column(2)is not column #2, it's the value of column #2 (in row #1).
(B) On the other hand, the first argument of Recode Column( ) gets only evaluated to a level where As Column() returns the column reference
... and NOT the value of the current row (like in the first example).
Same for the argument of the Target Column() argument.
@joseph_morgan talks in Using JSL to Develop Efficient, Robust Applications about Expressions which are "evaluated twice"
= (A)
if this "standard" is prevented (B), it feels like magic