Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
02.05.2014
Размер:
18.79 Кб
Скачать

A.noneline { font-family: Arial, Serif; text-decoration: none; } FONT.arial { font-family: Arial, Serif; } TD.arial { font-family: Arial, Serif; } TH.arial { font-family: Arial, Serif; } PRE { font-family: Monospace; color: navy; } SAMP { font-family: Monospace; color: navy; } TT { font-family: Monospace; color: navy; } VAR { font-family: Monospace; color: navy; }

Сервер поддерживается

Центром Информационных Технологий

(095) 932-9212, 932-9213, 939-0783

E-mail: info@citforum.ru Сервер Информационных Технологий содержит море(!) аналитической информации Приложения Приложение А. <Программа со встроенным 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> Синтаксические правила <Прикладная программа со встроенным SQL> (<embedded SQL host program>) является прикладной программой, состоящей из текста на языке программирования и текста на SQL. Текст на языке программирования должен удовлетворять требованиям конкретного стандартного языка программирования. Текст на SQL должен состоять из одного или более <встроенных операторов SQL> (<embedded SQL statement>) и, возможно, одной или более <секций объявления SQL> (<embedded SQL declare section>). <Встроенный оператор 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. <Префикс SQL> (<SQL prefix>), <объявление начала встроенного SQL> (<embedded SQL begin declare>) или <объявление конца встроенного SQL> (<embedded SQL end declare>) должны специфицироваться в одной строке, которая не содержит комментариев. В остальных случаях действуют правила продолжения строк и лексем с одной строки на другую и правила размещения комментариев, определенные в языке программирования, на котором написана <программа со встроенным SQL> (<embedded SQL host program>). <Объявление курсора> (<declare cursor>), содержащееся в <программе со встроенным SQL> (<embedded SQL host program>, должно текстуально предшествовать в тексте этой <программы со встроенным SQL> (<embedded SQL host program> любому <оператору SQL> (<SQL statement>), который ссылается на <имя курсора> (<cursor name>) этого <объявления курсора> (<declare cursor>). Любой <идентификатор основного языка> (<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>). <Определение переменной основного языка> (<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>)". Для данной <программа со встроенным 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, определяется следующим образом: i) Если ES не является <оператором открытия> (<open statement>), то: <Имя процедуры> (<procedure name>) PS определяется реализацией. <Оператор SQL> (<SQL statement>) процедуры PS является копией ES, в которой каждое отдельное <имя встроенной переменной> (<embedded variable name>) согласованным образом заменено на отдельное <имя параметра> (<parameter name>), определяемое реализацией. PS содержит <объявление параметра> (<parameter declaration>) для каждого отдельного определяемого реализацией <имени параметра> (<parameter name>), содержащегося в <операторе SQL> (<SQL statement>) PS, и <объявление параметра> (<parameter declaration>) SQLCODE. Порядок <объявлений параметров> (<parameter declaration>) определяется реализацией. <Объявление параметра> (<parameter declaration>), который соответствует данному отдельному <имени встроенной переменной> (<embedded variable name>) V, появляющейся в EC, специфицирует отдельное <имя параметра> (<parameter name>), на которое замещалось V, с <типом данных> (<data type>) SQL, эквивалентным типу данных V в основном языке. Может ли одна <процедура> (<procedure>) М соответствовать более чем одному <оператору SQL> (<SQL statement>) из H - определяется реализацией.

ii) Если ES является <oператором открытия> (<open statement>), то: Пусть ES обозначает <объявление курсора> (<declare cursor>) в H, на который ссылается ES. PS - это <процедура> (<procedure>) в модуле М, содержащая <оператор открытия> (<open statement>), который ссылается на <объявление курсора> в М, соответствующему ES. Для заданной <программы со встроенным 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>), заменен на операторы основного языка, которые выполняют следующие действия:

i) Вызов средствами основного языка <процедуры> (<procedure>) <модуля> (<module>) М программы H, который соответствует <оператору SQL> (<SQL statement>). Если <оператор SQL> (<SQL statement>) не является <оператором открытия> (<open statement>), то аргументы вызова включают все различные <идентификаторы основного языка> (<host identifier>), содержащиеся в <операторе SQL> вместе с переменной SQL. Если <оператор SQL> (<SQL statement>) является <оператором открытия> (<open statement>), то аргументы вызова включают каждый различный <идентификатор основного языка> (<host identifier>), содержащийся в соответствующем <объявлении курсора> (<cursor declare>) в Н вместе с SQL переменной. Порядок аргументов в вызове соответствует порядку <объявления параметров> (<parameter declaration>) в соответствующей <процедуре> (<procedure>).

Замечание: В <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>) "переменная SQLCODE" сокращается до "SQLCOD". См. Синтаксическое правило 6 Приложения D, "<Программа на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>)".

ii) Действия по исключительным ситуациям - в соответствии со спецификациями в Приложении B, "<Встроенное объявление исключительной ситуации> (<embedded exception declaration>). Порождение программы Р и <модуля> (<module>) М из текста <программы со встроенным SQL> (<embedded SQL host program> Н фактически предшествует выполнению любых команд манипулирования текстом программы на основном языке, таких как включение или копирование текста. Данная <программа со встроенным 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. Общие правила Интерпретация <программы со встроенным SQL> (<embedded SQL host program>) H по определению эквивалентна интерпретации извлекаемой программы P и извлекаемого <модуля> (<module>) М из программы Н. Назад | Содержание | Вперед

Comments: info@citmgu.ru

Copyright © CIT

Соседние файлы в папке INF-5