home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Treasures, Inc.
/
pctreasures.mdf
/
WINDOWS
/
adabas
/
f_0001
/
env
/
sqlpl.deh
< prev
next >
Wrap
Text File
|
1999-11-01
|
178KB
|
2,418 lines
DEU|02 | 0 SQLPL.deh 10.05.01 1998-04-24
DEU|02 | 1| | INFO - Angebot von SQL-PL
DEU|02 | 2| | --------------------------
DEU|02 | 4| I| ##11Werkbank
DEU|02 | 5| I| ##04Editor
DEU|02 | 6| I| ##0203SQL-PL -Sprache
DEU|02 | 7| I| ##05FORM -Masken
DEU|02 | 8| I| ##09SQL -Anweisungen
DEU|02 | 9| I| ##08REPORT -Anweisungen
DEU|02 | 10| I| ##0208Restriktionen
DEU|02 | 11| I| ##0209Debugger
DEU|02 | 12| I| ##0211DB-Prozeduren
DEU|02 | 14|RI| ##0404Hilfe zur Hilfe
DEU|0203 | 1| | SQL-PL Sprache
DEU|0203 | 2| | ---------------
DEU|0203 | 4| M| Einfⁿhrendes #00Beispiel
DEU|0203 | 5| M| #01Anweisungen
DEU|0203 | 6| I| ##0207SQL-PL Funktionen
DEU|0203 | 7| M| #03Standardfunktionen
DEU|0203 | 8| M| #04Syntaxbeschreibung
DEU|0203 | 9|RM| #05Optionen und #05Testhilfen
DEU|020300 | 1| |
DEU|020300 | 2| E| PROC kunde.konto PARM ( @knr );
DEU|020300 | 3| E| /* Programm KUNDE - Modul KONTO
DEU|020300 | 4| E| /* Ermittelt den Kontostand eines Kunden aus der Datenbank
DEU|020300 | 6| E| WRITE CLEAR, '--- Kontostand ---';
DEU|020300 | 7| E| REPEAT WRITE NL(2), 'Kunden-Nr.: ';
DEU|020300 | 8| E| READ @knr;
DEU|020300 | 9| E| IF @knr IS NULL THEN RETURN; /* Endebedingung
DEU|020300 | 10| E| SQL ( SELECT DIRECT kontostand
DEU|020300 | 11| E| INTO :kstand /* Kontostand des
DEU|020300 | 12| E| FROM kunde /* Kunden in der
DEU|020300 | 13| E| WHERE KEY knr = :@knr ); /* DB suchen
DEU|020300 | 14| E| CASE $RC OF
DEU|020300 | 15| E| 0 : WRITE 'Kontostand :' , HI (kstand); /* Kunde bekannt
DEU|020300 | 16| E| 100 : WRITE HI('Kunde nicht gefunden'); /* Kunde unbekannt
DEU|020300 | 17|SE| END;
DEU|020300 | 19| E| UNTIL $RC NOT IN (0,100);
DEU|020300 | 20| E| WRITE NL,'Bitte rufen Sie ihren EDV-Betreuer an'; /* Fehlerfall
DEU|020300 | 21|R |
DEU|020301 | 1| | Anweisungen
DEU|020301 | 2| | -----------
DEU|020301 | 4| I| ##02030201Variablen/Vektoren/Wertzuweisungen ##02030107CALL-FORM -Anweisung
DEU|020301 | 5| I| ##02030106CALL-PROC -Anweisung ##02030104CASE -Anweisung
DEU|020301 | 6| I| ##02030207EDIT -Anweisung ##02030212EXEC -Anweisung
DEU|020301 | 7| I| ##02030112FOR -Anweisung ##02030103IF -Anweisung
DEU|020301 | 8| I| ##02030209LTSORT/GTSORT -Anweisung ##02030205QUERY -Auruf
DEU|020301 | 9| I| ##02030203READ -Anweisung ##02030101REPEAT -Anweisung
DEU|020301 | 10| I| ##02030105RETURN -Anweisung ##02030210SET -Anweisung
DEU|020301 | 11| I| ##02030109SKIP -Anweisung ##02030204SQL Einbettung
DEU|020301 | 12| I| ##02030111STOP -Anweisung ##02030108SWITCH -Anweisung
DEU|020301 | 13| I| ##02030114SWITCHCALL -Anweisung ##02030211Systemzeit
DEU|020301 | 14| I| ##02030116TRY-CATCH -Anweisung ##02030102WHILE -Anweisung
DEU|020301 | 15| I| ##02030202WRITE -Anweisung Bearbeiten von ##02030206Dateien
DEU|020301 | 16| I| ##02030113Funktionsaufrufe ##02030110Bedingungen
DEU|020301 | 17|SM| Aufruf von #15DB-Prozeduren
DEU|020301 | 19|RI| ##0203040202->^Syntax
DEU|02030101 | 1| | Die REPEAT-Anweisung dient zur Wiederholung einer Folge von
DEU|02030101 | 2| | Anweisungen. Die Wiederholung wird bei Erfⁿllung der Abbruchbedingung
DEU|02030101 | 3| | beendet. Die Bedingung wird n a c h Abarbeitung der Anweisung(en)
DEU|02030101 | 4| | geprⁿft.
DEU|02030101 | 6| | Beispiel :
DEU|02030101 | 8| |
DEU|02030101 | 9| E| i := 1;
DEU|02030101 | 10| E| REPEAT
DEU|02030101 | 11| E| i := i + 1;
DEU|02030101 | 12| E| WRITE 'i = ', i;
DEU|02030101 | 13| E| UNTIL i = 10;
DEU|02030101 | 14| |
DEU|02030101 | 16|RI| ##0203040209->^Syntax
DEU|02030102 | 1| | Die WHILE-Anweisung dient zur Wiederholung einer Folge von Anweisungen.
DEU|02030102 | 2| | Die Wiederholung wird bei Erfⁿllung der Abbruchbedingung beendet. Die
DEU|02030102 | 3| | Bedingung wird v o r Abarbeitung der Anweisung(en) geprⁿft.
DEU|02030102 | 5| | Beispiel :
DEU|02030102 | 7| |
DEU|02030102 | 8| E| i := 1;
DEU|02030102 | 9| E| WHILE i < 10
DEU|02030102 | 10| E| DO BEGIN
DEU|02030102 | 11| E| i := i + 1;
DEU|02030102 | 12| E| WRITE 'i = ', i;
DEU|02030102 | 13| E| END;
DEU|02030102 | 14| |
DEU|02030102 | 16|RI| ##0203040210->^Syntax
DEU|02030103 | 1| | Die IF-Anweisung dient zur Ausfⁿhrung von Anweisungen in AbhΣngigkeit
DEU|02030103 | 2| | von einer Bedingung. Wenn die Bedingung erfⁿllt ist, wird die An-
DEU|02030103 | 3| | weisung(sfolge) des THEN-Zweiges ausgefⁿhrt, anderenfalls die des ELSE-
DEU|02030103 | 4| | Zweiges (falls vorhanden).
DEU|02030103 | 6| | Beispiele :
DEU|02030103 | 8| |
DEU|02030103 | 9| E| IF (i > j) OR (i = j)
DEU|02030103 | 10| E| THEN BEGIN
DEU|02030103 | 11| E| WRITE 'i ist gr÷▀er als oder gleich j'; ...
DEU|02030103 | 12| E| END
DEU|02030103 | 13| E| ELSE WRITE 'i ist kleiner als j';
DEU|02030103 | 14| E| IF name = 'KARL'
DEU|02030103 | 15| E| THEN WRITE 'NAME <> '"karl"';
DEU|02030103 | 16|S |
DEU|02030103 | 19| | Im Zweifelsfall geh÷rt ELSE zum letzten IF.
DEU|02030103 | 21|RI| ##0203040206->^Syntax
DEU|02030104 | 1| | Die CASE-Anweisung dient zur Ausfⁿhrung von Anweisungen in AbhΣngigkeit
DEU|02030104 | 2| | vom Wert eines Ausdrucks. Es wird die Anweisung(sfolge) ausgefⁿhrt, in
DEU|02030104 | 3| | deren Werteliste der Wert des Ausdrucks auftritt. Tritt dieser Wert in
DEU|02030104 | 4| | keiner Werteliste auf, wird der OTHERWISE-Fall (falls vorhanden)
DEU|02030104 | 5| | ausgefⁿhrt.
DEU|02030104 | 7| | Beispiele :
DEU|02030104 | 9| |
DEU|02030104 | 10| E| CASE i OF CASE UPPER (s) OF
DEU|02030104 | 11| E| 1..3 : WRITE 'i in (1,2,3)'; 'EINS', 'ZWEI' : BEGIN ... END;
DEU|02030104 | 12| E| 4,5,6 : BEGIN 'DREI' : ... ;
DEU|02030104 | 13| E| WRITE 'i in (4,5,6)'; ... 'VIER' : ... ;
DEU|02030104 | 14| E| END; OTHERWISE : BEGIN ... END;
DEU|02030104 | 15| E| END; END;
DEU|02030104 | 16|S |
DEU|02030104 | 19|RI| ##0203040207->^Syntax
DEU|02030105 | 1| | Die RETURN-Anweisung beendet die Ausfⁿhrung eines SQL-PL Unterprogramms
DEU|02030105 | 2| | und verzweigt in die aufrufende Umgebung. Die RETURN-Anweisung steht
DEU|02030105 | 3| | implizit am Ende jeder SQL-PL Routine.
DEU|02030105 | 5| | Beispiel :
DEU|02030105 | 6| |
DEU|02030105 | 7| E| IF $KEY = 'F3'
DEU|02030105 | 8| E| THEN RETURN;
DEU|02030105 | 9| |
DEU|02030105 | 11| I| In ##0207SQL-PL Funktionen kann dem RETURN ein Wert mitgegeben werden, der
DEU|02030105 | 12| | als Ergebnis der Funktion geliefert wird.
DEU|02030105 | 14| | Beispiel :
DEU|02030105 | 15| |
DEU|02030105 | 16| E| FUNCTION stdlib.plus (@summe,@summand)
DEU|02030105 | 17|SE| RETURN (@summe + @summand);
DEU|02030105 | 19| |
DEU|02030105 | 21|RI| ##0203040213->^Syntax
DEU|02030106 | 1| | Mit der CALL-PROC-Anweisung kann zu SQL-PL Routinen verzweigt werden.
DEU|02030106 | 3| | Beispiel :
DEU|02030106 | 5| |
DEU|02030106 | 6| E| CALL PROC verarbeitung;
DEU|02030106 | 7| |
DEU|02030106 | 9| | Nach der Abarbeitung der aufgerufenen Routine wird die Ausfⁿhrung der
DEU|02030106 | 10| | aufrufenden Routine fortgesetzt. Ist die aufgerufene Routine nicht
DEU|02030106 | 11| | vorhanden, wird das Programm abgebrochen. Beim Aufruf der Routine
DEU|02030106 | 12| | k÷nnen aktuelle Parameter angegeben werden. Die Werte dieser Parameter
DEU|02030106 | 13| | werden den formalen Parametern der aufgerufenen Routine zugewiesen.
DEU|02030106 | 15| | Beispiel :
DEU|02030106 | 17|S | Definition : PROC kunde.buchung PARMS (@knr, @datum, @zaehler);
DEU|02030106 | 19| | Aufruf : CALL PROC buchung PARMS (knr, DATE(yymmdd), zaehler+1);
DEU|02030106 | 21|RI| ##0203040216->^Syntax
DEU|02030107 | 1| | Mit der CALL-FORM-Anweisung kann zu FORM-Routinen verzweigt werden.
DEU|02030107 | 3| | Beispiel :
DEU|02030107 | 5| |
DEU|02030107 | 6| E| CALL FORM haupt_menue;
DEU|02030107 | 7| |
DEU|02030107 | 9| | Nach der Abarbeitung der aufgerufenen Routine wird die Ausfⁿhrung der
DEU|02030107 | 10| | aufrufenden Routine fortgesetzt.
DEU|02030107 | 12| | Wenn eine Maske aufgerufen wird, die eine Benutzerreaktion erwartet,
DEU|02030107 | 13| | wird implizit die laufende Datenbank-Transaktion abgeschlossen; es sei
DEU|02030107 | 14| | denn, der Aufruf erfolgte aus einer SQL-PL Routine heraus, die mit der
DEU|02030107 | 15| | Option AUTOCOMMIT OFF ⁿbersetzt wurde.
DEU|02030107 | 17|S | Ist die Maske nicht vorhanden, wird das Programm abgebrochen. Aktuelle
DEU|02030107 | 19| | Parameter k÷nnen wie bei CALL PROC angegeben werden.
DEU|02030107 | 22| |
DEU|02030107 | 24| | Beim Aufruf von FORM-Masken ist durch die Angabe einer Reihe von
DEU|02030107 | 25| | Optionen die Beeinflussung der Maskenverarbeitung m÷glich.
DEU|02030107 | 27| | Beispiele :
DEU|02030107 | 29| |
DEU|02030107 | 30| E| CALL FORM maske1 OPTIONS (NOINIT, ACCEPT (F1,F3,ENTER), MARK (3));
DEU|02030107 | 31| E| CALL FORM maske3 OPTIONS ( PRINT (LINEFEED 2, NEWPAGE), NOINIT);
DEU|02030107 | 32| E| CALL FORM maske4 ( PRINT ('X',LINEFEED 2)) PARMS (knr, DATE(yymmdd));
DEU|02030107 | 33| |
DEU|02030107 | 35|SI| ##0506Weitere^Informationen^ zu den Aufruf-Optionen.
DEU|02030107 | 37|RI| ##0203040217->^Syntax
DEU|02030108 | 1| | Die SWITCH-Anweisung beendet die Ausfⁿhrung eines Programms und ver-
DEU|02030108 | 2| | zweigt zu einem Folgeprogramm.
DEU|02030108 | 4| | Beispiele :
DEU|02030108 | 6| |
DEU|02030108 | 7| E| SWITCH kunde CALL PROC verarbeitung;
DEU|02030108 | 8| E| SWITCH produkt.kunde CALL FORM haupt_menue;
DEU|02030108 | 9| |
DEU|02030108 | 11| | Dadurch lassen sich gr÷▀ere Programme aus mehreren kleinen zusam-
DEU|02030108 | 12| | mensetzen. Die Angabe von Optionen ist entsprechend zu CALL FORM
DEU|02030108 | 13| | m÷glich; aktⁿlle Parameter werden wie bei CALL angegeben.
DEU|02030108 | 15|RI| ##0203040218->^Syntax
DEU|02030109 | 1| | Die SKIP-Anweisung verzweigt unbedingt zur angegebenen Marke. Mit SKIP
DEU|02030109 | 2| | kann nur in Richtung Routinenende gesprungen werden, d. h., es k÷nnen
DEU|02030109 | 3| | keine Schleifen programmiert werden.
DEU|02030109 | 5| | Beispiel :
DEU|02030109 | 7| |
DEU|02030109 | 8| E| PROC x.y
DEU|02030109 | 9| E| ...
DEU|02030109 | 10| E| IF $RC <> 0 THEN SKIP fehler;
DEU|02030109 | 11| E| ...
DEU|02030109 | 12| E| fehler : WRITE 'Fehler (' & $RC & ')'; RETURN;
DEU|02030109 | 13| |
DEU|02030109 | 15| | Sprungmarken sind nur au▀erhalb von Kontrollstrukturen zugelassen.
DEU|02030109 | 17|RI| ##0203040212->^Syntax
DEU|02030110 | 1| | In SQL-PL k÷nnen in IF-, REPEAT- und WHILE-Anweisungen Bedingungen
DEU|02030110 | 2| | formuliert werden.
DEU|02030110 | 4| M| Logische PrΣdikate : #01AND^OR^NOT
DEU|02030110 | 6| M| Vergleichs-PrΣdikate : #02=^<>^<^>^<=^>=^IN^BETWEEN^LIKE^EOF
DEU|02030110 | 8| M| Typ-PrΣdikate : #03ALPHA^NUMERIC^FIXED^DATE^TIME^NULL^MODIFIED
DEU|02030110 | 10| M| Vektor-PrΣdikate : #04ALL^EACH^ANY^SOME^ONE
DEU|02030110 | 12| M| Trigger-PrΣdikate : #05FIRSTCALL^LASTCALL^INSERTING^UPDATING^DELETING
DEU|02030110 | 14| | Beispiele :
DEU|02030110 | 16| |
DEU|02030110 | 17|SE| IF pnr = 4711 AND name = 'Meier' THEN ...;
DEU|02030110 | 19| E| REPEAT ... UNTIL (name IS NULL) OR ($KEY = F3);
DEU|02030110 | 21| E| WHILE (name IS ALPHA) AND NOT (name IN ('Meier','Mⁿller')) DO ...;
DEU|02030110 | 23| E| IF (name LIKE 'T*') OR (name IN ('Meier','Mayer')) THEN ...;
DEU|02030110 | 25| E| IF nummer BETWEEN 1 AND 99 THEN ... ;
DEU|02030110 | 27| E| IF ALL list (1..5) IN ('0',NULL)
DEU|02030110 | 29| E| IF DELETING AND FIRSTCALL
DEU|02030110 | 30| |
DEU|02030110 | 32| | Die Abarbeitung kann durch Klammerung gesteuert werden.
DEU|02030110 | 34|RI| ##0203040146->^Syntax
DEU|0203011001 | 1| | Logische PrΣdikate
DEU|0203011001 | 3| | Der Ausdruck ist wahr, wenn
DEU|0203011001 | 5| | AND : beide Operanden wahr sind.
DEU|0203011001 | 7| | OR : einer der beiden Operanden wahr ist.
DEU|0203011001 | 9| | NOT : der Operand falsch ist.
DEU|0203011001 | 11|RI| ##0203040160->^Syntax
DEU|0203011002 | 1| | Vergleichs-PrΣdikate
DEU|0203011002 | 3| | Der Ausdruck ist wahr, falls
DEU|0203011002 | 5| | = : die beiden Operanden gleich sind.
DEU|0203011002 | 7| | <> : die beiden Operanden ungleich sind.
DEU|0203011002 | 9| | < : der erste Operand kleiner als der zweite Operand ist.
DEU|0203011002 | 11| | > : der erste Operand gr÷▀er als der zweite Operand ist.
DEU|0203011002 | 13| | <= : der erste Operand kleiner oder gleich dem zweiten Operanden ist.
DEU|0203011002 | 15| | >= : der erste Operand gr÷▀er oder gleich dem zweiten Operanden ist.
DEU|0203011002 | 17|SI| ##0203040161->^Syntax
DEU|0203011002 | 19| | IN : der erste Operand eine Element der angegebenen Liste ist.
DEU|0203011002 | 20| I| ##0203040151->^Syntax
DEU|0203011002 | 22| | BETWEEN : der erste Operand in dem angegebenen Intervall liegt.
DEU|0203011002 | 23| I| ##0203040154->^Syntax
DEU|0203011002 | 25| | LIKE : der erste dem angegebenen Muster entspricht
DEU|0203011002 | 26| I| ##0203040155->^Syntax
DEU|0203011002 | 28| | EOF : das Ende der angegebenen Datei erreicht wurde.
DEU|0203011002 | 30|RI| ##0203040145->^Syntax
DEU|0203011003 | 1| | Typ-PrΣdikate
DEU|0203011003 | 3| | Der Ausdruck ist wahr, falss
DEU|0203011003 | 5| | ALPHA : der Operand in einen String umgewandelt werden kann.
DEU|0203011003 | 7| | NUMERIC : der Operand in einen numerischen Wert umgewandelt werden kann.
DEU|0203011003 | 9| | FIXED : der Operand in einen numerischen Wert mit der angegebenen
DEU|0203011003 | 10| | Genauigkeit umgewandelt werden kann.
DEU|0203011003 | 12| | DATE : der Operand im Datumsformat vorliegt.
DEU|0203011003 | 14| | TIME : der Operand im Zeitformat vorliegt.
DEU|0203011003 | 16|S | NULL : der Operand undefiniert ist.
DEU|0203011003 | 19| | MODIFIED : der Operand beim letzten Maskenaufruf verΣndert wurde.
DEU|0203011003 | 23|RI| ##0203040150->^Syntax
DEU|0203011004 | 1| | Vektor-PrΣdikate
DEU|0203011004 | 3| | Der Ausdruck ist wahr, falls
DEU|0203011004 | 5| | ALL, EACH : jedes Vektor-Element die Bedingung erfⁿllt.
DEU|0203011004 | 7| | ANY, SOME : mindestens ein Vektor-Element die Bedingung erfⁿllt.
DEU|0203011004 | 9| | ONE : genau ein Vektor-Element die Bedingung erfⁿllt.
DEU|0203011004 | 11|RI| ##0203040145->^Syntax
DEU|0203011005 | 1| | Trigger-PrΣdikate
DEU|0203011005 | 3| | Diese PrΣdikate sind nur innerhalb eines Triggers sinnvoll zu verwenden,
DEU|0203011005 | 4| | in jedem anderen Fall sind sie unwahr.
DEU|0203011005 | 6| | Der Ausdruck ist wahr, falls
DEU|0203011005 | 8| | FIRSTCALL : der Trigger durch einen Einzelsatzbefehl oder den
DEU|0203011005 | 9| | ersten Satz eines Mengenbefehls aufgerufen wurde.
DEU|0203011005 | 11| | LASTCALL : der Trigger durch einen Einzelsatzbefehl oder den
DEU|0203011005 | 12| | letzten Satz eines Mengenbefehls aufgerufen wurde.
DEU|0203011005 | 14| | INSERTING, UPDATING, DELETING : der Trigger durch ein
DEU|0203011005 | 15|S | entsprechendes SQL-Kommando aufgerufen wurde.
DEU|0203011005 | 19|RI| ##0203040116->^Syntax
DEU|02030111 | 1| | Die STOP-Anweisung beendet die Ausfⁿhrung eines SQL-PL Programms. Wurde
DEU|02030111 | 2| | das Programm ohne den Weg ⁿber die Werkbank aufgerufen, kann der
DEU|02030111 | 3| | aufrufenden Betriebssystemumgebung ein Returncode und ein Returntext
DEU|02030111 | 4| | ⁿbergeben werden.
DEU|02030111 | 5| | Der Returncode darf nur Werte aus dem Intervall 0..127 annehmen, ggf.
DEU|02030111 | 6| | wird der Returncode implizit auf dieses Intervall abgebildet.
DEU|02030111 | 8| | Beispiele:
DEU|02030111 | 10| |
DEU|02030111 | 11| E| IF $RC < 0 STOP ($COUNT);
DEU|02030111 | 12| E| THEN STOP ($RC, $RT); STOP;
DEU|02030111 | 13| |
DEU|02030111 | 15|RI| ##0203040214->^Syntax
DEU|02030112 | 1| | Die FOR-Anweisung dient zur Wiederholung einer Folge von Anweisungen.
DEU|02030112 | 2| | Die Anzahl der Wiederholungen wird v o r dem ersten Schleifendurch-
DEU|02030112 | 3| | lauf aus den Angaben fⁿr Ober- und Untergrenze ermittelt. Die
DEU|02030112 | 4| | Schleifenvariable wird bei jedem Durchlauf um 1 erh÷ht bzw. vermindert.
DEU|02030112 | 6| | Beispiele :
DEU|02030112 | 8| |
DEU|02030112 | 9| E| FOR i := 1 TO 5 DO
DEU|02030112 | 10| E| WRITE 'I =', i;
DEU|02030112 | 11| E| FOR i := LENGTH (string) DOWNTO 1 DO
DEU|02030112 | 12| E| BEGIN
DEU|02030112 | 13| E| WRITE NL, SUBSTR (string, i, 1);
DEU|02030112 | 14| E| END;
DEU|02030112 | 15| |
DEU|02030112 | 17|RI| ##0203040211->^Syntax
DEU|02030113 | 1| | Aufruf von Funktionen
DEU|02030113 | 3| | Der Aufruf einer SQL-PL Funktion wird durch das Prozentzeichen (%)
DEU|02030113 | 4| | eingeleitet.
DEU|02030113 | 6| | Funktionsaufrufe k÷nnen in Ausdrucken verwendet werden, aber auch als
DEU|02030113 | 7| | eigenstΣndige Anweisungen auftreten.
DEU|02030113 | 9| | Beispiele :
DEU|02030113 | 11| |
DEU|02030113 | 12| E| summe := %summe (a, b, c, d, e);
DEU|02030113 | 13| E| %liste ('Kundenliste');
DEU|02030113 | 14| |
DEU|02030113 | 16| | Bei der Verwendung in Ausdrⁿcken mu▀ in der Funktion durch die RETURN-
DEU|02030113 | 17|SI| Anweisung ein Wert zurⁿckgegeben werden ( --> ##0207SQL-PL Funktionen ).
DEU|02030113 | 19|RI| ##0203040141->^Syntax
DEU|02030114 | 1| | Die SWITCHCALL-Anweisung verzweigt zu einem anderen Programm. Nach
DEU|02030114 | 2| | Beendigung dieses Programms wird die Bearbeitung nach der SWITCHCALL-
DEU|02030114 | 3| | Anweisung fortgesetzt. Alle Variablen behalten ihre zugewiesenen Werte.
DEU|02030114 | 5| | Beispiele :
DEU|02030114 | 7| |
DEU|02030114 | 8| E| SWITCHCALL db_io CALL PROC insert_kunde (knr, kname, rc);
DEU|02030114 | 9| E| SWITCHCALL global.info CALL FORM start;
DEU|02030114 | 10| |
DEU|02030114 | 12| | Dadurch lassen sich Standardprogramme zusammenstellen, die in anderen
DEU|02030114 | 13| | Programmen benutzt werden k÷nnen.
DEU|02030114 | 14| | Die Angabe von Optionen ist entsprechend zu CALL FORM m÷glich; aktuelle
DEU|02030114 | 15| | Parameter werden wie bei CALL angegeben.
DEU|02030114 | 17|RI| ##0203040219->^Syntax
DEU|02030115 | 1| | Aufruf von DB-Prozeduren
DEU|02030115 | 3| | Mit der CALL DBPROC-Anweisung kann eine DB-Prozedur aufgerufen werden.
DEU|02030115 | 5| | Beispiel :
DEU|02030115 | 7| |
DEU|02030115 | 8| E| CALL DBPROC hotel.buchung ( @kunde, @datum, @hotelname, @summe );
DEU|02030115 | 10| E| CALL DBPROC autor.hotel.buchung ( @kunde, @datum, @hotelname, @summe )
DEU|02030115 | 11| E| WITH COMMIT;
DEU|02030115 | 12| |
DEU|02030115 | 14| | Nach dem Aufruf sind $RC und $RT belegt. Falls die DB-Prozedur ohne
DEU|02030115 | 15| | Fehler beendet wurde, enthalten die Ausgabevariablen neue Werte.
DEU|02030115 | 17|S | Falls WITH COMMIT angegeben wurde, wird eine erfolgreiche Ausfⁿhrung
DEU|02030115 | 19| | mit einem impliziten COMMIT WORK abgeschlossen ( ein implizites
DEU|02030115 | 20| | ROLLBACK WORK im Fall des Scheiterns erfolgt nicht ).
DEU|02030115 | 22|RI| ##0203040225->^Syntax
DEU|02030116 | 1| | Abfangen von Laufzeitfehlern
DEU|02030116 | 3| | Mit Hilfe der TRY-CATCH-Anweisung kann auf Laufzeitfehler reagiert
DEU|02030116 | 4| | werden, ohne da▀ das laufende Programm abgebrochen wird.
DEU|02030116 | 6| | Tritt innerhalb der TRY-Anweisung ein Laufzeitfehler oder eine STOP-
DEU|02030116 | 7| | Anweisung auf, so wird mit der entsprechenden Fehlernummer in die
DEU|02030116 | 8| | CATCH-Anweisung verzweigt. Entspricht einer der Selektoren der
DEU|02030116 | 9| | Fehlernummer, so wird die entsprechende Anweisung ausgefⁿhrt und die
DEU|02030116 | 10| | Programmausfⁿhrung nach der CATCH-Anweisung fortgesetzt. Andernfalls
DEU|02030116 | 11| | bleibt der Fehler gesetzt und das Programm wird abgebrochen ( sofern
DEU|02030116 | 12| | der Fehler nicht in einer ⁿbergeordneten TRY-CATCH-Anweisung abgefangen
DEU|02030116 | 13| | wird. Die Selektoren k÷nnen wie in einer CASE-Anweisung angegeben
DEU|02030116 | 14| | werden, ein OTHERWISE-Zweig ist nicht m÷glich.
DEU|02030116 | 16|S | Beispiel :
DEU|02030116 | 19| |
DEU|02030116 | 20| E| TRY
DEU|02030116 | 21| E| BEGIN
DEU|02030116 | 22| E| CALL PROC do_command;
DEU|02030116 | 23| E| END
DEU|02030116 | 24| E| CATCH @errno OF
DEU|02030116 | 25| E| 16102 : ERROR := 'Fⁿr diesen Befehl steht nicht genⁿgend '
DEU|02030116 | 26| E| & 'Speicher zu Verfⁿgung';
DEU|02030116 | 27| E| 16801 : ERROR := 'Kommando abgebrochen';
DEU|02030116 | 28| E| END;
DEU|02030116 | 29| |
DEU|02030116 | 32|RI| ##0203040240->^Syntax
DEU|02030201 | 1| | SQL-PL unterscheidet zwischen einfachen Variablen und Vektorvariablen.
DEU|02030201 | 2| | Vektorvariablen sind eine Zusammenfassung von einfachen Variablen; sie
DEU|02030201 | 3| | k÷nnen maximal aus 255 Einzelkomponenten bestehen.
DEU|02030201 | 5| | Der Gⁿltigkeitsbereich von Variablen kann eingeschrΣnkt werden. Dazu
DEU|02030201 | 6| | gibt es globale, lokal-dynamische und lokal-statische Variablen.
DEU|02030201 | 8| | Globale Variablen sind innerhalb eines Programms ⁿberall bekannt, und
DEU|02030201 | 9| | es k÷nnen ihnen ⁿberall Werte zugewiesen werden.
DEU|02030201 | 11| | Lokal-dynamische Variablen sind nur innerhalb eines Moduls bekannt, und
DEU|02030201 | 12| | nach dem Rⁿcksprung in die aufrufende Umgebung werden sie gel÷scht. Bei
DEU|02030201 | 13| | rekursivem Aufruf des Moduls wird jedesmal eine neue AusprΣgung der
DEU|02030201 | 14|S | Variablen erzeugt !
DEU|02030201 | 19| |
DEU|02030201 | 21| | Lokal-statische Variablen sind ebenfalls nur in dem Modul zugreifbar,
DEU|02030201 | 22| | in dem sie angelegt werden. Im Gegensatz zu den dynamischen Variablen
DEU|02030201 | 23| | behalten sie den zugewiesenen Wert, auch wenn zwischenzeitlich in die
DEU|02030201 | 24| | Aufrufumgebung zurⁿckverzweigt wird. Erst beim Verlassen des Programms
DEU|02030201 | 25| | verlieren sie ihren Wert. Bei rekursivem Aufruf des Moduls kann immer
DEU|02030201 | 26| | mit derselben (!) Variablen gearbeitet werden.
DEU|02030201 | 28| | Achtung : Lokal-statische Variablen, die in SQL-PL Funktionen einge-
DEU|02030201 | 29| | richtet werden, behalten ihren Wert auch ⁿber Programm-
DEU|02030201 | 30|S | wechsel hinweg bei.
DEU|02030201 | 37| | In einer Wertzuweisung wird einer SQL-PL Variablen der Wert eines
DEU|02030201 | 38| | Ausdrucks zugewiesen.
DEU|02030201 | 40| | Beispiele :
DEU|02030201 | 42| |
DEU|02030201 | 43| E| name (i) := nachname(i) & vorname(i); /* globale Vektoren
DEU|02030201 | 44| E| @name := 'Meier'; /* lokale dynamische Variable
DEU|02030201 | 45| E| @@name (1..10) := NULL; /* lokale statische Variable
DEU|02030201 | 46| E| konto_neu (1..anz) := konto_alt (1..anz);
DEU|02030201 | 47| E| @i := @i + 1;
DEU|02030201 | 48| E| j := NULL;
DEU|02030201 | 49| E| uhrzeit := TIME (hhmmss);
DEU|02030201 | 50| E| summe := %sum (v1, v2, v3, v4); /* Funktionsaufruf
DEU|02030201 | 51| |
DEU|02030201 | 53|S | Anm.: Vor der ersten Wertzuweisung hat eine Variable implizit den
DEU|02030201 | 55| | NULL-Wert.
DEU|02030201 | 56| | SQL-PL Variablen geh÷ren keinem Typ an, d. h., einer Variablen
DEU|02030201 | 57| | k÷nnen sowohl Zahlen als auch Zeichenketten zugewiesen werden.
DEU|02030201 | 59| I| ##0203040203<assign^stmt>->^Syntax
DEU|02030201 | 60|RI| ##0203040205<vector^assign^stmt>->^Syntax
DEU|02030202 | 1| | Mit der WRITE-Anweisung kann - im Gegensatz zu CALL FORM -
DEU|02030202 | 2| | zeilenorientiert auf den Bildschirm geschrieben werden.
DEU|02030202 | 4| | Folgende Steueranweisungen k÷nnen benutzt werden :
DEU|02030202 | 6| | NL bewirkt einen Zeilenvorschub.
DEU|02030202 | 7| | NL (n) bewirkt n Zeilenvorschⁿbe.
DEU|02030202 | 8| | COL (n) bestimmt die Ausgabespalte.
DEU|02030202 | 9| | HIGH bewirkt, da▀ der nΣchste Wert hell ausgegeben wird.
DEU|02030202 | 10| | HI (w, ...) gibt mehrere Werte hell aus.
DEU|02030202 | 11| | CLEAR l÷scht den Bildschirm.
DEU|02030202 | 12| | NOCLEAR bewirkt, da▀ der Bildschirm nicht gel÷scht wird,
DEU|02030202 | 13| | wenn durch NL der Bildschirmrand erreicht wird.
DEU|02030202 | 14| | POS (z, s) legt die Bildschirmkoordinaten fⁿr die nΣchste
DEU|02030202 | 15| | Ausgabe fest.
DEU|02030202 | 16| | SIZE (n) bestimmt die LΣnge des nΣchsten Ausgabefeldes.
DEU|02030202 | 17|S | PAUSE fordert eine Quittung (z. B. ENTER) vom Benutzer.
DEU|02030202 | 19| | OPEN bewirkt, da▀ alle folgenden WRITE-Ausgaben nicht
DEU|02030202 | 20| | am Bildschirm erscheinen
DEU|02030202 | 21| | (bis CLOSE oder PAUSE folgt).
DEU|02030202 | 22| | CLOSE l÷st die Bildschirmausgabe der angesammelten Daten
DEU|02030202 | 23| | aus.
DEU|02030202 | 24| | HOLD bewirkt, da▀ die BetΣtigung einer Ausl÷setaste
DEU|02030202 | 25| | verlangt wird, damit ein vollgeschriebener Bildschirm
DEU|02030202 | 26| | automatisch gel÷scht wird.
DEU|02030202 | 28|RI| ##0203040248->^Syntax
DEU|02030203 | 1| | Mit der READ-Anweisung k÷nnen Daten vom Bildschirm in SQL-PL Variablen
DEU|02030203 | 2| | eingelesen werden. Nach jeder Eingabe mu▀ eine Ausl÷setaste gedrⁿckt
DEU|02030203 | 3| | werden.
DEU|02030203 | 5| | Folgende Steueranweisungen k÷nnen benutzt werden :
DEU|02030203 | 7| | NL bewirkt einen Zeilenvorschub.
DEU|02030203 | 8| | NL (n) bewirkt n Zeilenvorschⁿbe.
DEU|02030203 | 9| | COL (n) bestimmt die Eingabespalte.
DEU|02030203 | 10| | HIGH bewirkt, da▀ die Zeichen im Eingabefeld hell
DEU|02030203 | 11| | erscheinen.
DEU|02030203 | 12| | DARK bewirkt, da▀ die Zeichen im Eingabefeld nicht
DEU|02030203 | 13| | sichtbar sind.
DEU|02030203 | 14| | CLEAR l÷scht den Bildschirm.
DEU|02030203 | 15| | POS (z, s) legt Bildschirmkoordinaten fⁿr das nΣchste
DEU|02030203 | 16| | Eingabefeld fest.
DEU|02030203 | 17|S | SIZE (n) bestimmt die LΣnge des nΣchsten Eingabefeldes.
DEU|02030203 | 19| | OUTIN (v) bewirkt, da▀ der aktuelle Wert der Variablen ausge-
DEU|02030203 | 20| | geben wird und dann ⁿberschrieben werden kann.
DEU|02030203 | 21| | PROMPT 'z' kann in Verbindung mit OUTIN benutzt werden. Das
DEU|02030203 | 22| | angegebene Zeichen wird ausgegeben, wenn die Variable
DEU|02030203 | 23| | den NULL-Wert hat.
DEU|02030203 | 25|RI| ##0203040249->^Syntax
DEU|02030204 | 1| | Datenbankkommandos mit SQL
DEU|02030204 | 2| | --------------------------
DEU|02030204 | 4| M| #01Datenbankzugriffe
DEU|02030204 | 5| M| #02Dynamische^SQL-Kommandos
DEU|02030204 | 6| M| #03Dynamische^FETCH-Kommandos
DEU|02030204 | 7| M| #04Massenfetch
DEU|02030204 | 8| M| Routinen zur #05Behandlung^von^SQL-Fehlern
DEU|02030204 | 9| M| #06Multi-DB-Betrieb
DEU|02030204 | 10|RI| ##0203040227->^Syntax
DEU|0203020401 | 1| | In SQL-PL ist die SQL-Schnittstelle des Datenbanksystems ADABAS
DEU|0203020401 | 2| | integriert. ▄ber sie wird der Datenaustausch zwischen Datenbank und
DEU|0203020401 | 3| | SQL-PL Programm realisiert. Nach jedem SQL-Aufruf kann mit $RC geprⁿft
DEU|0203020401 | 4| | werden, welchen Returncode das DBMS geliefert hat.
DEU|0203020401 | 6| | Statische SQL-Kommandos :
DEU|0203020401 | 8| | Diese Kommandos werden beim Abspeichern der Routine geprⁿft. Es k÷nnen
DEU|0203020401 | 9| | Ein- und Ausgabevariablen im Kommando auftreten. Diese SQL-Variablen
DEU|0203020401 | 10| | sind im Kommando durch einen Doppelpunkt gekennzeichnet.
DEU|0203020401 | 12| | Beispiele :
DEU|0203020401 | 14| |
DEU|0203020401 | 15| E| SQL ( SELECT DIRECT name
DEU|0203020401 | 16| E| INTO :k_name
DEU|0203020401 | 17|SE| FROM kunde
DEU|0203020401 | 19| E| KEY knr = :k_nr );
DEU|0203020401 | 22| E| SQL ( INSERT kunde
DEU|0203020401 | 23| E| SET knr = :k_nr, name = :k_name, ort = :k_ort );
DEU|0203020401 | 25| E| SQL ( UPDATE kunde
DEU|0203020401 | 26| E| SET ort = 'Berlin', konto = :@summe
DEU|0203020401 | 27| E| KEY knr = :k_nr );
DEU|0203020401 | 29| E| SQL ( SELECT erg (knr, name)
DEU|0203020401 | 30| E| FROM kunde
DEU|0203020401 | 31| E| WHERE ort = :@k_ort );
DEU|0203020401 | 33| E| SQL ( FETCH FIRST erg
DEU|0203020401 | 34| E| INTO :k_nr, :k_name );
DEU|0203020401 | 35|S |
DEU|0203020401 | 37|RI| ##0203040227->^Syntax
DEU|0203020402 | 1| | Dynamische SQL-Kommandos :
DEU|0203020402 | 3| | Diese Kommandos werden erst bei der Ausfⁿhrung geprⁿft.
DEU|0203020402 | 5| | Direkte Ausfⁿhrung :
DEU|0203020402 | 7| M| #01EXECUTE^IMMEDIATE
DEU|0203020402 | 9| M| #01EXECUTE^IMMEDIATE^USING
DEU|0203020402 | 11| | Vorbereitung und mehrfache Ausfⁿhrung :
DEU|0203020402 | 13| M| #02PREPARE^FROM
DEU|0203020402 | 15| M| #02EXECUTE^USING
DEU|0203020402 | 17|SM| #02DESCRIBE^INTO
DEU|0203020402 | 19|RI| ##0203040229->^Syntax
DEU|020302040201| 1| | Direkte Ausfⁿhrung ohne SQL-Variablen :
DEU|020302040201| 3| | Beispiel :
DEU|020302040201| 5| |
DEU|020302040201| 6| E| kommando := 'SELECT * FROM kunde WHERE name = '''';
DEU|020302040201| 8| E| READ name;
DEU|020302040201| 10| E| SQL EXECUTE IMMEDIATE kommando & name & '''';
DEU|020302040201| 11| |
DEU|020302040201| 12| | Direkte Ausfⁿhrung mit SQL-VARIABLEN :
DEU|020302040201| 14| | Die Positionen der SQL-Variablen werden im Kommando durch
DEU|020302040201| 15| | Fragezeichen reprΣsentiert.
DEU|020302040201| 17|S | Beispiel :
DEU|020302040201| 19| |
DEU|020302040201| 20| E| kommando := 'SELECT * FROM kunde WHERE name = ?';
DEU|020302040201| 22| E| READ name;
DEU|020302040201| 24| E| SQL EXECUTE IMMEDIATE kommando USING name;
DEU|020302040201| 25| |
DEU|020302040201| 27|RI| ##0203040229->^Syntax
DEU|020302040202| 1| | Vorbereitung eines dynamischen SQL-Kommandos :
DEU|020302040202| 3| | Die Positionen der SQL-Variablen werden im Kommando durch
DEU|020302040202| 4| | Fragezeichen reprΣsentiert.
DEU|020302040202| 5| |
DEU|020302040202| 6| E| kommando := 'SELECT DIRECT kunden_nr INTO ?'
DEU|020302040202| 7| E| & 'WHERE name = ? AND stadt = ?';
DEU|020302040202| 8| E| SQL PREPARE sel FROM kommando;
DEU|020302040202| 9| |
DEU|020302040202| 11| | Ausfⁿhrung eines vorbereiteten Kommandos :
DEU|020302040202| 13| | Ein vorbereitetes Kommando kann beliebig oft mit den gleichen
DEU|020302040202| 14| | oder unterschiedlichen Variablen ausgefⁿhrt werden.
DEU|020302040202| 15| |
DEU|020302040202| 16| E| SQL EXECUTE sel USING k_no, name, stadt;
DEU|020302040202| 17|S |
DEU|020302040202| 19| | Abfragen der Variablen-Information :
DEU|020302040202| 20| |
DEU|020302040202| 21| E| SQL DESCRIBE sel INTO @info(1..10);
DEU|020302040202| 22| |
DEU|020302040202| 23| | @info(1) -> 'OUT FIXED ( 6 , 0 ) NOT NULL'
DEU|020302040202| 24| | @info(2) -> 'IN CHAR ( 20 ) NOT NULL'
DEU|020302040202| 25| | @info(3) -> 'IN CHAR ( 20 )'
DEU|020302040202| 26| | $COUNT -> 3
DEU|020302040202| 28|RI| ##0203040229->^Syntax
DEU|0203020403 | 1| | Dynamische FETCH-Kommandos :
DEU|0203020403 | 3| | Um die mit einem dynamischen SQL-Kommando selektierten Werte Variablen
DEU|0203020403 | 4| | zuweisen zu k÷nnen, steht das dynamische FETCH-Kommando zur Verfⁿgung.
DEU|0203020403 | 5| | Die Werte der aktuellen Zeile der genannten Ergebnismenge werden den
DEU|0203020403 | 6| | durch ':' gekennzeichneten Variablen (lokalen oder globalen Variablen
DEU|0203020403 | 7| | oder Vektorbereichen) zugewiesen.
DEU|0203020403 | 8| | Ist keine Ergebnismenge angegeben, so bezieht sich das FETCH-Kommando
DEU|0203020403 | 9| | auf die zuletzt erzeugte Ergebnismenge.
DEU|0203020403 | 11| | Beispiel :
DEU|0203020403 | 13| |
DEU|0203020403 | 14| E| tabelle := 'kunde';
DEU|0203020403 | 15| E| READ obergrenze;
DEU|0203020403 | 16| E| kommando := 'SELECT erg (name, ort) FROM ' & tabelle
DEU|0203020403 | 17|SE| & ' where ' & 'knr < ' & obergrenze;
DEU|0203020403 | 19| E| SQL EXECUTE IMMEDIATE kommando;
DEU|0203020403 | 20| E| SQL FETCH IMMEDIATE FIRST erg INTO :@kname, :@kort;
DEU|0203020403 | 21| E| WHILE $RC = 0 DO
DEU|0203020403 | 22| E| BEGIN
DEU|0203020403 | 23| E| WRITE NL, @kname, @kort;
DEU|0203020403 | 24| E| SQL FETCH IMMEDIATE NEXT erg INTO :@kname, :@kort;
DEU|0203020403 | 25| E| END;
DEU|0203020403 | 26| |
DEU|0203020403 | 28|RI| ##0203040230->^Syntax
DEU|0203020404 | 1| | Massenfetch :
DEU|0203020404 | 3| | Eine elegante M÷glichkeit zur Abarbeitung von Ergebnismengen bietet
DEU|0203020404 | 4| | SQL-PL durch eine Erweiterung des FETCH-Kommandos. Durch Angabe von
DEU|0203020404 | 5| | Vektorbereichen im FETCH-Kommando wird bewirkt, da▀ mit einem SQL-
DEU|0203020404 | 6| | Auftrag bis zu 255 Zeilen einer Ergebnismenge auf einmal bereitgestellt
DEU|0203020404 | 7| | werden.
DEU|0203020404 | 9| | Beispiel :
DEU|0203020404 | 11| |
DEU|0203020404 | 12| E| SQL ( SELECT knr, name FROM kunde ORDER BY knr );
DEU|0203020404 | 13| E| IF $RC = 0 AND $COUNT <= 255
DEU|0203020404 | 14| E| THEN SQL ( FETCH INTO knr(1..$COUNT), name(1..$COUNT))
DEU|0203020404 | 15| E| ELSE ....
DEU|0203020404 | 16|S |
DEU|0203020404 | 19|RI| ##0203040231->^Syntax
DEU|0203020405 | 1| | SQL-PL unterstⁿtzt die Behandlung von SQL-Fehlern wie folgt:
DEU|0203020405 | 2| | In AbhΣngigkeit des SQL-Returncodes wird geprⁿft, ob das laufende
DEU|0203020405 | 3| | Programm eine Routine mit dem unten angegebenen Namen besitzt. Falls
DEU|0203020405 | 4| | ja, wird diese implizit mit CALL aufgerufen, andernfalls wird die
DEU|0203020405 | 5| | laufende Routine mit der nΣchsten Anweisung fortgesetzt.
DEU|0203020405 | 6| | Die Routinen zur Behandlung von SQL-Fehlern k÷nnen einen formalen
DEU|0203020405 | 7| | Parameter haben, dem vom SQL-PL Laufzeitsystem der Name der Routine, in
DEU|0203020405 | 8| | der der SQL-Fehler auftrat, zugeordnet wird.
DEU|0203020405 | 11| | SQLEXCEPTION : 100 < $RC < 700
DEU|0203020405 | 12| I| ##0203040236->^Syntax
DEU|0203020405 | 14| | SQLNOTFOUND : $RC = 100
DEU|0203020405 | 15| I| ##0203040237->^Syntax
DEU|0203020405 | 17|S | SQLTIMEOUT : $RC = 700
DEU|0203020405 | 19| I| ##0203040238->^Syntax
DEU|0203020405 | 21| | SQLERROR : $RC < 0
DEU|0203020405 | 22| I| ##0203040235->^Syntax
DEU|0203020405 | 24| | SQLWARNING : $SQLWARNING (eine Warnung ist gesetzt)
DEU|0203020405 | 25|RI| ##0203040239->^Syntax
DEU|0203020406 | 1| | Mit der CONNECT-Anweisung wird die Verbindung zu anderen Datenbanken
DEU|0203020406 | 2| | oder anderen Benutzerbereichen auf derselben DB hergestellt.
DEU|0203020406 | 4| | CONNECT symbolic_dbname AS (<username>, <password>, <serverdb>,
DEU|0203020406 | 5| | /<servernode>/)
DEU|0203020406 | 7| | Der <servernode> mu▀ nur dann angegeben werden, wenn die Datenbank auf
DEU|0203020406 | 8| | einem anderen Knoten als dem aktuellen liegt.
DEU|0203020406 | 10| | Beispiel :
DEU|0203020406 | 12| |
DEU|0203020406 | 13| E| READ @username, DARK, @password;
DEU|0203020406 | 14| E| CONNECT db2 AS (@username, @password, 'OTHERDB');
DEU|0203020406 | 16| E| db := 'DB2';
DEU|0203020406 | 17|SE| CONNECT :db AS ('MEIER', 'ANFANG', 'OTHERDB', 'NODE2');
DEU|0203020406 | 19| |
DEU|0203020406 | 21| I| ##0203040233->^Syntax
DEU|0203020406 | 23| | In $RC und $RT sind die Fehlercodes und -meldungen abfragbar.
DEU|0203020406 | 25| | Die Verbindung wird nach Ausfⁿhrung des Programms implizit abgebrochen
DEU|0203020406 | 27| | Mit der RELEASE-Anweisung kann die Verbindung explizit abgebrochen
DEU|0203020406 | 28| | werden.
DEU|0203020406 | 30| | RELEASE symbolic_dbname
DEU|0203020406 | 32| | Nach dem Schlⁿsselwort SQL wird der symbolische Datenbankname
DEU|0203020406 | 33| | angegeben, dem in der CONNECT-Anweisung ein physikalischer
DEU|0203020406 | 34| | Datenbankname zugeordnet wurde. Das angegebene Kommando wird dann zur
DEU|0203020406 | 35|S | Ausfⁿhrung an das entsprechende DBMS geschickt.
DEU|0203020406 | 37| | Beispiel :
DEU|0203020406 | 39| |
DEU|0203020406 | 40| E| READ @username, DARK, @password;
DEU|0203020406 | 41| E| CONNECT db2 AS (@username, @password, 'OTHERDB');
DEU|0203020406 | 42| E| SQL db2 ( SELECT knr, name FROM kunde );
DEU|0203020406 | 43| E| SQL db2 ( FETCH INTO :knr, :name ); ...
DEU|0203020406 | 44| E| RELEASE db2;
DEU|0203020406 | 45| |
DEU|0203020406 | 47|RI| ##0203040234->^Syntax
DEU|02030205 | 1| | REPORT und gespeicherte Kommandos
DEU|02030205 | 2| | ---------------------------------
DEU|02030205 | 4| M| Tabellenaufbereitung mit #01REPORT
DEU|02030205 | 5| M| Aufruf von #02gespeicherten^Kommandos
DEU|02030205 | 6| M| Im #03Multi-DB-Betrieb
DEU|02030205 | 7| M| Angabe eines #04Headers
DEU|02030205 | 8| M| #05Optionen
DEU|02030205 | 9|RM| Weiterverwendung der Ergebnisse ( #06RESULT )
DEU|0203020501 | 1| | Zur Aufbereitung von Datenbank-Ergebnismengen dient die Schnittstelle
DEU|0203020501 | 2| | zum ADABAS Reportgenerator.
DEU|0203020501 | 4| | Beispiel :
DEU|0203020501 | 6| |
DEU|0203020501 | 7| E| SQL ( SELECT * FROM kunde );
DEU|0203020501 | 8| E| REPORT CMD ( TTITLE ''== Kunden-Liste =='');
DEU|0203020501 | 9| |
DEU|0203020501 | 11| I| Es k÷nnen beliebige ##08REPORT-Kommandos - durch Semikolon oder Zeilenende
DEU|0203020501 | 12| | getrennt - angegeben werden.
DEU|0203020501 | 14| | Beispiel :
DEU|0203020501 | 16| |
DEU|0203020501 | 17|SE| SQL ( SELECT * FROM kunde );
DEU|0203020501 | 19| E| REPORT CMD ( TTITLE ''== Kunden =='' ; TOTAL kontostand
DEU|0203020501 | 20| E| GROUP kundennummer );
DEU|0203020501 | 21| |
DEU|0203020501 | 25| | Durch einen Doppelpunkt gekennzeichnete SQL-PL Variablen werden vor dem
DEU|0203020501 | 26| | Aufruf textuell substituiert.
DEU|0203020501 | 28| | Beispiel :
DEU|0203020501 | 30| |
DEU|0203020501 | 31| E| Variable_mit_REPORT_Kommandos := 'GROUP kundennummer ; TOTAL 1';
DEU|0203020501 | 32| E| SQL ( SELECT * FROM kunde );
DEU|0203020501 | 33| E| READ @titel;
DEU|0203020501 | 34| E| REPORT CMD (:Variable_mit_REPORT_Kommandos ; TTITLE :@titel);
DEU|0203020501 | 35|S |
DEU|0203020501 | 37| | Um benannte Ergebnismengen mit REPORT aufbereiten zu k÷nnen, mu▀ der
DEU|0203020501 | 38| | Ergebnismengenname angegeben werden. Dies ist auch als Variable
DEU|0203020501 | 39| | (gekennzeichnet durch vorangestellten ':') m÷glich.
DEU|0203020501 | 41| | Beispiele :
DEU|0203020501 | 43| |
DEU|0203020501 | 44| E| SQL ( SELECT ergebnis (*) FROM kunde );
DEU|0203020501 | 45| E| REPORT ergebnis CMD (TTITLE ''== Kunden-Liste =='');
DEU|0203020501 | 47| E| erg := 'ERGEBNIS';
DEU|0203020501 | 48| E| REPORT :erg CMD (TTITLE ''== Kunden-Liste =='');
DEU|0203020501 | 49| |
DEU|0203020501 | 51| | Mit REPORT SHOW wird die Ergebnismenge des letzten SHOW- oder EXPLAIN-
DEU|0203020501 | 52|S | Kommandos aufbereitet.
DEU|0203020501 | 55| I| ZusΣtzlich k÷nnen eine ##0203020503andere^Datenbank, eine ##0203020504▄berschrift, ##0203020505Optionen
DEU|0203020501 | 56| I| oder ##0203020506weiterzuverwendende^Ergebnisse spezifiziert werden.
DEU|0203020501 | 58| | Beispiel :
DEU|0203020501 | 60| |
DEU|0203020501 | 61| E| REPORT erg
DEU|0203020501 | 62| E| DBNAME = database2
DEU|0203020501 | 63| E| HEADER 'Kundenliste'
DEU|0203020501 | 64| E| CMD ( TTITLE 'Alle Kunden'
DEU|0203020501 | 65| E| TOTAL 'Gesamtsumme : ' 3 )
DEU|0203020501 | 66| E| OPTIONS ( BACKGROUND, SETLOCAL )
DEU|0203020501 | 67| E| RESULT ( ges_sum = SUM (3), durchschn = AVG (4) );
DEU|0203020501 | 68| |
DEU|0203020501 | 70|RI| ##0203040243->^Syntax
DEU|0203020502 | 1| | Fⁿr den Aufruf von in QUERY definierten gespeicherten Kommandos gibt es
DEU|0203020502 | 2| | zwei syntaktische M÷glichkeiten:
DEU|0203020502 | 5| | Zum einen kann fⁿr den Aufruf eines gespeicherten Kommandos die QUERY-
DEU|0203020502 | 6| | Syntax verwendet werden. Nach dem Schlⁿsselwort CMD folgt dann der
DEU|0203020502 | 7| | Aufruf wie in der Kommandozeile von QUERY. In SQL-PL ist dabei
DEU|0203020502 | 8| | zusΣtzlich die Angabe von Variablen m÷glich. Variablen mⁿssen durch
DEU|0203020502 | 9| | Voranstellen von ':' gekennzeichnet sein. Sie werden vor dem Aufruf des
DEU|0203020502 | 10| | gespeicherten Kommandos durch ihren aktuellen Wert ersetzt.
DEU|0203020502 | 12| | Beispiel :
DEU|0203020502 | 14| |
DEU|0203020502 | 15| E| QUERY CMD ( run kunden_liste );
DEU|0203020502 | 17|SE| QUERY CMD ( run :$USER.kunden_liste :nr 'Kundenliste' );
DEU|0203020502 | 19| |
DEU|0203020502 | 23| | Als zweite M÷glichkeit wird das gespeicherte Kommando durch Angabe
DEU|0203020502 | 24| | seines Namens und ggf. des Eigentⁿmernamens identifiziert. Dies kann
DEU|0203020502 | 25| | als Konstante oder Variable (gekennzeichnet durch Voranstellen von ':')
DEU|0203020502 | 26| | geschehen.
DEU|0203020502 | 28| | Die evt. erforderlichen Parameter werden nach dem Schlⁿsselwort PARM
DEU|0203020502 | 29| | (oder PARMS) durch Komma voneinander getrennt angegeben. Es k÷nnen
DEU|0203020502 | 30| | beliebige Ausdrⁿcke als Parameter ⁿbergeben werden. NULL-Werte sind
DEU|0203020502 | 31| | nicht erlaubt !!!
DEU|0203020502 | 33| | Beispiel :
DEU|0203020502 | 35|S |
DEU|0203020502 | 37| E| QUERY kunden_liste;
DEU|0203020502 | 39| E| QUERY :$USER.kunden_liste
DEU|0203020502 | 40| E| PARMS ( nr, 'Kundenliste' );
DEU|0203020502 | 41| |
DEU|0203020502 | 46| I| ZusΣtzlich k÷nnen eine ##0203020503andere^Datenbank, und - wenn das gespeicherte
DEU|0203020502 | 47| I| Kommando einen REPORT-Aufruf enthΣlt - eine ##0203020504▄berschrift, ##0203020505Optionen oder
DEU|0203020502 | 48| I| ##0203020506weiterzuverwendende^Ergebnisse spezifiziert werden.
DEU|0203020502 | 50| | Beispiele :
DEU|0203020502 | 52| |
DEU|0203020502 | 53|SE| QUERY DBNAME = database2
DEU|0203020502 | 55| E| HEADER 'Kundenliste'
DEU|0203020502 | 56| E| CMD ( run :$USER.kunden_liste :nr 'Kundenliste' )
DEU|0203020502 | 57| E| OPTION ( SETOFF )
DEU|0203020502 | 58| E| RESULT ( ges_sum = SUM (3) );
DEU|0203020502 | 60| E| QUERY :$USER.kunden_liste
DEU|0203020502 | 61| E| DBNAME = database2
DEU|0203020502 | 62| E| HEADER 'Kundenliste'
DEU|0203020502 | 63| E| PARMS ( nr, 'Kundenliste' )
DEU|0203020502 | 64| E| OPTION ( SETOFF )
DEU|0203020502 | 65| E| RESULT ( ges_sum = SUM (3) );
DEU|0203020502 | 66| |
DEU|0203020502 | 68|RI| ##0203040241->^Syntax
DEU|0203020503 | 1| | Ergebnismengen, die nicht in der Default-Datenbank aufgebaut wurden,
DEU|0203020503 | 2| | k÷nnen ebenfalls mit REPORT bearbeitet werden. Dazu wird der
DEU|0203020503 | 3| | symbolische Datenbankname angegeben.
DEU|0203020503 | 5| | Ebenso k÷nnen gespeicherte Kommandos von einer anderen Datenbank
DEU|0203020503 | 6| | aufgerufen werden.
DEU|0203020503 | 8| | Beispiele:
DEU|0203020503 | 10| |
DEU|0203020503 | 11| E| SQL db2 ( SELECT ergebnis (*) FROM kunde );
DEU|0203020503 | 12| E| REPORT ergebnis CMD (TTITLE ''== Kunden-Liste =='')
DEU|0203020503 | 13| E| DBNAME = db2;
DEU|0203020503 | 15| E| QUERY kunden_liste
DEU|0203020503 | 16|SE| DBNAME = db2;
DEU|0203020503 | 19| E| QUERY :$USER.kunden_liste PARMS ( nr, 'Kundenliste' )
DEU|0203020503 | 20| E| DBNAME = db2;
DEU|0203020503 | 21| |
DEU|0203020503 | 23|RI| ##0203040241->^Syntax
DEU|0203020504 | 1| | Es kann eine bis zu 40 Zeichen lange ▄berschrift der REPORT-Seite
DEU|0203020504 | 2| | festgelegt werden. Dazu wird hinter dem Schlⁿsselwort HEADER ein
DEU|0203020504 | 3| | Ausdruck angegeben (z. B. Zeichenkette oder Variable). Die ▄berschrift
DEU|0203020504 | 4| | wird ggf. auf die ersten 40 Zeichen verkⁿrzt. Ist keine ▄berschrift
DEU|0203020504 | 5| | angegeben, wird der Name der Ergebnistabelle als ▄berschrift
DEU|0203020504 | 6| | ausgegeben.
DEU|0203020504 | 8| | Beispiele :
DEU|0203020504 | 10| |
DEU|0203020504 | 11| E| QUERY HEADER 'Kundenliste'
DEU|0203020504 | 12| E| CMD ( run :$USER.kunden_liste :nr 'Kundenliste' );
DEU|0203020504 | 14| E| QUERY :$USER.kunden_liste
DEU|0203020504 | 15| E| PARMS ( nr, 'Kundenliste' )
DEU|0203020504 | 16|SE| HEADER 'Kundenliste vom ' & DATE (dd.mm.yyyy);
DEU|0203020504 | 19| E| REPORT HEADER 'Kundenliste'
DEU|0203020504 | 20| E| CMD ( TTITLE 'Alle Kunden'
DEU|0203020504 | 21| E| TOTAL 'Gesamtsumme : ' 3 )
DEU|0203020504 | 22| |
DEU|0203020504 | 24|RI| ##0203040241->^Syntax
DEU|0203020505 | 1| | Es k÷nnen Optionen fⁿr die REPORT-Ausfⁿhrung definiert werden. Mit der
DEU|0203020505 | 2| | Option BACKGROUND wird die Bildschirmausgabe einer mit dem REPORT-
DEU|0203020505 | 3| | Generator aufbereiteten Ergebnismenge bis zur nΣchsten
DEU|0203020505 | 4| | Bildschirmausgabe unterdrⁿckt.
DEU|0203020505 | 6| | Die interaktive ─nderung der SET-Parameter wΣhrend der REPORT-
DEU|0203020505 | 7| | Ausfⁿhrung kann mit
DEU|0203020505 | 8| | SETOFF unterbunden werden,
DEU|0203020505 | 9| | SETLOCAL temporΣr erlaubt werden, d. h., nach Verlassen der REPORT-
DEU|0203020505 | 10| | Anzeige werden die SET-Parameter auf die Werte vor dem REPORT-
DEU|0203020505 | 11| | Aufruf zurⁿckgesetzt.
DEU|0203020505 | 12| | Ist keine Option fⁿr die ─nderung der SET-Parameter angegeben, wirkt
DEU|0203020505 | 13| | jede ─nderung der SET-Parameter global, d. h., sie ist bis zur nΣchsten
DEU|0203020505 | 14|S | SET-ParameterΣnderung gⁿltig.
DEU|0203020505 | 19| | Beispiele :
DEU|0203020505 | 21| |
DEU|0203020505 | 22| E| QUERY OPTION ( SETOFF )
DEU|0203020505 | 23| E| CMD ( run :$USER.kunden_liste :nr 'Kundenliste' );
DEU|0203020505 | 25| E| QUERY :$USER.kunden_liste
DEU|0203020505 | 26| E| PARMS ( nr, 'Kundenliste' )
DEU|0203020505 | 27| E| OPTION ( SETOFF );
DEU|0203020505 | 29| E| REPORT CMD ( TTITLE 'Alle Kunden'
DEU|0203020505 | 30| E| TOTAL 'Gesamtsumme : ' 3 )
DEU|0203020505 | 31| E| OPTIONS ( BACKGROUND, SETLOCAL );
DEU|0203020505 | 32| |
DEU|0203020505 | 34|RI| ##0203040245->^Syntax
DEU|0203020506 | 1| | Die durch den REPORT-Generator ermittelten Endergebnisse fⁿr Spalten
DEU|0203020506 | 2| | der Ergebnistabelle (SUM, AVG, MIN, MAX, COUNT oder selbstdefinierte
DEU|0203020506 | 3| | arithmetische Ausdrⁿcke) k÷nnen in SQL-PL weiterverwendet werden. Dazu
DEU|0203020506 | 4| | wird das entsprechende Ergebnis einer Variablen zugewiesen. Ein
DEU|0203020506 | 5| | Ergebnis ist nur dann nicht NULL, wenn in der REPORT-Ausfⁿhrung ein
DEU|0203020506 | 6| | beliebiges Ergebnis fⁿr die angegebene Spalte berechnet wurde, d. h.,
DEU|0203020506 | 7| | wenn es beim Aufruf von REPORT oder bei der Ausfⁿhrung interaktiv
DEU|0203020506 | 8| | definiert wird.
DEU|0203020506 | 10| | Beispiele :
DEU|0203020506 | 12| |
DEU|0203020506 | 13| E| QUERY CMD ( run :$USER.kunden_liste :nr 'Kundenliste' )
DEU|0203020506 | 14| E| RESULT ( ges_sum = SUM (3) );
DEU|0203020506 | 16| E| QUERY :$USER.kunden_liste PARMS ( nr, 'Kundenliste' )
DEU|0203020506 | 17|SE| RESULT ( ges_sum = SUM (3) );
DEU|0203020506 | 19| E| REPORT CMD ( TTITLE 'Alle Kunden'; TOTAL 'Gesamtsumme : ' 3 )
DEU|0203020506 | 20| E| RESULT ( ges_sum = SUM (3), durchschn = AVG (4) );
DEU|0203020506 | 21| |
DEU|0203020506 | 23|RI| ##0203040244->^Syntax
DEU|02030206 | 1| | Bearbeiten von Betriebssystemdateien
DEU|02030206 | 2| | ------------------------------------
DEU|02030206 | 4| M| #01╓ffnen und #01Schlie▀en von BS-Dateien
DEU|02030206 | 5| M| #02Lesen von BS-Dateien
DEU|02030206 | 6|RM| #03Beschreiben von BS-Dateien
DEU|0203020601 | 1| |
DEU|0203020601 | 2| E| OPEN fileid filename READ oder WRITE oder APPEND
DEU|0203020601 | 4| E| CLOSE fileid
DEU|0203020601 | 5| |
DEU|0203020601 | 7| | Eine <fileid> ist ein interner Name fⁿr eine Datei, mit dem man sich
DEU|0203020601 | 8| | bei READFILE, WRITEFILE oder CLOSE auf die mit OPEN ge÷ffnete Datei
DEU|0203020601 | 9| | beziehen kann. READ er÷ffnet eine Datei zum Lesen, WRITE zum Schreiben.
DEU|0203020601 | 10| | Mit APPEND wird eine bestehende Datei zum Schreiben er÷ffnet, wobei der
DEU|0203020601 | 11| | bisherige Inhalt erhalten bleibt.
DEU|0203020601 | 13| | Beispiele :
DEU|0203020601 | 15| |
DEU|0203020601 | 16| E| OPEN eingabe 'eingabe datei' READ
DEU|0203020601 | 17|SE| READFILE eingabe a:5, b:6;
DEU|0203020601 | 19| E| CLOSE eingabe
DEU|0203020601 | 20| |
DEU|0203020601 | 22| I| ##0203040250<open^file^stmt>->^Syntax
DEU|0203020601 | 23|RI| ##0203040251<close^file^stmt>->^Syntax
DEU|0203020602 | 1| | Mit der READFILE-Anweisung k÷nnen Daten aus BS-Dateien in SQL-PL
DEU|0203020602 | 2| | Variablen eingelesen werden. Die Daten mⁿssen in lesbarer Form
DEU|0203020602 | 3| | vorliegen.
DEU|0203020602 | 5| | Beispiel :
DEU|0203020602 | 7| |
DEU|0203020602 | 8| E| OPEN eingabe 'eingabe datei' READ;
DEU|0203020602 | 9| E| IF NOT EOF ( eingabe )
DEU|0203020602 | 10| E| THEN
DEU|0203020602 | 11| E| READFILE eingabe l:5, b:l, c;
DEU|0203020602 | 12| |
DEU|0203020602 | 13| | /* In die Variable l wird die LΣnge des nachfolgenden Wertes
DEU|0203020602 | 14| | /* eingelesen !
DEU|0203020602 | 16| | Zu jeder Variablen - au▀er der letzten - mu▀ eine LΣnge angegeben
DEU|0203020602 | 17|S | werden.
DEU|0203020602 | 19|RI| ##0203040254->^Syntax
DEU|0203020603 | 1| | Mit der WRITEFILE-Anweisung k÷nnen Daten in eine BS-Datei geschrieben
DEU|0203020603 | 2| | werden.
DEU|0203020603 | 4| | Beispiel :
DEU|0203020603 | 6| |
DEU|0203020603 | 7| E| dateiname := 'eingabe datei';
DEU|0203020603 | 8| E| OPEN ausgabe dateiname WRITE
DEU|0203020603 | 9| E| WRITEFILE ausgabe 'Diese Datei hat den Namen ', dateiname:7 ;
DEU|0203020603 | 10| E| WRITEFILE ausgabe 'Jetzt folgen 25 Leerzeichen ',' ':25;
DEU|0203020603 | 11| |
DEU|0203020603 | 13| | Nach den Werten kann eine LΣngenangabe folgen. Fehlt die LΣngenangabe,
DEU|0203020603 | 14| | wird der Wert in seiner tatsΣchlichen LΣnge ausgegeben. Ist die
DEU|0203020603 | 15| | LΣngenangabe zu gro▀ oder zu klein, wird abgeschnitten oder mit
DEU|0203020603 | 16|S | Leerzeichen aufgefⁿllt.
DEU|0203020603 | 19|RI| ##0203040252->^Syntax
DEU|02030207 | 1| | Es ist m÷glich, aus einer SQL-PL Routine heraus den Editor aufzurufen.
DEU|02030207 | 2| | Als Argument ist ein Vektorbereich oder eine Variable anzugeben.
DEU|02030207 | 3| | Wird ein Vektorbereich angegeben, entspricht jede Komponente des
DEU|02030207 | 4| | Vektors einer Zeile des Editierbereiches.
DEU|02030207 | 6| | Beispiel :
DEU|02030207 | 7| |
DEU|02030207 | 8| E| EDIT ( text (1..20) );
DEU|02030207 | 9| |
DEU|02030207 | 11| | Wird eine Variable angegeben, wird der mit dem Editor erstellte Text
DEU|02030207 | 12| | dieser Variablen zugewiesen. Dieser Text kann jederzeit erneut editiert
DEU|02030207 | 13| | werden. Insbesondere kann er in einer STRING-Spalte in der Datenbank
DEU|02030207 | 14| | abgelegt werden.
DEU|02030207 | 16| | Beispiel :
DEU|02030207 | 17|S |
DEU|02030207 | 19| E| PROC kunde.k_pflegen
DEU|02030207 | 20| E| ...
DEU|02030207 | 21| E| SQL ( OPEN COLUMN ... IN WRITE MODE );
DEU|02030207 | 22| E| SQL ( READ COLUMN ... BUFFER :text );
DEU|02030207 | 23| E| EDIT ( text );
DEU|02030207 | 24| E| SQL ( WRITE COLUMN ... BUFFER :text );
DEU|02030207 | 25| E| SQL ( CLOSE COLUMN ... );
DEU|02030207 | 26| |
DEU|02030207 | 28| | Au▀erdem k÷nnen noch folgende Parameter angegeben werden :
DEU|02030207 | 30| | POS (<zeile>, <spalte>) bestimmt die Bildschirmposition der linken
DEU|02030207 | 31| | oberen Ecke des Editorfensters.
DEU|02030207 | 33| | SIZE (<zeilen>, <spalten>) bestimmt die Gr÷▀e des Fensters.
DEU|02030207 | 35|S | MARK (<zeilen>, <spalten>) bestimmt die Cursorposition.
DEU|02030207 | 37| | MSG = <ausdruck> belegt die Meldungszeile des Editors.
DEU|02030207 | 39| | LABEL = <ausdruck> ( bzw. HEADER ) belegt die ▄berschriftenzeile
DEU|02030207 | 41| | COMPID = <ausdruck> belegt das linke Feld in der ▄berschriftenzeile des
DEU|02030207 | 42| | Editors.
DEU|02030207 | 44| | PRINT veranla▀t das Ausdrucken des Editorinhalts.
DEU|02030207 | 46| | KEYSWAP bewirkt, da▀ der Editor die Tastenzuordnung von der aufrufenden
DEU|02030207 | 47| | SQL-PL Routine ⁿbernimmt.
DEU|02030207 | 49| | NOINIT bewirkt, da▀ die Position des Editorfensters beim Verlassen des
DEU|02030207 | 50| | Editors gespeichert wird und beim nΣchsten Aufruf des Editors mit
DEU|02030207 | 51| | NOINIT-Option und der gleichen SQL-PL Variablen wieder hergestellt
DEU|02030207 | 52|S | wird.
DEU|02030207 | 55| | F1 = <ausdruck> aktiviert die erste Funktionstaste (PF1 bzw. SK1).
DEU|02030207 | 56| | M÷glich ist die Angabe von F1 bis F12, HELP, UP und DOWN.
DEU|02030207 | 58| | MAXLINES = <ausdruck> legt die Anzahl der Σnderbaren Vektorkomponenten
DEU|02030207 | 59| | fest.
DEU|02030207 | 61| | Nach dem Editoraufruf sind die Variablen $CMD, $EDITLINES und $KEY
DEU|02030207 | 62| | belegt.
DEU|02030207 | 64|RI| ##0203040247->^Syntax
DEU|02030209 | 1| | Die Komponenten des ersten Vektors werden aufsteigend (GTSORT) oder
DEU|02030209 | 2| | absteigend (LTSORT) sortiert. Die Komponenten aller anderen Vektoren
DEU|02030209 | 3| | werden entsprechend mitvertauscht.
DEU|02030209 | 5| | Beispiele :
DEU|02030209 | 6| |
DEU|02030209 | 8| E| GTSORT ( nachname(1..10), vorname(), wohnort() );
DEU|02030209 | 9| E| LTSORT ( laenge(1..anzahl) );
DEU|02030209 | 10| |
DEU|02030209 | 12|RI| ##0203040215->^Syntax
DEU|02030210 | 1| | Die Einstellung der benutzerspezifischen SET-Parameter kann in SQL-PL
DEU|02030210 | 2| | Programmen mit der SET-Anweisung geΣndert werden.
DEU|02030210 | 4| | Beispiele :
DEU|02030210 | 6| |
DEU|02030210 | 7| E| SET ( NULL, '' );
DEU|02030210 | 8| E| SET ( DECIMALREP, '//./' );
DEU|02030210 | 9| |
DEU|02030210 | 11| | Nur die zur Laufzeit relevanten Set-Parameter lassen sich durch
DEU|02030210 | 12| M| #01Schlⁿsselw÷rter einstellen.
DEU|02030210 | 14| I| Mit der ##0203030311SET-Funktion lassen sich die Werte der SET-Parameter ermitteln.
DEU|02030210 | 16|RI| ##0203040311->^Syntax
DEU|0203021001 | 1| | Die folgenden Schlⁿsselw÷rter sind in SET-Anweisungen zulΣssig :
DEU|0203021001 | 3| | LANGUAGE Die Sprache des laufenden Programms
DEU|0203021001 | 4| | NULLVALUE Die Darstellung des Nullwertes
DEU|0203021001 | 5| | SEPARATOR Das Zeichen zur Trennung von REPORT-Spalten
DEU|0203021001 | 6| | DECIMALREP Die Darstellung von numerischen Werten
DEU|0203021001 | 7| | DATE Die Darstellung von Datumswerten
DEU|0203021001 | 8| | TIME Die Darstellung von Zeitwerten
DEU|0203021001 | 9| | COPIES Die Anzahl von Kopien bei DruckauftrΣgen
DEU|0203021001 | 10| | PROTOCOL Der Name der Datei fⁿr SQLTRACE/MODULETRACE-Ausgaben
DEU|0203021001 | 11| I| SYSEDITOR Der Name des gewⁿnschten Editors fⁿr ##040314SYSEDIT
DEU|0203021001 | 12| | PRINFORMAT Der Names des aktuellen Printformats
DEU|0203021001 | 13| | PRESENTATION Der Name der aktuellen Bildschirmeinstellung
DEU|0203021001 | 15|RI| ##0203040302->^Syntax
DEU|02030211 | 1| | Zur Ermittlung von Laufzeiten k÷nnen die $-Funktionen $SEC und $MICRO
DEU|02030211 | 2| | verwendet werden.
DEU|02030211 | 3| | Dazu wird mit der Anweisung INITTIME die Stoppuhr gestartet und diese
DEU|02030211 | 4| | beiden Variablen initialisiert. GETTIME weist $SEC und $MICRO dann die
DEU|02030211 | 5| | seit INITTIME vergangene Zeit in Sekunden bzw. Mikrosekunden zu.
DEU|02030211 | 7| | Beispiel :
DEU|02030211 | 9| |
DEU|02030211 | 10| E| PROC systime.control_appl;
DEU|02030211 | 12| E| READ @applname, @startmodule;
DEU|02030211 | 14| E| INITTIME;
DEU|02030211 | 15| E| SWITCHCALL :@applname CALL PROC :@startmodule;
DEU|02030211 | 16|SE| GETTIME;
DEU|02030211 | 19| E| WRITE 'Ausfⁿhrung des Programms', :@applname, NL;
DEU|02030211 | 20| E| WRITE $SEC, $MICRO, PAUSE;
DEU|02030211 | 21| |
DEU|02030211 | 23|RI| ##0203040313->^Syntax
DEU|02030212 | 1| | Zum Aufruf von Betriebssystemkommandos aus einem SQL-PL Programm heraus
DEU|02030212 | 2| | dient das EXEC-Kommando.
DEU|02030212 | 4| | Normalerweise werden die Betriebssystemkommandos synchron aufgerufen.
DEU|02030212 | 5| | Einige Betriebssysteme erlauben zusΣtzlich einen asynchronen
DEU|02030212 | 6| | Kommandoaufruf.
DEU|02030212 | 8| | Beim synchronen Aufruf wird ein Programmergebnis in einer beliebigen
DEU|02030212 | 9| | SQL-PL Variablen zurⁿckgeliefert. Beim asynchronen Aufruf gibt es kein
DEU|02030212 | 10| | solches Ergebnis.
DEU|02030212 | 12| | Beispiele:
DEU|02030212 | 14| |
DEU|02030212 | 15| E| EXEC 'ls -l' RESULT resultvar; /* synchroner Aufruf
DEU|02030212 | 17|SE| EXEC ASYNC 'ls -l > list'; /* asynchroner Aufruf
DEU|02030212 | 19| |
DEU|02030212 | 21|RI| ##0203040257->^Syntax
DEU|020303 | 1| | Standardfunktionen
DEU|020303 | 2| | ------------------
DEU|020303 | 4| M| #01$-Funktionen
DEU|020303 | 5| M| #02Arithmetische^Funktionen
DEU|020303 | 6| M| #03Stringfunktionen
DEU|020303 | 7|RM| #04Datums-^und^Zeitfunktionen
DEU|02030301 | 1| | $-Funktionen
DEU|02030301 | 2| | ------------
DEU|02030301 | 4| M| #02$ACTION #05$MAXLINES #03$SEC
DEU|02030301 | 5| M| #02$CMD #05$MAXCOLS #03$SERVERDB
DEU|02030301 | 6| M| #09$COLNO ##02030211$MICRO #03$SQLCODE
DEU|02030301 | 7| M| #04$COUNT #07$MSGLINES #03$SQLERRMC
DEU|02030301 | 8| M| #02$CURSOR #08$OS #03$SQLERRPOS
DEU|02030301 | 9| M| #02$EDITLINES #08$PROCESSID #06$SQLWARN
DEU|02030301 | 10| M| #02$FUNCTION #03$RC #10$SYSRC
DEU|02030301 | 11| M| #01$GROUP #09$ROWNO #10$SYSRT
DEU|02030301 | 12| M| #10$ITEMS #03$RT #08$TERM
DEU|02030301 | 13| M| #07$KEY #05$SCREENCOLS #01$USER
DEU|02030301 | 14| M| #05$KEYLINES #05$SCREENLNS #01$USERMODE
DEU|02030301 | 16|RI| ##0203040153->^Syntax
DEU|0203030101 | 1| | $USER liefert den Namen des Benutzers, der die Routine aufgerufen hat.
DEU|0203030101 | 3| | $GROUP liefert den Namen der Benutzergruppe.
DEU|0203030101 | 5| | $SERVERDB liefert den Namen der Datenbank.
DEU|0203030101 | 7| | $USERMODE liefert den Benutzerstatus (STANDARD, RESOURCE, DBA)
DEU|0203030101 | 9|RI| ##0203040315->^Syntax
DEU|0203030102 | 1| | $KEY liefert die zuletzt benutzte Ausl÷setaste.
DEU|0203030102 | 2| | M÷glich sind : F1, ..., F9, ENTER, HELP
DEU|0203030102 | 4| | $CURSOR liefert die Nummer des Eingabefeldes, auf dem die
DEU|0203030102 | 5| | Schreibmarke beim letzten FORM-Aufruf plaziert war.
DEU|0203030102 | 7| | $CMD liefert den Inhalt der Kommandozeile des Editors, wenn
DEU|0203030102 | 8| | er aus einer SQL-PL Routine heraus aufgerufen wurde.
DEU|0203030102 | 10| | $EDITLINES liefert die Anzahl der Zeilen, die beim Editoraufruf
DEU|0203030102 | 11| | bearbeitet wurden.
DEU|0203030102 | 13| | $ACTION liefert das aktivierte Feld der Menⁿleiste.
DEU|0203030102 | 15| | $FUNCTION liefert das ausgewΣhlte Feld eines Pulldown-Menⁿs.
DEU|0203030102 | 17|RI| ##0203040316->^Syntax
DEU|0203030103 | 1| | $RC liefert den Returncode des letzten SQL-Kommandos.
DEU|0203030103 | 3| | Einige wichtige Returncodes :
DEU|0203030103 | 5| | 0 - alles OK
DEU|0203030103 | 6| | 100 - Zeile nicht gefunden
DEU|0203030103 | 7| | 200 - doppelter Zeilenschlⁿssel
DEU|0203030103 | 8| | 300 - Wertebereichsverletzung
DEU|0203030103 | 11| | $RT liefert den zu $RC passenden (Fehler-) Text.
DEU|0203030103 | 13| | Beispiel :
DEU|0203030103 | 15| | $RC = 100 --> $RT = '100 Zeile nicht gefunden'
DEU|0203030103 | 17|S | Synonym fⁿr $RC ist $SQLCODE; fⁿr $RT $SQLERRMC.
DEU|0203030103 | 19| | $SQLERRPOS liefert die Fehlerposition innerhalb des SQL-Kommandos,
DEU|0203030103 | 20| | falls die Analyse scheitert.
DEU|0203030103 | 22|RI| ##0203040316->^Syntax
DEU|0203030104 | 1| | $COUNT liefert die Anzahl der bei einem Massen-Select gefundenen Zeilen.
DEU|0203030104 | 3| | Nach dem SQL-Kommando
DEU|0203030104 | 5| | SQL ( SELECT * FROM kunde );
DEU|0203030104 | 7| | ist m÷glich
DEU|0203030104 | 9| | $COUNT = 0 keine Zeile wurde gefunden ( $RC = 100 )
DEU|0203030104 | 10| | $COUNT = n n Zeilen wurden gefunden
DEU|0203030104 | 11| | $COUNT IS NULL es wurden Zeilen gefunden, die Anzahl ist jedoch
DEU|0203030104 | 12| | noch nicht bekannt.
DEU|0203030104 | 14| | Au▀erdem liefert $COUNT nach UPDATE-, INSERT-, DELETE- und SHOW-
DEU|0203030104 | 15| | Kommandos die Anzahl der betroffenen Zeilen.
DEU|0203030104 | 17|RI| ##0203040315->^Syntax
DEU|0203030105 | 1| | $SCREENLNS liefert die maximale Anzahl der m÷glichen Zeilen in
DEU|0203030105 | 2| | der zuletzt aufgerufenen Maske.
DEU|0203030105 | 4| | $SCREENCOLS liefert die maximal m÷gliche Anzahl von Zeichen pro
DEU|0203030105 | 5| | Zeile in der zuletzt aufgerufenen Maske.
DEU|0203030105 | 7| | $MAXLINES liefert die maximale Anzahl der m÷glichen Zeilen pro
DEU|0203030105 | 8| | Bildschirm.
DEU|0203030105 | 10| | $MAXCOLS liefert die maximal m÷gliche Anzahl von Zeichen pro
DEU|0203030105 | 11| | Bildschirmzeile.
DEU|0203030105 | 13|RI| ##0203040314->^Syntax
DEU|0203030106 | 1| | $SQLWARN
DEU|0203030106 | 3| | Mit dieser Funktion k÷nnen die vom Datenbanksystem gemeldeten Warnungen
DEU|0203030106 | 4| | abgefragt werden. Die Funktion mu▀ in logischen Ausdrⁿcken (z. B. IF)
DEU|0203030106 | 5| | verwendet werden. $SQLWARN ist wahr, wenn weitere Warnungen gemeldet
DEU|0203030106 | 6| | wurden; diese k÷nnen dann mit $SQLWARN(1) .. $SQLWARN(15) abgefragt
DEU|0203030106 | 7| | werden.
DEU|0203030106 | 9| | Beispiel :
DEU|0203030106 | 11| |
DEU|0203030106 | 12| E| IF $SQLWARN /* any warning ?
DEU|0203030106 | 13| E| THEN FOR i := 1 TO 15 DO
DEU|0203030106 | 14| E| IF $SQLWARN (i)
DEU|0203030106 | 15| E| THEN WRITE NL,'Warning ',i,' ist gesetzt';
DEU|0203030106 | 16|S |
DEU|0203030106 | 19|RI| ##0203040316->^Syntax
DEU|0203030107 | 1| | $KEYLINES liefert 1, wenn der Bildschirm ⁿber eine Softkeyzeilentaste
DEU|0203030107 | 2| | verfⁿgt, sonst 0.
DEU|0203030107 | 4| | $MSGLINES liefert 1, wenn der Bildschirm ⁿber eine zusΣtzliche
DEU|0203030107 | 5| | Systemzeile fⁿr die Message verfⁿgt, sonst 0.
DEU|0203030107 | 7|RI| ##0203040315->^Syntax
DEU|0203030108 | 1| | $OS liefert den Namen des aktuellen Betriebssystems
DEU|0203030108 | 3| | $TERM liefert den Wert der Environment-Variable TERM
DEU|0203030108 | 5| | $PROCESSID liefert einen numerischen Wert fⁿr den aktuellen
DEU|0203030108 | 6| | Betriebssystem-Proze▀
DEU|0203030108 | 8|RI| ##0203040315->^Syntax
DEU|0203030109 | 1| | $ROWNO, $COLNO liefern nach einem REPORT-Aufruf die Zeile
DEU|0203030109 | 2| | und Spalte der REPORT-Anzeige, in der der Cursor
DEU|0203030109 | 3| | zuletzt positioniert war.
DEU|0203030109 | 4| | War der Cursor au▀erhalb der REPORT-Anzeige
DEU|0203030109 | 5| | positioniert, so sind $ROWNO und $COLNO 0.
DEU|0203030109 | 7|RI| ##0203040314->^Syntax
DEU|0203030110 | 1| | $SYSRC liefert die Fehlernummer des letzten Datei- oder EXEC-Kommandos
DEU|0203030110 | 3| | $SYSRT liefert einen erlΣuternden Fehlertext
DEU|0203030110 | 5| | $ITEMS liefert die beim letzten TOKENIZE oder SEPARATE erkannten
DEU|0203030110 | 6| | Felder bzw. die Anzahl der beim letzten CHANGE durchgefⁿhrten
DEU|0203030110 | 7| | Ersetzungen
DEU|0203030110 | 9|RI| ##0203040315->^Syntax
DEU|02030302 | 1| | Arithmetische Funktionen
DEU|02030302 | 2| | ------------------------
DEU|02030302 | 4| M| #07ABS #01MIN
DEU|02030302 | 5| M| #03ARCTAN #05PI
DEU|02030302 | 6| M| #01AVG #02ROUND
DEU|02030302 | 7| M| #03COS #08SIGN
DEU|02030302 | 8| M| #04EXP #03SIN
DEU|02030302 | 9| M| #04LN #06SQR
DEU|02030302 | 10| M| #01MAX #06SQRT
DEU|02030302 | 11| M| #05MDS #02TRUNC
DEU|02030302 | 12|RI| ##0203040259->^Syntax
DEU|0203030201 | 1| | MIN liefert den kleinsten Wert der angegebenen Menge.
DEU|0203030201 | 3| | MAX liefert den gr÷▀ten Wert der angegebenen Menge.
DEU|0203030201 | 5| | AVG liefert den Durchschnittswert der angegebenen Menge.
DEU|0203030201 | 7| | Beispiele :
DEU|0203030201 | 9| |
DEU|0203030201 | 10| E| MIN (1,2,3) --> 1
DEU|0203030201 | 11| E| MAX (1,1/0,3) --> 3 ( 1/0 -> NULL ! )
DEU|0203030201 | 12| E| AVG (1,10/0,3) --> NULL
DEU|0203030201 | 13| |
DEU|0203030201 | 15|RI| ##0203040302->^Syntax
DEU|0203030202 | 1| | ROUND rundet die Zahl auf die angegebene Anzahl von Nachkommastellen.
DEU|0203030202 | 3| | TRUNC verkⁿrzt die Zahl auf die angegebene Anzahl von Nachkommastellen.
DEU|0203030202 | 5| | Beispiele :
DEU|0203030202 | 7| |
DEU|0203030202 | 8| E| ROUND (1234.567 , 2) --> 1234.57
DEU|0203030202 | 9| E| TRUNC (1234.567 , 2) --> 1234.56
DEU|0203030202 | 10| E| TRUNC (1/0,3) --> NULL ( 1/0 -> NULL ! )
DEU|0203030202 | 11| |
DEU|0203030202 | 13|RI| ##0203040259->^Syntax
DEU|0203030203 | 1| | SIN COS ARCTAN
DEU|0203030203 | 3| | Die bekannten trigonometrischen Funktionen.
DEU|0203030203 | 4| | Als Argument wird der Radiant erwartet.
DEU|0203030203 | 6| | Beispiele :
DEU|0203030203 | 8| |
DEU|0203030203 | 9| E| SIN (0) --> 0
DEU|0203030203 | 10| E| COS (0) --> 1
DEU|0203030203 | 11| E| ARCTAN (0) --> 0
DEU|0203030203 | 12| |
DEU|0203030203 | 14|RI| ##0203040259->^Syntax
DEU|0203030204 | 1| | EXP LN
DEU|0203030204 | 3| | Die bekannten mathematischen Funktionen
DEU|0203030204 | 5| | Beispiel :
DEU|0203030204 | 7| |
DEU|0203030204 | 8| E| LN (EXP(5)) --> 5 (ungefΣhr)
DEU|0203030204 | 9| |
DEU|0203030204 | 11|RI| ##0203040259->^Syntax
DEU|0203030205 | 1| | PI liefert den Wert von Pi auf 18 Stellen genau.
DEU|0203030205 | 3| | MDS liefert die Maximalgr÷▀e eines Variablenwertes.
DEU|0203030205 | 5|RI| ##0203040259->^Syntax
DEU|0203030206 | 1| | SQR liefert das Quadrat eines Ausdrucks.
DEU|0203030206 | 3| | SQRT liefert die Quadratwurzel.
DEU|0203030206 | 5| | Beispiele :
DEU|0203030206 | 7| |
DEU|0203030206 | 8| E| SQR (2) --> 4
DEU|0203030206 | 9| E| SQRT (4) --> 2
DEU|0203030206 | 10| |
DEU|0203030206 | 12|RI| ##0203040259->^Syntax
DEU|0203030207 | 1| | ABS liefert den Absolutbetrag eines numerischen Ausdrucks.
DEU|0203030207 | 3| | Beispiele :
DEU|0203030207 | 5| |
DEU|0203030207 | 6| E| ABS (-1) --> 1
DEU|0203030207 | 7| E| ABS (1) --> 1
DEU|0203030207 | 8| |
DEU|0203030207 | 10|RI| ##0203040259->^Syntax
DEU|0203030208 | 1| | SIGN liefert das Vorzeichen eines numerischen Ausdrucks.
DEU|0203030208 | 3| | Beispiele :
DEU|0203030208 | 5| |
DEU|0203030208 | 6| E| SIGN(100) -> 1
DEU|0203030208 | 7| E| SIGN(-PI) -> -1
DEU|0203030208 | 8| E| SIGN(0) -> 0
DEU|0203030208 | 9| |
DEU|0203030208 | 11|RI| ##0203040259->^Syntax
DEU|02030303 | 1| | Stringfunktionen
DEU|02030303 | 2| | ----------------
DEU|02030303 | 4| M| #12BREAK #15SEPARATE
DEU|02030303 | 5| M| #07CHANGE #11SET
DEU|02030303 | 6| M| #08CHR #13SPAN
DEU|02030303 | 7| M| #04FORMAT #06STRPOS
DEU|02030303 | 8| M| #05INDEX #02SUBSTR
DEU|02030303 | 9| M| #09HEX #03TRIM
DEU|02030303 | 10| M| #03LENGTH #15TOKENIZE
DEU|02030303 | 11| M| #10LOWER #10UPPER
DEU|02030303 | 12| M| #08ORD #02Konkatenation (&)
DEU|02030303 | 13| M| #14PAD #01Zeichen-Wiederholung
DEU|02030303 | 14|RI| ##0203040305->^Syntax
DEU|0203030301 | 1| | Das angegebene Zeichen wird entsprechend der durch den numerischen
DEU|0203030301 | 2| | Ausdruck definierten Anzahl wiederholt.
DEU|0203030301 | 4| | Beispiele :
DEU|0203030301 | 6| |
DEU|0203030301 | 7| E| '.'(5) --> '.....';
DEU|0203030301 | 8| E| a := 5;
DEU|0203030301 | 9| E| BLANK(a) --> ' '
DEU|0203030301 | 10|R |
DEU|0203030302 | 1| | Konkatenation (&) verbindet Strings.
DEU|0203030302 | 3| | SUBSTR ermittelt den Teilstring ab der angegebenen Position in der
DEU|0203030302 | 4| | angegebenen LΣnge bzw. bis zum Ende des Strings, wenn keine
DEU|0203030302 | 5| | LΣnge angegeben wird.
DEU|0203030302 | 7| | Beispiele :
DEU|0203030302 | 9| |
DEU|0203030302 | 10| E| name := vorname & nachname;
DEU|0203030302 | 11| E| name := 'Nachname : ' & nachname & ' Vorname : ' & vorname;
DEU|0203030302 | 12| E| string := SUBSTR ('abcdefg',3,2) --> 'cd'
DEU|0203030302 | 13| E| string := SUBSTR ('abcdefg',3) --> 'cdefg'
DEU|0203030302 | 14| E| string := SUBSTR ('abcdefg',8) --> NULL
DEU|0203030302 | 15| E| string := SUBSTR ('abcdefg',4,10) --> 'defg'
DEU|0203030302 | 16|S |
DEU|0203030302 | 19|RI| ##0203040305->^Syntax
DEU|0203030303 | 1| | LENGTH ermittelt die LΣnge des angegebenen Ausdrucks.
DEU|0203030303 | 3| | TRIM entfernt das angegebene Zeichen (Leerzeichen, wenn nicht anders
DEU|0203030303 | 4| | angegeben) am Anfang und Ende des Stringausdrucks. Durch ein
DEU|0203030303 | 5| | zusΣtzliches Argument kann dies auf eine der beiden Seiten
DEU|0203030303 | 6| | eingeschrΣnkt werden.
DEU|0203030303 | 8| | Beispiele :
DEU|0203030303 | 10| |
DEU|0203030303 | 11| E| LENGTH ('drei') --> 4
DEU|0203030303 | 12| E| LENGTH ('drei' & 'unddrei▀ig') --> 15
DEU|0203030303 | 13| E| TRIM (' A '); --> 'A'
DEU|0203030303 | 14| E| TRIM (' A ','.'); --> ' A '
DEU|0203030303 | 15| E| TRIM ('...A ','.'); --> 'A '
DEU|0203030303 | 16| E| TRIM (' A ', ' ', RIGHT ) --> ' A'
DEU|0203030303 | 17|SE| TRIM (' A ', ' ', LEFT ) --> 'A '
DEU|0203030303 | 19| E| TRIM (' A ', ' ', BOTH ) --> 'A'
DEU|0203030303 | 20| |
DEU|0203030303 | 22|RI| ##0203040305->^Syntax
DEU|0203030304 | 1| | FORMAT dient zur Aufbereitung von Zahlen fⁿr die Ausgabe.
DEU|0203030304 | 3| | Beispiele :
DEU|0203030304 | 5| |
DEU|0203030304 | 6| E| FORMAT ( 1234, '9 999' ) --> '1 234'
DEU|0203030304 | 7| E| FORMAT ( 1234, '9,999.99 Kg' ) --> '1,234.00 Kg'
DEU|0203030304 | 8| E| FORMAT ( 12.3, 'DM 999,99' ) --> 'DM 12,30'
DEU|0203030304 | 9| E| FORMAT ( 1.234, '9 Kg 555 g' ) --> '1 Kg 234 g'
DEU|0203030304 | 10| E| FORMAT ( 12.34, '.9999e-99' ) --> '.1234e+02'
DEU|0203030304 | 11| E| FORMAT ( -123, '99 999' ) --> ' -123'
DEU|0203030304 | 12| E| FORMAT ( 123, '+9 999' ) --> '+ 123'
DEU|0203030304 | 13| E| FORMAT (-1234, '99 999-' ) --> ' 1 234-'
DEU|0203030304 | 14| E| FORMAT ( 123, '099 999' ) --> '000 123'
DEU|0203030304 | 15| E| FORMAT ( 123, '*99 999' ) --> '****123'
DEU|0203030304 | 16| E| FORMAT ( 123, '$>99 999' ) --> ' $123'
DEU|0203030304 | 17|S |
DEU|0203030304 | 19|RI| ##0203040305->^Syntax
DEU|0203030305 | 1| | INDEX durchsucht einen Vektor nach einem bestimmten Wert.
DEU|0203030305 | 2| | Wird dieser Wert gefunden, liefert die Funktion den Index der
DEU|0203030305 | 3| | Vektorkomponente.
DEU|0203030305 | 5| | Beispiel :
DEU|0203030305 | 7| |
DEU|0203030305 | 8| E| a (5..7) := 'x';
DEU|0203030305 | 9| E| INDEX (a(1..10),'x') --> 5
DEU|0203030305 | 10| E| INDEX (a(10..1),'x') --> 7
DEU|0203030305 | 11| E| INDEX (a(1..3),'x') --> NULL
DEU|0203030305 | 12| E| INDEX (a(1..10), NOT NULL ) --> 5
DEU|0203030305 | 13| |
DEU|0203030305 | 15|RI| ##0203040301->^Syntax
DEU|0203030306 | 1| | STRPOS durchsucht einen Variablenwert nach der angegebenen Zeichen-
DEU|0203030306 | 2| | kette. Wird diese gefunden, gibt STRPOS die Anfangsposition
DEU|0203030306 | 3| | als Ergebnis zurⁿck; anderenfalls liefert STRPOS NULL.
DEU|0203030306 | 4| | Es ist m÷glich, die Startposition der Suche anzugeben.
DEU|0203030306 | 6| | Beispiele :
DEU|0203030306 | 8| |
DEU|0203030306 | 9| E| STRPOS ('aabbccbbee','bb') --> 3;
DEU|0203030306 | 10| E| STRPOS ('aabbccbbee','bb',4) --> 7;
DEU|0203030306 | 11| E| STRPOS ('aabbccbbee','xx',4) --> NULL;
DEU|0203030306 | 12| |
DEU|0203030306 | 14|RI| ##0203040301->^Syntax
DEU|0203030307 | 1| | CHANGE ersetzt eine Zeichenkette in einem Variablenwert durch eine
DEU|0203030307 | 2| | andere Zeichenkette. Die Anzahl der Ersetzungen kann mittels
DEU|0203030307 | 3| | $ITEMS abgefragt werden.
DEU|0203030307 | 5| | Beispiel :
DEU|0203030307 | 7| |
DEU|0203030307 | 8| E| string := CHANGE (string,' ','_'); /* ersetzt Leerzeichen
DEU|0203030307 | 9| E| /* durch Unterstrich
DEU|0203030307 | 10| E| string := CHANGE (string,' '); /* eliminiert Leerzeichen
DEU|0203030307 | 11| |
DEU|0203030307 | 13|RI| ##0203040305->^Syntax
DEU|0203030308 | 1| | CHR liefert fⁿr den gegebenen numerischen Wert das Zeichen, das der
DEU|0203030308 | 2| | CHAR-Darstellung dieses Wertes entspricht. Wird etwas anderes
DEU|0203030308 | 3| | als ein numerischer Wert angegeben oder gibt es keine
DEU|0203030308 | 4| | CHAR-Darstellung fⁿr den numerischen Wert, liefert CHR als
DEU|0203030308 | 5| | Ergebnis den NULL-Wert.
DEU|0203030308 | 7| | ORD ist die Umkehrfunktion zu CHR. Sie liefert fⁿr ein
DEU|0203030308 | 8| | Zeichen den entsprechenden numerischen Wert.
DEU|0203030308 | 10| | Beispiele :
DEU|0203030308 | 12| |
DEU|0203030308 | 13| E| b := ORD ('a');
DEU|0203030308 | 14| E| a := CHR (b); --> a = 'a';
DEU|0203030308 | 15| |
DEU|0203030308 | 17|RI| ##0203040305->^Syntax
DEU|0203030309 | 1| | HEX kann auf einen beliebigen String-Ausdruck angewendet werden.
DEU|0203030309 | 2| | Sie liefert einen doppeltlangen String in hexadezimaler Darstellung.
DEU|0203030309 | 4| | Beispiele :
DEU|0203030309 | 6| |
DEU|0203030309 | 7| E| hxstr := HEX ('Hallo');
DEU|0203030309 | 8| |
DEU|0203030309 | 10|RI| ##0203040305->^Syntax
DEU|0203030310 | 1| | LOWER wandelt die angegebene Zeichenkette in Kleinbuchstaben um.
DEU|0203030310 | 3| | UPPER wandelt die angegebene Zeichenkette in Gro▀buchstaben um.
DEU|0203030310 | 5| | Beispiele:
DEU|0203030310 | 7| |
DEU|0203030310 | 8| E| LOWER ('Guten TAG !') --> 'guten tag !'
DEU|0203030310 | 9| E| UPPER ('Guten TAG !') --> 'GUTEN TAG !'
DEU|0203030310 | 10| |
DEU|0203030310 | 12|RI| ##0203040305->^Syntax
DEU|0203030311 | 1| | Die Einstellung der benutzerspezifischen SET-Parameter kann mit der
DEU|0203030311 | 2| | SET-Funktion ermittelt werden.
DEU|0203030311 | 4| | Beispiele :
DEU|0203030311 | 6| |
DEU|0203030311 | 7| E| @lang := SET ( LANGUAGE );
DEU|0203030311 | 8| |
DEU|0203030311 | 10| | Nur die zur Laufzeit relevanten Set-Parameter lassen sich durch
DEU|0203030311 | 11| I| ##0203021001Schlⁿsselw÷rter abfragen.
DEU|0203030311 | 13| I| Die ─nderung der SET-Parameter erfolgt mit der ##02030210SET-Anweisung.
DEU|0203030311 | 15|RI| ##0203040310->^Syntax
DEU|0203030312 | 1| | BREAK durchsucht einen Variablenwert nach dem ersten Vorkommen eines
DEU|0203030312 | 2| | Zeichens der angegebenen Zeichenkette. BREAK gibt die
DEU|0203030312 | 3| | Anfangsposition als Ergebnis zurⁿck. Es ist m÷glich, die
DEU|0203030312 | 4| | Startposition der Suche anzugeben.
DEU|0203030312 | 6| | Beispiele :
DEU|0203030312 | 8| |
DEU|0203030312 | 9| E| BREAK ( '999.999,99', '.,' ) --> 4
DEU|0203030312 | 10| E| BREAK ( '999.999,99', '.,', 5 ) --> 8
DEU|0203030312 | 11| E| BREAK ( '999.999,99', 'abc', 5 ) --> 11
DEU|0203030312 | 12| |
DEU|0203030312 | 14|RI| ##0203040301->^Syntax
DEU|0203030313 | 1| | SPAN durchsucht einen Variablenwert nach dem ersten Vorkommen eines
DEU|0203030313 | 2| | Zeichens, welches nicht in der angegebenen Zeichenkette vorkommt.
DEU|0203030313 | 3| | STRPOS gibt die Anfangsposition als Ergebnis zurⁿck. Es ist
DEU|0203030313 | 4| | m÷glich, die Startposition der Suche anzugeben.
DEU|0203030313 | 6| | Beispiele :
DEU|0203030313 | 8| |
DEU|0203030313 | 9| E| SPAN ( 'aabbccdd', 'ab' ) --> 5
DEU|0203030313 | 10| E| SPAN ( '999.999,99', '0123456789' ) --> 4
DEU|0203030313 | 11| E| SPAN ( 'aabbccdd', 'abcd' ) --> 9
DEU|0203030313 | 12| |
DEU|0203030313 | 14|RI| ##0203040301->^Syntax
DEU|0203030314 | 1| | PAD fⁿllt eine Zeichenkette auf die angegebene LΣnge auf. Durch
DEU|0203030314 | 2| | ein zusΣtzliches Argument kann angegeben werden, ob links,
DEU|0203030314 | 3| | rechts oder auf beiden Seiten Leerzeichen hinzu gefⁿgt werden.
DEU|0203030314 | 5| | Beispiele :
DEU|0203030314 | 7| |
DEU|0203030314 | 8| E| PAD ( 'abc', 7 ) --> 'abc '
DEU|0203030314 | 9| E| PAD ( 'abc', 7, RIGHT ) --> 'abc '
DEU|0203030314 | 10| E| PAD ( 'abc', 7, LEFT ) --> ' abc'
DEU|0203030314 | 11| E| PAD ( 'abc', 7, BOTH ) --> ' abc '
DEU|0203030314 | 12| |
DEU|0203030314 | 14|RI| ##0203040305->^Syntax
DEU|0203030315 | 1| | TOKENIZE und SEPARATE fⁿllen einen Vektor mit den Feldern einer
DEU|0203030315 | 2| | Zeichenkette. Die Felder werden durch die im zweiten Argument
DEU|0203030315 | 3| | enthaltenen Zeichen getrennt. TOKENIZE fa▀t mehrere aufeinanderfolgende
DEU|0203030315 | 4| | Trennzeichen zu einem einzigen zusammen, SEPARATE erkennt zwischen zwei
DEU|0203030315 | 5| | Trennzeichen immer ein weiteres Feld mit dem Wert NULL. Nach dem Aufruf
DEU|0203030315 | 6| | enthΣlt die Systemvariable $ITEMS die Anzahl der erkannten Felder.
DEU|0203030315 | 8| | Beispiele :
DEU|0203030315 | 10| |
DEU|0203030315 | 11| E| @t(1..20) := TOKENIZE ( '1,2,,3', ',' );
DEU|0203030315 | 12| |
DEU|0203030315 | 13| | @t(1) -> '1';
DEU|0203030315 | 14| | @t(2) -> '2';
DEU|0203030315 | 15| | @t(3) -> '3';
DEU|0203030315 | 17|S |
DEU|0203030315 | 19| E| @t(1..20) := SEPARATE ( '1,2,,3', ',' );
DEU|0203030315 | 20| |
DEU|0203030315 | 21| | @t(1) -> '1';
DEU|0203030315 | 22| | @t(2) -> '2';
DEU|0203030315 | 23| | @t(3) -> NULL;
DEU|0203030315 | 24| | @t(4) -> '3';
DEU|0203030315 | 26|RI| ##0203040305->^Syntax
DEU|02030304 | 1| | Datums- und Zeitfunktionen
DEU|02030304 | 2| | --------------------------
DEU|02030304 | 4| M| #02ADDDATE
DEU|02030304 | 5| M| #04ADDTIME
DEU|02030304 | 6| M| #01DATE
DEU|02030304 | 7| M| #02DATEDIFF
DEU|02030304 | 8| M| #03DAYOFWEEK
DEU|02030304 | 9| M| #03DAYOFYEAR
DEU|02030304 | 10| M| #05MAKETIME
DEU|02030304 | 11| M| #02SUBDATE
DEU|02030304 | 12| M| #04SUBTIME
DEU|02030304 | 13| M| #01TIME
DEU|02030304 | 14| M| #04TIMEDIFF
DEU|02030304 | 15| M| #03WEEKOFYEAR
DEU|02030304 | 16|RI| ##0203040307->^Syntax
DEU|0203030401 | 1| | Mit DATE und TIME k÷nnen Datums- und Zeitangaben erzeugt und umgeformt
DEU|0203030401 | 2| | werden.
DEU|0203030401 | 4| | Beispiele Tagesdatum und aktuelle Uhrzeit :
DEU|0203030401 | 6| | Am 21.1.89 liefert
DEU|0203030401 | 7| | DATE (mm/dd/yy) --> '01/21/89'
DEU|0203030401 | 8| | DATE (yyyy mm.dd) --> '1989 01.21'
DEU|0203030401 | 9| | DATE (dd mmm yyyy) --> '21 Jan 1989'
DEU|0203030401 | 10| | DATE (yyyy) --> '1989'
DEU|0203030401 | 12| | Um 17 Uhr 23 und 11 Sekunden liefert
DEU|0203030401 | 14| | TIME (hh:mm-ss) --> '17:23-11'
DEU|0203030401 | 15|S | TIME (hhmm) --> '1723'
DEU|0203030401 | 19| | Beispiele fⁿr vorgegebene Daten :
DEU|0203030401 | 20| |
DEU|0203030401 | 21| E| datum := '01.01.88';
DEU|0203030401 | 22| E| datum := DATE ( YYYY/MM/DD, datum, dd.mm.yy );
DEU|0203030401 | 24| E| datum := '09.03.94';
DEU|0203030401 | 25| E| datum := DATE ( , datum, dd.mm.yy );
DEU|0203030401 | 27| E| uhrzeit := '12:00:05';
DEU|0203030401 | 28| E| uhrzeit := TIME ( hhmmss, uhrzeit, hh:mm:ss);
DEU|0203030401 | 29| |
DEU|0203030401 | 30| | Die zweite Maske beschreibt das Format des Eingabewertes. Fehlt eine
DEU|0203030401 | 31| | der Beschreibungen, wird das in den SET-Parametern eingestellte Format
DEU|0203030401 | 32| | verwendet.
DEU|0203030401 | 34|RI| ##0203040307->^Syntax
DEU|0203030402 | 1| | ADDDATE zΣhlt auf ein vorgegebenes Datum n Tage dazu.
DEU|0203030402 | 3| | SUBDATE zieht von einem vorgegebenen Datum n Tage ab.
DEU|0203030402 | 5| | DATEDIFF gibt die Differenz zwischen zwei Datumsangaben in Tagen an.
DEU|0203030402 | 7| | Beispiele :
DEU|0203030402 | 9| |
DEU|0203030402 | 10| E| ADDDATE ('19871231',1) --> '19880101'
DEU|0203030402 | 11| E| SUBDATE ('19871231',31) --> '19871130'
DEU|0203030402 | 12| E| DATEDIFF ('19880101','19870101') --> 365
DEU|0203030402 | 13| |
DEU|0203030402 | 15| | Datumsangaben mⁿssen hierbei im Format 'YYYYMMDD' erfolgen.
DEU|0203030402 | 17|RI| ##0203040307->^Syntax
DEU|0203030403 | 1| | DAYOFWEEK liefert einen numerischen Wert zwischen 1 und 7, der den
DEU|0203030403 | 2| | Wochentag identifiziert, wobei die 1 fⁿr Montag steht.
DEU|0203030403 | 4| | DAYOFYEAR liefert einen numerischen Wert zwischen 1 und 366.
DEU|0203030403 | 6| | WEEKOFYEAR liefert einen Wert zwischen 1 und 53.
DEU|0203030403 | 8| | Beispiele :
DEU|0203030403 | 10| |
DEU|0203030403 | 11| E| DAYOFWEEK ('19880105') --> 2
DEU|0203030403 | 12| E| DAYOFYEAR ('19870101') --> 1
DEU|0203030403 | 13| E| WEEKOFYEAR ('19880101') --> 53
DEU|0203030403 | 14| |
DEU|0203030403 | 16|S | Datumsangaben mⁿssen hierbei im Format 'YYYYMMDD' erfolgen.
DEU|0203030403 | 19|RI| ##0203040309->^Syntax
DEU|0203030404 | 1| | SUBTIME liefert eine Uhrzeit, die sich aus der Differenz der beiden
DEU|0203030404 | 2| | angegebenen Werte ergibt.
DEU|0203030404 | 4| | ADDTIME liefert eine Uhrzeit, die sich aus der Summe der beiden
DEU|0203030404 | 5| | angegebenen Werte ergibt.
DEU|0203030404 | 7| | TIMEDIFF liefert die positive Differenz der angegebenen Zeiten
DEU|0203030404 | 8| | in Sekunden.
DEU|0203030404 | 9| | Beispiele :
DEU|0203030404 | 11| |
DEU|0203030404 | 12| E| SUBTIME ('00105523','00000023') --> '00105500'
DEU|0203030404 | 13| E| ADDTIME ('00105523','00000037') --> '00105600'
DEU|0203030404 | 14| E| TIMEDIFF ('00000005','00000000') --> 5
DEU|0203030404 | 15| |
DEU|0203030404 | 17|S | Zeitangaben mⁿssen hierbei im Format 'HHHHMMSS' erfolgen.
DEU|0203030404 | 19|RI| ##0203040308->^Syntax
DEU|0203030405 | 1| | MAKETIME liefert eine Zeit, die sich aus der Summe der drei
DEU|0203030405 | 2| | Argumente ergibt
DEU|0203030405 | 3| | ( MAKETIME (<stunden>,<minuten>,<sekunden>) ).
DEU|0203030405 | 5| | Beispiele :
DEU|0203030405 | 7| |
DEU|0203030405 | 8| E| MAKETIME (10,59,33) --> '00105933'
DEU|0203030405 | 9| E| MAKETIME (10,59,63) --> '00110003'
DEU|0203030405 | 10| |
DEU|0203030405 | 12|RI| ##0203040308->^Syntax
DEU|020304 | 1| | Syntaxbeschreibung
DEU|020304 | 2| | ------------------
DEU|020304 | 4| M| #01Syntaxelemente
DEU|020304 | 5|RM| #05Schlⁿsselworte
DEU|02030401 | 1| I| ##0203040101<prog^name>
DEU|02030401 | 2| I| ##0203040102<mod^name>
DEU|02030401 | 3| I| ##0203040103<routine>
DEU|02030401 | 4| I| ##0203040104<parm^decl>
DEU|02030401 | 5| I| ##0203040107<function>
DEU|02030401 | 6| I| ##0203040108<db^procedure>
DEU|02030401 | 7| I| ##0203040109<dbproc^parm^decl^list>
DEU|02030401 | 8| I| ##0203040110<dbproc^parm^decl>
DEU|02030401 | 9| I| ##0203040111<dir>
DEU|02030401 | 10| I| ##0203040112<data^type>
DEU|02030401 | 11| I| ##0203040113<trigger>
DEU|02030401 | 12| I| ##0203040114<trigger^parm^decl>
DEU|02030401 | 13| I| ##0203040115<trigger^column^spec>
DEU|02030401 | 14| I| ##0203040116<trigger^predicat>
DEU|02030401 | 15| I| ##0203040117<help^form>
DEU|02030401 | 16| I| ##0203040118<name>
DEU|02030401 | 17|SI| ##0203040119<literal>
DEU|02030401 | 19| I| ##0203040120<numeric>
DEU|02030401 | 20| I| ##0203040121<unsigned^integer>
DEU|02030401 | 21| I| ##0203040122<digit>
DEU|02030401 | 22| I| ##0203040123<fixed^point>
DEU|02030401 | 23| I| ##0203040124<floating^point>
DEU|02030401 | 24| I| ##0203040125<sign>
DEU|02030401 | 25| I| ##0203040126<string^literal>
DEU|02030401 | 26| I| ##0203040127<any^char>
DEU|02030401 | 27| I| ##0203040128<hexstring^literal>
DEU|02030401 | 28| I| ##0203040129<langdep^literal>
DEU|02030401 | 29| I| ##0203040133<variable>
DEU|02030401 | 30| I| ##0203040134<vector^slice>
DEU|02030401 | 31| I| ##0203040135<variable^name>
DEU|02030401 | 32| I| ##0203040136<expr>
DEU|02030401 | 33| I| ##0203040137<num^expr>
DEU|02030401 | 34| I| ##0203040138<term^list>
DEU|02030401 | 35|SI| ##0203040139<term>
DEU|02030401 | 37| I| ##0203040140<factor>
DEU|02030401 | 38| I| ##0203040141<function^call>
DEU|02030401 | 39| I| ##0203040142<str^expr>
DEU|02030401 | 40| I| ##0203040143<basic^str>
DEU|02030401 | 41| I| ##0203040144<repeat^string>
DEU|02030401 | 42| I| ##0203040145<boolean^term>
DEU|02030401 | 43| I| ##0203040146<boolean^expr>
DEU|02030401 | 44| I| ##0203040147<expr^comparison>
DEU|02030401 | 45| I| ##0203040148<check^cond>
DEU|02030401 | 46| I| ##0203040149<simple^cond>
DEU|02030401 | 47| I| ##0203040150<is^cond>
DEU|02030401 | 48| I| ##0203040151<in^cond>
DEU|02030401 | 49| I| ##0203040152<value^spec^list>
DEU|02030401 | 50| I| ##0203040153<value^spec>
DEU|02030401 | 51| I| ##0203040154<between^cond>
DEU|02030401 | 52| I| ##0203040155<like^cond>
DEU|02030401 | 53|SI| ##0203040156<var^section>
DEU|02030401 | 55| I| ##0203040157<var^decl>
DEU|02030401 | 56| I| ##0203040158<array^spec>
DEU|02030401 | 57| I| ##0203040159<lab^stmt^list>
DEU|02030401 | 58| I| ##0203040160<logic^op>
DEU|02030401 | 59| I| ##0203040161<comp^op>
DEU|02030401 | 60| I| ##0203040201<compound>
DEU|02030401 | 61| I| ##0203040202<stmt>
DEU|02030401 | 62| I| ##0203040203<assign^stmt>
DEU|02030401 | 63| I| ##0203040204<assign^expr>
DEU|02030401 | 64| I| ##0203040205<vector^assign^stmt>
DEU|02030401 | 65| I| ##0203040206<if^stmt>
DEU|02030401 | 66| I| ##0203040207<case^stmt>
DEU|02030401 | 67| I| ##0203040208<case^list>
DEU|02030401 | 68| I| ##0203040209<repeat^stmt>
DEU|02030401 | 69| I| ##0203040210<while^stmt>
DEU|02030401 | 70| I| ##0203040211<for^stmt>
DEU|02030401 | 71|SI| ##0203040212<skip^stmt>
DEU|02030401 | 73| I| ##0203040213<return^stmt>
DEU|02030401 | 74| I| ##0203040214<stop^stmt>
DEU|02030401 | 75| I| ##0203040215<vectsort^stmt>
DEU|02030401 | 76| I| ##0203040216<proc^call>
DEU|02030401 | 77| I| ##0203040216<form^call>
DEU|02030401 | 78| I| ##0203040218<switch^stmt>
DEU|02030401 | 79| I| ##0203040219<switchcall^stmt>
DEU|02030401 | 80| I| ##0203040220<name^expr>
DEU|02030401 | 81| I| ##0203040221<param>
DEU|02030401 | 82| I| ##0203040222<parm^spec^list>
DEU|02030401 | 83| I| ##0203040225<dbproc^call>
DEU|02030401 | 84| I| ##0203040227<sql^stmt>
DEU|02030401 | 85| I| ##0203040228<sql^cmd>
DEU|02030401 | 86| I| ##0203040229<dynamic^sql^stmt>
DEU|02030401 | 87| I| ##0203040230<dynamic^fetch^stmt>
DEU|02030401 | 88| I| ##0203040231<mass^fetch^stmt>
DEU|02030401 | 89|SI| ##0203040233<connect^stmt>
DEU|02030401 | 91| I| ##0203040234<release^stmt>
DEU|02030401 | 92| I| ##0203040235<sqlerror^routine>
DEU|02030401 | 93| I| ##0203040236<sqlexception^routine>
DEU|02030401 | 94| I| ##0203040237<sqlnotfound^routine>
DEU|02030401 | 95| I| ##0203040238<sqltimeout^routine>
DEU|02030401 | 96| I| ##0203040239<sqlwarning^routine>
DEU|02030401 | 97| I| ##0203040240<try^catch^stmt>
DEU|02030401 | 98| I| ##0203040241<query^stmt>
DEU|02030401 | 99| I| ##0203040242<querycmd^spec>
DEU|02030401 | 100| I| ##0203040243<report^stmt>
DEU|02030401 | 101| I| ##0203040244<further^facilities>
DEU|02030401 | 102| I| ##0203040245<query^option>
DEU|02030401 | 103| I| ##0203040246<result^spec>
DEU|02030401 | 104| I| ##0203040247<edit^call>
DEU|02030401 | 105| I| ##0203040248<write^stmt>
DEU|02030401 | 106| I| ##0203040249<read^stmt>
DEU|02030401 | 107|SI| ##0203040250<open^file^stmt>
DEU|02030401 | 109| I| ##0203040251<close^file^stmt>
DEU|02030401 | 110| I| ##0203040252<write^file^stmt>
DEU|02030401 | 111| I| ##0203040253<write^file^args>
DEU|02030401 | 112| I| ##0203040254<read^file^stmt>
DEU|02030401 | 113| I| ##0203040255<read^file^args>
DEU|02030401 | 114| I| ##0203040256<writetrace^stmt>
DEU|02030401 | 115| I| ##0203040257<exec^command>
DEU|02030401 | 116| I| ##0203040258<operating^system^command>
DEU|02030401 | 117| I| ##0203040259<arith^function>
DEU|02030401 | 118| I| ##0203040260<index^function>
DEU|02030401 | 119| I| ##0203040301<strpos^function>
DEU|02030401 | 120| I| ##0203040302<set^function>
DEU|02030401 | 121| I| ##0203040303<mixed^expr>
DEU|02030401 | 122| I| ##0203040304<sign^function>
DEU|02030401 | 123| I| ##0203040305<string^function>
DEU|02030401 | 124| I| ##0203040301<strpos^function>
DEU|02030401 | 125|SI| ##0203040307<date^function>
DEU|02030401 | 127| I| ##0203040308<date^str^function>
DEU|02030401 | 128| I| ##0203040309<date^arith^function>
DEU|02030401 | 129| I| ##0203040311<set^stmt>
DEU|02030401 | 130| I| ##0203040312<set^id>
DEU|02030401 | 131| I| ##0203040313<systime^func>
DEU|02030401 | 132| I| ##0203040314<dollar^numeric^variable>
DEU|02030401 | 133| I| ##0203040315<dollar^string^variable>
DEU|02030401 | 134| I| ##0203040316<dollar^boolean^variable>
DEU|02030401 | 135| I| ##0203040317<object^header>
DEU|02030401 | 136|RI| ##0203040318<module^option>
DEU|0203040101 | 1| | <prog name> ::=
DEU|0203040101 | 2|RI| ##0203040118<name>
DEU|0203040102 | 1| | <mod name> ::=
DEU|0203040102 | 2|RI| ##0203040118<name>
DEU|0203040103 | 1| | <routine> ::=
DEU|0203040103 | 2| I| PROC ##0203040101<prog^name> . ##0203040102<mod^name>
DEU|0203040103 | 3| I| [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|0203040103 | 4| I| [OPTIONS ( ##0203040318<module^option> ,...)]
DEU|0203040103 | 5| I| [ ##0203040156<var^section> ]
DEU|0203040103 | 6|RI| ##0203040159<lab^stmt^list>
DEU|0203040104 | 1| | <parm decl> ::=
DEU|0203040104 | 2|R | <varname> [()]
DEU|0203040107 | 1| | <function> ::=
DEU|0203040107 | 2| I| FUNCTION ##0203040101<prog^name> . ##0203040102<mod^name>
DEU|0203040107 | 3| I| [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|0203040107 | 4| I| [OPTIONS ( ##0203040318<module^option> ,...)]
DEU|0203040107 | 5| I| [ ##0203040156<var^section> ]
DEU|0203040107 | 6|RI| ##0203040159<lab^stmt^list>
DEU|0203040108 | 1| | <db procedure> ::=
DEU|0203040108 | 2| I| DBPROC ##0203040101<prog^name> . ##0203040102<mod^name>
DEU|0203040108 | 3| I| [PARMS ( ##0203040110<dbproc^parm^decl> ,...)]
DEU|0203040108 | 4| I| [OPTIONS ( ##0203040318<module^option> ,...)]
DEU|0203040108 | 5| I| [ ##0203040156<var^section> ]
DEU|0203040108 | 6|RI| ##0203040159<lab^stmt^list>
DEU|0203040109 | 1| | <dbproc parm decl list> ::=
DEU|0203040109 | 2| I| ##0203040104<parm^decl> ,...
DEU|0203040109 | 3|RI| | ##0203040110<dbproc^parm^decl> ,...
DEU|0203040110 | 1| | <dbproc parm decl> ::=
DEU|0203040110 | 2|RI| ##0203040111<dir> ##0203040118<name> ##0203040112<data^type>
DEU|0203040111 | 1|R | <dir> ::= IN | OUT | INOUT
DEU|0203040112 | 1| | <data type> ::=
DEU|0203040112 | 2| I| FIXED [ ( ##0203040121<unsigned^integer> [, <unsigned integer> ] ) ]
DEU|0203040112 | 3| | | FLOAT [ ( <unsigned integer> ) ]
DEU|0203040112 | 4| | | CHAR [ ( <unsigned integer> ) ] [ BYTE ]
DEU|0203040112 | 5| | | DBYTE [ ( <unsigned integer> ) ]
DEU|0203040112 | 6| | | DATE
DEU|0203040112 | 7|R | | TIME
DEU|0203040113 | 1| | <trigger> ::=
DEU|0203040113 | 2| | TRIGGER <libname>.<funcname>
DEU|0203040113 | 3| I| [PARMS ( ##0203040114<trigger^parm^decl> ,...)]
DEU|0203040113 | 4| I| [OPTIONS ( ##0203040318<module^option> ,...)]
DEU|0203040113 | 5| I| [ ##0203040156<var^section> ]
DEU|0203040113 | 6|RI| ##0203040159<lab^stmt^list>
DEU|0203040114 | 1| | <trigger parm decl> ::=
DEU|0203040114 | 2|RI| ##0203040111<dir> ##0203040115<trigger^column^spec> ##0203040112<data^type>
DEU|0203040115 | 1| | <trigger column spec> ::=
DEU|0203040115 | 2| | <column name>
DEU|0203040115 | 3| | | NEW.<column name>
DEU|0203040115 | 4|R | | OLD.<column name>
DEU|0203040116 | 1| | <trigger predicat> ::=
DEU|0203040116 | 2| | FIRSTCALL|LASTCALL|INSERTING
DEU|0203040116 | 3|R | | UPDATING|DELETING
DEU|0203040117 | 1| | <help form> ::=
DEU|0203040117 | 2| I| HELPFORM ##0203040101<prog^name> . ##0203040102<mod^name>
DEU|0203040117 | 3| | [OPTIONS (<form option>,...)]
DEU|0203040117 | 4| I| [PARMS ( ##0203040104<parm^decl> ,...)]
DEU|0203040117 | 5| I| [ ##0203040156<var^section> ]
DEU|0203040117 | 6| | <form layout>
DEU|0203040117 | 7|R | [ <processing spec>;... ]
DEU|0203040118 | 1| | <name> ::= <firstchar> [<name char> ... ]
DEU|0203040118 | 3| | <firstchar> ::= <letter> | # | @ | $
DEU|0203040118 | 5| I| <name char> ::= <letter> | ##0203040122<digit> | _ | # | @ | $
DEU|0203040118 | 7|R | <letter> ::= a | .. | z | A |..| Z
DEU|0203040119 | 1| | <literal> ::= <numeric literal>
DEU|0203040119 | 2| I| | ##0203040126<string^literal>
DEU|0203040119 | 3| I| | ##0203040128<hexstring^literal>
DEU|0203040119 | 4| I| | ##0203040129<langdep^literal>
DEU|0203040119 | 5| | | <key literal>
DEU|0203040119 | 7|RI| <numeric literal> ::= ##0203040120<numeric>
DEU|0203040120 | 1| I| <numeric> ::= ##0203040121<unsigned^integer>
DEU|0203040120 | 2| I| | ##0203040123<fixed^point>
DEU|0203040120 | 3|RI| | ##0203040124<floating^point>
DEU|0203040121 | 1| I| <unsigned integer> ::= ##0203040122<digit> [<unsigned integer>]
DEU|0203040121 | 2|R | maximal 18 Stellen
DEU|0203040122 | 1|R | <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
DEU|0203040123 | 1|RI| <fixed point> ::= ##0203040121<unsigned^integer> [.<unsigned integer>]
DEU|0203040124 | 1|RI| <floating point> ::= ##0203040123<fixed^point> E ##0203040125<sign> ##0203040122<digit> [<digit>]
DEU|0203040125 | 1|R | <sign> ::= + | -
DEU|0203040126 | 1|RI| <string literal> ::= ' ##0203040127<any^char> ...'
DEU|0203040127 | 1|R | <any char> ::= beliebiges Zeichen der Tastatur
DEU|0203040128 | 1| | <hexstring literal> ::=
DEU|0203040128 | 2| | X'<hex digit seq>' | x'<hex digit seq>'
DEU|0203040128 | 4| | <hex digit seq> ::=
DEU|0203040128 | 5| | <hex digit><hex digit>[<hex digit seq>]
DEU|0203040128 | 7| | <hex digit> ::=
DEU|0203040128 | 8| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
DEU|0203040128 | 9|R | | A | B | C | D | E | F | a | b | c | d | e | f
DEU|0203040129 | 1| I| <langdep literal> ::= ##0203040118!<name> [ (<literal size>) ]
DEU|0203040129 | 3|R | <literal size> ::= S | M | L | XL
DEU|0203040133 | 1| I| <variable> ::= ##0203040135<variable^name> [ (##0203040136<expr>) ]
DEU|0203040133 | 2| | | MESSAGE
DEU|0203040133 | 3|R | | ERROR
DEU|0203040134 | 1|RI| <vector slice> ::= ##0203040135<variable^name> ( ##0203040136<expr> .. <expr>)
DEU|0203040135 | 1|RI| <variable name> ::= ##0203040118<name>
DEU|0203040136 | 1|RI| <expr> ::= ##0203040137<num^expr> | ##0203040142<str^expr>
DEU|0203040137 | 1|RI| <num expr> ::= [ ##0203040125<sign> ] ##0203040139<term> [ ##0203040138<term^list> ]
DEU|0203040138 | 1|RI| <term list> ::= ##0203040125<sign> ##0203040139<term> [<term list>]
DEU|0203040139 | 1| I| <term> ::= ##0203040140<factor> [<mult op> <term>]
DEU|0203040139 | 3|R | <mult op> ::= * | / | MOD | DIV
DEU|0203040140 | 1| | <factor> ::=
DEU|0203040140 | 2| I| ##0203040120<numeric>
DEU|0203040140 | 3| I| | ##0203040133<variable>
DEU|0203040140 | 4| I| | ( ##0203040136<expr> )
DEU|0203040140 | 5| I| | ##0203040259<arith^function>
DEU|0203040140 | 6| I| | ##0203040141<function^call>
DEU|0203040140 | 7|RI| | ##0203040314<dollar^numeric^variable>
DEU|0203040141 | 1|R | <function call> ::= %<function name>
DEU|0203040142 | 1| | <str expr> ::=
DEU|0203040142 | 2|RI| ##0203040143<basic^str> [& ##0203040136<expr>]
DEU|0203040143 | 1| | <basic str> ::=
DEU|0203040143 | 2| I| ##0203040153<value^spec>
DEU|0203040143 | 3| I| | ##0203040140<factor>
DEU|0203040143 | 4| I| | ##0203040305<string^function>
DEU|0203040143 | 5| I| | ##0203040301<strpos^function>
DEU|0203040143 | 6| I| | ##0203040307<date^function>
DEU|0203040143 | 7|RI| | ##0203040302<set^function>
DEU|0203040144 | 1| | <repeat string> ::=
DEU|0203040144 | 2| I| <repeat char> ( ##0203040136<expr> )
DEU|0203040144 | 4| | <repeat char> ::=
DEU|0203040144 | 5|RI| '##0203040127<any^char>' | BLANK
DEU|0203040145 | 1| | <boolean term> ::=
DEU|0203040145 | 2| I| ( ##0203040146<boolean^expr> )
DEU|0203040145 | 3| I| | ##0203040147<expr^comparison>
DEU|0203040145 | 4| I| | ##0203040136<expr> ##0203040148<check^cond>
DEU|0203040145 | 5| I| | ALL ##0203040134<vector^slice> <check cond>
DEU|0203040145 | 6| | | EACH <vector slice> <check cond>
DEU|0203040145 | 7| | | ANY <vector slice> <check cond>
DEU|0203040145 | 8| | | SOME <vector slice> <check cond>
DEU|0203040145 | 9| | | ONE <vector slice> <check cond>
DEU|0203040145 | 10| | | EOF (<fileid>) siehe "Bearbeiten von Dateien"
DEU|0203040145 | 11| I| | $SQLWARN [( ##0203040136<expr> )] siehe "System- und $-Variablen
DEU|0203040145 | 12|R | | FORM IS MODIFIED
DEU|0203040146 | 1| | <boolean expr> ::=
DEU|0203040146 | 2|RI| [NOT] ##0203040145<boolean^term> [ ##0203040160<logic^op> <boolean expr>]
DEU|0203040147 | 1| | <expr comparison> ::=
DEU|0203040147 | 2|RI| ##0203040136<expr> ##0203040161<comp^op> <expr>
DEU|0203040148 | 1| | <check cond> ::=
DEU|0203040148 | 2|RI| ##0203040149<simple^cond> [ ##0203040160<logic^op> <check cond>]
DEU|0203040149 | 1| | <simple cond> ::=
DEU|0203040149 | 2| I| ##0203040150<is^cond>
DEU|0203040149 | 3| I| | [NOT] ##0203040151<in^cond>
DEU|0203040149 | 4| I| | [NOT] ##0203040154<between^cond>
DEU|0203040149 | 5|RI| | [NOT] ##0203040155<like^cond>
DEU|0203040150 | 1| | <is cond> ::=
DEU|0203040150 | 2| | IS [NOT] ALPHA
DEU|0203040150 | 3| | | IS [NOT] NUMERIC
DEU|0203040150 | 4| | | IS [NOT] BLANK
DEU|0203040150 | 5| | | IS [NOT] NULL
DEU|0203040150 | 6| | | IS [NOT] MODIFIED
DEU|0203040150 | 7| I| | IS [NOT] FIXED ( ##0203040136<expr> ,<expr>)
DEU|0203040150 | 8| | | IS [NOT] DATE [ (<date mask>) ]
DEU|0203040150 | 9|R | | IS [NOT] TIME [ (<time mask>) ]
DEU|0203040151 | 1| | <in cond> ::=
DEU|0203040151 | 2|RI| IN ( ##0203040152<value^spec^list> )
DEU|0203040152 | 1| | <value spec list> ::=
DEU|0203040152 | 2| I| ##0203040153<value^spec> [..<value spec>] [,<value spec list>]
DEU|0203040152 | 3|R | | NULL [,<value spec list> ]
DEU|0203040153 | 1| | <value spec> ::=
DEU|0203040153 | 2| I| ##0203040119<literal>
DEU|0203040153 | 3| I| | ##0203040144<repeat^string>
DEU|0203040153 | 4| | | BLANK
DEU|0203040153 | 5| I| | ##0203040314<dollar^numeric^variable>
DEU|0203040153 | 6|RI| | ##0203040315<dollar^string^variable>
DEU|0203040154 | 1| | <between cond> ::=
DEU|0203040154 | 2|RI| BETWEEN ##0203040136<expr> AND <expr>
DEU|0203040155 | 1| | <like cond> ::=
DEU|0203040155 | 2|RI| LIKE ##0203040136<expr> [ ESCAPE <expr> ]
DEU|0203040156 | 1| | <var section> ::=
DEU|0203040156 | 2| I| VAR ##0203040157<var^decl> ,...;
DEU|0203040156 | 3|R | [ VAR STATIC <var decl>,...; ]
DEU|0203040157 | 1| | <var decl> ::=
DEU|0203040157 | 2|RI| <varname> [ ##0203040158<array^spec> ]
DEU|0203040158 | 1| | <array spec> ::=
DEU|0203040158 | 2|R | ()
DEU|0203040159 | 1| | <lab stmt list> ::=
DEU|0203040159 | 2|RI| [<label>] ##0203040201<compound> [<lab stmt list>]
DEU|0203040160 | 1| | <logic op> ::=
DEU|0203040160 | 2|R | AND | OR
DEU|0203040161 | 1| | <comp op> ::=
DEU|0203040161 | 2|R | = | < | > | <> | <= | >=
DEU|0203040201 | 1| | <compound> ::=
DEU|0203040201 | 2|RI| BEGIN ##0203040202<stmt> ;... END | <stmt>
DEU|0203040202 | 1| | <stmt> ::=
DEU|0203040202 | 2| I| ##0203040203<assign^stmt> | ##0203040205<vector^assign^stmt>
DEU|0203040202 | 3| I| | ##0203040206<if^stmt> | ##0203040207<case^stmt>
DEU|0203040202 | 4| I| | ##0203040209<repeat^stmt> | ##0203040210<while^stmt>
DEU|0203040202 | 5| I| | ##0203040211<for^stmt> | ##0203040212<skip^stmt>
DEU|0203040202 | 6| I| | ##0203040213<return^stmt> | ##0203040214<stop^stmt>
DEU|0203040202 | 7| I| | ##0203040215<vectsort^stmt> | ##0203040219<switchcall^stmt>
DEU|0203040202 | 8| I| | ##0203040216<proc^call> | ##0203040216<form^call>
DEU|0203040202 | 9| I| | ##0203040218<switch^stmt> | ##0203040141<function^call>
DEU|0203040202 | 10| I| | ##0203040225<dbproc^call> | ##0203040227<sql^stmt>
DEU|0203040202 | 11| I| | ##0203040233<connect^stmt> | ##0203040234<release^stmt>
DEU|0203040202 | 12| I| | ##0203040241<query^stmt> | ##0203040243<report^stmt>
DEU|0203040202 | 13| I| | ##0203040247<edit^call> | ##0203040248<write^stmt>
DEU|0203040202 | 14| I| | ##0203040249<read^stmt> | ##0203040250<open^file^stmt>
DEU|0203040202 | 15| I| | ##0203040252<write^file^stmt> | ##0203040254<read^file^stmt>
DEU|0203040202 | 16| I| | ##0203040251<close^file^stmt> | ##0203040257<exec^command>
DEU|0203040202 | 17|RI| | ##0203040311<set^stmt> | <systime stmt>
DEU|0203040203 | 1|RI| <assign stmt> ::= ##0203040133<variable> := ##0203040204<assign^expr>
DEU|0203040204 | 1|RI| <assign expr> ::= ##0203040136<expr> | NULL
DEU|0203040205 | 1| | <vector assign stmt> ::=
DEU|0203040205 | 2| I| ##0203040134<vector^slice> := ##0203040204<assign^expr>
DEU|0203040205 | 3|R | | <vector slice> := <vector slice>
DEU|0203040206 | 1| I| <if stmt> ::= IF ##0203040146<boolean^expr>
DEU|0203040206 | 2| I| THEN ##0203040201<compound>
DEU|0203040206 | 3|R | [ELSE <compound>]
DEU|0203040207 | 1| | <case stmt> ::=
DEU|0203040207 | 2| I| CASE ##0203040136<expr> OF
DEU|0203040207 | 3| I| ##0203040208<case^list>
DEU|0203040207 | 4| I| [OTHERWISE ##0203040201<compound> ]
DEU|0203040207 | 5|R | END
DEU|0203040208 | 1| | <case list> ::=
DEU|0203040208 | 2|RI| ##0203040152<value^spec^list> : ##0203040201<compound> [;<case list>] ;
DEU|0203040209 | 1|RI| <repeat stmt> ::= REPEAT ##0203040202<stmt> ;... UNTIL ##0203040146<boolean^expr>
DEU|0203040210 | 1|RI| <while stmt> ::= WHILE ##0203040146<boolean^expr> DO ##0203040201<compound>
DEU|0203040211 | 1| | <for stmt> ::=
DEU|0203040211 | 2| I| FOR ##0203040133<variable> := ##0203040136<expr> <direction> <expr>
DEU|0203040211 | 3| I| DO ##0203040201<compound>
DEU|0203040211 | 5|R | <direction> ::= TO | DOWNTO
DEU|0203040212 | 1|RI| <skip stmt> ::= SKIP ##0203040118<name>
DEU|0203040213 | 1| | <return stmt> ::=
DEU|0203040213 | 2| | RETURN
DEU|0203040213 | 3|RI| | RETURN (##0203040136<expr>) <-- nur in SQL-PL Funktionen
DEU|0203040214 | 1|RI| <stop stmt> ::= STOP [( ##0203040136<expr> [, <expr>] )]
DEU|0203040215 | 1| | <vectsort stmt> ::=
DEU|0203040215 | 2| I| LTSORT ( ##0203040134<vector^slice>,... )
DEU|0203040215 | 3|R | | GTSORT ( <vector slice>,... )
DEU|0203040216 | 1| | <proc call> ::=
DEU|0203040216 | 2|RI| CALL PROC ##0203040220<name^expr> [PARMS ( ##0203040221<param> ,...)]
DEU|0203040217 | 1| | <form call> ::=
DEU|0203040217 | 2| I| CALL FORM ##0203040220<name^expr>
DEU|0203040217 | 3| | [OPTIONS (<form calling options>)]
DEU|0203040217 | 4|RI| [PARMS ( ##0203040221<param> ,...)]
DEU|0203040218 | 1| | <switch stmt> ::=
DEU|0203040218 | 2| I| SWITCH [ ##0203040220<name^expr> .] <name expr> ##0203040216<form^call>
DEU|0203040218 | 3|RI| | SWITCH [<name expr>.] <name expr> ##0203040216<proc^call>
DEU|0203040219 | 1| | <switchcall stmt> ::=
DEU|0203040219 | 2| I| SWITCHCALL [ ##0203040220<name^expr> .] <name expr> ##0203040216<form^call>
DEU|0203040219 | 3|RI| | SWITCHCALL [<name expr>.] <name expr> ##0203040216<proc^call>
DEU|0203040220 | 1| | <name expr> ::=
DEU|0203040220 | 2|RI| ##0203040118<name> | : ##0203040136<expr>
DEU|0203040221 | 1| | <param> ::=
DEU|0203040221 | 2|RI| ##0203040118<name>
DEU|0203040222 | 1| | <parm spec list> ::=
DEU|0203040222 | 2|RI| PARM/S/ ( ##0203040157<var^decl> ,...)
DEU|0203040225 | 1| | <dbproc call> ::=
DEU|0203040225 | 2| | CALL DBPROC [[<owner>.]<progname>.]<dbproc name>
DEU|0203040225 | 3| I| [PARMS ( ##0203040221<param> ,...] [WITH COMMIT]
DEU|0203040225 | 4| | | SQL ( DBPROC[EDURE] [[<owner>.]<progname>.]<dbproc name>
DEU|0203040225 | 5|RI| [( ##0203040226<host^var> ,...)] [WITH COMMIT] )
DEU|0203040226 | 1|RI| <host var> := ##0203040118:<name>
DEU|0203040227 | 1| | <sql stmt> ::=
DEU|0203040227 | 2| I| SQL [<dbname>] ( ##0203040228<sql^cmd> )
DEU|0203040227 | 3| I| | ##0203040229<dynamic^sql^stmt>
DEU|0203040227 | 4| I| | ##0203040230<dynamic^fetch^stmt>
DEU|0203040227 | 5|RI| | ##0203040231<mass^fetch^stmt>
DEU|0203040228 | 1| | <sql cmd> ::=
DEU|0203040228 | 2|R | siehe ADABAS Referenzhandbuch
DEU|0203040229 | 1| | <dynamic sql stmt> ::=
DEU|0203040229 | 2| I| SQL [<dbname>] EXECUTE IMMEDIATE ##0203040136<expr>
DEU|0203040229 | 3| | | SQL EXECUTE IMMEDIATE <expr> USING <expr list>
DEU|0203040229 | 4| I| | SQL EXECUTE ##0203040118<name> USING <expr list>
DEU|0203040229 | 5| | | SQL PREPARE <name> FROM <expr>
DEU|0203040229 | 6|RI| | SQL DESCRIBE <name> INTO ##0203040134<vector^slice>
DEU|0203040230 | 1| | <dynamic fetch stmt> ::=
DEU|0203040230 | 2|RI| SQL [<dbname>] FETCH IMMEDIATE INTO ##0203040226<host^var> ,...
DEU|0203040231 | 1| | <mass fetch stmt> ::=
DEU|0203040231 | 2|RI| SQL [<dbname>] ( FETCH INTO ##0203040134<vector^slice> ,... )
DEU|0203040232 | 1| | <fetch dynamic descr> ::=
DEU|0203040232 | 2|RI| SQL FETCH LONGDESCR INTO ##0203040133:<variable>
DEU|0203040233 | 1| | <connect stmt> ::=
DEU|0203040233 | 2| | CONNECT <dbname>
DEU|0203040233 | 3| | AS ( <username>, <password>, <serverdb>
DEU|0203040233 | 4| | [,<servernode>] )
DEU|0203040233 | 5| | | CONNECT :<var>
DEU|0203040233 | 6| | AS ( <username>, <password>, <serverdb>
DEU|0203040233 | 7|R | [,<servernode>] )
DEU|0203040234 | 1| | <release stmt> ::=
DEU|0203040234 | 2| | RELEASE <dbname>
DEU|0203040234 | 3|R | | RELEASE :<var>
DEU|0203040235 | 1| | <sqlerror routine> ::=
DEU|0203040235 | 2| | PROC <progname>.SQLERROR ( <modulename> )
DEU|0203040235 | 3|RI| ##0203040159<lab^stmt^list>
DEU|0203040236 | 1| | <sqlexception routine> ::=
DEU|0203040236 | 2| | PROC <progname>.SQLEXCEPTION ( <modulename> )
DEU|0203040236 | 3|RI| ##0203040159<lab^stmt^list>
DEU|0203040237 | 1| | <sqlnotfound routine> ::=
DEU|0203040237 | 2| | PROC <progname>.SQLNOTFOUND ( <modulename> )
DEU|0203040237 | 3|RI| ##0203040159<lab^stmt^list>
DEU|0203040238 | 1| | <sqltimeout routine> ::=
DEU|0203040238 | 2| | PROC <progname>.SQLTIMEOUT ( <modulename> )
DEU|0203040238 | 3|RI| ##0203040159<lab^stmt^list>
DEU|0203040239 | 1| | <sqlwarning routine> ::=
DEU|0203040239 | 2| | PROC <progname>.SQLWARNING ( <modulename> )
DEU|0203040239 | 3|RI| ##0203040159<lab^stmt^list>
DEU|0203040240 | 1| | <try catch stmt> ::=
DEU|0203040240 | 2| | TRY
DEU|0203040240 | 3| I| ##0203040201<compound>
DEU|0203040240 | 4| I| CATCH ##0203040136<expr> OF
DEU|0203040240 | 5| I| ##0203040208<case^list>
DEU|0203040240 | 6|R | END
DEU|0203040241 | 1| | <query stmt> ::=
DEU|0203040241 | 2| | QUERY <querycmd spec>
DEU|0203040241 | 3|RI| [ ##0203040244<further^facilities> ]
DEU|0203040242 | 1| | <querycmd spec> ::=
DEU|0203040242 | 2| | [ CMD ] ( <querycmd> )
DEU|0203040242 | 3|RI| | EXEC[UTE] ##0203040136<expr>
DEU|0203040243 | 1| | <report stmt> ::=
DEU|0203040243 | 2| | REPORT [<result table name>]
DEU|0203040243 | 3| | [<report cmd spec>]
DEU|0203040243 | 4| I| [ ##0203040244<further^facilities> ]
DEU|0203040243 | 6| | <report cmd spec> ::=
DEU|0203040243 | 7| | [ CMD ] ( <report cmd>;... )
DEU|0203040243 | 9| | <report cmd> ::=
DEU|0203040243 | 10| | siehe REPORT-Beschreibung
DEU|0203040243 | 12|RI| <result table name> ::= ##0203040220<name^expr>
DEU|0203040244 | 1| | <further facilities> ::=
DEU|0203040244 | 2| | [DBNAME [=] <dbname>]
DEU|0203040244 | 3| I| [PROGNAME [=] ##0203040136<expr> ]
DEU|0203040244 | 4| | [VERSION [=] <expr>]
DEU|0203040244 | 5| | [MODE [=] <expr>]
DEU|0203040244 | 6| | [HEADER [=] <expr>]
DEU|0203040244 | 7| I| [OPTION[S] ( ##0203040245<query^option> ,... )]
DEU|0203040244 | 8|RI| [RESULT ( ##0203040246<result^spec> ,... )]
DEU|0203040245 | 1| | <query option> ::=
DEU|0203040245 | 2|R | BACKGROUND | SETOFF | SETLOCAL | NOHEADLINE
DEU|0203040246 | 1| | <result spec> ::=
DEU|0203040246 | 2| I| [:] ##0203040133<variable> = <erg spec>
DEU|0203040246 | 4| | <erg spec> ::=
DEU|0203040246 | 5| | SUM ( <columnid> )
DEU|0203040246 | 6| | | AVG ( <columnid> )
DEU|0203040246 | 7| | | COUNT ( <columnid> )
DEU|0203040246 | 8| | | MIN ( <columnid> )
DEU|0203040246 | 9| | | MAX ( <columnid> )
DEU|0203040246 | 10| | | VAL1 ( <columnid> )
DEU|0203040246 | 11| | | VAL2 ( <columnid> )
DEU|0203040246 | 12| | | VAL3 ( <columnid> )
DEU|0203040246 | 13| | | VAL4 ( <columnid> )
DEU|0203040246 | 15| | <columnid> ::=
DEU|0203040246 | 16|R | <natural>
DEU|0203040247 | 1| | <edit call> ::=
DEU|0203040247 | 2| I| EDIT ( ##0203040134<vector^slice> [, <edit option>,...] )
DEU|0203040247 | 3| I| | EDIT ( ##0203040133<variable> [, <edit option>,...] )
DEU|0203040247 | 5| | <edit option> ::=
DEU|0203040247 | 6| I| POS ( ##0203040136<expr> ,<expr>)
DEU|0203040247 | 7| | | SIZE (<expr>,<expr>)
DEU|0203040247 | 8| | | MSG = <expr>
DEU|0203040247 | 9| | | ERR = <expr>
DEU|0203040247 | 10| | | LABEL = <expr>
DEU|0203040247 | 11| | | MARK (<expr>,<expr>)
DEU|0203040247 | 12| | | HEADER = <expr>
DEU|0203040247 | 13| | | PROGNAME = <expr>
DEU|0203040247 | 14| | | MAXLINES = <expr>
DEU|0203040247 | 15| | | PRINT
DEU|0203040247 | 16| | | NOINIT
DEU|0203040247 | 17|R | | <basic key> = <expr>
DEU|0203040248 | 1| | <write stmt> ::=
DEU|0203040248 | 2| | WRITE <write expr>,...
DEU|0203040248 | 4| | <write expr> ::=
DEU|0203040248 | 5| I| ##0203040136<expr>
DEU|0203040248 | 6| | | HIGH
DEU|0203040248 | 7| | | SIZE (<expr>)
DEU|0203040248 | 8| | | POS (<expr>,<expr>)
DEU|0203040248 | 9| | | PAUSE
DEU|0203040248 | 10| | | CLEAR
DEU|0203040248 | 11| | | NL [(<natural>)]
DEU|0203040248 | 12| | | COL (<natural>)
DEU|0203040248 | 13| | | HI (<expr>,...)
DEU|0203040248 | 14| | | NOCLEAR
DEU|0203040248 | 15| | | OPEN
DEU|0203040248 | 16| | | CLOSE
DEU|0203040248 | 17|R | | HOLD
DEU|0203040249 | 1| | <read stmt> ::=
DEU|0203040249 | 2| | READ <read expr>,...
DEU|0203040249 | 4| | <read expr> ::=
DEU|0203040249 | 5| I| ##0203040133<variable>
DEU|0203040249 | 6| | | HIGH
DEU|0203040249 | 7| | | DARK
DEU|0203040249 | 8| I| | SIZE ( ##0203040136<expr> )
DEU|0203040249 | 9| | | POS (<expr>,<expr>)
DEU|0203040249 | 10| | | CLEAR
DEU|0203040249 | 11| | | NL [(<natural>)]
DEU|0203040249 | 12| | | COL (<natural>)
DEU|0203040249 | 13| I| | PROMPT '##0203040127<any^char>'
DEU|0203040249 | 14|RI| | OUTIN ( ##0203040133<variable> )
DEU|0203040250 | 1| | <open file stmt> ::=
DEU|0203040250 | 2|R | OPEN <fileid> <filename> <open spec>
DEU|0203040251 | 1| | <close file stmt> ::=
DEU|0203040251 | 2|R | CLOSE <fileid>
DEU|0203040252 | 1| | <write file stmt> ::=
DEU|0203040252 | 2|RI| WRITEFILE <fileid> ##0203040253<write^file^args>
DEU|0203040253 | 1| | <write file args> ::=
DEU|0203040253 | 2|RI| ##0203040136<expr> [: <expr>] [,<write file args>]
DEU|0203040254 | 1| | <read file stmt> ::=
DEU|0203040254 | 2|RI| READFILE <fileid> ##0203040255<read^file^args>
DEU|0203040255 | 1| | <read file args> ::=
DEU|0203040255 | 2|RI| ##0203040133<variable> [: ##0203040136<expr> [,<read file args>] ]
DEU|0203040256 | 1|RI| <writetrace stmt> ::= WRITETRACE ##0203040253<write^file^args>
DEU|0203040257 | 1| | <exec command> ::=
DEU|0203040257 | 2| I| EXEC [SYNC] ##0203040258<operating^system^command> RESULT variable
DEU|0203040257 | 3|R | | EXEC ASYNC <operating system command>
DEU|0203040258 | 1| | <operating system command> ::=
DEU|0203040258 | 2| | beliebiges Kommando oder
DEU|0203040258 | 3|R | beliebiger Programmaufruf des Betriebssystems.
DEU|0203040259 | 1| | <arith function> ::=
DEU|0203040259 | 2| I| ABS ( ##0203040136<expr> )
DEU|0203040259 | 3| | | SQR (<expr>)
DEU|0203040259 | 4| | | ROUND (<expr>,<expr>)
DEU|0203040259 | 5| | | SQRT (<expr>)
DEU|0203040259 | 6| | | TRUNC (<expr>,<expr>)
DEU|0203040259 | 7| | | SIN (<expr>)
DEU|0203040259 | 8| | | COS (<expr>)
DEU|0203040259 | 9| | | ARCTAN (<expr>)
DEU|0203040259 | 10| | | EXP (<expr>)
DEU|0203040259 | 11| | | LN (<expr>)
DEU|0203040259 | 12| I| | INDEX ( ##0203040134<vector^slice> ,<expr>)
DEU|0203040259 | 13| | | LENGTH(<expr>)
DEU|0203040259 | 14| | | ORD (<expr>)
DEU|0203040259 | 15| I| | ##0203040260<index^function>
DEU|0203040259 | 16| I| | ##0203040302<set^function>
DEU|0203040259 | 17|SI| | ##0203040301<strpos^function>
DEU|0203040259 | 19|RI| | ##0203040304<sign^function>
DEU|0203040260 | 1| | <index function> ::=
DEU|0203040260 | 2| I| INDEX ( ##0203040134<vector^slice> , [NOT] ##0203040136<expr> )
DEU|0203040260 | 3|R | | INDEX (<vector slice>, [NOT] NULL)
DEU|0203040301 | 1| | <strpos function> ::=
DEU|0203040301 | 2| I| STRPOS ( ##0203040136<expr>, <expr> [, ##0203040137<num^expr> ] )
DEU|0203040301 | 3| | | SPAN ( <expr>, <expr> [, <num expr> ] )
DEU|0203040301 | 4|R | | BREAK ( <expr>, <expr> [, <num expr> ] )
DEU|0203040302 | 1| | <set function> ::=
DEU|0203040302 | 2| I| MIN ( ##0203040303<mixed^expr> ,...)
DEU|0203040302 | 3| | | MAX (<mixed expr>,...)
DEU|0203040302 | 4|R | | AVG (<mixed expr>,...)
DEU|0203040303 | 1| | <mixed expr> ::=
DEU|0203040303 | 2|RI| ##0203040136<expr> | ##0203040134<vector^slice>
DEU|0203040304 | 1| | <sign function> ::=
DEU|0203040304 | 2|RI| SIGN ( ##0203040136<expr> )
DEU|0203040305 | 1| | <string function> ::=
DEU|0203040305 | 2| I| TRIM ( <expr [ , ##0203040127'<any^char>' ] )
DEU|0203040305 | 3| I| | TRIM ( ##0203040136<expr> ,'<any char>',<side>)
DEU|0203040305 | 4| | | PAD (<expr>[, <expr>])
DEU|0203040305 | 5| | | PAD (<expr>, <expr>,<side>)
DEU|0203040305 | 6| | | SUBSTR(<expr>,<expr> [,<expr>] )
DEU|0203040305 | 7| | | UPPER (<expr>)
DEU|0203040305 | 8| | | LOWER (<expr>)
DEU|0203040305 | 9| | | FORMAT (<expr>,'<char>...')
DEU|0203040305 | 10| | | HEX (<expr>)
DEU|0203040305 | 11| | | CHR (<expr>)
DEU|0203040305 | 12| I| | CHANGE ( <expr>, <expr> [, ##0203040137<num^expr> ] )
DEU|0203040305 | 13| | | TOKENIZE (<expr>, <expr>)
DEU|0203040305 | 14| | | SEPARATE (<expr>, <expr>)
DEU|0203040305 | 16|R | <side> ::= RIGHT/LEFT/BOTH
DEU|0203040307 | 1| | <date function> ::=
DEU|0203040307 | 2| I| ##0203040309<date^arith^function>
DEU|0203040307 | 3|RI| | ##0203040308<date^str^function>
DEU|0203040308 | 1| | <date str function> ::=
DEU|0203040308 | 2| I| DATE [ ([<date mask>] , ##0203040136<expr> [,<date mask>]) ]
DEU|0203040308 | 3| | | TIME [ ([<time mask>] ,<expr> [,<time mask>])]
DEU|0203040308 | 4| | | ADDDATE (<expr>,<expr>)
DEU|0203040308 | 5| | | SUBDATE (<expr>,<expr>)
DEU|0203040308 | 6| | | MAKETIME (<expr>,<expr>,<expr>)
DEU|0203040308 | 7| | | ADDTIME (<expr>,<expr>)
DEU|0203040308 | 8|R | | SUBTIME (<expr>,<expr>)
DEU|0203040309 | 1| | <date arith function> ::=
DEU|0203040309 | 2| I| DAYOFWEEK ( ##0203040136<expr> )
DEU|0203040309 | 3| | | WEEKOFYEAR (<expr>)
DEU|0203040309 | 4| | | DAYOFYEAR (<expr>)
DEU|0203040309 | 5| | | DATEDIFF (<expr>,<expr>)
DEU|0203040309 | 6|R | | TIMEDIFF (<expr>,<expr>)
DEU|0203040310 | 1| | <set function> ::=
DEU|0203040310 | 2|RI| SET ( ##0203040312<set^id> )
DEU|0203040311 | 1| | <set stmt> ::=
DEU|0203040311 | 2|RI| SET ( ##0203040312<set^id> , ##0203040136<expr> )
DEU|0203040312 | 1| | <set id> ::=
DEU|0203040312 | 2| | COPIES
DEU|0203040312 | 3| | | CODEAREA
DEU|0203040312 | 4| | | DATE
DEU|0203040312 | 5| | | DECIMALREP
DEU|0203040312 | 6| | | NESTING
DEU|0203040312 | 7| | | NULLVALUE
DEU|0203040312 | 8| | | LANGUAGE
DEU|0203040312 | 9| | | PRESENTATION
DEU|0203040312 | 10| | | PRETTY
DEU|0203040312 | 11| | | PRINTFORMAT
DEU|0203040312 | 12| | | PROTOCOL
DEU|0203040312 | 13| | | SEPARATOR
DEU|0203040312 | 14| | | SYSEDITOR
DEU|0203040312 | 15| | | TARGET_LANGS
DEU|0203040312 | 16| | | TIME
DEU|0203040312 | 17|S | | VERSION
DEU|0203040312 | 19|R | | VALUEAREA
DEU|0203040313 | 1| | <systime func> ::=
DEU|0203040313 | 2|R | INITTIME | GETTIME
DEU|0203040314 | 1| | <dollar numeric variable> ::=
DEU|0203040314 | 2| | $COLNO
DEU|0203040314 | 3| | | $COUNT
DEU|0203040314 | 4| | | $CURSOR
DEU|0203040314 | 5| | | $EDITLINES
DEU|0203040314 | 6| | | $MAXLINES
DEU|0203040314 | 7| | | $MAXCOLS
DEU|0203040314 | 8| | | $MICRO
DEU|0203040314 | 9| | | $RC
DEU|0203040314 | 10| | | $ROWNO
DEU|0203040314 | 11| | | $SCREENCOLS
DEU|0203040314 | 12| | | $SCREENLNS
DEU|0203040314 | 13| | | $SEC
DEU|0203040314 | 14|R | | $SYSRC
DEU|0203040315 | 1| | <dollar string variable> ::=
DEU|0203040315 | 2| | $ACTION
DEU|0203040315 | 3| | | $CMD
DEU|0203040315 | 4| | | $FUNCTION|$FUNCTION1...|$FUNCTION4
DEU|0203040315 | 5| | | $GROUP
DEU|0203040315 | 6| | | $KEY
DEU|0203040315 | 7| | | $OS
DEU|0203040315 | 8| | | $RT
DEU|0203040315 | 9| | | $SERVERDB
DEU|0203040315 | 10| | | $SYSRT
DEU|0203040315 | 11| | | $TERM
DEU|0203040315 | 12| | | $USER
DEU|0203040315 | 13|R | | $USERMODE
DEU|0203040316 | 1| | <dollar boolean variable> ::=
DEU|0203040316 | 2| | $SQLWARN
DEU|0203040316 | 3|RI| | $SQLWARN [( ##0203040136<expr> )]
DEU|0203040317 | 1| | <object header> ::=
DEU|0203040317 | 2| | <object type> <progname>.<modname>
DEU|0203040317 | 3| I| OPTION/S/ ( ##0203040318<module^option> ,... )
DEU|0203040317 | 5| | <object type> ::=
DEU|0203040317 | 6| | PROC
DEU|0203040317 | 7| | | FUNCTION
DEU|0203040317 | 8| | | DBPROC
DEU|0203040317 | 9| | | TRIGGER
DEU|0203040317 | 10| | | FORM
DEU|0203040317 | 11|R | | HELPFORM
DEU|0203040318 | 1| | <module option> ::=
DEU|0203040318 | 2| | <loop option>
DEU|0203040318 | 3| | | <autocommit option>
DEU|0203040318 | 4| | | <trace option>
DEU|0203040318 | 5| | | <test dbproc option>
DEU|0203040318 | 6| | | <lib option>
DEU|0203040318 | 7| | | <keyswap option>
DEU|0203040318 | 9| | <loop option> ::=
DEU|0203040318 | 10| | LOOP /=/ <natural>
DEU|0203040318 | 12| | <autocommit option> ::=
DEU|0203040318 | 13| | AUTOCOMMIT OFF
DEU|0203040318 | 15| | <trace option> ::=
DEU|0203040318 | 16| | SQLTRACE /ALL/
DEU|0203040318 | 17|S | | MODULETRACE
DEU|0203040318 | 19| | <test dbproc option> ::= TEST DBPROC
DEU|0203040318 | 21| | <lib option> ::=
DEU|0203040318 | 22| | LIB [<username>.] <libname>
DEU|0203040318 | 24| | <keyswap option> ::=
DEU|0203040318 | 25|R | <keyswap spec>
DEU|02030405 | 1| | Schlⁿsselworte
DEU|02030405 | 2| | ---------------
DEU|02030405 | 4| I| ##0203030102$ACTION ##0203030102$CMD ##0203030109$COLNO ##0203030104$COUNT ##0203030102$CURSOR
DEU|02030405 | 5| I| ##0203030102$EDITLINES ##0203030102$FUNCTION ##0203030101$GROUP ##0203030110$ITEMS ##0203030102$KEY
DEU|02030405 | 6| I| ##0203030107$KEYLINES ##0203030105$MAXLINES ##0203030105$MAXCOLS ##02030211$MICRO ##0203030107$MSGLINES
DEU|02030405 | 7| I| ##0203030108$OS ##0203030108$PROCESSID ##0203030103$RC ##0203030109$COLNO ##0203030103$RT
DEU|02030405 | 8| I| ##0203030105$SCREENCOLS ##0203030105$SCREENLNS ##02030211$SEC ##0203030101$SERVERDB ##0203030103$SQLCODE
DEU|02030405 | 9| I| ##0203030103$SQLERRMC ##0203030103$SQLERRPOS ##0203030106$SQLWARN ##0203030110$SYSRC ##0203030110$SYSRT
DEU|02030405 | 10| I| ##0203030108$TERM ##0203030101$USER ##0203030101$USERMODE
DEU|02030405 | 12| I| ##0203030207ABS ##050408ACCEPT ##0203030402ADDDATE ##0203030404ADDTIME ##0203011004ALL
DEU|02030405 | 13| I| ##0203011003ALPHA ##0203011001AND ##0203011004ANY ##0203030203ARCTAN ##0203030201AVG
DEU|02030405 | 15| I| ##02030404BEGIN ##0203011002BETWEEN ##0203030301BLANK ##0203030312BREAK
DEU|02030405 | 17|SI| ##02030106CALL ##02030104CASE ##02030116CATCH ##0203030307CHANGE ##0203030308CHR
DEU|02030405 | 19| I| ##05040404CHECK ##02030202CLEAR ##0203020601CLOSE ##02030202CMDKEY ##02030202COL
DEU|02030405 | 20| I| ##0203020406CONNECT ##050411CONTROL ##0203030203COS ##050607CPAGE
DEU|02030405 | 22| I| ##02030203DARK ##0203030401DATE ##0203030402DATEDIFF ##0203030403DAYOFWEEK ##0203030403DAYOFYEAR
DEU|02030405 | 23| I| ##0211DBPROC ##0203011005DELETING ##020302040202DESCRIBE ##02030401DIV ##02030112DO
DEU|02030405 | 24| I| ##050408DOWN ##050408DOWNKEY ##02030112DOWNTO
DEU|02030405 | 26| I| ##0203011004EACH ##02030207EDIT ##02030103ELSE ##02030404END ##050408ENDKEY
DEU|02030405 | 27| I| ##0502ENDLAYOUT ##110301ENDMODULE ##050408ENTER ##0203011003EOF ##0502ERROR
DEU|02030405 | 28| I| ##050409EXCEPT ##02030212EXEC ##0203020402EXECUTE ##0203030204EXP
DEU|02030405 | 30| I| ##0203020401FETCH ##050404FIELD ##0203011005FIRSTCALL ##0203011003FIXED ##02030112FOR
DEU|02030405 | 31| I| ##0502FORM ##0203030304FORMAT ##050603FORMPOS ##020701FUNCTION ##050408F1^..^F12
DEU|02030405 | 33| I| ##02030211GETIME ##02030209GTSORT
DEU|02030405 | 35|SI| ##050408HELP ##05040403HELPFORM ##050408HELPKEY ##0203030309HEX ##02030202HI
DEU|02030405 | 37| I| ##02030202HIGH
DEU|02030405 | 39| I| ##02030103IF ##050409IGNORE ##050403IN ##0203030305INDEX ##05040402INIT
DEU|02030405 | 40| I| ##02030211INITTIME ##021102INOUT ##0203011005INSERTING ##0203020403INTO ##02030110IS
DEU|02030405 | 42| I| ##02030207KEYSWAP
DEU|02030405 | 44| I| ##0203011005LASTCALL ##0502LAYOUT ##050408LEFT ##050408LEFTKEY
DEU|02030405 | 45| I| ##0203030303LENGTH ##0203011002LIKE ##050607LINEFEED ##050607LINESPACE ##0203030204LN
DEU|02030405 | 46| I| ##050402LOW ##0203030310LOWER ##02030209LTSORT
DEU|02030405 | 48| I| ##0203030405MAKETIME ##0203030201MAX ##0203030205MDS ##0502MESSAGE ##0203030201MIN
DEU|02030405 | 49| I| ##02030401MOD ##0203011003MODIFIED
DEU|02030405 | 51| I| ##050607NEWPAGE ##050905NEXTFIELD ##050906NEXTGROUP ##02030202NL ##050606NOINIT
DEU|02030405 | 52|SI| ##0203011001NOT ##0203011003NULL ##0203011003NUMERIC
DEU|02030405 | 55| I| ##02030104OF ##0203011004ONE ##0203020601OPEN ##020305OPTION ##020305OPTIONS
DEU|02030405 | 56| I| ##0203011001OR ##0203030308ORD ##02030104OTHERWISE ##050403OUT ##02030203OUTIN
DEU|02030405 | 58| I| ##0203030314PAD ##050405PAGE ##02030106PARM ##02030106PARMS ##02030202PAUSE
DEU|02030405 | 59| I| ##050408PF1^..^PF12 ##0203030205PI ##050406PICK ##02030202POS ##020302040202PREPARE
DEU|02030405 | 60| I| ##050607PRINT ##02030106PROC ##02030203PROMPT ##050406PUT
DEU|02030405 | 62| I| ##0203020502QUERY
DEU|02030405 | 64| I| ##02030203READ ##0203020602READFILE ##0203020406RELEASE ##02030101REPEAT ##02030205REPORT
DEU|02030405 | 65| I| ##02030105RETURN ##050416RETURNONLAST##050408RIGHT ##050408RIGHTKEY ##0203030202ROUND
DEU|02030405 | 67| I| ##050603SCREENPOS ##050603SCREENSIZE ##0203030315SEPARATE ##02030210SET ##0203030208SIGN
DEU|02030405 | 68| I| ##0203030203SIN ##02030202SIZE ##02030109SKIP ##050408SK1^..^SK9 ##0203011004SOME
DEU|02030405 | 69| I| ##0203030313SPAN ##02030204SQL ##0203030206SQR ##0203030206SQRT ##02030111STOP
DEU|02030405 | 70| I| ##0203030306STRPOS ##0203030402SUBDATE ##0203030302SUBSTR ##0203030404SUBTIME ##02030108SWITCH
DEU|02030405 | 71|SI| ##02030114SWITCHCALL
DEU|02030405 | 73| I| ##02030103THEN ##0203030401TIME ##0203030404TIMEDIFF ##02030112TO ##0203030315TOKENIZE
DEU|02030405 | 74| I| ##0211TRIGGER ##0203030303TRIM ##0203030202TRUNC ##02030116TRY
DEU|02030405 | 76| I| ##02030101UNTIL ##050408UP ##0203011005UPDATING ##050408UPKEY ##0203030310UPPER
DEU|02030405 | 78|RI| ##0203030403WEEKOFYEAR ##050409WHEN ##02030102WHILE ##02030202WRITE ##0203020603WRITEFILE
DEU|020305 | 1| | In der OPTIONS-Anweisung (direkt nach dem Modulkopf angebbar) k÷nnen
DEU|020305 | 2| | eine Reihe von Angaben gemacht werden, die im folgenden aufgefⁿhrt
DEU|020305 | 3| | werden :
DEU|020305 | 5| | LOOP <zahl> begrenzt die Anzahl der SchleifendurchlΣufe bei FOR-,
DEU|020305 | 6| | WHILE- und REPEAT-Schleifen auf die angegebene Anzahl. Beim
DEU|020305 | 7| | ▄berschreiten der Anzahl wird die Ausfⁿhrung des Programms mit der
DEU|020305 | 8| | Meldung "Endlosschleife vermutet" abgebrochen.
DEU|020305 | 10| | AUTOCOMMIT OFF bewirkt, da▀ in dieser Routine kein implizites COMMIT
DEU|020305 | 11| | WORK vor Benutzereingaben (READ, FORM-Aufruf) gemacht wird.
DEU|020305 | 12| | Au▀erdem wird der Fehler 700 ( Command inactivity timeout )
DEU|020305 | 13| | durchgereicht und mu▀ von dem Programm abgefangen werden.
DEU|020305 | 15| | MODULETRACE bewirkt, da▀ ab dem Aufruf dieser Routine alle Unter-
DEU|020305 | 16| | programmaufrufe in einer Protokolldatei vermerkt werden. Der Name
DEU|020305 | 17|S | der Protokolldatei ist mit dem Werkbankkommando SET einstellbar.
DEU|020305 | 19| | SQLTRACE bewirkt, da▀ alle in der Routine ausgefⁿhrten SQL-Aufrufe in
DEU|020305 | 20| | einer Datei protokolliert werden.
DEU|020305 | 22| | SQLTRACE ALL bewirkt, da▀ alle folgenden SQL-Aufrufe in einer Datei
DEU|020305 | 23| | protokolliert werden.
DEU|020305 | 25| | LIB /<benutzername>./ <bibliotheksname> bewirkt, da▀ ab dem Aufruf
DEU|020305 | 26| | dieser Routine vom Benutzer definierte SQL-PL Funktionen in der
DEU|020305 | 27| | angegebenen Bibliothek gesucht werden. StandardmΣssig ist
DEU|020305 | 28| | <user>.STDLIB eingestellt. Die Einstellung behΣlt ihre Wirkung,
DEU|020305 | 29| | bis eine neue Vereinbarung getroffen wird oder die Routine wieder
DEU|020305 | 30| | verlassen wird.
DEU|020305 | 32| I| TEST DBPROC bewirkt, da▀ alle in dieser Routine enthaltenen ##02030115CALL^DBPROC
DEU|020305 | 33| | Anweisungen fⁿr einen speziellen Testmodus ⁿbersetzt werden. Dies
DEU|020305 | 34| | bedeutet, da▀ der Aufruf der DB-Prozedur simuliert wird, wodurch
DEU|020305 | 35|SI| die ⁿblichen Testm÷glichkeiten zur Verfⁿgung stehen ( ##0209Debugger,
DEU|020305 | 37| | SQLTRACE, MODULETRACE ).
DEU|020305 | 39| | SUBPROC bewirkt, das jede Anweisung, die nicht in einer DB-Prozedur
DEU|020305 | 40| | zulΣssig ist, als Fehler markiert wird.
DEU|020305 | 42| I| ##050410KEYSWAP-Option.
DEU|020305 | 44| | Beispiele :
DEU|020305 | 46| |
DEU|020305 | 47| E| PROC kunde.start OPTIONS ( LOOP 50, AUTOCOMMIT OFF );
DEU|020305 | 48| E| PROC kunde.start OPTIONS ( LIB kundefkt, SQLTRACE, MODULETRACE );
DEU|020305 | 49| |
DEU|020305 | 51|RI| ##0203040318->^Syntax
DEU|0207 | 1| | SQL-PL Funktionen
DEU|0207 | 3| | SQL-PL Funktionen unterstⁿtzen die Entwicklung gr÷▀erer Anwendungen.
DEU|0207 | 4| | FunktionalitΣt, die in der gesamten Anwendung ( d. h. in mehreren
DEU|0207 | 5| | Programmen ) ben÷tigt wird, kann zu einer Bibliothek zusammengefa▀t
DEU|0207 | 6| | werden. Die Funktionen k÷nnen aufgerufen werden, ohne da▀ das laufende
DEU|0207 | 7| | Programm verlassen wird.
DEU|0207 | 9| M| #01Vereinbarung einer Funktion
DEU|0207 | 10| M| #02Aufruf von Funktionen
DEU|0207 | 11|RM| #03Restriktionen
DEU|020701 | 1| | Vereinbarung einer SQL-PL Funktion
DEU|020701 | 3| | Funktionen werden durch das einleitende Schlⁿsselwort FUNCTION von
DEU|020701 | 4| | normalen SQL-PL Routinen unterschieden. Durch die RETURN-Anweisung kann
DEU|020701 | 5| | ein Wert an die aufrufende Umgebung zurⁿckgegeben werden.
DEU|020701 | 7| | Beispiele :
DEU|020701 | 9| |
DEU|020701 | 10| E| FUNCTION stdlib.summe PARMS (@s1, @s2, @s3, @s4, @s5);
DEU|020701 | 11| E| RETURN (@s1 + @s2 + @s3 + @s4 + @s5);
DEU|020701 | 13| E| FUNCTION stdlib.liste PARM (@reportname);
DEU|020701 | 14| E| REPORT CMD ( TTITLE '':@reportname'')
DEU|020701 | 15| |
DEU|020701 | 17|RI| ##0203040107->^Syntax
DEU|020702 | 1| | Aufruf von Funktionen
DEU|020702 | 3| | Der Aufruf einer SQL-PL Funktion wird durch das Prozentzeichen (%)
DEU|020702 | 4| | eingeleitet. Die Funktion wird in der aktuell eingestellten Bibliothek
DEU|020702 | 5| I| ( ##020305Optionen und Testhilfen ) gesucht.
DEU|020702 | 7| | Funktionsaufrufe k÷nnen in Ausdrⁿcken verwendet werden, aber auch als
DEU|020702 | 8| | eigenstΣndige Anweisungen auftreten.
DEU|020702 | 10| | Beispiele :
DEU|020702 | 12| |
DEU|020702 | 13| E| summe := %summe (a,b,c,d,e);
DEU|020702 | 14| E| %liste ('Kundenliste');
DEU|020702 | 15| |
DEU|020702 | 17|S | Bei der Verwendung in Ausdrⁿcken mu▀ in der Funktion durch die RETURN-
DEU|020702 | 19| | Anweisung ein Wert zurⁿckgegeben werden.
DEU|020702 | 21|RI| ##0203040141->^Syntax
DEU|020703 | 1| | Restriktionen
DEU|020703 | 3| | In SQL-PL Funktionen dⁿrfen keine CALL- und SWITCH-Anweisungen
DEU|020703 | 4| | auftreten; SQL-PL Funktionen dⁿrfen aufgerufen werden.
DEU|020703 | 6|R | Globale Variablen sind nicht zugelassen.
DEU|0208 | 1| | Restriktionen
DEU|0208 | 3| | - 512 verschiedene g l o b a l e Variablen.
DEU|0208 | 4| | - 255 Komponenten pro Vektor.
DEU|0208 | 5| | - 12276 Byte gro▀e Variablenwerte.
DEU|0208 | 6| | - 63 Module pro Programm, die globale Variablen ansprechen.
DEU|0208 | 7| | - 255 Aus- und Eingabefelder pro Maske.
DEU|0208 | 8| | - 255 SQL-Variablen pro SQL-Kommando.
DEU|0208 | 9| | - Beliebige Anzahl von Programmen pro Benutzer.
DEU|0208 | 10| | - 255 formale Parameter pro Routine.
DEU|0208 | 11| | - 20 Argumente bei Maskenaufrufoption ATTR
DEU|0208 | 12| | - 20 Variablen-Argumente bei Maskenaufrufoption INPUT
DEU|0208 | 13|R | - 255 Feldnummern-Argumente bei Maskenaufrufoption INPUT
DEU|0209 | 1| | Der Debugger
DEU|0209 | 2| | ------------
DEU|0209 | 4| M| #00Vorgehensweise
DEU|0209 | 5| M| #01Variablen^anzeigen
DEU|0209 | 6| M| #02Variablen^Σndern
DEU|0209 | 7| M| #03Haltepunkte^setzen
DEU|0209 | 8| M| #04Haltepunkte^l÷schen
DEU|0209 | 9| M| #06Haltepunkte^anzeigen
DEU|0209 | 10| M| #05Systemvariablen^anzeigen
DEU|0209 | 11|RM| #06sonstige^Kommandos
DEU|020900 | 1| | Die SQL-PL Testhilfe ( Debugger ) soll den Programmentwickler beim
DEU|020900 | 2| | Testen seiner SQL-PL Anwendungen unterstⁿtzen.
DEU|020900 | 4| | Folgende Vorgehensweise ist daher fⁿr den Debugger erforderlich:
DEU|020900 | 5| | In der Kommandozeile der Werkbank oder des Editors wird die Debug-
DEU|020900 | 6| I| Option durch Eingabe von ##110401DEBUG^ON eingeschaltet. Die Module, die mit
DEU|020900 | 7| I| dem Debugger bearbeitet werden sollen, mⁿssen dann mit ##110205STORE neu
DEU|020900 | 8| | ⁿbersetzt werden.
DEU|020900 | 10| I| Die Debug-Option wird durch Eingabe von ##110401DEBUG^OFF ausgeschaltet.
DEU|020900 | 12| | Das Programm wird dann solange "normal" ausgefⁿhrt, bis der erste Modul
DEU|020900 | 13| | aufgerufen wird, der zuvor mit Debug-Option ⁿbersetzt wurde. Dann wird
DEU|020900 | 14| | in den Debugger verzweigt. In der unteren BildschirmhΣlfte wird der
DEU|020900 | 15| | SQL-PL Modul angezeigt. Die aktuelle Anweisung wird in der mittleren
DEU|020900 | 16| | Zeile des Editierformulars hervorgehoben dargestellt. Mit den AUF- und
DEU|020900 | 17|S | AB-Tasten kann im Editierformular geblΣttert werden.
DEU|020900 | 19| | In der Kommandozeile k÷nnen die unten beschriebenen Debugger-Kommandos
DEU|020900 | 20| | angegeben werden. Eventuelle Anzeigen erfolgen in der oberen
DEU|020900 | 21| | BildschirmhΣlfte.
DEU|020900 | 24| I| Der Debugger bietet die M÷glichkeit Variableninhalte ##020901anzuzeigen oder
DEU|020900 | 25| I| sie zu ##020902Σndern ; Haltepunkte zu ##020903definieren, zu ##020904entfernen oder sie
DEU|020900 | 26| I| ##020906anzuzeigen.
DEU|020900 | 28| I| Der Entwickler kann sich die ##020905Systemvariablen und die ##020906Aufruffolge
DEU|020900 | 29|R | anzeigen lassen.
DEU|020901 | 1| | Es kann der Wert einzelner Variablen, Vektorkomponenten und
DEU|020901 | 2| | Vektorbereiche des laufenden Programms angezeigt werden.
DEU|020901 | 4| | V <varname>
DEU|020901 | 5| | V <varname> ( <index> )
DEU|020901 | 6| | V <varname> ( <unterer index> .. <oberer index> )
DEU|020901 | 8| | Beispiele :
DEU|020901 | 10| | V zaehler
DEU|020901 | 11| | V liste(1..10)
DEU|020901 | 12|R | V @kundennr(5)
DEU|020902 | 1| | Es kann der Wert einzelner Variablen, Vektorkomponenten und
DEU|020902 | 2| | Vektorbereiche des laufenden Programms verΣndert werden.
DEU|020902 | 4| | Hierbei kann eine Zahl oder eine Zeichenkette angegeben werden.
DEU|020902 | 5| | Zeichenketten sind ohne Hochkommata anzugeben. Sie werden unverΣndert
DEU|020902 | 6| | ⁿbernommen.
DEU|020902 | 8| | Wird hinter dem Variablennamen kein Wert angegeben, wird dieser
DEU|020902 | 9| | Variablen der NULL-Wert zugewiesen.
DEU|020902 | 11| | A <varname> /<wert>/
DEU|020902 | 12| | A <varname> ( <index> ) /<wert>/
DEU|020902 | 13| | A <varname> ( <unterer index> .. <oberer index> ) /<wert>/
DEU|020902 | 15| | Beispiel :
DEU|020902 | 17|S | A zaehler 10
DEU|020902 | 19| | A @kundennr(2) K1234
DEU|020902 | 20|R | A liste(1..10)
DEU|020903 | 1| | Mit der B-Funktion k÷nnen Haltepunkte in "debug-fΣhigen" Routinen
DEU|020903 | 2| | definiert werden.
DEU|020903 | 4| | B <programm>/<modul>/<zeilennummer>
DEU|020903 | 5| | B <zeilennummer>
DEU|020903 | 7| | Die Ausfⁿhrung des Programms wird unterbrochen, bevor die Anweisung in
DEU|020903 | 8| | Editorzeile <zeilennummer> ausgefⁿhrt wird. Ist kein Modul angegeben,
DEU|020903 | 9| | so wird der Haltepunkt in die entsprechende Zeile des gerade aktuellen
DEU|020903 | 10| | Moduls gesetzt.
DEU|020903 | 12| | BV <varname>
DEU|020903 | 13| | BV <varname> ( <index> )
DEU|020903 | 15| | Die Ausfⁿhrung des Programms wird unterbrochen, wenn der Wert der
DEU|020903 | 16|S | angegebenen Variablen geΣndert wurde.
DEU|020903 | 19| | ~
DEU|020903 | 21| | Beispiele :
DEU|020903 | 23| | B kunde/start/0005
DEU|020903 | 24| | B 5
DEU|020903 | 25| | BV zaehler
DEU|020903 | 26|R | BV @kundennr(2)
DEU|020904 | 1| | Mit der R-Funktion kann der angegebene Haltepunkte deaktiviert werden.
DEU|020904 | 3| | R <programm>/<modul>/<zeilennummer>
DEU|020904 | 4| | R <zeilennummer>
DEU|020904 | 6| | RV <varname>
DEU|020904 | 7| | RV <varname> ( <index> )
DEU|020904 | 9| | Beispiele :
DEU|020904 | 11| | R kunde/start/0005
DEU|020904 | 12| | R 5
DEU|020904 | 13| | RV zaehler
DEU|020904 | 14|R | RV @kundennr(2)
DEU|020905 | 1| | $ zeigt die Dollarvariablen an :
DEU|020905 | 2| | $USER, $GROUP, $DBNAME, $FILERC, $RC, $COUNT,
DEU|020905 | 3| | $CURSOR, $EDITLINES, $SEC, $MICRO, $ROWNO, $COLNO,
DEU|020905 | 4| | $SCREENLNS, $SCREENCOLS, $MAXLINES, $MAXCOLS,
DEU|020905 | 5| | $MSGLINES, $KEYLINES, $CMD, $KEY
DEU|020905 | 7|R | $<name> zeigt den Wert der angegebenen Systemvariablen an.
DEU|020906 | 1| | L zeigt eine Liste aller Haltepunkte,
DEU|020906 | 2| | die fⁿr Anweisungen definiert sind.
DEU|020906 | 4| | LV zeigt eine Liste aller Haltepunkte,
DEU|020906 | 5| | die fⁿr Variablen definiert sind.
DEU|020906 | 7| | T zeigt die Folge der aufgerufenen Module an.
DEU|020906 | 9| | G fⁿhrt das Programm bis zum nΣchsten Halte-
DEU|020906 | 10| | punkt bzw. bis zum Ende fort.
DEU|020906 | 12| | H bewirkt den sofortigen Abbruch des Programms.
DEU|020906 | 14| | S schaltet den Einzelschrittmodus an bzw. aus.
DEU|020906 | 16|S | X zeigt die Werte der ⁿbergebenen Parameter.
DEU|020906 | 19| | ? oder INFO-Taste verzweigt in den HELP-Modus.
DEU|020906 | 20|R | BLANKO-Taste l÷scht die obere BildschirmhΣlfte.
DEU|0211 | 1| | DB-Prozeduren und Trigger
DEU|0211 | 2| | -------------------------
DEU|0211 | 4| M| #01Restriktionen
DEU|0211 | 5| M| #02Parameter -Deklarationen
DEU|0211 | 6| M| #03EingeschrΣnkte Anweisungen
DEU|0211 | 7| M| #04Aufruf
DEU|0211 | 8| M| #05Parameter -Deklarationen in Triggern
DEU|0211 | 9| I| ##1107Verwaltung DB-Prozeduren
DEU|0211 | 10|RI| ##1108Verwaltung Trigger
DEU|021101 | 1| | Restriktionen in DB-Prozeduren und Triggern
DEU|021101 | 3| | Soll eine SQL-PL Routine als DB-Prozedur deklariert werden, so gelten
DEU|021101 | 4| | die folgenden zusΣtzlichen EinschrΣnkungen :
DEU|021101 | 6| I| - die ##021102Parameter der Routine mⁿssen deklariert werden.
DEU|021101 | 8| | - der Umfang einer Routine ist auf ein Viertel der maximalen Gr÷▀e
DEU|021101 | 9| | einer normalen SQL-PL Routine beschrΣnkt.
DEU|021101 | 11| | - alle direkt oder indirekt aufgerufenen Module mⁿssen existieren, sie
DEU|021101 | 12| | unterliegen den gleichen Restriktionen
DEU|021101 | 14| I| - nicht alle ##021103SQL-PL Anweisungen sind zulΣssig
DEU|021101 | 16|R | - die Compiler-Optionen DEBUG und SQLSYNTAX werden ignoriert
DEU|021102 | 1| | Parameter-Deklaration in DB-Prozeduren
DEU|021102 | 3| | DB-Prozeduren k÷nnen auch aus Precompiler-Programmen aufgerufen werden.
DEU|021102 | 4| | Da deren Programmiersprachen einem anderen Typ-Konzept unterliegen als
DEU|021102 | 5| | SQL-PL, ist es erforderlich, die Parameter der Mainprocedure nach Modus
DEU|021102 | 6| | und Datentyp zu deklarieren.
DEU|021102 | 8| | Modus ist
DEU|021102 | 10| | - IN (Eingabeparameter)
DEU|021102 | 12| | - OUT (Ausgabeparameter)
DEU|021102 | 14| | - INOUT (Ein-/Ausgabeparameter)
DEU|021102 | 16| | Der Typ ist Σquivalent zu den SQL-Datentypen von ADABAS :
DEU|021102 | 17|S | FIXED, FLOAT, CHAR (BYTE/DBYTE), TIME, DATE.
DEU|021102 | 19| | Ein Parameter vom Typ LONG kann nicht deklariert werden. NOT NULL,
DEU|021102 | 20| | Default-Werte sowie CHECK-Bedingungen werden ebenfalls nicht
DEU|021102 | 21| | unterstⁿtzt.
DEU|021102 | 23| | Diese Deklarationen sind nur fⁿr die ▄bergabe der Parameter von
DEU|021102 | 24| | Bedeutung, innnerhalb der DB-Prozedur k÷nnen die Parametervariablen
DEU|021102 | 25| | jeden beliebigen Typ annehmen.
DEU|021102 | 27| | Beispiel :
DEU|021102 | 29| | DBPROC hotel.buchung (
DEU|021102 | 30| | IN @kundenname CHAR(40),
DEU|021102 | 31| | IN @tag DATE,
DEU|021102 | 32| | OUT @hotel CHAR(20),
DEU|021102 | 33| | OUT @kosten FIXED(6,2) );
DEU|021102 | 35|RI| ##0203040110->^Syntax
DEU|021103 | 1| | Nicht zugelassen in DB-Prozeduren und Triggern sind
DEU|021103 | 4| | Ausgaben auf den Bildschirm, den Drucker oder eine Betriebssystemdatei :
DEU|021103 | 5| | WRITE, READ
DEU|021103 | 6| | CALL FORM, EDIT, REPORT, QUERY
DEU|021103 | 7| | WRITEFILE, READFILE, OPEN, CLOSE
DEU|021103 | 8| | Option MODULETRACE, SQLTRACE
DEU|021103 | 10| | Wechsel des laufenden Programms
DEU|021103 | 11| | SWITCH, SWITCHCALL
DEU|021103 | 13| | Erweiterte SQL-Schnittstelle :
DEU|021103 | 14| | dynamisches SQL
DEU|021103 | 15| | Multi-DB-Betrieb
DEU|021103 | 17|S | Ausfⁿhren von DB-Prozeduren :
DEU|021103 | 19| | CALL DBPROC
DEU|021103 | 20| | SQL ( DBPROCEDURE ... )
DEU|021103 | 21| | Der Aufruf der entsprechenden SQL-PL Routine ist dagegen mittels der
DEU|021103 | 22| | CALL-PROC-Anweisung m÷glich.
DEU|021103 | 24| | Beenden einer Transaktion :
DEU|021103 | 25| | SQL ( COMMIT ); SQL ( ROLLBACK )
DEU|021103 | 26|R | Subtransaktionen sind zulΣssig.
DEU|021104 | 1| | Aufruf von DB-Prozeduren
DEU|021104 | 3| | Aufruf aus SQL-PL :
DEU|021104 | 5| I| ##02030115CALL^DBPROC -Anweisung
DEU|021104 | 8| | Aufruf aus Precompiler-Programmen :
DEU|021104 | 10| | EXEC SQL ( DBPROCEDURE owner.appl.module ( :var1, :var2, ... ) )
DEU|021104 | 12|R | NΣheres siehe Precompiler-Dokumentation.
DEU|021105 | 1| | Parameter-Deklarationen in Triggern
DEU|021105 | 3| | Die Parameter eines Triggers mⁿssen wie die einer DB-Prozedur nach
DEU|021105 | 4| I| ##021102Modus und ##021102Typ deklariert werden. Die Namen der Parameter sind nicht
DEU|021105 | 5| | frei wΣhlbar, sondern mⁿssen den Spaltennamen der Tabelle entsprechen,
DEU|021105 | 6| | fⁿr die der Trigger definiert werden soll. ZusΣtzlich ist es m÷glich,
DEU|021105 | 7| | mit den PrΣfixen "NEW." und "OLD." auf den neuen ( INSERT, UPDATE )
DEU|021105 | 8| | bzw. den alten Wert ( DELETE, UPDATE ) der Spalte zuzugreifen.
DEU|021105 | 9| | Beispiel :
DEU|021105 | 11| |
DEU|021105 | 12| E| TRIGGER Katalog.Preis_Aenderung (
DEU|021105 | 13| E| IN OLD.price FIXED ( 10, 3 ),
DEU|021105 | 14| E| IN NEW.price FIXED ( 10, 3 ) );
DEU|021105 | 16| E| IF NEW.price > ( OLD.price * 1.1 )
DEU|021105 | 17|SE| THEN
DEU|021105 | 19| E| STOP ( -999, 'Preiserh÷hung nur bis 10 % zugelassen' );
DEU|021105 | 20|RE| E$}