Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Struktur von SESAM-CLI-Aufrufen

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
USAGE-Klausel COMP

long int const *

4

OUT

long int *

INTEGER

IN

PIC S9(p) mit der
USAGE-Klausel COMP

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)
oder COBOL group item

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:

01

SQLda

.






05

SQLda01

PIC

S9(4)

BINARY.



88 SQLda01val

value 910.


05

SQLda02

PIC

S9(4)

BINARY.


05

SQLda03

PIC

S9(4)

BINARY.


05

SQLda04

PIC

S9(4)

BINARY.


05

SQLerrline

PIC

S9(4)

BINARY.


05

SQLerrcol

PIC

S9(4)

BINARY.


05

SQLda07

PIC

S9(4)

BINARY.


05

SQLda08

PIC

X(5).



05

SQLCLI-SQLSTATE redefines SQLda08 PIC X(5).


05

SQLerrm

PIC

X(240)

.



05

SQLda10

PIC

X.



05

SQLda21

PIC

S9(9)

BINARY.


05

SQLda22

PIC

X(4).



05

SQLda23

PIC

S9(4)

BINARY.


05

SQLda24

PIC

X(2).



05

SQLrowcount

PIC

S9(9)

BINARY.


05

SQLda99

PIC

X(634)

.



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:

typedef struct {




short

SQLda01;

/*length*/


short

SQLda02;

/*reaction_code*/


short

SQLda03;

/*error_code*/


short

SQLda04;

/*errm_significant*/


short

SQLerrline;

/*sqlrow*/


short

SQLerrcol;

/*sqlcolumn*/


short

SQLda07;

/*sqlcode*/


char

SQLda08[5];

/*sqlstate*/


char

SQLerrm[240];

/*sqlerrm*/


signed char

SQLda10;

/*SQLda10*/


long

SQLda21;

/*check field*/


char

SQLda22[4];

/*tag*/


unsigned short

SQLda23;

/*internal*/


char

SQLda24[2];

/*slack*/


long

SQLrowcount;

/*row_count*/


char

SQLda99[634];

/*internal area*/ }

SQLda_t;




Die einzelnen Parameter entsprechen jeweils den Parametern des COBOL-Datentyps SQLda.