RPTwin является двухпроходным (Two-Pass, другой термин - Look-Ahead) генератором отчетов. Это означает, что отчет выполняется в два этапа. На первом этапе просматриваются все данные и вычисляются значения функций. На втором этапе происходит непосредственно процесс печати или вывода на экран в режиме предварительного просмотра. Поэтому значения агрегативных функций Sum, Avg, Min, Мах, Count будут вычисляться одинаково, независимо от того, расположены ли они в секции Footer или Header.
Полный список функций RPTwin (версии 3.02) приведен в табл. 5.3.
Таблица 5.3. Функции RPTwin
| Функция | Возвращаемое значение | 
| Abs(number) | Абсолютное значение аргумента | 
| Age(date) | Полное число лет от даты аргумента до сегодняшнего числа | 
| Avg(numbcr) | Среднее значение аргумента по строкам (контекстно) | 
| Cos(number) | Косинус аргумента | 
| Count() | Количество строк (контекстно) | 
| DateQ | Дата выполнения отчета | 
| DateTime() | Дата и время выполнения отчета | 
| DayName(date) | Наименование дня даты недели аргумента (по-английски), например "Saturday" | 
| DayNameAbr(date) | Сокращенное наименование дня недели даты аргумента (по-английски), например "Sat" | 
| DayOfMonth(date) | Число - день месяца даты аргумента | 
| DayOfWeek(date) | Число - день недели даты аргумента, например воскресенье - 1, суббота - 7 | 
| DayOfYear(date) | Число - день года | 
| DayBetween(datel, date2) | Число - количество дней между двумя датами аргументов | 
| GroupAvg(number) | Среднее значение аргумента по группе | 
| GroupCount(number) | Количество строк в группе | 
| GroupMax(number) | Максимальное значение аргумента по группе | 
| GroupMin(number) | Минимальное значение аргумента по группе | 
| GroupSum(number) | Сумма аргумента по группе | 
| Hour(time) | Часы (0-23) даты аргумента | 
| If test Then value 1 [Else value2\ | Условный оператор. Test - логический предикат, принимающий значение "Истина" или "Ложь". Если Test = "Истина", выполняется выражение value 1, если "Ложь" - value2 | 
| InitCap(text) | Текст аргумента, все символы которого в нижнем регистре, за исключением первых символов слов, например InitCap("aRRoW naMe") возвращает "Arrow Name" | 
| Lcase(text) | Текст аргумента, все символы которого в нижнем регистре | 
| Leftftext, number) | Первые символы слева текста первого аргумента. Количество символов указывается во втором аргументе | 
| LTrim(text) | Текст аргумента без символов пробела слева (если таковые имелись) | 
| MakeDate(MM,DD,YY) | Дата, сгенерированная по трем числам, например MakeDate(l,2,1999) возвращает 2 января 1999 года | 
| MakeMoney(number) | Тип money, конвертированный из аргумента number | 
| MakeTime(HH,MI,SS) | Время, сгенерированное по трем числам - часы, минуты, секунды | 
| Max(number) | Максимальное значение аргумента по строкам (контекстно) | 
| Mid(text, number 1, number2) | Подстрока первого аргумента, начиная с позиции numberi и включая number2 символов | 
| Min(number) | Минимальное значение аргумента по строкам (контекстно) | 
| Minite(time) | Количество минут времени аргумента (0-59) | 
| Mod(numberl,number2) | Остаток от деления первого аргумента на второй, например Mod(7,3) возвращает 1 | 
| Month(date) | Порядковый номер месяца даты аргумента (1-12) | 
| MonthName(date) | Наименование месяца даты аргумента (по-английски), например "April" | 
| MonthNameAbr(date) | Сокращенное наименование месяца даты аргумента (по-английски), например "Арг" | 
| PageNum() | Номер страницы | 
| Quarter(date) | Квартал даты аргумента (1 -4) | 
| RecNum() | Номер строки отчета | 
| Replace(mainText, oldText, newText) | Замена символов в строке mainText - старого фрагмента oldText на новый newText | 
| ReportAvg(number) | Среднее значение аргумента по отчету | 
| ReportCount(number) | Количество строк в отчете | 
| ReportCumAvg(number) | Среднее значение аргумента, вычисляемое контекстно. Если ReportCumAvg расположена в секции Detail, функция будет возвращать среднее значение аргумента всех вышестоящих строк отчета | 
| ReportCumMax(number) | Максимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg | 
| ReportCumMin(number) | Минимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg | 
| ReportCumSum(number) | Сумма аргумента, вычисляемая контекстно. Вычисляется аналогично ReportCumAvg | 
| ReportMax(number) | Максимальное значение аргумента по отчету | 
| ReportMin(number) | Минимальное значение аргумента по отчету | 
| ReportSum(number) | Сумма аргумента по отчету | 
| Right(mainText, number) | Первые символы справа текста первого аргумента. Количество символов указывается во втором аргументе | 
| Round(numberTo Round, precisionNumber) | Округленное значение первого аргумента. Во втором аргументе указывается точность округления, например Round(12345,500) возвращает 12500 | 
| RTrim(text) | Текст аргумента без символов пробела справа (если таковые имелись) | 
| Second(time) | Количество секунд времени аргумента (0-59) | 
| Sign(number) | 1, если аргумент положительный, 0, если равен нулю и -1, если аргумент отрицательный | 
| Sin(number) | Синус аргумента | 
| Sum(number) | Сумма значений аргумента по строкам (контекстно) | 
| Tan(number) | Тангенс аргумента | 
| Time() | Текущее время | 
| ToDate(text, fonnat) | Дата, конвертированная из текстовой строки. Второй аргумент указывает формат даты | 
| ToNumber(text) | Число, конвертированное из текстовой строки | 
| ToText(date, foirnat) | Текст, конвертированный из даты. Второй аргумент указывает формат даты | 
| Trim(text) | Текст аргумента без "лишних" символов пробела. Удаляются пробелы перед строкой и после строки аргумента; если пробелов подряд более двух, оставляется только один | 
| Trunc(number, precision) | Округленный первый аргумент с отбрасыванием остатка. Во втором аргументе указывается точность округления | 
| Ucase(text) | Текст аргумента, все символы которого в верхнем регистре | 
| Week(date) | Порядковый номер недели (в году) даты аргумента (1-54) | 
| Year(date) | Год даты аргумента | 
| YearsBetween(datel, date2) | Количество лет между датами первого и второго аргумента |