Clarion 9.1 - использовать переменную для имени рутины
Мне нужно передать имя подпрограммы Clarion переменной и запустить ее.
Например:
! ************************
RoutineName = 'CalculateSomething'
DO RoutineName
! ************************
Он не работает в этом формате, поэтому я также пробовал другие символы (скобки, цитаты и т. Д.) До и после переменной. Неудачно.
Обратите внимание, что подпрограмма "CalculateSomething" существует и отлично работает с базовой командой:
! ************************
DO CalculateSomething
! ************************
2 ответа
Как насчет использования оператора case для этого?
RoutineName='CalculateSomething'
CASE RoutineName
OF 'CalculateSomething'
DO CalculateSomethingRoutine
OF 'SomethingElse'
DO SomethingElseRoutine
ELSE
Stop('Unknown routine named: ' & RoutineName)
END
Я думаю, что нет такого варианта на языке программирования Clarion.
Единственный способ, которым я предлагаю CASE утверждение, вот так:
RoutineName='CalculateSomething'
CASE UPPER(RoutineName)
OF 'CALCULATESOMETHING'
DO CalculateSomething
OF 'CALCULATESOMETHINGELSE'
DO CalculateSomethingElse
OF 'CALCULATENOTHING'
DO CalculateNothing
END