open name         avanti

Die Datei name wird zum Lesen geöffnet. Anschließend kann mit  get ... oder   fetch ... daraus gelesen werden. 

name  kann ein normaler Dateiname sein (dabei / statt \ möglich; wenn man \ verwendet, dann verdoppeln!).

name  kann aber auch eine URL der Form  http://... oder ftp://... oder file:///... sein.    Nicht bei avanti.

URL-Dateien kann man mit get lesen, also zeilenweise, aber auch blockweise mit fetch, also z.B. jeweils 1000 Zeichen. Mehr dazu in einem Text über die  aiaqs-Technik  (ab V28.3).

Am Ende des FLEX wird die Datei automatisch geschlossen, wenn man sie nicht vorher mit  close  schließt.

Fehlt name, wird die  iV genommen.

Mit   if yes/no   kann man checken, ob das Öffnen gelungen ist oder nicht.

Bei URLs jedoch liefert der Webserver, so er existiert und erreichbar ist, stets Daten, die dann z.B. die Fehlermeldung 404 enthalten! Ob der Webserver gar nicht existiert, nicht erreichbar ist oder keine Netzverbindung besteht, kann man mit  if cancel ... abfangen. (Siehe auch   get I url  )

Zu einem Zeitpunkt kann stets nur eine Datei zum Lesen und zwei zum Schreiben geöffnet sein (ab V25), siehe Hinweis weiter unten.

Hinweis (auch für avanti): Mit   get I url   kann man eine nicht zu große Internetdatei ohne open ... direkt in die iV holen, mit var ... Fname ... eine Datei in einen  cstring  einbauen.

 

open x name    [zur Realisierung in avanti siehe unten!]

Die Datei name wird zum Schreiben geöffnet. Anschließend kann mit  write ... oder   export ... hineingeschrieben werden. Hierbei kann name keine URL sein, d.h. das Schreiben von Dateien auf Webservern ist nicht möglich.

Fehlt name, wird die  iV genommen.

Mit   if yes/no   kann man checken, ob das Öffnen gelungen ist oder nicht.

Der Befehl ist gleichwertig  mit   export f  name. Wie dort kann man ein + vor den Namen setzen, dann wird die Datei verlängert, nicht überschrieben.

Die Datei name tritt an die Stelle der vorher eingestellten Ausgabedatei (INI-Befehl OutputFile=...  und Sondervariable E,  d.h. var E ).

Mit  close x  kann man wieder die alte Datei zur Ausgabedatei machen. Diese Mechanik macht es sehr einfach, zwischendurch mal etwas in eine Datei zu schreiben, ohne die eigentliche Download-Datei damit zu beeinträchtigen.

 

Übrigens: Die Ausgabedatei ist immer nur unmittelbar während eines Schreibvorgangs wirklich geöffnet. Zu allen anderen Zeiten kann man also ohne weiteres von außen die Datei lesen, kopieren, ändern oder sogar löschen. Sie wird dann beim nächsten Schreibvorgang neu angelegt.

 

pipe programmname

Hiermit wird keine Datei geöffnet, sondern ein Programm gestartet. Mit dem Befehl  get  bekommt man danach zeilenweise das, was das gestartete Programm über seine Standard-Ausgabe ausgibt.

Mit  if cancel  gleich nach dem  pipe  oder nach einem  get  prüft man, ob das Programm sich beendet hat und somit nichts mehr ausgeben wird.

 

 

open d  (ab V28)

Die Datenbank wird wieder geöffnet, nachdem man sie mit   close d  geschlossen hatte. So etwas kann nötig sein, um Vorgänge wie eine Index-Erneuerung auszuführen, bei denen die Dateien alle geschlossen sein müssen.

 

Hinweis: Ab V25 kann man zwei Ausgabedateien gleichzeitig haben. Zwischen beiden schaltet man um mit dem Befehl  switch download .

 

avanti

Standardmäßig schreibt avanti mit write und  export (früher download) in die Standardausgabe. Eine Ausgabedatei kann man so anlegen und beschreiben:

 

switch dow 2

export file dateiname       // hier geht auch  +dateiname

write ...

(export param dateiname

 export ... )

switch dow 1

Die Datei entsteht dann auf dem Arbeitsverzeichnis von avanti, falls kein Pfad im Dateinamen angegeben ist. Ein Befehl zum Schließen ist unnötig, die Datei wird am Ende des Jobs automatisch geschlossen, auch bei erneutem Befehl export file ... im selben Job.

 

Beispiel 1:

Der Datensatz soll mit einer Überschrift in eine Datei XYZ geschrieben werden, aber soll keine Auswirkung auf die eingestellte Exportdatei haben:

 

open x XYZ

wri "Überschrift... " n

export

close x

 

Beispiel 2:

Eine Internet-Datei öffnen.  (Nicht bei avanti)

x open http://webservices.bermilabs.com/exchange/eur/usd\if cancel mes Geht nicht;end\get\mes

Es erscheint eine Message-Box mit dem aktuellen Dollarkurs. Gelesen wird dieser aus der "Datei", die hinter der angegebenen URL steckt - in Wirklichkeit ein Web-Service, aber auch solche sehen aus der Sicht von a99 wie eine Datei aus und lassen sich wie eine solche lesen!