Техника программирования с вложением подпрограмм

Применение

Вы также можете комбинировать техники программирования, например, в повторении части программы вызывать другую, управляющую программу или подпрограмму.

Глубина вложения включая определяет, насколько многократно части программы или подпрограммы могут содержать другие подпрограммы или повторы части программы.

Описание функций

Следующие максимальные глубины вложения применяются к управляющим программам:

  • Максимальная кратность вложения для подпрограмм: 19
  • Максимальная глубина вложения для внешней программы: 19, причём CYCL CALL действует, как вызов подпрограммы
  • Вложение повторов частей программы можно выполнять произвольно часто

Пример

Вызов подпрограмм внутри другой подпрограммы

0 BEGIN PGM UPGMS MM

* - ...

11 CALL LBL “UP1“

; Вызов подпрограммы LBL "UP1"

* - ...

21 L Z+100 R0 FMAX M30

; Последний кадр главной программы с M30

22 LBL “UP1“

; Начало подпрограммы UP1

* - ...

31 CALL LBL 2

; Вызов подпрограммы LBL 2

* - ...

41 LBL 0

; Конец подпрограммы "UP1"

42 LBL 2

; Начало подпрограммы LBL 2

* - ...

51 LBL 0

; Конец подпрограммы LBL 2

52 END PGM UPGMS MM

Система ЧПУ отрабатывает управляющую программу следующим образом:

  1. Управляющая программа UPGMS отрабатывается до кадра 11.
  2. Вызывается подпрограмма UP1 и отрабатывается до кадра программы 31.
  3. Вызывается подпрограмма 2 и отрабатывается до кадра 51. Конец подпрограммы 2 и возврат к подпрограмме, из которой она была вызвана.
  4. Подпрограмма UP1 отрабатывается от кадра 32 до кадра 41. Конец подпрограммы UP1 и возврат в управляющую программу UPGMS.
  5. Управляющая программа UPGMS отрабатывается от кадра УП 12 до кадра УП 21. Конец программы с возвратом к кадру программы 1.

Повторение части программы внутри повторения части программы

0 BEGIN PGM REPS MM

* - ...

11 LBL 1

; Начало участка программы 1

* - ...

21 LBL 2

; Начало участка программы 2

* - ...

31 CALL LBL 2 REP 2

; Вызов участка программы 2 и двукратное повторение

* - ...

41 CALL LBL 1 REP 1

; Вызов участка программы 1, включая участок программы 2, и повтор один раз.

* - ...

51 END PGM REPS MM

Система ЧПУ отрабатывает управляющую программу следующим образом:

  1. Управляющая программа REPS отрабатывается до кадра 31.
  2. Часть программы между кадром 31 и 21 повторяется дважды, то есть всего отрабатывается 3 раза.
  3. Управляющая программа REPS отрабатывается от кадра 32 до кадра 41.
  4. Часть программы между кадром 41 и 11 повторяется один раз, то есть всего 2 раза (содержит повторение части программы между кадрами 21 и 31).
  5. Управляющая программа REPS отрабатывается от кадра 42 до кадра 51. Конец программы с возвратом к кадру программы 1.

Вызов подпрограммы внутри повторения части программы

0 BEGIN PGM UPGREP MM

* - ...

11 LBL 1

; Начало участка программы 1

12 CALL LBL 2

; Вызов подпрограммы 2

13 CALL LBL 1 REP 2

; Вызов участка программы 1 и двукратное повторение

* - ...

21 L Z+100 R0 FMAX M30

; Последний кадр главной программы с M30

22 LBL 2

; Начало подпрограммы 2

* - ...

31 LBL 0

; Конец подпрограммы 2

32 END PGM UPGREP MM

Система ЧПУ отрабатывает управляющую программу следующим образом:

  1. Управляющая программа UPGREP отрабатывается до кадра 12.
  2. Вызывается подпрограмма 2 и отрабатывается до кадра УП 31.
  3. Часть программы между кадром 13 и 11 (вкл. подпрограмму 2) повторяется дважды, то есть всего отрабатывается 3 раза.
  4. Управляющая программа UPGREP отрабатывается от кадра 14 до кадра 21. Конец программы с возвратом к кадру программы 1.