A 4 is missing in the VarChar definition of Upper: Dcl-s Upper Varchar(128:4);
Because SQLstuff is defined as 4 bytes length

That should resolve the runtime error

Or try this:
Upper = %SubSt(SQLStuff:1:%Size(Upper)); //This will truncate to 128 (not 1024) if needed


-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Barbara Morris
Sent: Wednesday, January 15, 2020 17:51
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Subject: Re: How do I clip a vary length field?

Chris, how are you setting the values in the EZDSQLF2 data structure?

I think you have correctly defined SQLStuff over these two subfields
D EZDQLSTL 235 238I 0
D* Length of SQL Stmt text@A1A
D*EZDSQLST00 239 239
D* Varying length
D* /* SQL statement text @B2C

but I suspect that when you try to assign SQLStuff to Upper, the EZDQLSTL value has not been set yet, so it has the value x'40404040' = a huge decimal number, much bigger than the maximum allowed value of 32000 from your definition of SQLStuff.

-- Barbara

Subject: Re: How do I clip a vary length field?
From: Chris Holko <christopherholko@xxxxxxxxx>
Date: Wed, 15 Jan 2020 13:43:10 -0500

Okay, I am truly lost here. I am missing something really simple. this is a quick test program that fails when called by the exit with RNQ0115 when it does the upper=sqlstuff

RNQ0115 is Length of varying length variable is out of range.


/copy qsysinc/qrpglesrc,ezdaep
Dcl-s pEZDQLSTL pointer inz( %Addr( EZDQLSTL ) );

Dcl-s SQLStuff VarChar(32000: 4) Based( pEZDQLSTL );

Dcl-s Upper Varchar(128);

dcl-pr ODBCEXIT extpgm('ODBCEXITN');
allow char(1);
datain likeds(EZDSQLF2);

dcl-pi ODBCEXIT;
allow char(1);
datain likeds(EZDSQLF2);

allow = *on;
Upper = SQLStuff; // This will truncate to 1024 if needed.

*inlr = *on;

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@xxxxxxxxxxxx for any subscription related questions.

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

This thread ...


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

This mailing list archive is Copyright 1997-2020 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].