Наверное, ни одна мало-мальски серьезная программа не обходится без написания собственных процедур и функций. Давайте рассмотрим, как это делается в FoxPro. Создадим под программку возвращающую завтрашнюю дату относительно передаваемого параметра. Вот текст программы, в которой это реализуется и через функцию, и через процедуру:
? TomorrowFunc(date()) ? TomorrowProc(date()) function TomorrowFunc(dToday) if parameters() = 1 if type('dToday') = 'D' return dToday + 1 else messagebox('Передаваемый параметр должен быть датой') return {} && Пустая дата endif else messagebox('Неверное количество параметров') return {} endif endfunc procedure TomorrowProc parameters dToday if parameters() = 1 if type('dToday') = 'D' return dToday + 1 else messagebox('Передаваемый параметр должен быть датой') return {} && Пустая дата endif else messagebox('Неверное количество параметров') return {} endif endproc
Как видите, результат одинаков. FoxPro, вообще, очень гибок к вещам такого плана. Скажем, если нам нужно использовать одну и туже процедуру в нескольких программах, входящих в один проект, можно просто сделать отдельную программу только с этой процедурой, назвать файл именем процедуры и также вызывать ее.