Приложения

Приложение А. <Программа со встроенным SQL> (<embedded SQL host program>)
(Это дополнение не является неотъемлемой частью стандарта.)

Функция

Специфицирует прикладную программу со встроенным языком SQL.

Формат


     <embedded SQL host program> ::=

               <embedded SQL COBOL program>

             | <embedded SQL FORTRAN program>

             | <embedded SQL  Pascal program>

             | <embedded SQL  PL/1 program>

     <embedded SQL statement> ::=

              <SQL prefix>

               { <declare cursor>

               | <embedded exception declaration>

               | <SQL statement>}

              [<SQL terminator>]

     <SQL prefix> ::=

             EXEC SQL

     <SQL terminator> ::=

             END EXEC | ;

     <embedded SQL declare section> ::=

            <embedded SQL begin declare>

           [<host variable definition>...]

            <embedded SQL end declare>

     <embedded SQL begin declare> ::=

            <SQL prefix> BEGIN DECLARE SECTION

           [<SQL terminator>]

     <embedded SQL end declare> ::=

            <SQL prefix> END DECLARE SECTION

           [<SQL terminator>]

     <host variable definition> ::=

            < COBOL variable definition>

          | < FORTRAN variable definition>

          | <Pascal variable definition>

          | <PL/1 variable definition>

     <embedded variable name> ::=

           :<host identifier>

     <host identifier> ::=

            < COBOL host identifier>

          | < FORTRAN host identifier>

          | <Pascal host identifier>

          | <PL/1 host identifier>

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

  1. <Прикладная программа со встроенным SQL> (<embedded SQL host program>) является прикладной программой, состоящей из текста на языке программирования и текста на SQL. Текст на языке программирования должен удовлетворять требованиям конкретного стандартного языка программирования. Текст на SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <секций объявления SQL> (<embedded SQL declare section>).
  2. <Встроенный оператор SQL> (<embedded SQL statement>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>), содержащиеся в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), должны содержать <терминатор SQL> (<SQL terminator>) END-EXEC. <Встроенный оператор SQL> (<embedded SQL statement>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>), содержащиеся в <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), не должны содержать <терминатор SQL> (<SQL terminator>). <Встроенный оператор SQL> (<embedded SQL statement>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>), содержащиеся в <программе на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>), должны содержать <терминатор SQL> (<SQL terminator>) - точку с запятой. В <программе на языке PASCAL со встроенным SQL> (<embedded SQL PASCAL program>) <объявление начала встроенного SQL> (<embedded SQL begin declare>) должно содержать <терминатор SQL> (<SQL terminator>) - точку с запятой; <объявление конца встроенного SQL> (<embedded SQL end declare>) или <встроенный оператор SQL> (<embedded SQL statement>), непосредственно следующие за <<объявлением начала встроенного SQL> (<embedded SQL begin declare>) или <встроенным оператором SQL> (<embedded SQL statement>), должны содержать <терминатор SQL> - точку с запятой; в остальных случаях <объявление конца встроенного SQL> (<embedded SQL end declare>) или <встроенный оператор SQL> (<embedded SQL statement>) не должны содержать <терминатор SQL>, а должны заканчиваться в соответствии с правилами для операторов языка Pascal.
  3. <Префикс SQL> (<SQL prefix>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>) должны специфицироваться в одной строке, которая не содержит комментариев. В остальных случаях действуют правила продолжения строк и лексем с одной строки на другую и правила размещения комментариев, определенные в языке программирования, на котором написана <программа со встроенным SQL> (<embedded SQL host program>).
  4. <Объявление курсора> (<declare cursor>), содержащееся в <программе со встроенным SQL> (<embedded SQL host program>, должно текстуально предшествовать в тексте этой <программы со встроенным SQL> (<embedded SQL host program> любому <оператору SQL> (<SQL statement>), который ссылается на <имя курсора> (<cursor name>) этого <объявления курсора> (<declare cursor>).
  5. Любой <идентификатор основного языка> (<host identifier>), который появляется во <встроенном операторе SQL> (<embedded SQL statement>) <программы со встроенным SQL> (<embedded SQL host program>, должен быть явно объявлен в точности одном <определении переменной основного языка> (<host variable definition>), содержащемся в <программе со встроенным SQL> (<embedded SQL host program>. Это <определение переменной основного языка> (<host variable definition>) должно появляться в тексте <программы со встроенным SQL> (<embedded SQL host program> до любого <встроенного оператора SQL> (<embedded SQL statement>), ссылающегося на этот <идентификатор основного языка> (<host identifier>). <Определение переменной основного языка> (<host variable definition>) должно быть таким, чтобы ссылки на основе <идентификатора основного языка> (<host identifier>) были законными в каждом <встроенном операторе SQL> (<embedded SQL statement>), ссылающем этот <идентификатор основного языка> (<host identifier>).
  6. <Определение переменной основного языка> (<host variable definition>) определяет тип данных основного языка этого <идентификатора основного языка> (<host identifier>). Для каждого такого типа данных основного языка программирования эквивалентный тип данных SQL специфицируется в Приложении С, "<Программа на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>)", Приложении D, "<Программа на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>)", Приложении E, "<Программа на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>)" и Приложении F, "<Программа на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>)".
  7. Для данной <программа со встроенным SQL> (<embedded SQL host program> H существует SQL <модуль> (<module>) M, который получается из Н по следующим правилам:
    а) М содержит <раздел имени модуля> (<module name clause>) c определяемым реализацией или опускаемым <именем модуля> (<module name>).
    b) М содержит <раздел языка> (<language clause>), которой специфицирует COBOL, FORTRAN, PASCAL или PL/1, и Н является соответственно <программой на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), <программой на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), <программой на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>) или <программой на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>).
    c) М содержит <раздел полномочий модуля> (<module authorization clause>), где <идентификатор полномочий модуля> (<module authorization identifier>) определяется реализацией.
    d) Для каждого <объявления курсора> (<declare cursor>) EC, содержащегося в H, М содержит одно <объявление курсора> (<declare cursor>) PC и одну процедуру (<procedure>) PS, которая содержит <оператор открытия> (<open cursor>), ссылающийся на PC. <Имя процедуры> (<procedure name>) PS определяется реализацией. PC является копией EC, в которой каждое отдельное <имя встроенной переменной> (<embedded variable name>) замещено на определяемое реализацией <имя параметра> (<parameter name>). PS содержит <объявление параметра> (<parameter declaration>) для каждого <имени параметра> (<parameter name>), содержащегося в PC, и <объявление параметра> (<parameter declaration>) SQLCODE. Порядок <объявлений параметров> (<parameter declaration>) в PS определяется реализацией. <Объявление параметра> (<parameter declaration>), который соответствует данному отдельному <имени встроенной переменной> (<embedded variable name>) V, появляющейся в EC, специфицирует отдельное <имя параметра> (<parameter name>), которым заменялось V, <тип данных> (<data type>) SQL которого эквивалентен типу данных V в основном языке.
    e) М содержит <процедуру> (<procedure>), соответствующую каждому <оператору SQL> (<SQL statement>), содержащемуся в H. <Процедура> (<procedure>) PS модуля М, соответствующая <оператору SQL> (<SQL statement>) ES из H, определяется следующим образом:
  8. Для заданной <программы со встроенным SQL> (<embedded SQL host program> H существует программа Р на основном языке, стандартным образом полученная из H по следующим правилам:
    а) Все <объявления начала встроенного SQL> (<embedded SQL begin declare>) и <объявления конца встроенного SQL> <embedded SQL end declare> удалены.
    b) Все <встроенные операторы SQL> (<embedded SQL statement>), содержащие <объявление курсора> (<declare cursor>) или <встроенное объявление исключительной ситуции> (<embedded exception declaration> , удалены.
    c) Каждый <встроенный оператор SQL> (<embedded SQL statement>), содержащий <оператор SQL> (<SQL statement>), заменен на операторы основного языка, которые выполняют следующие действия:
  9. Порождение программы Р и <модуля> (<module>) М из текста <программы со встроенным SQL> (<embedded SQL host program> Н фактически предшествует выполнению любых команд манипулирования текстом программы на основном языке, таких как включение или копирование текста.
  10. Данная <программа со встроенным SQL> (<embedded SQL host program> Н с извлекаемым модулем М и извлекаемой программой Р определена так, как сказано выше:
    а) Извлекаемый <модуль> (<module>) М программы Н должен быть стандартным <модулем> (<module>) SQL, как он специфицируется Форматами и Синтаксическими правилами данного стандарта.
    b) Если программа Н является <программой на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), то извлекаемая программа Р должна соответствовать стандарту программы на языке COBOL. Если программа Н является <программой на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), то извлекаемая программа Р должна соответствовать стандарту программы на языке FORTRAN. Если программа Н является <программой на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>), то извлекаемая программа Р должна соответствовать стандарту программой на языке Pascal. Если программа П является <программой на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>), то извлекаемая программа Р должна соответствовать стандарту программы на ПЛ/1.

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

  1. Интерпретация <программы со встроенным SQL> (<embedded SQL host program>) H по определению эквивалентна интерпретации извлекаемой программы P и извлекаемого <модуля> (<module>) М из программы Н.

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