`Register`
fetch number oder   fetch +number 
Aus der mit `open` geöffneten Datei werden number  Bytes in die interne Variable gelesen bzw. an diese angehängt. Dies funktioniert ab V28.3 auch mit Internetdateien, die weiteren Befehlsvarianten jedoch nicht. (Demo dazu:  `fetchfil.flx` ) 
Obergrenze für  number ist 255999.
Dabei werden die Codes 0,1 ... 31  durch ^@, ^A ... ^_ ersetzt, also durch je zwei Zeichen!
Das Zeichen ^ selbst wird durch  ^~ ersetzt. 
Fehlt number, wird 100 angenommen. 
Mit `if cancel` ...  prüft man, ob keine Daten mehr vorgefunden wurden. 
Mit  if "" ...  kann man dasselbe auch feststellen. 
Hinweis: Auch eine ganze Datei in die iV einlesen kann man:  var Ffilename. Dabei bleiben aber die Steuerzeichen unverändert erhalten, d.h. Code 10 bleibt 10 usw.
Tip: Mit dem Befehl  spaces  kann man anschließend erreichen, daß alle Mehrfach-Spatien und sonstige aufeinanderfolgende Whitespace-Zeichen (9, 10, 13) durch ein einzelnes Spatium ersetzt werden.

fetch ^code oder   fetch +^code
Diese Variante bewirkt, daß alles bis zum nächsten Code code (dezimal, 1...255) inclusive gelesen und in der iV abgelegt wird. Also auch der Code selbst am Ende bleibt erhalten, allerdings z.B. ^M wenn es sich um den Code 13 handelt, oder ^I wenn man ^9 geschrieben hat. 
code kann auch ein Buchstabe sein: ^A bedeutet dann z.B. den Code 1.  
Für den Wert 0 ist ^@ zu setzen, denn ^0 geht nicht.

Ein vorgesetztes + bewirkt in beiden Fällen, daß die gelesenen Zeichen an den in der  iV schon vorhandenen Text angehängt werden. 

Mit `if no` ... kann man prüfen, ob überhaupt gelesen werden konnte, 
mit `if cancel` ...  ob das Ende der Datei erreicht wurde. 
Soll genau eine Zeile gelesen werden (Begrenzungscodes 13 10):  --> `get`

fetch T^code  oder   fetch A^code 
Es wird nur Text (nicht die Codes 13 10) bzw. nur allegro-Text (ohne die Codes <11 und 13, 26 und 27) gelesen. Die Code-Umwandlung in ^X findet dann bei Codes unterhalb 32 nicht statt. Hinter dem T bzw. A kann auch noch + stehen.

Sonderfälle: 

fetch b  oder   fetch c   acon 
Es wird nur ein Byte gelesen und als Zahlenwert (0....255) in die iV geschrieben. 
Bei  b  geht der Lesezeiger auf das nächste Byte über, bei c bleibt er stehen. 
Letzteres kann dazu dienen, vor dem nächsten 'fetch' oder 'get' schon mal zu prüfen, mit welchem Zeichen die nächste Zeile beginnt. 
Wenn nichts (mehr) gelesen werden kann, kommt -1 heraus, d.h. man prüft diesen Fall mit 
if ="-1" ....

fetch b2 / b3 / b4   acon 
Es werden 2 bzw. 3 bzw. 4 Bytes gelesen und als hexadezimale Zahl interpretiert. Das Ergebnis steht dann als Dezimalzahl in der iV. 
Nützlich ist dies für interne, binär codierte Zahlen wie z.B. Satznummern, etwa die Satznummer eines Datensatzes in einer Datenbankdatei (Typ .ALD). 

fetch rec  acon 
Einen Datensatz einlesen von der aktuellen Position der geöffneten Datei des Typs .ALG , .ALD, .LOG oder .ADT. Zu diesem Zeitpunkt muß der Lesezeiger auf dem ersten Byte eines Satzes stehen, d.h. normalerweise auf der ersten 0 der Kategorienummer 00. 
Achtung: Der Datensatz steht dann aber erst in der iV! Mit  insert  kopiert man ihn in den Arbeitsspeicher, meistens wird man aber vorher noch mit  new 0  dort einen neuen Satz anlegen, sonst mischt sich der iV-Inhalt mit dem aktuellen Satz. 
Wahlweise kann man auch den iV-Inhalt mit  
insert $xyz
in eine Variable   $xyz .kopieren. Genau das nutzt  update.job  aus. 
ACHTUNG: Mit   if "-1" ...   kann man prüfen, ob nichts mehr gelesen werden konnte (Dateiende). 
   (Nicht mit  if cancel ... ). 
Für a99/alcarta gilt: (NICHT für acon) 
Wenn es eine Datenbankdatei (.ALD) ist, zuerst fet b und fet b4 geben. Dann steht der Satzstatus (1,8 oder 9) in der iV bzw. die interne Satznummer; erst dann  fetch rec. (Bei acon kann man das auch machen, muß man aber nicht.) 
Beispiel: Ausgenutzt wird das alles in  ftr.flx, dem FLEX für die Volltextsuche. 
Nur für acon:  	Nach dem Einlesen steht dann in der Sondervariablen  iR  die interne Satznummer des Satzes. 
			Gelöschte Sätze werden nicht übergangen, aber beginnen dann mit    #u1    @@@@@ . 
                            	Mit   if Del   kann man sofort danach feststellen, ob es ein gelöschter Satz war.  
	
Sonderfall : Die Datei kann auch eine LOG-Datei sein.  
War es ein gelöschter Satz, beginnt er mit #u1 @@@@@, 
war es ein neuer Satz, beginnt er mit #u1 #####N, und N ist die Nummer der Datendatei, in die er zu speichern ist. Ausgenutzt wird alles dies im Job  `update.job`, mit dem das Programm acon Dateien die Arbeit des früheren Programms UPDATE.EXE übernehmen kann. 

Hinweis: In acon kann man einen Satz auch mit  `read`  einlesen, den ersten der Datei mit  read filename, womit die Datei zugleich geöffnet wird. Dabei hat dann aber die Tilde nicht die Funktion, eine neue Wiederholungskategorie zu erzeugen, das geht nur mit  fetch rec. und danach  insert. 

fetch eN     (ab V27.2)     acon   (ab V32.1)
Es wird eingelesen, bis die Zeichenfolge gefunden wird, die momentan in der iV steht, und zwar die ersten N Zeichen davon. Dadurch kann man vorher eine beliebige Zeichenkombination in die iV schreiben, nach der dann beim Einlesen gesucht wird. (Auch der Code 0 kann dabei vorkommen!) Der eingelesene Text, der danach in der iV steht, endet dann genau vor dieser Zeichenfolge, d.h. diese gehört nicht mehr dazu. 
Ohne N wird der in der iV stehende Text in voller Länge genommen, kann dann aber keinen Code 0 enthalten. Aber: 
Sonderfall: Soll bis zum nächsten Code 0 gelesen werden: 
var 0 
fet e1
Wichtig ist dieser Befehl beim Einlesen von Fremddaten zwecks Konvertierung, bes. im Fall XML. 
Mit  if can ... prüft man, ob die Zeichenfolge nicht gefunden wurde, 
und mit if "" ... , ob keine Daten mehr vorhanden waren, d.h. das Ende erreicht ist. 
Tip: Mit dem Befehl  spaces  kann man anschließend erreichen, daß alle Mehrfach-Spatien und sonstige aufeinanderfolgende Whitespace-Zeichen durch ein einzelnes Spatium ersetzt werden.

fetch p      acon   (ab V32.8)
Die Position des Lesezeigers in der Datei wird festgestellt. Diese ist 0, wenn noch nichts gelesen wurde. 
Das Ergebnis, eine Zahl, steht dann in der iV.

fetch m      acon   (ab V32.8)
Der Lesezeiger in der Datei wird auf die Position gesetzt, die in der iV angegeben ist. Das nächste fetch oder get wird von dieser Stelle aus lesen. Um den Zeiger wieder an den Anfang der Datei zu setzen, muß man schreiben: 
var "0" 
fetch m
Mit   fet c  und dann  if ='-1' ...  kann man checken, ob es  nicht geklappt hat. 

Mit  if no ...  kann man checken, ob diese Sonderfälle nicht funktioniert haben, weil die Datei nicht geöffnet ist.

Mit `write` bzw. `write ^`  kann man die Daten aus der iV in die Export-Ausgabedatei schreiben lassen.  

Beispiel 1:
Eine Datei, Typ .ADT oder .ALG, ist satzweise einzulesen und mit den Sätzen irgendetwas anzustellen: 

open datafile	// QuellDatei wird geöffnet, noch nichts gelesen 
fetch rec 
:loop 
...		Verarbeitung  
fetch rec	nächsten Satz einlesen 
if not cancel jump loop	 wenn noch einer da war, Sprung nach :loop 
...		 weitere Befehle oder Ende des Auftrags

Beispiel 2:
Die FLEX-Datei  `bfile.flx`  kann als Muster herangezogen werden, wie eine binäre Datei in einer Schleife stückweise eingelesen und wieder geschrieben werden kann. Mit binären Dateien etwas wirklich Sinnvolles anzustellen ist allerdings eine heikle Aufgabe. Mehr dazu, besonders zum Lesen und Durchsuchen Byte für Byte, steht in dem Text "Trick 58".

?Register=h xa 
?open=h xopen 
?if no=h xif 
?if cancel=h xif 
?get=h xget 
?write=h xwrite 
?write ^=h xwrite 
?bfile.flx=x var P "flex" 92 "bfile.flx"\help 
?fetchfil.flx=h fetchfil.flx 
?read=h xread 
?update.job=h update.job