Updaten

Das Einspeisen von Daten, wenn sie im korrekten Format vorliegen, geschieht per FLEX mit dem Befehl "update". Diese Beschreibung soll z.T. auch denen helfen, die sich bisher nur mit den DOS-Programmen auskannten. 
Hinweis: Wie früher unter DOS kann man auch offline updaten, und zwar mit dem Konsolprogramm `acon` und dem Job update.job.

Mit dem FLEX-Befehl  update dateiname

0.	kann a99 neben dem Grundformat .cLG auch das `Externformat` .cDT verarbeiten, welches mit Hilfe anderer Software oder auch mit der Hand (z.B. sogar im X-Editor oder mit Notepad) leichter zu erstellen ist. 

1.	kann man den gesamten Vorgang jetzt besser beobachten: jeder Datensatz  erscheint in der Anzeige 

2. 	kann man unterbrechen (Esc drücken) und dann wahlweise abbrechen oder  weiterlaufen lassen. (Das geht mit dem DOS-Programm UPD.EXE auch: Strg+s; dann mit Leertaste fortsetzen und mit Strg+c abbrechen. Nach einem solchen Abbruch kann es sein, daß die Datenbank gesperrt ist. Sperre aufheben im org-Menü. 

3. 	kann man einen abgebrochenen Update-Vorgang an der Abbruchstelle weiter fortsetzen lassen, und zwar auch nach Neustart von a99. 

4. 	kann man nach dem Ablauf oder Abbruch die neuen und veränderten Sätze    durchsehen: sie stehen im Offline-Speicher (Alt+Q), als wären sie alle mit der Hand bearbeitet worden. 

5. 	kann man erstmal "zur Probe" updaten: Dann werden zwar die Sätze identifiziert und zusammengemischt, aber noch nicht echt gespeichert, sondern im Offline-Speicher (Alt+q) angesammelt. Das geht SEHR schnell. Wenn man einen der Sätze dann betrachtet, kann man mit Alt+w auch den noch unveränderten Originalsatz in der Datenbank betrachten! 
Wenn man die Daten durchgesehen und dann den Eindruck hat: Alles OK, dann mit "Datei | Alle bearb. Daten speichern" alles echt speichern lassen. Nicht OK? Offline-Speicher mit  x erase off  leeren oder Programm ohne Speicherung verlassen. 
Wie wird's gemacht? Beim FLEX-Befehl  set uxyz  die Ziffer z auf 0 setzen. (Die Registereinträge werden natürlich erst beim echten Speichern verändert! Das ist ein Vorgang, der deutlich mehr Zeit braucht.) 
Aber: Beim Probe-Update werden noch keine IdNummern vergeben, auch das passiert erst beim echten Speichern eines Satzes. 

6.	ist es sogar möglich, den Primärschlüssel flexibel zu handhaben. Man muß noch nicht einmal, wie bei PRESTO, in die Indexparameter eingreifen. Im Normalfall wird der Primärschlüssel so gebildet wie bei PRESTO: der erste überhaupt entstehende, aufgrund der Reihenfolge der ak-Zeilen, ist der Primärschlüssel. 
Mit dem Befehl  
set px  
kann man eine Sprungmarke #-x für die Bildung des Primärschlüssels einstellen. (Dort darf dann nicht #u1 oder #ch verwendet werden!) 

7. 	kann man sich auf das Programm hinsichtlich Sicherheit und Geschwindigkeit verlassen: es ist etwas schneller und genauso sicher wie das alte Konsolprogamm UPDATE.EXE. Ab V32 wird dieses abgelöst durch die Kombination  acon -jupdate ... 
Trotzdem sollte man etwas seltener die Meldung "bitte warten, .TBL gesperrt" bekommen, wenn man parallel mit PRESTO an der Datenbank arbeitet. 

8. 	Ab V25.5 kann man auch ANSI-Daten (Windows-Code) einlesen. Default ist und war der intern verwendete DOS-Code (ASCII). 

Und so wird's gemacht: 

1.	FLEX vorbereiten. 
Wenn die einzumischende Datei NEUDAT.ADT auf D:\DATEN liegt, gibt man in das Schreibfeld ein: 

        #uX0x set u11\update d:\\daten\\neudat.adt

	Es entsteht dann die Kategorie #uX0. 
(Achtung: '\' ist FLEX-Befehlstrenner! Wenn ein echtes '\' vorkommen soll, wie im Pfadnamen, muß man  '\\'  schreiben.) 

1a.	Wenn die Daten im Windows-Code sind (ANSI), dann vor dem  update  noch den Befehl  set c1  einsetzen (ab V25.5) 

2. 	Starten:  Alt+0  drücken, dann geht's los (d.h. #uX0 wird ausgelöst). 

3. 	Beobachten 

4. 	Anhalten:  [Esc] oder 'x' druecken. Es kommt die Frage: 

          Abbruch? ja / nein

	Bei Antwort ja merkt sich das Programm in einer Datei NEUDAT.AUT, wie weit es gekommen ist. 

5. 	Weiterlaufen lassen:  (evtl. bei spaeterer Sitzung) 
Nochmals  Alt+0  , dann stellt a99 fest, dass es NEUDAT.AUT gibt, und fragt: 
         Continue Update neudat ? 
         No = Restart 
         Ja / Nein / Abbrechen 
	Ja : An der Abbruchstelle weitermachen 
 	Nein : Nochmal von vorne 
	Abbrechen: Nichts tun 

(Hat man inzwischen NEUDAT.AUT gelöscht, fängt das Programm ohne Frage von vorne an. Ist es fertig, löscht es NEUDAT.AUT selber.) 

Das "Zur-Probe-Updaten" macht man so: man haengt an den "set"-Befehl noch eine Ziffer 0. Das sieht bei Eingabe im Schreibfeld z.B. so aus: 

   #uX0x set u410\...

Die Ziffern hinter u sind ansonsten so zu interpretieren wie bei der UPDATE Option -fm.  Fehlt die dritte Ziffer, wird 1 angenommen, d.h. echtes Update mit sofortigem Schreiben in die Datenbank. 

Tip: Statt den FLEX neu einzugeben, kann man mit Alt+r auf den Reservespeicher schalten, dort #uX0 anwaehlen und korrigieren, oder z.B. ein #uX9 draus machen als Alternative. (Das geht mit allen #u-Kategorien, ganz im Gegensatz zu PRESTO, wo man sie per Hand nicht ändern konnte.) 

Beispiel:
Mit dem DOS-Befehl 
  upd -fmxy ... -uabc.alg -nj
(früher  update -fmxy ...) kann man seit alters eine Grunddatei abc.alg in eine Datenbank einspeisen lassen, wobei die Option -fmxy  den Modus bestimmt, neue Sätze kommen in die Datei j. Dasselbe Ergebnis erhält man mit diesem FLEX: 
input j 
set uxy 
update abc.alg 
Statt des Dateiformats .alg  kann der FLEX-Befehl im Gegensatz zum DOS-Verfahren auch den Typ .adt verarbeiten, das sog. `Externformat`. 

?Externformat=h ac0-0#328 
?acon=h acon