SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 36506: Interactive Grouping and Interactive Binning nodes might create incorrect score code for non-interval variables

DetailsHotfixAboutRate It
The SAS® Enterprise Miner™ Interactive Binning node and the Interactive Grouping node might generate incorrect score code for non–interval variables. The problem occurs if the length of the generated text string exceeds 195 characters for at least one group in a non–interval variable. If the length exceeds 195 characters, then the score code for any other group definitions for that variable will contain the initial parenthesis in the wrong place.

A generated text string includes both programming code and variable level information. For a given non–interval variable, the length of the entire text string is equal to the sum of the lengths of the generated text strings for each group. Therefore, the total length can exceed 195 characters if there are many groups (and thus much generated code), or if some of the group levels contain long level names.

When the generated score code group definition is split because of the length of the text string, the parenthesis is placed in the wrong location.

For example, the score code might look like this:

*------------------------------------------------------------*;
* Variable:prodvar;
*------------------------------------------------------------*;
LABEL GRP_prodvar = 'Grouped: prodvar';
LABEL WOE_prodvar = 'Weight of Evidence: prodvar';
_UFormat = prodvar;
%dmnormip(_UFormat);
if MISSING(_UFORMAT) then do;
   GRP_prodvar = 1;
   WOE_prodvar = 3.2521777691;
  end;
 else if NOT MISSING(_UFORMAT) then do;
   if (_UFORMAT eq '05' OR _UFORMAT eq '16' OR _UFORMAT eq '3L' 
      OR _UFORMAT eq '3U' OR _UFORMAT eq '3Y' OR _UFORMAT eq '76'
      OR _UFORMAT eq 'CE' OR _UFORMAT eq 'E5' OR _UFORMAT eq 'K3')
     then do; 
      GRP_prodvar = 1;
      WOE_prodvar = 3.2521777691;
     end;
 else if _UFORMAT eq ('K4' OR _UFORMAT eq 'L1' OR _UFORMAT eq 'L2'
   OR _UFORMAT eq 'L3' OR _UFORMAT eq 'L5' OR _UFORMAT eq 'L8' OR 
   _UFORMAT eq 'PA' OR _UFORMAT eq 'PG' OR _UFORMAT eq 'PH') then
    do;
    GRP_prodvar = 1;
    WOE_prodvar = 3.2521777691;
   end;

Notice the misplaced open parenthesis on the last IF–THEN/ELSE statement. The first open parenthesis is located after the EQ (equal to) operator:

else if _UFORMAT eq ('K4' OR _UFORMAT...

The correct placement of the first parenthesis is before _UFORMAT:

else if (_UFORMAT eq 'K4' OR _UFORMAT...

There are no error messages in the log from either the Interactive Binning node or from the Interactive Grouping node.

If you are using SAS to score new observations using the generated code, you can use the program editor to correct the placement of the first parenthesis in any incorrect sections of code. However, if the score code was translated to C or Java, then there is no workaround.

Select the Hot Fix tab in this note to access the hot fix for this issue.



Operating System and Release Information

Product FamilyProductSystemProduct ReleaseSAS Release
ReportedFixed*ReportedFixed*
SAS SystemSAS Enterprise MinerMicrosoft® Windows® for 64-Bit Itanium-based Systems5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows Server 2003 Datacenter 64-bit Edition5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows Server 2003 Enterprise 64-bit Edition5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows XP 64-bit Edition5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows 2000 Advanced Server5.39.1 TS1M3 SP4
Microsoft Windows 2000 Datacenter Server5.39.1 TS1M3 SP4
Microsoft Windows 2000 Server5.39.1 TS1M3 SP4
Microsoft Windows 2000 Professional5.39.1 TS1M3 SP4
Microsoft Windows NT Workstation5.39.1 TS1M3 SP4
Microsoft Windows Server 2003 Datacenter Edition5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows Server 2003 Enterprise Edition5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows Server 2003 Standard Edition5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Microsoft Windows XP Professional5.36.1_M29.1 TS1M3 SP49.2 TS2M2
64-bit Enabled AIX5.36.1_M29.1 TS1M3 SP49.2 TS2M2
64-bit Enabled HP-UX5.36.1_M29.1 TS1M3 SP49.2 TS2M2
64-bit Enabled Solaris5.36.1_M29.1 TS1M3 SP49.2 TS2M2
HP-UX IPF5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Linux5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Linux on Itanium5.36.1_M29.1 TS1M3 SP49.2 TS2M2
Solaris for x645.36.1_M29.1 TS1M3 SP49.2 TS2M2
Tru64 UNIX5.36.1_M29.1 TS1M3 SP49.2 TS2M2
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.