4.5 Dateistruktur
|
acipssys.dll
|
dynamic link library, die die Funktionalität des Interpretersystems bereitstellt.
|
Dateien in \v5\sys\source\svc
|
ACIpssys.mak
|
Makefile zum IS (definiert auch die neuen Header).
|
|
ACIps.cpp/hpp
|
Kern des IS mit der Klassendefinition von ACIpsInstance.
|
|
ACIpsBuf.cpp/hpp
|
Klassenimplementierung der IS Buffer.
|
|
ACIpsDat.cpp/hpp
|
Klassenimplementierung der IS Datenschnittstelle.
|
|
ACIpsScr.cpp/hpp
|
Klassen für Interpretation und Ausführung der Steuerdateien.
|
|
ACIpsErr.cpp/hpp
|
Klassen für die Fehlerbehandlung.
|
Dateien in \v5\appl\include
|
ipsdttyp.hpp
|
Defines der TypeIDs, der von ACIpsData abgeleiteten Klassen
|
Was muss noch getan werden:
-
Erstellung einer Schablone zur Erzeugung einer externen DLL, siehe Aufbau testips.cpp.
-
System unter OS/2 übersetzen und zum Laufen bringen
-
Buffermethoden für frei definierte Buffer (nicht wie Datenbankdatei)
-
Interpretieren eines Steuerdateitextes, der nicht aus einer Datei stammt.
-
Dokumentieren der Klassen des IS und der Funktionalität, die in den Steuerdateien zur Verfügung steht.
Was man beachten sollte, damit man nicht unnötig nach Fehlern sucht:
-
Wird das IS verlassen, so sind bei einem erneuten Aufruf alle Inhalte der IS-Variablen verloren
-
Für mehrmaligen Aufruf des IS (z.B. zu einer Buchung mehrere Teilbuchungen) müssen die Werte in den IF-Feldern gehalten werden (z.B. Klasse:IPSdtmwi).
-
Im IS ist kein Zugriff auf die IF-Felder möglich. Zur Zeit wird das so gehandhabt, dass dafür eine Aktion erstellt werden muss, die die IF-Felder als IS-Variable zurückgibt. Zu einem späteren Zeitpunkt soll auch ein Zugriff auf IF-Felder direkt aus dem IS möglich sein.
-
Problem: Ein im Programm vorinitialisierter Buffer soll in einer Aktion verändert, und danach ausgegeben werden. Danach soll dieser Buffer noch einmal und zwar mit seinen ursprünglichen Werten an eine Aktion übergeben werden. Mit einem erneuten Aufruf des Befehls „BufUseAssocBuffer(...)“ wird eine neue Kopie aus dem Anwendungsprogramm erstellt.
-
Dies ist nötig, wenn z.B. eine effektive Bewegung in mehrere Lagerplatzbewegungen aufgeteilt werden soll. Dies ergibt dann mehrere Lagerplatzbewegungen mit unterschiedlichen Mengen und Lagerplätzen.