Time zone is an environment level variable.  The intersystems data server response is at the application level, so likely returning gmt is correct.  The application can adjust based on the environment (geolocation).

Mr Cemper,

Thank you again for your prompt and informative response.  I was able to resolve this issue with 2 simple steps: 1. add a self signed cert to the windows server 2016 IIS Manager virtual site; and 2. specify the $domain.$tld in the https url.  Previously, I only had $site.  And yes, you are correct again,  the code I sent you is actually the asmx file which I import to ScriptLink to create the available objects from the WSDL response.  The wsdl xml is generated by the web server in response to the application level wsdl import so that I do not need to see the wsdl xml.  I realized all too late that this thread should never had been posted on the InterSystems site.   My new wsdl import which is working is:  https://$site.$domain.$tld/$virtualServer/$WS.asmx.  Where the asmx is what I sent you.  Think of asmx as pseudo xml.  Microsoft claims it is an xml format, but obviously we know it is not.

Thank you again for your prompt advise and assistance,  Chris

Thank you Robert for your prompt response, below is my wsdl, please review and provide further advise.  Thank you Chris 

<%@ WebService Language="C#" CodeBehind="ESPFormsWS.asmx.cs" Class="SSMHAWS.ESPFormsWS" %>

Hi Mike, 

While I'm not total familiar with the syntax for your ~/.{{tcsh,bash}rc|profile|...} it seems to me that the end should be:

<Location>CSP On  SetHandler csp-handler-sa</Location>

as opposed to: <Location />CSP On  SetHandler csp-handler-sa</Location>

Minor I know, and if it html syntax likely doesn't matter at all.  Still if it is in fact a {u,li}nix resource file, syntax would be important.

Chris

Cursors work, but are needlessly complex imo.  I liked RCemper's pure sql solution.  Another (better) approach is to do your calculation on the application server to save the cpu on the data server for serving the data.

drop table if exists [stair];
create table [stair] (
    [purse] integer
);
insert into [stair] (purse) values(9);
insert into [stair] (purse) values(2);
insert into [stair] (purse) values(7);
--++++++
declare cursorA cursor 
for select purse from [dbo].[stair]
declare @col integer
declare @tot integer
open cursorA
set @tot = 0
fetch next from cursorA into @col
while @@FETCH_STATUS=0
begin
   set @tot = @tot + @col;
   print convert(varchar,@col) + ', ' + convert(varchar,@tot);
   fetch next from cursorA INTO @col;
end
close cursorA;
deallocate cursorA;
drop table [stair];
 

Excellent answer.  Regarding the nuance of temporal types, something to think about: what would be the value of a time stamp field in any database without a corresponding date field and if the c# objects implement the database interface, then the C# objects would also have a valid date.

Hi Praj, 

In the past, the following has worked for me using Intersystems Cache ODBC interface: 

{fn CONCAT(string-expression1,string-expression2)}

Hopefully this helps.

Chris Kennedy