#PUSH !q #DTYPE Q$ !1 #IF (!q=-1) // undefined type error #ERROR DFERR_COMP_INVALID_DATATYPE (!1) #ELSE #IF (!q=19) // a struct #PUSH !h #STRG H$ !1 #IFSAME !2 BYREF #REPLACE !3 |RK-!ZGV!h #ELSE #REPLACE !2 |SK-!ZGV!h #ENDIF #POP H$ #ELSE // not a struct #SPUSH #DTSYM !1 // moves datatype Letter ID into !$ #IFSAME !2 BYREF #REPLACE !3 |R!$-!ZG #ELSE #REPLACE !2 |S!$-!ZG #ENDIF #SPOP #ENDIF #ENDIF #POP Q$