Я:
Результат
Архив

МЕТА - Украина. Рейтинг сайтов Webalta Уровень доверия



Союз образовательных сайтов
Главная / Учебники / Учебники на русском языке / Компьютерные науки / Clipper


Компьютерные науки - Учебники на русском языке - Скачать бесплатно


Библиотека: CLIPPER.LIB

См. также: PARAMETRS, PRIVATE, PROCEDURE, PUBLIC, RETURN, SET
PROCEDURE.


DO CASE


Синтаксис: DO CASE
CASE<эусловие>
<экоманды>...
[CASE<эусловие>]
<экоманды>...
[OTHERWISE]
<экоманды>...
ENDCASE

Осуществляет ветвления по условиям. В случае, если ни одно из
указанных условий не выполняется, управление передается
командам, следующим за ENDCASE. При тех же условиях, но в
присутствии OTHERWISE выполняются команды, следующие за
OTHERWISE до ENDCASE.

Любое количество команд, включая также структуры как DOWHILE,
DOCASE, IF, FOR, могут быть вложены внутрь одного DOCASE.
Количество CASE указателей внутри DOCASE неограничено.


Библиотека: CLIPPER.LIB

См. также: DO, DO WHILE, IF, IF( )/IIF( )

DO WHILE

Сиснтаксис: DO WHILE<эусловие>
<экоманды>...
[EXIT]
<экоманды>...
[LOOP]
<экоманды>...
ENDDO

Выполняет цикл DO WHILE - ENDDO пока верно условие
(<эусловие>=.T.)

Опции :
EXIT: выполнение этого указателя вызывает безусловный переход на
первый после ENDDO оператор.

- 70 -
LOOP : передает управление на последнюю выполненную строку DO
WHILE

DO WHILE структура повторяет выполнение заданных команд пока
выполняется условие на входе. Когда условие верно (.Т.)
управление передается на первый оператор последовательности,
которая исполняется до появления команд: EXIT, LOOP, ENDDO.
ENDDO возвращает управление на DO WHILE и процесс повторяется.
LOOP в основном используется когда необходимо предотвратить
выполнение определенной части операторов внутри цикла. Например:

DO WHILE <эусловие>
<эначальное исполнение>...
IF<эпромежуточное условие>
LOOP
ENDIF
<эпродолжение выполнения>...
ENDDO

Следующие два примера иллюстрируют возможности DO WHILE при
просмотре файлов данных :

DO WHILE .NOT. EOF()
<эоператоры>...
SKIP
ENDDO

LOCATE FOR <эусловие>
DO WHILE FOUND( )
<эоператоры>...
CONTINUE
ENDDO

Макроопределения применяются без ограничений в любой части DO
WHILE.

Библиотека: CLIPPER.LIB

См.также: FOR, IF, LIST, RETURN

EJECT


Синтаксис: EJECT

EJECT устанавливает печатающую головку в начало новой страницы
путем подачи на принтер управляющего символа ASCII 12. Кроме
того, EJECT устанавливает в нуль значения строки и столбца
внутреннего счетчика.
Если необходимо "сбросить на нуль" внутренний счетчик принтера,
не посылая ASKII 12, можно воспользоваться SETPRC()


Библиотека: CLIPPER.LIB

См. также: SETPRC( )


- 71 -

ERASE/DELETE FILE


Синтаксис: ERASE/DELETE FILE<эфайл>.<эрасш.>

Удаляет указанный файл с диска.
<эфайл>.<эрасш.> - имя файла (с расширением), предназначенного для
удаления.

Внимание: файл перед удалением должен быть закрыт.


Библиотека: CLIPPER.LIB

См. также: CLOSE, USE, FILE( )



EXTERNAL


Синтаксис: EXTERNAL<эсписок процедур>

Объявляет имена для программы - компоновщика.
- список подпрограмм, пользовательских функций
и форматных файлов.

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

Пример:
EXTERNAL P1, P2, P3
routine="1"
DO P&routine

Библиотека: CLIPPER.LIB



FIND

Синтаксис: FIND<эсимвольная строка>/(<эвырС>)

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

<эсимвольная строка> - вся или часть значения искомого ключевого
элемента. В случае использования (<эвырС>) вместо литеральной
символьной строки, FIND работает аналогично SEEK.

FIND просматривает индекс-файл, начиная с первого ключа и
продолжает до совпадения или до превышения значения текущего

- 72 -
ключа над заданным для поиска. В случае совпадения указатель
записи устанавливается в соответствующее значение.
Если SET SOFTSEEK установлен в OFF и FIND не нашел записи, то
указатель устанавливается в значение LASTREC() + 1, EOF( )
возвращает .Т., а FOUND( ) возвращает .F.
В случае SOFTSEEK установленного ON, указатель записи
устанавливается в значение, соответствующее записи для первого
ключа, превышающего искомое значение. FOUND( ) в этом случае
возвращает .F., а EOF( ) - .T.

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

Клиппер хранит числовые ключи индекс-файлов с использованием
предшествующих нулей. Это значит, что если искать числовой ключ
с помощью символьного аргумента, то необходимо дополнить
аргумент нулями слева.

Пример:
USE Sabs INDEX Brouch
?LASTREC( ) &&Результат: 84
?INDEXKEY( ) &&Результат: BRANCH

FIND 200
?FOUND( ), EOF( ), RECNO( ) &&Результат: .T. .F. 5
FIND 500
?FOUND(), EOF(), RECNO() && Результат: .F. .T. 85

string = "200"
FIND &string
?FOUND(), EOF(), RECNO() && Результат: .T. .F. 5
FIND "100"
?FOUND, EOF(), RECNO() && Результат: .T. .F. 1

Библиотека : CLIPPER.LIB

Смотри также : INDEX, LOCATE, SEEK, SET INDEX, SET ORDER, SET
SOFTSEEK, EOF(), FOUND()


FOR...NEXT


Синтаксис: FOR <эпеременная> = <эвырЧ1> TO <эвырЧ2> [STEP<эвырЧ3>]
...
[EXIT]
...
NEXT

Организует циклы.
<эпеременная> - управляющая переменная цикла
<эвырЧ1>, <эвырЧ2> - начальное и конечное значения переменной
цикла.
Необязательный параметр - STEP устанавливает шаг изменения
значения управляющей переменной: <эвырЧ3>. По умолчанию шаг равен
единице.

- 73 -

EXIT передает управление следующему за NEXT оператору.


Библиотека: CLIPPER.LIB

См. также: DO CASE, DO WHILE, IF



FUNCTION

Синтаксис: FUNCTION <эпроцедура>...RETURN<эвыр.>

Объявляет функцию, определенную пользователем.
<эпроцедура> - имя функции (до 10 символов)
<эвыр.> - значение, возвращаемое функцией

Пользовательская функция - это структура, аналогичная
подпрограмме (PROCEDURE), но с двумя исключениями. Во-первых,
описание функции должно начинаться с оператора FUNCTION и,
во-вторых, оператор RETURN обязан содержать возвращаемое
функцией значение.
Пользовательская функция вызывается также, как и
предопределенные в Клиппере функции.

FUNCTION (<эсписок параметров>)

Параметры пересылаются как значения (by value), за исключением
двух случаев. Во-первых, если пересылаемый параметр является
элементом массива, то весь массив пересылается как ссылка (by
reference). Во-вторых, если параметр в списке предшествует знак
@, то он (параметр) пересылается как ссылка.

Примеры:

@12, Center("Hi there") SAY "Hi there"
RETURN
*


FUNCTION Center
PARAMETRS string
RETURN INT((80-LEN(string))/2)


value=10
?Changvar
?value &&Результат: 10
?Changvar(@value)
?Value &&Результат: 20
RETURN
*
FUNCTION Changvar
PARAMETER var
var=var*2
RETURN(var)

- 74 -


Библиотека: CLIPPER.LIB

См.также: PROCEDURE, PARAMETERS, RETURN



GO/GOTO


Синтаксис: GO/GOTO <эвырЧ1> / BOTTOM/ TOP

Устанавливает указатель на определенную запись в текущей рабочей
области.
<эвырЧ> - номер записи. GOTO установит указатель на эту запись,
даже если DELETED-ON или, если это потребует выхода за пределы
области, определенной текущим фильтром.

Опции

BOTTOM устанавливает указатель в последнюю логическую запись,
если существует активный индекс-файл и в LASTREC(), если
индекс-файл не активен. В случае DELETED-ON или в присутствии
активного фильтра последняя запись отыскивается в определенной
фильтром области.
TOP устанавливает указатель в первую логическую запись, если
существует активный индекс-файл или запись номер 1 в случае
отсутствия последнего. Если DELETED-ON или существует активный
фильтр, то устанавливается первая запись в определенной области.


Библиотека: CLIPPER.LIB

См. также: SKIP, LASTREC( ), RECNO( )



IF

Синтаксис: IF<эусловие>
...
[ELSE]

ENDIF

Условное выполнение блока команд.
<эусловие> - выражение, управляющее ветвлением. Если в процессе
работы оно принимает значение .Т., то выполняются все следующие
команды до появления ELSE или ENDIF.
В случае <эусловие>=.F. управление передается первой команде за
оператором ELSE, если он существует. В противном случае
выполняется первая команда за ENDIF.
ELSE предваряет команды, предназначенные к выполнению в случае
<эусловие>=.F.
Структуры : IF...ENDIF могут быть вложены друг в друга и в
другие подобные структуры.

- 75 -

Библиотека: CLIPPER.LIB

См.также: DO CASE, IF( )/IIF( )



INDEX


Синтаксис: INDEX ON <эключевое выражение>TO<эфайл>/(<эвырС>)

Создает файл, содержащий индекс к записям активного файла
данных.
<эключевое выражение> - выражение, которое возвращает для каждой
записи в текущем файле данных ключевое значение для последующего
использования его в качестве индекса определенной записи.
Максимальная длина ключевого выражения до 250 символов.
<эфайл> - имя создаваемого индекс-файла. По умолчанию расширение
файла должно быть (.ntx).
Для пользования dBASE - совместимыми файлами индексов (с
расширением (.ndx)) необходимо при линковке программы включить в
список NDX.OBJ.

При использовании индекс-файла записи файла данных располагаются
в порядке возрастания (или убывания) ключевого выражения, хотя
физическое расположение записей не изменяется. Такая возможность
позволяет быстро создавать различные порядки записей. Записи,
предназначенные к удалению и фильтрованные индексируются наравне
с остальными.
Для ключей, содержащих дату в качестве части ключевого
выражения, необходимо использовать DTOS( ) для перевода
"дата-символ". Например:

USE Invoices
INDEX ON Customer + DTOS(Inv_date) TO Invoice

Для того чтобы создать убывающий порядок следования в
индекс-файле, можно воспользоваться DESCEND(). Эта функция в
состоянии инвертировать любой тип данных.
Например, следующий фрагмент создает упорядоченный список с
убывающей хронологией даты заведения счета:

USE Invoices
INDEX ON DESCEND(Inv_date) TO Inv_stack

При последующем использовании SEEK также необходимо употребление
DESCEND().

Клиппер поддерживает DBASE III PLUS-индекс-файлы, если при
линковке использовать NDX.OBJ.

В случае, если в файле данных присутствуют записи с одинаковыми
значениями ключевого выражения, порядок их обработки
регулируется оператором SET UNIQUE ON/OFF. В случае UNIQUE ON в
индексированные списки не включаются записи с одинаковыми
значениями ключа. Необходимо заметить, что UNIQUE не является

- 76 -
аттрибутом индесного файла. Из этого следует, что в случае
UNIQUE OFF совпадающие ключи могут быть добавлены в индексный
файл, даже если он создан при UNIQUE ON.

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


Библиотека: CLIPPER.LIB

См.также: CLOSE, FIND, REINDEX, SEEK, SET INDEX, SET ORDER,
SET UNIQUE, USE, DTOS(), INDEXEXT(), INDEXKEY(), INDEXORD()



INPUT


Синтаксис: INPUT [<эприглашение>] TO <эпеременная>

Вводит выражения с клавиатуры и размещает его в определенной
переменной.
<эпеременная> - имя переменной для хранения выражения.
<эприглашение> - сообщение, сопровождающее ввод.

Реализует ввод с клавиатуры выражений любого типа даных. Ввод
выражения заканчивается нажатием клавиши Return. Если введено
только Return, то переменная не будет создана.


Библиотека: CLIPPER.LIB

См.также: ACCEPT, WAIT


KEYBOARD

Синтаксис : KEYBOARD <эвырС>

Заполняет строкой символов буфер клавиатуры.
<эвырС> - строка символов.

KEYBOARD используется вместе с командами и функциями,
опрашивающими буфер клавиатуры. Это могут быть команды
"ожидания", такие как ACCEPT, INPUT, READ или "внешние" функции
ACHOICE() и DBEDIT().

Типичный пример применения KEYBOARD - использование внутри SET
KEY процедуры для переназначения клавиш в режиме ожидания.
Необходимо заметить, что каждое выполнение KEYBOARD очищает
буфер клавиатуры.

Пример:
В этом примере буфер клавиатуры заполняется последовательностью

- 77 -
символов, позволяющих вернуться с глубины трех уровней в
основное меню, нажав одну клавишу. Здесь "Q" и "Возврат каретки"
вызывают "подъем" на один уровень:

KEYBOARD "Q" + CHR(13) + "Q" + CHR(13) + "Q" + CHR(13)



Библиотека: CLIPPER.LIB

См.также: SET KEY, CHR(), LASTKEY(), NEXTKEY().


JOIN

Cинтаксис: JOIN WITH <эсиноним>/(<эвырС1>) TO <эфайл>/(<эвырС2>)
FOR <эусловие>[FIELDS <эсписок полей>]

Создает новый файл данных путем слияния выбранных записей и
полей из двух рабочих областей.
<эсиноним> - рабочая область, предназначенная для объединения с
текущей.
<эфайл> - имя нового файла данных.
FOR <эусловие> - выбор записей, соответствующих определенным
условиям.
<эсписок полей> - список полей обеих рабочих областей для
формирования нового файла. Если FIELDS не будет использовано то
все поля текущей рабочей области будут присутствовать в новом
файле данных.

JOIN работает следующим образом: для каждой записи в текущей
рабочей области осуществляется просмотр всех записей
вспомогательной области и в каждом случае выполнения условия
(<эусловие>) cоздается новая запись ( с полями FIELDS ) в новом
файле данных.

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

Пример:
Объединение текущего файла Customers с дополнительным Invoices
для создания нового Purchases.

USE Customers
SELECT 2
USE Invoices
SELECT 1
*
JOIN WITH Invoices TO Purchases;
FOR Last=Invoices->Last;
FIELDS First,Last,Invoices->Number,Invoices->Amount


Библиотека: CLIPPER.LIB

См.также: APPEND FROM, REPLACE, SET RELATION

- 78 -



LABEL FORM

Cинтаксис: LABEL FORM <эфайл1>/(<эвырС1>)[<эобл.опр.>][FOR <эусловие>]
[WHILE<эусловие>][SAMPLE][TO PRINT][TO FILE <эфайл2>/
(<эвырС2>)]

Индикация меток, определенных в (.lbl) файле.
<эфайл1> - имя файла (.lbl), содержащего информацию о метках.
<эобл.опр.> - определяет часть текущего файла данных для
индикации меток. По умолчанию - ALL.

FOR отбирает соответствующие заданному условию (<эусловие>)
записи в файле данных внутри заданной области (<эобл.опр.>).

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

TO PRINT организует параллельный вывод на печать.

TO FILE вызывает параллельную загрузку информации на диск в виде
файла <эфайл2> (расширение по умолчанию (.txt))

SAMPLE вызывает индикацию тестовых меток в виде строк звездочек.
Каждая метка имеет то же значение столбца и строки, что и ее
определение. Далее необходимо ответить на вопрос: "Do you want
more samples ?" ( "Требуются еще примеры ?"). Ответ "Y" вызывает
повторение индикации тестовых меток. Ответ "N" позволит
индицировать реальные метки для выбранных <эобл.опр.> и
<эусловие>.

LABEL FORM индицирует метки, используя определения хранимые в
(.lbl) файле. (.lbl) можно создать, используя RL.EXE (см. главу
12, Утилиты Клиппера).
Содержимое поля LABEL должно быть допустимым выражением.
Необходимо отметить, что Клиппер не поддерживает список
выражений в содержимом LABEL FORM. Все следующее за запятой в
LABEL FORM игнорируется.


Библиотека: CLIPPER.LIB

См.также: REPORT FORM.


LIST


Синтаксис: LIST [OFF] [<эобл.опр.>] <эсписок выражений> [FOR <эусловие>]
[WHILE <эусловие>] [TO PRINT] [TO FILE <эфайл>/(<эвырС>)]

Вывод одного или более выражений для каждой обрабатываемой
записи.
<эсписок выражений> - список выводимых значенийй для каждой
записи.

- 79 -
<эобл.опр.> - часть текущего файла данных, обрабатываемая LIST.
По умолчанию ALL (все записи).
FOR - отбирает соответствующие заданному условию записи в файле
данных внутри заданной области (<эобл.опр.>).
WHILE - позволяет просматривать записи начиная с текущей до
первого невыполнения условия.
OFF - подавляет индикацию номеров записей.
TO PRINT - вызывает параллельный вывод на печать.
TO FILE - вызывает параллельную загрузку информации на диск,
используя для этого файл <эфайл>(.txt).

LIST индицирует список значений в табулированном формате с
колонками, разделенными пробелом. LIST аналогичен DISPLAY, за
исключением значения принимаего <эобл.опр.> по умолчанию: LIST -
ALL, DISPLAY - NEXT 1.

Пример:

USE Sales
LIST DATE(),TIME(),Branch
LIST Branch,Salesman FOR Amount > 500 TO PRINT

Для прерывания выполнения LIST можно пользоваться INKEY() в
качестве части условия, как в следующем примере, который
позволяет прервать выдачу, нажав Esc:

USE Sales
LIST Branch,Amount FOR INKEY()<>27


Библиотека: CLIPPER.LIB

См.также: DISPLAY.



LOCATE


Синтаксис: LOCATE [<эобл.опр.>] FOR <эусловие> [WHILE <эусловие>]

Поиск в текущей рабочей области первой записи, соответствующей
заданным условиям.
<эобл.опр.> - часть текущего файла данных, в котором работает
LOCATE. По умолчанию ALL.
FOR - отбирает соответствующие заданному условию записи в файле
данных внутри заданной области (<эобл.опр.>).
WHILE - позволяет просматривать записи начиная с текущей до
первого невыполнения условия.

LOCATE производит поиск начиная с записи, определяемой
<эобл.опр.>. Поиск заканчивается в случае обнаружения совпадения
по условиям или по достижении последней записи из <эобл.опр.>.
Если поиск закончился успешно, то найденная запись становится
текущей и FOUND() возвращает .Т.. Если же поиск окончился
безрезультатно, то FOUND() возвращает .F., а позиция указателя
записей будет зависить от значения <эобл.опр.>.

- 80 -

Каждая рабочая область может иметь свою собственную область
действия LOCATE (<эобл.опр.>), остающуюся активной до объявления
другого LOCATE в текущей рабочей области.

LOCATE может работать в комбинации с CONTINUE. Эта команда
позволяет возобновить поиск с текущей записи.

Пример:

USE Sales
? LASTREC() && Результат: 84
LOCATE FOR Branch = "200"
? FOUND(), EOF(), RECNO() && Резульатат: .T. .F. 5


Библиотека: CLIPPER.LIB

См.также: CONTINUE, FIND, FOUND(), STRTRAN().



MENU TO



Синтаксис: MENU TO <эпеременная>

Интерактивный выбор элемента списка меню с присвоением
соответствующего значения определенной переменной.

<эпеременная> - переменная для хранения порядкового номера
элемента списка меню. Если такой переменной не существует, то
она будет создана (тип N).

MENU TO организует выбор элемента списка меню. Формирование
списка осуществляется операторами SET MESSAGE и PROMPT.
Собственно выбор производится с помощью стрелочных клавиш.
Каждому элементу меню соответствует определенное сообщение (
MESSAGE ), позиция которого на экране определяется оператором
SET MESSAGE. Выход из команды MENU с выбором определенного
элемента осуществляется при вводе .
Следующий список определяет активные клавиши управления режимом
MENU TO:

Стрелка вверх - предыдущий PROMPT.
Стрелка вниз - следующий PROMPT.
Home - первый PROMPT.
End - последний PROMPT.
Enter - выбор элемента.
Esc - выход из режима без выбора.
Первая буква - выбор элемента с той же первой буквой в PROMPT.

MENU TO может быть вложено внутрь SET KEY-процедуры без очистки
текущих PROMPT ( в отличии от GET/READ ). Однако, если для
вложенных меню будут использованы одни и те же переменные, они
будут сохранять свои предыдущие значения, если не объявить их

- 81 -
PRIVATE в SET KEY-процедуре. В связи с этим рекомендуется
использовать различные переменные.
В SET KEY-процедуре есть возможность прочесть имя используемой
переменной при помощи READVAR().

Для каждого меню разрешено не более 32 элементов PROMPT.

Пример:

SET MESSAGE TO 23 CENTER
@ 6,10 PROMPT "Add" MESSAGE "New"
@ 7,10 PROMPT "Edit" MESSAGE "Change"
@ 9,10 PROMPT "Quit" MESSAGE "Return to DOS"
MENU TO Choice

Библиотека: CLIPPER.LIB

См.также: @...PROMPT, SET MESSAGE, SET WRAP, ACHOICE().



NOTE/*/&&

Cинтаксис: NOTE / * [<этекст>] / [<экоманда>] && [<этекст>]

Размещает в тексте программы комментариев. <этекст> - строка
символов, следующая за знаком комментария.
NOTE или (*) должны стоять первыми в строке, тогда как (&&)
может быть в любом месте. Все символы после знака комментария
игнорируются транслятором до первого символа "конец строки".
Следовательно комментарий не может быть продолжен ( при помощи
<;>) на другую строку.

Библиотека: CLIPPER.LIB


PACK


Синтаксис: PACK.

Физически удаляет помеченные записи из текущего файла данных.
Кроме удаления помеченных записей производится переиндексация
всех, используемых в текушей рабочей области индексных файлов.

Библиотека: CLIPPER.LIB

См.также: DELETE, RECALL, REINDEX, SET DELETED, ZAP, DELETED().



PARAMETERS

Синтаксис: PARAMETERS <эсписок переменных>.

Определяет в подпрограмме переменные, получающие пересылаемые
значения или ссылки.

- 82 -

<эсписок переменных> - одна или более переменная, разделенные
запятыми.
Параметры можно разделить на формальные и действительные.
Формальными параметрами называются переменные, перечисленные в
качестве аргументов в операторе PARAMETERS. Действительными
параметрами являются аргументы команды DO...WITH ( вызов
процедуры) или пользовательской функции.

Существуют два способа передачи параметров: "значением" и
"ссылкой". Передача значения вызывает присваивание величины
действительного параметра его формальным элементом в списке
PARAMETERS. В этом случае действия над формальным параметром в
подпрограмме не вызовут никаких изменений соответствующего ему
действительного параметра. Напротив, передача ссылки означает
фактическое присвоение одной физической единицы хранения обоим
параметрам; и формальному и действительному. Из этого следует,
что изменения формального параметра, в случае передачи ссылки,
непосредственно скажутся на величине его действительного
партнера.

Следует заметить, что Клиппер в данном случае не проверяет
взаимного соответствия списков действительных и формальных
параметров. Чтобы определить количество действительных
параметров, можно воспользоваться PCOUNT().

Для корректной передачи параметров подпрограммам и
пользовательским функциям необходимо соблюдать следующие
правила:

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

2. Функциям параметры передаются по умолчанию как значения.
Однако, они могут быть переданы как ссылки, если переменной
будет предшествовать символ @. Массивы всегда передаются как
ссылки, элементы массивов - только как значения.

Есть возможность пересылать строки символов в качестве
параметров, находясь в DOS-окружении. Строки должны быть
разделены пробелами. Параметр, заключенный в кавычки
пересылается как одна строка. Например:

C> PROG "CLIPPER COMPILER" 5

Примеры:
В следующем примере "memvar" и "array" передаются в подпрограмму
как ссылки, тогда как "memvar2" - как значение:

DECLARE array[1]
STORE "old" TO memvar, memvar2, array[1]
DO Proc WITH memvar, (memvar2), array
*
RETURN

PROCEDURE Proc

- 83 -
PARAMETERS new_war, new_war2, new_array
STORE "new" TO new_var, new_var2, new_array[1]
RETURN

Этот пример демонстрирует передачу параметров пользовательским
функциям.

STORE 10 TO Memvar, memvar2
Modvar (@memvar, memvar2)
*
? memvar, memvar2 && Результат : 20 10
*
RETURN

FUNCTION Modvar
PARAMETER new_var, new_var2
STORE 20 TO new_var, new_var2
RETURN " "

Следующий пример демонстрирует передачу параметров из
DOS-командной строки в программу CLIPTEST:

* Cliptest.prg
PARAMETERS char, num, date, logical
?? TYPE ("char")
?? TYPE ("num")
?? TYPE ("date")
?? TYPE ("logical")
RETURN

Если выполнить CLIPTEST с помощью следующей командной строки
DOS:

C> CLIPTEST string 12 CTOD(SPACE(8)).T.

то результат будет выглядеть следующим образом:

С С С С
Т.е. все четыре пересылаемых параметра восприняты программой как
строки символов. Если же выполнить эту процедуру из тела
Клиппер-программы с помощью строки:



DO Cliptest WITH "string", 12, CTOD(SPACE(8)), .T.

то результат будет совсем другой:

C N D L

Библиотека: CLIPPER.LIB

См.также: DO, PRIVATE, PROCEDURE, PUBLIC, SET PROCEDURE, PCOUNT().

PRIVATE



- 84 -
Синтаксис: PRIVATE <эсписок переменных>

"Прячет" переменные, объявленные ранее PUBLIC.
<эсписок переменных> - список переменных. Заметим, что PRIVATE
ALL, LIKE, EXCEPT здесь не поддерживаются.
Когда в подпрограмме переменная объявляется PRIVATE, то
существующая копия этой переменной становится недоступной пока
не завершится подпрограмма с этим объявлением.

Библиотека: CLIPPER.LIB

См.также: PARAMETERS, PUBLIC.


PROCEDURE


Синтаксис: PROCEDURE <эпроцедура>... RETURN

Обозначает начало подпрограммы.
<эпроцедура> - имя подпрограммы. Может содержать до 10 символов и
должно начинаться с буквы. Каждое имя должно отличатся от имен
других подпрограмм, функций и программ.
Процедура - это блок команд, начинающийся с команды PROCEDURE.
Может располагаться в любом месте программного файла, но не
может быть вложен внутрь другой подпрограммы.

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

Следующий пример демонстрирует вызов двух подпрограмм Proc1,
Proc2:

* Main.prg
DO Proc1
DO Proc2
RETURN

PROCEDURE Proc1
? "Proc one" && Результат: Proc one
RETURN

PROCEDURE Proc2
? "Proc two" && Результат: Proc two
RETURN

Библиотека: CLIPPER.LIB

См.также: DO, SET PROCEDURE.


PUBLIC

Синтаксис: PUBLIC <эсписок переменных> [,clipper]

Объявляет определенные переменные действительными в любой части
программы ( на любом уровне ).

- 85 -
<эсписок переменных> - список переменных.
clipper - параметр, представляющий собой имя логической
переменной, которая при объявлении ее PUBLIC становится .T..
Этот факт может быть использован в случае, когда написанная
программа должна одинаково успешно компилироваться с помощью
Клиппер и исполнятся под управлением dBASE III PLUS. Для этого
имеющиеся в программе команды, поддерживаемые только Клиппер,
при исполнении в dBASE можно обойти, используя структуры
IF...ENDIF с переменной clipper в качестве аргумента.
Объявление несуществующей переменной как PUBLIC порождает новую
логическую переменную со значением .F.. То же для существующей
переменной делает ее доступной в любом месте программы. Нельзя
объявлять PUBLIC существующую локальную (PRIVATE) переменную. В
этом случае Клиппер просто проигнорирует это объявление. Однако
PUBLIC- переменные могут быть временно "спрятаны", будучи
объявленными PRIVATE.

Примеры:
? TYPE("var1") && Результат: U
? TYPE("var2") && Результат: U
DO Ppoc1
? TYPE("var1") && Результат: C
? TYPE("var2") && Результат: U
RETURN

PROCEDURE Proc1
PUBLIC var1
var1 = "string1"
var2 = "string2"
RETURN

Следующий пример иллюстрирует возможность присутствия в
программе, исполняемой под управлением dBASE, специфических
Клиппер-команд:

PUBLIC clipper
@ 25, 10 SAY "Press any key to continue"
IF clipper
key = INKEY(0)
ELSE
key = INKEY()
DO WHILE key = 0
key = INKEY()
ENDDO
ENDIF

Библиотека: CLIPPER.LIB

См.также: PARAMETERS, PRIVATE.



QUIT / CANCEL

Синтаксис: QUIT / CANCEL

Заканчивает выполнение программы, закрывает все открытые файлы и

- 86 -
возвращает управление операционной системе.

QUIT или CANCEL могут быть использованы в любом месте программы
для завершения работы и возврата в операционную систему.
Оператор RETURN, исполненный в подпрограмме высшего уровня,




Назад


Новые поступления

Украинский Зеленый Портал Рефератик создан с целью поуляризации украинской культуры и облегчения поиска учебных материалов для украинских школьников, а также студентов и аспирантов украинских ВУЗов. Все материалы, опубликованные на сайте взяты из открытых источников. Однако, следует помнить, что тексты, опубликованных работ в первую очередь принадлежат их авторам. Используя материалы, размещенные на сайте, пожалуйста, давайте ссылку на название публикации и ее автора.

281311062 © il.lusion,2007г.
Карта сайта