This is the part that's not behaving as expected:
W $ZTIMEH("12:05:38.975411826")
Output: 338
On my instance I get Output: 43538.975411826
$ZTH takes a 2nd argument that specifies the time format. If you omit that value it uses the default, which you can see with this:
WRITE ##class(%SYS.NLS.Format).GetFormatItem("TimeFormat")
I suspect you'll get 3 or 4, since those are the formats for 12 hour clock.
Try sending 1 or 2 for 24 hour clock:
W $ZTIMEH("12:05:38.975411826", 1)
https://docs.intersystems.com/iris20241/csp/docbook/Doc.View.cls?KEY=RCO...
Assuming this is code that runs outside of a Production and is trying to invoke a Business Service that does run within a Production in the same Namespace, the approach would be generally like this:
1) Create an instance of the Business Service:
set tSC = ##class(Ens.Director).CreateBusinessService(tServiceName, .tServiceInstance)
2) Invoke the Business Service:
set tSC = tServiceInstance.ProcessInput(tRequest, .tResponse)
This technique is used for SOAP services, REST APIs, and Tasks that invoke functionality provided by a Production.
You most likely need to configure the Format setting in your Business Operation, assuming you're using EnsLib.EDI.XML.Operation.FTPOperation or EnsLib.EDI.XML.Operation.FileOperation. Set that to "w" to get the Windows-style CRLF line terminator. Click the label in the Settings panel to get the full list of options. Note that these are the same format codes used by the Output* methods in EnsLib.EDI.XML.Document, so you can do the same thing in your own code as well as in the Operation. You can combine these codes. For example "wt" would indicate Windows-style line terminators and tab indentation.