allegro-C

acon

allegro Konsolprogramm

acon ist 
1.  ein Kommandozeilenprogramm (Konsolprogramm) für das Arbeiten mit allegro-Datenbanken
2.  ein unentbehrlicher Bestandteil jeder Web-Schnittstelle, z.B. `a35`: es führt alle Aufträge aus. 

acon hat keine Benutzeroberfläche - das ist typisch für ein Konsolprogramm: es stellt keine Fragen und präsentiert keine Menüs oder dergleichen. So ein Programm nimmt Aufträge entgegen, führt sie vollautomatisch aus und beendet seine Arbeit, ohne daß jemand eine Taste drücken oder sonstwie eingreifen muß. Die Aufträge heißen in diesem Fall Jobs und sind zu schreiben in der avanti-Variante der `FLEX-Sprache`. In dieser Skriptsprache sind seit V28.5 auch die Voraussetzungen gegeben, alle Funktionen zu realisieren, für die man bisher die Programme SRCH und UPD  (früher UPDATE) gebraucht hat. Es gibt diese Programme aber immer noch. 

Hinweis: Es gibt eine `Kurzeinführung für acon und FLEX` in englischer Sprache. 

Ein Aufruf von  acon  sieht so aus: 

acon -jjobdateiname [Optionen] 

Zuerst als Beispiel 0 der minimale Job: das "Hallo Welt"-Progrämmchen. 
Dazu macht man sich auf c:\allegro eine Jobdatei namens  welt.job  und schreibt hinein 
write "Hallo Welt" 
Dann gibt man (im DOS-Fenster) diesen Befehl 
   acon <welt.job    oder    acon -jwelt
Der Dateityp .job wird empfohlen, ist aber nicht zwingend, es geht auch ganz ohne. 
Kenner erkennen: das Programm liest seinen Auftrag aus der Standard-Eingabe. (Daher kann man es theoretisch auch ohne Job aufrufen, den Job dann manuell Zeile für Zeile eintippen und mit  Strg+D Enter (UNIX) bzw. mit Strg+Z Enter (Windows) abschließen. Die Optionen sind weiter unten beschrieben. 

Beispiel 1: Administration
Ab V34 gibt es einen Job namens  al.job, mit dem man viele administrative und andere Aufgaben an einer Datenbank erledigen kann. Z.B. auch das Erstellen eines Skripts (batch bzw.shell) für die Index-Erneuerung. 
Sehr wichtig: Dieser Job läuft auch unter UNIX/Linux, wo es kein a99 gibt! 
Aufruf, z.B. für die DemoBank: 
Windows: acon -jal -ddemo2 -bcat -ka   Linux: ./acon -jal -ddemo2 -bcat -ka
Die Option -d für den absoluten oder relativen Pfad des Datenordners ggfls. ändern. 

Beispiel 2: Update (Daten aus einer Datei einspeisen)
Für diese spezielle und sehr komplexe Aufgabe wird  update.job  mitgeliefert. So geht man damit um: 

Konventioneller DOS-Aufruf (wie für das frühere 16bit-Programm upd.exe): 
   upd -uxyz.alg -bcat -dc:\allegro\demo2 -ka -fm41 -n7 
Dies wird umgesetzt in folgenden acon-Aufruf, den man auch direkt so geben kann: 
   acon -jupdate -uxyz.alg -bcat -dc:\allegro\demo2 -ka -fm41 -n7 

Das ist so zu lesen: "Hallo Programm  acon.exe, führe den Job update.job aus; dieser soll die Datei xyz.alg nehmen und die Sätze daraus in die Datenbank cat speichern, die auf c:\allegro\demo2 liegt und auf dem Schema  a.cfg  beruht. Mittels Primärschlüssel soll dabei zunächst geprüft werden, ob ein Satz bereits in der Datenbank vorhanden ist. Solche vorhandenen Sätze sollen (das besagt die Option -fm41) durch die neueren überschrieben werden, wobei diejenigen Felder der alten Sätze erhalten bleiben sollen, die im neuen Satz nicht vorkommen; ganz neue Sätze (d.h. Primärschlüssel kommt noch nicht vor) sollen als neue Sätze in die Datei 7 gespeichert werden (also cat_7.ald)." 
Mehr zur Bedeutung der Optionen findet man im `Kap. 12` des Handbuchs. 

Achtung:  
Möglich ist / statt \ und man kann -b und -d auch separat angeben. Gleichwertig sind also z.B. 
-dc:\allegro\demo2\cat  und  -bc:\allegro\demo2\cat  und  -dc:\allegro/demo2 -bcat

Der update.job produziert nebenbei eine Protokolldatei namens  upro, in der am Ende ausführlich nachzulesen ist, was sich abgespielt hat. 

Kenner finden im  update.job  viele Hinweise auf besondere Möglichkeiten gegenüber dem alten DOS-Programm upd.exe. Insbes. kann es auch `Externformat-Dateien` (Typ .adt) verarbeiten. 
Ambitionierte Systemverwalter können das Skript  update.job  für eigene Zwecke abwandeln, um diffizile Prozeduren der Datenmanipulation zu programmieren. Dies ist wohl der größte Vorteil der neuen Arbeitsweise im Vergleich zum alten Programm  upd.exe, welches komplett in C geschrieben war und deshalb allenfalls einem C-Programmierer Änderungen ermöglicht hätte. 

Optionen beim Aufruf von acon
Zuerst: Die Reihenfolge der Optionen ist völlig beliebig. 
Das Programm acon selber wertet nur vier Optionen aus! Und zwar sind dies (analog zu den DOS-Programmen) 

-k	Konfiguration (z.B. -kn ), wobei als Default  -ka  angenommen wird 
-d	Datenbank-Pfad (z.B.  -bc:\allegro\demo2   (relativer Pfad geht auch) 
-b	Datenbank-Name (z.B.  -bcat ) 
-L	Pfad und Name der LOG-Datei (selten); Default cat.log, wenn cat der DbName ist 
-P	Programmverzeichnis (wo Parameter, uif, cfg ... zu suchen sind) 

Alle anderen Optionen müssen in dem Job, d.h. mit FLEX-Befehlen, ausge- und verwertet werden. In den Beispielen srch.job und update.job kann man sehen, wie das gemacht wird. Dazu braucht man die FLEX-Sondervariable cl (command line), die den kompletten Aufruf enthält, d.h. im Beispiel 2 hätte man mit  var cl  die Zeichenfolge 
acon -fm41 -ka -uxyz.alg -bc:\allegro\demo2\cat -n7
und mit  

var cl 
var (b" -u" f" " e" ")

holt man sich den Inhalt der Option -u heraus, wobei sogar hinter dem -u noch ein Spatium stehen darf. 

Besonderheiten
avanti-Jobs haben typischerweise als letzte Zeile die sog. `Datenbankanwahl`: 
@ DB=avdemo ID=admin/MASTER
Damit sucht avanti in der Datei  avanti.con  (auch  .conf  ist noch möglich) nach einer Eintragung [avdemo], um dort den Namen und Speicherort der Datenbank zu finden, sowie die Kennung admin auszuwerten, um ihre Berechtigungsstufe festzustellen. Eine solche Zeile brauchen acon-Jobs nicht, wenn sie mit den geeigneten Optionen -b, -d und -k gestartet werden. Die Datenbankanwahl ghet aber ebenfalls, d.h. man kann alternativ eine solche Zeile an den Job anhängen. 
Eine mit & beginnende Zeile am Anfang der Jobdatei braucht acon gleichfalls nicht. Darin kann ein Verzeichnis angegeben werden, auf dem Parameter-, CFG- oder uif-Dateien zu suchen sind. Wenn man acon nicht auf dem Programmverzeichnis startet, ist das jedoch evtl. wichtig. 
Gebraucht wird nur noch die (aktualisierte) uifsger, nicht mehr zusätzlich uif0ger. 

Ort für die Installation
Windows: Ab V28.6 kann man auf der Windows-Plattform die avanti-Programme, statt wie bisher auf \programme\avanti\bin nunmehr auf dem regulären Programmverzeichnis (c:\allegro im Normalfall) ablegen und starten. 
Ein paralleles Verzeichnis ..\etc , vorher nötig für  avanti.conf, entfällt. 
Der Einfachheit halber sind  avanti.exe  und  acon.exe  ab V28.6 gleich mit im Gesamtpaket und liegen nach dem Installieren auf dem ProgDir. 

UNIX/Linux: Die vier noch nötigen Dateien kann man legen, wohin man will, aber alle zusammen auf dasselbe Verzeichnis: 
avanti       Der Server, der über TCP/IP die Jobs annimmt und Ergebnisse liefert 
acon         Das Konsolprogramm; führt auch die Jobs für den Server aus 
avanti.con   Datei mit den Angaben zu den eigenen Datenbanken (früher: avanti.conf) 
uifsger      Meldungstexte 

Empfehlung: Das Verzeichnis einem User schenken, der ansonsten keine Rechte hat außer Zugriffsrechten auf die Datenbanken. Den Server dann unter dem Namen dieses Users starten mit dem Befehl   ./avanti & . Wenn bei irgendwelchen Jobs Dateien auf anderen Verzeichnissen zu lesen und/oder schreiben sind, muß der User dazu ebenfalls die Rechte haben. 

?Kap. 12=h ac12 
?FLEX-Sprache=h flex 
?Datenbankanwahl=h xavanti 
?ältere Programme=h ac0-4 
?srch.job=h srch.job 
?update.job=h update.job 
?Externformat-Dateien=h ac0-0#390 
?a35=~start http://www.allegro-c.de/doku/a35 
?Kurzeinführung für acon und FLEX=~start http://www.allegro-c.de/doku/aconflex.htm