Dynactiv 4GL Basic Pre-Compiler
Das Herzstück von Dynactiv ist der plattformunabhängige 4GL Basic Pre-Compiler. Mit ihm wurden nicht nur
alle Dynactiv Anwendungsmodule, sondern auch weite Teile von Dynactiv erstellt. Um den Anwendern
optimale Arbeitsbedingungen zu bieten, entwickelte Dynactiv Anfang der 90er Jahre 4GL Basic. Ziel war es,
eine für Programmierer leicht zu erlernende Sprache zu schaffen. Als Grundsyntax diente dabei Basic, da es
sich um eine in der EDV-Welt weitverbreitete Sprache handelt, die auch fast alle Programmierer kennen.
Außerdem eignet sich Basic hervorragend zur Entwicklung kaufmännischer Anwendungen, da hier keine
gerätespezifischen bzw. betriebsystemnahen Befehle notwendig sind. Damit stand von Beginn an der
entscheidende Vorzug von 4GL Basic fest: unkomplizierte Programmentwicklung ohne spezielle Kenntnisse
des technischen Umfelds, wie z. B. Datenbank, Betriebssystem, GUI (= Grafik User Interface), Netzwerk oder
C/S Kommunikation!
4GL Basic stellt eine portabel kompilierende Sprache dar, d. h. Dynactiv übersetzt alle 4GL Basic Module in
einen Code, der dann von dem - auf der jeweiligen Plattform eingesetzten - Dynactiv Runtimesystem
abgearbeitet wird. Der modularen Aufbau aller Dynactiv Programme erlaubt darüber hinaus, Updates in einem
Softwarepaket sofort und ohne Beeinträchtigung des Users umzusetzen, da eine vollständige Neukompilation
des gesamten Projekts nicht erforderlich ist. Codeänderungen werden automatisch erkannt und nur beim
ersten Aufruf neu kompiliert.
Der nachstehende Code zeigt einen exemplarischen 4GL Basic Quelltext.
'********************************************************************************************
@adr_nummer.onexitnewrec:
&XADRESSE.ADR_NUMMER = holenummer( "Adresse", "", &XADRESSE.ADR_NUMMER)
return
'********************************************************************************************
@steuerber.onexit:
@status.onexit:
if (&XADRESSE.IST_K_LIEF = "J") or (&XADRESSE.IST_K_LIEF = "K") then
if &XADRESSE.STEUERBER = "B" then
erg = messagebox( "Belege mit Lieferanten werden immer 'auf Netto' oder 'ohne Mwst' gerechnet." +
chr$(13) + "Adressenstammblatt wird 'auf Netto' geändert!", 2)
&XADRESSE.STEUERBER = "N"
end if
end if
return
'********************************************************************************************
@xadresse.onnewrecord:
&XADRESSE.GESPERRT = "N"
&XADRESSE.STEUERBER = "N"
&XADRESSE.MAHNART = "J"
&XADRESSE.MAHNGEB = "J"
&XADRESSE.VERZ_ZINS = "J"
&XADRESSE.IST_K_LIEF = "D"
return
'********************************************************************************************
@xadresse.onbeforedelete:
' Kontrollieren ob Finanzbuchhaltung vorhanden ist. Wenn nein können Adressen ohne Kontrolle
' gelöscht werden.
if (&xadresse.fib_kto_nr <> "") then
valid = 1
gefunden = 0
opentable("xfkto")
findfirst("xfkto", "kto_nr", &xadresse.fib_kto_nr)
do while (&xadresse.fib_kto_nr = &xfkto.kto_nr) and (eof("xfkto") = 0)
if (&xfkto.soll <> 0) or (&xfkto.haben <> 0) then
gefunden = 1
end if
skip("xfkto", 1)
loop