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 
Другие вопросы по тегам