[Allegro] Vb.246: V32.4 ist da (jetzt aber wirklich)
Bernhard Eversberg
ev at biblio.tu-bs.de
Fr Jun 1 08:27:37 CEST 2012
Verlautbarung 246 der Entw.Abt. 2012-06-01
-------------------------------
2., ueberarb. u. angereich. Ausg.
V32.4 ist da
============
32bit-Programme. ACHTUNG: zur Zeit noch srch32.exe statt srch.exe
----------------
Die "Quadriga" srch/import/index/qrix besteht inzwischen aus 32bit-
Programmen, die auch unter Windows 7'64 laufen. Nur das Programm
srch.exe wird noch in der 16bit-Variante ausgeliefert, die 32bit-
Variante liegt als srch32.exe im Gesamtpaket. Das geschieht aus
Vorsicht, weil srch ein sehr stark genutztes Programm ist und es
u.U. noch kleinere Ungenauigkeiten gibt, die sich bei komplizierteren
automatisierten Prozessen auswirken koennten. Alle gefundenen Diskre-
panzen wurden beseitigt, aber bitte testen.
Aber ACHTUNG: Wer die 64bit-Variante von Win'7 einsetzt, muss das
alte srch.exe loeschen und das neue srch32.exe in srch.exe umbenennen.
Diese Besonderheit wird wohl mit V32.5 entfallen.
Expertentreff 2012 : Thema OpenSource
-------------------------------------
Mit gewichtigem Schwerpunkt auf der Programmierung und "OpenSource"
im Fokus soll am Do.+Fri, dem 28.+29.6.2012, ein Expertentreff
stattfinden.
Zum Teilnehmen ermuntern wollen wir neben Programmierern und solchen,
die es werden wollen, auch Anwender, die
- einige Erfahrung haben mit allegro,
- erwarten, noch laengere Zeit damit zu arbeiten,
- offene Wuensche/Anforderungen/Ideen mit sich tragen,
- und ueber all das mit gestandenen Entwicklern reden und sich in deren
Gedankenaustausch einklinken wollen.
Denn wem sonst, wenn nicht der Anwenderschaft und deren Klientel,
gilt und galt "am Ende des Tages" und der Jahrzehnte der ganze Aufwand?
Naeheres siehe Mail-Ankuendigung am 4.5.12.
OpenSource : Umstellung auf VisualC++ 10
----------------------------------------
Die bisher genutzte Entwicklungsumgebung Visual C++ 6 datiert von
1998. Es wird nun auf die Version 10 umgestiegen, die 2010 heraus-
kam, und deren "Express Edition" frei erhaeltlich ist. Zwar nur mit
Registrierung, aber kostenlos. Damit ist auch kuenftig unter Windows
ein freies Kompilieren der Programme moeglich, nicht nur unter
Linux und UNIX mit dem C++ der GNU-Initiative.
Erfolgreich kompiliert wurde bereits die gesamte "Quadriga" (s.o.),
um zunaechst die richtigen Einstellungen zu finden. Diese wurden
gefunden, wobei die bisherigen Quellprogramme an keiner Stelle
geaendert werden muessen. Schwieriger wird es vielleicht mit den
Programmen a99/alcarta/a99a, und zwar wegen der graphischen Ober-
flaeche, die (fuer Kenner) auf den Windows Foundation Classes (WFC)
beruht. Diese sind laut Microsoft auch in VC10 enthalten, aber wohl nur
in der kostenpflichtigen "Professional edition". Bis zum Expertentreff
im Juni hoffen wir, in diesem Punkt Klarheit schaffen zu koennen.
Mitgeliefert werden aber im Gesamtpaket noch die Kompilate, die
unter VC 6.0 enstanden sind. Sie tun es unter Win XP, Win 7/32 und /64.
Niemand braucht demnach zur Stunde die neuen Kompilate. Wir sind und
bleiben aber da dran und wollen auch acon und a99 mit VC10 erstellen,
um das Paket dann zu komplettieren. Fuer den Einsatz unter Linux/UNIX
hat dies keine Folgen, aber a99 wird weiterhin exklusiv Windows
bleiben. Diesbezuegliches Nachbohren haette keine Aussicht auf Erfolg.
Weitere Nachrichten aus anderen Ressorts
a99/alcarta : Schriftgroesse in der Anzeige
-------------------------------------------
Die Funktionen Option / Anzeigeschrift +- tun es jetzt. Jedenfalls
ueberall da, wo der Anzeigetext keine eigenen Definitionen der
Schriftgroesse enthaelt (RTF: { \fs.. ... }). Es mag daher sein,
dass die Funktionen bei anderen als den Standarddateien (disphead.rtf
und d-wrtf.apr) nicht wie erwartet arbeiten.
Hinw. zu RTF: Einstellungen mit \fs.., die nicht in {...}
eingeschlossen sind, wirken bis zum naechsten solchen Befehl bzw. bis
zum Ende des Textes, wenn keiner mehr kommt!
a99 UIF-Datei : neue Zeilen
---------------------------
In die fuer a99/alcarta zustaendige UIF-Datei uifeger/uifeeng wurden
neue Zeilen eingebracht: 127-148 (ein paar waren schon da); die Texte
standen bisher direkt im Programm. Es handelt sich um Meldungen, die
eher selten auftreten. ACHTUNG: Eigene (z.B. anderssprachige) UIF-
Dateien muessen um entsprechende Zeilen ergaenzt werden. Es kann auch
sein, dass Anwender eine veraenderte uifeger auf ihr Datenverzeichnis
gelegt haben. Dann muessen darin die Aenderungen nachvollzogen werden.
Es ist jedoch nicht so, dass a99 sonst nicht arbeiten oder gar
abstuerzen koennte, es wuerden "nur" ein paar seltene Meldungen fehlen,
und darin laege natuerlich Irritationspotential.
Export : Kopf- und Fussabschnitte
---------------------------------
Damit gab es gewisse Detailprobleme, die nun verbessert wurden.
Jedoch sind diese Funktionen sehr alt und urspruenglich nur fuer den
KARTENdruck gedacht gewesen, nicht fuer Listen- und Dateiproduktion.
Man sollte sie bei neuen Parametrierungen lieber nicht verwenden,
sondern Kopf- und Fussabschnitte in Exporten, gedacht als Anfang und
Ende ganzer Exportdateien, mit FLEX machen, das ist ja auch viel
weniger kryptisch.
Die Verbesserungen dienen nur dazu, alte Parameter fuer die
Listenproduktion besser funktionieren zu lassen, wenn man sie
innerhalb a99 oder im neuen srch32 fuer Listenexporte einsetzt.
Andererseits kann man mittels der FLEX-Funktion exp -X auch gezielt
einen Abschnitt #-X in den Exportparametern ausfuehren lassen, man
ist also nicht auf die Kopf- und Fussabschnitte angewiesen. Kurz: sie
werden nicht abgeschafft, vom Einsatz wird aber eher abgeraten.
acon: Satzsperren (komplette Beschreibung siehe "set lock" in h xset)
----------------- [Achtung: *Nur acon*, nicht a99!]
Die Befehle get edit first, get edit next, get edit last,
get edit prev taten nicht ganz so, wie sie sollten. Nun sperren sie den
jeweiligen Satz und legen eine Kopie seiner aktuellen Registereintraege
an. Nun kann man sich Zeit lassen ...
Das passiert auch mit f1nd ..., wobei ja ein bestimmter Satz geladen
wird.
Dies wurde eingerichtet, damit man ganz sicher gehen kann, dass
zwischen dem Laden und Speichern kein anderer Prozess denselben Satz
veraendert speichern kann.
Nach jedem dieser Befehle koennen beliebige Aenderungen an dem Satz
folgen, und:
Mit simplem "put" speichert man ihn am Ende; dabei wird mittels der
vorher kopierten Indexeintraege ermittelt, welche Schluessel geaendert
werden muessen in der Indexdatei, und diese Aenderungen werden
ausgefuehrt, der Satz bei der Speicherung wieder freigegeben.
Soll das Speichern jedoch entfallen, muss man nun nicht mehr
ausdruecklich "set unlock" geben, bevor man den naechsten find- oder
get-Befehl absetzt. Frueher blieb der Satz sonst gesperrt, jetzt wird
er automatisch wieder freigegeben. [acon hat keinen Offline-Speicher
wie a99, es ist jeweils nur ein Satz geladen.]
Manchmal will man es etwas anders: (nur in acon)
NEU: set getlock on [gilt bis zum Ende des Jobs]
Setzt *jedesmal* Satzsperre, wenn ein Satz geladen wird. Dann ist
die Angabe edit in den get-Befehlen unnoetig. Und
set getlog off
schaltet die Setzung wieder ab.
NORMALERWEISE aber braucht man sich gar nicht mehr um's Sperren zu
bekuemmern! Man nimmt einen Satz her, aendert was, speichert ihn mit
"put", und weiter zum naechsten! Was passieren kann, ist nur, aber
ganz sicher hoechst selten, dass waehrend des Aenderns jemand anders
denselben Satz geaendert und gespeichert hat. Dies jedoch erkennt
acon dann am geaenderten Zeitstempel. Direkt an das "put" braucht
man nur eine Zeile "if no ..." einzufuegen, um die Problemsituation
zu erkennen und darauf zu reagieren.
Das bisherige "set lock" und "get edit" kann man sich also auch
sparen, es funktioniert aber weiterhin, d.h. Aenderungen an "alten"
Jobs sind nicht noetig.
Alles Wichtige in Kurzuebersicht:
---------------------------------
Ziel war, auszukommen mit einem Minimum an Betulichkeiten und zu
wissenden Besonderheiten, ohne die Funktionsfaehigkeit vorhandener
Jobs zu beeintraechtigen.
get edit first/next und f1nd #...
bewirken nun, dass der fragliche Satz zuerst gesperrt und dann geladen
wird.
Anschliessend macht man sich, ohne weiteres und ohne Zeitdruck, daran
zu schaffen. Dann, nach Verrichten alles am Satz zu Verrichtenden:
entweder: mit "put" speichern und dies mit "if no ... " checken
oder: ohne weiteres zum naechsten Satz uebergehen - die Freigabe des
vorher geladenen erfolgt selbsttaetig.
NEU: Mit set getlock on/off kann man ein-/ausschalten, dass bei jedem
Laden eines Satzes dieser vor dem Laden gesperrt wird, d.h. statt
get edit ...
sagt man schlicht get ..., mit gleicher Wirkung.
NEU: Bei ganz normalem find ... und get first/next kann man dennoch
auf das bisher noetige set lock verzichten. Beim "put" erfolgt Check
des Zeitstempels und Verweigern der Speicherung bei Ungleichheit,
was mit "if no ..." checkbar ist.
NEU: if Lock #nummer
wobei die Nummer fehlen darf und dann der iV entnommen wird
NEU: set lock #nummer
set unlock #nummer
wobei die Nummer fehlen darf und dann der iV entnommen wird
NEU: var sL
letzter Lock-Status. Am besten auwerten, wenn if no gilt
(Auch nach get edit ..., if Lock und set lock)
if "0" ... korrekt
if "-" ... irgendein Fehler
Die Werte sind insgesamt folgende:
0 = OK, Sperren hat geklappt bzw. Satz ist gesperrt (if Lock)
-1 = lock geht nicht (TBL gesperrt)
-2 = .TBL-Eintrag falsch (dann .tbl erneuern)
-3 = .ALD-Datei oeffnet nicht
-4 = Falsches Byte am Satzbeginn (Datei- oder .tbl-Fehler)
-6 = Keine Schreibberechtigung
-8 = Satznummer <0 oder zu gross
1 = Satz ist nicht gesperrt (nach if Lock)
8 = Satz ist gesperrt (nach if Lock)
9 = Satz ist geloescht (Sperren geht dann nicht)
update.job angepasst [s. Vb.245]
---------------------
Wegen der Aenderungen beim Locking mussten ein paar Punkte im
update.job aktualisiert werden. Das ist geschehen. Das Pruefen
auf Gesperrtheit entfiel, statt "find" steht nun "f1nd".
Ein wenig gefeilt wurde auch noch an den Meldungen, die auf
der Konsole bzw. in der Protokolldatei "upro" erscheinen.
Die Anwendung dieses wichtigen Jobs (er ersetzt das alte update.exe)
wurde in der Vb.245 dargestellt, daran hat sich nichts geaendert.
Saetze sperren, ohne sie zu laden (a99 und acon)
---------------------------------
Neue Zusatzfunktion: Hinter die Befehle set lock und set unlock
kann man noch #Num setzen, mit einer internen Satznummer Num .
z.B. set lock #1 sperrt Satz 1, bzw. set unlock #1 fuer Freigabe
Fehlt Num, wird der iV-Inhalt genommen, d.h man kann z.B. schreiben,
wenn in $nummer die Satznummer steht:
var $nummer\set lock #
Ist jedoch der Satz bei set lock bereits gesperrt, dauert es eine
Weile, aber es passiert nichts, er bleibt gesperrt.
Satzsperre pruefen, ohne den Satz zu laden (a99 und acon)
------------------------------------------
Auch das geht, und zwar analog (was sich nicht von selbst versteht!):
if Lock #Num ...
und wenn Num fehlt, dann iV-Inhalt. (Auch das versteht sich nicht
von selbst.)
Auch if not Lock ... klappt.
acon : Qrix und Reg. 11
-----------------------
Die Einschraenkung wurde abgeschafft, dass acon bei access<3 nicht
mit Qrix auf Reg. 11 zugreifen konnte. Es ist ja extrem unwahrschein-
lich, dass etwa ein Saboteur sich ausreichend kundig macht UND Zugang
zu der Moeglichkeit gewinnt, einen Job mit solcherlei Befehl auszu-
fuehren. Dies waere zwar wegen Datenschutz potentiell kritisch, aber
Datenschaeden koennten so nicht entstehen. [Es ist nicht moeglich,
einen Job als Teil eines HTTP-Aufrufs an die Datenbank zu senden,
d.h. es koennen nur Jobs gestartet werden, die auf dem Server liegen.
Der administrative Zugang zu diesem muss aber eh und je abgesichert
werden gegen Hacker. Das sog. "code injection" (Job-Code von aussen
einschleusen) ist seit langem unterbunden.]
Sondervariablen A und b
-----------------------
Mit den var- und write-Befehlen sind ja so manche internen Setzungen
zugaenglich. Bisher nur unter a99 konnte man sich per var A die
Berechtigung geben lassen und mit var b die Werte k und t der CFG
(Ergebnis: 2,4 bei $A.CFG). Nun sind diese Werte endlich auch
unter acon zugaenglich.
Ferner gehen schon seit einer Weile auch die j-Variablen.
Siehe Doku: h xcstring
ORDER
-----
Die ORDER-FLEXe o-kont.flx und o-kontue.flx wurden verbessert.
Noetig war das fuer den sog. "Jahresuebergang", der beim Eintritt
in ein neues Haushaltsjahr anfaellt - falls man mit Kontingenten
arbeitet, die sich auf Haushaltsjahre beziehen. Wie dann vorzugehen
ist, beschreibt ein neuer Text: h o-jue
Des weiteren verbessert wurden o-bdruck.flx (Bestelldruck) und
die zugehoerigen Parameter p-orda.apr. Der FLEX fragt nun auch, ob
man Einzelbestellungen moechte (d.h. ein Blatt je Titel, komplett mit
Lieferantendaten und allem) oder alle zu einem Lieferanten gehoerigen
Bestellungen zusammengefasst in einer numerierten Liste.
GND-Umwandlung
--------------
Neu im Gesamtpaket:
gnd.aim + i-gnd.apr zur Umwandlung von GND-Daten in $A.CFG.
GND-MARC21-Normdaten kann man hiermit umwandeln in die hergebrachte
Normdatenstruktur des A-Formats, also Saetze mit den Feldern
#2n, #3n, #4n, #6n etc.
Sagen wir, g:\daten\gnddat.mrc sei die MARC21-Datei, die
ausschliesslich solche Saetze enthaelt. Dann koennte ein Startbefehl,
auf c:\allegro gegeben, so lauten, um eine Ausgabedatei norm.alg
zu erzeugen:
import -dg:\daten\gnddat.mrc -ignd -ei-gnd/norm.alg
ACHTUNG: In i-gnd.apr steht, markiert mit "ACHTUNG", eine
eingerueckte Zeile
#99. Diese Zeile aktivieren nur zur Kontrolle waehrend Test
Aktiviert man diese, so erhaelt man automatisch Felder #99X mit den
Inhalten der nicht umgewandelten MARC21-Daten, beginnend mit #990:
Struktur: #99X(tag)MARC-Feldinhalt ohne Indik,
z.B. #992(005) 0330120102.0
Zur Kontrolle der Umwandlung kann das ganz nuetzlich sein.
Gesperrte Saetze (.ALD)
-----------------------
Dieser letzte Punkt im Menue "Extras" von a99 findet alle gesperrten
Saetze der Datenbank. Zu empfehlen ist, zuerst die Ergebnismenge der
"Vorher angezeigten Daten" leerzumachen, denn dort werden die
gesperrten Saetze dann angesammelt.
Verbessert wurde, dass diese spezielle Erg.Menge dann auch sofort
angezeigt wird bzw. die Meldung "No records locked" kommt, wenn es
keine gesperrten Saetze gibt.
JanaS: Startverbesserung
------------------------
Unter Win'7/64 kam es zum Versagen (a99 blieb haengen), wenn JanaS
aufgerufen wurde. Behoben.
FLEX set c in a99
-----------------
Kleine Korrektur: Default ist set c1, nicht set c0. Als normal
betrachtet wird also, dass Eingabedaten in ANSI codiert sind, nicht im
DOS-ASCII. Die Doku (xset.rtf) sagte bisher das Gegenteil, nur fuer
acon stand's richtig drin (da ist es ebenfalls 1).
Mehr Informationen über die Mailingliste Allegro