-> 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.
Vielen dank
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.
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