× 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 could see how some VARCHAR fields could end up with a difference in the
"junk" after the end of that value and the end of storage...

While one doesn't normally need to initialize or reset VARCHAR fields, in
this case given that you want to compare at the DS level, you should ensure
that the varchar fields are all reset to all *BLANKS or x'00' before
loading.

I think INZ(*BLANKS) and RESET would do the trick...

I'm normally a big fan of VARCHAR...

But it might be worthwhile to use fixed length fields in the DS, especially
if they end up as fixed length in the DB.

Charles



On Tue, Apr 16, 2024 at 7:02 AM Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:

I don't see how that can be the problem because if the varchar fields had
extra space padding they would be unequal in the individual test cases too.

Admittedly I loaded no data in the fields, but my test with Greg's exact
code showed the correct results.


Jon P.

On Apr 16, 2024, at 8:52 AM, Vern Hamberg via RPG400-L <
rpg400-l@xxxxxxxxxxxxxxxxxx> wrote:

Greg

Apologies, somehow I hadn't noticed your code - of course, you would
compare to a single subfield DS!

I think you might have hit it with the varchar fields. You might look in
debug and view the structure in hex. I wonder if somewhere a varchar
subfield is being populated with a fixed value.

Also, DS' are seen as an amalgamation - I believe the individual
subfields are not compared one at a time by RPG - that's an interesting
idea, perhaps, to submit! But varchar's include the length in 2 bytes, and
those might differ, hence, would the entire DS be called unequal?

Cheers
Vern

On 4/16/2024 7:39 AM, Greg Wilburn wrote:
Vern,

If you look at my code... I'm comparing the UPS data structure with a
single element (x) of UPSSUGG.

In this case x=1.

I had this in RDI debug, monitoring both values - UPS and UPSSUGG(1) I
copied them from RDI to Notepad++ to do a compare and it found no
differences. Yet I hit the line of code that sets DIFF=*ON when comparing
the structures.

Both structures are passed to a service program procedure that hits UPS
Street Level Address Validation API.
UPS represents the original street address.
UPSSUGG represents the (up to 3) suggested addresses returned.

Could this have something to do with extra spaces in varchar subfields?

I'm at a complete loss here. I hate to give up and look at each
subfield separately, but I have no idea why this is happening.

Thanks,
Greg

-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
VERNON HAMBERG Owner via RPG400-L
Sent: Monday, April 15, 2024 5:34 PM
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Cc: VERNON HAMBERG Owner <vhamberg@xxxxxxxxxxxxxxx>;
rpg400-l@xxxxxxxxxxxxxxxxxx
Subject: Re: Comparing data in data structures

At first guess, Greg, I don't think you can compare them just by name,
if that is what you are doing. There are X number of subfields in onw, 3*X
in the other. Do you get a message that some things are being dropped from
the array? LIke this?


RNF5343


Array has too many omitted indexes; specification is ignored.


I think you can compare the single DS to each array element in turn.

Cheers
Vern


On Mon, 15 Apr, 2024 at 3:53 PM, Greg Wilburn <
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx> wrote:

To: rpg400-l@xxxxxxxxxxxxxxxxxx

I'm at my wits end...

I am trying to compare two address data structures to see if they are
different. BOTH are defined "like" a template ds, however one is
dimensional (3).

Can anyone point out what I may be missing??

TIA
Greg

Code:

dcl-ds upsAddr_t qualified template;
name varchar(40);
street varchar(50);
street2 varchar(50);
street3 varchar(50);
city varchar(30);
state varchar(30);
zipcode varchar(10);
cntry varchar(2);
end-ds;

dcl-ds ups likeds(upsAddr_t) inz;
dcl-ds upsSugg likeds(upsAddr_t) dim(3) inz;


if ups.name <> upsSugg(x).name;
diff = *on;
endif;
if ups.street <> upsSugg(x).street;
diff = *on;
endif;
if ups.street2 <> upsSugg(x).street2;
diff = *on;
endif;
if ups.street3 <> upsSugg(x).street3;
diff = *on;
endif;
if ups.city <> upsSugg(x).city;
diff = *on;
endif;
if ups.state <> upsSugg(x).state;
diff = *on;
endif;
if ups.zipcode <> upsSugg(x).zipcode;
diff = *on;
endif;
if ups.cntry <> upsSugg(x).cntry;
diff = *on;
endif;

// In Debug... diff is still *OFF at this point

// In this expression.. DIFF turns ON
if ups <> upsSugg(x);
diff = *on;
endif;

[Logo]<https://www.totalbizfulfillment.com/><
https://www.totalbizfulfillment.com/>> Greg Wilburn
Director of IT
301.895.3792 ext. 1231
301.895.3895 direct
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx<mailto:gwilburn@totalbizfulfillmentcom
<mailto:gwilburn@xxxxxxxxxxxxxxxxxxxxxxx<mailto:
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx>>
1 Corporate Dr
Grantsville, MD 21536
www.totalbizfulfillment.com<http://www.totalbizfulfillment.com><
http://www.totalbizfulfillment.com<http://www.totalbizfulfillment.com>>
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx<mailto:
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<mailto:
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<mailto:
support@xxxxxxxxxxxxxxxxxxxx> for any subscription related questions.

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

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


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



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.