allegro-C V28.6

 

acon

 

 

allegro Konsolprogramm

 

Vordergründig kann das Programm acon.exe (UNIX: acon) drei  ältere Programme  ersetzen:

 

SRCH.EXE         Volltextsuche in einer Datenbank oder Grunddatei und/oder Export in bel. Format

UPDATE.EXE       Einmischen von Daten in eine Datenbank

avanti-cl.exe  bzw. unter UNIX  avanti-cl : Programm zum Ausführen von Job-Dateien

 

Es handelt sich bei acon, genau gesagt, um eine Weiterentwicklung und Ersatz von avanti-cl, dem Backend-Programm des avanti-Servers, also des Programms avanti.exe bzw. avanti. Die beiden Programme SRCH und UPDATE sind viel älter, sie gehören noch zum DOS-System und sind 16bit-Programme. acon arbeitet genauso mit avanti zusammen wie vorher avanti-cl, aber als Ersatz für SRCH und UPDATE wird der Server avanti nicht gebraucht, nur acon.

 

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 dass jemand eine Taste drücken oder sonstwie eingreifen muss. 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 UPDATE gebraucht hat. Diese alten Programme nehmen ebenfalls Aufträge entgegen und führen sie aus, aber auf andere Art: man übergibt ihnen beim Aufruf eine Anzahl von Optionen, aus denen sie dann entnehmen, was zu tun ist. Die folgenden zwei Beispiele zeigen, wie die DOS-Programme SRCH und UPDATE durch acon ersetzt werden können. Diese Beispiele sind nun aber nur Spezialfälle einer viel mächtigeren Methodik, mit der das Programm acon Manipulationen aller erdenklichen Art mit den Mitteln der FLEX-Sprache durchführen kann.

 

 

Ein Aufruf von  acon  hat immer diese Form:

 

acon <jobdatei  [Optionen]

 

Ab V30 kann man auch schreiben  acon -j jobdatei

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

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  abschließen.)

 

 

Beispiel 1:

Konventioneller DOS-Aufruf:

srch -f4 -ka -dxyz.alg -emarcxml/xyz.xml -v0 -s#90

 

womit gesagt ist: Programm SRCH, nimm die Datei xyz.alg, suche darin alle Sätze, die das Feld #90 enthalten. exportiere diese Sätze dann mit den Parametern marcxml.apr in die Datei xyz.xml.  (Mit -f6 statt -f4 würde man einen Direktexport ohne Suche verlangen und kann dann auf die Option -s verzichten.)

Genau dasselbe kann nun  acon  ausführen, wozu man eine Jobdatei namens  srch.job  heranzieht.

Der Aufruf lautet dann so:

 

acon -jsrch -ka -dxyz.alg -emarcxml/xyz.xml -s#90 -bc:\allegro\demo2\cat

 

Mit der Option -d können Grunddateien (.ALG), Externdateien (.ADT) und sogar Datenbankdateien (.ALD) angegeben werden, das Programm erkennt deren Struktur selbst.
Auch Namensmuster sind möglich: mit
-dkatalog\cat*.ald  würde man alle Datenbankdateien auf katalog verarbeiten.

Achtung: Wenn Option -b nicht angeben ist, dann wird die DemoBank genommen, denn irgendeine muss geöffnet werden, damit acon arbeiten kann. (Die damit angegebene Datenbank wird bei Bedarf in den Exportparametern zum "Nachladen" benutzt.)

Nebenbei ergibt sich bei Umstellung auf  acon  der Vorteil, dass solche Jobs nur mehr weniger als ein Drittel der Zeit brauchen.

 

 

Beispiel 2:

Konventioneller DOS-Aufruf:

update -fm41 -ka -uxyz.alg -dc:\allegro\demo2 -bcat -n7

 

was so zu lesen ist: Programm UPDATE.EXE, nimm die Datei xyz.alg und speichere die Sätze in die Datenbank cat, die auf c:\allegro\demo2 liegt. 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 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 Systemhandbuchs.

Genau dasselbe kann nun  acon  ausführen, wozu man eine Jobdatei namens  update.job  heranzieht.

Der Aufruf lautet dann, leicht verändert, so:

 

acon -j update.job -fm41 -ka -uxyz.alg -bc:\allegro\demo2\cat -n7

 

(Achtung: -b statt -d . Sonst klappt es nicht. Dies war bei UPDATE.EXE eine Inkonsequenz.)

 

 

Optionen beim Aufruf von acon

Das Programm acon selber wertet nur fünf Optionen aus. Und zwar sind dies (analog zu den DOS-Programmen)

 

-k       Konfiguration (z.B. -kn ), wobei als Default  -ka  angenommen wird

-b       Datenbank-Name (z.B.  -bcat )

-d       Datenbank-Pfad (z.B.  -dc:\allegro\demo2 )

-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 neue Sondervariable cl, die den kompletten Aufruf enthält, d.h. im Beispiel 2 hätte man mit  var cl  die Zeichenfolge

acon -fm41 -ka -uxyz.alg -dc:\allegro\demo2 -bcat -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 der geeigneten Option -b gestartet werden. Sonst jedoch funktioniert die Datenbankanwahl ebenfalls, d.h. man kann alternativ eine solche Zeile im Job verwenden.

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, 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, muss der User dazu ebenfalls die Rechte haben.

 


2010-10-21 / 2022-11-29