=== FB 158: Visu_CheckTrolley  [STL] ===
INTERFACE:
  Input:
  Output:
  InOut:
  Static:
    SearchDaten : "UTrolley"
    OutDaten : "UTrolley"
    Leerfeld : "UTrolley"
    Daten_Speichern : Bool                              // Aktuelle Daten übernehmen
    Errors : Struct
      Datenbank : Bool                                  // Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung
      SFC20 : Bool                                      // SFC20-Aufruf mit Fehler
      Listenende : Bool                                 // Listenende ist erreicht
      Parameter : Bool                                  // Falscher Parameter bei Aufruf
      Stammdaten : Bool                                 // Undefinierte Stammdaten zum Suchen
      Outdaten : Bool                                   // Undefinierte OUT-Daten
    Ergebnis : Struct
      Keine Abfrage : Bool                              // Keine Abfrage vorhanden
      Falsche_Abfrage : Bool                            // Falsche / nicht eindeutige Abfrage
      Keine Daten : Bool                                // Datensatz ist nicht vorhanden
      Daten_vorhanden : Bool                            // Datensatz ist vorhanden
      Abruf_erfolgt : Bool                              // Abruf einmalig ausgeführt
      Eintrag_erfolgt : Bool                            // Speicherung ist erfolgt
      Position : Int
      TrolleyID : DInt
      ShopGroup : DInt
    RET_VAL_BLKMOV : Int
  Temp:
    Quelle : Any                                        // Zeiger, wo Quell-Daten sind
    Ziel : Any                                          // Zeiger, wo Ziel-Daten sind
    Error : Byte
    Abfragen : Struct
      TrolleyID : Bool
      ShopGroup : Bool
    Lager : Int
    Lager_DB : Int
    Lager_DW : Int
    AR1Zeiger : DWord                                   // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
    AR1Start : DInt                                     // Startwert mit Offset 0
    ErrorBit : Bool
  Constant:

--- NW 1: Initialisieren ---
      L      0
      T      Error

      SET
      R      Ergebnis.Abruf_erfolgt


--- NW 2: Daten speichern ---
      AN     Ergebnis.Daten_vorhanden
      R      Daten_Speichern
      R      Ergebnis.Eintrag_erfolgt

      A      Daten_Speichern
      R      Daten_Speichern
      R      Ergebnis.Eintrag_erfolgt
      JCN    Nw3

CALL FC "DatenIn" (SSDB:=1000, SSDW:=0, INDATEN:=OutDaten, RE_VAL:="MB198")

      L      "MB198"
      L      2#11000000
      AW
      L      0
      <>I
      =      Ergebnis.Eintrag_erfolgt

      L      OutDaten.TrolleyID
      T      SearchDaten.TrolleyID
      L      DINT#0                                          // Ergebnis neu holen
      T      Ergebnis.TrolleyID
      T      SearchDaten.ShopGroup

      BEU


--- NW 3: Abfrage vorhanden ? ---
Nw3:  L      SearchDaten.TrolleyID
      L      DINT#0
      <>D
      =      Abfragen.TrolleyID

      L      SearchDaten.ShopGroup
      L      DINT#0
      <>D
      =      Abfragen.ShopGroup

      A      Abfragen.TrolleyID
      AN     Abfragen.ShopGroup
      JC     ReadTrolley

      A      Abfragen.ShopGroup
      AN     Abfragen.TrolleyID
      JC     ReadAbrufID

      JU     Ergebnis


--- NW 4: Outdaten löschen: ---
// Kennung + Datenbytes
DEL:  L      DINT#0
      T      Ergebnis.TrolleyID
      T      Ergebnis.ShopGroup

      L      16#1004                                         // Kennung 10 + Word=04
      T      LW0
      T      LW10                                            // Any-Kennung, Datentyp
      L      10                                              // Datenwords speichern
      T      LW2
      T      LW12                                            // Wiederholungen

// Quelle-Pointer erzeugen: (Leerfeld)
      L      158
      T      LW4                                             // DB_Nummer
      L      40                                              // Adresse
      SLD    3
      L      16#8400_0000                                    // Kennung: Daten
      OD
      T      LD6                                             // Kennung, Adresse

// Ziel-Pointer erzeugen: (Outdaten)
      L      158
      T      LW14                                            // DB_Nummer
      L      20                                              // Adresse
      SLD    3
      L      16#8400_0000                                    // Kennung: Daten
      OD
      T      LD16                                            // Kennung, Adresse

CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel)   // Datenliste-Daten speichern

      BEU


--- NW 5: Daten von TrolleyID lesen ---
ReadTrolley: L      SearchDaten.TrolleyID
      L      Ergebnis.TrolleyID
      ==D
      =      Ergebnis.Abruf_erfolgt
      BEC

CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=SearchDaten, RE_VAL:=Error, OUTDATEN:=OutDaten, Position:=Ergebnis.Position)   // Eintrag lesen

      L      OutDaten.TrolleyID
      T      Ergebnis.TrolleyID

      JU     Ergebnis


--- NW 6: Daten von AbrufID lesen ---
ReadAbrufID: L      SearchDaten.ShopGroup
      T      "MD220"
      L      Ergebnis.ShopGroup
      ==D
      =      Ergebnis.Abruf_erfolgt
      BEC

CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0500, SEARCHDATEN:=P#M220.0, RE_VAL:=Error, OUTDATEN:=OutDaten, Position:=Ergebnis.Position)   // ShopGroup mit 16#0500 suchen !

      L      OutDaten.ShopGroup
      T      Ergebnis.ShopGroup


--- NW 7: Error / Ergebnis ---
// Errors:
Ergebnis: A      L20.0
      =      Errors.Datenbank
      A      L20.1
      =      Errors.SFC20
      A      L20.2
      =      Errors.Listenende
      A      L20.3
      =      Errors.Parameter
      A      L20.4
      =      Errors.Stammdaten
      A      L20.5
      =      Errors.Outdaten

// Ergebnis:
      AN     Abfragen.TrolleyID
      AN     Abfragen.ShopGroup
      =      Ergebnis."Keine Abfrage"
      A      Abfragen.TrolleyID
      A      Abfragen.ShopGroup
      =      Ergebnis.Falsche_Abfrage
      A      L20.6
      =      Ergebnis."Keine Daten"
      A      L20.7
      =      Ergebnis.Daten_vorhanden

// Resultat:
      AN     Ergebnis.Daten_vorhanden
      JC     DEL


--- NW 8: Ende ---
      BE

