Verlautbarung 154 der Entw.Abt.                          2002-04-25 
------------------------------- 

Version 22.0                              Bereitstellung: 10.5.2002 
------------                              ------------------------- 
NewDesign 
--------- 
a99 ist in zwei neuen Varianten zu haben: Neben das alte Design (das 
weiter im Gesamtpaket ist und a99.exe heißt!) treten zwei Neulinge: 
a99a : Minimalistendesign ohne Buttons              ftp:  a99a.lzh 
a99b : ND mit Buttons, aber anders angeordnet.            a99b.lzh 
Die graphischen Buttons wurden ferner einem Redesign unterzogen. 
(Das trifft auch auf alcarta zu, das ansonsten nicht veraendert wird.) 
Statt langer Beschreibung schaue man sich lieber die Abbildungen an: 
   `http://www.biblio.tu-bs.de/allegro/a99nd.htm` 

Jedoch hat V22.0 noch eine Menge mehr zu bieten, wovon sich die 
Experten am 23./24.4. schon ueberzeugen konnten: 

Neue On-Flexe 
------------- 
onf2.flx   onf4.flx   onf11.flx 
onf3.flx   onf8.flx   onf12.flx 
   werden ausgelöst, wenn F2,F3,F4,F8,F11,F12 gedrückt werden 
   Bisher haben diese Tasten keine Funktion. Jetzt kann man also beliebige Aktionen damit verbinden. 
   Defaults: 
   Für	F2  : Flip-Auslösung per Taste (Cursor vorher auf Flip setzen) 
  	F8  : Hintergr.Speicher in die Anzeige kopieren (x dis res) 
      	F11 : Anzeige breit<->schmal schalten  (x set d) 
     	F12 : Hilfetext he_sp in die Anzeige holen (Tastenfunktionen) 
onprint.flx 
   wenn der Printer-Button gedrÜckt wird. Default: Es wird die ViewListe print.vw gezeigt. 

Achtung: diese zwei müssen angepaßt werden: (verlagern auf DbDir) 
oninput.flx 
   wird gestartet, wenn der Button [Neusatz] oder F9 gedrückt wird. 
   Dann haben  onnew.flx  und  oncopy.flx  keine Funktion!  (Beschriftung: uife Nr. 477) 
onforms.flx 
   wenn der Button [Formular] gedrückt wird    (Beschriftung: uife Nr. 489) 

Diese drei Buttons können damit beliebig umfunktioniert werden! 
Es werden Grundversionen der ersten zwei FLEXe mitgeliefert. 
Tip: Diese drei FLEXe auf das Datenverzeichnis legen und für die eigenen Zwecke anpassen. 
In onforms.flx kann man, je nach Satztyp, unterschiedliche Formulare erscheinen lassen! 
Entfernt man die drei FLEXe, hat man die alten Funktionen. 
Es wurden spezielle ViewListen erstellt: print.vw und input.vw, die von onprint.flx bzw. oninput.flx angezeigt werden! 

Druckseiten-Einrichtung 
----------------------- 
Im Menü "Datei" gibt es unter "Anzeige ausdrucken" jetzt auch den Punkt "Seite einrichten". 
Es kommt dann ein Dialog, in dem man die Ränder in Millimetern vorgeben kann. 
Dieser kann auch durch FLEX-Befehl  set P  hervorgerufen werden. Die Eingaben bleiben über die Sitzung hinaus gültig (INI-Befehl PageSize). 

Direkte FLEX-Ausführung 
----------------------- 
Die Standardversion der Datei  onerror.flx  wurde erweitert. 
Sie wird ausgeführt, wenn im Schreibfeld keine sinnvolle Eingabe erfolgt ist. Es wird dann die Eingabe genommen, "x " davorgesetzt und als FLEX ausgeführt. Damit kann man sich das Eingeben von "x " sparen, wenn man häufig im Schreibfeld FLEXe von Hand eintippt. 

Neue Funktionstaste in A99 und ALCARTA 
-------------------------------------- 
F6   Index öffnen und schließen (wie PRESTO) 

Index-Fenster : Neuer Button 
---------------------------- 
Direkt unter den Ziffernbuttons sitzt jetzt [Erg.]. Damit wird die Ergebnismenge der aktuellen Zeile zur Liste der Ergebnismengen hinzugefügt, auch wenn es nur ein Satz ist, jedoch nicht angezeigt. Mit [Enter] passiert dasselbe wie bisher, aber das Problem damit ist, daß nur die letzte Ergebnismenge vor dem Schließen des Fensters auch erhalten bleibt. 

Taste [Entf] kann jetzt zum Entfernen von Registerzeilen benutzt werden, wie bei PRESTO. Voraussetzung: access>4.  Taste [Einfg] zum Einfügen neuer Zeilen wurde jedoch nicht implementiert. 
Farben: Die Farbe lila wurde abgeschafft (kam vorher, während FLEX lief). 
Es gibt nur noch gelb, und zwar für den Fall, daß mit Enter keine Satzanzeige bzw. Erg.Menge kommt (wenn Cursor im Eingabefeld oder im Formular bzw. wenn FLEX läuft). Die Funktion [List] geht dann generell nicht - das Anzeigefeld soll in solchen Fällen nicht unabsichtlich überlagert werden. 

Neue FLEX-Befehle 
----------------- 
show print 
   aktueller Satz in Druckform (wie auf Menue "Ansicht") 
show Print 
   aktuelle Erg.menge in Druckform (wie Menue "Ansicht") 

display reserve    kurz:  dis r 
   Inhalt des Hintergrundspeichers im Anzeigefeld ausgeben  (anders als sho res !) 
display list       kurz:  dis l 
   Ergebnismengen-Kurzliste im Anzeigefeld ausgeben (wie sho List ) 
display ergeb oder 
display sets       kurz:  dis e   oder  dis s 
   Liste der Ergebnismengen (die man sonst mit Alt+e sieht) im Anzeigefeld auswerfen 

set wm / wn 
   Setzt das Fenster auf Maximal- bzw. Normalgröße 

var ci   i=1...499 
   ergibt die Zeichenkette i der UIF-Datei 
   Damit kann man sich die freien Nummern der UIF-Datei als zusätzliche Variablen anlegen. Die Nummern 
   70-89 werden auch in Zukunft für derartige Anwendungen freigehalten. 
   Eine BELEGUNG der UIF-Zeilen vom FLEX aus ist nicht möglich. 

var zc   
   Die Anzeigezeile, in der sich die Schreibmarke befindet, wird in die iV kopiert. Angewendet wird dies 
   in onf2.flx (siehe Kommentare dort), um Flips per Taste F2 auszulösen. 
   Zusätzlich automatisch: 
   in #uzC steht dieselbe Zeile, aber mit __ (2x Unterstrich) 
           an der Stelle, wo die Schreibmarke sich befindet. 
   in #uzD steht der Fliptext, falls sich die Schreibmarke in einem 
           solchen befindet. Sonst leer. 
   in #uzF steht die zugehörige #uZ-Befehlstext, und zwar incl. #uZi, 
           also z.B.  #uzF#uZ3X flexbefehl  (Sonst leer) 

var Q  : Wenn man im FLEX wissen will, wo sich der Focus gerade befindet. 
         Es kommt eine der folgenden Ziffern heraus: 
   1 : Auswahlliste 
   2 : Schreibfeld 
   3 : Befehlszeile 
   4 : Anzeigefeld 

activate Ziffer   :  Focus setzen  (Ziffern wie oben) 

dos befehl

Dos befehl

   wie cAll/Call, aber es wird  %%COMSPEC%% /c  vorgesetzt, d.h. der 
   Aufruf eines externen Programms dadurch erleichtert. 
   Geben Sie einfach mal  Dos cp 

Manipulationsbefehle jetzt in Serie möglich 
------------------------------------------- 
Die Manip.Befehle b B e E f F bei var und write können jetzt mehrfach hintereinander auftreten, so oft wie nötig. Das sieht z.B. so aus: 
var #uxy(b":" f" " e".") 
Zwischen den Befehlen können, müssen aber keine Leerzeichen stehen. 
Statt "..." kann '...' verwendet werden. 
Beispiel: Hinten und vorn sollen alle evtl. vorhandenen Klammern weggenommen werden: 
                    var #uxy(f"(<[{" F")]>}") 
Außerdem können Zahlenpaare auftreten: 1,5 heißt: beginne hinter dem ersten Zeichen und nimm dann 5 Zeichen. (0 als zweite Zahl heißt: nimm den ganzen Rest.) 

(Zur Erinnerung: f"xyz" heißt, daß vorn jedes der Zeichen x, y oder z 
weggenommen wird, bis ein Zeichen kommt, das nicht zu diesen gehört.) 

Rechenbefehle verbessert 
------------------------ 
Wenn N fehlt, wird in diesen Befehlen der Zahlenwert der iV genommen: 
=N	N bzw. iV in Zahl umwandeln (andere Zeichen fallen dabei weg) 
      und in iZ speichern 
+N	N bzw. iV in Zahl umwandeln und zu iZ addieren, bzw. 
-N	iZ-N bzw. iZ-iV bilden, bzw. 
/N	iZ/N bzw. iZ/iV  ausrechnen, bzw. 
XN	iZ*N bzw. iZ*iV  (das Produkt aus beiden) 
Leider konnte für die Multiplikation nicht das Zeichen * verwendet werden, denn es hat eine Sonderfunktion. In jedem Fall ist der berechnete Wert anschließend in der iZ und kann mit  var Z  in die iV kopiert werden. 

Kopf-und Fußabschnitte bei Export 
--------------------------------- 
Mit  dow H  bzw.  dow F  kann man nun gezielt den Kopf- bzw. Fußabschnitt der aktuellen Exportparameter ausführen lassen. Praktisch ist das z.B. bei Export von RTF-Dateien. 

Anzeige des Nichtsortierzeichens 
-------------------------------- 
Bisher wurde dieses bei der Internanzeige im Anzeigefeld nicht gezeigt. Jetzt wird es gezeigt. 
Das hat eine sehr große Folgewirkung: man kann das Anzeigefeld zum Editieren benutzen. Dazu reicht ein ganz kurzer FLEX 
file x 
read r x
um das Anzeigefeld in die Datei xx zu speichern und diese dann wieder in den Datensatz einzulesen. Das klappt auch bei hierarchischen Sätzen! Tip: Wenn man will, auf eine Flip-Taste legen oder auf F3 oder F4. 

Neue Hilfeseite 
--------------- 
Für die Tastenfunktionen, insbes. die Alt- und Strg-Kombinationen, wurde die Hilfeseite HE_SP gemacht. Sie kann mit Alt+c hervorgerufen werden, aber auch mit  h he_sp  (dann kann man sie auch abdrucken). 
Mit F12 wird sie ins Anzeigefenster geholt, wenn onf12.flx fehlt. 

Exportfunktionen 
---------------- 
Neu gestaltet: Seite exprtger.rtf

UIFE... erweitert,  UIF0... abgeschafft 
--------------------------------------- 
Es sind jetzt so gut wie alle Menue-, Button- und Meldungstexte in der UIFE... versammelt. UIF0... wird nicht mehr gebraucht! Alle darin für a99 relevanten Texte wurden in UIFE... kopiert. 

Quick-Info 
---------- 
Die Buttons des Hauptfensters sind jetzt alle mit einem "Quick-Info" belegt, einer Kurzinformation, die bei Verweilen des Mauszeigers auf dem Button eingeblendet wird. Die Texte sind in den UIF-Zeilen 200-229 
zu finden und somit manipulierbar! 

Kontextmenue Anzeigefeld 
------------------------ 
Diese Zeilen sind jetzt alle auch in der UIFE enthalten und damit modifizierbar (Zeilen 301, 303, 304, 310 u.a.) 

Speicherbereich für Index 
-------------------------- 
a99 hat jetzt 32K statt 10K internen Speicher für das Indexieren.  (s.a. unten "INDEX" unter "classico") 

Sortierte Listen : mit a99 wie mit CockPit 
------------------------------------------ 
Mit der Hilfeseite  sortlist.rtf  kann der FLEX  sortlist.flx gestartet werden. Dieser ermöglicht die Auswahl derselben Parameter, die auch bei DOS für sortierte Listen gebraucht werden, und startet dann den Prozeß für die aktuelle Ergebnismenge. Der Aufruf ist integriert in die neugestaltete exprtger.rtf. 
Nun kann man also die DOS-Methodik auch von a99 aus einsetzen. Es wird eine CCC.BAT für die Ausführung automatisch erzeugt. 
Das Ausgeben der Erg.Menge in Sortierform besorgt aber schon a99 (in sortlist.flx). 

Muster für Anzeigeparameter 
---------------------------- 
Die Anzeigeparameter sind der dickste Stolperstein, wenn man nicht mit der Standard-Konfiguration arbeitet. 
Das war Veranlassung, ein neues Mustermodell zu erstellen. Es soll für alle drei Plattformen einsetzbar sein, und nur EINE Datei muß erstellt werden, wobei man ein kommentiertes Muster abwandelt. 
Dies sind die Dateien: 

Simple Anzeige: (auch für hierarchische, aber nicht für verknüpfte Sätze) 
  D-SHTM.APR    für avanti / HTML 
  D-SRTF.APR    für Windows / a99 
  D-SDOS.APR    für DOS / PRESTO 
  D-S.APT         <-- das ist die einzige Datei, in die man eingreifen muß 

Komplexe Anzeige (mit verknüpften Sätzen) 
  D-KHTM.APR    für avanti / HTML 
  D-KRTF.APR    für Windows / a99 
  D-KDOS.APR    für DOS / PRESTO 
  D-K.APT         <-- das ist die einzige Datei, in die man eingreifen muß 

Eingreifen muß man also normalerweise nur in die d-s.apt bzw. die d-k.apt. Darin stehen die eigenen Kategorien, das andere ist nur das Drum und Dran zur Erzeugung einer "gefelderten" Anzeige, die in allen drei Varianten gleich aussehen sollte. 

Wie geht man vor? 
1. Entscheidung für simple oder komplexe Anzeige, also S oder K, 
   Je nachdem, ob man verknüpfte Sätze hat. 
   Kopieren der betr. 3 Dateien auf *.xPR: z.B. D-SHTM.APR -> D-SHTM.BPR  usw. 
2. Kopieren der D-?.APT auf D-?.BPT   (wenn man B.CFG hat) 
   und Bearbeiten, d.h. Einfügen der eigenen Kategorien nach dem kommentierten Muster. 
   z.B.   D-S.APT -> D-S.BPT 
3. Programm starten mit der richtigen Datei als Anzeigeparameter, 
   d.h.            (mit ? = S oder K) 
   DOS:  PRESTO ... -pD-?DOS       (und p D-?DOS  in der CP.OPT) 
   a99:  DisplayParameter=D-?RTF   (in der INI-Datei) 
   avanti: $Dispar=D-?HTM  (in der av_ini.php) 

Für das Standardsystem kann man die Dateien unmittelbar einsetzen und evtl. ausbauen! 
Hilfstabellen (werden automatisch eingebunden): evtl. kopieren auf .xPT 
  D-DOS.APT 
  D-HTM.APT 

alcarta : weniger Rechte 
------------------------ 
Wenn access (in der INI) nicht wenigstens 2 ist, hat Alt+r keine Wirkung, d.h. man kann den Arbeits- und Hintergrundspeicher nicht im Auswahlfeld zeigen lassen. 

classico 
======== 

IMPORT 
------ 
Bei dem Manip.Befehl = CS  kann jetzt CS auch aus einer Kategorie oder #u-Variable bestehen, also 
#nnn 
s ... 
=#abc    oder   =#uxy 
Es wird dann der momentane Inhalt des Arbeitstextes verglichen mit dem Inhalt von #abc bzw. #uxy 
Bei Gleichheit wird die nachfolgende Zeile ausgeführt, sonst wird sie übergangen. 

UPDATE 
------ 
Die Sperre der TBL wurde beim ersten Satz nicht beachtet! Dadurch konnten im Extremfall bei Mehrplatzbetrieb Datenfehler passieren. Korrigiert. Mit zweimal 'x' kann man den Updatevorgang abbrechen, wenn beim Start die Option -m1 gesetzt wurde. 

INDEX 
----- 
Die Grenze 500 Schlüssel / 8000 Byte je Datensatz wurde ersatzlos aufgehoben. Bisher konnte man mit der Option -B mehr herausholen, aber das ging zu Lasten der Laufzeit. Durch eine interne Umkonstruktion kann jetzt das Programm praktisch beliebig viele Schlüssel je Satz erstellen und läuft sogar 10-20%% schneller. Scheinbar entstehen mehr Schlüssel (wenn man die Protokolle betrachtet), aber es sind in den Zwischendateien doppelte dabei, die in der Indexdatei am Ende wieder entfallen. 
(Ein doppelter Schlüssel entsteht z.B. dann, wenn ein Wort im Titel doppelt vorkommt. Aber nur dann, wenn während der Verarbeitung des Satzes gerade die interne Speichergrenze erreicht wird und das erste Wort schon verarbeitet ist, das zweite aber noch nicht.) 

?http://www.biblio.tu-bs.de/allegro/a99nd.htm=~start http://www.allegro-c.de/a99nd.htm