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


  • Subject: RE: Join Logical like WRKQRY's join type '3'
  • From: "Bale, Dan" <DBale@xxxxxxxxxxxxxxxx>
  • Date: Wed, 8 Mar 2000 12:15:46 -0500

Yes.  For the non-matched (exclusive?) join, I used the technique as shown
in the following source excerpts:

     A                                      JDFTVAL DYNSLT
     A          R NEWREC                    TEXT('Items that DO NOT +
     A                                            exist on Item Master')
     A                                      JFILE( BUSNEWP ITMMASP )
     A          J                           JOIN(  BUSNEWP ITMMASP )
     A                                      JFLD(  ITNBR   ITNBR   )
      *
     A            CUSID
     A            ITNBR                     JREF(  BUSNEWP )
------------ 23 data records excluded --------------------------------------
      *  The following field is used to determine whether a match to the
      *   Item Master was found.  If the ITNBRJ field is blank, this is
      *   the result of default values used because the Item Master record
      *   was not found.  There is no good way to do this in DDS.  A better
      *   method would probably be to use SQL as recommended by several on
      *   the midrange-l list.  A few examples follow:
      *
      *   SELECT * FROM BusNewP WHERE ItNbr NOT IN (SELECT ItNbr FROM
ItmMasP)
      *
      *   SELECT * FROM BusNewP EXCEPTION JOIN ItmMasP
      *              on (BusNewP ItNbr) = (ItmMasP ItNbr)
      *
      *  Don't know the details on how these two techniques differ.
      *
     A            ITNBRJ                    JREF(  ITMMASP ) RENAME( ITNBR )
     A                                      TEXT('Item# from Item Master
join; +
     A                                              if blank, no join')
     A                                      COLHDG( 'Joined Item Master''s'
+
     A                                              'Item Number        ' +
     A                                              '(if blank, no join)'  )
      *
     A          K CUSID
     A          K ITNBR
      *
     A          S ITNBR                     COMP( NE ITNBRJ )

-----Original Message-----
From: Rob Berendt [mailto:rob@dekko.com]
Sent: Wednesday, March 08, 2000 11:33 AM
To: MIDRANGE-L@midrange.com
Subject: RE: Join Logical like WRKQRY's join type '3'


Thank you for the explanation.  Did you get your problem 
solved?  I did think of another case limiting RI.  A package 
that uses multiple members.  You can't put a constraint on a 
file with multiple members.  Death to multiple members!





DBale@TFSA.Textron.com on 03/08/2000 11:21:57 AM
Please respond to MIDRANGE-L@midrange.com@Internet
To:     MIDRANGE-L@midrange.com@Internet
cc:      
Fax to: 
Subject:        RE: Join Logical like WRKQRY's join type '3'

Good question.  I think I have a good answer.

The database in question is a "new business" database, keyed by customer ID
and Item Number.  A customer will inform us that they have a requirement for
a new item.  We need to enter this new item into the "new business" database
so that we can do other things with it, but at that point, no record exists
yet on the Item Master for this item.  Eventually, an Item Master record is
created, and the users want to be able to distinguish the "new business"
items that are not yet represented on the Item Master from those that are.

- Dan Bale

-----Original Message-----
From: Rob Berendt [mailto:rob@dekko.com]
Sent: Wednesday, March 08, 2000 8:29 AM
To: MIDRANGE-L@midrange.com
Subject: RE: Join Logical like WRKQRY's join type '3'


I am trying to step back and take a look at this.

What is the point of trying to find unmatched records?  
Is this supposed to be an error condition, or is there a 
valid business reason for this?  What I am getting to is 
this.  If this is a brand new database, as you've said, 
then why are you not putting referential constraints on 
it to avoid unmatched records in the first place?  

Or is this a case of using a package master file, a custom 
detail file, and a concern about putting RI against the 
package file in case they do not trap for errors on the 
delete operation?  My thought is this.  Most packages do 
deletes against master files in only one program.  Most of 
those use the record ID concept and then only do the hard 
delete during the end of month reorg.  Basically this leaves 
you one program to check.





DBale@TFSA.Textron.com on 03/07/2000 05:30:33 PM
Please respond to MIDRANGE-L@midrange.com@Internet
To:     MIDRANGE-L@midrange.com@Internet
cc:      
Fax to: 
Subject:        RE: Join Logical like WRKQRY's join type '3'

>>Use the file level keyword JDFTVAL to get a *PARTOUT partial outer join,
then
put a record selection test in comparing the item number field from the
secondary file to blank.  As long as you don't have any records in your
primary
file with a blank item number, then the only way for the join field in the
secondary file to be blank is for it to be a non-existent record.<<

This is exactly what I ended up doing as (at least) a temporary measure.
Had to specify DYNSLT, though, and wondered if there are going to be
performance implications.  This is a brand new database, and it's too early
to predict the volume and the percentage of records that will have an Item#
that does not have a match on the Item Master.  I have put comments in both
the LF source and the RPGLE source (for which program is the only one using
this file) warning about performance issues and the possible solution using
SQL.

- Dan Bale

-----Original Message-----
From: Shaw, David [mailto:dshaw@spartan.com]
Sent: Tuesday, March 07, 2000 2:07 PM
To: 'MIDRANGE-L@midrange.com'
Subject: RE: Join Logical like WRKQRY's join type '3'


> -----Original Message-----
> From: Bale, Dan [mailto:DBale@TFSA.Textron.com]
> 
> Thanks for all of the replies.  (except Pat for the "MR" 
> solution -just
> kidding-)  Although, since the solution requires random access, "MR"
> wouldn't have worked anyway.
> 
> Three of you suggested SQL.  Can I presume it can't be done 
> with LF DDS?

Dan,

I may be wrong, but I don't remember a way to explicitly define an *ONLYDFT
or
exception join in DDS.  Having said that, I think that there's a way to
cheat.
Use the file level keyword JDFTVAL to get a *PARTOUT partial outer join,
then
put a record selection test in comparing the item number field from the
secondary file to blank.  As long as you don't have any records in your
primary
file with a blank item number, then the only way for the join field in the
secondary file to be blank is for it to be a non-existent record.  (Note:
This
assumes that blank is the default value for item number in the file.)

I very vaguely remember doing something like this on the /38 back about '87,
and
I know I made it work before I was done, so I'd say it has a pretty good
shot.
I hope it helps!

Dave Shaw
Spartan International, Inc.
Spartanburg, SC
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---


+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---


+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...


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.