$0 manipulation in awk

OK, so if $0 represent the entire record... can I change $2 and will that be reflected back in $0?

I think the following answers that YES, it does work. But is there anything I should be thinking about prior to doing this? What I am actually doing is part of 5 pages of scripting and awk commands to do some data manipulation where I must combine and de-dupe records based on criteria.

Another way to state this... consider $2 as a flag. And in certain situations must change this field from B to J. So, when I set $2 to J, it appears I can then write out $0 as the complete changed record.

> echo "A|B|C|D" | awk '{FS="|";$0=$0;print $0;print $2}'
A|B|C|D
B
> echo "A|B|C|D" | awk '{FS="|";$0=$0; print $0;print $2}'
A|B|C|D
B
> echo "A|B|C|D" | awk '{FS="|";$0=$0; $2="J";print $0;print $2}'
A J C D
J

I guess I don't follow where the confusion is.
You can change ANY field of the record/line and the $0 be reflected accordingly. And think you code shows that. And no, you don't have to 'force' the $0 reevaluation ($0=$0)- it's done automatically when you change of the fields.

$ echo "A|B|C|D" | nawk -F'|' '{$2="J"; print $0;print $2}' OFS='|'
A|J|C|D
J

But you can also 'force' to have the $0 reevaluated. For example, if you want to change the 'OFS' programmatically. Every even numbered record/line will have ';' as OFS, and every odd numbered recordline will have '|' as OFS:

nawk '{OFS=(FNR%2): ";" : "|"; $1=$1; print}' myFile