Just to expand a bit as to why Pulse is preferrable to XYZ coordinates, it has to do with how the controller calculates the axis movement.
If the position is in Pulse there is no option as to which way the axis must rotate to reach the position, if it starts at -2367 pulse and the recorded position is at 112347 pulse the axis will turn in (+) direction even if the turn happens to be more then 180 degrees.
If the position is in XYZ the axis will travel the shortest route to the destination even if that means the axis turns in the opposite direction of what it would have when using Pulse. This also includes Angle values (Rx, Ry and Rz in a P variable). The controller doesn't differ between +180 degrees and -180 degrees for example, so if you set the Rx angle (for ex) as +180 degrees but the axis travel distance from the previous position is shorter to -180 degrees then that's what the controller will do. Even if this doesn't cause an instant collision it's pretty much guaranteed to cause a collision at some point during the job.
If you are using the SHIFTON/SHIFTOF function to "re-use" positions in new locations (such as in a palettizing application) XYZ positions can be problematic.
So Pulse is a "safer" option. XYZ positioning is of course completely possible, it just requires more care from the programmer to ensure you don't get any reversed axis movements.
Personally I prefer to use Pulse whenever possible.