Fallunterscheidung

bastler

Level-2
Beiträge
258
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Hätte mal wieder eine Frage!
Ich habe einen DB1 in dem 3 feste Strings stehen. In einen weiteren DB2 wird ein anderer String geschrieben. Nun soll ich den String aus DB2 mit den Strings aus DB1 vergleichen und wenn Gleichheit ist soll in einem MB eine

0 bei gleich mit String 1,
1 bei gleich mit String 2,
2 bei gleich mit String 3

geschrieben werden.
Das Vergleichen mache ich mit dem FC10 und das funktioniert auch, aber wie muß man die Fallunterscheidung programmieren, ich denke mit Sprungbefehlen.
Kann mir da jemand einen Tip geben?

MfG
bastler
 
Folgendes Programm habe ich was auch funktioniert, aber geht es auch noch etwas eleganter?
Code:
Call FC10
    S1        :="DB1".typ1
    S2        :="DB2".visu
    Ret_Val  :=#typ1

U     #typ1
L      0
T      MB11
SPB   end

Call FC10
    S1        :="DB1".typ2
    S2        :="DB2".visu
    Ret_Val  :=#typ2

U     #typ2
L      1
T      MB11
SPB   end

Call FC10
    S1        :="DB1".typ3
    S2        :="DB2".visu
    Ret_Val  :=#typ3

U     #typ3
L      2
T      MB11
SPB   end

end: NOP   0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ob es nun wirklich eleganter ist sei dahin gestellt, aber es spart doch noch ein stück zykluszeit:

Code:
*
      L     0
      T     MB 11
 
      Call FC10
          S1        :="DB1".typ1
          S2        :="DB2".visu
          Ret_Val  :=#xDummy
 
      U     #xDummy
      SPB   end
 
      Call FC10
          S1        :="DB1".typ2
          S2        :="DB2".visu
          Ret_Val  :=M11.0
 
      U     M11.0
      SPB   end
 
      Call FC10
          S1        :="DB1".typ3
          S2        :="DB2".visu
          Ret_Val  :=M11.1
 
end:  NOP   0
 
Hallo vierlagig
Danke für deine Antwort, aber wie kommt denn in deinen Programm eine 0 oder 1 oder 2 ins MB11?

MfG
bastler
 
aber wie kommt denn in deinen Programm eine 0 oder 1 oder 2 ins MB11?

Code:
MB11:
M 11  .7  .6  .5  .4  .3  .2  .1  .0
       x   x   x   x   x   x   x   x
 

M11.0 = TRUE -> 2^0 * 1 -> 1 (M11.1 - M11.7 = FALSE)
M11.1 = TRUE -> 2^1 * 1 -> 2 (M11.0; M11.2 - M11.7 = FALSE)

durch L 0; T MB11; stelle ich sicher, dass die Bedingung FALSE für den entsprechenden Wert erfüllt ist.
 
Und wenn gar kein String paßt???

einer wird schon, kommt bestimmt aus ner combobox mit write_protect ;)

ansonsten würd ich da die null ansetzen und das ganze wie folgt ändern:

Code:
*
      L     0
      T     MB 11
 
      Call FC10
          S1        :="DB1".typ1
          S2        :="DB2".visu
          Ret_Val  :=M11.0
 
      U     M11.0
      SPB   end
 
      Call FC10
          S1        :="DB1".typ2
          S2        :="DB2".visu
          Ret_Val  :=M11.1
 
      U     M11.1
      SPB   end
 
      Call FC10
          S1        :="DB1".typ3
          S2        :="DB2".visu
          Ret_Val  :=M11.2
 
end:  NOP   0

keiner -> 0
der 1. -> 1
der 2. -> 2
der 3. -> 4

think binary :ROFLMAO:
 
Der String kommt von einer Visu, und wenn der String nicht paßt (Fehleingabe) hab ich's so programmiert, dass eine 4 geschrieben wird.
Soweit hab ich erstmal alles verstanden, danke für die Hilfe!

MfG
bastler
 
Zurück
Oben