Vitaliy Serdtsev · Sep 18, 2019 go to post

The field TimeCreated is of type Ens.DataType.UTC.

Then so:

<FONT COLOR="#808000">datepart</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">'hh'</FONT><FONT COLOR="#000000">, %external(</FONT><FONT COLOR="#008000">TimeCreated</FONT><FONT COLOR="#000000">))

See Data Display Options

Vitaliy Serdtsev · Sep 17, 2019 go to post

At me in SMP the following query returns 23:

<FONT COLOR="#0000ff">select </FONT><FONT COLOR="#808000">datepart</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">'hh'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#000080">ts </FONT><FONT COLOR="#008080">'2019-09-10 23:01:45'</FONT><FONT COLOR="#000000">})</FONT>
Vitaliy Serdtsev · Jul 30, 2019 go to post

By default, the mac address of the computer on which the DBMS instance is running is returned. But you can get the mac address of any other computer, see getmac /?.

Vitaliy Serdtsev · Jul 29, 2019 go to post

I checked for versions 2009.1/2010.1: unfortunately, the <FONT COLOR="#0000ff">$zu</FONT><FONT COLOR="#000000">(114,0)</FONT> returns nothing, therefore, remains variant with the command line.

Example for Windows, provided that the system has a single network card:

<FONT COLOR="#0000ff">#include </FONT><FONT COLOR="#000000">%syConfig
 </FONT><FONT COLOR="#0000ff">n </FONT><FONT COLOR="#800000">result
 </FONT><FONT COLOR="#0000ff">w $zu</FONT><FONT COLOR="#000000">(144,1,</FONT><FONT COLOR="#0000ff">$$$DEFETHADDR</FONT><FONT COLOR="#000000">),!,</FONT><FONT COLOR="#008000">"------"</FONT><FONT COLOR="#000000">,!
 
 </FONT><FONT COLOR="#0000ff">d $system</FONT><FONT COLOR="#008080">.OBJ</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">DisplayError</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">%Net.Remote.Utility</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">RunCommandViaCPIPE</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"getmac /NH /fo table"</FONT><FONT COLOR="#000000">,,.</FONT><FONT COLOR="#800000">result</FONT><FONT COLOR="#000000">))
 </FONT><FONT COLOR="#0000ff">w $p</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">result</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">" "</FONT><FONT COLOR="#000000">,1)</FONT>
PS: for other OS command line may be different.
Vitaliy Serdtsev · Jul 25, 2019 go to post

Try this:

<FONT COLOR="#0000ff">w $zu</FONT><FONT COLOR="#000000">(114,0)</FONT>

or

<FONT COLOR="#0000ff">w $$$DEFETHADDR </FONT><FONT COLOR="#008000">; from %syConfig.inc</FONT>

Vitaliy Serdtsev · Jul 24, 2019 go to post

Important note: it should be noted that the proposed solutions refer only to the port of the private web server, which may not even be installed. In the case of an external web server, this is not possible.

Vitaliy Serdtsev · Jul 24, 2019 go to post

Thank you for your comment. This code is taken from the source code %SYS, which in theory should be an example for application developers.

I hope that InterSystems developers will see your comment and make appropriate changes.

Vitaliy Serdtsev · Jul 16, 2019 go to post

Intel i5-2400

10000 digits ~ 58 sec.

calcPI(n) public { 
  s $lb(len,nines,predigit,r)=$lb(10*n\3,0,0,"")
  
  i=1:1:len a(i)=2
  
  j=1:1:{
    q=0
    i=len:-1:1 x=10*a(i)+(q*i), a(i)=x#(2*i-1), q=x\(2*i-1)
    a(1)=q#10, q=q\10
    q=9 {
      nines=nines+1
    }elseif q=10 {
      r=r_(predigit+1)_$$repeat^%qarfunc(0,nines), predigit=0, nines=0
    }else{
      r=r_predigitpredigit=q
      s:nines r=r_$$repeat^%qarfunc(9,nines), nines=0
    }
  }
  r_predigit
}
Vitaliy Serdtsev · Jul 12, 2019 go to post

And if so?

<FONT COLOR="#0000ff">w $zobjref</FONT><FONT COLOR="#000000">(^||PPG(1)).</FONT><FONT COLOR="#0000ff">Name</FONT>

Still take a look at <FONT COLOR="#0000ff">$$$objOrefToInt</FONT>/<FONT COLOR="#0000ff">$$$objIntToOref</FONT> (%occObject.inc)

PS: it should be noted that OREF ≠ OID and serve different purposes.

Vitaliy Serdtsev · Jul 10, 2019 go to post

I found out the reason for the difference in the result BASIC256:

Instead

len = 10*n\4,

must be

len = 10*n\3,

Error on site.

Vitaliy Serdtsev · Jul 10, 2019 go to post

Translation of: LUA

<FONT COLOR="#ff0000">calcPILua</FONT><FONT COLOR="#000000">(n=1000) </FONT><FONT COLOR="#0000ff">public </FONT><FONT COLOR="#800080">{ 
  </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">len </FONT><FONT COLOR="#000000">= 10*</FONT><FONT COLOR="#800000">n</FONT><FONT COLOR="#000000">\3,
    </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= 0,
    </FONT><FONT COLOR="#800000">predigit </FONT><FONT COLOR="#000000">= 0
  
  </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">j</FONT><FONT COLOR="#000000">=1:1:</FONT><FONT COLOR="#800000">len </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">j</FONT><FONT COLOR="#000000">)=2
  
  </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">j</FONT><FONT COLOR="#000000">=1:1:</FONT><FONT COLOR="#800000">n </FONT><FONT COLOR="#800080">{
    </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=0
    </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">len</FONT><FONT COLOR="#000000">:-1:1 </FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">x </FONT><FONT COLOR="#000000">= 10*</FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">) + (</FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000"></FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">),
        </FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">)=</FONT><FONT COLOR="#800000">x</FONT><FONT COLOR="#000000">#(2</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">-1),
        </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">x</FONT><FONT COLOR="#000000">(2*</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">-1)
    </FONT><FONT COLOR="#800080">}
    </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(1)=</FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">#10,
      </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">\10
    </FONT><FONT COLOR="#0000ff">i </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=9 </FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">+ 1
    </FONT><FONT COLOR="#800080">}</FONT><FONT COLOR="#0000ff">elseif </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=10 </FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">predigit</FONT><FONT COLOR="#000000">+1
      </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">k </FONT><FONT COLOR="#000000">= 1:1:</FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#000000">0
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">predigit </FONT><FONT COLOR="#000000">= 0, </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= 0
    </FONT><FONT COLOR="#800080">}</FONT><FONT COLOR="#0000ff">else</FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">predigit
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">predigit </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800000">q
      </FONT><FONT COLOR="#0000ff">i </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#800080">{
        </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">k </FONT><FONT COLOR="#000000">= 1:1:</FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#000000">9
        </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= 0
      </FONT><FONT COLOR="#800080">}
    }
  }
  </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">predigit
</FONT><FONT COLOR="#800080">}</FONT>
The result of this example is exactly the same as the result of the program C# (tested at n=10000).
Vitaliy Serdtsev · Jul 10, 2019 go to post

Translation of: BASIC256

<FONT COLOR="#ff0000">calcPI</FONT><FONT COLOR="#000000">(n=1000) </FONT><FONT COLOR="#0000ff">public </FONT><FONT COLOR="#800080">{ 
  </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">len </FONT><FONT COLOR="#000000">= 10*</FONT><FONT COLOR="#800000">n</FONT><FONT COLOR="#000000">\4,
    </FONT><FONT COLOR="#800000">needdecimal </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#0000ff">$$$YES</FONT><FONT COLOR="#000000">,
    </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= 0,
    </FONT><FONT COLOR="#800000">predigit </FONT><FONT COLOR="#000000">= 0  </FONT><FONT COLOR="#008000">;# {First predigit is a 0}
   
  </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">j</FONT><FONT COLOR="#000000">=1:1:</FONT><FONT COLOR="#800000">len </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">j</FONT><FONT COLOR="#000000">-1)=2 </FONT><FONT COLOR="#008000">;# {Start with 2s}
  
  </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">j</FONT><FONT COLOR="#000000">=1:1:</FONT><FONT COLOR="#800000">n </FONT><FONT COLOR="#800080">{
    </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=0
    </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">len</FONT><FONT COLOR="#000000">:-1:1 </FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#008000">;#  {Work backwards}
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">x </FONT><FONT COLOR="#000000">= 10*</FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">-1) + (</FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000"></FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">),
        </FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">-1)=</FONT><FONT COLOR="#800000">x</FONT><FONT COLOR="#000000">#(2</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">-1),
        </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">x</FONT><FONT COLOR="#000000">(2*</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">-1)
    </FONT><FONT COLOR="#800080">}
    </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">a</FONT><FONT COLOR="#000000">(0)=</FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">#10,
      </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">\10
    </FONT><FONT COLOR="#0000ff">i </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=9 </FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">+ 1
    </FONT><FONT COLOR="#800080">}</FONT><FONT COLOR="#0000ff">elseif </FONT><FONT COLOR="#800000">q</FONT><FONT COLOR="#000000">=10 </FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">d </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800000">predigit</FONT><FONT COLOR="#000000">+1 </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#ff0000">outputd
      </FONT><FONT COLOR="#0000ff">i </FONT><FONT COLOR="#800000">nines</FONT><FONT COLOR="#000000">>0 </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">k </FONT><FONT COLOR="#000000">= 1:1:</FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">d </FONT><FONT COLOR="#000000">=  0 </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#ff0000">outputd
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">predigit </FONT><FONT COLOR="#000000">= 0, </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= 0
    </FONT><FONT COLOR="#800080">}</FONT><FONT COLOR="#0000ff">else</FONT><FONT COLOR="#800080">{
      </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">d </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800000">predigit</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#800000">predigit </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800000">q </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#ff0000">outputd
      </FONT><FONT COLOR="#0000ff">i </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#800080">{
        </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">k </FONT><FONT COLOR="#000000">= 1:1:</FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">d </FONT><FONT COLOR="#000000">= 9 </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#ff0000">outputd
        </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">nines </FONT><FONT COLOR="#000000">= 0
      </FONT><FONT COLOR="#800080">}
    }
  }
  </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">predigit
  </FONT><FONT COLOR="#0000ff">q
   
</FONT><FONT COLOR="#ff0000">outputd</FONT><FONT COLOR="#000000">()
  </FONT><FONT COLOR="#0000ff">if </FONT><FONT COLOR="#800000">needdecimal </FONT><FONT COLOR="#800080">{
     </FONT><FONT COLOR="#0000ff">q</FONT><FONT COLOR="#000000">:</FONT><FONT COLOR="#800000">d</FONT><FONT COLOR="#000000">=0
     </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">d</FONT><FONT COLOR="#000000">_</FONT><FONT COLOR="#008000">"."
     </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">needdecimal </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#0000ff">$$$NO
  </FONT><FONT COLOR="#800080">} </FONT><FONT COLOR="#0000ff">else </FONT><FONT COLOR="#800080">{
     </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">d
  </FONT><FONT COLOR="#800080">}
}</FONT>
The greater "n", the higher the accuracy.

If there is a lack of RAM, you can easily replace the local array "a" with globals ^||a or ^a.

Vitaliy Serdtsev · Jun 27, 2019 go to post
  w $$MyFunc(1),!,
    $$MyFunc(1,.V)," V=",V,!

MyFunc(p...)
  Answer=p_" params"
  s:p=2 p(2)="it's all good"
  Answer


USER>do ^test
1 params
2 params V=it's all good
Vitaliy Serdtsev · May 21, 2019 go to post

Can be easier:

<FONT COLOR="#000080">ClassMethod </FONT><FONT COLOR="#000000">GetPrivateProp(
  </FONT><FONT COLOR="#ff00ff">oref</FONT><FONT COLOR="#000000">,
  </FONT><FONT COLOR="#ff00ff">propName</FONT><FONT COLOR="#000000">) </FONT><FONT COLOR="#000080">As %String
</FONT><FONT COLOR="#000000">{
  </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">%Studio.General</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">DumpObjectExecute</FONT><FONT COLOR="#000000">(.</FONT><FONT COLOR="#800000">arr</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#800000">oref</FONT><FONT COLOR="#000000">)
  </FONT><FONT COLOR="#0000ff">q </FONT><FONT COLOR="#800000">arr</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">propName</FONT><FONT COLOR="#000000">)
}</FONT>
Vitaliy Serdtsev · May 21, 2019 go to post

Date and Time Constructs

Try this:
SELECT 
LBTS_RowID
,LBTS_CollectedDate
FROM SQLUser.LB_TestSet 
JOIN SQLUser.LB_Transfer ON ($LISTBUILD(LBTS_RowID) %INLIST LBTR_TestSetList)
WHERE LBTS_CollectedDate BETWEEN {'2019-01-01'} AND {'2019-05-10'}
Vitaliy Serdtsev · May 17, 2019 go to post

Try this:

<FONT COLOR="#000080">XData </FONT><FONT COLOR="#000000">Contents [ </FONT><FONT COLOR="#000080">XMLNamespace </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800080">"http://www.intersystems.com/zen" </FONT><FONT COLOR="#000000">]
{
<</FONT><FONT COLOR="#000080">page </FONT><FONT COLOR="#800000">xmlns</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"http://www.intersystems.com/zen"</FONT><FONT COLOR="#000000">>
  <</FONT><FONT COLOR="#000080">tableNavigatorBar </FONT><FONT COLOR="#800000">tablePaneId</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"tp1"</FONT><FONT COLOR="#000000">/>
    <</FONT><FONT COLOR="#000080">tablePane
      </FONT><FONT COLOR="#800000">id</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"tp1"
      </FONT><FONT COLOR="#800000">OnCreateResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"CreateRS"
      </FONT><FONT COLOR="#800000">OnExecuteResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"ExecuteRS"
      </FONT><FONT COLOR="#800000">maxRows</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"0"
      </FONT><FONT COLOR="#800000">pageSize</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"10"
      </FONT><FONT COLOR="#800000">useSnapshot</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"true"
    </FONT><FONT COLOR="#000000">>
    <</FONT><FONT COLOR="#000080">parameter </FONT><FONT COLOR="#800000">value</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"USER1"</FONT><FONT COLOR="#000000">/>
  </</FONT><FONT COLOR="#000080">tablePane</FONT><FONT COLOR="#000000">>
  <</FONT><FONT COLOR="#000080">tableNavigatorBar </FONT><FONT COLOR="#800000">tablePaneId</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"tp2"</FONT><FONT COLOR="#000000">/>
    <</FONT><FONT COLOR="#000080">tablePane
      </FONT><FONT COLOR="#800000">id</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"tp2"
      </FONT><FONT COLOR="#800000">OnCreateResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"CreateRS"
      </FONT><FONT COLOR="#800000">OnExecuteResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"ExecuteRS"
      </FONT><FONT COLOR="#800000">maxRows</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"0"
      </FONT><FONT COLOR="#800000">pageSize</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"10"
      </FONT><FONT COLOR="#800000">useSnapshot</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"true"
    </FONT><FONT COLOR="#000000">>
    <</FONT><FONT COLOR="#000080">parameter </FONT><FONT COLOR="#800000">value</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"USER2"</FONT><FONT COLOR="#000000">/>
  </</FONT><FONT COLOR="#000080">tablePane</FONT><FONT COLOR="#000000">>
</</FONT><FONT COLOR="#000080">page</FONT><FONT COLOR="#000000">>
}</FONT>
Vitaliy Serdtsev · May 17, 2019 go to post

For example so:

<FONT COLOR="#000080">Class dc.test Extends %ZEN.Component.page
</FONT><FONT COLOR="#000000">{

</FONT><FONT COLOR="#000080">XData </FONT><FONT COLOR="#000000">Style { <</FONT><FONT COLOR="#000080">style </FONT><FONT COLOR="#800000">type</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"text/css"</FONT><FONT COLOR="#000000">> </</FONT><FONT COLOR="#000080">style</FONT><FONT COLOR="#000000">> }

</FONT><FONT COLOR="#000080">XData </FONT><FONT COLOR="#000000">Contents [ </FONT><FONT COLOR="#000080">XMLNamespace </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#800080">"http://www.intersystems.com/zen" </FONT><FONT COLOR="#000000">] { <</FONT><FONT COLOR="#000080">page </FONT><FONT COLOR="#800000">xmlns</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"http://www.intersystems.com/zen"</FONT><FONT COLOR="#000000">>   <</FONT><FONT COLOR="#000080">tablePane     </FONT><FONT COLOR="#800000">OnCreateResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"CreateRS"     </FONT><FONT COLOR="#800000">OnExecuteResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"ExecuteRS"   </FONT><FONT COLOR="#000000">>     <</FONT><FONT COLOR="#000080">parameter </FONT><FONT COLOR="#800000">name</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"ns" </FONT><FONT COLOR="#800000">value</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"USER1"</FONT><FONT COLOR="#000000">/>   </</FONT><FONT COLOR="#000080">tablePane</FONT><FONT COLOR="#000000">>   <</FONT><FONT COLOR="#000080">tablePane     </FONT><FONT COLOR="#800000">OnCreateResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"CreateRS"     </FONT><FONT COLOR="#800000">OnExecuteResultSet</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"ExecuteRS"   </FONT><FONT COLOR="#000000">>     <</FONT><FONT COLOR="#000080">parameter </FONT><FONT COLOR="#800000">name</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"ns" </FONT><FONT COLOR="#800000">value</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"USER2"</FONT><FONT COLOR="#000000">/>   </</FONT><FONT COLOR="#000080">tablePane</FONT><FONT COLOR="#000000">> </</FONT><FONT COLOR="#000080">page</FONT><FONT COLOR="#000000">> }

</FONT><FONT COLOR="#000080">Method </FONT><FONT COLOR="#000000">ExecuteRS(   </FONT><FONT COLOR="#ff00ff">myRS </FONT><FONT COLOR="#000080">As %ResultSet</FONT><FONT COLOR="#000000">,   </FONT><FONT COLOR="#000080">Output </FONT><FONT COLOR="#ff00ff">pSC </FONT><FONT COLOR="#000080">As %Status</FONT><FONT COLOR="#000000">,   </FONT><FONT COLOR="#ff00ff">pInfo </FONT><FONT COLOR="#000080">As %ZEN.Auxiliary.QueryInfo</FONT><FONT COLOR="#000000">) </FONT><FONT COLOR="#000080">As %Boolean </FONT><FONT COLOR="#000000">{   </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#800000">myRS</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Prepare</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"select * from xyz"</FONT><FONT COLOR="#000000">)   </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#800000">myRS</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Execute</FONT><FONT COLOR="#000000">()   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">tSC</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#0000ff">$$$OK   q $$$YES </FONT><FONT COLOR="#000000">}

</FONT><FONT COLOR="#000080">Method </FONT><FONT COLOR="#000000">CreateRS(   </FONT><FONT COLOR="#000080">Output </FONT><FONT COLOR="#ff00ff">tSC </FONT><FONT COLOR="#000080">As %Status</FONT><FONT COLOR="#000000">,   </FONT><FONT COLOR="#ff00ff">pInfo </FONT><FONT COLOR="#000080">As %ZEN.Auxiliary.QueryInfo</FONT><FONT COLOR="#000000">) </FONT><FONT COLOR="#000080">As %ResultSet </FONT><FONT COLOR="#000000">{   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">rs</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">%RemoteResultSet</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">%New</FONT><FONT COLOR="#000000">()   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">rs</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">UserName</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"_system"   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">rs</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Password</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"SYS"   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">rs</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">ConnectionString</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#0000ff">$$$FormatText</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"localhost[%1]:%2"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">%SQL.Manager.API</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">GetPort</FONT><FONT COLOR="#000000">(),</FONT><FONT COLOR="#800000">pInfo</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">parms</FONT><FONT COLOR="#000000">(1))   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">tSC</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#0000ff">$$$OK   q </FONT><FONT COLOR="#800000">rs </FONT><FONT COLOR="#000000">}

}</FONT>

Vitaliy Serdtsev · May 17, 2019 go to post

For example so:

<FONT COLOR="#000080">Class myapp.jsonProvider Extends %ZEN.Auxiliary.jsonProvider
</FONT><FONT COLOR="#000000">{

</FONT><FONT COLOR="#000080">ClassMethod </FONT><FONT COLOR="#000000">getOrderedProps(   </FONT><FONT COLOR="#ff00ff">pClass </FONT><FONT COLOR="#000080">As %Dictionary.CompiledClass</FONT><FONT COLOR="#000000">,   </FONT><FONT COLOR="#000080">ByRef </FONT><FONT COLOR="#ff00ff">pList</FONT><FONT COLOR="#000000">) [ </FONT><FONT COLOR="#000080">Internal </FONT><FONT COLOR="#000000">] {   </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#000080">##super</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">pClass</FONT><FONT COLOR="#000000">,.</FONT><FONT COLOR="#800000">pList</FONT><FONT COLOR="#000000">)

  </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">key </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#008000">"" </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800080">{ </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">key </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#0000ff">$o</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">pList</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">key</FONT><FONT COLOR="#000000">))  </FONT><FONT COLOR="#0000ff">q</FONT><FONT COLOR="#000000">:</FONT><FONT COLOR="#008000">""</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">key     </FONT><FONT COLOR="#0000ff">zk</FONT><FONT COLOR="#000000">:</FONT><FONT COLOR="#0000ff">$lf</FONT><FONT COLOR="#000000">(^||skipProps,</FONT><FONT COLOR="#800000">pList</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">key</FONT><FONT COLOR="#000000">)) </FONT><FONT COLOR="#800000">pList</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">key</FONT><FONT COLOR="#000000">)   </FONT><FONT COLOR="#800080">} </FONT><FONT COLOR="#000000">}

}</FONT>

<FONT COLOR="#000080">Class myapp.myclass Extends %RegisteredObject </FONT><FONT COLOR="#000000">{

</FONT><FONT COLOR="#000080">Property </FONT><FONT COLOR="#000000">property1 </FONT><FONT COLOR="#000080">As %String</FONT><FONT COLOR="#000000">;

</FONT><FONT COLOR="#000080">Property </FONT><FONT COLOR="#000000">property2 </FONT><FONT COLOR="#000080">As %String</FONT><FONT COLOR="#000000">;

</FONT><FONT COLOR="#000080">Property </FONT><FONT COLOR="#000000">property3 </FONT><FONT COLOR="#000080">As %String</FONT><FONT COLOR="#000000">;

</FONT><FONT COLOR="#000080">/// d ##class(myapp.myclass).Test() ClassMethod </FONT><FONT COLOR="#000000">Test() {   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">myClass </FONT><FONT COLOR="#000000">= ..</FONT><FONT COLOR="#0000ff">%New</FONT><FONT COLOR="#000000">()   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">myClass</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">property1 </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#008000">"value 1"   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">myClass</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">property2 </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#008000">"value 2"   </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">myClass</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">property3 </FONT><FONT COLOR="#000000">= </FONT><FONT COLOR="#008000">"value 3"      </FONT><FONT COLOR="#0000ff">f </FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#0000ff">$lb</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"property3"</FONT><FONT COLOR="#000000">),</FONT><FONT COLOR="#0000ff">$lb</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"property2"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">"property1"</FONT><FONT COLOR="#000000">) </FONT><FONT COLOR="#800080">{     </FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#000000">^||skipProps=</FONT><FONT COLOR="#800000">i     </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">myapp.jsonProvider</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">%WriteJSONStreamFromObject</FONT><FONT COLOR="#000000">(.</FONT><FONT COLOR="#800000">tStream</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#800000">myClass</FONT><FONT COLOR="#000000">,,,</FONT><FONT COLOR="#0000ff">$$$YES</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">"ed"</FONT><FONT COLOR="#000000">)     </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#008000">"skip:"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#0000ff">$lts</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">i</FONT><FONT COLOR="#000000">),?25,</FONT><FONT COLOR="#008000">" -> "</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#800000">tStream</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Read</FONT><FONT COLOR="#000000">(),!   </FONT><FONT COLOR="#800080">} </FONT><FONT COLOR="#000000">}

}</FONT>

USER><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">myapp.myclass</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">Test</FONT><FONT COLOR="#000000">()</FONT> skip:property3 -> <FONT COLOR="#ff00ff">{</FONT><FONT COLOR="#008000">"property1"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#008000">"value 1"</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#008000">"property2"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#008000">"value 2"</FONT><FONT COLOR="#ff00ff">}</FONT> skip:property2,property1 -> <FONT COLOR="#ff00ff">{</FONT><FONT COLOR="#008000">"property3"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#008000">"value 3"</FONT><FONT COLOR="#ff00ff">}</FONT>

Vitaliy Serdtsev · May 8, 2019 go to post

Made a small demo with two options.

Include %occResultSet

Class dc.test Abstract ]
{

ClassMethod MultiRS(As %Integer) [ ReturnResultsetsSqlProc ]
{
  i#2 {
    $$$ResultSet("select 'Name1_1' s1,'Name2_1' s2 union all select 'Name1_2','Name2_2'")
  else {
    $$$ResultSet("select 1 i1,4 i2,3 i3 union all select 2,5,6 union all select 3,6,9")
    $$$ResultSet("select '+1' n union all select '-2' union all select '3.1' union all select '4_4'")
  }
}

Query MyCustomQueryCube(pCubeName As %StringAs %Query SqlProc ]
{
}

ClassMethod MyCustomQueryCubeExecute(
  ByRef qHandle As %Binary,
  pCubeName As %StringAs %Status
{
  qHandle("pCubeName")=pCubeName

  pCubeName="a" {
    N=2 i=1:1:qHandle(N+1-i)=$lb("Name1_"_i,"Name2_"_i)
  }else{
    N=3 i=1:1:qHandle(N+1-i)=$lb(i,i+3,i*3)
  }
  qHandle=N
  q $$$OK
}

ClassMethod MyCustomQueryCubeFetch(
  ByRef qHandle As %Binary,
  ByRef Row As %List,
  ByRef AtEnd As %Integer 0As %Status PlaceAfter = MyCustomQueryCubeExecute ]
{
  qHandle=0 {
    Row=""
    AtEnd=1
  }else{
    Row=qHandle(qHandle)
    qHandle=qHandle-1
  }
  q $$$OK
}

ClassMethod MyCustomQueryCubeClose(ByRef qHandle As %BinaryAs %Status PlaceAfter = MyCustomQueryCubeFetch ]
{
  qHandle
  q $$$OK
}

ClassMethod MyCustomQueryCubeGetInfo(
  ByRef colinfo As %List,
  ByRef parminfo As %List,
  ByRef idinfo As %List,
  ByRef qHandle As %Binary,
  extoption As %Integer 0,
  ByRef extinfo As %ListAs %Status
{
  qHandle("pCubeName")="a" {
    colinfo=$lb($lb("s1",10,"s1"),$lb("s2",10,"s2"))
  }else{
    colinfo=$lb($lb("i1",5,"i1"),$lb("i2",5,"i2"),$lb("i3",5,"i3"))
  }
  parminfo=$lb($lb("pCubeName","10"))
  idinfo=$lb(0,"")
  q $$$OK
}

ClassMethod MyCustomQueryCubeGetODBCInfo(
  ByRef colinfo As %List,
  ByRef parminfo As %List,
  ByRef qHandle As %BinaryAs %Status
{
  qHandle("pCubeName")="a" {
    colinfo=$lb(2,
                  "s1",12,50,0,2,"s1","test","dc","",$c(0,0,0,0,0,0,0,0,0,0,0,0),
                  "s2",12,50,0,2,"s2","test","dc","",$c(0,0,0,0,0,0,0,0,0,0,0,0)
                 )
  }else{
    colinfo=$lb(3,
                  "i1",4,10,0,2,"i1","test","dc","",$c(0,0,0,0,0,0,0,0,0,0,0,0),
                  "i2",4,10,0,2,"i2","test","dc","",$c(0,0,0,0,0,0,0,0,0,0,0,0),
                  "i3",4,10,0,2,"i3","test","dc","",$c(0,0,0,0,0,0,0,0,0,0,0,0)
                 )
  }
  parminfo=$lb(1,12,50,0,2,"pCubeName",1)
  q $$$OK
}

/// d ##class(dc.test).Test()
ClassMethod Test()
{
  try{

    rs=##class(%SQL.Statement).%New()

    $$$ThrowOnError(rs.%PrepareClassQuery("dc.test","MyCustomQueryCube"))
    i="a","b" rs.%Execute(i).%Display()
    
    !!,"=============="
    
    $$$ThrowOnError(rs.%Prepare("call dc.test_MultiRS(?)"))
    i=0,1 rs.%Execute(i).%Display()
    
  }catch(ex){
    "Error "ex.DisplayString(),!
  }
}

}

USER>##class(dc.test).Test()
 
 
Dumping result #1
s1      s2
Name1_1 Name2_1
Name1_2 Name2_2
 
2 Rows(s) Affected
 
Dumping result #1
i1      i2      i3
1       4       3
2       5       6
3       6       9
 
3 Rows(s) Affected
 
==============
 
Dumping result #1
i1      i2      i3
1       4       3
2       5       6
3       6       9
 
3 Rows(s) Affected
 
Dumping result #2
n
+1
-2
3.1
4_4
 
4 Rows(s) Affected
 
Dumping result #1
s1      s2
Name1_1 Name2_1
Name1_2 Name2_2
 
2 Rows(s) Affected
Vitaliy Serdtsev · May 3, 2019 go to post
delim " "abbrv ""
...
set abbrv abbrv $e($PIECE(desc,delim,i),1,2)   // But if I put w abbrv  I can get "Resytorewipa"
Vitaliy Serdtsev · May 3, 2019 go to post
Also I'm curious if we can set up and pass a JSON that easily too? Would be great.
Certainly.
Class dc.test Extends %RegisteredObject
{

</FONT><FONT COLOR="#000080">ClassMethod </FONT><FONT COLOR="#000000">MethodTest(</FONT><FONT COLOR="#ff00ff">args </FONT><FONT COLOR="#000080">As %DynamicObject</FONT><FONT COLOR="#000000">) {  </FONT><FONT COLOR="#0000ff">i $IsObject</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">args</FONT><FONT COLOR="#000000">) </FONT><FONT COLOR="#800080">{    </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#800000">args</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">%ToJSON</FONT><FONT COLOR="#000000">(),!    </FONT><FONT COLOR="#0000ff">w</FONT><FONT COLOR="#000000">:</FONT><FONT COLOR="#800000">args</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">%IsDefined</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"arr"</FONT><FONT COLOR="#000000">) </FONT><FONT COLOR="#800000">args</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">arr</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">"2"</FONT><FONT COLOR="#000000">,!  </FONT><FONT COLOR="#800080">}</FONT><FONT COLOR="#0000ff">else</FONT><FONT COLOR="#800080">{    </FONT><FONT COLOR="#0000ff">w </FONT><FONT COLOR="#008000">"null"</FONT><FONT COLOR="#000000">,!  </FONT><FONT COLOR="#800080">} </FONT><FONT COLOR="#000000">}

</FONT><FONT COLOR="#000080">ClassMethod </FONT><FONT COLOR="#000000">Test() {   </FONT><FONT COLOR="#008000">;d ##class(dc.test).Test()   </FONT><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#000000">..</FONT><FONT COLOR="#0000ff">MethodTest</FONT><FONT COLOR="#000000">(),     ..</FONT><FONT COLOR="#0000ff">MethodTest</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#ff00ff">{}</FONT><FONT COLOR="#000000">),     ..</FONT><FONT COLOR="#0000ff">MethodTest</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#ff00ff">{</FONT><FONT COLOR="#008000">"arg1"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#0000ff">$zts</FONT><FONT COLOR="#000000">)</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#008000">"arg6"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#008000">"hello"</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#008000">"arr"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#ff00ff">[</FONT><FONT COLOR="#008000">"a"</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#000000">10</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#0000ff">true</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#000000">2.5674</FONT><FONT COLOR="#ff00ff">]}</FONT><FONT COLOR="#000000">) }

}</FONT>

Result:
USER><FONT COLOR="#0000ff">d </FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">dc.test</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">Test</FONT><FONT COLOR="#000000">()</FONT>
null
<FONT COLOR="#ff00ff">{}</FONT>
<FONT COLOR="#ff00ff">{</FONT><FONT COLOR="#008000">"arg1"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#008000">"65136,19638.022"</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#008000">"arg6"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#008000">"hello"</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#008000">"arr"</FONT><FONT COLOR="#808080">:</FONT><FONT COLOR="#ff00ff">[</FONT><FONT COLOR="#008000">"a"</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#000000">10</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#0000ff">true</FONT><FONT COLOR="#808080">,</FONT><FONT COLOR="#000000">2.5674</FONT><FONT COLOR="#ff00ff">]}</FONT>
1
Vitaliy Serdtsev · Apr 24, 2019 go to post

First, should be so (AttachFile):

<FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">status</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">AttachFile</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"F:\MyDir"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">"myFirstFile.pdf"</FONT><FONT COLOR="#000000">,1,,.</FONT><FONT COLOR="#800000">count</FONT><FONT COLOR="#000000">)

</FONT><FONT COLOR="#0000ff">s </FONT><FONT COLOR="#800000">status</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">AttachFile</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"F:\MyDir"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">"mySecondFile.pdf"</FONT><FONT COLOR="#000000">,1,,.</FONT><FONT COLOR="#800000">count</FONT><FONT COLOR="#000000">)</FONT>

Second, you did not specify the error text.

Try the following simple MAC-example, replacing the values with your own:
#include %systemInclude
new

try</FONT><FONT COLOR="#800080">{

  </FONT><FONT COLOR="#0000ff">$$$AddAllRoleTemporaryInTry   new $namespace      set </FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">%Net.MailMessage</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">%New</FONT><FONT COLOR="#000000">()

  </FONT><FONT COLOR="#0000ff">set </FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Subject</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"Subject"

  </FONT><FONT COLOR="#0000ff">set </FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">From</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"from@domain"

  </FONT><FONT COLOR="#0000ff">do </FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">To</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Insert</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"to@domain"</FONT><FONT COLOR="#000000">)

  </FONT><FONT COLOR="#0000ff">do </FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">TextData</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Write</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"Hello!"</FONT><FONT COLOR="#000000">)      </FONT><FONT COLOR="#0000ff">$$$ThrowOnError</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">AttachFile</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"F:\MyDir"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">"myFirstFile.pdf"</FONT><FONT COLOR="#000000">))   </FONT><FONT COLOR="#0000ff">$$$ThrowOnError</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">AttachFile</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008000">"F:\MyDir"</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#008000">"mySecondFile.pdf"</FONT><FONT COLOR="#000000">))

  </FONT><FONT COLOR="#0000ff">set </FONT><FONT COLOR="#800000">smtp</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#000080">##class</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#008080">%Net.SMTP</FONT><FONT COLOR="#000000">).</FONT><FONT COLOR="#0000ff">%New</FONT><FONT COLOR="#000000">()   </FONT><FONT COLOR="#0000ff">set </FONT><FONT COLOR="#800000">smtp</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">smtpserver</FONT><FONT COLOR="#000000">=</FONT><FONT COLOR="#008000">"123.145.167.189"

  </FONT><FONT COLOR="#0000ff">$$$ThrowOnError</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">smtp</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">Send</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">msg</FONT><FONT COLOR="#000000">))        </FONT><FONT COLOR="#800080">}</FONT><FONT COLOR="#0000ff">catch</FONT><FONT COLOR="#000000">(</FONT><FONT COLOR="#800000">ex</FONT><FONT COLOR="#000000">)</FONT><FONT COLOR="#800080">{   </FONT><FONT COLOR="#0000ff">write </FONT><FONT COLOR="#008000">"Error "</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#800000">ex</FONT><FONT COLOR="#000000">.</FONT><FONT COLOR="#0000ff">DisplayString</FONT><FONT COLOR="#000000">(),! </FONT><FONT COLOR="#800080">}</FONT>

Vitaliy Serdtsev · Apr 23, 2019 go to post
res=##class(%SQL.Statement).%ExecDirect(,$$$FormatText("CREATE TABLE %1 (TNAMESPACE CHAR(100),TINTERFACE CHAR(100))",$$$quote("xxxxx"_$USERNAME)))

res.%SQLCODE
Vitaliy Serdtsev · Apr 16, 2019 go to post

See examples and try "Run It" in JSON_ARRAYAGG.

E.g.:
  1. SELECT JSON_ARRAYAGG(Home_StateFROM Sample.Person WHERE Home_State %STARTSWITH 'A'
    Result:
    ["AR","AL","AR","AL","AL","AR","AK","AL","AR","AK","AK","AZ","AR","AR","AL"]
  2. SELECT JSON_OBJECT('state':Home_StateFROM Sample.Person WHERE Home_State %STARTSWITH 'A'
    Result:
    {"state":"AR"}{"state":"AL"}{"state":"AR"}{"state":"AL"}{"state":"AL"}{"state":"AR"}{"state":"AK"}{"state":"AL"}{"state":"AR"}{"state":"AK"}{"state":"AK"}{"state":"AZ"}{"state":"AR"}{"state":"AR"}{"state":"AL"}
  3. SELECT JSON_ARRAYAGG(JSON_OBJECT('state':Home_State)) FROM Sample.Person WHERE Home_State %STARTSWITH 'A'
    Result:
    [{"state":"AR"},{"state":"AL"},{"state":"AR"},{"state":"AL"},{"state":"AL"},{"state":"AR"},{"state":"AK"},{"state":"AL"},{"state":"AR"},{"state":"AK"},{"state":"AK"},{"state":"AZ"},{"state":"AR"},{"state":"AR"},{"state":"AL"}]