Zitat Zitat von Kurmas Zeschlon Beitrag anzeigen
Code:
     
     P fURLEscape      B                    EXPORT
     D fURLEscape      PI              A    LEN(4000000) VARYING
     D  Text                           A    LEN(4000000) CONST VARYING
Es scheint Probleme zu geben, wenn ich viele solcher Funktionen in einem Programm benutze.
... was für Probleme? alles was lokal definiert ist, ist automatic storage, wird also zur Laufzeit für die Lebensdauer der Procedure allociert und wieder freigegeben. Addieren tut sich das allenfalls, wenn das geschachtelt ist. Die %bifs werden zur Compiletime aufgelöst, da kann man an der Länge noch fummeln, das geht mit eigenen Funktionen, die erst zur Bindezeit aufgelöst werden wohl nicht. Ein wenig simulieren könnte man das mit call by reference und Pointer Rückgabe, halte ich aber von der Lesbarkeit und Robustheit für Contraproduktiv.

D*B

@Baldur: das mit dem CONST scheint mir nicht so! CONST ist eigentlich nur hopefully CONST und wird zur Laufzeit nicht (in Worten: nicht!) sichergestellt.