Are you on v4? If so, you could some inline xslt to get the text rather than the value.
umbraco.library.GetPreValueAsString(id)
I'm afraid you're not on v4, as you're using the <?UMBRACO_GETITEM/> syntax, right?
I've made some datatype a while ago that let's you specify what get's saved.
http://www.netaddicts.be/blog/2008/9/9/codepicker-v02.aspxIt does rely on external tables though, so it might be overkill if you've got only a few options. But it would work as you'd like it to.
It's been designed for v4 but comes with full source, so you could change that to work with v3. But again, that would be big overkill compared to creating a macro as you've suggested already.
Regards,
/Dirk
level 1 & 2 certified - umbraco MVP 2008/2009 - umbraco blog at
netaddicts.be - working on an integrated forum4umbraco