Server for Information Technologies
Сервер поддерживается
Центром Информационных Технологий
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Сервер Информационных Технологий содержит море(!) аналитической информации

7. Язык модулей

7.1 <Модуль> (<module>)

Функция

Определяет модуль.

Формат

     <module> ::=
             <module name clause>
             <language clause>
             <module autorization clause>
             [<declare cursor>...]
             < procedure >  ...
     <language clause> ::=
          LANGUAGE { COBOL | FORTRAN | PASCAL | PLI }
     <module autorization clause> ::=
             AUTHORIZATION <module autorization identifier>
     <module autorization identifier> ::=
             <autorization identifier>

Синтаксические правила

  1. Для каждого <определения курсора> (<cursor declare>) в <модуле> (<module>) должна существовать ровно одна <процедура> (<procedure>) в этом <модуле> (<module>), которая содержит <оператор открытия> (<open statement>) со спецификацией <имени курсора> (<cursor name>), объявленного в <объявлении курсора> (<cursor declare>).
  2. <Модуль> (<module>) должен быть ассоциирован с прикладной программой при ее выполнения. Прикладная программа должна быть ассоциирована не более чем с одним <модулем> (<module>).

Общие правила

  1. Если <раздел языка> (<language clause>) <модуля> (<module>) специфицирует COBOL (соответственно FORTRAN, PASCAL, PLI) и если агент, выполняющий вызов <процедуры> (<procedure>) этого <модуля> (<module>), не является стандартной программой на языке COBOL (соответственно FORTRAN, Pascal, PL/1), то результат неопределен.
  2. После выполнения агентом на языке программирования последнего вызова <процедуры> (<procedure>) в <модуле> (<module>) неявно выполняется <оператор фиксации> (<commit statement>) или <оператор отката> (<rollback statement>). Выбор одного из этих <операторов SQL> (<SQL statement>) определяется реализацией. Если имеет место невосстанавлваемая ошибка, то СУБД должна выполнить <оператор отката> (<rollback statement>).

7.2. <Раздел имени модуля> (<module name clause>)

Функция

Задает имя <модуля> (<module>).

Формат

     <module name clause> ::=
              MODULE [<module name>]

Синтаксические правила

  1. <Имя модуля> (<module name>) должно отличаться от <имени модуля> (<module name>) любого другого <модуля> (<module>) в том же окружении. Понятие окружения определяется в реализации.

Общие правила

  1. <Раздел имени модуля> (<module name clause>) определяет необязательный <идентификатор> (<identifier>) как <имя модуля> (<module name>), определяющее содержащий <модуль> (<module>) в данном окружении.

7.3. <Процедура> (<procedure>)

Функция

Определяет процедуру и оператор языка SQL.

Формат

     <procedure> ::=
             PROCEDURE <procedure name>
                       <parameter declaration>...;
             <SQL statment>;
     <parameter declaration>::=
             <parameter name> <data type>
           | <SQLCODE parameter>
     <SQLCODE parameter> ::=
             SQLCODE
     <SQL statement> ::=
             <close statement>
           | <commit statement>
           | <delete statement positioned>
           | <delete statement searched>
           | <fetch statement>
           | <insert statement>
           | <open statement>
           | <rollback statement>
           | <select statement>
           | <update statement positioned>
           | <update statement searched>

Синтаксические правила

  1. <Имя процедуры> (<procedure name>) должно отличаться от <имени процедуры> (<procedure name>) любой другой <процедуры> (<procedure>) в содержащем модуле.
  2. <Имя параметра> <parameter name> в каждом <объявлении параметра> (<parameter declaration>) в <процедуре> (<procedure>) должно отличаться от <имени параметра> (<parameter name>) любого другого <объявления параметра> (<parameter declaration>) в этой процедуры.
  3. Любое <имя параметра> (<parameter name>), содержащееся в <операторе SQL> (<SQL statement>) <процедуры> (<procedure>), должно быть специфицировано в <объявлении параметра> (<parameter declaration>) этой процедуры.
  4. Если <имя столбца> (<column name>) в <операторе SQL> (<SQL statement>) совпадает с <именем параметра> (<parameter name>) в <объявлении параметра> (<parameter declaration>) <процедуры> (<procedure>), содержащей этот <оператор SQL> (<SQL statement>), то <спецификация столбца> (<column specification>), которая содержит это <имя столбца> (<column name>), должна содержать <квалификатор> (<qualifier>).
  5. Законный вызов <процедуры> (<procedure>) должен поставлять n параметров, где n - число <объявлений параметров> (<parameter declaration>) в данной <процедуре> (<procedure>).
  6. Процедура должна содержать ровно один <параметр SQLCODE> (<SQLCODE parameter>). На параметр, соответствующий параметру SQLCODE, ссыля4аются я0как я4на параметр SQLCODE.
  7. <Разделом языка> (<language clause>) процедуры явля<раздел языка> (<language clause>) содержащего <модуля> (<module>).

  8. a) Если <раздел языка> (<language clause>) специфицирует COBOL, то:
    b) Если <раздел языка> (<language clause>) специфицирует FORTRAN, то:
    c) Если <раздел языка> (<language clause>) специфицирует PASCAL, то:
    d) Если <раздел языка> (<language clause>) специфицирует PL1, то:

Общие правила

  1. <Процедура> (<procedure>) определяет процедуру, которая может вызываться определяемым реализацией агентом.
  2. Когда процедура вызывается агентом языка программирования:
    а) Если для этого агента нет активной транзакции, то транзакция фактически инициируется и связывается с этим вызовом и с последующими вызовами этим агентом любой <процедуры> (<procedure>) в содержащем <модуле> (<module>), до тех пор, пока данный агент не закончит эту транзакцию.
    b) Выполняется <оператор SQL> (<SQL statement>) S данной <процедуры> (<procedure>).

  3. а) Если S выполнен успешно, то
    b) Если S выполнен неуспешно, то

Назад | Содержание | Вперед


Comments: info@citmgu.ru
Copyright © CIT