CLI-Aufrufe können aus C- oder COBOL-Programmen erfolgen.
Alle Aufrufe des SESAM-CLI haben folgende Grundstruktur:
cli_aufruf ::=
cli_prozedur_name (
cli_parameter [,
cli_parameter ]...)
cli_parameter ::=
cli_parameter_name { IN | IN OUT | OUT }
cli_parameter_datentyp
cli_parameter_datentyp ::= { BOOLEAN | INTEGER | CHAR(
max ) | POINTER | SQLda }
cli_prozedur_name
Name der aufrufenden CLI-Prozedur. Für jede Prozedur gibt es einen langen und einen kurzen Namen. In C sollte die Langform verwendet werden. In COBOL muss die Kurzform der Namen verwendet werden (siehe alphabetischer Nachschlageteil).
cli_parameter_name
Name des Parameters (siehe alphabetischer Nachschlageteil).
IN
, IN OUT
bzw. OUT
unterscheidet, ob es sich um einen Ein- oder Ausgabeparameter handelt. Ist IN OUT
angegeben, so handelt es sich um einen Ein- und Ausgabeparameter.
cli_parameter_datentyp
Name des Parameterdatentyps.
Die sprachspezifische Syntax von C und COBOL für die einzelnen CLI-Aufrufe wird im Abschnitt „Aufrufe des SESAM-CLI" beschrieben.
Korrespondierende Datentypen
Die folgende Tabelle zeigt, welche Datentypen aus C und COBOL den SQL-Datentypen der CLI-Routine entsprechen. Die Spalte „Art“ gibt an, ob es sich um einen Ein- oder Ausgabeparameter handelt. Die Spalte „Größe“ gibt die Länge der Werte in Byte an.
SQL-Datentyp | Art | COBOL-Datentyp | C-Datentyp | Größe |
BOOLEAN | IN | PIC S9(p) mit der | long int const * | 4 |
OUT | long int * | |||
INTEGER | IN | PIC S9(p) mit der | long int const * | 4 |
OUT | long int * | |||
IN OUT | ||||
CHAR(n) | IN | PIC X(n) | char const * | n |
OUT | char * | |||
IN OUT | ||||
POINTER | IN | PIC X(n) | char * | 4 |
CHAR(ddd) | OUT | SQLda | SQLda_t * | ddd |
Tabelle 55: Korrespondierende Datentypen
Der Wert „p“ im Datentyp PIC S9(p) muss im Bereich zwischen 5 und 9 liegen.
Die SYNCHRONIZED-Klausel brauchen Sie in COBOL für die Argumente von CLI-Aufrufen nicht anzugeben. Der Datentyp POINTER dient zur Übergabe einer Adresse eines Pufferbereichs, dessen Länge durch einen anderen Parameter bestimmt wird.
Der COBOL-Datentyp SQLda
SQLda ist der Diagnosebereich in SESAM/SQL. Dieser Diagnosebereich hat in COBOL folgenden Aufbau:
|
| ||||
|
|
|
|
| |
|
| ||||
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
| ||
|
| ||||
|
|
|
| ||
|
|
|
| ||
|
|
|
|
| |
|
|
|
| ||
|
|
|
|
| |
|
|
|
| ||
|
|
|
|
| |
|
|
|
|
SQLda
Diagnosebereich für SESAM/SQL.
SQLda01, SQLda02, ... SQLda99
für interne Zwecke reserviert.
SQLerrline
enthält im Fehlerfall die Zeilennummer der Stelle im Text einer vorbereiteten Anweisung, in der ein Fehler aufgetreten ist. Enthält 0 (Null), wenn die Stelle nicht bestimmt werden konnte oder nicht sinnvoll ist.
SQLerrcol
enthält im Fehlerfall die Spaltennummer der Stelle im Text einer vorbereiteten Anweisung, in der ein Fehler aufgetreten ist. Enthält 0 (Null), wenn die Stelle nicht bestimmt werden konnte oder nicht sinnvoll ist.
SQLerrm
enthält nach Ausführung einer SQL-Anweisung einen Meldungstext, falls die SQL-Anweisung in SQLSTATE einen anderen Rückgabewert als 00000 liefert. Der Text enthält die Fehlerklasse (W für WARNING oder E für ERROR), die Meldungsnummer SQL nnnn und den Meldungstext.
SQLrowcount
enthält nach Ausführung der entsprechenden Anweisungen folgende Information:
nach einer INSERT-Anweisung die Anzahl der eingefügten Sätze
nach einer UPDATE- oder DELETE-Anweisung mit einer Suchbedingung die Anzahl der Sätze, für die die Suchbedingung erfüllt ist
nach einer UPDATE- oder DELETE-Anweisung ohne WHERE-Klausel die Anzahl der Sätze in der referenzierten Tabelle
nach einer MERGE-Anweisung die Summe aus der Anzahl geänderter und Anzahl eingefügter Sätze
nach einer UNLOAD-Anweisung die Anzahl der ausgebenen Sätze
nach einer LOAD-Anweisung die Anzahl der neu zugeladenen Sätze
nach einer EXPORT-Anweisung die Anzahl der in die Export-Datei kopierten Sätze
nach einer IMPORT-Anweisung die Anzahl der aus der Export-Datei kopierten Sätze
In allen anderen Fällen ist der Inhalt nicht definiert.
Der C-Datentyp SQLda_t
Analog zu SQLda in COBOL gibt es in C den Datentyp SQLda_t. Der Diagnosebereich hat in C folgenden Aufbau:
| |||
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
Die einzelnen Parameter entsprechen jeweils den Parametern des COBOL-Datentyps SQLda.