When you write SUM at the 'NEW' level, Match is informed that there will be, at most, One Record for a given KEY Value.
So OLD is O,1 for a KEY Value
And Same is NEW
You Use OLD-OR_NEW, so if any KEY value being in the OLD And / Or in the New will give birth
to One single Record in HOLDF File
When You Use PRINT instead of SUM at the New Level, Match Knows that he doesn't know ( and he won't check for each KEY value at the New Level)
What he knows is that (0,n) is the cardinality of New for any Code Value.
When the cardinality is 0,1 (SUM) Match won't hesitate to replicate the values found on the OLD level onto All the instances Brought on the NEW level
Other he won't do that
In the old Days he Wrote Max (Nb Old, Nb New) records. The ith record contained the ith instance Old Level juxtaposed to the ith instance New Level
Now, When You Set CARTESIAN = ON you get closer of SQL Inner Join : Nb Old * Nb New instances out. Each Old Instance being being juxtaposed by All New instances.
Match, often, surprises IT guys.
But it does exactly what the Focus Bible says it does ( and not one fancy it does )
Now I bet for :
Code Field1 Field2
1 10 50
2 20 30
3 40
4 30
I Guess that, with a Sum there won't be Missing Values, like a SegType = DKU son
And with a Print
Code Field1 Field2
4 30 .
Field2 Would be a Missing Value like a SegType = DKM Value
I know that I Know nothing, but that I know.
Focus is real great when he handles cardinality. But for me, it's not a subject for writing on a corner of a table. You've got to have your brains rather intensely concentrated .
Just wait for Tony A and/or Waz to fix your question in two brilliant and funny lines ...
Cordially and Focusely
Focus Mainframe 7.6.11
Dev Studio 7.6.11 and !!!
PC Focus, Focus for OS/2, FFW Six, MSO