Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Синтаксис оператора perform




Определение и вызов внутренних подпрограмм

Подпрограммы

Подпрограмма (subroutine) – раздел многократного использования кода. Чтобы определить подпрограмму, используется оператор form, чтобы указать начало подпрограммы, и используется endform, чтобы указать конец подпрограммы. Название подпрограммы не может превышать 30 символов.

Чтобы назвать подпрограмму, используется оператор perform.

Пример определения и вызова подпрограммы.

report ztx1706.

 

write: / 'Before call 1'.

perform sub1.

write: / 'Before call 2'.

perform sub1.

write: / 'After calls'.

 

form sub1.

write: / 'Inside sub1'.

endform.

Before call 1

Inside sub1

Before call 2

Inside sub1

After calls

Есть два типа подпрограмм:

  • Internal subroutines Внутренние подпрограммы
  • External subroutines Внешние подпрограммы

Предыдущий пример – пример вызова внутренней подпрограммы.

Определения подпрограммы обычно помещаются в конце программы, после всех событий. Оператор form определяет конец предыдущего события, и начало подпрограммы. Подпрограммы не могут быть вложены в события. Синтаксис оператора form

form s [tables t1 t2... ]

[using u1 value(u2)... ]

[changing c1 value(c2)... ].

---

endform.

  • s – название подпрограммы.
  • t1, t2, u1, u2, c1, и c2 являются параметрами.
  • tables определяют внутренние таблицы, которые должны быть переданы как параметры.
  • value не может использоваться после tables.
  • value может быть применено к любым переменным, которые передают через using или changing.
  • --- представляет любое число строк программы.

Особенности оператора:

  • Все дополнения являются дополнительными.
  • Порядок параметров: tables, using, changing.
  • Каждое дополнение может определено только один раз.
  • Не используйте запятые, чтобы отделить параметры.
  • tables используется для передачи внутренних таблиц – не таблицы базы данных.
  • Подпрограмма может вызывать другую подпрограмму.
  • Рекурсия поддержана.
  • Определения подпрограммы не могут быть вложены. (Вы не можете определить подпрограмму в пределах другой подпрограммы).

perform a) s

b) n of s1 s2 s3...

[tables t1 t2... ]

[using u1 u2... ]

[changing c1 c2... ].

  • s, s1, s2, s3, являются названиями подпрограммы.
  • n – числовая переменная.
  • a) и b) являются взаимоисключающими.
  • tables, using и changing могут появиться или с a) или с b).
  • value() не может использоваться с perform.

Используя синтаксис b) Вы может определить, какая из списка подпрограмм должна быть выполнена. Энная подпрограмма в списке названий подпрограммы выполнена. Например, если n будет 2, то вторая подпрограмма в списке будет выполнена.

report ztx1707.

do 3 times.

perform sy-index of s1 s2 s3.

enddo.

 

form s1.

write: / 'Hi from s1'.

endform.

 

form s2.

write: / 'Hi from s2'.

endform.

 

form s3.

write: / 'Hi from s3'.

endform.

Hi from s1

Hi from s2

Hi from s3

Выход из подпрограммы. Для выхода из подпрограммы используются следующие операторы:

  • exit
  • check
  • stop

В подпрограммах

  • check и exit немедленно выходят из подпрограммы и переход осуществляется на следующий после perform оператор.
  • stop немедленно завершает подпрограмму, и переходит непосредственно в событие end-of-selection.

check, exit, и stop не устанавливает значение sy-subrc.

report ztx1708.

data f1 value 'X'.

 

clear sy-subrc.

perform s1.

write: / 'sy-subrc =', sy-subrc.

perform s2.

write: / 'sy-subrc =', sy-subrc.

perform s3.

write: / 'sy-subrc =', sy-subrc.

perform s4.

write: / 'sy-subrc =', sy-subrc.

 

end-of-selection.

write: 'Stopped, sy-subrc =', sy-subrc.

if sy-subrc = 7.

stop.

endif.

write: / 'After Stop'.

 

form s1.

do 4 times.

exit.

enddo.

write / 'In s1'.

exit.

write / 'After Exit'.

endform.

 

form s2.

do 4 times.

check f1 = 'Y'.

write / sy-index.

enddo.

write / 'In s2'.

check f1 = 'Y'.

write / 'After Check'.

endform.

 

form s3.

do 4 times.

sy-subrc = 7.

stop.

write / sy-index.

enddo.

endform.

 

form s4.

write: / 'In s4'.

endform.

In s1

sy-subrc = 0

In s2

sy-subrc = 0

 

Stopped, sy-subrc = 7




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 433; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.039 сек.