false IBAE DLISTE DatenIn
Datenlisten-DB Datenlisten-1.DW Aufrufparameter (Auftrag / Anzahl Zusatzdaten) Such-Daten-Schnittstelle
Rückmeldung OutDaten-Schnittstelle Daten stehen an angegebener Position in Datenbank
Zeiger, wo Rein-Daten sind Zeiger, FIFO-Stelle Datenliste-Kennnung (DA) Datensatzlänge in Word (01 - F0) F0=128 Länge der Datenliste (maximale Anzahl der Datensätze) Stammdatenlänge in Word (1 - 9) Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) Speicherung des letzten Zugriffs / Suchzeiger reserviert von Sort-Datenliste Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) Reserve 1.Aufrufparameter 2.Aufrufparameter Datenlisten-DB Stammdaten beginnen ab hier Rückmeldung SFC-Aufruf Rückmeldung SFC-Aufruf Ende der Datenliste Adress-Register 2 zwischenspeichern Loopzähler Such-Daten-DB, falls angegeben Such-Daten-Pointer: Kennung, Adresse Such-Daten-Startpunkt: Adresse Out-Daten-DB, falls angegeben Out-Daten-Pointer: Kennung, Adresse Out-Daten-Startpunkt: Adresse Zeiger für IndDB 1.Datenwort der Indaten 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2) Datenblocklänge in Bytes Bei angegebenen Datensatz suchen Rückmeldung SFC-Aufruf Indizierung möglich Indizier-Zeiger angegeben Weitersuchen ist aktiv Offsetsuchen ist aktiv Sortliste wird durchsucht Wnadel-FC für ind.Suchen vorhanden Rückmeldung Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Datenmenge, die nicht vorschoben wird Lösch-Position Wandel-FC
Standard DatenOut 86 STL cs-CZ de-DE COPYRIGHT by Ingenieurbüro A.Emmert Ortsstr.33, D-869925 Fuchstal (Germany) Tel.: 0049(0)8243-1254 Version: P&O / 10.2024 Version: ILS2100 / 06.11.2009 Datenblock in Datenliste suchen / löschen SSDB: Datenlisten-DB SSDW: Datenlisten-1.DW SEARCHDATEN: Pointer, wo einzutragende Daten stehen (P#DB1.DBX0.0, P#M220.0) AUFTRAG: XXYY XX: 00 = angegebenen Datensatz suchen 02 - 80 = Stammdaten beginnen ab angegebenen Datenwort E1 = angegebenen Datensatz suchen + austragen! F1 = 1.Datensatz lesen FF = nächsten vorhandenen Eintrag lesen (ab letzten Zugriff) YY: 01 - 09 = Anzahl der Stammdaten (falls abweichend vom Datenlistenkopf!) (Achtung, nur mit P#M220.0 oder speziellen DB suchen!) OUTDATEN: Pointer, wohin ausgelesene Daten übergeben werden (P#DB1.DBX0.0, P#M220.0) RE_VAL: Rückmeldungen: Bit0: Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung Bit1: SFC20-Aufruf mit Fehler Bit2: Listenende ist erreicht Bit3: Falscher Parameter bei Aufruf Bit4: Undefinierte Stammdaten zum Suchen Bit5: Undefinierte OUT-Daten Bit6: Datensatz ist nicht vorhanden Bit7: Datensatz ist vorhanden en-US AR2 zwischenspeichern Word 2#0000_0000_0000_0000 schreibgeschützt STL cs-CZ de-DE en-US cs-CZ de-DE Schnittstellen-DB sinnvoll ? en-US Word 16#1004 Kennung 10 + Word=04
Any-Kennung, Datentyp Word 16#000A 10 Dw´s holen
Wiederholungen
DB_Nummer Adresse Int 3 DWord 16#8400_0000 Kennung: Daten
Kennung, Adresse 1.-10.DW Datenliste holen Variant Any P#L20.0 WORD 10 Word 2#0000_0000_0000_0000 STL cs-CZ de-DE Quelle-Pointer erzeugen: en-US cs-CZ de-DE Datenlistekopf holen en-US Datenliste-Kopf Byte 16#DB = Sort-Datenlistekennung ? Ja ! Sortliste wird durchsucht Byte 16#DA = Datenlistekennung ? Nein ! Int 1 Datenblocklänge Int 128 Int 1 Max.Anzahl von Datenblöcken Int 1 Anzahl der Stammdaten Int 9 Anzahl der Stammdaten Datenblocklänge Länge der Datenliste Datenblocklänge Int 2 DB byteorientiert Int 20 Speichern ab 10.DW Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Datenlisten-DB ist zu kurz! Word 16#DAEE Datenliste-Endekennung ? Nein ! Word 16#DBEE Sort-Datenliste-Endekennung ? Nein ! Datenblocklänge Int 2 Datenblocklänge in Bytes STL cs-CZ de-DE en-US cs-CZ de-DE Zeigerüberprüfung en-US Indizierung möglich Indizier-Zeiger angegeben Weitersuchen ist aktiv Offsetsuchen ist aktiv Int 0 Vorerst kein Offset
Aufrufparameter zwischenspeichern Byte 16#00 XX = 00 ? Ja! Byte 16#E1 XX = E1 ? Ja! Sortliste wird durchsucht Byte 16#E1 XX = E1 ? Ja! Byte 16#F1 XX = F1 ? Nein ! Byte 16#00 Sortliste wird durchsucht Int 20 Byte 16#FF XX = FF ? Nein ! Byte 16#00 Sortliste wird durchsucht Alter Suchzeiger Datenblocklänge in bytes Nächsten Datensatz suchen Neuer Suchzeiger Datenblocklänge in bytes Alle möglichen Einträge Gesamtlänge Startpunkt Int 20 Offset 1.Daten Schreibzeiger Noch nicht am Ende ! Byte 16#02 XX < 02 ? Ja! Byte 16#80 XX > 80 ? Ja! XX > Datensatzlänge Ja! Int -1 Angegebener Offset -1 Int 2 DB byteorientiert Richtiger Offset der 1.Stammdaten Int 0 Suche ab Anfang Byte 16#00 =0 ? 2.Aufrufparameter Ja ! Anzahl der Stammdaten Datenblocklänge Int 1 Anzahl der Stammdaten Int 9 Offset Int -1 Letzte Stammdaten zu groß ? Ja! STL cs-CZ de-DE en-US cs-CZ de-DE Auftrag kontrollieren en-US Int 0 Suchzeiger Suchdaten-DB Kennung, Adresse Suchdaten-DB Int 0 Angegeben ? Nein Word 2#0000_0000_0000_0000 Fehler vorhanden ? Ja ! Kennung, Adresse DWord 16#00FF_FFFF Ohne Kennung Int 3 Ohne Bit Datenblocklänge Int 2 DB byteorientiert Suchdaten-DB ist zu kurz Suchdaten-DB Int 0 Angegeben ? Nein Suchdaten überprüfen 1.Suchdaten speichern Suchdaten überprüfen 1.Suchdaten speichern Suchdaten-DB Int 0 Angegeben ? Nein Suchdaten überprüfen Int 0 Etwas angegeben ? Ja ! ARef P#2.0 STL cs-CZ de-DE Such-DATEN-Pointer übernehmen: en-US cs-CZ de-DE Suchdaten definiert ? en-US Indizierter DB Int 0 =0 ? Kein indizierter DB ! Sortliste wird durchsucht Word 2#0000_0000_0000_0000 Länge des Indizierten DB überschritten ? DINT#2 DB byteorientiert Indizier-DB ist zu kurz Stammdaten Int 3 zu viele Stammdaten ? Ja ! Offset zum Abziehen Int 0 Parameter vorhanden ? Nein Stammdaten (1.DW) übergeben Stammdaten (2.DW) übergeben Beeinflussung der Weiterfahrt Rückwert von FC Stammdaten Stelle, wo Zeiger hinterlegt ist Int 0 negativ Länge des Indizierten DB überschritten ? Stelle, wo Zeiger hinterlegt ist Ja ! Int 2 DB byteorientiert Int 3 Pointer erzeugen Pointer, wo Zeiger hinterlegt ist Indizierter DB Suchzeiger Datenliste DB Indizierung möglich Indizier-Zeiger angegeben STL cs-CZ de-DE en-US cs-CZ de-DE Indiziert suchen ? en-US Suchzeiger Int 0 Angegeben ? Nein ! Suchzeiger Int -20 Zeiger 1.Daten Datenblocklänge in Bytes Ermittlung der wievielten Daten -1 Int 16 Rest ermitteln Int 0 = 0 ? Suchzeiger nicht im Raster ! Int 0 Bei angegebener Stelle suchen Such bei X-ten Datensatz Int 1 Suche bei 1.Datensatz beginnen Such bei X-ten Datensatz Indizier-Zeiger angegeben Int 20 Offset für 1.Daten Suchzeiger Suchzeiger Richtiger Offset der 1.Stammdaten Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Anzahl der Stammdaten Suchdaten-DB Int 0 Angegeben ? Nein Suchdaten überprüfen mit Datenliste-Daten lesen nicht identisch ! Int 3 DINT#2 Int 3 ARef P#2.0 Word 2#0000_0000_1000_0000 Daten sind vorhanden Ok-Status Int 0 Suche bei 1.Datensatz begonnen Such bei X-ten Datensatz Nein ! Such bei X-ten Datensatz Int 1 Such bei X-ten Datensatz Anzahl aller Daten in Datenliste Alle Datensätze sind durchsucht Datenblocklänge in bytes Suchzeiger Suchzeiger STL cs-CZ de-DE en-US cs-CZ de-DE Kontrolle auf gleiche Stammdaten en-US Outdaten-DB Kennung, Adresse Outdaten-DB Int 0 Angegeben ? Nein Word 2#0000_0000_0000_0000 Fehler vorhanden ? Ja ! Kennung, Adresse DWord 16#00FF_FFFF Ohne Kennung Int 3 Ohne Bit Outdaten-DB ist zu kurz STL cs-CZ de-DE Out-DATEN-Pointer übernehmen: en-US cs-CZ de-DE Outdaten ok ? en-US Word 16#1004 Kennung 10 + Word=04
Any-Kennung, Datentyp Datenwords speichern
Wiederholungen DATEN-Pointer übernehmen:
DB_Nummer Adresse Int 3 DWord 16#8400_0000 Kennung: Daten
Kennung, Adresse Ziel-Pointer erzeugen: Kennung + Datenbytes s.o.
DB_Nummer
Kennung, Adresse Datenliste-Daten speichern Variant Word 2#0000_0000_0000_0000 Datenliste kann nicht beschrieben werden Int 12 Offset letzter Zugriff Int 3 Pointer erzeugen /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Suchzeiger Speicherung letzter Zugriff Such bei X-ten Datensatz Übergabe nach außen STL cs-CZ de-DE Quelle-Pointer erzeugen: en-US cs-CZ de-DE Daten aus Datenliste lesen (in OUTDaten übergeben) en-US Byte 16#E1 Daten löschen ? 1.Aufrufparameter Nein ! Datenliste kann nicht beschrieben werden Indizierung möglich Gemeinsame Daten für Pointer erzeugen: Word 16#1004 Kennung 10 + Word=04
Any-Kennung, Datentyp Stelle, wo gelöscht werden soll Int -20 Datenblocklänge in bytes Int 1 Stelle, die gelöscht werden soll Lösch-Position Länge der Datenliste (Letzter Eintrag zum Löschen ?) Ja ! Lösch-Position Datenblocklänge Gesamtdatenlänge in Words Datenmenge, die nicht vorschoben wird Länge der Datenliste Datenblocklänge Gesamtdatenlänge in Words Datenmenge, die nicht vorschoben wird abziehen
Wiederholungen
DB_Nummer Quelle-Pointer erzeugen: Stelle, wo gelöscht werden soll Datenblocklänge in Bytes Int 3 DWord 16#8400_0000 Kennung: Daten
Kennung, Adresse Ziel-Pointer erzeugen: Stelle, wo gelöscht werden soll Int 3 DWord 16#8400_0000 Kennung: Daten
Kennung, Adresse Daten verschieben: DatenSortliste-Daten verschieben Variant Word 2#0000_0000_0000_0000 Letzte Daten löschen: Ende des Datenbereichs Datenblocklänge in Bytes Ab hier löschen ! Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Datensatzlänge Int 0 Daten löschen Int 3 DInt 2 nächstes DW Int 3 Speicherung letzter Zugriff: Int 12 Offset letzter Zugriff Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Int 0 löschen Speicherung letzter Zugriff Suchzeiger Indizier-Zeiger angegeben Anzahl Einträge: Int 16 Offset Anzahl Einträge Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Anzahl der Einträge Int -1 -1 Anzahl der Einträge Int 0 Minimum übergeben STL cs-CZ de-DE en-US cs-CZ de-DE Daten aus Datenliste löschen ? (nicht indiziert!) en-US Word 16#E1 Daten löschen ? 1.Aufrufparameter Nein ! Suchzeiger Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Int 0 Int 3 DINT#2 Int 3 Int 12 Int 3 /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) Int 0 Löschen Suchzeiger Indizier-Zeiger angegeben STL cs-CZ de-DE en-US cs-CZ de-DE Daten aus Datenliste löschen ? (indiziert) en-US Outdaten-DB Int 0 Angegeben ? Nein Outdaten überprüfen Int 0 Etwas angegeben ? Ja ! ARef P#2.0 Word 2#0000_0000_0100_0000 Daten sind nicht vorhanden Ok-Status Word 2#0000_0000_1000_0000 Daten sind vorhanden Ok-Status STL cs-CZ de-DE en-US cs-CZ de-DE Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? en-US Indizierung möglich Indizier-Zeiger angegeben Indizierter DB Suchzeiger Datenliste DB STL cs-CZ de-DE en-US cs-CZ de-DE Indizierung ok ? en-US VKE = 1 ohne Fehler !!! Ok-Status Word 2#0000_0000_0000_0001 Kein Datenlistebereich Word 2#0000_0000_0000_0010 SFC20-Aufruf mit Fehler Word 2#0000_0000_0000_0100 Listenende ist erreicht Word 2#0000_0000_0000_1000 Falscher Parameter bei Aufruf Word 2#0000_0000_0001_0000 Undefinierte Suchdaten Word 2#0000_0000_0010_0000 Undefinierte OUTDaten Word 2#0000_0000_0100_0000 Datensatz nicht vorhanden VKE = 0 bei Fehler !!! VKE in BIE-Bit speichern AR2 zurückspeichern STL cs-CZ de-DE en-US cs-CZ de-DE Fehlerausgabe / RET_VAL en-US STL cs-CZ de-DE en-US cs-CZ de-DE Ende en-US cs-CZ de-DE Datenlisten-Modul en-US