0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Max286

  • ***
  • 145
  • Репутация: +13/-0
  • Пол: Мужской
Предложение RETURN без GOSAB в строке...
« : Апреля 15, 2006, 17:34:27 »
Вот в этом скрипте выдает ошибку "Предложение RETURN без GOSAB в строке такой-то"
Да, собственно, вообще не могу организовать подпрограмму из-за этой ошибки...
В чем ошибка?

AC 8.1 2284

if daruch="Да" then

xr=(a-sr)/2              ! Координаты начала рисования ручки
yr=b*kh/100           ! Координаты начала рисования ручки
zr=c+sr*0.07          ! Координаты начала рисования ручки

GOSUB 100: !ручка

endif

del top

100 : !ручка
material m_r
add xr,yr,zr
roty 90
CYLIND sr,dr/2
SPHERE dr/2
add 0,0,sr
SPHERE dr /2
del 2
add d/1.8+dr,0,0
roty 180
CYLIND sr*0.06+dr/2+c/2,dr/2
del 2
add sr-d/1.8-dr,0,0
roty 180
CYLIND sr*0.06+dr/2+c/2,dr/2
RETURN
« Последнее редактирование: Апреля 14, 2008, 23:06:12 от Valery W »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
В ответ на:Предложение RETURN без GOSAB в строке..
« Ответ #1 : Апреля 15, 2006, 19:47:30 »
В конце основного скрипта надо ставить END. Я сказал "основной" потому, что скрипт начинающийся с метки и заканчивающийся на RETURN можно считать как дополнительный или ссылочнный. А по правилам он называется "подпрограмма".
Хорошо, что у тебя GOSUB стоит в команде IF и условие "Да" при проверке скрипта не было верным (не выполнялось), а то бы GDL-интерпретатор заходил по кругу. Пришлось бы жать на три кнопки, что-бы остановить процесс.

if daruch="Да" then
  xr=(a-sr)/2
  yr=b*kh/100
  zr=c+sr*0.07
  GOSUB 100
endif
del top

END

100:
..............
..............
RETURN

P.S. После "GOSUB 100" не надо ставить двоеточие.
« Последнее редактирование: Апреля 14, 2008, 23:09:43 от Valery W »

*

Оффлайн Max286

  • ***
  • 145
  • Репутация: +13/-0
  • Пол: Мужской
В ответ на:Предложение RETURN без GOSAB в строке..
« Ответ #2 : Апреля 16, 2006, 08:24:48 »
Блин, читал же про END, и забыл тут же...
Спасибо Большое, сейчас попробую.

Просто,хочу немного разбираться в GDL.

Правда, меня смущает это:

Хорошо, что у тебя GOSUB стоит в команде IF и условие \"Да\" при проверке скрипта не было верным (не выполнялось), а то бы GDL-интерпретатор заходил по кругу. Пришлось бы жать на три кнопки, что-бы остановить процесс.

Это почему это?

В натуре, SOFTMACHINE Forever!!!

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
В ответ на:Предложение RETURN без GOSAB в строке..
« Ответ #3 : Апреля 16, 2006, 10:08:36 »
Да потому, что в конце дня голова уже не варит. :-\

Не будет ходить по кругу.  :p

Будет один "возврат" после RETURN в место сразу после GOSUB 100. Снова дойдет до RETURN (когда не стоит END) и выдаст сообщение "Предложение RETURN без GOSUB в строке такой-то". При этом два раза будет исполнен скрипт подпрограммы.
« Последнее редактирование: Апреля 14, 2008, 23:11:29 от Valery W »

*

Оффлайн Max286

  • ***
  • 145
  • Репутация: +13/-0
  • Пол: Мужской
В ответ на:Предложение RETURN без GOSAB в строке..
« Ответ #4 : Апреля 16, 2006, 11:48:58 »
Еще раз спасибо за отзывчивость!

Трудно жить без добрых людей.
А с ними-хорошо!

 

Похожие темы

  Тема / Автор