О максимальном числе переменных в описании процедуры

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

О максимальном числе переменных в описании процедуры

Сообщение Evgeny2006 »

Кто-нибудь сталкивался с ограничением на количество переменных в описании процедуры?
Восемь переменных у меня проходят. А вот более - проблема.
Кстати столкнулся с таким интересным фактом (версия 6.3.9059). Только сразу предупреждаю,
что отчеты до настоящего времени я не делал, поэтому этот факт может быть интересен только для меня.
А дело вот в чем. Описываю я целую переменную. Поскольку М с последующими индексами уже заняты, то
я называю ее ММ и иду дальше. При компиляции ничего не могу понять с обращением к процедуре.
Выдаются ошибки компиляции. Запустил в версии 7.0.0.5768. Там редактор по интеснее. Вижу, что эта переменная по цвету отличается от остальных (ММ синего цвета). Оказалось, что это зарезервированная переменная для работы с отчетами и окнами. 6 Клава промолчала, но ошибки компиляции. Поскольку сообщение получилось длинным, еще раз повторяю вопрос:"Есть ли ограничения на количество переменных в описании процедуры?"
Evgeny2006
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: О максимальном числе переменных в описании процедуры

Сообщение WadimZapara »

Даже заинтересовал - сколько ж у тебя параметров? :shock:

Я не знаю ограничения на число параметров.
При компиляции может и чуток запутаться...
Предложения:
1) проверь соответствие описания прототипа и самой процедуры
2) если ж точно - нет ошибки в описаниях, но всё равно не хочет - используй параметр-массив

пример взят из клариной документации:

Код: Выделить всё

  PROGRAM
MAP
AddCount PROCEDURE(*LONG[,] Total,*LONG[,] Current) ! Передача двух двумерных массивов типа LONG
END
TotalCount LONG,DIM(10,10)
CurrentCnt LONG,DIM(10,10)
  CODE
  AddCount(TotalCount,CurrentCnt) 	! Обратиться к процедуре, передав массив

!****
AddCount PROCEDURE(*LONG[,] Total,*LONG[,] Current) ! Процедура ожидает передачи двух массивов
   CODE
LOOP I# = 1 TO MAXIMUM(Total,1) 	! Цикл по первому индексу
  LOOP J# = 1 TO MAXIMUM(Total,2) 	! Цикл по второму индексу
    Total[I#,J#] += Current[I#,J#] ! увеличить TotalCount из CurrentCnt
  END
END
CLEAR(Current) !	 Очистить массив CurrentCnt
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: О максимальном числе переменных в описании процедуры

Сообщение Evgeny2006 »

WadimZapara писал(а):Даже заинтересовал - сколько ж у тебя параметров? :shock:

Я не знаю ограничения на число параметров.
При компиляции может и чуток запутаться...
Предложения:
1) проверь соответствие описания прототипа и самой процедуры
2) если ж точно - нет ошибки в описаниях, но всё равно не хочет - используй параметр-массив
Спасибо за ответ. Вопрос принципиальный - почему не идет компиляция, если прога правильная.
Из-за того, что много читаю в памяти отложилось, что где-то видел ограничения на число параметров. Отсюда и вопрос.
Параметров по моим понятиям не много: всего 14. При чем, сначала описывается процедура, затем строка копируется в MAP, а затем вставляется в место вызова и убираются из этой строки ненужное описание. Я не знаю где здесь можно ошибиться.
Передача большого числа параметров через массив - это очень хороший совет.
Дело в том, что в данном случае я не разрабатываю программу, а перевожу ее с фортрана на Клашу.
На первом этапе, по моему мнению, необходимо все сделать один к одному, и только затем вносить необходимые изменения и дополнения. Научен горьким опытом.
Еще раз большое спасибо.
Evgeny2006
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: О максимальном числе переменных в описании процедуры

Сообщение lsgsoftware »

Ты знаешь,на мой личный взгляд в клаше многопараметрические
процедуры работают несколько косовато.Сталкивлся с этим неоднократно.
Как боролся.Да перед вызовом процедуры заносил нужные параметры в глобальные
переменные.Да, муторно конечно, но жить можно и все вроде работало правильно.
Evgeny2006
Бывалый
Сообщения: 61
Зарегистрирован: 23 Июль 2010, 13:44
Откуда: С-Петербург

Re: О максимальном числе переменных в описании процедуры

Сообщение Evgeny2006 »

lsgsoftware писал(а):Ты знаешь,на мой личный взгляд в клаше многопараметрические
процедуры работают несколько косовато.Сталкивлся с этим неоднократно.
Как боролся.Да перед вызовом процедуры заносил нужные параметры в глобальные
переменные.Да, муторно конечно, но жить можно и все вроде работало правильно.
То, что косовато работает, так это практически в каждой системе, начиная с достопочтимого Фортрана.
Поскольку я на Клаше только начинаю работать, то неизбежны проблемы, найти которые иногда не так просто,
особенно когда ищешь не в том месте.
ДП любезно согласился посмотреть текст программы. И мгновенно нашел у меня в тексте программы ошибку:
несоответствие типов. За это ему огромное спасибо. Я также искал эту ошибку, но в другом месте- и естественно ее там не нашел.
Где-то при чтении документации (хотя может быть и не по Клаше) упоминалось об ограничении на число передаваемых параметров. Поэтому и возник сам вопрос.
Ошибка найдена. Ограничений нет. Вопрос закрывается.
Evgeny2006
Ответить