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



Yes and no. You are probably looking at this from a C background where strings are terminated with a null x'00'. In this case the string '' is really x'00', and is less than everything else. But what happens in Pascal? I don't remember, but it might be something similar to what happens in RPG. Since the string is not terminated by a x'00', they have to have a way to compare different length strings. You can't just go by whatever happens to be in memory, you have to pad with something. To be compatible with C comparisons, you would have to pad with x'00' characters, but the RPG group chose to pad with blanks which is below all printed characters in EBCDIC, but above the special characters like tab and CR and LF. This works for comparisons with any 5250 strings it will come across, but is less useful when comparing against modern GUI strings which might contain special characters. Maybe it is time to submit a change request to the compiler team. Changing the padding to x'00' from x'40' shouldn't affect existing programs that work without special gymnastics to sort out special characters. Certainly the majority of software out there.

Mark Murphy
STAR BASE Consulting, Inc.
mmurphy@xxxxxxxxxxxxxxx

-----rpg400-l-bounces@xxxxxxxxxxxx wrote: -----
To: "RPG programming on the IBM i / System i" <rpg400-l@xxxxxxxxxxxx>
From: Henrik Rützou
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
Date: 10/11/2011 10:59AM
Subject: Re: RPG Error or ?

To me it isn't logical,

if you reset a variable field to "no value" you do it with

string = '';

%len(string) will display 0

so why is a compare with '' not equal to the setting of the field while
it (whatever there may be in memory) works if you do

string = 'abc';
if string = 'abc';  // will pass

string = 'abcd';
if string = 'abc';  // will fail

?

I have of course just changed my code to %len(string) > 0;





On Tue, Oct 11, 2011 at 4:40 PM, <rob@xxxxxxxxx> wrote:

If I change it to:
string = x'0515' + 'abc';
string='';
and debug it on an active line after the above I get
00000515 81828300   - ....abc

but if I change it to:
/free
 *inlr=*on;
 string='';
then none of the DSPLY's kick in, and
EVAL string :x
00000000 00000000 00000000 00000000   - ................
so, apparently
00050515 81828300 00000000 00000000   - ....abc........
is less than
00000000 00000000 00000000 00000000   - ................

Rob Berendt
--
Group Dekko
Dept 1600
Mail to:  2505 Dekko Drive
         Garrett, IN 46738
Ship to:  Dock 108
         6928N 400E
         Kendallville, IN 46755
http://www.dekko.com





From:   Henrik Rützou <hr@xxxxxxxxxxxx>
To:     "RPG programming on the IBM i / System i" <rpg400-l@xxxxxxxxxxxx>
Date:   10/11/2011 10:00 AM
Subject:        RPG Error or ?
Sent by:        rpg400-l-bounces@xxxxxxxxxxxx



Is it me that has misunderstood something or what would you expect
displayed from this code:

d string          s             52a   varying

string = x'0515' + 'abc';
or
string = x'4015' + 'abc';

// dosn't work (but works if x'4040' + 'abc')
if string > '';
 dsply 'hello 1';
endif;

// works
if string <> '';
 dsply 'hello 1';
endif;

// works
if %len(string) > 0;
 dsply 'hello 2';
endif;


--
Regards,
Henrik Rützou

 http://powerEXT.com ;<http://powerext.com/>
--
This is the RPG programming on the IBM i / System i (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.


--
This is the RPG programming on the IBM i / System i (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 ...

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.