к оглавлению

ПРИЛОЖЕНИЕ E

Операторы для совместимости со предыдущими версиями Clarion

  1. BOF (сигнализировать о достижении начала файла)
  2. EOF (сигнализировать о достижении конца файла)
  3. FUNCTION (определить функцию)
  4. POINTER (получить относительное положение записи)
  5. SHARE (открыть файл данных для совместного доступа)

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



BOF (сигнализировать о достижении начала файла)

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

файл Метка объявления структуры FILE.

Процедура BOF возвращает отличное от нуля значение (“истина”), когда оператором PREVIOUS прочитана (или пропущена оператором SKIP) первая в последовательности обработки запись файла. Во всех других случаях функция возвращает ноль (“ложь”).

Процедура BOF может не поддерживаться некоторыми файловыми драйверами или быть в этих файловых система очень неэффективной. Перед ее использованием сверьтесь с документацией по данному файловому драйверу. Поэтому для гарантии эффективности и поддержки файловым драйвером рекомендуется не использовать эту процедуру. Вместо этого, проверяйте процедурой ERRORCODE() после каждого чтения с диска для попытки прочесть запись после начала файла.

Наиболее часто функция BOF используется в качестве условия в операторе LОOP UNTIL. Поскольку условие выполнения вычисляется в начале цикла, процедура BOF возвращает значение “истина” после того, как при обработке файла в обратной последовательности (используя PREVIOUS) прочитана и обработана последняя запись.

Возвращаемый тип данных: LONG

Пример:

!Не рекомендуется, но пока поддерживается для обратной совместимости:

SET(Trn:DateKey) !Начало/конец файла в последовательности ключа

LOOP UNTIL BOF(Trans) !Обработать файл в обратной последовательности

PREVIOUS(Trans) ! последовательно читать записи

IF ERRORCODE() THEN STOP(ERROR()).

DO LastInFirstOut ! вызвать LastInFirstOut

END

!Рекомендуется как более эффективный код дл всех файловых драйверов:

SET(Trn:DateKey) !Начало/конец файла в последовательности ключа

LOOP !Обработать файл в обратной последовательности

PREVIOUS(Trans) ! последовательно читать записи

IF ERRORCODE() THEN BREAK. !Прервать цикл при попытки прочитать после начала

DO LastInFirstOut ! вызвать LastInFirstOut

END

Смотри также: ERRORCODE

 

EOF (сигнализировать о достижении конца файла)

EOF(файл)

EOF Сигнализирует о достижении конца файла

файл Метка объявления структуры FILE.

Процедура EOF возвращает отличное от нуля значение (“истина”), когда оператором NEXT прочитана (или пропущена оператором SKIP) последняя в последовательности обработки запись файла. Во всех других случаях функция возвращает ноль (“ложь”).

Процедура EOF может не поддерживаться некоторыми файловыми драйверами или быть в этих файловых система очень неэффективной. Перед ее использованием сверьтесь с документацией по данному файловому драйверу. Поэтому для гарантии эффективности и поддержки файловым драйвером рекомендуется не использовать эту процедуру. Вместо этого, проверяйте процедурой ERRORCODE() после каждого чтения с диска для попытки прочесть запись после конца файла.

Наиболее часто функция EOF используется в качестве условия в операторе LОOP UNTIL. Поскольку условие выполнения вычисляется в начале цикла, функция EOF возвращает значение “истина” после того, как прочитана и обработана последняя запись.

Возвращаемый тип данных: LONG

Пример:

!Не рекомендуется, но пока поддерживается для обратной совместимости:

SET(Trn:DateKey) !Начало файла в последовательности ключа

LOOP UNTIL EOF(Trans) !Обработать все записи

NEXT(Trans) ! последовательно читать записи

IF ERRORCODE() THEN STOP(ERROR()).

DO LastInFirstOut ! вызвать подпрограмму LastInFirstOut

END

!Рекомендуется для использования со всеми файловыми драйверами:

SET(Trn:DateKey) !Начало файла в последовательности ключа

LOOP !Обработать все записи

NEXT(Trans) ! последовательно читать записи

IF ERRORCODE() THEN BREAK. !Прервать цикл при попытки прочитать после конца файла

DO LastInFirstOut ! вызвать подпрограмму LastInFirstOutEND

Смотри также: ERRORCODE

 

FUNCTION (определить функцию)

метка FUNCTION [(список параметров)]

локальные данные

CODE

операторы

RETURN(значение)

FUNCTION - это оператор, который определен для возврата значения( так же, как “function” в некоторых других языках программирования). Ключевое слово FUNCTION заменено выражением PROCEDURE для всех случаев и сегодня является синонимом PROCEDURE.

Пример:

PROGRAM

MAP

FullName FUNCTION(STRING Last,STRING First,<STRING Init>),STRING

!Определение Function с параметрами

DayString FUNCTION,STRING !Определение Function без параметров

END

TodayString STRING(3)

CODE

TodayString = DayString() !Вызов функции без параметров

! () – обязательны для функции

FullName FUNCTION(STRING Last, STRING First,STRING Init) !Полное имя функции

CODE !Начало кодовой секции

IF OMITTED(3) OR Init = !Если нет среднего инициала

RETURN(CLIP(First) & & Last) ! вернуть полное имя

ELSE !Иначе

RETURN(CLIP(First) & & Init & . & Last) ! вернуть полное имя

END

DayString FUNCTION !Функция день недели

ReturnString STRING(9),AUTO !Неинициализированная в локальном стеке переменная

CODE !Начало кодовой секции

RETURN(CHOOSE(TODAY()%7)+1,Sun,Mon,Tue,Wed,Thu,Fri,Sat))

Смотри также: PROCEDURE

 

POINTER (получить относительное положение записи)

POINTER( | файл | )

| ключ |

POINTER Возвращает относительное положение записи.

файл Метка объявления структуры FILE. Этот параметр задает физическую последовательность записей в файле.

ключ Метка объявления ключа или индекса. Задает логическую последовательность записей упорядоченную по заданному ключу или индексу.

POINTER возвращает относительное положение в файле данных (в физической последовательности файла) или относительное положение в файле ключей или индексов (в логической последовательности ключа) последней записи, к которой было обращение.

Смысл значения, возвращаемого функцией, зависит от файлового драйвера. Этот может быть номер записи, байтовое смещение в файле или некая другая разновидность “поискового” положения в файле.

Некоторыми файловыми драйверами функция POINTER не поддерживается. Поэтому ее следует использовать только, если вы знаете, что она поддерживается в используемой файловой системе и не будете заменять ее в будущем. Предпочтительный способ позиционирования на запись, который разработан для с тем расчетом, чтобы функционировать во всех файловых системах, это использование функции POSITION в сочетании с RESET и REGET.

Возвращаемый тип данных: LONG

Пример:

SavePtr# = POINTER(Customer) !Запомнить положение в файле

Смотри также: POSITION

 

SHARE (открыть файл данных для совместного доступа)

SHARE(файл [,режим доступа])

SHARE Открывает структуру данных для обработки.

файл Метка структуры FILE

режим доступа Числовая константа, переменная или выражение, которая определяет уровень доступа, обуславливаемый и для пользователя, открывающего файл, и для других пользователей в многопользовательской среде. По умолчанию устанавливается значение 42h (чтение/запись + нет запрета).

Оператор SHARE открывает структуру FILE для работы и устанавливает режим доступа. Он аналогичен оператору OPEN за исключением режима доступа, используемого по умолчанию.

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

Имеются следующие фактические значения для каждого уровня доступа:

Дес. Шест. Доступ

Доступ пользователя: 0 0h Только чтение

1 1h Только запись

2 2h Чтение/Запись

Доступ других: 0 0h Любой доступ (режим совместимости FCB)

16 10h Полный запрет

32 20h Запрет записи

48 30h Запрет чтения

64 40h Нет запрета

Выдаваемые сообщения об ошибках: Такие же как для OPEN.

Пример:

ReadOnly EQUATE(0) !Метки соответствия режимов доступа

WriteOnly EQUATE(1)

ReadWrite EQUATE(2)

DenyAll EQUATE(10h)

DenyWrite EQUATE(20h)

DenyRead EQUATE(30h)

DenyNone EQUATE(40h)

CODE

SHARE(Master,ReadOnly+DenyWrite) !Открыть в режиметолько чтение

Смотри также: OPEN

к оглавлению

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

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution