why 4? Here is what I would do:
local numbervar index := instr({table.field}, "@");
local numbervar dot :=instr(index, {table.field}, ".");
shared stringvar front:=left({table.field}, index-1);
shared stringvar at:=mid({table.field}, 1);
shared stringvar domain:=mid({table.field}, index+1, dot-index);
shared stringvar type :=mid({table.field}, dot+1);
now you just create the 'access' formulas, which look like:
shared stringvar domain
the 'tough' question is where to do this and where is it displayed? If it is to be displayed in the same section, say detail, I would create a second detail section, move it above the main section and place the first formula in it and suppress the section, then use the display formulas in the main detail section.
HTH