# Programmdatei

Die Modellprogrammierung zur Simulation mit SIMFLEX/3D erfolgt in der Programmiersprache C++. Auf die aufwendige Konvertierung aus einer anderen Sprache kann dadurch verzichtet werden. Hohe Integrationsmöglichkeit und Kompatibilität zur ebenfalls in C++ programmierten Simulationssoftware ist gewährleistet. Des weiteren handelt es sich bei C++ um eine der inzwischen weitverbreitetsten Programmiersprachen, wodurch für viele das mühsame Erlernen einer neuen Syntax entfällt.

// Layout einer Programmdatei // Modellname: Beispiel; Name; Datum #include <stdio.h> #include "ffsprg.h" // enthaelt die Funktionen der // C++-Schnittstelle /* Einbinden weiterer Bibliotheksdateien */ /* Eigene Vereinbarungen von Klassen, Funktionen, etc. */ void init_prog () { // Diese Funktion wird automatisch nach /* Eigene Initialisierungen */ // der Modellinitialisierung gestartet } void prog_100 () { //BausteinProgramm mit Programmnummer 100 /* Eigene Programmierung */ } /* Weitere BausteinProgramme */ void exit_prog () { // Diese Funktion wird automatisch beim /* Eigene Anweisungen*/ // Simulatorabbruch gestartet }

Zur Verwendung der speziell für die SIMFLEX/3D-Programmierung bereitgestellten Funktionen der sogenannten AC++-Schnittstelle@, wird die Bibliotheksdatei Affsprg@ in den Programmquelltext eingebunden (#include ²ffsprg.h²). Soll auf weitere Programmiermodule, beispielsweise zur Verwendung von Listen-, Register- und Geschichtsstrukturen, Zufallszahlengeneratoren oder eigene vorformulierte Methoden zurückgegriffen werden, sind die entsprechenden Bibliotheksdateien hierfür ebenfalls in die Programmdatei einzubinden (#include ²bibliotheksname.h²).

Die Funktionen init_prog() und exit_prog() sind optional definiert, das heißt sofern sie vorhanden sind, werden sie automatisch aufgerufen.

Die Funktion init_prog() wird vor Simulationsbeginn - also nach der Modellinitialisierung - gestartet. Hier können zusätzliche Initialisierungen vorgenommen werden, die über die eigentliche Modelllogik hinausgehen und für die Funktionsweise der Modellprogrammierung nützlich oder notwendig sind. Beispiele hierfür sind das Erzeugen von Objekten eigener Klassen, das Einplanen von Ereignissen, das (Vor)Bestellen von Material oder das Öffnen von Dateien für Betriebsdatenerfassung und Protokollausschriebe, etc.

Die Funktion exit_prog() wird nach Beenden der Simulation oder bei Abbruch des Simulators gestartet. Die Destruktoren nicht mehr benötigter Objekte sollten hier aufgerufen werden, um sie aus dem Arbeitsspeicher zu löschen, auch eventuell geöffnete Ausgabedateien sind hier zu schließen.

Die Nummern der Bausteinprogramme (z. B. prog_100()) entsprechen den Programmnummern, die während der Modellerstellung vergeben wurden. Bei Änderungen/Ergänzungen muss zum Abgleich eine Modifikation der Modelllogik mit Hilfe des Modellerstellungs-Tools oder der Modelldatei modellname.tas mittels Editor vorgenommen werden.