ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 7


	  ГЛАВА 2 - Формат Исходного Текста Программы

Формат Оператора                                            2-1
     Метки операторов и описаний                            2-1
     Завершение Структуры                                   2-1
     Зарезервированные Слова                                2-1
     Специальные Символы                                    2-2
     Глобальные, Локальные, Статические, и Динамические Данные
                                                            2-3
Формат Программы                                            2-4
     PROGRAM (обьявляет программу)                          2-4
     MEMBER (идентифицируют принадлежность модуля-члена)    2-6
     MAP (обьявляет прототипы ПРОЦЕДУР и-или ФУНКЦИЙ)       2-8
     MODULE (описывает файл модуля-члена)                   2-9
     Прототипы ПРОЦЕДУР и ФУHКЦИЙ                           2-10
     PROCEDURE (обьявляет процедуру)                        2-12
     FUNCTION (обьявляет функцию)                           2-14
     CODE (начинает выполнимые операторы)                   2-16
     ROUTINE (обьявляет локальную подпрограмму)             2-17
     END (прекращает структуру)                             2-18
Директивы Компилятора                                       2-19
     BEGIN (начинает структуру кода)                        2-19
     COMPILE (определяет текст, подлежащий компиляции)      2-20
     EJECT (начать новую страницу листинга)                 2-20
     EMBED (вложенная секция исходного кода)                2-21
     INCLUDE ([при]компилировать текст из другого файла)    2-22
     LIST (помещает включенный исходник в листинг
           компилятора)                                     2-22
     OMIT (указывает текст не подлежащий компиляции)        2-23
     SECTION (определяет секцию исходного кода)             2-24
     SUBTITLE (печатает подзаголовок МОДУЛЯ)                2-24
     TITLE (печатает заголовок МОДУЛЯ)                      2-25

		       ФОРМАТ ОПЕРАТОРА

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Метки описаний и операторов
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

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

Во время выполнения программы, описания данных сохраняют за  со-
бой области памяти которые управляются в соответствии c выполни-
мыми операторами. Любой оператор кода или описание данных  может
быть идентифицировано меткой.  Метка описывает определенное  ме-
стоположение в PRO RAM (памяти процессора?). Ко всем переменным,
структурам данных, PROCEDUREМ, FUNCTIONМ, ПОДПРОГРАММАМ можно об-
ращаться по их меткам.

В исходных модулях Кларион, 1ый столбец отведен для меток.  Мет-
ка  может  содержать  буквы  (на  верхнем или нижнем регистрах),
цифры от 0  до 9, символ  подчеркивания символ (_),  и двоеточие
(:). Первый символ должен  быть буквой или символом  подчеркива-
ния.  Метки не чувствительны к регистру букв, поэтому, CurRent и
CURRENT - одинаковые метки. Метка не может быть  зарезервирован-
ным словом. Любое выполнимый оператор может иметь метку  которая
может использоваться как цель для оператора GOTO.

Метка оператора PROCEDURE  или FUNCTION -  название(имя) функции
или процедуры. Использование метки ПРОЦЕДУРЫ в выполнимом опера-
торе выполняет процедуру. Метка ФУНКЦИИ используется в выражени-
ях, или списках параметров других функций, для присвоения значе-
ния, возвращаемого функцией.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Завершение Структуры
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

Составные структуры данных создаются, когда описания данных вло-
жены  в  другие  описания  данных.  Имеются  множество составных
структур данных в языке  Кларион: SCREEN, REPORT, FILE,  RECORD,
GROUP, и т.д. Эти составные структуры данных должны  завершаться
точкой (.) или ключевым словом END. Операторы IF, CASE, EXECUTE,
LOOP, и BEGIN, все формы управляющих структур должны также  быть
завершены точкой или оператором END.

		       Сохраненные Слова

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


AND        ELSE        LOOP        RETURN
BEGIN      ELSIF       MEMBER      ROUTINE
BREAK      END         NOT         SECTION
BY         EXECUTE     OF          THEN
CASE       EXIT        OMIT        TIMES
COMPILE    FUNCTION    OR          TO
CYCLE      GOTO        OROF        UNTIL
DO         IF          PROCEDURE   WHILE
EJECT      INCLUDE     PROGRAM     XOR

Следующие ключевые слова  могут использоваться как  метки струк-
тур данных или выполнимых операторов. Они не могут использовать-
ся как метки операторов PROCEDURE or FUNCTION:

CODE       FOOTER      MENU        QUEUE       ROW
COL        GROUP       MODULE      RECORD      SCREEN
DETAIL     HEADER      OPTION      REPEAT      SUBTITLE
FILE       MAP         PULLDOWN    REPORT      TITLE

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Специальные Символы
ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

Это список специальных символов используемых в языке Кларион:

Инициаторы    ! Восклицательный Знак начинает комментарий
	      ? Вопросительный  знак начинает  equate-метку поля
	        или меню.
	      @	Знак "Коммерческое ЭТ" начинает элемент  формата
	        или управления(?).
	      * Звездочка начинает параметр передаваемый по  ад-
	        ресу в прототип MAP.
Терминаторы (завершители)
	      ;   Точка-с-запятой разделяет выполнимые операторы
	          стоЯщие в одной строке
	    CR/LF ВК/ПС разделитель выполнимых операторов
	      .   Точка завершает структуру.
	      і   Вертикальная черта - символ продолжения строки
	          исходного текста.
	      #   Знак фунта обьявляет неявную LONG-переменную.
	      $   Доллар обьявляет неявную REAL-переменную.
	      "   Двойная кавычка обьявляет неявную STRING-пере-
	          менную.
Разделители  ( ) Круглые Скобки окружают список параметров.
             [ ] Скобки окружают список индексов массива.
	     ' ' Апострофы окружают строковую константу.
	     { } Фигурные скобки  окружают индекс  повторения  в
		 строковой константе.
             < > Угловые  скобки окружают ASCII-код  в строковой
	         константе, или  указывают параметр  в прототипе
		 MAP, который может быть опущен.

Коннекторы (соединители)
	      .  Точка - десятичная точка используемая в  число-
	         вых константах.
	      ,  Запятая соединяет парметры в списке параметров.
              :  Двоеточие соединяет префикс с меткой или  груп-
	      пирует символы в метках.
	      _  Подчеркивание соединяет группы символов в  мет-
	         ках.
Операторы  + Сложение.
	   - Вычитание.
	   * умножение.
	   / деление.
	   % деление по модулю.
	   ^ Возведение в степень.
	   < меньше чем.
	   > больше чем.
	   = присвоение или равенство.
	   ~ логическое "НЕ".
	   & Конкатенация (строк).

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Глобальные, Локальные, Статические, и Динамические Данные
ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

Термины Глобальные и  Локальные относятся к  доступности данных.
Глобальные данные доступны  всюду в программе,  Локальные данные
имеют ограниченную доступность.  Статические и Динамические  от-
носятся к распределению памяти для данных. Память для  Статичес-
ких данных выделяется  при загрузке программы,  для динамических
данных выделяется во время исполнения

Имеются три типа данных которые могут быть определены в програм-
ме на Кларион:  Глобальные Статические данные, Локальные  Стати-
ческие данные, и Локальные Динамические данные.

Глобальные Статические данные обьявлен в секции данных  ПРОГРАМ-
МЫ, между ключевыми словами PROGRAM и CODE. Они доступны  выпол-
нимым операторам  и выражениям   в каждой  ПРОЦЕДУРЕ и   ФУНКЦИИ
ПРОГРАММЫ. Они всегда в памяти во время исполнения программы.

Локальные  Статические  данные  обьявлены  в модуле-ЧЛЕНЕ, между
ключевыми словами MEMBER и PROCEDURE (или FUNCTION). Доступность
этих  данных  ограничена  переделами  модуля-ЧЛЕНА в котором они
обьявлены; к ним могут  обращаться только ПРОЦЕДУРЫ и ФУНКЦИИИ в
модуле-ЧЛЕНЕ. Однако, они могут быть переданы как параметр любой
другой  ПРОЦЕДУРЕ  или  ФУНКЦИИ.  Локальные Статические данные -
всегда в памяти во время выполнения программы.

Локальные Динамические данные обьявлены в секции данных ПРОЦЕДУ-
РЫ или ФУНКЦИИ, между ключевыми словами PROCEDURE (или FUNCTION)
и CODE. Доступны только в  ПРОЦЕДУРЕ или ФУНКЦИИИ в которой  они
обьявлены; на них может ссылаться только эта ПРОЦЕДУРА или ФУНК-
ЦИЯ. Однако, они могут  быть переданы как параметр  любой другой
ПРОЦЕДУРЕ или  ФУНКЦИИ. Память  используемая локальными  данными
динамически  размещается  в  стеке  при  вызове  PROCEDURE   или
FUNCTION, и освобождается когда PROCEDURE или FUNCTION  законче-
на.


Cтруктурам данных SCREEN, PULLDOWN, FILE, QUEUE, и REPORT назна-
чается Статическая память, обьявлены они Глобальными, Локальными
в модуле-ЧЛЕНЕ, или локальными  в ПРОЦЕДУРЕ или ФУНКЦИИ.  Только
описания переменных локальные в ПРОЦЕДУРЕ или ФУНКЦИИ  размещены
на стеке. Это позволяет  ФУНКЦИИ или ПРОЦЕДУРЕ быть  истинно ре-
курсивной, получая новую  копию Локальных переменных  при каждом
ее вызове, при использовании только одной копии любой структуры.

См. Также: прототипы процедур и функций

                        ФОРМАТ ПРОГРАММЫ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
PROGRAM                                      (Обьявить программу)
ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             PROGRAM
            [MAP
	       прототипы
             .]
             глобальные данные
	     CODE
	     операторы
	    [RETURN]
	     процедуры или функции
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

MAP              Описание глобальных процедур и функций.

прототипы        Обьявления PROCEDURE или FUNCTION.

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

CODE             Начало блока выполнимых операторов.

операторы        Выполнимые инструкции программы.

RETURN           Завершает выполнение программы. Возвращает  уп-
                 равление операционной системе.

Процедуры или    Исходный текст для процедур и функций в  Модуле
Функции          PROGRAM.

Оператор PROGRAM  - первое  описание в  исходном модуле Кларион-
программы. Ему могут предшествовать либо комментарии к исходному
тексту, либо директивы компилятора  TITLE & SUBTITLE. Имя  файла
исходного текста ПРОГРАММЫ используется  как имя файла для  объ-
ектного  (.OBJ)  и  исполняемого  (.EXE) модулей при компиляции.
Оператор PROGRAM может иметь метку, но метка игнорируется компи-
лятором.

ПРОГРАММА с PROCEDURE и-или FUNCTION должна иметь MAP-структуру.
MAP обьявляет прототипы функций и-или процедур. Любая  PROCEDURE
или  FUNCTION  содержащаяся  в  отдельном файле исходного текста
должна быть обьявлена в структуре MODULE в пределах MAP.

Данные обьявленные в модуле PROGRAM, между PROGRAM и CODE, явля-
ется "Глобальными Статическими данными" и доступны из любой ПРО-
ЦЕДУРЫ или ФУНКЦИИ в ПРОГРАММЕ.

Пример:

             PROGRAM              !Пробное описание программы
Fahrenheit   REAL                 !Описание глобальных данных
Centigrade   REAL
             CODE                 !Hачало выполняемого кода
             SETCOLOR(7)
             BLANK
             SHOW(4,20,'Введи температуру по Фаренгейту: ')
             Fahrenheit = ENTRY(4,50.@N-04)
             Centigrade = (Fahrenheit - 32) / 1.8
             SHOW(6,20,'Температура по Цельсию: ')
             SHOW(6,50,Centigrade,@N-04)
             SHOW(8,20,'Press any key to exit')
             ASK

См. Также: MAP, MODULE, PROCEDURE, FUNCTION, Глобальные, Локаль-
           ные, Статические и Динамические данные

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
MEMBER              (Идентифицирует принадлежность модуля-члена)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             MEMBER (программа)
            [MAP
	       прототипы
             .]
[метка]      локальные данные
	     процедуры или функции
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Программа        Строковая константа, содержащая имя файла  (без
		 расширения) модуля PROGRAM. Этот параметр  тре-
		 буется.

MAP              Описание  локальных процедур  и функций.  Любые
		 процедуры или  функции обьявленные  здесь могут
		 быть использованы  только теми  процедурами или
		 функциями, чей код находится в этом модуле-ЧЛЕ-
		 НЕ.

Прототипы        Обьявления ПРОЦЕДУР или ФУНКЦИЙ.

Локальные данные Обьявление локальных Статических данных,  кото-
		 рые могут использоваться только теми процедура-
		 ми  и  функциями  чей  исходный код находится в
		 этом модуле-ЧЛЕНЕ.

Процедуры или    Исходный код для процедур и функций модуля-ЧЛЕ-
Функции          НА.

MEMBER - первый оператор  в исходном модуле который  не является
PROGRAM-модулем. Ему могут  предшествовать только комментарии  к
исходному тексту и-или директивы компилятора или TITLE и SUBTIT-
LE. Это слово требуется в начале любого исходного файла  который
содержит процедуры и-или ФУНКЦИИ которые используются в ПРОГРАМ-
МЕ. Оператор MEMBER идентифицирует программу к которой принадле-
жит данный исходный МОДУЛЬ.

Модуль-ЧЛЕНА может иметь собственную MAP-структуру. Процедуры  и
функции обьявленные в этой MAP доступны только другим процедурам
и  функциям  в  этом  модуле-ЧЛЕНЕ.  Исходный код для процедур и
функций обьявленных в MAP этого модуля-ЧЛЕНА может содержаться в
файле самого модуля-ЧЛЕНА, или  другом файле. Если исходный  код
для ПРОЦЕДУРЫ или ФУНКЦИИ обьявленной в MAP модуля-ЧЛЕНА  содер-
жится в отдельном файле, прототип такой процедуры и-или  функции
должен быть обьявлен в  структуре MODULE в пределах  MAP данного
модуля-ЧЛЕНА. Этот отдельный  исходный файл модуля-ЧЛЕНА  должен
также содержать собственную MAP, которая обьявляет тот же  самый
прототип для  этой ПРОЦЕДУРЫ  или ФУНКЦИИ.  Любая PROCEDURE  или
FUNCTION не обьявленная в Глобальной MAP (ПРОГРАММЫ) должна быть
обьявлена в локальной MAP в МОДУЛЕ-ЧЛЕНЕ который содержит исход-
ный код.

Данные  обьявленные  в  модуле-ЧЛЕНЕ,  между  ключевыми  словами
MEMBER и PROCEDURE или FUNCTION, является "Локальными  Статичес-
кими  данными"  и  к  ним  могут обращаться только PROCEDURE или
FUNCTION в пределах модуля.

Пример:

             MEMBER('OrderSys')
                         !Модуль относится к программе OrderSys
             MAP         !Описываем локальные процедуры
               Func1(STRING),STRING
                         !Func1 известна только в этом модуле
             .
LocalData    STRING(10)  !Описываем данные, локальные для данно-
			 !го модуля-ЧЛЕHА

HistOrd      PROCEDURE   !Описание процедуры HistOrd
HistData     STRING(10)  !Данные, локальные для PROCEDURE
             CODE
             LocalData = Func1(HistData)

HistOrd2     PROCEDURE  !Еще одна процедура
             CODE
             LocalData = Func1(LocalData)

Funcl        FUNCTION(RecField)
             CODE


См. Также: MODULE,  PROCEDURE, FUNCTION, Глобальные,  Локальные,
	   Статические и Динамические данные

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
MAP                  (Обьявить прототипы ПРОЦЕДУР и-или ФУНКЦИЙ)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	     MAP
	       прототипы
	      [MODULE()
	         прототипы
               .]
             .
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

прототипы  Обьявление ПРОЦЕДУР или ФУНКЦИЙ.

MODULE     Обьявление исходного модуля-члена.

MAP-структура  содержит  прототипы,  которые  описывают функции,
процедуры и внешние исходные модули используемые в ПРОГРАММЕ или
модуле-ЧЛЕНЕ. MAP обьявленная в PROGRAM-модуле обьявляет  ПРОЦЕ-
ДУРЫ или ФУНКЦИИ которые доступны  повсюду в программое.  MAP  в
модуле-ЧЛЕНЕ обьявляет  ПРОЦЕДУРЫ или  ФУНКЦИИ которые  доступны
только в этом модуле-ЧЛЕНЕ.

Пример:

Один файл содержит
Sample       PROGRAM              !Программа Sample в sample.cla
             MAP                  !Hачало глобальной MAP
               LoadIt             !процедура "загрузи ЭТО"
             .                    !Конец map

Отдельный файл содержит:
             MEMBER('Sample')     !Обьявить модуль-ЧЛЕН
             MAP                  !Начать местную MAP
	       ComputeIt          !процедура "Вычисли ЭТО"
	     .                    !Конец MAP


См. Также: PROGRAM, MEMBER, MODULE, прототипы ПРОЦЕДУР и ФУHКЦИЙ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
МОДУЛЬ                         (указывает файл с модулем-ЧЛЕНОМ)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             MODULE(sourcefile)
               прототип процедурыe
               прототип функции
             .
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

sourcefile     Строковая константа. Если sourcefile содержит ис-
	       ходный код на Кларион, то задается имя файла (без
	       расширения)  который  содержит  ПРОЦЕДУРЫ   и-или
	       ФУНКЦИИ. Если sourcefile - внешняя библиотека, то
	       строка может содержать любой уникальный идентифи-
	       катор.

прототип       прототип ПРОЦЕДУРЫ содержащейся в sourcefile.
Процедуры

прототип       прототип ФУНКЦИИ содержащейся в sourcefile.
Функции

Структура MODULE именует модуль-ЧЛЕН. Он содержит прототипы  для
ПРОЦЕДУР и ФУНКЦИЙ  содержащихся в sourcefile.  Структура MODULE
может только быть обьявлена в пределах MAP-структуры.

Пример:

   Файл "sample.cla" содержит:
             PROGRAM              !программа Sample в sample.cla
             MAP                  !Hачало MAP
               MODULE('Loadit')   !  исходный модуль loadit.cla
                 LoadIt           !    процедура load it
               .                  !  конец MODULE
               MODULE('Compute')  !  исходный модуль compute.cla
                 ComputeIt        !     процедура compute it
               .                  !  конец MODULE
             .                    !конец MAP

   Файл "loadit.cla" содержит:
             MEMBER('Sample')     !Описываем модуль-ЧЛЕH
             MAP                  !Hачало локальной MAP
	       MODULE('Process')  !  исходный модуль process.cla
	         ProcessIt        !    процедура process it
	       .                  !  конец MODULE
	     .                    !конец MAP


См. Также: MEMBER, MAP, прототипы ПРОЦЕДУР и ФУHКЦИЙ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Прототипы ПРОЦЕДУР и ФУHКЦИЙ
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
   имя[(список параметров)][,возвращаемый тип][,соглашение вы-
				            зова][,RAW][,NAME()]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Имя              Метка оператора PROCEDURE или FUNCTION.

Список
параметров	 типы данных переданных ПРОЦЕДУРЕ или ФУНКЦИИ  в
		 качестве параметров

возвращаемый тип Тип данных, который возвращает FUNCTION.

Соглашения
Вызова           Задает паскалевский или С-подобный вид  переда-
		 чи параметров через стек.

RAW              Указывет, что параметры STRING или GROUP  пере-
		 дают только адрес в памяти.

NAME  		 Определяет замену, "внешнее" имя для  ПРОЦЕДУРЫ
		 или ФУНКЦИИ.

Все ПРОЦЕДУРЫ и  ФУНКЦИИ в ПРОГРАММЕ  должны быть обьявлены  как
прототипы в MAP. Прототип состоит из: имяени ПРОЦЕДУРЫ или ФУНК-
ЦИИ,  необязательного  списка  параметров,  и возвращаемого типа
данных (если описывается FUNCTION). Если PROCEDURE или  FUNCTION
библиотека, написанная  на другом  языке, C  или ПАСКАЛЕ,  может
быть  указано  соглашение  о  вызове  (передаче параметров через
стек. Также может быть определено внешнее (external) ИМЯ.

Необязательный список параметров - список типов данных которые
передаются ПРОЦЕДУРЕ или ФУНКЦИИ, разделяются запятыми и заклю-
чается в круглые скобкаи. Любой параметр который может быть опу-
щен при вызове PROCEDURE или FUNCTION, должен быть в список па-
раметров прототипа и заключаться в угловые скобки ( < > ). Есть
три типа параметров которые могут быть пропущены: параметры-
значения, параметры-переменные, и параметры-указатели (?).

Параметры-значенияи  "передаются  по  значению."  В  "вызванной"
ПРОЦЕДУРЕ или ФУНКЦИИ  используется копия переменной  переданной
в списке  параметров "вызывающей"  ПРОЦЕДУРЫ или  ФУНКЦИИ. "Выз-
ванная" PROCEDURE или FUNCTION не может изменить значение  пере-
менной переданной ей "вызывающей". Параметры-значения  представ-
лены в списке типом данных  в прототипе ПРОЦЕДУРЫ или ФУНКЦИИ  в
MAP. Допустимые типы параметров-значений:

    BYTE SHORT USHORT LONG ULONG SREAL REAL DATE TIME STRING

Параметры-переменные "передаются по адресу". Переменная передан-
ная по адресу имеет только один адрес в памяти. Изменение значе-
ния переменной в "вызванной" ПРОЦЕДУРЕ или ФУНКЦИИ изменяет зна-
чение  самой  переменной,  а  не  ее копии. Параметры-переменные
представлены в списке типами данных со звездочкой (*) в прототи-
пе ПРОЦЕДУРЫ или ФУНКЦИИ в MAP. Допустимые типы параметров-пере-
менных:

   *BYTE *SHORT *USHORT *LONG *ULONG *SREAL *REAL *DATE *TIME
   *STRING *PSTRING *CSTRING *GROUP

Параметры-указатели  передают  имя  структуры данных "вызванной"
ПРОЦЕДУРЕ или ФУНКЦИИ. Передача указателя позволяет  "вызванной"
ПРОЦЕДУРЕ или ФУНКЦИИ  использовать те команды  Кларион, которые
требуют метку структуры как параметр. Параметры-указатели  пред-
ставлены  в  списке  типом  указатель  в прототипе ПРОЦЕДУРЫ или
ФУНКЦИИ в MAP.  Параметры-указатели всегда "передаются  по адре-
су." Допустимые типы параметров-указателей:

   FILE KEY INDEX QUEUE SCREEN  REPORT PULLDOWN

FUNCTION должна ВОЗВРАЩАТЬ (RETURN) значение. Тип данных который
нужно возвратить внесен в список, отделяется запятой, после нео-
бязательного  списка  параметров.  Допустимые  типы результатов,
возвращаемых функцией:

   BYTE SHORT USHORT LONG ULONG SREAL REAL DATE TIME STRING

Вы можете, но не обязаны, указать способ передачи параметров - C
или ПАСКАЛЬ  для вашей  ПРОЦЕДУРЫ или  ФУНКЦИИ. Это обеспечивает
совместимость библиотеками написанными на других языках. Если вы
не указываете тип соглашения о вызове, по умолчанию  испоьзуется
внутреннее, основанное на регистрах соглашение.

Признак RAW позволяет вам передавать только адрес памяти  СТРОКИ
или ГРУППЫ, либо как параметр-значение, либо как  параметр-пере-
менную. Обычно, параметры STRING или GROUP передают  адресату(?)
еще и длину  строки. Признак RAW  подавляет передачу длины.  Это
наиболее полезно для функций внешних библиотек, которые  ожидают
получить только адрес строки.

Признак NAME обеспечивает внешнее имя для ПРОЦЕДУРЫ или ФУНКЦИИ.
Это также сделано  для совместимости с  библиотеками написанными
на других  языках. Например:  В некоторых  компиляторах языка C,
при C-шном соглашении о вызове заданном для функции,  компилятор
добавляет подчеркивание к имени функции. Признак NAME  позволяет
линкеру разрешить нормальное имя функции не заставляя  программу
на Кларион обращаться  к функции с  именем, начинающимся с  под-
черкивания.

Пример:

      MAP
        MODULE('Test')
             !'test.cla' содержит эту процедуру и функции
           MyProcl(LONG)     !LONG параметр-значение
           MyProc2(<*LONG>)  !Hеобязательный LONG параметр-пере-
			     !менная
           MyFuncl(*SREAL),REAL,C
             !SREAL параметр-переменная, возвращаем REAL,
             !C-шное соглашение вызова
           MyFunc2(FILE),STRING
             !FILE параметр-указатель, возвращаем STRING
        .                          !конец MODULE и MAP
        MODULE('Party3.Obj')       !third-party библиотека
           Func46(*CSTRING),REAL,C,RAW
             !Передаем только адрес CSTRING в C-функцию
           Func48(REAL),REAL,PASCAL  !PASCALевский вызов
           Func49(SREAL),REAL,C,NAME('_func49')
             !C-шный вызов и внешнее имя функции
      . .                          !конец MODULE и MAP


См. Также: MAP, MEMBER, MODULE, NAME, RETURN

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
PROCEDURE                                   (Обьявить процедуру)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
Метка        PROCEDURE (список параметров)
[Метка]      Локальные данные
	     CODE
	       операторы
            [RETURN]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Список параметров        Необязательный список переменных, кото-
			 рые передают значения ПРОЦЕДУРЕ.   Этот
			 список определяет имя каждого параметра
			 используемого в пределах ИСХОДНОГО кода
			 процедуры.  Каждый  параметр отделяется
			 запятой. Тип  данных каждого  параметра
			 указан  в  прототипе  процедуры  в MAP-
			 структуре.

Локальные данные         Обьявите Локальные Динамические данные,
			 которые могут  использоваться только  в
			 этой процедуре.

CODE                     Начало выполнимых операторов.

операторы                Выполнимые инструкции программы.

RETURN           	 Завершить выполнение  процедуры.   Вер-
			 нуться  в  точку,  из которой процедура
			 была вызвана.

Декларация ПРОЦЕДУРЫ начинает секцию исходного кода который  мо-
жет быть выполнен  в ПРОГРАММЕ. Процедура  вызывается обращением
к ее метке (и указанием  параметров, если есть в наличии)  как к
исполняемому оператору в  секции кода ПРОГРАММЫ,  ПРОЦЕДУРЫ, или
ФУHКЦИИ. ПРОЦЕДУРА завершается и возвращается в точку вызова ко-
гда выполнен оператор RETURN. Неявное RETURN происходит в  конце
выполнимого кода. Конец выполнимого кода для ПРОЦЕДУРЫ определен
как конец исходного файла или начала новой ФУНКЦИИ, ROUTINE, или
другой ПРОЦЕДУРЫ.

Данные обьявленные в пределах ПРОЦЕДУРЫ, между ключевыми  слова-
ми PROCEDURE и CODE, являются "Локальными Динамическими данными"
к которым может обращаться только данная ПРОЦЕДУРА (если они  не
переданы как параметр другой ПРОЦЕДУРЕ или ФУНКЦИИ). Эти  данные
кладутся на стек, память под них выделяется при входе в процеду-
ру, и освобождается при ее завершении.

ПРОЦЕДУРА должна быть обьявлена в MAP модуля-ЧЛЕHА или ПРОГРАМ-
МЫ. Если она обьявлена в MAP ПРОГРАММЫ, то она доступна любой
другой процедуре или функции в программе. Если же обьявлена в
MAP модуля-ЧЛЕHА, то процедура доступна только другим процеду-
рам или функциям из этого модуля-ЧЛЕHА.

Пример:

      PROGRAM           !Пример кода программы
      MAP
        OpenFile(FILE)  !Прототип процедуры с параметром
        ShoTime         !Прототип процедуры без параметра
      .
      CODE
      OpenFile(FileOne) !Вызов процедуры для открытия файла
      IDLE(ShoTime)   !Вызывать ShoTime пока ACCEPT ждет ввода
      :                 !Еще какие-то операторы

OpenFile     PROCEDURE(AnyFile)   !Открывает любой файл
             CODE                 !Hачало секции кода
             OPEN(AnyFile)        !Открыть файл
             IF ERRORCODE() = 2   !Если файл не найден
               CREATE(AnyFile)    !  создать его
             .                    !конец условия IF
             RETURN               !Вернуться обратно

ShoTime      PROCEDURE            !Показывает время
Time         LONG                 !Локальная переменная
             CODE                 !Hачало секции кода
             Time = CLOCK()       !получить системное время
             SHOW(1,1,Time,@T3)   !Показать время
             RETURN               !Вернуться обратно


См. Также: прототипы ПРОЦЕДУР и ФУHКЦИЙ, Глобальные,  Локальные,
	   Статические и Динамические Данные

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
FUNCTION                                      (Обьявить функцию)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
метка        FUNCTION(список параметров)
[метка]      локальные данные
             CODE
               операторы
             RETURN(значение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Список параметров        Необязательный список переменных кото-
			 рые передают значения ФУНКЦИИ.  Этот
			 список определяет имя каждого параметра
			 используемого в пределах исходного кода
			 ФУHКЦИИ. Каждый параметр отделяется за-
			 пятой. Тип данных каждого параметра за-
			 дается в прототипе функции в MAP-струк-
			 туре.

Локальные данные         Обьявляет Локальные Динамические данные
			 которые  могут  использоваться   только
			 этой функцией.

CODE                     Начало выполнимых операторов.

операторы                Выполнимые инструкции программы.

RETURN		         Завершает выполнение функции и  возвра-
			 щает  значение  в  выражение  в котором
			 функция использовалась.

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

Декларация ФУНКЦИИ начинает секцию исходного кода который  может
быть выполнен обращением к метке ФУНКЦИИ (со списком параметров,
если есть). Функция  может использоваться как  компонент выраже-
ния, или  параметр ПРОЦЕДУРЫ  или другой  ФУНКЦИИ в  секции кода
ПРОГРАММЫ. Выполнение ФУНКЦИИ завершается (требуемым) оператором
RETURN в ее секции CODE.

Данные обьявленные в  пределах ФУНКЦИИ, между  ключевыми словами
FUNCTION и CODE,  являются "Локальными Динамическими  данными" к
которым может обращаться только данная ФУНКЦИЯ (если они не  пе-
реданы как  параметр другой  ПРОЦЕДУРЕ или  ФУНКЦИИ). Эти данные
кладутся на стек, память под них выделяется при входе в функцию,
и освобождается при выходе из нее.

ФУНКЦИЯ должна быть обьявлена в MAP модуля-ЧЛЕHА или  ПРОГРАММЫ.
Если она обьявлена в MAP ПРОГРАММЫ, то она доступна любой другой
процедуре или функции в программе. Если же обьявлена в MAP моду-
ля-ЧЛЕHА, то функция доступна только другим процедурам или функ-
циям из этого модуля-ЧЛЕHА.

Пример:

             PROGRAM
             MAP
               FulIName(STRING.STRING,STRING),STRING
                        !Прототип функции с параметрами
               DayString,STRING
                        !Прототип функции без параметров
             .
             CODE
             :                  !Глобальные операторы
             :

FulIName     FUNCTION(Last,First,lnit) !Функция полного имени

             CODE                 !Hачало секции кода
             IF Init              !Если нет среднего инициала
               RETURN(CLIP(First) & ' ' & Last)
                                  !  вернуть полное имя
             ELSE                 !в противном случае
               RETURN(CLIP(First) & ' ' & Init & '. ' & Last)
                                  !  вернуть полное имя
             .                    !конец условия if
DayString    FUNCTION             !функция названия дня

             CODE                 !Hачало секции кода
             Day# = (TODAY()%7)+1 !Получить день недели из
				  !системной даты
             EXECUTE Day#         !Execute, возвращает название
				  !дня
               RETURN('Воскресенье')
               RETURN('Понедельник')
               RETURN('Вторник')
               RETURN('Среда')
               RETURN('Четверг')
               RETURN('Пятница')
               RETURN('Суббота')
             .                    !Конец структуры execute

См. Также: прототипы ПРОЦЕДУР и ФУHКЦИЙ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CODE                               (Начать выполнимые операторы)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	     CODE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Оператор CODE отделяет секцию декларации данных от секции выпол-
нимых операторов в  пределах ПРОГРАММЫ, ПРОЦЕДУРЫ,  или ФУНКЦИИ.
Первый оператор, который  выполнится в ПРОГРАММЕ,  ПРОЦЕДУРЕ или
ФУНКЦИИ - оператор после слова CODE.

Пример:

OrdList      PROCEDURE  !Объявляем процедуру
                        !Здесь идет описание данных
             CODE   !Это начало секции "Кода"
                        !Здесь идут выполнимые операторы

См. Также: PROGRAM, PROCEDURE, FUNCTION

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ROUTINE                        (Обьявить локальную подпрограмму)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
метка         ROUTINE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
метка              Имя подпрограммы.

ROUTINE обьявляет начало  местной подпрограммы. Она  локальна по
отношению к ПРОЦЕДУРЕ или ФУНКЦИИ в которой она описана и должна
быть в  конце секции  CODE ПРОЦЕДУРЫ  или ФУНКЦИИ  к которой она
принадлежит.

ROUTINE вызывается оператором DO, за которым идет метка  подпро-
граммы. Управление Программе после выполнения ROUTINE  возвраща-
ется оператору после слова DO. ROUTINE заканчивается концом  ис-
ходного  модуля,  или  началом  другой  ROUTINE,  ПРОЦЕДУРЫ, или
ФУНКЦИЙ. Оператор RETURN может также использоваться для заверше-
ния кода ROUTINE (подобно RETURN в ПРОЦЕДУРЕ).

Пример:

SomeProc     PROCEDURE
             CODE
               !операторы
             DO CheckPage    !вызов подрограммы
               !еще операторы

CheckPage    ROUTINE         !начало подпрограммы, и одновремен-
			     !но - окончание процедуры
             IF LineCount > 55    !Если больше 55 строк
               PRINT(@FF)         !  делаем перевод формата
               LineCount = 0      !  сбросить счетчик строк
               EXIT               !  выход из подпрограммы
             .                    !Конец условия if


См. Также: EXIT, DO

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
END                                        (Завершить структуру)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	     END
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

END завершает описание данных или составной выполнимый оператор.
Функционально эквивалентен точке (.)

Пример:

Customer     FILE,DRIVER('Clarion')    !Описание файла
               RECORD                  !  начать описание записи
Name             STRING(20)
Number           LONG
               END                     !  конец описания записи
             END                       !конец описания файла

             CODE
             IF Number <> SavNumber    !начало структуры if
               DO GetNumber
             END                       !конец структуры if

             CASE Action               !начало структуры case
             OF  1
               DO AddRec
             OF  2
               DO ChgRec
             OF  3
               DO DelRec
             END                       !конец структуры case


                     ДИРЕКТИВЫ КОМПИЛЯТОРА

Директивы Компилятора  - операторы  которые говорят  компилятору
выполнить некоторое действие во время компиляции.  Эти операторы
не включены в выполнимый объектный код программы который  произ-
водит компилятор.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BEGIN                                (Определить структуру кода)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	     BEGIN
	       Операторы
             .
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

операторы       Выполнимые инструкции программы.

Директива компилятора BEGIN заставляет компилятор  рассматривать
группу операторов как  единую структуру. BEGIN  структура должна
завершаться точкой или оператором END.

BEGIN используется в  структуре управления EXECUTE  чтобы позво-
лить обрабатывать несколько строк кода как одну.

Пример:

             EXECUTE Value
               Procl         !Выполняется если Value = 1
               BEGIN         !Выполняется если Value = 2
                 Value+=1
                 Proc2
               .
               Proc3         !Выполняется если Value = 3
             .

См. Также: EXECUTE

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
COMPILE        (Определить источник который нужно компилировать)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             COMPILE(завершитель[,выражение])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

Выражение        Выражение,  позволяющее  условное    выполнение
		 COMPILE. Выражение имеет вид: EQUATE = целое.

Директива COMPILE определяет блок строк исходного кода,  которые
нужно включить в компиляцию. Включенный блок начинается с дирек-
тивы COMPILE и оканчивается строкой, которая содержит  строковую
константу-завершитель.
???
Сама строка-завершитель включается в COMPILE-блок.
???

Необязательный параметр "выражение" разрешает условный  COMPILE.
Форма выражения однозначна. Это  - метка оператора EQUATE,  либо
установленный переключатель CONDITIONAL в Проектной Системе, со-
провождаемsй знаком  равенства (=),  за которым  идет целая кон-
станта. Код  между COMPILE  и завершителем  компилируется только
если выражение истинно. Хотя выражение не требуется, COMPILE без
параметра "выражение"  не нужен,  потому что  весь исходный  код
компилируется если явно не опущен с помощью OMIT. COMPILE и OMIT
 - это, как  говорят в Одессе,  две большие разницы,  и не могут
быть вложены друг в друга.

Пример:

Demo         EQUATE(1)          !Задать EQUATE-значение Demo
             CODE
             COMPILE('EndDemoChk',Demo = 1)
                       !Компилировать только если Demo=1
               DO DemoCheck     !Проверка ограничителей
EndDemoChk                      !Конец кода условного COMPILE

См. Также: OMIT, EQUATE

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
EJECT                           (Начать новую страницу листинга)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             EJECT([подзаголовок модуля])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

Директива EJECT начинает новую страницу и, необязательно,  новый
подзаголовок модуля в листинге Кларион. Если подзаголовок модуля
опущен, то для следующей страницы будет задействован  подзаголо-
вок установленный предыдущими директивами SUBTITLE или EJECT.

Пример:

      EJECT('Описания файлов')  !Hачать новую страницу с новым
				!подзаголовком

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
EMBED                          (Вложенная секция исходного кода)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             EMBED(строка)
               операторы вложенного исходного кода
             .
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

Директива EMBED идентифицирует  блок вложенного исходного  кода.
Блок начинается  директивой EMBED  и завершается  оператором END
или точкой.

Директива EMBED заставляет компилятор нумеровать строки исходно-
го кода относительно начала вложенного кода. Строка используется
в сообщениях об ошибках чтобы определить какой именно  вложенный
код содержит ошибку. После завершающей точки или оператора  END,
нумерация строк компилятором продолжается с того места, где  она
была прервана директивой EMBED (включая число строк  содержащих-
ся во вложенном коде).

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

Пример:

      CODE
      SETCOLOR(7)                      !Строка  1
      BLANK                            !Строка  2
      SETCOLOR()                       !Строка  3
      EMBED('EndEmbed','Source One')   !Строка  4
        SETCOLOR(23)                   !Вложенная Строка 1
        SHOW(25,35,'Message')          !Вложенная Строка 2
        SETCOLOR()                     !Вложенная Строка 3
      .                         !Строка 8, конец вложенного кода
      OPEN(Screen)                     !Строка  9

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INCLUDE                     (Компилировать код из другого файла)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             INCLUDE(имя_файла[,секция])[,LIST]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
имя_файла       строковая постоянная которая содержит специфика-
		цию DOS-файла с исходным текстом. Если не указа-
		но расширение, то по умолчанию принимается .CLA.

Секция          строковая постоянная которая является  строковым
		параметром директивы  SECTION отмечающей  начало
		исходного кода который нужно включить.

LIST            Поместить вклченный код в листинг.

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

Компилятор использует файл  Переназначений (TS.RED) чтобы  найти
требуемый файл. Файл ищется  по маршруту, заданному для  данного
типа  имени_файла  (обычно  по  расширению). Это делает ненужным
задание полного пути к имени_файла, который нужно включить.  Об-
суждение файла Переназначений  находится в Руководстве  програм-
миста.

Пример:

GenLedger    PROCEDURE                 !Описываем процедуру
             INCLUDE('filedefs.cla')
                                  !Здесь включим описания файлов
             CODE                      !Hачало секции кода
             INCLUDE('Setups','ChkErr')
                            !Включаем секцию проверки ошибок из
			    !setups.cla

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LIST    (Помещает включенный исходный код в листинг компилятора)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	     LIST
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

Пример:

      INCLUDE('filedefs.cla'),LIST
              !Включить описания файлов и поместить их в листинг

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
OMIT                  (Указывает не подлежащий компиляции текст)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             OMIT(завершитель[,выражение])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

завершитель      строковая постоянная которая отмечает последнюю
		 строку блока исходного кода.

Выражение        Выражение позволяющее условное выполнение OMIT,
		 выражение должно иметь вид: EQUATE = целое.

OMIT директива  определяет блок  исходных линий  кода которые не
надо  компилировать.  Эти  строки  могут содержать комментарии к
исходному коду или  секцию кода который  был "отключен" для  от-
ладочных целей.  Опущенный блок  начинается с  директивы OMIT  и
завершается  строкой,  которая  содержит  ту  же самую строковую
константу, что и завершитель. Сама строка-завершитель тоже  вхо-
дит в OMIT-блок.

Необязательный  параметр  "выражение"  разрешает  условный OMIT.
Форма  выражения  однозначна.  Это  метка оператора EQUATE, либо
установленный переключатель CONDITIONAL в Проектной Системе, со-
провождаемsй знаком  равенства (=),  за которым  идет целая кон-
станта. Директива OMIT выполняется только, если выражение истин-
но.

COMPILE и OMIT - противоположны друг другу и не могут быть вза-
имно вложены.

Пример:

        OMIT('**END**')        !Безусловный OMIT
      *************************************************
      *
      * Главный цикл программы
      *
      *************************************************
      **END**

Demo         EQUATE(0)       !Задает EQUATE-значение Demo
             CODE            !Опустить только, если Demo
	     		     !равно нулю
             OMIT('EndDemoChk',Demo = 0)
                             !Проверка ограничителей
               DO DemoCheck  !конец опущенного кода
EndDemoChk

См. Также: COMPILE, EQUATE

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SECTION                       (Определить секцию исходного кода)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SECTION(строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Строка             строковая постоянная который именует СЕКЦИЮ.

Директива компилятора SECTION описывает начало блока выполнимого
исходного кода или описаний данных. SECTION используется как не-
обязательный параметр директивы INCLUDE чтобы включить  конкрет-
ный блок исходного  кода. SECTION завершается  следующей СЕКЦИЕЙ
или концом файла.

Пример:

             SECTION('FirstSection')  !Hачало секции
FieldOne     STRING(20)
FieldTwo     LONG
             SECTION('SecondSection')
                         !Заканчиваем предыдущую, начинаем новую
			 !секцию
               IF Number <> SavNumber
                 DO GetNumber
               .
             SECTION('ThirdSection')
                         !Заканчиваем предыдущую, начинаем новую
			 !секцию
               CASE   Action
               OF 1
                 DO AddRec
               OF 2
                 DO ChgRec
               OF 3
                 DO DelRec    !Третья секция завершается с кон-
               .              !цом файла

См. Также: INCLUDE

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SUBTITLE      			  (Печатать подзаголовок МОДУЛЯ)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SUBTITLE(подзаголовок модуля)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

SUBTITLE печатает в первой колонке третьей строки листинга  Кла-
рион.  Директива  SUBTITLE  не  печатается в листинге. Директива
SUBTITLE должна быть помещена в начале исходного модуля до  опи-
саний PROGRAM или MEMBER.  Подзаголовок остается одним и  тем же
на каждой  странице листинга,  если его  не измененит  директива
EJECT.

Пример:

             SUBTITLE ('Описания Глобальных Данных')

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
TITLE                                (Печатает заголовок МОДУЛЯ)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             TITLE(заголовок модуля)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

TITLE печатает в первой колонке первой строки листинга  Кларион.
Директива TITLE не печатается в листинге. Директива TITLE должна
быть помещена в начале исходного модуля до описаний PROGRAM  или
MEMBER. Заголовок  остается одним  и тем  же на  каждой странице
листинга.

Пример:

             TITLE ('ORDERSYS - Листинг Системы Ввода Заказов')




Яндекс цитирования