Bekannterweise gibt es zwischen APL2 für den Mainframe und Workstation APL2 einige Unterschiede. Es sind nicht viele, aber bei größeren Anwendungen können sie die direkte Ausführbarkeit nach einer Portierung auf den PC ernsthaft behindern.
Diese dokumentierten Abweichungen betreffen im Wesentlichen die Sprache, wie sie in der APL2 Language Reference beschrieben ist. Schnittstellen wohin auch immer und sonstige APL2-Vorrichtungen unterliegen von vornherein keinem Kompatibilitätszwang.
Dazu gehören offensichtlich auch die "Supplied Routines", mitgelieferte assoziierbare Funktionen. Selbst Namensgleichheit bedeutet nicht automatisch Gleichheit in der Funktionsweise. Recht drastisch macht das CTN deutlich:
CTN steht imFalles des Mainframe APL2 für "Character to Number" und tut eigentlich genau dies - konvertiert in einer Zeichenkette gültig dargestellte Zahlen in einen numerischen Vektor.
Gemäß dem Workstation APL2 Use's Guide steht dort CTN für "Character to Numeric". Der Unterschied ist klein, aber fein, genauso wie der Unterschied in der Anforderung an das rechte Argument, der Zeichenkette mit den Zahlendarstellungen.
Für den Mainframe wird in "APL2 Programming: Using the Supplied Routines" vom rechten Argument "Only numeric formats produced by monadic ⍕ are acceptable" gefordert.
Für das Workstation CTN heißt es dagegen im User's Guide: "Only numeric formats considered valid by the C strtod subroutine are accepted: [ +|- ] [ digits ] [ . ] digits [ e|E [ +|- ] digits ]"
C strtod versus APL ⍕, das kann ja nicht des Gleiche sein, da fliegen einem sofort die negativen Zahlen um die Ohren. Hier erwartet also Mainframe CTN im rechten Argument das hochgestellte Minus, Workstation CTN dagegen das normale Minuszeichen. Das führt für fast die Hälfte aller möglichen Zahlen zu unterschiedlichen Ergebnissen.
Zum Glück gibt es seit Ende letzten Jahres REPLACEX (eine andere "Supplied Routine") auf dem Mainframe wie auf der Workstation. Damit lassen sich schnell die Minuszeichen für das CTN-Argument korrigieren.
REPLACEX ist übrigens auf beiden APL2-Plattformen kompatibel, wie alle neueren "Supplied Routines".