falseIBAEDLISTEDatenInDatenlisten-DBDatenlisten-1.DWAufrufparameter (Auftrag / Anzahl Zusatzdaten)Such-Daten-SchnittstelleRückmeldungOutDaten-SchnittstelleDaten stehen an angegebener Position in DatenbankZeiger, wo Rein-Daten sindZeiger, FIFO-StelleDatenliste-Kennnung (DA)Datensatzlänge in Word (01 - F0) F0=128Lä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 / Suchzeigerreserviert von Sort-DatenlisteAnzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!)Reserve1.Aufrufparameter2.AufrufparameterDatenlisten-DBStammdaten beginnen ab hierRückmeldung SFC-AufrufRückmeldung SFC-AufrufEnde der DatenlisteAdress-Register 2 zwischenspeichernLoopzählerSuch-Daten-DB, falls angegebenSuch-Daten-Pointer: Kennung, AdresseSuch-Daten-Startpunkt: AdresseOut-Daten-DB, falls angegebenOut-Daten-Pointer: Kennung, AdresseOut-Daten-Startpunkt: AdresseZeiger für IndDB1.Datenwort der Indaten1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2)Datenblocklänge in BytesBei angegebenen Datensatz suchenRückmeldung SFC-AufrufIndizierung möglichIndizier-Zeiger angegebenWeitersuchen ist aktivOffsetsuchen ist aktivSortliste wird durchsuchtWnadel-FC für ind.Suchen vorhandenRückmeldungStatt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Datenmenge, die nicht vorschoben wirdLösch-PositionWandel-FCStandardDatenOut86STLcs-CZde-DECOPYRIGHT 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-USAR2 zwischenspeichernWord2#0000_0000_0000_0000schreibgeschütztkein Datenlisten-BereichSTLcs-CZde-DEen-UScs-CZde-DESchnittstellen-DB sinnvoll ?en-USWord16#1004Kennung 10 + Word=04Any-Kennung, DatentypWord16#000A10 Dw´s holenWiederholungenDB_NummerAdresseInt3DWord16#8400_0000Kennung: DatenKennung, Adresse1.-10.DW Datenliste holenVariantAnyP#L20.0 WORD 10Word2#0000_0000_0000_0000STLcs-CZde-DEQuelle-Pointer erzeugen:en-UScs-CZde-DEDatenlistekopf holenen-USDatenliste-KopfByte16#DB= Sort-Datenlistekennung ?Ja !Sortliste wird durchsuchtByte16#DA= Datenlistekennung ?Nein !kein DatenlistebereichInt1Datenblocklängekein DatenlistebereichInt128kein DatenlistebereichInt1Max.Anzahl von Datenblöckenkein DatenlistebereichInt1Anzahl der Stammdatenkein DatenlistebereichInt9kein DatenlistebereichAnzahl der StammdatenDatenblocklängekein DatenlistebereichLänge der DatenlisteDatenblocklängeInt2DB byteorientiertInt20Speichern ab 10.DWInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Datenlisten-DB ist zu kurz!kein Datenlisten-BereichWord16#DAEEDatenliste-Endekennung ?Nein !Word16#DBEESort-Datenliste-Endekennung ?Nein !kein Datenlisten-BereichDatenblocklängeInt2Datenblocklänge in BytesSTLcs-CZde-DEen-UScs-CZde-DEZeigerüberprüfungen-USIndizierung möglichIndizier-Zeiger angegebenWeitersuchen ist aktivOffsetsuchen ist aktivInt0Vorerst kein OffsetAufrufparameter zwischenspeichernByte16#00XX = 00 ?Ja!Byte16#E1XX = E1 ?Ja!Sortliste wird durchsuchtFalscher Aufrufparameter (austragen nicht erlaubt !)Byte16#E1XX = E1 ?Ja!Byte16#F1XX = F1 ?Nein !Byte16#00Sortliste wird durchsuchtFalscher AufrufparameterInt20OutDaten ok ?Byte16#FFXX = FF ?Nein !Byte16#00Sortliste wird durchsuchtFalscher AufrufparameterAlter SuchzeigerDatenblocklänge in bytesNächsten Datensatz suchenNeuer SuchzeigerDatenblocklänge in bytesAlle möglichen EinträgeGesamtlängeStartpunktInt20Offset 1.DatenSchreibzeigerNoch nicht am Ende !OutDaten ok ?Listenende erreichtByte16#02XX < 02 ?Ja!Falscher AufrufparameterByte16#80XX > 80 ?Ja!Falscher AufrufparameterXX > DatensatzlängeJa!Falscher AufrufparameterInt-1Angegebener Offset -1Int2DB byteorientiertRichtiger Offset der 1.StammdatenInt0Suche ab AnfangByte16#00=0 ?2.AufrufparameterJa !Anzahl der StammdatenDatenblocklängeFalscher AufrufparameterInt1Anzahl der StammdatenFalscher AufrufparameterInt9Falscher AufrufparameterOffsetInt-1Letzte Stammdaten zu groß ?Ja!Falscher AufrufparameterSTLcs-CZde-DEen-UScs-CZde-DEAuftrag kontrollierenen-USInt0SuchzeigerSuchdaten-DBKennung, AdresseSuchdaten-DBInt0Angegeben ?Nein Word2#0000_0000_0000_0000Fehler vorhanden ?Ja !Undefinierte StammdatenKennung, AdresseDWord16#00FF_FFFFOhne KennungInt3Ohne BitDatenblocklängeInt2DB byteorientiertSuchdaten-DB ist zu kurzUndefinierte StammdatenSuchdaten-DBInt0Angegeben ?Nein Suchdaten überprüfen1.Suchdaten speichernSuchdaten überprüfen1.Suchdaten speichernSuchdaten-DBInt0Angegeben ?Nein Suchdaten überprüfenInt0Etwas angegeben ?Ja !WeiterARefP#2.0Undefinierte StammdatenSTLcs-CZde-DESuch-DATEN-Pointer übernehmen:en-UScs-CZde-DESuchdaten definiert ?en-USIndizierter DBInt0=0 ?Kein indizierter DB !Sortliste wird durchsuchtWord2#0000_0000_0000_0000kein Indizier-DB vorhandenLänge des Indizierten DB überschritten ?DINT#2DB byteorientiertIndizier-DB ist zu kurzZeiger ausserhalb Ind.DBStammdatenInt3zu viele Stammdaten ?Ja !ohne Indizierung weiterOffset zum AbziehenInt0Parameter vorhanden ?NeinBei diesem Schritt weiter Stammdaten (1.DW)übergebenStammdaten (2.DW)übergebenBeeinflussung der WeiterfahrtRückwert von FCStammdatenStelle, wo Zeiger hinterlegt istInt0negativZeiger = 0Länge des Indizierten DB überschritten ?Stelle, wo Zeiger hinterlegt istJa !Zeiger ausserhalb Ind.DBInt2DB byteorientiertInt3Pointer erzeugenPointer, wo Zeiger hinterlegt istIndizierter DBSuchzeigerDatenliste DBIndizierung möglichIndizier-Zeiger angegebenSTLcs-CZde-DEen-UScs-CZde-DEIndiziert suchen ?en-USSuchzeigerInt0Angegeben ?Nein !Suche bei 1.Datensatz beginnenSuchzeigerInt-20Zeiger 1.DatenDatenblocklänge in BytesErmittlung der wievielten Daten -1Int16Rest ermittelnInt0= 0 ?Suchzeiger nicht im Raster !Suche bei 1.Datensatz beginnenInt0Bei angegebener Stelle suchenSuch bei X-ten DatensatzInt1Suche bei 1.Datensatz beginnenSuch bei X-ten DatensatzIndizier-Zeiger angegebenInt20Offset für 1.DatenSuchzeigerSuchzeigerRichtiger Offset der 1.StammdatenInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Anzahl der StammdatenSuchdaten-DBInt0Angegeben ?Nein Suchdaten überprüfen mitDatenliste-Daten lesennicht identisch !Int3DINT#2Int3ARefP#2.0Word2#0000_0000_1000_0000Daten sind vorhandenOk-StatusDatensatz ist in Liste enthaltenInt0Suche bei 1.Datensatz begonnenSuch bei X-ten DatensatzNein !Such bei X-ten DatensatzInt1Such bei X-ten DatensatzAnzahl aller Daten in DatenlisteAlle Datensätze sind durchsuchtNein !Datensatz ist nicht vorhandenDatenblocklänge in bytesSuchzeigerSuchzeigerSTLcs-CZde-DEen-UScs-CZde-DEKontrolle auf gleiche Stammdatenen-USOutdaten-DBKennung, AdresseOutdaten-DBInt0Angegeben ?Nein Word2#0000_0000_0000_0000Fehler vorhanden ?Ja !Undefinierte OutdatenKennung, AdresseDWord16#00FF_FFFFOhne KennungInt3Ohne BitOutdaten-DB ist zu kurzUndefinierte OutdatenSTLcs-CZde-DEOut-DATEN-Pointer übernehmen:en-UScs-CZde-DEOutdaten ok ?en-USWord16#1004Kennung 10 + Word=04Any-Kennung, DatentypDatenwords speichernWiederholungenDATEN-Pointer übernehmen:DB_NummerAdresseInt3DWord16#8400_0000Kennung: DatenKennung, AdresseZiel-Pointer erzeugen:Kennung + Datenbytes s.o.DB_NummerKennung, AdresseDatenliste-Daten speichernVariantWord2#0000_0000_0000_0000Datenliste kann nicht beschrieben werdenInt12Offset letzter ZugriffInt3Pointer erzeugen/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)SuchzeigerSpeicherung letzter ZugriffSuch bei X-ten DatensatzÜbergabe nach außenSTLcs-CZde-DEQuelle-Pointer erzeugen:en-UScs-CZde-DEDaten aus Datenliste lesen (in OUTDaten übergeben)en-USByte16#E1Daten löschen ?1.AufrufparameterNein !Datenliste kann nicht beschrieben werdenIndizierung möglichBei ind.Zugriff nur löschen, nicht verschieben, keine Anzahl!Gemeinsame Daten für Pointer erzeugen:Word16#1004Kennung 10 + Word=04Any-Kennung, DatentypStelle, wo gelöscht werden sollInt-20Datenblocklänge in bytesInt1Stelle, die gelöscht werden sollLösch-PositionLänge der Datenliste (Letzter Eintrag zum Löschen ?)Ja !Ohne Verschieben letzten Eintrag löschenLösch-PositionDatenblocklängeGesamtdatenlänge in WordsDatenmenge, die nicht vorschoben wirdLänge der DatenlisteDatenblocklängeGesamtdatenlänge in WordsDatenmenge, die nicht vorschoben wirdabziehenWiederholungenDB_NummerQuelle-Pointer erzeugen:Stelle, wo gelöscht werden sollDatenblocklänge in BytesInt3DWord16#8400_0000Kennung: DatenKennung, AdresseZiel-Pointer erzeugen:Stelle, wo gelöscht werden sollInt3DWord16#8400_0000Kennung: DatenKennung, AdresseDaten verschieben:DatenSortliste-Daten verschiebenVariantWord2#0000_0000_0000_0000Letzte Daten löschen:Ende des DatenbereichsDatenblocklänge in BytesAb hier löschen !Int3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)DatensatzlängeInt0Daten löschenInt3DInt2nächstes DWInt3Speicherung letzter Zugriff:Int12Offset letzter ZugriffInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Int0löschenSpeicherung letzter ZugriffSuchzeigerIndizier-Zeiger angegebenAnzahl Einträge:Int16Offset Anzahl EinträgeInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Anzahl der EinträgeInt-1-1 Anzahl der EinträgeInt0Minimum übergebenSTLcs-CZde-DEen-UScs-CZde-DEDaten aus Datenliste löschen ? (nicht indiziert!)en-USWord16#E1Daten löschen ?1.AufrufparameterNein !SuchzeigerInt3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Int0Int3DINT#2Int3Int12Int3/Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)Int0LöschenSuchzeigerIndizier-Zeiger angegebenSTLcs-CZde-DEen-UScs-CZde-DEDaten aus Datenliste löschen ? (indiziert)en-USOutdaten-DBInt0Angegeben ?Nein Outdaten überprüfenInt0Etwas angegeben ?Ja !OkARefP#2.0Word2#0000_0000_0100_0000Daten sind nicht vorhandenOk-StatusWord2#0000_0000_1000_0000Daten sind vorhandenOk-StatusSTLcs-CZde-DEen-UScs-CZde-DEWeitersuchen aktiv ? Datensatz vorhanden oder 0 ?en-USIndizierung möglichIndizier-Zeiger angegebenIndizierter DBSuchzeigerDatenliste DBSTLcs-CZde-DEen-UScs-CZde-DEIndizierung ok ?en-USVKE = 1 ohne Fehler !!!Ok-StatusWord2#0000_0000_0000_0001Kein DatenlistebereichWord2#0000_0000_0000_0010SFC20-Aufruf mit FehlerWord2#0000_0000_0000_0100Listenende ist erreichtWord2#0000_0000_0000_1000Falscher Parameter bei AufrufWord2#0000_0000_0001_0000Undefinierte SuchdatenWord2#0000_0000_0010_0000Undefinierte OUTDatenWord2#0000_0000_0100_0000Datensatz nicht vorhandenVKE = 0 bei Fehler !!!VKE in BIE-Bit speichern AR2 zurückspeichernSTLcs-CZde-DEen-UScs-CZde-DEFehlerausgabe / RET_VALen-USSTLcs-CZde-DEen-UScs-CZde-DEEndeen-UScs-CZde-DEDatenlisten-Modulen-US