Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SAP(Контрольная работа №4).doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
318.46 Кб
Скачать
  1. Передача значения и результата.

Передача параметров по значению и результату очень похожа на передачу по значению. Как и при передаче по значению и в этом случае выделяется новая область памяти, которая содержит независимую копию переменной. И в этом случае память освобождается при окончании выполнения подпрограммы.

Однако здесь при выполнении оператора endform значение из области локальной памяти копируется назад в оригинальную область памяти. Изменения значения параметра в подпрограмме отражены в оригинале (но только после возвращения из подпрограммы).

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

Копия всегда возвращается, если не выходить из подпрограммы с использованием одного из двух операторов:

  • stop

  • message ennn

Оператор stop вызывает завершение работы подпрограммы и переход непосредственно в событие end-of-selection. Если параметр был передан по значению и результату, то сделанные в нем изменения не сохраняются перед переходом к end-of-selection. В некотором смысле stop ведет себя как обратная перемотка для параметров результата и значения. При использовании в подпрограмме оператору stop обычно предшествует тест на аварийное условие в программе. При возникновении аварийного условия выполняется stop. Это отказ от изменений в переменных значения и результата и переход к end-of-selection, где выполняются процедуры очистки.

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

  1. Передача внутренних таблиц как параметров, синтаксис каждого метода передачи.

Можно использовать один из двух методов передачи внутренней таблицы в подпрограмму:

  • передача таблицы со строкой заголовка

  • передача только тела таблицы

Если у внутренней таблицы есть строка заголовка, то первый метод передает в подпрограмму и строку заголовка, и тело. Второй метод передает в подпрограмму только тело.

Если у внутренней таблицы нет строки заголовка, также можно использовать оба метода. Однако первый метод будет вести себя немного по-другому — он автоматически создает строку заголовка для внутренней таблицы в подпрограмме.

Методы и результаты передачи внутренней таблицы в подпрограмму:

Метод

Если у внутренней таблицы есть строка заголовка

Если у внутренней таблицы нет строки заголовка

Со строкой заголовка

Передаются и строка заголовка, и тело

Создает строку заголовка в подпрограмме

Без строки заголовка

Передается только тело

Передается тело

Синтаксис каждого метода передачи внутренней таблицы в подпрограмму:

Метод

Синтаксис

Способ передачи

Со строкой

заголовка

form s1 tables it

По ссылке

Только тело

form s1 using it[] form s1 changing it[] form s1 using value(it[]) form s1 changing value(it[])

По ссылке

По ссылке

По значению

По значению и результату

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]