Step 7 AWL Hilfe / Wert in DB suchen und zählen

maic

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,


da ich bislang kaum in AWL programmiert habe, brauche ich mal eure Unterstützung.
Ich habe schon einiges probiert und recherchiert, ein Grundgerüst ist schon vorhanden aber es funktioniert noch nicht so wie es soll.

Ich wollte mir die Auswertung erleichtern und mir einen Bestimmten Wert aus einem DB suchen, zählen und diesen als Ausgabe anzeigen lassen.
Eingangs Parameter der Funktion wären:
- Anzahl Offset (Anfangswert o.ä.) wird hinzu addiert,
- DB Nr.,
- Start byte im DB,
- Versatz im DB,
- Anzahl Datensätze um die Laufzeit zu beschränken
- Wert der gesucht werden soll.

der DB der durchsucht wird enthält vorneweg paar Werte, ab der Start Adresse eine Structur wiederkehrend alle 20 Byte. Um einen Bestimmten Bereich des DBs zu durchsuchen habe ich den Wert Anzahl der Datensätze.

Für einen erfahrenen AWL Hasen sind es mit Sicherheit 4 Zeilen die geändert werden müssen, ich breche mir die Finger daran.:D


Vielen dank

Code:
NW1:      
TAR1  #SaveAR1
      TAR2  #SaveAR2
      L     DINO
      T     #SaveDINR
      L     DBNO
      T     #SaveDBNR


NW2:
  L     #DB_Nr                      // Eingabe DB öffnen
      T     #DB_Nr_tmp
      AUF   DB [#DB_Nr_tmp]


      L     #Eingabe_Anz                // Anzahl laden aus Eingabe
      T     #Ausgabe


      L     #Anzahl_Saetze              // Anzahl Sätze auswerten


next: T     #count


      L     #Versatz                    // Versatz
      *I    
      L     #Versatz
      -I    
      L     #Anf_Byte_Nr                // Offset DB Adresse
      +I    
      T     #PointerD                   // Pointer Byte errechnen
      SLW   3
      T     DBW [#PointerD]


      L     #Wert
      +D    
      T     #PointerD


      ==I   


      SPBN  _nul                        //  = 0 Sprung    = 1 Anzahl erhöhen
      L     #Ausgabe                    // laden alte Anzahl
      INC   1                           // Anzahl erhöhen
      T     #Ausgabe                    // neue Anzahl
_nul: NOP   0




      L     #count                      // loop
      LOOP  next


NW3:
      LAR1  #SaveAR1                    // Register wiederherstellen
      LAR2  #SaveAR2
      AUF   DB [#SaveDBNR]
      AUF   DI [#SaveDINR]


      SET   
      SAVE
 
Zurück
Oben