Achtung: In  avanti  hat dieser Befehl bis auf das simple  get  eine  andere Funktionsweise .

 

get #xyz    Bei avanti nicht

get [iV]    avanti:  nur  get

get +[iV]   avanti:  nur  get +

Aus der mit  open  ... geöffneten Datei (z.B. auch Internetdatei!) wird eine Zeile gelesen (als Zeilenende gilt 13 10 oder nur 10) und in die Kategorie #xyz bzw. in die iV kopiert. Codes 13, 10 und 9 (TAB) am Ende der Zeile werden nicht mit übernommen. Wenn das  +  gesetzt ist, wird der gelesene Text an die iV angehängt.

Mit  ascii  bzw.  ansi  kann man den Text in der  iV  umcodieren.

Wenn also die Datei ANSI-Daten hat, man braucht aber ASCII: 

get iV\ascii\ins #uxy   statt nur   get #uxy.

Mit  if cancel  ... kann man checken, ob die Datei zu Ende war (d.h. es konnte nichts mehr gelesen werden),

mit if no ... ob sie gar nicht geöffnet ist (werden konnte),

mit  if yes ... ob es geklappt hat. 

Siehe auch  fetch  : wenn eine bestimmte Anzahl Bytes gelesen werden soll statt einer Zeile, oder wenn bis zu einem bestimmten Endezeichen gelesen werden soll, etc.

 

get I url  avanti

Die  url  ist ein beliebiger Internetdateiname, der mit  http://  oder  ftp://  oder  file:///   beginnt. Es eignen sich jedoch nur simple Textdateien, keine .JPG, PDF, .DOC, .PPT, .XLS  usw. wegen der darin enthaltenen Steuerzeichen.  Dateien mit .html, .php, .py, .pl gehen, sofern sie reinen Text liefern, d.h. man erhält - wie im Browser -  den HTML-Datenstrom, den der Server übermittelt.

Fehlt url, wird der Inhalt der iV genommen, d.h. man kann sich die url vorher mit  var  zusammenbasteln. Tut man das nicht, muß man sie in "..." einschließen, weil sonst bei der Zeichenfolge // abgeschnitten wird - sie markiert den Beginn eines Kommentars. Also:

var "http://..."

get I

Der Inhalt dieser Datei wird in die iV kopiert. Die URL kann eine dynamische sein, d.h. z.B. eine mit .php oder .pl etc.

Mit if no ... kann man testen, ob die Datei zu lang war, um in die iV zu passen, d.h. länger als 255000 Zeichen. Ist das der Fall, kann man sich die Datei entweder mit dem Befehl   open url   holen und dann zeilen- oder blockweise lesen, oder sie mit  write Furl  holen und sofort in die momentan offene Exportdatei schreiben. Nur die Methode mit open ist gegen überlange Dateien sicher.

Und wenn es die Datei nicht gibt?

Beim Typ  file:///  ist es so, daß der FLEX an dieser Stelle ganz abbricht - wenn auch nicht ohne Fehlerhinweis.

Bei  http://  und  ftp://  liefert der betr. Server immer einen output, in dem dann z.B. die Fehlermeldung 404 steht.

Ob allerdings der Server gar nicht existiert oder nicht arbeitet oder keine Netzverbindung da ist, kann man abfangen mit der Prüfung  if cancel ... (Windows) bzw.  if "ERROR" ...  (Linux/UNIX). Siehe Beispiel 3.

Hinweis: Mit  var ... Furl ...  kann man Dateiinhalte auch direkt in  cstrings  einbauen. Dabei gibt es jedoch keine Fehlerkontrolle.

Tip: Will man sich eine binäre Datei holen, z.B. eine Grafikdatei, geht das nur mit open ... und dann  fetch / write ^.

Das Ergebnis wird außerdem noch in die zusätzliche interne Variable $ kopiert. Danach kann man mit  var $  diesen Inhalt immer wieder in die normale iV kopieren, um z.B. Werte daraus zu extrahieren. Das kann auch geschehen mit Befehlen wie  var $ (b"..." e"...")  oder  var $ (x"...")  im Fall von XML-Daten (Beschreibung siehe unter   cstring ).

 

get adr nnn

Die Adresse des Satzes mit der internen Nummer nnn wird ermittelt.

Fehlt nnn , wird der iV-Inhalt genommen.

In der iV steht anschließend

dn / pos

wobei  dn  die Nummer der .ALD-Datei ist (1...255) und  pos  die Position innerhalb der Datei dn.

(Ermittelt werden diese Zahlen durch Zugriff auf die TBL-Datei, nicht auf die Datendatei.)

Sonderfälle: In der iV steht "too large" bei einer zu großen nnn, bzw. "no recnr" bei nnn=0 oder kleiner, bzw. "unused" bei unbesetzter Satznummer.

Verwendung z.B. in dem FLEX  ald-chk.flx.

 

get env name    avanti

Die Environment-Variable name wird in die iV kopiert. (Umgekehrt: -->  set env  )

Mit  if no ...  kann man checken, ob sie nicht existierte; die iV ist dann unverändert.

 

get phr name

Die Phrasendatei name wird eingelesen. (Umgekehrt: -->  save phr  )

Die darin enthaltenen Phrasen werden zu den momentan existierenden ergänzt, wobei eine vorhandene durch die in name enthaltene gleichnamige ersetzt wird.

Wenn name fehlt, wird der Inhalt der iV genommen.

 

get pid     avanti

Der "process identifier" (Prozess-Identifikationsnummer) des Programms wird in die iV geschrieben. Es handelt sich um eine eindeutige Nummer bezogen auf alle momentan im System laufenden Prozesse. Man kann sie nutzen, um im Falle mehrerer gleichzeitig laufender a99-Programme das eine vom anderen zu unterscheiden. Genutzt wird der pid auch vom  JanaS-Browser . 

Hinweis: Mit  var ... pid ...  kann man die pid auch in einen cstring einbauen.

 

get view nummer

Aus der momentanen Viewdatei wird die Zeile mit der Nummer nummer geholt.

Mit  if no ... kann man checken, ob die Nummer zu groß war, mit if cancel ..., ob gar keine ViewListe geöffnet ist.

Wenn nummer fehlt, wird der Inhalt der iV genommen, in die man also vorher die Nummer schreiben muß.

Hinweis: Mit  save view nummer   kann man den iV-Inhalt in die ViewListe zurückschreiben.

 

get x

get x+

Spezialfall : Gedacht für Parameterdateien. Aus der geöffneten Datei wird eine Zeile gelesen. An der Stelle, wo der Kommentar beginnt, wird die Zeichenfolge //-- eingefügt. Benutzt wird dies in   hilite.flx , um eine Parameterdatei mit Syntax-Highlighting darzustellen.  

 

Wenn hinter get nur #, adr, env, phr oder view steht, wird jeweils der Inhalt der iV hinzugenommen.

 

nur avanti:                  gleichwertig (auch bei avanti!):

get first      first   Ersten Satz der Erg.Menge laden

get next       next    nächsten ...

get prev       prev    vorigen ...

get last       last    letzten ...

 

In avanti   gibt es noch folgende Besonderheit:

 

get edit ...  und zugleich zum Bearbeiten reservieren (sperren)

                                               (Freigabe erfolgt beim Speichern oder Laden des nächsten Satzes). 

Statt " ... " muß eine der nachfolgend beschriebenen Optionen stehen:

 

get first / last    Ersten / letzten Satz der Ergebnismenge laden

 

get edit first / get edit last              dasselbe, aber den Satz zugleich sperren

 

get next / prev       Nächsten / vorigen Satz der Ergebnismenge laden

                                               ERROR, wenn Ende / Anfang überschritten wird.

get edit next / get edit prev                 Satz zugleich sprerren

 

get edit nummer                        Satz mit der laufenden nummer aus der aktuellen Ergebnismenge laden

 

get edit inummer                      Satz mit der internen nummer aus der Datenbank laden

 

           ERROR wenn nummer<1 oder nummer>N  (N = Größe der Erg.mg.)

 

Dieser Befehl kommt zum Einsatz, wenn man durch andere Aktionen eine Liste von Satznummern hat, die abgearbeitet werden sollen.

 

ERROR, wenn nr zu hoch oder Satz gelöscht 

 

siehe auch:   list internal, list recnum 

 

 

Beispiel 1:

Die FLEX-Datei    file.flx    kann als Muster herangezogen werden, wie eine ASCII-Datei in einer Schleife zeilenweise eingelesen und wieder geschrieben werden kann.

 

Beispiel 2:

Mit     file-zer.flx    wird eine Datei zeilenweise gelesen und die Zeilen je nach dem Anfangsbuchstaben in eigene Dateien geschrieben, d.h. die Datei wird zerlegt in Blöcke mit gleichem Anfangsbuchstaben.

 

Beispiel 3:

Ein kleiner Web-Service soll genutzt werden, und zwar einer, der den Wechselkurs des US-Dollar liefert.

 

Windows:  Wir schreiben einen  usd.flx  und starten ihn mit  X usd     ( Ausprobieren )

var "http://webservices.bermilabs.com/exchange/eur/usd"

get I

if cancel mes "ES GEHT NICHT";end

mes

 

Linux/UNIX:  Wir schreiben einen Job  usd.job  und starten ihn mit der Kommandozeile  acon -jusd

var "http://webservices.bermilabs.com/exchange/eur/usd"

get I

if "ERROR" wri "FEHLER!" n;end

var (b"^J^M^J")

ins $usd

wri $usd

 

Tip: Statt "usd" kann man in der URL auch den Code einer anderen Währung angeben, z.B. "pln", und erhält den Umrechnungsfaktor des Euro zu der betr. Währung. Hier die Liste der verfügbaren Codes:

http://www.bermilabs.com/en/web-services/currency-exchange-rates