UB BRAUNSCHWEIG
Symbolfoto
´╗┐

aresqa : allegro relational


Auftakt zur allegro-Version 25(2005)

Skeptisch? Keine Zeit?

Wenn jemand nur schnell wissen will, ob aresqa etwas bringt, und zwar f├╝r den Normal- oder Nur-Anwender ohne Neigung zum Relationentum, dann empfiehlt sich der illustrierte Kurzeinblick weiter unten.

Worum geht es?

Es gibt viele Unterschiede zwischen allegro und Relationalen Datenbanksystemen (RDBS) - sonst w├Ąre allegro ├╝berfl├╝ssig. Dazu erschien eine ausf├╝hrliche, vergleichende und begr├╝ndende Gegen├╝berstellung:

http://www.allegro-c.de/a-r.htm.

Weder kann allegro ungef├Ąhr dasselbe wie ein relationales System, noch umgekehrt. Heutige RDBS sind ohne Frage in ihrem Aufgabenbereich au├čerordentlich m├Ąchtige Instrumente, mit denen allegro in mancher Hinsicht ├╝berhaupt nicht konkurrieren k├Ânnte, das sollte schon deutlich ausgesprochen werden. Doch es geht nicht um Konkurrenz, denn die Aufgabengebiete sind unterschiedlich.

 

St├Ąrken von allegro sind die folgenden Eigenschaften, die ein RDBS selten oder nie braucht oder auf welche die meisten RDBS-Anwendungen gut verzichten k├Ânnen:

 

  • Funktionsreiche Indexdateien: Sichtbare Register zum Bl├Ąttern u.a.
  • Hohe Geschwindigkeit bei sehr gro├čen Datenmengen auf relativ kleinen Maschinen
  • Geringer Plattenplatzbedarf
  • Jedes Feld darf beliebig oft mehrfach auftreten (bei RDBS problematisch)
  • Diffizile Feldstrukturierung mit Unterfeldern (RDBS-Datenfelder sollen "atomar" sein, d.h. unstrukturiert)
  • Unterschiedliche Satztypen in derselben Datei
  • Hierarchische Satzstrukturen
  • Komfortable Anwendung von Normdaten
  • Export-und Importsprachen von hoher Leistung und M├Ąchtigkeit
  • FLEX-Skriptsprache f├╝r die Programmierung interaktiver Vorg├Ąnge. FLEX ist im Gegensatz zu SQL eine prozedurale Sprache, kann also z.B. Daten satzweise verarbeiten und hat auch viele interaktive Funktionen.

Deshalb w├Ąre es noch immer wenig aussichtsreich, ein Bibliothekssystem mit SQL entwickeln zu wollen, um damit allegro letztlich abschaffen zu k├Ânnen. Das bedeutet, allegro wird schon noch eine Weile brauchbar und in einigen Projekten gar unentbehrlich bleiben.

Warum aber, so fragt man sich immer mal wieder, k├Ânnte man nicht die Vorteile beider Welten miteinander kombinieren?

Das fragen insbesondere solche Anwender oder Systemverwalter, die sich gut mit RDBS auskennen, aber mit allegro ├╝berhaupt nicht. Denn die ├Ąrgern sich immer wieder, weil sie nicht "schnell mal eben", wie sie es mit SQL gew├Âhnt sind, eine SELECT-Auswertung und/oder ein UPDATE machen k├Ânnen. aresqa soll genau das m├Âglich machen, und zwar ohne jede allegro-Kenntnis, insbes. ohne Parametrierung.

Aber wie soll das gehen?

Es gibt ja schon einen Schritt in diese Richtung: das Tabellen erstellen! Eine erstellte Tabelle (manche sprechen von einer CSV-Datei,  CSV= Comma Separated Values) kann man mit Word oder Excel weiterverarbeiten, aber auch in ein RDBS ├╝bernehmen.

Den zweiten, noch gr├Â├čeren Schritt soll aresqa machen! So arbeitet es, und so erkl├Ąrt sich auch sein Name:

  a          allegro-Daten ausgeben in Tabellenform, geeignet zur ├ťbernahme durch ein

    re       relationales Datenbanksystem, darin Anwendung von

      sq     SQL zur beliebigen Bearbeitung der Tabelle, dann R├╝ckgabe an

         a    allegro : Wiedereinspeisung in die Datenbank

Die von einer aresqa-Aktion betroffenen S├Ątze k├Ânnen auf Wunsch w├Ąhrend der Aktion in der allegro-Datenbank alle gesperrt werden.

Hauptinstrument, das wird hier schon klar, bleibt die allegro-Datenbank. Das RDBS wird als Bearbeitungs- und Auswertungsinstrument genutzt, nicht f├╝r permanente Datenhaltung. So etwas wie ein Tandem-Betrieb mit verteilten Aufgaben ist nicht angestrebt. Aber Tabellen k├Ânnen nun in beiden Richtungen ausgetauscht werden.

Zugabe 1: Es ist auch m├Âglich, die letzten drei Schritte ohne den ersten zu machen! Falls man in einer relationalen Datenbank einen eindeutigen Schl├╝ssel f├╝r eine allegro-Datenbank hat, kann man derselben auch Daten zum Einmischen ├╝bergeben, die man vorher nicht als Tabelle von ihr erhalten hatte. Diese Daten k├Ânnen dann in vorhandene S├Ątze eingef├╝gt oder als neue S├Ątze gespeichert werden. (Mit der IMPORT-UPDATE-Methode ging das immer schon, aber die ├ťbergabe RDB -> allegro wird nun stark erleichtert.)

Zugabe 2: Neue Datens├Ątze via Tabelle erzeugen! Wenn die erste Tabellenspalte nichts als die Ziffer 0 enth├Ąlt, dann wird aus der Zeile ein neuer allegro-Datensatz gemacht, in welchem die Tabellenspalten gem├Ą├č der .STR-Datei in Datenfelder verwandelt werden.

Zugabe 3: Die Tabellenerzeugung ist abgestimmt mit der bisherigen Methode "Tabellen erstellen". Eine f├╝r aresqa erstellte Strukturdatei (s.u.) kann in eine Parameterdatei umgewandelt werden, mit der man in der schon bekannten Weise Tabellen f├╝r Office-Programme u.├Ą. erzeugen kann. (Die Unterschiede liegen nur in der ├ťberschriftszeile und der optional m├Âglichen Vorsortierung der Tabelle.)

Hinweis: Die dem RDBS oder einer Tabelle ├╝bergebenen Daten stellen nie den gesamten Umfang einer Datenbank dar, sondern immer eine Auswahl bestimmter Felder oder Unterfelder aus einer Ergebnismenge oder auch aus der Gesamtbank. (Das ist schon deshalb klar, weil man ja mit SQL gar nicht den gesamten Datenbestand modellieren kann.) Denn die Aufgaben, die man evtl. mit SQL l├Âsen will, beziehen sich vermutlich nie auf die kompletten S├Ątze und alle Satztypen mit allen Bestandteilen, sondern eben auf bestimmte Felder. Vorzugsweise werden dies Felder sein, in denen Zahlen, Geldbetr├Ąge, Datumsangaben, Codes, Adressen oder sonstige simple Zeichenfolgen stehen, denn damit k├Ânnen RDBS ganz exzellent jonglieren. Die "Zielgruppe" sind also nicht Katalogdaten (bibliographische Daten) im engeren Sinne, sondern in erster Linie Gesch├Ąftsgangsdaten.

Vermutung: In den meisten F├Ąllen wird man wohl im RDBS nur "schnell mal eben" die ├╝bergebene Tabelle in irgendeiner Weise bearbeiten und nach R├╝ckgabe wieder l├Âschen - also gar keine eigentliche Datenbankarbeit veranstalten.

Die Voraussetzung f├╝r aresqa ist nat├╝rlich ein vorhandenes RDBS. Mit dem weit verbreiteten MySQL kann man diese Voraussetzung in weniger als einer Stunde auf einem normalen PC kostenlos und bequem herstellen.


Man braucht:

MySQL Server : www.mysql.de/  "Downloads", oder von Firma MySQL AB:

           dev.mysql.com/tech-resources/articles/4.1/installer.html

Client : Konsolprogramm mysql.exe (im Serverpaket enthalten!) 

           oder  SQLyog (empfohlen)            www.webyog.com/  

           oder  MySQL-Front:             www.mysqlfront.de/download.html


Ist nur MySQL verwendbar - was ist mit anderen Systemen? MySQL ist kostenlos und deshalb ├╝berall einsetzbar, das ist besonders f├╝r viele allegro-Anwender ein entscheidender Punkt. Es hat zudem einen Leistungsstand erreicht, mit dem es f├╝r die hier interessierenden Aufgabenbereiche hinter keinem anderen System zur├╝cksteht. Gleichwohl, wer aresqa mit einer anderen Engine einsetzen will, etwa Oracle oder DB2, k├Ânnte dies tun, denn die Kommunikation zwischen allegro und RDBS erfolgt ├╝ber standardm├Ą├čige SQL-Skripte bzw. CSV-Dateien, wie sie jedes RDBS verarbeiten kann.

Dateien, die aresqa braucht

Strukturdatei    q-xyz.str            Struktur der Tabelle (welche Felder...)

FLEXe               aresqa1.flx           erstellt ein SQL-Skript und eine Tabelle, s.u.

                        aresqa2.flx            liest die Tabelle (nach Bearbeitung) wieder ein

Skript               q-xyz.sql             Skript f├╝r MySQL zur ├ťbernahme der Tabelle

Tabelle             q-xyz.tab             Die Tabelle selbst, die vom SQL-Skript geladen wird

Die Namen der Dateien (nicht der FLEXe) beginnen also mit  q- . So kann man sie leicht erkennen.

Der Nutzer hat nur die Strukturdatei anzulegen, was einfach ist und von a99 unterst├╝tzt wird.

So sieht die ├╝bergebene Tabelle q-xyz.tab aus:

inn1[tab]feld1[tab]feld2[tab]...[tab]feldN

inn2[tab]feld1[tab]...

...

wobei nn1, nn2... die internen Satznummern sind, ODER geeignete eindeutige Schl├╝ssel: dann steht nicht ein i am Zeilenanfang, sondern ein | und die Registernummer.

Die wichtigste Komponente ist die Strukturdatei. Sie ist denkbar einfach konstruiert. So sieht eine Strukturdatei f├╝r 4 Felder aus:

#kk1     Name des Feldes #kk1

&kk2     Name des Feldes #kk2

#kk3$s   Name des Teilfelds $s von #kk3

#kk4$t   Name des Teilfelds $t von #kk4

Das Feld #kk2 soll dem RDBS ├╝bergeben werden, also in der Tabelle auftauchen, bei der R├╝ckgabe an allegro aber nicht mit ├╝bernommen werden. Deshalb beginnt die Zeile mit & statt #.
$s und $t sind Teilfeldcodes. Der Inhalt von feld1 wird also aus #kk1 entnommen, feld2 aus #kk2, feld3 aus dem Teilfeld s von #kk3, Feld 4 aus dem Teilfeld t von #kk4 ...

Die Strukturdatei wird zuerst gebraucht, um die Tabellendatei zu erstellen, aber dann auch hinterher, wenn die Tabelle zur├╝ckgeholt werden soll, um die Spalten dann wieder den Feldnummern und Teilfeldern zuzuordnen (denn in der Tabelle selbst stehen ja diese Angaben nicht drin).

Vorgang

FLEX aresqa1.flx erstellt eine Tabelle mit Hilfe der Strukturdatei q-xyz.str :

  Ergebnismenge bilden

     aresqa1.flx ausf├╝hren: q-xyz.tab und q-xyz.sql entstehen

         MySQL Client aktivieren

            Skript q-xyz.sql starten (q-xyz.tab wird geladen, darin steckt die Ergebnismenge als Tabelle)

            Aktionen mit SQL...

         q-xyz.tab wieder ausgeben

     aresqa2.flx ausf├╝hren: q-xyz.tab wieder einlesen (mit Hilfe von q-xyz.str)

  Ergebnismenge ist ver├Ąndert

├ťbrigens, wie oben schon angedeutet: aresqa2.flx kann auch eine Tabelle einlesen, die vorher nicht mit aresqa1 erstellt wurde, sondern die man mit anderen Mitteln selber produziert hat, die aber in Form, Feldfolge und -inhalten der Strukturdatei zu entsprechen hat.

Mehr zu den Dateien

Nun die genauere Beschreibung der Strukturdatei, der Tabelle und des sql-Skripts:

q-xyz.str   (Strukturdatei)

   Das ist die Liste der Felder (Nummer und Name), aus denen die Tabelle zu bilden ist. Die erste Tabellenspalte darf nur ein eindeutiger Schl├╝ssel sein. Im einfachsten Fall ist es automatisch die interne Satznummer, mit dem Buchstaben  i  davor.

Man kann aber einen anderen Schl├╝ssel verlangen, indem man die .STR-Datei mit einem p-Befehl beginnt (kleines p!):

   pX = eindeutiger Schl├╝ssel (Erzeugung bei Sprungmarke X in den Indexparametern),

         Sonderfall p@ : Prim├Ąrschl├╝ssel

     Weitere Zeilen beginnen mit # oder &

  #FeldNr1     Feldname1

  #FeldNr2$x   Feldname2

  ...

  &FeldNrn(mb) Feldnamen   Feldn nur in MySQL anzeigen, bei R├╝ckf├╝hrung ignorieren!

  #FeldNrN     FeldnameN

Die Feldname-Angaben bilden dann die Spaltennamen der MySQL-Tabelle! Vor Feldnamen (n=1...N) hat jeweils mindestens ein Leerzeichen zu stehen, kein TAB-Zeichen.

Die erste Spalte aber ist etwas besonderes: sie enth├Ąlt im Normalfall (ohne p-Befehl) die interne Satznummer, mit Buchstabe i davor.

Alternativ ist die erste Spalte ein eindeutiger Schl├╝ssel, der durch den p-Befehl deklariert wird.

Folgen kann eine Zeile, die mit |r xy beginnt. Sie besagt: die erste Spalte ist ein Schl├╝ssel, der im Register r steht und dort das Pr├Ąfix xy hat. Beim Zur├╝cklesen der Tabelle wird dann jeweils der Inhalt der ersten Spalte genommen, mit xy vorn erg├Ąnzt und im Register r gesucht, um den zugeh├Ârigen Satz zu finden.

Jede Zeile, die mit # beginnt oder mit &, entspricht einer Tabellenspalte.

Zeilen, die mit & statt # beginnen, erzeugen (in aresqa1.flx) eine Tabellenspalte in genau derselben Weise wie die #-Zeilen, aber diese Tabellenspalten werden bei R├╝ckf├╝hrung der Tabelle (in aresqa2.flx) nicht ├╝bernommen. Sie dienen nur dazu, die Tabelle dem menschlichen Bearbeiter im RDBS leichter verst├Ąndlich zu machen. Z.B. kann ein Name darin stehen, der als solcher nicht ver├Ąndert werden soll. Manipulationsbefehle (mb) sind nur bei solchen Feldern anwendbar. D.h. die ├╝bergebenen und zur Bearbeitung vorgesehenen Feld- und Teilfeldinhalte m├╝ssen vollst├Ąndige, unver├Ąnderte Inhalte sein.

Wenn UTF-8 zum Einsatz kommen soll: Als Hilfe zur Umcodierung nach UTF-8 wird die Parameterdatei p-unicod.apr gebraucht. Diese kann unver├Ąndert f├╝r andere Konfigurationen benutzt werden. (Kopie machen: p-unicod.bpr, wenn eine B.CFG im Einsatz ist.)

Hinweis zum p-Befehl:

Wenn man mit dem p-Befehl einen anderen eindeutigen Schl├╝ssel w├Ąhlt (der auch bei jedem Satz auftritt!), darf bei der Sprungmarke X  kein #u1 vorkommen, m.a.W. dort darf nur mit echten Kategorienummern gearbeitet werden.

q-xyz.tab   [Codierung in dieser Datei normalerweise ANSI, wahlweise UTF-8]

   Diese Datei wird von aresqa1.flx automatisch erstellt.

   Die erste Spalte enth├Ąlt einen eindeutigen Schl├╝ssel der allegro-Datenbank:

   iInterneNummer

     ODER   Schluessel    eindeutiger Schl├╝ssel, dessen Pr├Ąfix im |-Befehl der Strukturdatei steht

     ODER   |rSchluessel    r=1...9,:,;  eindeutiger Schl├╝ssel im Reg. r

   Inhalt von #feld1

   Inhalt von Teilfeld $x aus #feld2

   Inhalt von ... #feldN

Diese Inhalte bilden pro Satz jeweils nur eine Zeile, die Datenfelder sind durch TAB (ASCII-Code 09) getrennt. Das ist die allgemein ├╝bliche Struktur einer CSV-Datei, aber eben nicht mit Komma, sondern TAB als Trennung.

q-xyz.sql

   Auch dieses Skript wird von aresqa1.flx automatisch erstellt. Es enth├Ąlt die f├╝r MySQL n├Âtigen Befehle, um die Datenbank und deren Tabelle anzulegen (beide hei├čen immer "aresqa") und sodann das Laden der q-xyz.tab zu veranlassen. So sieht das Skript aus:

/*

  Skript zum Erstellen und Einlesen einer aresqa-Tabelle

  2004-11-13

Ausf├╝hren:

  C:\Programme\MySQL\MySQLServer4.1\bin>mysql <skriptdatei

  danach ist die Datenbank aresqa vorhanden, sie hat nur

  1 Tabelle, und die heisst "aresqa". Wenn sie schon existierte,

  wird sie gel├Âscht!

*/

CREATE DATABASE IF NOT EXISTS `aresqa`;

USE `aresqa`;

DROP TABLE IF EXISTS `aresqa`;

/* Die Tabellendefinition muss jeweils erstellt werden! */

/* Die Feldauswahl ergibt sich aus aresqa1.flx und Strukturdatei */

CREATE TABLE `aresqa` (

   `Id` varchar(25) NOT NULL,

   `ISBN` varchar(255) default NULL,

   `Signatur` varchar(255) default NULL,

   `jahr` varchar(255) default NULL,                                                                                                                                                                                                                                           

   `verlag` varchar(255) default NULL,

   PRIMARY KEY  (`Id`)

 ) ;

/* Die Datei aresqa.tab wird auch von aresqa1.flx erstellt,

  darin stehen die Datenzeilen, ANSI- oder UTF-8 codiert mit TAB als Trenner!

*/

LOAD DATA CONCURRENT LOCAL

 INFILE "c:/allegro/q-xyz.tab"

 INTO TABLE aresqa

 FIELDS TERMINATED BY '\t'

 LINES TERMINATED BY "\r\n"

 ;

/* Die R├╝ckgabe erfolgt dann sp├Ąter mit: */
 

use aresqa

SELECT * from aresqa INTO OUTFILE "c:/allegro/q-xyz.tab"


Statt c:\allegro hat hier das Arbeitsverzeichnis zu stehen, auf dem a99 l├Ąuft.

Tip:

Diese zwei Befehle kann man auch in eine Datei out.sql schreiben und dann mit dem Aufruf

mysql <out.sql

von der Konsole aus starten.


Arbeitsweise in a99
  [hier nur kurze, noch vorl├Ąufige Hinweise]

Die Startseite f├╝r das Tabellen-Erstellen ( h table geben!) wurde entsprechend erweitert, damit man Strukturdateien erstellen, ausw├Ąhlen, bearbeiten und starten kann. Beim Starten ├╝bernimmt aresqa1.flx die Strukturdatei und produziert die Tabellendatei.

Nach Bearbeitung im RDBS holt man die Tabelle zur├╝ck mit dem Aufruf von aresqa2.flx. In die Nutzervariablen #uqQ schreibt man vorher den Namen der Struktur, die Tabellendatei hat auf dem Arbeitsverzeichnis des Anwenders zu liegen,  Strukturdatei und Tabelle m├╝ssen sich selbstverst├Ąndlich entsprechen.

 

aresqa-Viewer und Editor : Nicht nur f├╝r Tabellen!

Als Werkzeug f├╝r das Betrachten und (in gewissen Grenzen) Bearbeiten von Tabellendateien wurde ein Modul entwickelt, das mit dem neuen FLEX-Befehl aresqa aktiviert werden kann. Aber nicht nur Tabellen, sondern beliebige Listen- und Textdateien (das sind ja alles einspaltige Tabellen) kann man hiermit anschauen und editieren. Und zwar im ASCII- oder ANSI-Code, aber dieser Unterschied f├Ąllt normalerweise nicht mehr auf! Dazu geh├Âren besonders auch ViewListen, UIF- und INI-Dateien, Formulare, CFG- und Parameterdateien sowie FLEX-Dateien. Wir haben also mit aresqa nichts weniger vor uns als einen neuen, alternativen Editor f├╝r alle diese Dateien...

Holen Sie sich das V25-Gesamtpaket, dann k├Ânnen Sie alles sofort selber nachvollziehen.
So sieht das aresqa-Fenster aus:

 

 

Selber ausprobieren:
Man erh├Ąlt diesen Anblick, wenn man beim neuen a99 im Schreibfeld eingibt:  x ar help/flex.vw
Hat man auch den neuen onerror.flx installiert, wird's noch einfacher: man gibt nur ein:   a help/flex.vw
Es stimmt: beim Dateinamen ist auch / statt \ m├Âglich.
Sondertips:
1. Wenn man nur a eingibt, wird der Inhalt des Anzeigefeldes, egal was es gerade ist, ins aresqa-Fenster projiziert.
2. Wenn man a name gibt, und die Datei name existiert nicht, wird sie hinterher angelegt. Das ist vermutlich jetzt der schnellste Weg, eben mal eine kleine Datei anzulegen, z.B. eine FLEX- oder Batch-Datei.
Und noch eine ganz andere Anwendung mit aresqa: Geben Sie einfach nur ein:  d, und schauen Sie, was passiert.
Hinweis: In a99 bzw. alcarta kann man nur weitermachen, wenn man zuerst das aresqa-Fenster schlie├čt.

Mit F1 oder dem Button [Help] kommt Hilfe (Datei ha_ar erscheint).
Dieses Fenster kann man stufenlos vergr├Â├čern und verkleinern, anders als das View-Fenster.
Es folgt die (im Vergleich zum F1-Hilfetext) etwas ausf├╝hrlichere

Beschreibung der Funktionen:


Die Cursor-Tasten funktionieren, wie man es erwartet. Mit Tab-Taste springt man zwischen der Liste und dem Eingabefeld "Find" hin und her.

Im Feld "Find" kann man eingeben:

-- eine #Zeilennummer, um zu der betr. Zeile zu springen
     (wenn es eine gr├Â├čere Liste ist), also z.B. #100 f├╝r Zeile 100.
Oder  (das kennt man vom ViewListen und Kurzlistenfenster)
-- ein Suchwort (beliebige Zeichenkombination) wobei Gro├č-Kleinschreibung gleich-
     wertig ist, auch Umlaute k├Ânnen als solche oder aufgel├Âst eingegeben werden.
     Mit [+] und [-] springt man zum n├Ąchsten / vorigen Vorkommnis des Suchworts.
     Sonderfall: Setzt man ^ vor das Suchwort, wird nur am Zeilenanfang gesucht.
     Suchen+Ersetzen: Eingabe von ,abc,xyz,  bzw. _abc_xyz_, um abc durch xyz zu ersetzen.


Mit [Code] wird die Anzeige zwischen ASCII (DOS) und ANSI (Windows) umgeschaltet.
Wenn die Umlaute falsch erscheinen, dr├╝cken Sie auf diesen Knopf. (Nicht immer kann das Programm korrekt erkennen, welche Codierung die Datei hat.)

[Enter]-Taste zeigt die ausgew├Ąhlte Zeile in einem Eingabefeld, wo man sie ├Ąndern kann.

[Einfg]-Taste erm├Âglicht das Eingeben einer neuen Zeile. Sie wird VOR die
   momentan markierte Zeile eingef├╝gt.

[Entf]-Taste l├Âscht die markierte Zeile.

[Add] Erm├Âglicht die Eingabe neuer Zeilen, die ans Ende geh├Ąngt werden. Man gelangt in
   eine Eingabeschleife, damit man bequem mehrere Zeilen hintereinander eingeben kann,
   bis man das Eingabefeld mit [Esc]-Taste schlie├čt.

[Copy] Kopiert die markierte Zeile ins Eingabefeld. Die bearbeitete Zeile wird dann als neue
   Zeile unter der markierten eingef├╝gt.

[Undo] Macht die letzte Editier-Aktion r├╝ckg├Ąngig.

[Redo] Umgekehrt. Beides geht mehrfach hintereinander! Die Markierung springt jeweils auf
   diejenige Zeile, wo die ├änderung sich ausgewirkt hat. Diese Funktionen arbeiten zeilen-
   bezogen, nicht zeichenweise. Ist man am Anfangs- bzw. Endpunkt der aufgezeichneten
   Aktionen angekommen, wird der Undo- bzw. Redo-Button grau, damit man sieht: mehr
   geht nicht.

Mit Maus kann man eine einzelne Zeile verschieben. Sie wird dann vor diejenige
Zeile geschoben, auf der man die linke Maustaste freigibt.
Anm.: Ein Markieren und Kopieren oder L├Âschen mehrerer Zeilen ist nicht vorgesehen.
Denn dies w├╝rde die Funktionen [Undo] und [Redo] sehr erschweren.

[Save] schreibt, ohne das Fenster zu schlie├čen, die Tabelle in die Datei  aresqa.lst.
Was damit geschieht, wenn man das Fenster schlie├čt, ist Sache des FLEXes, in den
der aresqa-Aufruf eingebaut ist. Nach erfolgter Speicherung wird der Button inaktiv
(grau), aber die n├Ąchste ├änderung aktiviert ihn wieder.
Beispiel: onerror.flx
In welchem Code gespeichert wird, sieht man in dem Feld unter dem Save-Button.
Mit dem Button x daneben kann man den Speichercode umschalten. So ist es ganz
einfach, eine ASCII-Datei in ANSI zu wandeln und umgekehrt.

Mit Taste # erh├Ąlt man die vollst├Ąndige Anzeige der ausgew├Ąhlten Zeile. N├╝tzlich, wenn diese sehr lang ist. Mit Taste [Enter] sieht man auch die ganze Zeile, aber zum Bearbeiten.

Das Statusfeld (├╝ber [Code]) zeigt zwei Zahlen: die Nummer der markierten Zeile und die Gesamtzahl der Zeilen.
Bei Bearbeitungen ├Ąndern sich diese Zahlen entsprechend.

Hinweis zu alcarta: Darin (und auch in a99, wenn die Berechtigung unter 5 liegt) fehlen die Buttons unter dem Statusfeld, also alle Bearbeitungsfunktionen. In a99 kann man zus├Ątzlich das Bearbeiten ganz verhindern, wenn man die Funktion mit dem FLEX-Befehl Aresqa statt aresqa aufruft.

[OK] und [Esc] schlie├čen das Fenster. In beiden F├Ąllen wird, wenn ├änderungen noch nicht gespeichert sind, zur Entscheidung aufgefordert. Die Originaldatei wird nicht ├╝berschrieben, siehe [Save], es entsteht nur die Datei
aresqa.lst.
Der Unterschied ist nur: bei OK steht anschlie├čend die zuletzt markierte Zeile in der "internen Variablen" und kann so im FLEX ausgewertet werden; nach Esc dagegen ist die iV leer.

Sonderfunktionen bei ViewListen
Hat man eine Datei mit .vw als Dateityp vor sich, dann
1. Zeilen, die mit h beginnen, bewirken sofortige Anzeige des Hilfetextes
2. Zeilen, die mit inummer oder nummer beginnen, bewirken direkte Anzeige des zugeh├Ârigen
    Satzes.
3. Beim Speichern werden die Zeilen auf gleiche L├Ąnge gebracht, damit die Datei dann sofort
    die korrekte Struktur hat. Dazu wird die l├Ąngste Zeile ermittelt und die anderen auf diese
    L├Ąnge aufgef├╝llt.
Die Punkte 1 und 2 entsprechen dem, was man von den ViewListen kennt. Nur sind hier auch die vor dem | stehenden Befehle bzw. Nummern zu sehen. So kann man schon beim Bearbeiten einer ViewListe sehen, ob sie funktioniert!



[i] zuletzt aktualisiert: 18.04.2011
Email: ub@tu-bs.de