× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Jon,

Thanks a lot for your valuable suggestions. I will use this in future while
creating similar pointer related programs.

Regards,
Suren


On Wed, May 12, 2021 at 8:31 PM Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:

Re your pointer usage.

For future reference you might want to consider either:

a) Also passing a length for the variable as well as the pointer. That
would allow you to define a generic large field for mapping purposes and to
use %Subst to address the variable to be processed. i.e. for parm1 and
parm1_len it would be %Subst( parm1 : 1 : parm1_len ). This avoids any
possibility of the kind of corruption you experienced. Even for the current
approach it would be safer to use template fields and always use them to
define the parms with LIKE. less likely for some maintenance programmer to
screw up in the future.

b) Another approach which I have used in the past for this kind of
scenario is to use variable length fields. That way RPG will effectively do
the %Subst for you and you can always directly interrogate the length
passed if you ever needed it.

I appreciate that you might be past this point by now but for the benefit
of others reading this thread later it might be useful.


Jon Paris


On May 12, 2021, at 12:53 AM, Suren K <suren7437@xxxxxxxxx> wrote:

Hi Jon,

I customized based on my application and made some generic logic inside
the
Parser, like Data truncation validation, Data type mismatch validations
and
data translation like Male to M/Female to F... All these customization
will
work based on my application configurations...

Regards,
Suren

On Wed, May 12, 2021, 4:13 AM Jon Paris <jon.paris@xxxxxxxxxxxxxx>
wrote:

Glad you got it sorted.

Can we ask what customizations you have made? Do they offer additional
features that the rest of us could benefit from?



On May 11, 2021, at 3:20 PM, Suren K <suren7437@xxxxxxxxx> wrote:

Hi All,

Identified the Issue.

I customized Skott Klements Parser YAJLINTO and named it as PARSERINTO.
Also passed extra values as input in the user parameter portion of
DATA-INTO opcode.

The issue here is, the user parameter value length defined in the
Service
program module (DATA-INTO) is 9500 Character, and the same user
parameter
pointer is mapped to an work variable in the customized parser program
whose length is 10000 character. These two are not in sync.

When I changed the user parameter length in the Service program module
as
10000 Character, it worked fine:)!!!

Special thanks to Mark and Jon for helping me out to identify the
issue:).

Regards,
Suren

On Tue, May 11, 2021 at 8:05 PM Jon Paris <jon.paris@xxxxxxxxxxxxxx>
wrote:

In that case my best guess is that the data/pointer is being corrupted
due
to a length mismatch somewhere along the line.

As to the pointers - you could deal with it without pointers by simply
using varsize as a parameter option. But I see why you did it.

So you are passing these pointers by value?


Jon

On May 11, 2021, at 12:53 AM, Suren K <suren7437@xxxxxxxxx> wrote:

Hi Jon,

I have verified the pointer parameters value using EVAL P00_OutPtr:c
1000
in debug mode. All the pointers have valid values.

This is a skeleton program, which I will be using the same skeleton
for
every new IWS transaction. All other services are working fine. I am
facing
the issue with this newly created transaction alone.

Why I used a pointer as a parameter, my transaction flow is like
Service
Program -> Program B -> Program C -> Processing program. For all the
IWS
transactions Program B and Program C are common which will do some
generic
processing and will send the JSON body parameter as is to the next
program
without touching.

So for some transactions JSON body will be of 1000 length data and
for
some
20000 length data. So I passed as a pointer by allocating the size in
the
Service program and using the same size in the processing program for
doing
the process.

Regards,
Suren




On Tue, May 11, 2021 at 1:07 AM Jon Paris <jon.paris@xxxxxxxxxxxxxx>
wrote:

Have you looked at the pointers to see if they are valid? The error
message would hint that one of them is not. Easy enough to see in
debug.

The fact that the explosion occurs during initialization would hint
at
bad
parms.

Not sure why you are passing pointers - not the most usual and
error-proof
way of passing parms.


Jon Paris

On May 10, 2021, at 12:23 PM, Suren K <suren7437@xxxxxxxxx> wrote:

Hi Jon,

Wrk_Input is just a character field with length 10000.

Also, looks like the issue is not with the data-gen program, it
looks
like
some other issue. If I remove the data-gen code and move the JSON
value
as
a hard coded value, then I am getting the same set of errors with
the
next
call program command.

Example,

// data-gen DS_Input %data(Wrk_Input:'doc=string countprefix=num_')
Commented this line
// %gen('YAJLDTAGEN');

P00_Header = Wrk_Header;
P00_InpPtr = %addr(Wrk_Input);
P00_ErrPtr = %addr(ED_Errors);
P00_WrnPtr = %addr(ED_Warnings);
P00_OutPtr = %addr(DS_Output);

// Call the Architecture Program to process the Request
Pr_PROGRAMA(P00_Header:P00_InpPtr:P00_WrnPtr:
P00_ErrPtr:P00_OutPtr:httpSts);

I am getting the below errors
Ownership of object FLDSPACE in QTEMP type *USRSPC changed.
Pointer not set for location referenced.
Error caused procedure PROGRAMA in program *LIBL/PROGRAMA to stop
during initialization.

Regards,
Suren

On Mon, May 10, 2021 at 9:43 PM Jon Paris <
jon.paris@xxxxxxxxxxxxxx>
wrote:

Where and how is Wrk_Input defined? Most obvious guess is that it
is
a
parm that is not actually being passed.


Jon Paris

On May 10, 2021, at 3:28 AM, Suren K <suren7437@xxxxxxxxx>
wrote:

Hi All,

I am facing this weird issue which I am not able to identify
using
the
job
log. It will be more helpful if anyone points me in the right
direction
to
identify the issue.

I created a Service Program which I will configure in IWS
Service.
Whenever
a request comes from the External world this Service program is
the
first
program which will be executed.

I am getting the input in JSON format and I am using the
DATA-INTO
and
DATA-GEN opcodes in the Service program module for parsing and
generating
the JSON.

Now, in the Service program module i have one of the below line

data-gen DS_Input %data(Wrk_Input:'doc=string countprefix=num_')
%gen('YAJLDTAGEN');

I am getting this error while executing this code,

Pointer not set for location referenced.
Error caused procedure _QRNI_GLOB in program LIBL/YAJLDTAGEN to
stop
during initialization.
Error RNX8001 occurred while running the program or procedure for
the
DATA-GEN operation.

Any response will be very much appreciated.

Regards,
Suren
--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.