Well you could check if the first character is "<" or not.  I am not sure you can write a valid Caché construct that begins with a less-than, while XML must, necessarily begin with one.  So something like:

s strm=##class(%Stream.FileCharacter).%New() 

d strm.LinkToFile(<file location>)

if strm.Read(1)="<" return "XML"

return "UDL"

You should contact the WRC at wrc.intersystems.com to help you debug this issue - we'd be happy to help!

As a first guess, are you using Cache 5.0.2?  If so those DLLs might be 32-bit and not match your 64-bit web server, causing some problems.  I would suggest using the most recent CSP Gateway client, which you can also download from wrc.intersystems.com, and make sure you use 64-bit.  From there, following those instructions has always led me to success in configuring webservers.

Shouldn't be too bad.  I think all you need to do is to set up Caché as an ODBC Data source on the system.  Steps are as follows:

    1) Download Caché ODBC Driver from wrc.intersystems.com or .intersystems.com/pub/cache/odbc/2016

    2) Go to Control Panel->Administrative Tools->Data Sources ODBC -> System DSN and create a new DSN with the InterSystems ODBC Driver.  You will need to know the IP, Port, Namespace, and credentials for your Caché server.

    3) Configure Crystal Reports to use that DSN.

    4) ????

    5) Profit!

If you are going to do all the $C's, then you should definitely test $C(0) as well.  Was that "" (empty) or " " (space)?  I think you should test both.  And also probably test with a longer string - something like 600+ characters (limit for subscripts), 33K characters (normal string limit), and perhaps even try to blow out the string stack and make sure things are handled "properly" (whatever that means for you). 

I don't know the tutorial you're talking about, but it's got to be either onclick or onsubmit.   onsubmit if you are submitting form data, onclick otherwise.

 Looking at the log I see:

DSN: TH_T2016_PRE-LIVE
    USERNAME: 

So you are logging in as unknownuser?  If so, does that user have permissions?  

You can enable the ODBC log by going to the 32-bit Driver Manager (C:\Windows\sysWOW64\odbcad32.exe) and opening your DSN.  Click 'ODBC Log' which is a checkbox in the bottom-left of the screen.  Then open WinSQL, and refresh the catalog, and close WinSQL again (this last piece forces the log to flush out of buffers onto disk).  The log file will be in C:\Users\Public\Logs\CacheOBDC.log.