7.8.12.2. Sintassi - Pulsanti per la creazione della formula

Se si utilizzano i pulsanti $VAR= | IF | ELSEIF, si può essere certi che la formula sia stata creata con la sintassi corretta.

[Nota]Nota

Infine, utilizzare Check per controllare l'intera voce.

Finestra di dialogo "Algoritmo di caratteristiche [Attribute algorithm]"

Figura 7.467. Finestra di dialogo "Algoritmo di caratteristiche [Attribute algorithm]"

  • $VAR=

    Questo pulsante trasferisce nel campo di immissione solo la variabile visualizzata sotto Nome [Name].

  • SE

    Un algoritmo basato su una condizione IF può avere il seguente aspetto:

    IF ( ) THEN 
       D3 = 
    ELSE 
       D3 = 
    ENDIF

    Inserire la condizione tra le parentesi () (ad esempio, "L1.EQ.10"). In questo esempio, "D3" è la variabile selezionata nell'elenco delle variabili.

    Dopo THEN D3 = inserire il valore che D3 deve assumere se la condizione è soddisfatta .

    ELSE D3 = è seguito dal valore di D3 se la condizione non è soddisfatta . ENDIF conclude la condizione.

    Esempio con valori:

    IF (L1.EQ.10) THEN
    D3 = 20
    ELSE
    D3 = 30
    ENDIF

  • ELSEIF

    -> Viene generato quanto segue:

    ELSEIF ( ) THEN
     <selektierte Variable> = 

    Se è necessario distinguere i casi, si possono utilizzare le istruzioni ELSEIF.

    [Nota]Nota

    Le distinzioni dei casi ELSEIF devono concludersi con un ELSE alla fine.

    Quindi, prima di fare clic, posizionate il cursore nella posizione corretta prima del comando ELSE.

    Figura 7.468. 

    Esempio con valori

    IF (L1.EQ.10) THEN 
    D3 = 10 
    ELSEIF (L1.EQ.20) THEN 
    D3 = 20 
    ELSEIF (L1.EQ.30) THEN 
    D3 = 30 
    ELSE
    D3 = 40
    ENDIF 

  • Diverse condizioni IF possono anche essere collegate in serie all'interno di una variabile dell'algoritmo delle caratteristiche [Attribute algorithm].

    L'uso di una singola condizione IF con distinzione dei casi ELSEIF porterebbe spesso a soluzioni molto più complesse con molti più ELSEIF.

    Figura 7.469. 

    Figura 7.470. 

    Struttura delle condizioni con un esempio:

    IF ( KG.EQ.'-')THEN
     NB1 = '$TNR. $TYP.-$KDM.-$HUB.-ZR-$WZ.'
    ELSE
     NB1 = '$TNR. $TYP.-$KDM.-$HUB.-ZR-$WZ.-$KG.'
    ENDIF
    IF ( ZAK.EQ.'-')THEN
     NB1 = '$NB1.'
    ELSE
     NB1 = '$NB1.-$ZAK.'
    ENDIF
    IF( YSR.EQ.'1'.AND.SIE.EQ.'-')THEN
     NB1 = '$NB1. ZUB-C'
    ELSEIF( YSR.EQ.'1'.AND.SIE.EQ.'1')THEN
     NB1 = '$NB1. ZUB-CL'
    ELSEIF( YSR.EQ.'2'.AND.SIE.EQ.'-')THEN
     NB1 = '$NB1. ZUB-$YSR.C'
    ELSEIF( YSR.EQ.'2'.AND.SIE.EQ.'1')THEN
     NB1 = '$NB1. ZUB-$YSR.CL'
    ELSEIF( YSR.EQ.'-'.AND.SIE.EQ.'1')THEN
     NB1 = '$NB1. ZUB-L'
    ELSE
     NB1 = '$NB1.'
    ENDIF                                            

    Im  ersten IF wird NB1 initialisiert.
    
    
    
                                        
    Im zweiten IF wird an NB1 etwas drangehängt.
    
    
    
                                         
    Im dritten IF wird nochmal etwas drangehängt.
    
    
    
    
    
    
    
    
    
    
    
                                             

    Note importanti:

    • La prima condizione IF deve contenere un'alternativa ELSE per garantire l'inizializzazione delle variabili. Le altre condizioni IF possono contenere facoltativamente delle alternative ELSE.

      Corretto:

      IF (OPZ1.EQ.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1.'
      ELSE
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1./$OPZ1.'
      ENDIF
      IF (OPZ2.EQ.'-' )THEN
       LINAALG = '$LINAALG./'
      ELSE
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...

      Non corretto: (il primo IF non contiene un ELSE)

      IF (OPZ1.NE.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1./$OPZ1.'
      ENDIF
      IF (OPZ2.NE.'-' )THEN
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...

      Inoltre è corretto: se la prima istruzione è una semplice istruzione senza condizione, un "ELSE" può essere completamente omesso, poiché l'istruzione inizializza sempre la variabile.

      CNSTYPECODE = '$MODEL.$W.-$ST.-$THETA.-$TYPE.-$SPRING.'
      IF(K.EQ.1)THEN
       CNSTYPECODE = '$CNSTYPECODE.-K'
      ENDIF
      IF(FK.EQ.1)THEN
       CNSTYPECODE = '$CNSTYPECODE.-FK'
      ENDIF
      IF(N.EQ.1)THEN
       CNSTYPECODE = '$CNSTYPECODE.-N'
      ENDIF

    • La prima condizione, che viene sempre calcolata, deve evitare un ciclo infinito. Ulteriori "if...endif" richiamano sempre la prima condizione e aggiungono un valore supplementare.

      Pertanto, non utilizzate la variabile dell'assegnazione nella prima condizione per la differenziazione del caso ELSE.

      Corretto:

      IF (OPZ1.EQ.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1.'
      ELSE
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1./$OPZ1.'
      ENDIF
      IF (OPZ2.EQ.'-' )THEN
       LINAALG = '$LINAALG./'
      ELSE
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...

      Non corretto: (differenza in rosso)

      IF (OPZ1.EQ.'-' )THEN
       LINAALG = '$IDNR./$CX1./$VL./$MOTX./$OM1./$COEL./$DA./$AP1./$AA1.'
      ELSE
       LINAALG = '$LINAALG./$OPZ1.'
      ENDIF
      IF (OPZ2.EQ.'-' )THEN
       LINAALG = '$LINAALG./'
      ELSE
       LINAALG = '$LINAALG./$OPZ2.'
      ENDIF...