|
I'm on v5r1 and they both work for me with your code. The only problems I see is when your "%Scan( 'qqqqqqqqqq': String ) :" dosen't get a hit on anything you get "The target for a numeric operation is too small to hold the result" or if you change "D String 80A" to be varying you get the following on both "Length or start position is out of range for the string operation." when no hit on %scan. One problem with %size is that you will replace 12 positions in String with blanks if "Objectname" has nothing with %len you will do nothing because it will return 0. Test Code as follows. I would play with it so you can see your own results.I would look at Pos / Siz / Len to see the numbers with different data. D ObjectName S 10A VARYING D String S 80A VARYING D INZ('1234567890qqqqqqqqqq12345') D Scanwith S 10A INZ('qqqqqqqqqq') D Pos S 5U 0 D Siz S 5U 0 D Len S 5U 0 C Eval Pos = %Scan(Scanwith:String) C Eval Siz = %size(ObjectName) C EVAL String = %Replace(ObjectName:String: C Pos:Siz) * Reset for test C Eval String = '1234567890qqqqqqqqqq12345' C Eval Pos = %Scan(Scanwith:String) C Eval Len = %len(ObjectName) C EVAL String = %Replace(ObjectName:String: C Pos:Len) C Eval *Inlr = *on Hope this helps Bill Hopkins "M. Lazarus" <mlazarus@xxxxxxxx> Sent by: rpg400-l-bounces@xxxxxxxxxxxx 08/25/2003 03:48 PM Please respond to RPG programming on the AS400 / iSeries To: RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> cc: Subject: Re: %Len vs. %Size in %Replace Hans, This is targeted to 5.1. It is for a fixed length variable and the only change I made to the code was to switch from %Size() to %Len(). Any other ideas? -mark At 8/25/03 09:15 AM, you wrote: >In this case, when dealing with %LEN(STR) and %SIZE(STR) where STR is a >fixed length character variable, the BIF's should return the same value. >One difference may be that %SIZE() provides a value known at compile time, >which can be used during the relational diagnostics phase. > >On a V5R2 machine, the first code fragment does indeed compile for me. >Looking at the compiler code, I see there were some code changes in V4R4. >So perhaps Mark is targetting a release prior to then? > >Cheers! Hans > > >DeLong, Eric wrote: > >>Mark, the size of the field indicates its defined size (in bytes), but it >>doesn't necessarily mean that the field holds that much data. Varying >>length character fields and double-byte-character-sets really depend on >>interpreting the length of the character string, not the actual number of >>bytes that was reserved by the compiler. >>Eric DeLong >>Sally Beauty Company >>MIS-Project Manager (BSG) >>940-898-7863 or ext. 1863 >> >>-----Original Message----- >>From: M. Lazarus [mailto:mlazarus@xxxxxxxx] >>Sent: Sunday, August 24, 2003 12:58 PM >>To: RPG400-L@xxxxxxxxxxxx >>Subject: %Len vs. %Size in %Replace >> >> Why doesn't %Replace() accept the %Size BIF in the 4th parm? >> This won't compile - it receives "RNF0384 The fourth parameter for >> %REPLACE is not valid." >>ObjectName 10A >>String 80A >>C EVAL String = %Replace( ObjectName : >> String : >> %Scan( 'qqqqqqqqqq': String ) : >> %Size( ObjectName ) ) >> This does compile: >>C EVAL String = %Replace( ObjectName : >> String : >> %Scan( 'qqqqqqqqqq': String ) : >> %Len( ObjectName ) ) >> -mark _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.