The third argument to metadata_newobj is the name, or more exactly the value of the name attribute of the new object.
Now look at your code.
rc=metadata_newobj("Login", add_uri, Name="TestObject");
The third argument is Name="TestObject", which is a logical evaluation whose result if false, which is numeric 0, which is auto-cast to the string "0", which becomes the new object's name.
The correct code would be
rc=metadata_newobj("Login", add_uri, "TestObject");
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Join us for two new fee-based courses: Administrative Healthcare Data and SAS via Live Web Monday-Thursday, April 24-27 from 1:00 to 4:30 PM ET each day. And Administrative Healthcare Data and SAS: Hands-On Programming Workshop via Live Web on Friday, April 28 from 9:00 AM to 5:00 PM ET.