Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Синтаксис передачи типизированных параметров.




form s1 using u1 type t value(u2) type t

changing c1 type t value(c2) type t.

где:

s1 — имя подпрограммы

u1, u2, c1 и c2 — формальные параметры

t — или тип данных ABAP/4, или тип данных, определенный пользователем

18. Передача Field Strings.

Можно передать Field String тем же способом, что и любой другой параметр. Однако если нужно обратиться к компонентам Field String в пределах подпрограммы, необходимо сделать структуру Field String известной в подпрограмме, используя одно из двух дополнений оператора form:

§ like x

§ structure x

Здесь x может быть или Field String, или структурой DDIC, или таблицей. Например,

Form s1 using fs1 structure ztxlfa1.

определяет fs1 имеющей структуру таблицы DDIC ztxlfa1.

Способы передачи параметров.

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

§ передача по ссылке

§ передача по значению

§ передача по значению и результату

Дополнения оператора form и получающийся метод передачи параметров:

Дополнение Метод передачи
using v1 Передача по ссылке
changing v1 Передача по ссылке
using value(v1) Передача по значению
changing value(v1) Передача по значению и результату

Передача по значению.

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

Эффект передачи параметров по значению:

Report ztx1806.

2 data: f1 value 'A'.

Perform s1 using f1.

5 write / f1.

Form s1 using value(p1).

8 p1 = 'X'.

9 write / p1.

Endform.

 

X

A

 

§ В строке 2 выделяется память для переменной f1

§ В строке 4 управление передается строке 7

§ В строке 7 определяется передача f1 по значению, поэтому p1 обращается к новому участку памяти, который независим от f1. Значение f1 автоматически копируется в память для p1

§ В строке 8 изменяется содержимое памяти для p1. Значение f1 неизменно

§ В строке 9 выводится значение p1: X

§ В строке 10 управление возвращается к строке 5

§ В строке 5 выводится значение f1: A

 

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

Передача по ссылке.

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

Эффект передачи параметров по ссылке:

Report ztx1804.

2 data f1 value 'A'.

Perform s1 using f1.

5 write / f1.

Form s1 using p1.

8 p1 = 'X'.

Endform.

X

 

§ В строке 2 выделяется память для переменной f1 (для примера предположим, что адрес памяти — 1000)

§ В строке 4 управление передается строке 7

§ В строке 7 определяется передача f1 по ссылке, поэтому p1 — указатель на адрес памяти 1000

§ В строке 8 изменяется содержимое памяти по адресу 1000, вызывая изменение содержимого памяти для f1 на X

§ В строке 9 управление возвращается к строке 5

§ В строке 5 выводится значение f1: X

 

Оба дополнения using f1 и changing f1 при передаче f1 по ссылке идентичны по своей функции. Оба существуют по причине, что при их использовании должным образом «регистрируется», изменит подпрограмма параметр или нет.

Код changing нужно использовать с параметрами, изменяемыми подпрограммой, код using — с параметрами, которые подпрограммой не изменяются.





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


Дата добавления: 2017-01-21; Мы поможем в написании ваших работ!; просмотров: 366 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.