The reference at ss64.com clearly mentions that the call command can call an internal command whereas the windows xp command reference doesn't mention it all. Even the old MS DOS command reference doesn't mention it. This was the reason why I found this syntax confusing :
call set X= %X%
This is an elegant way of expanding the user input environment variable as compared to using the parsing capability of the for command to get the expanded value of the environment variable.
Why does the command processor have to read the input variable twice to expand it ?
If what the user input is entered directly the command using it works without any problem.
For eg. "%userprofile%\desktop\file.txt" is a no brainer for the processor when typed directly but when the same string is input via the prompt the system is lost.
When the input variable has no spaces or special characters there's no need to call it,it can be used directly.