Hello Jim,
Thanks for your participation in the discussion :)
> Are writing a pure C program and wish to call in to subroutines etc?
Yes, that's the idea. Actually the final goal is wider, namely to write a
Python extension in C that would call JBC functions. Basically I managed to
do it but this excessive session is something would be good to get rid of.
I've applied jbc -S myrtn.b for a simple code already which results in
producing 2 files: myrtn.c and the myrtn.j, the latter one being included
into the .c one via #include "myrtn.j".
But in the .j file already we can see the lines like
#define DEF_SEL_VAR JLibReturnDefaultSelect(dp) /* Default select list
for this program */
#define DEF_FILE_VAR JLibReturnDefaultFile(dp) /* Default file
descriptor for this program */
i.e. dp is supposed to be initialized already by the moment myrtn is called.
I've managed to find the next dp related functions mentioned in some
libraries
jbase_getdp() - this works, i.e. initializes dp, but creates a new session
jbase_getdp_nocreate() - not working if called alone. but it works and
returns the dp1 value when called after jbase_getdp(), and dp1 = dp in this
case
jbase_getdpEX() - not sure what it should do
jbase_setdpEX() - not sure what it should do
Please see the sample piece of code
#include <jsystem.h>
extern "C" DPSTRUCT *jbase_getdp();
...
PyMODINIT_FUNC
jbc_oconv(PyObject*, PyObject* _args)
{
...
DPSTRUCT *dp = jbase_getdp();
OCONV_BBBBB(result, tmp, VarHelper(arg1), VarHelper(arg2)); // this if
defined in jsystem.h as #define OCONV_BBBBB(Target, ConvReg, Source,
Conversion) JLibGConvRun(*dp*, ConvReg, Target, Source, Conversion, 1)
...
}
I've tried to read the jmainfunction.obj as well where some other jbase
related functions are mentioned but could not figure out any useful one...
Maybe there is something I am missing or some non-documented function?
Would appreciate any hints! :)
Thanks
Igor
среда, 4 марта 2020 г., 8:11:30 UTC+1 пользователь Jim Idle написал:
>
> Wow - it has been a long time since that code ;) However, what you ask is
> possible I believe. It depends on your context. Are writing a pure C
> program and wish to call in to subroutines etc?
>
> Probably the best place to start is to generate the C code for a very
> small jBC program:
>
> lufc.b
> CRT "Leeds United are Magic!"
>
> jbc -S lufc.b
>
> Then you will see the startup sequence for a standard executable and can
> copy the code.
>
> However, my memory is vague, but I think that we had a C function you can
> call to do what you are doing and that will return the dp for reuse. It
> get's passed to subroutines for instance.
>
> Perhaps you can post the code you currently have.
>
> Jim
>
> On Wed, Mar 4, 2020 at 3:19 AM Igor Osmolovskiy <[email protected]
> <javascript:>> wrote:
>
>> Dear all
>>
>> I need the jBase DP (data pointer) to be initialized. I've actually
>> managed to initialize it by calling the jbase_getdp(). But in both cases
>> the new child session is created in jshell (and gets removed automatically
>> after the code has been executed).
>>
>> So I am wondering: is there a possibility to retrieve and use the current
>> session DP somehow? So that no child session would get created
>>
>> Any advice would be highly appreciated
>>
>> Thanks in advance
>>
>>
>> PS: to the admin, it is actually a jBase related question rather than
>> TAFC. Thanks
>>
>>
>> Kind regards,
>> Igor
>>
>> --
>> --
>> IMPORTANT: T24/Globus posts are no longer accepted on this forum.
>>
>> To post, send email to [email protected] <javascript:>
>> To unsubscribe, send email to [email protected] <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/jBASE?hl=en
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "jBASE" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/jbase/73153581-25ae-493a-95f6-8afc5cdf7813%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/jbase/73153581-25ae-493a-95f6-8afc5cdf7813%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
--
--
IMPORTANT: T24/Globus posts are no longer accepted on this forum.
To post, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/jBASE?hl=en
---
You received this message because you are subscribed to the Google Groups
"jBASE" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jbase/c010b5b5-199a-42b8-a7fa-2b351052c29f%40googlegroups.com.