× 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.



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 thread ...

Follow-Ups:

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.