Trick 46: Alle
#nn-Felder durcharbeiten
             Ohne zu wissen, wiviele und welche es gibt
Aufgabe: Alle Felder, deren Nummer
mit #nn anfängt, durcharbeiten.
Warum? Manchmal weiß man z.B.
nicht, in welchem von evtl. mehreren
Mehrfachfeldern eine bestimmte
Angabe steht. Oder man will die Inhalte
aller dieser Felder in eine Datei
schreiben.
Lösung 1
======== 
Man nimmt sich hintereinander alle
Felder vor und prüft dann nur
diejenigen, deren Nummer mit nn
anfängt.
Dazu dienlich sind die internen
Sondervariablen k_1 und k_2:
k_1 = Erstes Datenfeld des
aktuellen Satzes, incl. der Feldnummer
k_2 = nächstes Feld, "" wenn
es keins mehr gibt
Damit sieht die Lösung so aus:
  Gewünschte Nummer in
#uxx vorgeben
#uxx 30
perf abarbeitung
jump rest
  Hierher wird aus dem UP
gesprungen:
:aktion
  Feldinhalt jetzt in iV,
incl. Feldnummer!
  ... irgendwelche Aktionen
mit dem Inhalt
  zurück in das UP!
jump weiter
:rest
  ...
end
  Unterprog., um das man
sich nicht kuemmern muss.
  Es funktioniert mit jeder
Konfiguration.
:abarbeitung
var 34 #uxx 'zz' 34
ins #uxy
var 34 #uxx 34
ins #uxx
var k_1
:loop
if >#uxx if <#uxy jump
aktion
:weiter
var k_2
if not "" jump loop
return
Im Abschnitt :aktion  hat man
den gesamten Feldinhalt incl. der
Nummer in der iV. Daher kann man
z.B. schreiben
ins #uxz
  .. irgendwelche
Aenderungen an #uxz
var "#" #uxz
ins
jump weiter
Dadurch kann man also gezielt die
einzelnen Feldinhalte auch
modifizieren.
Und noch ein Vorteil:
Statt  #uxx 30  kann man auch schreiben  #uxx 3
Dann werden alle Felder bearbeitet,
die mit #3 beginnen!!!
 
===========================================================
Lösung 2  (H. Allers)
========
Man bastelt alle in Frage kommenden
Feldnummern nacheinander
in der iV zusammen und
läßt sich mit erneutem "var" den Inhalt
geben (wenn es denn einen gibt).
Das ist besonders trick- und
damit lehrreich, aber ansonsten hat
es keine Vorteile gegenüber
Lösung 1, auch schneller ist
es wohl kaum:
#uxx "#30" 
Z=31
:anfang
  Es beginnt mit 32 = Spatium
Z+1
var Z
  problematische
Folgezeichen uebergehen: $ : ( .
if =36 jump anfang
if =58 jump anfang
if =40 jump anfang
if =46 jump anfang
if >122 end
var #uxx ' ' Z
  in iV steht jetzt
z.B.  #30 65
var
  und jetzt: #30A
ins #ux2
var   // #ux2 ist
Kategoriebezeichnung
  und jetzt der Inhalt von
#30A - das ist der Haupttrick
if not "" perf aktion
jump anfang
  Was will man machen mit
dem Inhalt?
:aktion
ins #ux1   // #ux1 ist
aktueller Kategorieninhalt
var "Mit >>" #ux2 #ux1
"<< machen, was man will"
 mes
 return