<Прикладная программа со
встроенным 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>) М из программы Н.
Знаете ли Вы, что релятивизм (СТО и ОТО) не является истинной наукой? - Истинная наука обязательно опирается на причинность и законы природы, данные нам в физических явлениях (фактах). В отличие от этого СТО и ОТО построены на аксиоматических постулатах, то есть принципиально недоказуемых догматах, в которые обязаны верить последователи этих учений. То есть релятивизм есть форма религии, культа, раздуваемого политической машиной мифического авторитета Эйнштейна и верных его последователей, возводимых в ранг святых от релятивистской физики. Подробнее читайте в FAQ по эфирной физике.