[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference ilbbak::ibi_focus

Title:FOCUS, from INFORMATION BUILDERS
Moderator:ZAYIUS::BROUILLETTE
Created:Thu Feb 19 1987
Last Modified:Mon May 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:615
Total number of notes:1779

418.0. "DEFINING HELP NEEDED" by USMFG::BHYNES () Thu May 16 1991 17:03

    Can anyone help on the following, I am defining a field and trying
    to update two fields in the 'then' portion of a defined if..then..else
    statement. Below is the Fex. As you can see I tried several combinations
    of it. Focus does not complain about any of these forms but, all fields
    are blank or zero's.
    
    I have put in spaces for clearity. What I am trying to get the
    hold file to have in it is;
    
    COMQTR  FAMILY  CATEGORY  MODEL_NAM  AGG_PART  RA9X_UNT  RA70_UNT
    
    91Q4    6410    LGDISK    RA9X       SA650FA   4
    91Q4    6410    LGDISK    RA70       SA650FA             8
    
    
    DEFINE FILE COMSOSL8 CLEAR
    AD_UNT/D8 = UNITS;
    R9X/A5 = 'RA9X ';
    R70/A5 = 'RA70 ';
    MODEL_NAM/A5 = '     ';
    -*
    RA9X_UNT/D8 = IF AGG_PART CONTAINS 'SA800CA' OR 'SA800CD'
    OR 'SA600CA' OR 'SA600CD'
    THEN (AD_UNT * 1) AND (MODEL_NAM EQ 'R9X')
    
    ELSE IF AGG_PART CONTAINS 'SA800FA' OR 'SA800FD' OR 'SA850FA'
    OR 'SA850FD' OR 'SA600FA' OR 'SA600FD' OR 'SA650FA' OR 'SA650FD'
    OR 'RA90 FA' OR 'RA90 FD'
    THEN((AD_UNT * 2) AND (MODEL_NAM EQ R9X))
    
    ELSE IF AGG_PART CONTAINS 'SA800HA' OR 'SA800HD' OR 'SA850HA'
    OR 'SA850HD' OR 'SA600HA' OR 'SA600HD' OR 'SA600HE' OR 'SA650HA'
    OR 'SA650HD' OR 'SA650HE' OR 'RA90 HA' OR 'RA90 HD'
    THEN(AD_UNT * 4 AND MODEL_NAM EQ R9X)
    
    ELSE IF AGG_PART CONTAINS 'SA800GD' OR 'SA800GA' OR 'SA850JA' OR
    'SA850JD'
    OR 'SA650JA' OR 'SA650JD' OR 'SA650JE' OR 'RA90 JA' OR 'RA90 JD'
    THEN AD_UNT * 6 AND MODEL_NAM EQ 'R9X'
    
    ELSE IF AGG_PART CONTAINS 'SA800JA' OR 'SA800JD' OR 'SA600JA'
    OR 'SA600JD' OR 'SA600JE'
    THEN AD_UNT * 8 AND MODEL_NAM EQ R9X
    
    ELSE IF AGG_PART CONTAINS 'SA850LA' OR 'SA850LD'
    THEN AD_UNT * 12 AND MODEL_NAM EQ 'R9X'
    
    ELSE IF AGG_PART CONTAINS 'SA800LA' OR 'SA800LD'
    THEN AD_UNT * 16 AND MODEL_NAM EQ 'RA9X' ELSE AD_UNT * 0;
    
    RA70_UNT/D8 = IF AGG_PART CONTAINS 'SA70 HK' OR 'SA70 LK'
    THEN AD_UNT * 2 AND MODEL_NAM EQ R70
    
    ELSE IF AGG_PART CONTAINS 'SA850FA' OR 'SA850FD' OR 'SA850HA'
    OR 'SA850HD' OR 'SA650FD' OR 'SA650HA' OR 'SA650HD' OR 'SA650HE'
    OR 'SA650FA' OR 'SA70 JK' OR 'SA70 MK' OR 'SA705HA' OR 'SA705HD'
    THEN (AD_UNT * 4 AND MODEL_NAM EQ R70)
    
    ELSE IF AGG_PART CONTAINS 'SA850JA' OR 'SA850JD' OR 'SA650JA'
    OR 'SA650JD' OR 'SA650JE'
    THEN (AD_UNT * 8 AND MODEL_NAM EQ R70)
    
    ELSE IF AGG_PART CONTAINS 'SA850LA' OR 'SA850LD' OR 'SA705JA'
    OR 'SA705JD'
    THEN (AD_UNT * 16 AND MODEL_NAM EQ 'RA70') ELSE AD_UNT * 0;
    END
    -*
    TABLE FILE COMSOSL8
    PRINT MODEL_NAM RA9X_UNT RA70_UNT
    BY COMQTR
    BY FAMILY
    BY CATEGORY
    BY AGG_PART
    IF COMQTR EQ 91Q4
    IF FAMILY EQ 6410
    IF CATEGORY EQ LGDISK
    ON TABLE HOLD AS LGDSKADD
    END
    -RUN
    
T.RTitleUserPersonal
Name
DateLines
418.1DEFINE 1 field at a timeHAMSTR::VOSSMon May 20 1991 16:0614
    You can only update one field at a time in the DEFINE section of FOCUS.
    And the field you are defining is the field that FOCUS will try to
    update i.e. RA9X_UNT/D8 = IF AGG_PART CONTAINS 'SA800CA' 
    			      THEN AD_UNT * 1 ELSE 0;
    		MODEL_NAM/A5= IF AGG_PART CONTAINS 'SA800CA'
    			      THEN 'R9X' ELSE '     ;
    You can nest your IF statements 13 levels deep then you will have to
    start over defining the field again with more IF statements if needed.
    There is no limit that I know of to the number of OR values that can be
    used.
    
    I hope this helps.
    
    Greg