Programmieren in Pascal: KURT (Korruptionsschutz)

Aus Datenschutz
Version vom 18. März 2022, 10:55 Uhr von Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „KURT - diesmal in Pascal: <pre> // KURT - Korruptionsschutz-Schnellprüfprogramm und Berichtsgenerierung per E-Mail // (c) 2020, 2022 Frank Werner - Feierabe…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

KURT - diesmal in Pascal:


// KURT - Korruptionsschutz-Schnellprüfprogramm und Berichtsgenerierung per E-Mail
// (c) 2020, 2022 Frank Werner - Feierabendprojekt in FreePascal (+ Lazarus)
// Prototyp für die Android-App, das eBook, die Entscheidungsdatenbank,
// Fragebögen, Formulare und die HTML-Seiten

// To-Do-Liste
// Nachweispflicht

program kurt;

type TFragebogen = array [0..20, 0..3] of string;

// Der Fragebogen: 22 Zeilen, 4 Spalten, Index beginnt bei 0!!
// Spalten: Nr., Frage, Nächste Fragenummer bei JA, Nächste Fragenummer bei NEIN
// Wenn die nächsten Fragenummern beide Null sind, ist der Prüfbogen beendet

var Fragebogen: TFragebogen = (
                                ('00', 'Handelt es sich bei der zu untersuchenden Stelle um eine öffentliche Stelle?', '01', '18'),
                                ('01', 'Handelt es sich bei dieser öffentlichen Stelle um eine kleine kreisangehörige Gemeinde (mit weniger als 20.000 Einwohnern)?', '18', '02'),
                                ('02', 'Gibt es bei dieser öffentlichen Stelle Bereiche, in denen Einfluss auf Aufträge, Fördermittel, Genehmigungen, Gebote oder Verbote genommen werden kann?', '03', '09'),
                                ('03', 'Sind diese Bereiche als "korruptionsgefährdet" (z. B. in einer Dienstanweisung) festgelegt?', '05', '04'),
                                ('04', 'PFLICHTVERLETZUNG (§ 19 Abs. 2 Korruptionsbekämpfungsgesetz): Korruptionsgefährdete Bereiche müssen schriftlich erklärt werden!', '19', '19'),
                                ('05', 'Sind Beschäftigte in diesen Bereichen länger als fünf Jahre ununterbrochen eingesetzt?', '06', '09'),
                                ('06', 'PFLICHTVERLETZUNG (§ 21 Korruptionsbekämpfungsgesetz): Sie sind von der Rotationspflicht abgewichen. Das ist nur aus rechtlichen oder tatsächlichen Gründen erlaubt!', '19', '19'),
                                ('07', 'Wurden die Gründe für die Abweichung von der Rotationspflicht dokumentiert und der Aufsichtsbehörde gemeldet?', '09', '08'),
                                ('08', 'PFLICHTVERLETZUNG (§ 21 Korruptionsbekämpfungsgesetz): Die Gründe müssen dokumentiert und der Aufsichtsbehörde gemeldet werden!', '19', '19'),
                                ('09', 'Geben politische Beamte jährlich über Beruf, Beraterverträge, Mitgliedschaften in Gremien, Vereinen oder privatrechtlichen Unternehmen Auskunft?', '11', '10'),
                                ('10', 'PFLICHTVERLETZUNG (§ 16 Korruptionsbekämpfungsgesetz): Politische Beamte müssen jährlich berichten!', '19', '19'),
                                ('11', 'Zeigen politische Beamte und Abgeordnete vor Übernahme oder innerhalb von fünf Jahren nach dem Eintritt in den Ruhestand Nebenbeschäftigungen an?', '13', '12'),
                                ('12', 'PFLICHTVERLETZUNG (§ 17 Abs. 2 Korruptionsbekämpfungsgesetz): Politische Beamte müssen diese Angaben machen!', '19', '19'),
                                ('13', 'Erfolgt eine jährliche Aufstellung aller Nebeneinnahmen der Abgeordneten und politischen Beamten?', '15', '14'),
                                ('14', 'PFLICHTVERLETZUNG (§ 17 Abs. 2 Korruptionsbekämpfungsgesetz): Politische Beamte müssen diese Angaben machen!', '19', '19'),
                                ('15', 'Gibt es ehemalige Beschäftigte, die aus ihrer früheren Tätigkeit Versorgungsbezüge o. ä. erhalten?', '16', '20'),
                                ('16', 'Werden diese Beschäftigten schriftlich auf die Anzeigepflicht hingewiesen und der Hinweis aktenkundig gemacht?', '20', '17'),
                                ('17', 'PFLICHTVERLETZUNG (§ 18 Abs. 1 Korruptionsbekämpfungsgesetz, § 41 Beamtenstatusgesetz, § 52 Abs. 5 Landesbeamtengesetz): Hinweis ist Pflicht!', '19', '19'),
                                ('18', 'Das Korruptionsbekämpfungsgesetz gilt nur für öffentliche Stellen mit mehr als 20.000 Einwohnern!', '00', '00'),
                                ('19', 'Die Stelle hat ihre Sorgfaltspflicht NICHT ERFÜLLT!', '00', '00'),
                                ('20', 'Die Stelle hat ihre Sorgfaltspflicht ERFÜLLT!', '00', '00')
                              );
    Sachverhalt: string;
    Bericht    : string;
    i          : integer;


procedure Ausgeben (Ausgabe: string; var Bericht: string);
begin
  Bericht := concat (Bericht, '+++ ', Ausgabe, ' +++', chr(13), chr (10));
  write (Ausgabe, ' ');
end;


function Antwort (Frage: string; var Bericht: string): boolean;
// Frage stellen, Antwort entgegen nehmen, Bericht um beides ergänzen, 21.10.2021/FW
var c: char;
begin
  Ausgeben (Frage, Bericht);
  readln (c);
  if c = 'j' then begin
    Bericht := concat (Bericht, '=> JA', chr(13), chr(10));
    Antwort := true;
  end else begin
    Bericht := concat (Bericht, '=> NEIN', chr(13), chr(10));
    Antwort := false;
  end;
end;


begin

  // Start: Titel ausgeben, Sachverhalt erfassen, Bericht vorbereiten
  Bericht := '';
  Ausgeben ('KURT - Schnelle Vorprüfung und Generierung eines kurzen Berichts (Version 21.10.2021), Autor: Frank Werner', Bericht);
  writeln;
  Ausgeben ('Geben Sie den Sachverhalt des Falles ein (ohne personenbezogene Daten!):', Bericht);
  readln (Sachverhalt);
  Bericht := concat ('Sachverhalt: ', Sachverhalt, chr (13), chr (10));

  // Fragebogen abarbeiten
  i := 0;
  repeat
    if Fragebogen [i, 2] = Fragebogen [i, 3] then begin // Wenn die Werte der Spalten 2 und 3 gleich sind
      Ausgeben (Fragebogen [i, 1], Bericht);            // ist die Frage eine Information (nur anzeigen)
      Val(Fragebogen [i, 2], i);                        // und der zweite Wert die neue Frageposition
    end else if Fragebogen [i, 2] = '00' then begin     // Sonst, wenn die nächste Frageposition = 0 ist
      i := 0;                                           // ist der Loop beendet
    end else if Antwort (Fragebogen [i, 1], Bericht) then begin
      Val (Fragebogen [i, 2], i);
    end else begin
      Val (Fragebogen [i, 3], i);
    end;
  until i = 0;

  // Bericht ausgeben
  writeln; writeln;
  Ausgeben (Bericht, Bericht);
  readln;

end.

Diese Programm wird ohne jegliche Garantie oder Gewährleistung zur Verfügung gestellt. Eine Haftung wird nicht übernommen.