Приложение B. <Встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>)
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует действия, предпринимаемые в случае возникновения исключительных ситуаций при выполнении <оператора SQL> (<SQL statement>).
Формат
<embedded exception declaration> ::=
WHENEVER <condition> <exception action>
<condition> ::=
SQLERROR | NOT FOUND
<exception action> ::=
CONTINUE | <go to>
<go to> ::=
{ GOTO | GO TO } <target>
<target> ::= :<host identifier> | <unsigned integer>
Синтаксические правила
-
а) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) содержится в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>), то <цель> (<target>) в <операторе передачи управления> (<go to>) должна специфицировать <идентификатор основного языка> (<host identifier>), являющийся именем секции или именем параграфа без квалификатора.
b) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) содержится в <программе на языке FORTRAN со встроенным SQL> (<embedded SQL FORTRAN program>), то <цель> (<target>) в <операторе передачи управления> (<go to>) должна быть <целым числом без знака> (<unsigned integer>), которое является меткой выполнимого оператора, появляющегося в той же программной единице, что и <оператор передачи управления> (<go to>).
c) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>)содержится в <программе на языке Pascal со встроенным SQL> (<embedded SQL Pascal program>), то <цель> (<target>) в <операторе передачи управления> (<go to>) должна быть <целым числом без знака> (<unsigned integer>), являющимся меткой.
d) Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) содержится в <программе на языке PL/1 со встроенным SQL> (<embedded SQL PL/1 program>), то <цель> (<target>) в <операторе передачи управления> (<goto>) должна специфицировать <идентификатор основного языка> (<host identifier>), являющийся меткой константой или именем переменной типа метка.
- <Встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), содержащееся в <программе со встроенным SQL> (<embedded SQL host program>) применяется к <оператору SQL> (<SQL statement>), содержащемуся в <программе со встроенным SQL> (<embedded SQL host program>), тогда и только тогда, когда <оператор SQL> (<SQL statement>) появляется текстуально после этого <встроеннного объявления реакции на исключительную ситуацию> (<embedded exception declaration>) в тексте <программы со встроенным SQL> (<embedded SQL host program>) и нет другого <встроенного объявления реакции на исключительную ситуацию> (<embedded exception declaration>), которое специфицирует то же <условие> (<condition>) и появляется между этим <встроеннным объявлением реакции на исключительную ситуацию> (<embedded exception declaration>) и этим <оператором SQL> (<SQL statement>) в тексте <программы со встроенным SQL> (<embedded SQL host program>).
- Если <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>) специфицирует <оператор передачи управления> (<go to>), то <идентификатор основного языка> (<host identifier>) или <целое число без знака> (<unsigned integer>), используемые в <операторе передачи управления> (<go to>), должны быть такими, чтобы оператор GOTO основного языка, специфицирующий этот <идентификатор основного языка> (<host identifier>) или <целое число без знака> (<unsigned integer>), был законным для каждого <оператора SQL> (<SQL statement>), к которому применимо данное <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>).
Общие правила
- Непосредственно после выполнения <оператора SQL> (<SQL statement>) в <программе со встроенным SQL> (<embedded SQL host program>):
а) Если значение переменной SQLCODE (SQLCOD) равно +100 и <программа со встроенным SQL> (<embedded SQL host program>) содержит <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), которое применимо к <оператору SQL> (<SQL statement>), <условие> (<condition>) которого есть NOT FOUND и <действие по исключительной ситуации> (<exception action>) которого есть <оператор передачи управления> (<go to>), то выполняется оператор GOTO основного языка с указанным в данном <операторе передачи управления> (<go to>) <идентификатором основного языка> (<host identifier>) или <целым числом без знака> (<unsigned integer>).
b) Если значение переменной SQLCODE (SQLCOD> отрицательное число и <программа со встроенным SQL> (<embedded SQL host program>) содержит <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), которое применимо к <оператору SQL> (<SQL statement>), <условие> (<condition>) которого SQLERROR и <действие по исключительной ситуации> (<exception action>) которого есть <оператор передачи управления> (<go to>), то выполняется оператор GOTO основного языка с указанным в данном <операторе передачи управления> (<go to>) <идентификатором основного языка> (<host identifier>) или <целым числом без знака> (<unsigned integer>).
c) Если <программа со встроенным SQL> (<embedded SQL host program>) не содержит <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), которое применимо к <оператору SQL> (<SQL statement>), или если она содержит <встроенное объявление реакции на исключительную ситуацию> (<embedded exception declaration>), которое применимо к <оператору SQL> (<SQL statement>) и <условие> (<condition>) которого CONTINUE, то никакие действия для этого <оператора SQL> (<SQL statement>) не выполняются.
Приложение С. <Программа на языке Кобол со встроенным SQL> (<embedded SQL COBOL program>
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует модуль SQL, встроенный в программу на языке
COBOL.
Формат
<embedded SQL COBOL program> ::=
См. Синтаксические правила.
<COBOL variable definition> ::=
{ 01 | 77 } < COBOL host identifier>
<COBOL type specification>
[<character> ...]
< COBOL host identifier> ::=
См. Cинтаксическое правило 3.
<COBOL type specification> ::=
<COBOL character type>
| <COBOL numeric type>
| <COBOL integer type>
<COBOL character type> ::=
PIC[TURE] [IS] X (<length>)
<COBOL numeric type> ::=
PIC[TURE] [IS]
S{ <nines> [V<nines>]
| <nines>V
| V<nines> }
[USAGE [IS]] DISPLAY SIGN LEADING SEPARATE
<COBOL integer type> ::=
PIC[TURE] [IS]
S<nines>
[USAGE [IS]] COMP[UTATIONAL]
<nines>::= { 9 [(<unsigned integer>)] }...
Синтаксические правила
- <Программа на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) - это прикладная программа, состоящая из текста на языке COBOL и текста на языке SQL. Текст на языке COBOL должен удовлетворять стандарту языка COBOL. Текст на языке SQL должен состоять из одного или более <встроенных операторов языка SQL> (<embedded SQL statement>) и, возможно, одной или более <встроенных секций описаний SQL> (<embedded SQL declare section>.
- <Встроенный оператор SQL> (<embedded SQL statement>) в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) может быть специфицирован везде, где может быть специфицирован оператор языка COBOL в разделе процедур (Procedure Division) <программы на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>). Если оператору языка COBOL может непосредственно предшествовать имя параграфа, то и <встроенному оператору языка SQL> (<embedded SQL statement>) может непосредственно предшествовать имя параграфа.
- <Идентификатор языка COBOL> (<COBOL host identifier>) - это любое допустимое в языке COBOL имя переменной. <Идентификатор языка COBOL> (<COBOL host identifier>) должен содержаться в <программе на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>).
- <Определение переменной языка COBOL> (<COBOL variable definition>) - это ограниченная форма описания данных в языке COBOL, определяющая переменную.
а) <Определение переменной языка COBOL> (<COBOL variable definition>) должно быть законным элементом описания данных в разделе данных (Data Division) программы, полученной из <программы на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>).
b) Необязательная последовательность <символов> (<character>) в <определении переменной языка COBOL> (<COBOL variable definition>) может специфицировать раздел VALUE. Могут ли быть специфицированы другие разделы - определяется реализацией. Последовательность <символов> (<character>) должна быть такой, чтобы <определение переменной языка COBOL> (<COBOL variable definition>) являлось допустимым элементом описания данных языка COBOL.
c) <Cимвольный тип данных языка COBOL> (<COBOL character type>) описывает переменную типа строка символов. Эквивалентный тип данных языка SQL - это тип CHARACTER такой же длины.
d) <Числовой тип данных языка COBOL> (<COBOL numeric type>) описывает переменную типа точных чисел. Эквивалентный тип данных языка SQL - это тип NUMERIC с теми же самыми значениями точности и масштаба.
e) <Целый тип данных языка COBOL> (<COBOL integer type>) описывает переменную типа точных чисел. Эквивалентный тип данных языка SQL - это тип INTEGER.
Замечание: этот тип данных поддерживается только для SQLCODE, см. Синтаксическое правило 5.
- <Программа на языке COBOL со встроенным SQL> (<embedded SQL COBOL program>) должна содержать переменную с именем SQLCODE, определенную с типом данных COMPUTATIONAL picture S9(PC), где PC - определяемое реализацией значение точности, специфицированное для параметров SQLCODE в разделе 7.3, "<Процедура> (<procedure>).
Общие правила
См. Приложение A "<Программа со встроенным SQL> (<embedded SQL host program>)".
Приложение D. <Программа на языке Фортран со встроенным SQL> (<embedded SQL FORTRAN program>)
(Это дополнение не является неотъемлемой частью стандарта.)
Функция
Специфицирует модуль SQL, встроенный в программу на языке
FORTRAN.
Формат
<embedded SQL FORTRAN program> ::=
См. Синтаксические правила.
<FORTRAN variable definition> ::=
<FORTRAN type specification>
<FORTRAN host identifier>
[{,<FORTRAN host identifier>}...]
<FORTRAN host identifier> ::=
См. Синтаксическое правило 4.
<FORTRAN type specification> ::=
CHARACTER [*<length>]
| INTEGER
| REAL
| DOUBLE PRECISION
|