Register 

                Achtung: In  acon  hat dieser Befehl bis auf Ausnahmen eine  andere Funktionsweise .

 

get #xyz    Bei acon nicht

get [iV]    acon:  nur  get

get +[iV]   acon:  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  acon

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, eine zweite Kopie kommt in die iV2. Die letztere kann man später mit  var $  wieder in die normale iV holen, d.h. man muß keine benannte $-Variable dazu benutzen (diese sind auf  64K  begrenzt! Die Variable $ kann  4MB fassen).

Die URL kann eine dynamische sein, d.h. z.B. eine mit  .php?...  oder  .pl?...  o.a.

Mit if no ... kann man testen, ob die Datei zu lang war, um in die iV zu passen, d.h. länger als 4MB 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.

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

Ausgenutzt wird dieser Befehl z.B. im FLEX  getfile.flx,  mit dem man sich vom Braunschweiger Server neue Dateiversionen holen kann. Beispiel:  X getfile d-wrtf.apr .

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    acon

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     acon

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 q num

Im   Offline-Speicher   (Alt+q) auf den Satz mit der laufenden Nummer  num  positionieren und diesen anzeigen.

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

Man erhält den aktuellen Zustand (also grün oder gelb, je nachdem), als ob man den Satz mittels Alt+q manuell aufgesucht hätte.

Mit  if no ...  checkt man, ob das nicht geklappt hat (num zu klein oder zu groß)

Hinweise:

A.  Mit  first off / last off  kann man auf den ersten bzw. letzten Offline-Satz positionieren.

B.  Von Hand kann man zum n-ten Offline-Satz gehen, indem man in der Suchbefehlszeile  %n  gibt.

C.  Zum Umgang mit dem Offline-Speicher:

1. Die laufende Nummer des aktuellen Satzes in der Offline-Datei erhält man mit  var oq 

    (Die Nummer steht dann in der iV)

2. Um den Satz mit der laufenden Nummer  num  aus der Offline-Datei zu laden:  get q num

3. Um sich die lfd.Nr. des aktuellen Satzes in der Offline-Datei zu merken:  var oq\ins $nu

4. Um den in $nu gemerkten Satz später wieder zu laden:  var $nu\get q

 

get view num

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

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

Wenn  num  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 acon:                    gleichwertig (auch bei acon!):

get first      first   Ersten Satz der Erg.Menge laden

get next       next    nächsten ...

get prev       prev    vorigen ...

get last       last    letzten ...

 

Ebenfalls nur in acon   gibt es noch folgende wichtige Besonderheit, z.B. für den Fall daß man Ergebnismengen zwecks Veränderungen durcharbeiten will:

 

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

                                               (edit  nicht nötig, wenn   set getlock on   gesetzt wurde)

 

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.menge)

 

Die Option  edit  bewirkt zugleich, daß direkt nach dem Sperren intern die aktuellen Schlüssel des Satzes berechnet werden. Kommt später ein  put, ist das Programm dann in der Lage, korrekt die nicht mehr gültigen Schlüssel zu erkennen und zu löschen. Automatisch erfolgt in diesen Fällen aber auch dann die Freigabe, wenn ein Satz nicht gespeichert wird! Zurückgreifen kann man auch auf die neue Variable sL  (V32.4), mit der rman Aufschluß über das Ge- oder Mißlingen des Sperrens erhält.

 

ERROR, wenn nr zu hoch oder Satz gelöscht, d.h. man kann mit  if no ...  den Mißerfolg erkennen und dann bei Bedarf mit  var sL  näheres dazu erfahren (s. Befehl  set lock )

 

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  doll.flx  und starten ihn mit  X doll     (  Ausprobieren   )

 

get Ihttp://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml

  USD-Kurs herausziehen (entsprechend geht das mit anderen Waehrungen)

var (b"currency='USD' rate='" e"'")

ins $d

eval 1 / $d

ins $e

var "1 USD = " $e " EUR" n "1 EUR = " $d " USD"

mes

 

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

get Ihttp://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml

//  USD-Kurs herausziehen (entsprechend geht das mit anderen Waehrungen)

var (b"currency='USD' rate='" e"'")

ins $d

eval 1 / $d

ins $e

wri "1 USD = " $e " EUR" n "1 EUR = " $d " 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.

Alle bedeutenden Währungen sind abrufbar.