5 Programmablauf
Nach den Initialisierungen der Programmvariablen wird der Benutzer aufgefordert, das Datum bis zu dem die Rückmeldungen verarbeitet werden sollen einzugeben. Außerdem bestimmt er noch, ob das Programm die Daten nur listet, oder auch verdichtet.
Folgende Sätze werden beim Listen und verdichten aussortiert:
-
Rückmeldung ist weder A-Zeile noch K-Zeile mit Zeiten
-
Rückmeldedatum größer, als gewünscht
-
Falls es keine Einzelrückmeldungen gibt, und die Masterzeile noch nicht erledigt ist.
-
Falls es Einzelrückmeldungen gibt, aber im Mastersatz noch nichts eingetragen wurde (Maschine = SPACE).
-
Alle Sätze, die schon verdichtet sind.
-
Alle Sätze, die nur Personalrückmeldungen beinhalten
-
Nach lesen der Arbeitsplatzdatei:
-
Alle Sätze, die Maschinen betreffen, für die keine Statistik angelegt werden soll.
-
Beim Verdichten werden die Mastersätze der Einzelrückmeldungen angezeigt, jedoch nicht verarbeitet, da der Inhalt der Einzelrückmeldungen verarbeitet wird.
Das Verdichten der Rückmeldungen hat für jeden einzelnen Satz folgenden Ablauf:
Zuerst wird der Rückmeldesatz gesperrt.
Nun werden in der Arbeitsplatzdatei die Laufzeiten der Maschine eingetragen, sofern der Maschinensatz vorhanden ist. Falls es auch eine Maschinengruppe gibt, aktualisiert das Programm auch deren Zeiten. Diese Summierung geschieht in beiden Fällen entsprechend dem in der Arbeitsplatzdatei vorgefundenen Zeitcode. (GOSUB aktualisiere.arbeitsplatz)
Anschließend wird für jede Zeitscheibe der Start- und Endezeitpunkt in einem Array abgelegt. Zeitpunkte, die in der Rückmeldung durch 0 oder 999999 als nicht vorhanden angegeben sind werden aus dem zugehörigen Satz in der FA-POS gelesen und in das Array eingetragen. Fehlt der Satz in der FA-POS wird als Ende das Rückmeldedatum verwendet, und daraus der Start berechnet. Falls Das Ende vor dem Start liegt, werden Start und Ende vertauscht. (GOSUB hole.startdaten)
Aus Start, Ende und der Dauer berechnet das Programm mit Hilfe der Zeitrechnung für jede Zeitscheibe einen sogenannten Faktor. Der Faktor entspricht dem prozentualen Anteil der Dauer der Zeitscheibe, an der zwischen Start und Ende möglichen Verarbeitungszeit der Maschine. Des Weiteren bestimmt die Routine noch die Start- und Endeperiode der Zeitscheibe. Das Minimum der Startperioden ergibt dann die aktuelle Periode, bei der die Verarbeitung beginnt. (GOSUB berechne.faktoren)
Jetzt kann der erste Periodensatz gelesen werden. Ist eine Gruppe zugeordnet, so wird auch gleich deren Periodensatz bereitgestellt. Nicht vorhandene Sätze werden als Puffer angelegt, und beim späteren Update geschrieben. Aus der aktuellen Periode wird nun deren Start- und Endezeitpunkt bestimmt. (SELECT CASE periodisierung% END CASE)
Nun wird in einer Schleife für jede Zeitart geprüft, ob die noch zu verarbeitende Dauer > 0, und die Zeitscheibe zu mindestens einem Teil in der aktuellen Periode liegt. Ist das der Fall wird die Dauer des Anteils in der aktuellen Zeitscheibe bestimmt und mit dem Faktor der Zeitart multipliziert. Die so berechnete tatsächliche Dauer in der Periode wird zu der entsprechenden Zeitart in der Statistikdatei addiert. Die restliche Dauer der Zeitscheibe wird um diesen Betrag vermindert. Restwerte, die kleiner als 0,01 sind, werden auf 0 gesetzt. Um auch die durchschnittlichen Dauern der Rückmeldungen berechnen zu können wird der Anteil der in die Periode addierten Zeitscheibe an der gesamten Zeitscheibe bestimmt, und zu der Anzahl der Rückmeldungen addiert. (FOR I% = ag% TO tubr% NEXT I%)
Bevor der Statistiksatz geschrieben werden kann, erhöht das Programm die Anzahl der Rückmeldungen um 1.
Solange noch eine Zeitscheibe nicht vollständig aufgeteilt ist, wird die aktuelle Periode um 1 erhöht, und zum Lesen des Statistiksatzes gesprungen. Dort beginnt das ganze Summierungsspiel von neuem. (IF fertig% = NO% THEN END IF)
Nach der Summierung der Perioden werden die Start- und Endeperioden durch 100 geteilt. Damit bleibt nur noch das Jahr stehen. Außerdem wird die aktuelle Periode neu gesetzt, und die Dauern der Zeitscheiben wiederhergestellt. Nun wird nochmal zurückgesprungen, um die Jahreswerte in die Datei zu summieren. Das geht natürlich ebenfalls so lange, bis alle Zeitscheiben voll verarbeitet sind.
Am Ende der Verdichtungslaufs wird der Rückmeldesatz als verdichtet gekennzeichnet, und in die Datei zurückgeschrieben. Der nächste Satz muss nun direkt gelesen werden.