Martin,

My example would be better with

Status = jObject.Do("a=.'hello world'")

Here is the information from the Excel Object Browser.  It is not complete 
documentation.
---
Function Break() As Long
     Member of JDLLServerLib.JDLLServer
     Break (interrupt) J execution.

Function Clear() As Long
     Member of JDLLServerLib.JDLLServer
     Clear all J memory allocations. Erases all J variables and definitions.

Function Do(input As String) As Long
     Member of JDLLServerLib.JDLLServer
     Execute string.

Function DoR(input As String, v) As Long
     Member of JDLLServerLib.JDLLServer
     Execute string and return formatted output in BSTR.

Function ErrorText(error As Long, v) As Long
     Member of JDLLServerLib.JDLLServer
     Get variant with error code text.

Function ErrorTextB(error As Long, v) As Long
     Member of JDLLServerLib.JDLLServer
     Get variant BSTR with error code text.

Function ErrorTextM(error As Long, text As Long) As Long
     Member of JDLLServerLib.JDLLServer
     Get memory address of error code text.

Function Get(jname As String, v) As Long
     Member of JDLLServerLib.JDLLServer
     Get variant value from J variable.

Function GetB(jname As String, v) As Long
     Member of JDLLServerLib.JDLLServer
     Get variant value from J variable (BSTR).

Function GetM(jname As String, jtype As Long, jrank As Long, jshape As Long, 
jdata As Long) As Long
     Member of JDLLServerLib.JDLLServer
     Get J variable description and memory addresses of shape and data.

Function IsBusy() As Long
     Member of JDLLServerLib.JDLLServer
     Returns 0 if ready to execute a line, or an error code if not ready.

Function Log(b As Long) As Long
     Member of JDLLServerLib.JDLLServer
     Display (1) or discard (0) J EXE Server session manager input and output.

Function Quit() As Long
     Member of JDLLServerLib.JDLLServer
     Quit causes J EXE Server to close when last object is released.

Function Set(jname As String, v) As Long
     Member of JDLLServerLib.JDLLServer
     Set variant value in J variable.

Function SetB(jname As String, v) As Long
     Member of JDLLServerLib.JDLLServer
     Set variant value in J variable (BSTR).

Function SetM(jname As String, jtype As Long, jrank As Long, jshape As Long, 
jdata As Long) As Long
     Member of JDLLServerLib.JDLLServer
     Set J variable from description and memory addresses of shape and data.

Function Show(b As Long) As Long
     Member of JDLLServerLib.JDLLServer
     Show (1) or hide (0) J EXE Server.

Function Transpose(b As Long) As Long
     Member of JDLLServerLib.JDLLServer
     Enable/disable (1/0) row-major(variant)/row-minor(J) conversions.
--
David Mitchell




On 4/16/2010 12:57, Bartsch, Martin wrote:
> Hello all,
>
> Because of a workshop, I was offline for two days.
> So, I have to apologise for giving this response a little bit late.
>
> @David : Your solution is most helpful. It works very well. - Thank you very 
> much.
>
> @Chistoph : replacing line 3 with js.getb("a",x) gives a "type 
> mismatch"-error on my machine ("Typen unverträglich")
>
> @Richard : I cannot find the article "Using J in Excel". A search on the 
> wiki-page gives me no results.
>             The documentation I am working on is "J OLE Server for Excel", "J 
> OLE Automation Server" and the textfiles
>             from the examples/ole/excel-directory.
>
> @Bill : replacing a=. with a=: makes no difference on my machine.
>
>
> I was not aware of the Jserver-Methods DoR and GetB. They are not documented 
> in the J OLE Automation Server-documentation.
> Is there any complete documentation on the J server methods ?
>
> Once again, thanks to all of you.
>
> Cheers,
>
>        Martin
>
>
> P.S. : I cannot find a respond-button on the forum-pages. So I just set the 
> digestmode to off and hope to follow the treestructure of the thread next 
> time.
>         But have the feeling that this will once again start a new thread. 
> Sorry for that.
>
>
>
>
>
>
>
>>> Hello,
>>>
>>> I´m going to use the J OLE Server for Excel in one project.
>>> This seems to me a great solution where everyone wants to use excel and I 
>>> want to develop the software in my language of choice J.
>>>
>>> So far I have one issue with getting strings out of J into Excel-VBA.
>>> The following example gives two different values for x ("?????") and a 
>>> ("hello world").
>>>
>>> 1 Sub jserver_issue()
>>> 2   ec = js.do("a=.'hello world'")
>>> 3   ec = js.get("a", x)
>>> 4   MsgBox x
>>> 5   ec = js.do("wdinfo a")
>>> 6 End Sub
>>>
>>> Is this a normal / expected behaviour ?
>>> Has anyone found the same issue or am I doing something wrong ?
>>>
>>> Thanks for help,
>>>
>>> Martin
>>
>> This works for me:
>>
>>      Sub Main()
>>          Dim jObject As New JDLLServerLib.JDLLServer
>>          Dim rObject As Variant
>>
>>          Status = jObject.DoR("a=.'hello world'", rObject)
>>          Status = jObject.DoR("a", rObject)
>>          MsgBox ("J Local Assignment:"&  Str(Status)&  " and result"&  
>> vbCrLf&
>> rObject)
>>          Status = jObject.DoR("a=:'hello world'", rObject)
>>          Status = jObject.DoR("a", rObject)
>>          MsgBox ("J Global Assignment:"&  Str(Status)&  " and result"&  
>> vbCrLf&
>> rObject)
>>
>>          Status = jObject.DoR(">(4 8 i.3!:0<.2^33){'Got J64';'Got J32'", 
>> rObject)
>>          MsgBox ("J DoR ended with status"&  Str(Status)&  " and result"&
>> vbCrLf&  rObject)
>>          jObject.Quit
>>      End Sub
>>
>> --
>> David Mitchell
>
>
>
>
> Cheers
>
>
> Martin
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to