Die meisten Abweichungen zwischen APL2 Versionen für den Mainframe und für Workstations führen bei Ausführung auf einer Workstation umgehend zu einem Fehler. Bei selektiven Zuweisungen wäre das z.B. ein SYNTAX ERROR. So ärgerlich das auch sein mag - vor allem, wenn sie zu Hunderten auftauchen - man kann die Inkompatibilität stante pede beheben. Die Diagnose liegt auf Hand, mit der Behandlung kann sofort begonnen werden.
Leider ist dies nicht immer der Fall. Die fehlende Füllfunktion für den Each-Operator ("No fill function is implemented for the Each operator") muss nicht zum
sofortigen Abbruch der betroffenen Anweisung führen. Die Auswirkungen der Inkompatibilität können auch erst viel später in den unendlichen Tiefen einer komplexen Anwendung auftreten.
So geschehen mit
⍕¨NUM_ARRAY
Wie häufig ist das rechte Argument von Format hier numerisch, im vorliegenden Fall allerdings auch leer. Das Ergebnis ist natürlich (wegen "Each") wiederum eine leere Struktur, aber leider eine numerische und keine alphanumerische, wie vernünftigerweise zu erwarten wäre - und wie es APL2 Mainframe auch vorsieht.
Das fällt möglicherweise nicht sofort auf. Entnehme ich diesem Leervektor per "Take" einige der nicht vorhandenen Elemente erhalte ich einen Vektor aus (numerischen) Nullen - als Prototypen des fälschlicherweise numerischen Leervektors. Der Erschaffer der betrachteten Anwendung erwartet hier einen Vektor aus Leerstellen - den Prototypen eines alphanumerischen Leervektors. Absolut berechtig, denn das Ergebnis allen Formatierens in APL ist stets etwas Alphanumerisches.
Kurz bevor das alles an die Benutzeroberfläche gebracht wird, wird vorsichtshalber geprüft, ob wirklich nur Zeichen für die Bildschirmmaske vorgesehen sind. Und endlich hier läßt sich das schlampige Verhalten beim Formatieren des (numerischen) Leervektors nicht mehr verheimlichen. Doch die Ursache für die Fehlermeldung ist bereits weit hinter uns, und der Weg dorthin war lang.
Zur Behebung der hier beschriebenen Inkompatibilität kann natürlich der in "Tückisch - Epilog" beschriebene Trick verwendet werden.