... mag David den P12 nicht? Warum zieht er den anspruchsvollen AP210 einem einfachen "File as Variable" vor?
Wenn ich schon vor einigen Jahren für den P12 die Sicht auf Dateien als Byte-Stream gewünscht habe und dies dann von Nancy auch so vorgesehen wurde, sollte ich dieses Feature zumindest promoten.
Mit dem P12 assoziiert man eine Datei mit einem Variablennamen. Danach kann man auf die Datei fast genauso zugreifen wie auf APL-Variable. Bei der Assoziierung muss man noch eine Struktur für die Variable definieren. Dies kann für flache Dateien eine Vektor von Zeichenvektoren oder Zeichenmatrizen sein.
Das waren die Formate, die für Flatfiles von Anfang an vorgesehen waren. Neu dazugekommen, und das auch nur für die Workstation-Plattformen, sind später Dateien als " Simple Character Vector" - Byte Streams:
"Each byte in the file is a single element in the character vector. Control characters, including line delimiters, are not handled in any special way. They are regular elements of the character vector." (APL2 User's Guide, S.165)
Und so geht's:
RC←('FR' Dateiname 'C1 1 *') 12 ⎕NA 'Aplvar'
Anz_bytes←⍴Aplvar
Len←256⊥⌽⎕AF Aplvar[28+⍳4]
List←Aplvar[32+⍳Len]
Aus einer Datei werden beliebige Bytes gezielt ausgelesen. Das funktioniert auch mit dem Verändern von Bytes, soweit z.B. 'FW' oder 'FRW' statt 'FR' als "Type" angegeben wurde. Mit dem AP210 sieht das folgendermaßen aus:
RC←210 ⎕SVO 2 4←'C210D210'
C210←'IR,',Dateiname,',D'
Anz_bytes←D210
C210←2 28 4
Len← 256⊥⌽⎕AF D210
C210←2 32 Len
List←D210
Weil's langweilig ist, habe ich hier die eigentlich notwendige Bearbeitung von Returncodes verzichtet. Im ersten Beispiel ist das eine zusätzliche Abfrage, im zweiten Beispiel dagegen sind es vier.
Überzeugend?
Warum also mag David den AP210 so sehr?
Am Montag, den 17. April 2006, schrieb ich unter "Warum nur, warum ...": "... mag David den AP12 nicht?" Diese implizite Annahme entbehrt jeder Grundlage. Wahr ist, dass David den P12 hoch schätzt und ihn dem Hilfsprozessor 210 sogar vorzieht.
Aufgenommen: Apr 18, 23:44