Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

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, то:

      i) Типом параметра SQLCODE должен быть COMPUTATIONAL S9(PC), где PC - определяемая реализацией точность, большая или равная 4.
      ii) Любой <тип данных> (<data type>) в <объявлении параметров> (<parameter declaration>) должен быть CHARACTER или NUMERIC.
      iii) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует <тип данных> (<data type>) CHARACTER(L) c некоторой <длиной> (<lenght>) L, то тип i-ого параметра должен быть буквенно-цифровым типом языка COBOL длины L.
      iv) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует <тип данных> (<data type>) NUMERIC(P,S) c некоторыми <точностью> (<precision>) P и <масштабом> (<scale>) S, то типом i-ого параметра должен быть тип языка COBOL usage DISPLAY SIGN LEADING SEPARATE со следующим PICTURE:
      1. Если S=P, то PICTURE: "S", за которым следует "V", и затем P экземпляров "9".
      2. Если P > S > 0, то PICTURE: "S", за которым следуют P-S экземпляров "9", затем "V" и затем S экземпляров "9".
      3. Если S=O, то PICTURE: "S", за которым следуют P экземпляров "9" и затем необязательное "V".

    b) Если <раздел языка> (<language clause>) специфицирует FORTRAN, то:

      i) Тип параметра SQLCODE должен быть типом INTEGER языка FORTRAN.
      ii) Любой <тип данных> (<data type>) в <объявлении параметра> должен быть CHARACTER, INTEGER, REAL или DOUBLE PRECISION.
      iii) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует <тип данных> (<data type>) CHARACTER(L) с некоторой <длиной> (<lenght>) L, то тип i-ого параметра должен быть типом CHARACTER языка FORTRAN с длиной L.
      vi) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует <тип данных> (<data type>) данных INTEGER, REAL или DOUBLE PRECISION, то тип i-ого параметра должен быть соответственно INTEGER, REAL или DOUBLE PRECISION языка FORTRAN.

    c) Если <раздел языка> (<language clause>) специфицирует PASCAL, то:

      i) Тип параметра SQLCODE должен быть типом INTEGER языка Pascal.
      ii) Любой <тип данных> (<data type>) в <объявлении параметра> (<parameter declaration>) должен быть CHARACTER, INTEGER, или REAL.
      iii) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует <тип данных> (<data type>) CHARACTER(L) с некоторой <длиной> (<lenght>) L, то тип i-ого параметра должен быть типом строки языка Pascal длины L.
      iv) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует <тип данных> (<data type>) INTEGER или REAL, то тип i-ого параметра должен быть соответственно типом INTEGER, или REAL языка Pascal.

    d) Если <раздел языка> (<language clause>) специфицирует PL1, то:

      i) Тип параметра SQLCODE должен быть FIXED BINARY(PP), где РР определяемая реализацией точность, большая или равная 15.
      ii) Любой <тип данных> (<data type>) в <объявлении параметра> (<parameter declaration>) должен быть CHARACTER, DECIMAL, или FLOAT.
      iii) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует тип данных CHARACTER(L) с некоторой <длиной> (<lenght>) L, то тип i-ого параметра должен быть типом CHARACTER языка PL/1 с длиной L.
      vi) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует тип данных DECIMAL(P,S) с некоторыми <точностью> (<precision>) P и <масштабом> (<scale>) S, то тип i-ого параметра должен быть типом FIXED REAL DECIMAL(P,S) языка PL/1.
      v) Если i-ое <объявление параметра> (<parameter declaration>) специфицирует тип данных FLOAT(P) с некоторой <точностью> (<precision>) P, то тип i-ого параметра должнен быть типом FLOAT REAL BINARY (P) языка PL/1.

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

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

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

      i) Если S - <оператор чтения> (<fetch statement>) , для которого следующая строка не существует, то в параметр SQLCODE устанавливается значение 100.
      ii) Если S - <оператор вставки> (<insert statement>), для которого не нашлось ни одной возможной строки, то в параметр SQLCODE устанавливается значение 100.
      iii) Если S - <оператор выборки> (<select statement>), результатом которого явилась пустая таблица, то в параметр SQLCODE устанавливается значение 100.
      iv) Если S - <оператор модификации: поисковый> (<update statement: searched>) или <оператор удаления: поисковый>) (<delete statement: searched>) с поиском, для которых не нашлись объектные строки для модификации или удаления, то в параметр SQLCODE устанавливается значение 100.
      v) Во всех остальных случаях в параметр SQLCODE устанавливается 0.

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

      i) Все изменения, произведенные над базой данных при выполнении S, аннулируются.
      ii) В параметр SQLCODE устанавливается отрицательное число со значением, определяемым реализацией.

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

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...