Sorry Richard, I edited your post by mistake instead of responding.

There is a section in the manual that defines all the available macros. Have a read as there may be something else that can help you out.

Macros simply return strings, so you can just disply them to see their content. If you look up a couple of posts you'll see I did exactly that earlier, but here it is again on it's own:
 Code:
"HOMESHR macro value="+@HOMESHR+@CRLF


Now, @HOMESHR is probably not going to do what you want. When you log in using Citrix @HOMESHR is going to contain the TS home share, which is not what you want. You want to map the non-TS home share to P: if I understand correctly.

Try this script which will show the path from AD and the path from @HOMESHR. I expect that this should be different if you use different home directories for standard vs terminal server logins.

 Code:
"Home Directory from @@HOMESHR macro="+@HOMESHR+@CRLF
"     Home Directory from AD object="+GetObject("WinNT://"+@LDOMAIN+"/"+@USERID).HomeDirectory+@CRLF

@CRLF+"Hit a key to exit: " Get $ @CRLF
FlushKB()