Inhaltsverzeichnis

Schnittstelle 2: Interner Cleanup

Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.

Identität und Quellenstand

eProgramm.Cleanup = 2. Aktive feste Registrierung → kein aktiver Delegate (E,P). Registrierung und erreichbare Quellen geprüft; installierte Binärdateien ungeprüft. Active=True, InAutomatik=false, ManuellerAufruf=false, NurAufServer=false. Kennzeichen beschreiben Registrierung/Defaults, nicht eingerichtete Jobs; Run selbst prüft keine Serverbindung.

seegerstefan/pep4desktop, master, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Lokale .DS_Store-/cPep/PEP-Abweichungen nicht vermischt; Fachquellen cSchnittstellen/ZW/Sqlfiles unverändert. Kein Remote-/Installationsabgleich.

Einstieg, Parameter und Ablauf

Keine Fachparameter oder Eingangsdateien. cCalcZw.DatenBereinigen ruft ausschließlich dbo.Maintenance_Clean ohne Parameter auf; Standard-SqlCommand-Timeout, nicht SQL_TIMEOUT. Keine anschließende Neuberechnung.

Die SP schließt offene ITZeit/ITORGA/ITPEP/ITSonderurlaub/ITZahlung.bis mit Personen.Austritt; bei fehlendem Austritt bleibt der Wert NULL. BerechneteZeiten außerhalb StartZW/Austritt werden gelöscht. CStatus außerhalb dieser Grenzen wird erst auf 0/Meldung leer gesetzt und dann über OUTPUT deleted.* in CStatus_Sicherung gesichert und gelöscht. Die Sicherung enthält also nicht mehr den ursprünglichen Status/Meldung. Positive Status gültiger inaktiver ITZeit werden zusätzlich auf 0 gesetzt (keine Sicherung dafür).

Pep3Log-Löschung: Datafox/Gantner InfoLevel51 älter sechs Monate, alle Einträge älter18 Monate, Erfolgsinfo51 mit Kurz='Ausführung erfolgreich beendet' älter einen Monat; Dorma älter zwölf Monate. Maßstab SQL-Serverzeit, nicht die Zeit der Eingangsbuchung.

Wiederholung, Schema und Fehler

Kein Append fachlicher Zeiten; UPDATE/DELETE und Append Sicherung. Keine Gesamttransaktion oder automatische Rücknahme; vorangegangene Anweisungen bleiben bei späterem Fehler bestehen. OUTPUT ohne Zielspaltenliste hängt an genauer CStatus-/Sicherungs-Spaltenreihenfolge; DDL0834 belegt die dokumentierten Sicherungsfelder, nicht ein beliebiges Kundenschema. Keine Fixierungsprüfung. Wiederholung arbeitet auf verbleibendem Stand; SQL-Autocommit/Parallelität nicht als Jobschutz verstehen. Helfer fängt SQL-Fehler und liefert False.

Workerbindung

ExecuteTask behandelt Kennung2 ausdrücklich als Spezialfall; fehlender normaler Delegate bedeutet nicht wirkungslos. Interner Cleanup-Task ID-2 wird nur bei CalcZw aktiviert, als Anschluss an Statusfüllen1. Direkter cProgramm.Run wäre dagegen kein gültiger Ersatz für den Workerzweig.

Worker gibt Helfer-Boolean weiter. Automatik schreibt Schnittstellen.LastGet/Erfolg für ihre Task-ID; bei intern negativer ID kann UPDATE ohne passende Tabellenzeile wirkungslos sein. Command-Modus löscht ZwWorkerCommand nach Ausführung auch bei False; daher kein automatischer Wiederholungsvertrag. Diese Workerrahmenwirkung ist nicht Teil der Cleanup-SP.

Einstellungen und gemeinsame Nebenwirkungen

Gemeinsames Profil: LEGACY (interne Referenz).

Keine fachliche ZW-Einstellung im erreichbaren Einstieg nachgewiesen; gemeinsame Meldeeinstellungen nur über die ausdrücklich genannten Profile.

Defaults sind keine Livewerte. Melde-/Datei-/DB-Wirkungen sind nicht atomar.

Feldbeziehungen

DB-Rolle PEP4-Anmeldedatenbank, soweit nicht ausdrücklich Aprocon oder Import angegeben. Unqualifizierte Objektschemata nicht als Live-dbo-Vertrag behaupten. INSERT-Defaults/Computed-Spalten sind gesonderte Schemawirkung, kein explizites UPDATE.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
2-D001 Personen.PersonID SELECT Zeit-/Austrittsgrenzen Globaler Lauf SQL
2-D002 Personen.StartZW SELECT Zeit-/Austrittsgrenzen Globaler Lauf SQL
2-D003 Personen.Austritt SELECT Zeit-/Austrittsgrenzen Globaler Lauf SQL
2-D004 ITZeit.PersonenStammID SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D005 ITZeit.bis SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D006 ITZeit.bis UPDATE Austritt der passenden Person; bei fehlendem Austritt bleibt NULL bis IS NULL SQL
2-D007 ITORGA.PersonenStammID SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D008 ITORGA.bis SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D009 ITORGA.bis UPDATE Austritt der passenden Person; bei fehlendem Austritt bleibt NULL bis IS NULL SQL
2-D010 ITPEP.PersonenStammID SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D011 ITPEP.bis SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D012 ITPEP.bis UPDATE Austritt der passenden Person; bei fehlendem Austritt bleibt NULL bis IS NULL SQL
2-D013 ITSonderurlaub.PersonenStammID SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D014 ITSonderurlaub.bis SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D015 ITSonderurlaub.bis UPDATE Austritt der passenden Person; bei fehlendem Austritt bleibt NULL bis IS NULL SQL
2-D016 ITZahlung.PersonenStammID SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D017 ITZahlung.bis SELECT Personenjoin und nur offene Historien bis IS NULL SQL
2-D018 ITZahlung.bis UPDATE Austritt der passenden Person; bei fehlendem Austritt bleibt NULL bis IS NULL SQL
2-D019 ITZeit.von SELECT Inaktive gültige Zeitgeschichte setzt positive CStatus zurück IsAktiv=0 SQL
2-D020 ITZeit.bis2 SELECT Inaktive gültige Zeitgeschichte setzt positive CStatus zurück IsAktiv=0 SQL
2-D021 ITZeit.IsAktiv SELECT Inaktive gültige Zeitgeschichte setzt positive CStatus zurück IsAktiv=0 SQL
2-D022 BerechneteZeiten.Person SELECT Vor StartZW oder nach Austritt Datumvergleich SQL
2-D023 BerechneteZeiten.Datum SELECT Vor StartZW oder nach Austritt Datumvergleich SQL
2-D024 BerechneteZeiten.— Zeilen DELETE Zeilen außerhalb Personengrenzen Keine Sicherung SQL
2-D025 CStatus.PersonenStammID SELECT Grenz-/Statusauswahl Global SQL
2-D026 CStatus.Datum SELECT Grenz-/Statusauswahl Global SQL
2-D027 CStatus.CStatus SELECT Grenz-/Statusauswahl Global SQL
2-D028 CStatus.CStatus UPDATE 0 außerhalb Grenzen sowie bei inaktiver ITZeit Grenzdatum oder CStatus>0 SQL
2-D029 CStatus.Meldung UPDATE Leerer Text außerhalb StartZW/Austritt Vor nachfolgendem DELETE SQL
2-D030 CStatus.— Zeilen DELETE Außerhalb Grenzen; OUTPUT deleted.* Nach Reset CStatus/Meldung SQL
2-D031 CStatus.MeldungAus SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D032 CStatus.RahmenPepAus SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D033 CStatus.RahmenOeffnungAus SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D034 CStatus.Meldung SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D035 CStatus.AutoPauseAus SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D036 CStatus.Kommentar SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D037 CStatus.ts SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D038 CStatus.USERID SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D039 CStatus.MaxStundenAus SELECT OUTPUT deleted.* ins Sicherungsobjekt Gelöschte Zeilen; Spaltenreihenfolge relevant SQL,DDL
2-D040 CStatus_Sicherung.Datum INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D041 CStatus_Sicherung.PersonenStammID INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D042 CStatus_Sicherung.CStatus INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D043 CStatus_Sicherung.MeldungAus INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D044 CStatus_Sicherung.RahmenPepAus INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D045 CStatus_Sicherung.RahmenOeffnungAus INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D046 CStatus_Sicherung.Meldung INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D047 CStatus_Sicherung.AutoPauseAus INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D048 CStatus_Sicherung.Kommentar INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D049 CStatus_Sicherung.ts INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D050 CStatus_Sicherung.USERID INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D051 CStatus_Sicherung.MaxStundenAus INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D052 CStatus_Sicherung.tsSicherung INSERT Gelöschter Stand plus GETDATE; CStatus/Meldung bereits zurückgesetzt INSERT ohne Zielspaltenliste muss zur DDL passen SQL,DDL
2-D053 Pep3Log.Modul SELECT Datafox/Gantner/Dorma-Alter und Meldungsart SQL Server GETDATE SQL
2-D054 Pep3Log.Datum SELECT Datafox/Gantner/Dorma-Alter und Meldungsart SQL Server GETDATE SQL
2-D055 Pep3Log.InfoLevel SELECT Datafox/Gantner/Dorma-Alter und Meldungsart SQL Server GETDATE SQL
2-D056 Pep3Log.Kurz SELECT Datafox/Gantner/Dorma-Alter und Meldungsart SQL Server GETDATE SQL
2-D057 Pep3Log.— Zeilen DELETE Datafox/Gantner 6/18 Monate, Erfolgsinfo 1 Monat; Dorma 12 Monate Keine Archivierung dieser Logs SQL

Teststatus und Pflege

Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme, keine Codekorrektur. Q02 gilt für kundenspezifische Trigger/Constraints/DLLs/Jobs; weitere Grenzen siehe oben und Fragen (interne Referenz). Externe Betriebs-/Schemaabweichungen sind nicht durch die statische Analyse ausgeschlossen.

Gemeinsame Nebenwirkungen LEGACY

Block17 ergänzt6001/6002/6003/6004/6005 ausschließlich für direkte Info-/Dialog-/Logmeldungen; keine BASE-Mail/API. Parameter, Auswahl, Return und Fachwirkung jeID.

Block16 ergänzt explizit3031/3032/3041/3042/3060/3500 für die direkten Info-/Logmeldungen. Keine BASE-Vererbung bzw. Mail-/API-Nebenwirkung; Fachdateien/SQL/Returns pro ID prüfen. Keine pauschale Übernahme alter Dateiverträge.

Stand 2026-10-02; statisch geprüft am Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Mitglieder ausschließlich durch expliziten Profilverweis: Block 07, IDs 2000, 2001, 2010, 2020, 3020, 3021, 3030, 3040, 3050, 3070.

Block 13: Profil für 1067,1070,1073 nur bezüglich direkter cInfoTools-Dialog-/Logmeldungen und ihrer zwei Einstellungen wiederverwendet. Deren Datei-/Rückgabe-/Timeout-/Folgeaufrufverträge stehen ausschließlich in den Einzelbeschreibungen; die nachfolgenden Block-07-PFAD-/Return-Aussagen sind keine pauschale Behauptung für diese drei neuen IDs.

Block14 nutzt LEGACY ausschließlich für direkte Info-/Logpfade von 1100,1101,1102,1103,1200,1207,1208,1209,1223. Keine pauschale Übernahme der nachfolgenden Block07-Datei-/Rückgabeverträge; konkrete Unterschiede stehen je ID. 1203 verwendet nur direkten MsgBox-Fehlerpfad und ist kein Mitglied.

Block15 ergänzt ausdrücklich 1224/1225/1226/1320/1360/1400/1401/2021/2023 sowie die Veraltet-Stubs 2028/2029/2032/2046/2047/2048. Nur direkte Info-/Logpfade; konkrete Datei-/Return-/Timeoutverträge stehen je ID. Die sechs Stubs erben als Klasse zwar BASE, instanziieren aber nichts und rufen deren Start/Ende nicht auf. 2022 hat keinen solchen Pfad.

Abgrenzung und Ablauf

Die belegten LEGACY-Einstiege rufen cSchnitt_Basis.Start/Ende nicht auf. Die ursprünglichen Block-07-Klassen erben auch nicht von der Basis; für spätere statische Stubs gilt dagegen nur die fehlende Start-/Ende-Ausführung. Deshalb keine BASE-Mail-/API-/Outboxbeziehungen übernehmen. MAILTO wird zwar von cProgramm angelegt, aber hier nicht ausgewertet; ebenso keine fachliche Auswertung von MANUELL oder SILENT. RunWithDialog setzt MANUELL. Dialogunterdrückung kommt aus Settings.Info.SupressDialogs (Clientkonstruktor False, Worker True), kein belegter ZW-Schlüssel.

Die folgenden Datei-/Return-Aussagen gelten für Block 07, nicht pauschal für spätere Profilmitglieder. PFAD ist FileImport, auch bei den Exporten 2001/3021: vorhandene Datei erforderlich, OpenFileDialog statt SaveFileDialog. Der lokale Registrywert PEP3/PFADESCHNITT/<ID> speichert den zuletzt verwendeten Ordner; dies ist keine serverseitige Systemeinstellung. Fehlender PFAD-Schlüssel ergibt False mit Fehlermeldung. Value.ToString bei Nothing liegt vor dem Fach-Try und kann ungefangen abbrechen. Datei-Existenzprüfung und Startmeldung liegen ebenfalls davor.

Meldungen: ShowProgrammStart/ShowProgrammEndeSuccessDialog mit Level 51, ShowProgrammEndeErrorDialog 102, ShowExceptionDialog 105 → ZeigeInfoEvent, ggf. Dialog, Log. Kein Nachweis über externe Event-Abonnentenwirkungen. Dialog kann unterdrückt sein, Logging bleibt separat. Die acht Ausführen-Funktionen außer 2010/3070 haben keinen abschließenden Return und liefern deshalb Boolean False, auch wenn Daten geändert wurden. 2020/3020 und die beiden Exporte haben zusätzlich im Fachhelfer keinen Return; dort wird bereits Success=False und ein Fehlerdialog gewählt. 2000/3030/3040/3050 können Erfolg melden und dennoch False liefern.

Einstellungen

Beziehung Schlüssel / Variable Default Einfluss Wirkung Beleg
LEGACY-S001 GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL 50 Init → Info.LogLevel Meldung ab einschließlich Grenzwert in Datei/DB; verändert keine Fachdaten LEGACY:SET, LEGACY:INIT, LEGACY:INFO
LEGACY-S002 GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG 0 Init → Info.LogLevelEvLog Windows-Ereignisprotokoll nur bei Level > Grenze, Grenze > 0 und Level < 200 LEGACY:SET, LEGACY:INIT, LEGACY:INFO

Beide gezeigten Settings-Konstruktoren setzen AlwaysToFile=True. Oberhalb LogLevel werden Datei UND DB versucht; bei False nur DB, Datei als Fehlerfallback. Datei unter ApplicationData/PEP/LogFiles/yyyyMMdd_peplog.txt (Append). DB-Fehler werden als False abgefangen, verhindern nicht zwingend den Import. EventLog-Fehler werden geschluckt. Direkte Fachcommands des Block 07 setzen kein Timeout; SQL_TIMEOUT ist in diesen zehn Pfaden nicht gelesen. Keine zusätzliche fachliche ZW-Einstellung nachgewiesen, auch nicht in spCalcUmsatzPlan.

Datenbeziehungen

DB-Rolle PEP4-Anmeldedatenbank. Log schreibt über eigene Verbindung; nicht atomar mit Fachoperationen. fnUserId liest minimalen UserID zum rechten 25-Zeichen-Teil von SUSER_NAME(), sonst 0.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
LEGACY-D001 Pep3Log.UserID INSERT dbo.fnUserId() Meldungslevel erreicht DB-Log LEGACY:INFO, LEGACY:FN
LEGACY-D002 Pep3Log.Datum INSERT getdate() Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D003 Pep3Log.Kurz INSERT Kurztext, maximal 255 Zeichen Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D004 Pep3Log.LogText INSERT Detailtext einschließlich Pfad/ggf. Exception Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D005 Pep3Log.Modul INSERT Modulbezeichnung, maximal 50 Zeichen Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D006 Pep3Log.InfoLevel INSERT 51, 102 oder 105 je Meldung Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D007 tblUser.Name SELECT Abgleich RIGHT(SUSER_NAME(),25) fnUserId bei Log-INSERT LEGACY:FN
LEGACY-D008 tblUser.UserID SELECT MIN(UserID), fehlend → 0 fnUserId bei Log-INSERT LEGACY:FN

Quellenverzeichnis

Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.