вопрос не по этой тепе но что бы не плодить темы возможно похожие.
так вот: Возможно ли передать переменную в подпрограмму через другую подпрограмму
подробнее: есть у меня например program1 она в определенный момент вызывает файл program2 и процессе выполнения Программы№2 вызывается program3 которая использует переменную которая задана еще в Программе№1. вот можно такой бред реализовать?все 3 программы в разных файлах
я думал хватит на это такой конструкции:
#name "program1"
#include "program2.cms"
DEFINE($x ,0)
DEFINE($y , 0)
print($x,$y)
program2($x,$y)
halt
SUB(program2)
#include "program3.cms"
$y=$y+1
print($x,$y)
program3($x,$y)
END_SUB
SUB(program3)
$x=$x+1
print($x,$y)
END_SUB
но тест выдал очень интересный результат:
[spoiler]
логи:
14:32:27 01
14:32:27 11
14:32:27 12
14:32:27 22
14:32:27 32
14:32:27 42
14:32:27 52
14:32:27 62
14:32:27 63
14:32:27 73
14:32:27 73
14:32:27 83
14:32:27 93
14:32:27 103
14:32:27 113
14:32:27 123
14:32:27 123
14:32:27 123
14:32:27 123
14:32:27 123
[/spoiler]
я надеялся что он выведет значения 00 потом вызовет программу номер 2 выведет значение 01 далее вызовет 3 программу выведет значения 11 ( или может значения 10 хотел за одно проверить изменения передадутся или что в DEFINE написал то и будет) и тут должен был найти строку halt в первой программе но получил я то что получил.
а что бы было не скучно он мне выдает :
ошибка при вызове функции POP()
Прерывать выполнение сценария?
а за тем
ошибка при интерпретации строки JMP(POP())
Прерывать выполнение сценария?
собственно это окончательно подорвало мое понимание
кто нибудь подскажите
1)что за бред у меня вышел? откуда рекурсия если end_sub прописывал
2) как надо грамотно передавать переменные через программу из первой в третью
3) эта идея жизнеспособна или так не делают?
PS.подумал почитал исправил объявление имени подпрограммы на вид
SUB(program2,$x,$y)
ошибки теже, только логов не выдает вообще
начинаю подозревать что так можно передавать только параметры а вот переменные не получается почему то... нужен умный совет
PPS программа с одной подпрограммой вроде работают корректно
#name "program1"
#include "program2.cms"
DEFINE($x ,0)
DEFINE($y , 0)
print($x,$y)
program2($x,$y)
halt
SUB(program2)
#include "program3.cms"
$y=$y+1
print($x,$y)
program3($x,$y)
END_SUB