Register 

open name

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 acon.

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 acon): 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 [ acon ab V35.9; vorher nur mit export f ... ]

Die Datei name wird zum Schreiben bereitgestellt, falls vorhanden wird sie gelöscht.

Fehlt name, wird der Inhalt der  iV   als Dateiname genommen.

Steht ? statt name, wird interaktiv eine Dateiauswahl angeboten.

Anschließend kann mit  write ... oder  export ... hineingeschrieben werden.

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.

Mit  if yes/no  kann man prüfen, ob die Datei angelegt werden kann oder nicht (z.B. wegen falschem Pfad oder ungültigem Namen).

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

Mit close x wird wieder die in der INI-Datei mit OutputFile angegebene Datei zur Ausgabedatei gemacht. Diese Mechanik macht es sehr einfach, zwischendurch mal etwas in eine Datei zu schreiben, ohne die eigentliche Download-Datei damit zu beeinträchtigen.

Hinweis: Der name kann keine URL sein, d.h. das Schreiben von Dateien auf Webservern ist nicht möglich. Ein Dateiname darf keines der folgenden Zeichen enthalten: \ / : * ? " < > |. Relative Pfade (wie z.B. ../myDir/filename.txt) sind hihngegen möglich

 

Ü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 (dann wird sie beim nächsten Schreibvorgang neu angelegt).

 

pipe programmname acon

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.

Wenn programmname fehlt, wird der iV-Inhalt genommen.

Beispiel für UNIX:

pipe pwd

get

ins $pfad

Dann steht in $pfad der aktuelle, komplette Pfadname, wo das Programm arbeitet, valls var P nicht korrekt ist.

 

 

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.

Wahlweise: (und genauso schnell)

var P "a99 " V

STOP

Das ist besser, wenn inzwischen vielleicht eine Änderung an den Indexparametern gemacht wurde.

 

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

 

acon

Standardmäßig schreibt acon 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 acon, 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 acon)

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!