Ваша проблема в том, что вы набрали SORT()
, когда нет аргументов.
Вызов SUB
или FUNCTION
с правильным синтаксисом поначалу может показаться немного странным в QB, а синтаксис для ключевого слова CALL
делает вещи еще более запутанными:
' No arguments means you MUST NOT include the () afterward.
CALL SubNameE
' One non-array argument: n
CALL SubNameX(n)
' Two non-array arguments: a, b
CALL SubNameY(a, b)
' An array argument and a non-array argument: arr(), v
CALL SubNameZ(arr(), v)
Обратите внимание, как массивы передаются процедурам SUB
и FUNCTION
с использованием name()
. Интерпретатор, вероятно, запутывается, когда вы пишете call SORT()
, поскольку SORT()
- это синтаксис для массива, а не вызов SUB
/ FUNCTION
без аргументов.
Вы также можете написать приведенные выше строки кода без ключевого слова CALL
, если это поможет вам:
' No arguments means only the procedure name is listed.
SubNameE
' One non-array argument: n
SubNameX n
' Two non-array arguments: a, b
SubNameY a, b
' An array argument and a non-array argument: arr(), v
SubNameZ arr(), v
Обратите внимание, что для SUB
или FUNCTION
для принятия аргумента массива они должны быть объявлены следующим образом:
SUB SORT (n() AS STRING)
' or if you wanted to use a type suffix
SUB SORT (n$())