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.