home *** CD-ROM | disk | FTP | other *** search
/ PC Treasures, Inc. / pctreasures.mdf / WINDOWS / adabas / f_0001 / env / sqlpl.deh < prev    next >
Text File  |  1999-11-01  |  178KB  |  2,418 lines

  1. DEU|02          |     0     SQLPL.deh   10.05.01   1998-04-24
  2. DEU|02          |     1|  |                      INFO - Angebot von  SQL-PL
  3. DEU|02          |     2|  |                      --------------------------
  4. DEU|02          |     4| I|                      ##11Werkbank
  5. DEU|02          |     5| I|                      ##04Editor
  6. DEU|02          |     6| I|                      ##0203SQL-PL -Sprache
  7. DEU|02          |     7| I|                      ##05FORM -Masken
  8. DEU|02          |     8| I|                      ##09SQL -Anweisungen
  9. DEU|02          |     9| I|                      ##08REPORT -Anweisungen
  10. DEU|02          |    10| I|                      ##0208Restriktionen
  11. DEU|02          |    11| I|                      ##0209Debugger
  12. DEU|02          |    12| I|                      ##0211DB-Prozeduren
  13. DEU|02          |    14|RI|                      ##0404Hilfe zur Hilfe
  14. DEU|0203        |     1|  |                      SQL-PL Sprache
  15. DEU|0203        |     2|  |                      ---------------
  16. DEU|0203        |     4| M|                      Einfⁿhrendes #00Beispiel
  17. DEU|0203        |     5| M|                      #01Anweisungen
  18. DEU|0203        |     6| I|                      ##0207SQL-PL Funktionen
  19. DEU|0203        |     7| M|                      #03Standardfunktionen
  20. DEU|0203        |     8| M|                      #04Syntaxbeschreibung
  21. DEU|0203        |     9|RM|                      #05Optionen und #05Testhilfen
  22. DEU|020300      |     1|  |
  23. DEU|020300      |     2| E|    PROC kunde.konto PARM ( @knr );
  24. DEU|020300      |     3| E|    /* Programm KUNDE - Modul KONTO
  25. DEU|020300      |     4| E|    /* Ermittelt den Kontostand eines Kunden aus der Datenbank
  26. DEU|020300      |     6| E|    WRITE  CLEAR, '--- Kontostand ---';
  27. DEU|020300      |     7| E|    REPEAT WRITE  NL(2), 'Kunden-Nr.: ';
  28. DEU|020300      |     8| E|           READ  @knr;
  29. DEU|020300      |     9| E|           IF  @knr IS NULL  THEN RETURN;                /* Endebedingung
  30. DEU|020300      |    10| E|           SQL ( SELECT DIRECT kontostand
  31. DEU|020300      |    11| E|                 INTO   :kstand                          /* Kontostand des
  32. DEU|020300      |    12| E|                 FROM   kunde                            /* Kunden in der
  33. DEU|020300      |    13| E|                 WHERE  KEY knr = :@knr );               /* DB suchen
  34. DEU|020300      |    14| E|           CASE  $RC  OF
  35. DEU|020300      |    15| E|           0    : WRITE 'Kontostand :' , HI (kstand);    /* Kunde bekannt
  36. DEU|020300      |    16| E|           100  : WRITE HI('Kunde nicht gefunden');      /* Kunde unbekannt
  37. DEU|020300      |    17|SE|           END;
  38. DEU|020300      |    19| E|    UNTIL $RC NOT IN (0,100);
  39. DEU|020300      |    20| E|    WRITE NL,'Bitte rufen Sie ihren EDV-Betreuer an';    /* Fehlerfall
  40. DEU|020300      |    21|R |
  41. DEU|020301      |     1|  |                            Anweisungen
  42. DEU|020301      |     2|  |                            -----------
  43. DEU|020301      |     4| I|    ##02030201Variablen/Vektoren/Wertzuweisungen       ##02030107CALL-FORM -Anweisung
  44. DEU|020301      |     5| I|    ##02030106CALL-PROC -Anweisung                     ##02030104CASE -Anweisung
  45. DEU|020301      |     6| I|    ##02030207EDIT -Anweisung                          ##02030212EXEC -Anweisung
  46. DEU|020301      |     7| I|    ##02030112FOR -Anweisung                           ##02030103IF -Anweisung
  47. DEU|020301      |     8| I|    ##02030209LTSORT/GTSORT -Anweisung                 ##02030205QUERY -Auruf
  48. DEU|020301      |     9| I|    ##02030203READ -Anweisung                          ##02030101REPEAT -Anweisung
  49. DEU|020301      |    10| I|    ##02030105RETURN -Anweisung                        ##02030210SET -Anweisung
  50. DEU|020301      |    11| I|    ##02030109SKIP -Anweisung                          ##02030204SQL Einbettung
  51. DEU|020301      |    12| I|    ##02030111STOP -Anweisung                          ##02030108SWITCH -Anweisung
  52. DEU|020301      |    13| I|    ##02030114SWITCHCALL -Anweisung                    ##02030211Systemzeit
  53. DEU|020301      |    14| I|    ##02030116TRY-CATCH -Anweisung                     ##02030102WHILE -Anweisung
  54. DEU|020301      |    15| I|    ##02030202WRITE -Anweisung                         Bearbeiten von ##02030206Dateien
  55. DEU|020301      |    16| I|    ##02030113Funktionsaufrufe                         ##02030110Bedingungen
  56. DEU|020301      |    17|SM|    Aufruf von #15DB-Prozeduren
  57. DEU|020301      |    19|RI|                                                          ##0203040202->^Syntax
  58. DEU|02030101    |     1|  |    Die   REPEAT-Anweisung   dient   zur   Wiederholung   einer  Folge  von
  59. DEU|02030101    |     2|  |    Anweisungen. Die Wiederholung wird bei Erfⁿllung  der  Abbruchbedingung
  60. DEU|02030101    |     3|  |    beendet.  Die  Bedingung  wird   n a c h  Abarbeitung der Anweisung(en)
  61. DEU|02030101    |     4|  |    geprⁿft.
  62. DEU|02030101    |     6|  |    Beispiel :
  63. DEU|02030101    |     8|  |
  64. DEU|02030101    |     9| E|      i := 1;
  65. DEU|02030101    |    10| E|      REPEAT
  66. DEU|02030101    |    11| E|        i := i + 1;
  67. DEU|02030101    |    12| E|        WRITE 'i = ', i;
  68. DEU|02030101    |    13| E|      UNTIL i = 10;
  69. DEU|02030101    |    14|  |
  70. DEU|02030101    |    16|RI|                                                          ##0203040209->^Syntax
  71. DEU|02030102    |     1|  |    Die WHILE-Anweisung dient zur Wiederholung einer Folge von Anweisungen.
  72. DEU|02030102    |     2|  |    Die Wiederholung wird bei Erfⁿllung der Abbruchbedingung  beendet.  Die
  73. DEU|02030102    |     3|  |    Bedingung wird  v o r  Abarbeitung der Anweisung(en) geprⁿft.
  74. DEU|02030102    |     5|  |    Beispiel :
  75. DEU|02030102    |     7|  |
  76. DEU|02030102    |     8| E|      i := 1;
  77. DEU|02030102    |     9| E|      WHILE i < 10
  78. DEU|02030102    |    10| E|      DO BEGIN
  79. DEU|02030102    |    11| E|         i := i + 1;
  80. DEU|02030102    |    12| E|         WRITE 'i = ', i;
  81. DEU|02030102    |    13| E|         END;
  82. DEU|02030102    |    14|  |
  83. DEU|02030102    |    16|RI|                                                          ##0203040210->^Syntax
  84. DEU|02030103    |     1|  |    Die  IF-Anweisung  dient zur Ausfⁿhrung von Anweisungen in AbhΣngigkeit
  85. DEU|02030103    |     2|  |    von einer Bedingung. Wenn die  Bedingung  erfⁿllt  ist,  wird  die  An-
  86. DEU|02030103    |     3|  |    weisung(sfolge) des THEN-Zweiges ausgefⁿhrt, anderenfalls die des ELSE-
  87. DEU|02030103    |     4|  |    Zweiges (falls vorhanden).
  88. DEU|02030103    |     6|  |    Beispiele :
  89. DEU|02030103    |     8|  |
  90. DEU|02030103    |     9| E|      IF   (i > j) OR (i = j)
  91. DEU|02030103    |    10| E|      THEN BEGIN
  92. DEU|02030103    |    11| E|           WRITE 'i ist gr÷▀er als oder gleich j'; ...
  93. DEU|02030103    |    12| E|           END
  94. DEU|02030103    |    13| E|      ELSE WRITE 'i ist kleiner als j';
  95. DEU|02030103    |    14| E|      IF   name = 'KARL'
  96. DEU|02030103    |    15| E|      THEN WRITE 'NAME <> '"karl"';
  97. DEU|02030103    |    16|S |
  98. DEU|02030103    |    19|  |    Im Zweifelsfall geh÷rt ELSE zum letzten IF.
  99. DEU|02030103    |    21|RI|                                                          ##0203040206->^Syntax
  100. DEU|02030104    |     1|  |    Die CASE-Anweisung dient zur Ausfⁿhrung von Anweisungen in AbhΣngigkeit
  101. DEU|02030104    |     2|  |    vom  Wert eines Ausdrucks. Es wird die Anweisung(sfolge) ausgefⁿhrt, in
  102. DEU|02030104    |     3|  |    deren Werteliste der Wert des Ausdrucks auftritt. Tritt dieser Wert  in
  103. DEU|02030104    |     4|  |    keiner  Werteliste  auf,  wird  der  OTHERWISE-Fall  (falls  vorhanden)
  104. DEU|02030104    |     5|  |    ausgefⁿhrt.
  105. DEU|02030104    |     7|  |    Beispiele :
  106. DEU|02030104    |     9|  |
  107. DEU|02030104    |    10| E|      CASE i OF                           CASE UPPER (s) OF
  108. DEU|02030104    |    11| E|      1..3  : WRITE 'i in (1,2,3)';       'EINS', 'ZWEI' : BEGIN ... END;
  109. DEU|02030104    |    12| E|      4,5,6 : BEGIN                       'DREI'         : ... ;
  110. DEU|02030104    |    13| E|              WRITE 'i in (4,5,6)'; ...   'VIER'         : ... ;
  111. DEU|02030104    |    14| E|              END;                        OTHERWISE      : BEGIN ... END;
  112. DEU|02030104    |    15| E|      END;                                END;
  113. DEU|02030104    |    16|S |
  114. DEU|02030104    |    19|RI|                                                          ##0203040207->^Syntax
  115. DEU|02030105    |     1|  |    Die RETURN-Anweisung beendet die Ausfⁿhrung eines SQL-PL Unterprogramms
  116. DEU|02030105    |     2|  |    und verzweigt in die aufrufende Umgebung.  Die  RETURN-Anweisung  steht
  117. DEU|02030105    |     3|  |    implizit am Ende jeder SQL-PL Routine.
  118. DEU|02030105    |     5|  |    Beispiel :
  119. DEU|02030105    |     6|  |
  120. DEU|02030105    |     7| E|      IF $KEY = 'F3'
  121. DEU|02030105    |     8| E|      THEN RETURN;
  122. DEU|02030105    |     9|  |
  123. DEU|02030105    |    11| I|    In  ##0207SQL-PL  Funktionen  kann dem RETURN ein Wert mitgegeben werden, der
  124. DEU|02030105    |    12|  |    als Ergebnis der Funktion geliefert wird.
  125. DEU|02030105    |    14|  |    Beispiel :
  126. DEU|02030105    |    15|  |
  127. DEU|02030105    |    16| E|      FUNCTION stdlib.plus (@summe,@summand)
  128. DEU|02030105    |    17|SE|      RETURN (@summe + @summand);
  129. DEU|02030105    |    19|  |
  130. DEU|02030105    |    21|RI|                                                          ##0203040213->^Syntax
  131. DEU|02030106    |     1|  |    Mit der CALL-PROC-Anweisung kann zu SQL-PL Routinen verzweigt werden.
  132. DEU|02030106    |     3|  |    Beispiel :
  133. DEU|02030106    |     5|  |
  134. DEU|02030106    |     6| E|      CALL PROC verarbeitung;
  135. DEU|02030106    |     7|  |
  136. DEU|02030106    |     9|  |    Nach der Abarbeitung der aufgerufenen Routine wird die  Ausfⁿhrung  der
  137. DEU|02030106    |    10|  |    aufrufenden  Routine  fortgesetzt.  Ist  die  aufgerufene Routine nicht
  138. DEU|02030106    |    11|  |    vorhanden, wird das  Programm  abgebrochen.  Beim  Aufruf  der  Routine
  139. DEU|02030106    |    12|  |    k÷nnen  aktuelle Parameter angegeben werden. Die Werte dieser Parameter
  140. DEU|02030106    |    13|  |    werden den formalen Parametern der aufgerufenen Routine zugewiesen.
  141. DEU|02030106    |    15|  |    Beispiel :
  142. DEU|02030106    |    17|S |      Definition : PROC kunde.buchung PARMS (@knr, @datum, @zaehler);
  143. DEU|02030106    |    19|  |      Aufruf     : CALL PROC buchung PARMS (knr, DATE(yymmdd), zaehler+1);
  144. DEU|02030106    |    21|RI|                                                          ##0203040216->^Syntax
  145. DEU|02030107    |     1|  |    Mit der CALL-FORM-Anweisung kann zu FORM-Routinen verzweigt werden.
  146. DEU|02030107    |     3|  |    Beispiel :
  147. DEU|02030107    |     5|  |
  148. DEU|02030107    |     6| E|      CALL FORM  haupt_menue;
  149. DEU|02030107    |     7|  |
  150. DEU|02030107    |     9|  |    Nach der Abarbeitung der aufgerufenen Routine wird die  Ausfⁿhrung  der
  151. DEU|02030107    |    10|  |    aufrufenden Routine fortgesetzt.
  152. DEU|02030107    |    12|  |    Wenn  eine  Maske  aufgerufen wird, die eine Benutzerreaktion erwartet,
  153. DEU|02030107    |    13|  |    wird implizit die laufende Datenbank-Transaktion abgeschlossen; es  sei
  154. DEU|02030107    |    14|  |    denn,  der Aufruf erfolgte aus einer SQL-PL Routine heraus, die mit der
  155. DEU|02030107    |    15|  |    Option AUTOCOMMIT OFF ⁿbersetzt wurde.
  156. DEU|02030107    |    17|S |    Ist die Maske nicht vorhanden, wird das Programm abgebrochen.  Aktuelle
  157. DEU|02030107    |    19|  |    Parameter k÷nnen wie bei CALL PROC angegeben werden.
  158. DEU|02030107    |    22|  |
  159. DEU|02030107    |    24|  |    Beim  Aufruf  von  FORM-Masken  ist  durch  die  Angabe einer Reihe von
  160. DEU|02030107    |    25|  |    Optionen die Beeinflussung der Maskenverarbeitung m÷glich.
  161. DEU|02030107    |    27|  |    Beispiele :
  162. DEU|02030107    |    29|  |
  163. DEU|02030107    |    30| E|      CALL FORM maske1 OPTIONS (NOINIT, ACCEPT (F1,F3,ENTER), MARK (3));
  164. DEU|02030107    |    31| E|      CALL FORM maske3 OPTIONS ( PRINT (LINEFEED 2, NEWPAGE), NOINIT);
  165. DEU|02030107    |    32| E|      CALL FORM maske4 ( PRINT ('X',LINEFEED 2)) PARMS (knr, DATE(yymmdd));
  166. DEU|02030107    |    33|  |
  167. DEU|02030107    |    35|SI|    ##0506Weitere^Informationen^ zu den Aufruf-Optionen.
  168. DEU|02030107    |    37|RI|                                                          ##0203040217->^Syntax
  169. DEU|02030108    |     1|  |    Die SWITCH-Anweisung beendet die Ausfⁿhrung eines  Programms  und  ver-
  170. DEU|02030108    |     2|  |    zweigt zu einem Folgeprogramm.
  171. DEU|02030108    |     4|  |    Beispiele :
  172. DEU|02030108    |     6|  |
  173. DEU|02030108    |     7| E|      SWITCH kunde CALL PROC verarbeitung;
  174. DEU|02030108    |     8| E|      SWITCH produkt.kunde CALL FORM haupt_menue;
  175. DEU|02030108    |     9|  |
  176. DEU|02030108    |    11|  |    Dadurch  lassen  sich  gr÷▀ere  Programme  aus  mehreren kleinen zusam-
  177. DEU|02030108    |    12|  |    mensetzen. Die Angabe  von  Optionen  ist  entsprechend  zu  CALL  FORM
  178. DEU|02030108    |    13|  |    m÷glich; aktⁿlle Parameter werden wie bei CALL angegeben.
  179. DEU|02030108    |    15|RI|                                                          ##0203040218->^Syntax
  180. DEU|02030109    |     1|  |    Die  SKIP-Anweisung verzweigt unbedingt zur angegebenen Marke. Mit SKIP
  181. DEU|02030109    |     2|  |    kann nur in Richtung Routinenende gesprungen werden, d. h.,  es  k÷nnen
  182. DEU|02030109    |     3|  |    keine Schleifen programmiert werden.
  183. DEU|02030109    |     5|  |    Beispiel :
  184. DEU|02030109    |     7|  |
  185. DEU|02030109    |     8| E|      PROC x.y
  186. DEU|02030109    |     9| E|      ...
  187. DEU|02030109    |    10| E|      IF   $RC <> 0 THEN SKIP fehler;
  188. DEU|02030109    |    11| E|      ...
  189. DEU|02030109    |    12| E|      fehler : WRITE 'Fehler (' & $RC & ')'; RETURN;
  190. DEU|02030109    |    13|  |
  191. DEU|02030109    |    15|  |    Sprungmarken  sind  nur  au▀erhalb  von Kontrollstrukturen zugelassen.
  192. DEU|02030109    |    17|RI|                                                          ##0203040212->^Syntax
  193. DEU|02030110    |     1|  |    In  SQL-PL  k÷nnen  in  IF-,  REPEAT- und WHILE-Anweisungen Bedingungen
  194. DEU|02030110    |     2|  |    formuliert werden.
  195. DEU|02030110    |     4| M|    Logische PrΣdikate : #01AND^OR^NOT
  196. DEU|02030110    |     6| M|    Vergleichs-PrΣdikate : #02=^<>^<^>^<=^>=^IN^BETWEEN^LIKE^EOF
  197. DEU|02030110    |     8| M|    Typ-PrΣdikate : #03ALPHA^NUMERIC^FIXED^DATE^TIME^NULL^MODIFIED
  198. DEU|02030110    |    10| M|    Vektor-PrΣdikate : #04ALL^EACH^ANY^SOME^ONE
  199. DEU|02030110    |    12| M|    Trigger-PrΣdikate : #05FIRSTCALL^LASTCALL^INSERTING^UPDATING^DELETING
  200. DEU|02030110    |    14|  |    Beispiele :
  201. DEU|02030110    |    16|  |
  202. DEU|02030110    |    17|SE|      IF  pnr = 4711 AND name = 'Meier' THEN ...;
  203. DEU|02030110    |    19| E|      REPEAT ... UNTIL (name IS NULL) OR ($KEY = F3);
  204. DEU|02030110    |    21| E|      WHILE (name IS ALPHA) AND NOT (name IN ('Meier','Mⁿller')) DO ...;
  205. DEU|02030110    |    23| E|      IF (name LIKE 'T*') OR (name IN ('Meier','Mayer')) THEN ...;
  206. DEU|02030110    |    25| E|      IF nummer BETWEEN 1 AND 99 THEN ... ;
  207. DEU|02030110    |    27| E|      IF ALL list (1..5) IN ('0',NULL)
  208. DEU|02030110    |    29| E|      IF DELETING AND FIRSTCALL
  209. DEU|02030110    |    30|  |
  210. DEU|02030110    |    32|  |    Die Abarbeitung kann durch Klammerung gesteuert werden.
  211. DEU|02030110    |    34|RI|                                                          ##0203040146->^Syntax
  212. DEU|0203011001  |     1|  |    Logische PrΣdikate
  213. DEU|0203011001  |     3|  |    Der Ausdruck ist wahr, wenn
  214. DEU|0203011001  |     5|  |        AND : beide Operanden wahr sind.
  215. DEU|0203011001  |     7|  |        OR  : einer der beiden Operanden wahr ist.
  216. DEU|0203011001  |     9|  |        NOT : der Operand falsch ist.
  217. DEU|0203011001  |    11|RI|                                                          ##0203040160->^Syntax
  218. DEU|0203011002  |     1|  |    Vergleichs-PrΣdikate
  219. DEU|0203011002  |     3|  |    Der Ausdruck ist wahr, falls
  220. DEU|0203011002  |     5|  |        =       : die beiden Operanden gleich sind.
  221. DEU|0203011002  |     7|  |        <>      : die beiden Operanden ungleich sind.
  222. DEU|0203011002  |     9|  |        <       : der erste Operand kleiner als der zweite Operand ist.
  223. DEU|0203011002  |    11|  |        >       : der erste Operand gr÷▀er als der zweite Operand ist.
  224. DEU|0203011002  |    13|  |        <=      : der erste Operand kleiner oder gleich dem zweiten Operanden ist.
  225. DEU|0203011002  |    15|  |        >=      : der erste Operand gr÷▀er oder gleich dem zweiten Operanden ist.
  226. DEU|0203011002  |    17|SI|                                                          ##0203040161->^Syntax
  227. DEU|0203011002  |    19|  |        IN      : der erste Operand eine Element der angegebenen Liste ist.
  228. DEU|0203011002  |    20| I|                                                          ##0203040151->^Syntax
  229. DEU|0203011002  |    22|  |        BETWEEN : der erste Operand in dem angegebenen Intervall liegt.
  230. DEU|0203011002  |    23| I|                                                          ##0203040154->^Syntax
  231. DEU|0203011002  |    25|  |        LIKE    : der erste dem angegebenen Muster entspricht
  232. DEU|0203011002  |    26| I|                                                          ##0203040155->^Syntax
  233. DEU|0203011002  |    28|  |        EOF     : das Ende der angegebenen Datei erreicht wurde.
  234. DEU|0203011002  |    30|RI|                                                          ##0203040145->^Syntax
  235. DEU|0203011003  |     1|  |    Typ-PrΣdikate
  236. DEU|0203011003  |     3|  |    Der Ausdruck ist wahr, falss
  237. DEU|0203011003  |     5|  |        ALPHA    : der Operand in einen String umgewandelt werden kann.
  238. DEU|0203011003  |     7|  |        NUMERIC  : der Operand in einen numerischen Wert umgewandelt werden kann.
  239. DEU|0203011003  |     9|  |        FIXED    : der Operand in einen numerischen Wert mit der angegebenen
  240. DEU|0203011003  |    10|  |                   Genauigkeit umgewandelt werden kann.
  241. DEU|0203011003  |    12|  |        DATE     : der Operand im Datumsformat vorliegt.
  242. DEU|0203011003  |    14|  |        TIME     : der Operand im Zeitformat vorliegt.
  243. DEU|0203011003  |    16|S |        NULL     : der Operand undefiniert ist.
  244. DEU|0203011003  |    19|  |        MODIFIED : der Operand beim letzten Maskenaufruf verΣndert wurde.
  245. DEU|0203011003  |    23|RI|                                                          ##0203040150->^Syntax
  246. DEU|0203011004  |     1|  |    Vektor-PrΣdikate
  247. DEU|0203011004  |     3|  |    Der Ausdruck ist wahr, falls
  248. DEU|0203011004  |     5|  |        ALL, EACH  : jedes Vektor-Element die Bedingung erfⁿllt.
  249. DEU|0203011004  |     7|  |        ANY, SOME  : mindestens ein Vektor-Element die Bedingung erfⁿllt.
  250. DEU|0203011004  |     9|  |        ONE        : genau ein Vektor-Element die Bedingung erfⁿllt.
  251. DEU|0203011004  |    11|RI|                                                          ##0203040145->^Syntax
  252. DEU|0203011005  |     1|  |    Trigger-PrΣdikate
  253. DEU|0203011005  |     3|  |    Diese PrΣdikate sind nur innerhalb eines Triggers sinnvoll zu verwenden,
  254. DEU|0203011005  |     4|  |    in jedem anderen Fall sind sie unwahr.
  255. DEU|0203011005  |     6|  |    Der Ausdruck ist wahr, falls
  256. DEU|0203011005  |     8|  |        FIRSTCALL : der Trigger durch einen Einzelsatzbefehl oder den
  257. DEU|0203011005  |     9|  |                    ersten Satz eines Mengenbefehls aufgerufen wurde.
  258. DEU|0203011005  |    11|  |        LASTCALL  : der Trigger durch einen Einzelsatzbefehl oder den
  259. DEU|0203011005  |    12|  |                    letzten Satz eines Mengenbefehls aufgerufen wurde.
  260. DEU|0203011005  |    14|  |        INSERTING, UPDATING, DELETING : der Trigger durch ein
  261. DEU|0203011005  |    15|S |                    entsprechendes SQL-Kommando aufgerufen wurde.
  262. DEU|0203011005  |    19|RI|                                                          ##0203040116->^Syntax
  263. DEU|02030111    |     1|  |    Die STOP-Anweisung beendet die Ausfⁿhrung eines SQL-PL Programms. Wurde
  264. DEU|02030111    |     2|  |    das Programm ohne den  Weg  ⁿber  die  Werkbank  aufgerufen,  kann  der
  265. DEU|02030111    |     3|  |    aufrufenden  Betriebssystemumgebung  ein  Returncode und ein Returntext
  266. DEU|02030111    |     4|  |    ⁿbergeben werden.
  267. DEU|02030111    |     5|  |    Der Returncode darf nur Werte aus dem Intervall 0..127  annehmen,  ggf.
  268. DEU|02030111    |     6|  |    wird der Returncode implizit auf dieses Intervall abgebildet.
  269. DEU|02030111    |     8|  |    Beispiele:
  270. DEU|02030111    |    10|  |
  271. DEU|02030111    |    11| E|      IF   $RC < 0                   STOP ($COUNT);
  272. DEU|02030111    |    12| E|      THEN STOP ($RC, $RT);          STOP;
  273. DEU|02030111    |    13|  |
  274. DEU|02030111    |    15|RI|                                                          ##0203040214->^Syntax
  275. DEU|02030112    |     1|  |    Die  FOR-Anweisung  dient zur Wiederholung einer Folge von Anweisungen.
  276. DEU|02030112    |     2|  |    Die Anzahl der Wiederholungen wird  v o r  dem  ersten  Schleifendurch-
  277. DEU|02030112    |     3|  |    lauf   aus  den  Angaben  fⁿr  Ober-  und  Untergrenze  ermittelt.  Die
  278. DEU|02030112    |     4|  |    Schleifenvariable wird bei jedem Durchlauf um 1 erh÷ht bzw. vermindert.
  279. DEU|02030112    |     6|  |    Beispiele :
  280. DEU|02030112    |     8|  |
  281. DEU|02030112    |     9| E|      FOR i := 1 TO 5 DO
  282. DEU|02030112    |    10| E|          WRITE 'I =', i;
  283. DEU|02030112    |    11| E|      FOR i := LENGTH (string) DOWNTO 1 DO
  284. DEU|02030112    |    12| E|          BEGIN
  285. DEU|02030112    |    13| E|          WRITE NL, SUBSTR (string, i, 1);
  286. DEU|02030112    |    14| E|          END;
  287. DEU|02030112    |    15|  |
  288. DEU|02030112    |    17|RI|                                                          ##0203040211->^Syntax
  289. DEU|02030113    |     1|  |    Aufruf von Funktionen
  290. DEU|02030113    |     3|  |    Der Aufruf einer SQL-PL Funktion  wird  durch  das  Prozentzeichen  (%)
  291. DEU|02030113    |     4|  |    eingeleitet.
  292. DEU|02030113    |     6|  |    Funktionsaufrufe  k÷nnen  in Ausdrucken verwendet werden, aber auch als
  293. DEU|02030113    |     7|  |    eigenstΣndige Anweisungen auftreten.
  294. DEU|02030113    |     9|  |    Beispiele :
  295. DEU|02030113    |    11|  |
  296. DEU|02030113    |    12| E|      summe := %summe (a, b, c, d, e);
  297. DEU|02030113    |    13| E|      %liste ('Kundenliste');
  298. DEU|02030113    |    14|  |
  299. DEU|02030113    |    16|  |    Bei der Verwendung in Ausdrⁿcken mu▀ in der Funktion durch die  RETURN-
  300. DEU|02030113    |    17|SI|    Anweisung ein Wert zurⁿckgegeben werden ( --> ##0207SQL-PL Funktionen ).
  301. DEU|02030113    |    19|RI|                                                          ##0203040141->^Syntax
  302. DEU|02030114    |     1|  |    Die  SWITCHCALL-Anweisung  verzweigt  zu  einem  anderen Programm. Nach
  303. DEU|02030114    |     2|  |    Beendigung dieses Programms wird die Bearbeitung nach  der  SWITCHCALL-
  304. DEU|02030114    |     3|  |    Anweisung fortgesetzt. Alle Variablen behalten ihre zugewiesenen Werte.
  305. DEU|02030114    |     5|  |    Beispiele :
  306. DEU|02030114    |     7|  |
  307. DEU|02030114    |     8| E|      SWITCHCALL db_io CALL PROC insert_kunde (knr, kname, rc);
  308. DEU|02030114    |     9| E|      SWITCHCALL global.info CALL FORM start;
  309. DEU|02030114    |    10|  |
  310. DEU|02030114    |    12|  |    Dadurch  lassen  sich Standardprogramme zusammenstellen, die in anderen
  311. DEU|02030114    |    13|  |    Programmen benutzt werden k÷nnen.
  312. DEU|02030114    |    14|  |    Die Angabe von Optionen ist entsprechend zu CALL FORM m÷glich; aktuelle
  313. DEU|02030114    |    15|  |    Parameter werden wie bei CALL angegeben.
  314. DEU|02030114    |    17|RI|                                                          ##0203040219->^Syntax
  315. DEU|02030115    |     1|  |        Aufruf von DB-Prozeduren
  316. DEU|02030115    |     3|  |    Mit der CALL DBPROC-Anweisung kann eine DB-Prozedur aufgerufen werden.
  317. DEU|02030115    |     5|  |    Beispiel :
  318. DEU|02030115    |     7|  |
  319. DEU|02030115    |     8| E|      CALL DBPROC hotel.buchung ( @kunde, @datum, @hotelname, @summe );
  320. DEU|02030115    |    10| E|      CALL DBPROC autor.hotel.buchung ( @kunde, @datum, @hotelname, @summe )
  321. DEU|02030115    |    11| E|        WITH COMMIT;
  322. DEU|02030115    |    12|  |
  323. DEU|02030115    |    14|  |    Nach dem Aufruf sind $RC und $RT belegt.  Falls  die  DB-Prozedur  ohne
  324. DEU|02030115    |    15|  |    Fehler beendet wurde, enthalten die Ausgabevariablen neue Werte.
  325. DEU|02030115    |    17|S |    Falls  WITH  COMMIT  angegeben wurde, wird eine erfolgreiche Ausfⁿhrung
  326. DEU|02030115    |    19|  |    mit  einem  impliziten  COMMIT  WORK  abgeschlossen  (  ein  implizites
  327. DEU|02030115    |    20|  |    ROLLBACK WORK im Fall des Scheiterns erfolgt nicht ).
  328. DEU|02030115    |    22|RI|                                                          ##0203040225->^Syntax
  329. DEU|02030116    |     1|  |    Abfangen von Laufzeitfehlern
  330. DEU|02030116    |     3|  |    Mit  Hilfe  der  TRY-CATCH-Anweisung  kann  auf Laufzeitfehler reagiert
  331. DEU|02030116    |     4|  |    werden, ohne da▀ das laufende Programm abgebrochen wird.
  332. DEU|02030116    |     6|  |    Tritt innerhalb der TRY-Anweisung ein Laufzeitfehler  oder  eine  STOP-
  333. DEU|02030116    |     7|  |    Anweisung  auf,  so  wird  mit  der  entsprechenden Fehlernummer in die
  334. DEU|02030116    |     8|  |    CATCH-Anweisung  verzweigt.  Entspricht  einer   der   Selektoren   der
  335. DEU|02030116    |     9|  |    Fehlernummer,  so  wird  die entsprechende Anweisung ausgefⁿhrt und die
  336. DEU|02030116    |    10|  |    Programmausfⁿhrung nach der  CATCH-Anweisung  fortgesetzt.  Andernfalls
  337. DEU|02030116    |    11|  |    bleibt  der  Fehler  gesetzt und das Programm wird abgebrochen ( sofern
  338. DEU|02030116    |    12|  |    der Fehler nicht in einer ⁿbergeordneten TRY-CATCH-Anweisung abgefangen
  339. DEU|02030116    |    13|  |    wird. Die Selektoren  k÷nnen  wie  in  einer  CASE-Anweisung  angegeben
  340. DEU|02030116    |    14|  |    werden, ein OTHERWISE-Zweig ist nicht m÷glich.
  341. DEU|02030116    |    16|S |    Beispiel :
  342. DEU|02030116    |    19|  |
  343. DEU|02030116    |    20| E|      TRY
  344. DEU|02030116    |    21| E|          BEGIN
  345. DEU|02030116    |    22| E|          CALL PROC do_command;
  346. DEU|02030116    |    23| E|          END
  347. DEU|02030116    |    24| E|      CATCH @errno OF
  348. DEU|02030116    |    25| E|      16102 : ERROR := 'Fⁿr diesen Befehl steht nicht genⁿgend '
  349. DEU|02030116    |    26| E|          & 'Speicher zu Verfⁿgung';
  350. DEU|02030116    |    27| E|      16801 : ERROR := 'Kommando abgebrochen';
  351. DEU|02030116    |    28| E|      END;
  352. DEU|02030116    |    29|  |
  353. DEU|02030116    |    32|RI|                                                          ##0203040240->^Syntax
  354. DEU|02030201    |     1|  |    SQL-PL  unterscheidet zwischen einfachen Variablen und Vektorvariablen.
  355. DEU|02030201    |     2|  |    Vektorvariablen sind eine Zusammenfassung von einfachen Variablen;  sie
  356. DEU|02030201    |     3|  |    k÷nnen maximal aus 255 Einzelkomponenten bestehen.
  357. DEU|02030201    |     5|  |    Der  Gⁿltigkeitsbereich  von  Variablen kann eingeschrΣnkt werden. Dazu
  358. DEU|02030201    |     6|  |    gibt es globale, lokal-dynamische und lokal-statische Variablen.
  359. DEU|02030201    |     8|  |    Globale Variablen sind innerhalb eines Programms ⁿberall  bekannt,  und
  360. DEU|02030201    |     9|  |    es k÷nnen ihnen ⁿberall Werte zugewiesen werden.
  361. DEU|02030201    |    11|  |    Lokal-dynamische Variablen sind nur innerhalb eines Moduls bekannt, und
  362. DEU|02030201    |    12|  |    nach dem Rⁿcksprung in die aufrufende Umgebung werden sie gel÷scht. Bei
  363. DEU|02030201    |    13|  |    rekursivem  Aufruf  des  Moduls  wird jedesmal eine neue AusprΣgung der
  364. DEU|02030201    |    14|S |    Variablen erzeugt !
  365. DEU|02030201    |    19|  |
  366. DEU|02030201    |    21|  |    Lokal-statische Variablen sind ebenfalls nur in dem  Modul  zugreifbar,
  367. DEU|02030201    |    22|  |    in  dem  sie angelegt werden. Im Gegensatz zu den dynamischen Variablen
  368. DEU|02030201    |    23|  |    behalten sie den zugewiesenen Wert, auch wenn zwischenzeitlich  in  die
  369. DEU|02030201    |    24|  |    Aufrufumgebung  zurⁿckverzweigt wird. Erst beim Verlassen des Programms
  370. DEU|02030201    |    25|  |    verlieren sie ihren Wert. Bei rekursivem Aufruf des Moduls  kann  immer
  371. DEU|02030201    |    26|  |    mit derselben (!) Variablen gearbeitet werden.
  372. DEU|02030201    |    28|  |    Achtung : Lokal-statische Variablen, die in SQL-PL Funktionen einge-
  373. DEU|02030201    |    29|  |              richtet werden, behalten ihren Wert auch ⁿber Programm-
  374. DEU|02030201    |    30|S |              wechsel hinweg bei.
  375. DEU|02030201    |    37|  |    In einer  Wertzuweisung  wird  einer  SQL-PL Variablen  der  Wert eines
  376. DEU|02030201    |    38|  |    Ausdrucks zugewiesen.
  377. DEU|02030201    |    40|  |    Beispiele :
  378. DEU|02030201    |    42|  |
  379. DEU|02030201    |    43| E|      name (i)           := nachname(i) & vorname(i); /* globale Vektoren
  380. DEU|02030201    |    44| E|      @name              := 'Meier';        /* lokale dynamische Variable
  381. DEU|02030201    |    45| E|      @@name (1..10)     := NULL;           /* lokale statische  Variable
  382. DEU|02030201    |    46| E|      konto_neu (1..anz) := konto_alt (1..anz);
  383. DEU|02030201    |    47| E|      @i                 := @i + 1;
  384. DEU|02030201    |    48| E|      j                  := NULL;
  385. DEU|02030201    |    49| E|      uhrzeit            := TIME (hhmmss);
  386. DEU|02030201    |    50| E|      summe              := %sum (v1, v2, v3, v4);    /* Funktionsaufruf
  387. DEU|02030201    |    51|  |
  388. DEU|02030201    |    53|S |    Anm.:  Vor der ersten Wertzuweisung hat eine Variable implizit den
  389. DEU|02030201    |    55|  |          NULL-Wert.
  390. DEU|02030201    |    56|  |          SQL-PL Variablen geh÷ren keinem Typ an, d. h., einer Variablen
  391. DEU|02030201    |    57|  |          k÷nnen sowohl Zahlen als auch Zeichenketten zugewiesen werden.
  392. DEU|02030201    |    59| I|                                                          ##0203040203<assign^stmt>->^Syntax
  393. DEU|02030201    |    60|RI|                                                          ##0203040205<vector^assign^stmt>->^Syntax
  394. DEU|02030202    |     1|  |    Mit   der   WRITE-Anweisung   kann  -  im  Gegensatz  zu  CALL  FORM  -
  395. DEU|02030202    |     2|  |    zeilenorientiert auf den Bildschirm geschrieben werden.
  396. DEU|02030202    |     4|  |    Folgende Steueranweisungen k÷nnen benutzt werden :
  397. DEU|02030202    |     6|  |         NL            bewirkt einen Zeilenvorschub.
  398. DEU|02030202    |     7|  |         NL (n)        bewirkt n Zeilenvorschⁿbe.
  399. DEU|02030202    |     8|  |         COL (n)       bestimmt die Ausgabespalte.
  400. DEU|02030202    |     9|  |         HIGH          bewirkt, da▀ der nΣchste Wert hell ausgegeben wird.
  401. DEU|02030202    |    10|  |         HI (w, ...)   gibt mehrere Werte hell aus.
  402. DEU|02030202    |    11|  |         CLEAR         l÷scht den Bildschirm.
  403. DEU|02030202    |    12|  |         NOCLEAR       bewirkt, da▀ der Bildschirm nicht gel÷scht wird,
  404. DEU|02030202    |    13|  |                       wenn durch NL der Bildschirmrand erreicht wird.
  405. DEU|02030202    |    14|  |         POS (z, s)    legt die Bildschirmkoordinaten fⁿr die nΣchste
  406. DEU|02030202    |    15|  |                       Ausgabe fest.
  407. DEU|02030202    |    16|  |         SIZE (n)      bestimmt die LΣnge des nΣchsten Ausgabefeldes.
  408. DEU|02030202    |    17|S |         PAUSE         fordert eine Quittung (z. B. ENTER) vom Benutzer.
  409. DEU|02030202    |    19|  |         OPEN          bewirkt, da▀ alle folgenden WRITE-Ausgaben nicht
  410. DEU|02030202    |    20|  |                       am Bildschirm erscheinen
  411. DEU|02030202    |    21|  |                       (bis CLOSE oder PAUSE folgt).
  412. DEU|02030202    |    22|  |         CLOSE         l÷st die Bildschirmausgabe der angesammelten Daten
  413. DEU|02030202    |    23|  |                       aus.
  414. DEU|02030202    |    24|  |         HOLD          bewirkt, da▀ die BetΣtigung einer Ausl÷setaste
  415. DEU|02030202    |    25|  |                       verlangt wird, damit ein vollgeschriebener Bildschirm
  416. DEU|02030202    |    26|  |                       automatisch gel÷scht wird.
  417. DEU|02030202    |    28|RI|                                                          ##0203040248->^Syntax
  418. DEU|02030203    |     1|  |    Mit der READ-Anweisung k÷nnen Daten vom Bildschirm in SQL-PL  Variablen
  419. DEU|02030203    |     2|  |    eingelesen  werden.  Nach  jeder Eingabe mu▀ eine Ausl÷setaste gedrⁿckt
  420. DEU|02030203    |     3|  |    werden.
  421. DEU|02030203    |     5|  |    Folgende Steueranweisungen k÷nnen benutzt werden :
  422. DEU|02030203    |     7|  |         NL            bewirkt einen Zeilenvorschub.
  423. DEU|02030203    |     8|  |         NL (n)        bewirkt n Zeilenvorschⁿbe.
  424. DEU|02030203    |     9|  |         COL (n)       bestimmt die Eingabespalte.
  425. DEU|02030203    |    10|  |         HIGH          bewirkt, da▀ die Zeichen im Eingabefeld hell
  426. DEU|02030203    |    11|  |                       erscheinen.
  427. DEU|02030203    |    12|  |         DARK          bewirkt, da▀ die Zeichen im Eingabefeld nicht
  428. DEU|02030203    |    13|  |                       sichtbar sind.
  429. DEU|02030203    |    14|  |         CLEAR         l÷scht den Bildschirm.
  430. DEU|02030203    |    15|  |         POS (z, s)    legt Bildschirmkoordinaten fⁿr das nΣchste
  431. DEU|02030203    |    16|  |                       Eingabefeld fest.
  432. DEU|02030203    |    17|S |         SIZE (n)      bestimmt die LΣnge des nΣchsten Eingabefeldes.
  433. DEU|02030203    |    19|  |         OUTIN (v)     bewirkt, da▀ der aktuelle Wert der Variablen ausge-
  434. DEU|02030203    |    20|  |                       geben wird und dann ⁿberschrieben werden kann.
  435. DEU|02030203    |    21|  |         PROMPT 'z'    kann in Verbindung mit OUTIN benutzt werden. Das
  436. DEU|02030203    |    22|  |                       angegebene Zeichen wird ausgegeben, wenn die Variable
  437. DEU|02030203    |    23|  |                       den NULL-Wert hat.
  438. DEU|02030203    |    25|RI|                                                          ##0203040249->^Syntax
  439. DEU|02030204    |     1|  |                    Datenbankkommandos mit SQL
  440. DEU|02030204    |     2|  |                    --------------------------
  441. DEU|02030204    |     4| M|                    #01Datenbankzugriffe
  442. DEU|02030204    |     5| M|                    #02Dynamische^SQL-Kommandos
  443. DEU|02030204    |     6| M|                    #03Dynamische^FETCH-Kommandos
  444. DEU|02030204    |     7| M|                    #04Massenfetch
  445. DEU|02030204    |     8| M|                    Routinen zur #05Behandlung^von^SQL-Fehlern
  446. DEU|02030204    |     9| M|                    #06Multi-DB-Betrieb
  447. DEU|02030204    |    10|RI|                                                          ##0203040227->^Syntax
  448. DEU|0203020401  |     1|  |    In  SQL-PL  ist  die  SQL-Schnittstelle  des  Datenbanksystems   ADABAS
  449. DEU|0203020401  |     2|  |    integriert.  ▄ber  sie  wird  der Datenaustausch zwischen Datenbank und
  450. DEU|0203020401  |     3|  |    SQL-PL Programm realisiert. Nach jedem SQL-Aufruf kann mit $RC  geprⁿft
  451. DEU|0203020401  |     4|  |    werden, welchen Returncode das DBMS geliefert hat.
  452. DEU|0203020401  |     6|  |    Statische SQL-Kommandos :
  453. DEU|0203020401  |     8|  |    Diese  Kommandos werden beim Abspeichern der Routine geprⁿft. Es k÷nnen
  454. DEU|0203020401  |     9|  |    Ein- und Ausgabevariablen im Kommando  auftreten.  Diese  SQL-Variablen
  455. DEU|0203020401  |    10|  |    sind im Kommando durch einen Doppelpunkt gekennzeichnet.
  456. DEU|0203020401  |    12|  |    Beispiele :
  457. DEU|0203020401  |    14|  |
  458. DEU|0203020401  |    15| E|      SQL ( SELECT  DIRECT name
  459. DEU|0203020401  |    16| E|            INTO   :k_name
  460. DEU|0203020401  |    17|SE|            FROM    kunde
  461. DEU|0203020401  |    19| E|            KEY     knr = :k_nr );
  462. DEU|0203020401  |    22| E|      SQL ( INSERT  kunde
  463. DEU|0203020401  |    23| E|            SET     knr = :k_nr, name = :k_name, ort = :k_ort );
  464. DEU|0203020401  |    25| E|      SQL ( UPDATE  kunde
  465. DEU|0203020401  |    26| E|            SET     ort = 'Berlin', konto = :@summe
  466. DEU|0203020401  |    27| E|            KEY     knr = :k_nr );
  467. DEU|0203020401  |    29| E|      SQL ( SELECT  erg (knr, name)
  468. DEU|0203020401  |    30| E|            FROM    kunde
  469. DEU|0203020401  |    31| E|            WHERE   ort = :@k_ort );
  470. DEU|0203020401  |    33| E|      SQL ( FETCH FIRST erg
  471. DEU|0203020401  |    34| E|            INTO   :k_nr, :k_name );
  472. DEU|0203020401  |    35|S |
  473. DEU|0203020401  |    37|RI|                                                          ##0203040227->^Syntax
  474. DEU|0203020402  |     1|  |    Dynamische SQL-Kommandos :
  475. DEU|0203020402  |     3|  |    Diese Kommandos werden erst bei der Ausfⁿhrung geprⁿft.
  476. DEU|0203020402  |     5|  |    Direkte Ausfⁿhrung :
  477. DEU|0203020402  |     7| M|    #01EXECUTE^IMMEDIATE
  478. DEU|0203020402  |     9| M|    #01EXECUTE^IMMEDIATE^USING
  479. DEU|0203020402  |    11|  |    Vorbereitung und mehrfache Ausfⁿhrung :
  480. DEU|0203020402  |    13| M|    #02PREPARE^FROM
  481. DEU|0203020402  |    15| M|    #02EXECUTE^USING
  482. DEU|0203020402  |    17|SM|    #02DESCRIBE^INTO
  483. DEU|0203020402  |    19|RI|                                                          ##0203040229->^Syntax
  484. DEU|020302040201|     1|  |    Direkte Ausfⁿhrung ohne SQL-Variablen :
  485. DEU|020302040201|     3|  |    Beispiel :
  486. DEU|020302040201|     5|  |
  487. DEU|020302040201|     6| E|      kommando := 'SELECT * FROM kunde WHERE name = '''';
  488. DEU|020302040201|     8| E|      READ name;
  489. DEU|020302040201|    10| E|      SQL EXECUTE IMMEDIATE kommando & name & '''';
  490. DEU|020302040201|    11|  |
  491. DEU|020302040201|    12|  |    Direkte Ausfⁿhrung mit SQL-VARIABLEN :
  492. DEU|020302040201|    14|  |    Die Positionen der SQL-Variablen werden im Kommando durch
  493. DEU|020302040201|    15|  |    Fragezeichen reprΣsentiert.
  494. DEU|020302040201|    17|S |    Beispiel :
  495. DEU|020302040201|    19|  |
  496. DEU|020302040201|    20| E|      kommando := 'SELECT * FROM kunde WHERE name = ?';
  497. DEU|020302040201|    22| E|      READ name;
  498. DEU|020302040201|    24| E|      SQL EXECUTE IMMEDIATE kommando USING name;
  499. DEU|020302040201|    25|  |
  500. DEU|020302040201|    27|RI|                                                          ##0203040229->^Syntax
  501. DEU|020302040202|     1|  |    Vorbereitung eines dynamischen SQL-Kommandos :
  502. DEU|020302040202|     3|  |    Die Positionen der SQL-Variablen werden im Kommando durch
  503. DEU|020302040202|     4|  |    Fragezeichen reprΣsentiert.
  504. DEU|020302040202|     5|  |
  505. DEU|020302040202|     6| E|      kommando := 'SELECT DIRECT kunden_nr INTO ?'
  506. DEU|020302040202|     7| E|        & 'WHERE name = ? AND stadt = ?';
  507. DEU|020302040202|     8| E|      SQL PREPARE sel FROM kommando;
  508. DEU|020302040202|     9|  |
  509. DEU|020302040202|    11|  |    Ausfⁿhrung eines vorbereiteten Kommandos :
  510. DEU|020302040202|    13|  |    Ein vorbereitetes Kommando kann beliebig oft mit den gleichen
  511. DEU|020302040202|    14|  |    oder unterschiedlichen Variablen ausgefⁿhrt werden.
  512. DEU|020302040202|    15|  |
  513. DEU|020302040202|    16| E|      SQL EXECUTE sel USING k_no, name, stadt;
  514. DEU|020302040202|    17|S |
  515. DEU|020302040202|    19|  |    Abfragen der Variablen-Information :
  516. DEU|020302040202|    20|  |
  517. DEU|020302040202|    21| E|      SQL DESCRIBE sel INTO @info(1..10);
  518. DEU|020302040202|    22|  |
  519. DEU|020302040202|    23|  |      @info(1)  ->  'OUT   FIXED (    6 , 0 ) NOT NULL'
  520. DEU|020302040202|    24|  |      @info(2)  ->  'IN    CHAR  (   20 )     NOT NULL'
  521. DEU|020302040202|    25|  |      @info(3)  ->  'IN    CHAR  (   20 )'
  522. DEU|020302040202|    26|  |      $COUNT    ->  3
  523. DEU|020302040202|    28|RI|                                                          ##0203040229->^Syntax
  524. DEU|0203020403  |     1|  |    Dynamische FETCH-Kommandos :
  525. DEU|0203020403  |     3|  |    Um  die mit einem dynamischen SQL-Kommando selektierten Werte Variablen
  526. DEU|0203020403  |     4|  |    zuweisen zu k÷nnen, steht das dynamische FETCH-Kommando zur  Verfⁿgung.
  527. DEU|0203020403  |     5|  |    Die  Werte  der  aktuellen Zeile der genannten Ergebnismenge werden den
  528. DEU|0203020403  |     6|  |    durch ':' gekennzeichneten Variablen (lokalen oder  globalen  Variablen
  529. DEU|0203020403  |     7|  |    oder Vektorbereichen) zugewiesen.
  530. DEU|0203020403  |     8|  |    Ist  keine  Ergebnismenge angegeben, so bezieht sich das FETCH-Kommando
  531. DEU|0203020403  |     9|  |    auf die zuletzt erzeugte Ergebnismenge.
  532. DEU|0203020403  |    11|  |    Beispiel :
  533. DEU|0203020403  |    13|  |
  534. DEU|0203020403  |    14| E|      tabelle   := 'kunde';
  535. DEU|0203020403  |    15| E|      READ obergrenze;
  536. DEU|0203020403  |    16| E|      kommando  := 'SELECT erg (name, ort) FROM ' & tabelle
  537. DEU|0203020403  |    17|SE|                    & ' where ' & 'knr < ' & obergrenze;
  538. DEU|0203020403  |    19| E|      SQL EXECUTE IMMEDIATE kommando;
  539. DEU|0203020403  |    20| E|      SQL FETCH IMMEDIATE FIRST erg INTO :@kname, :@kort;
  540. DEU|0203020403  |    21| E|      WHILE $RC = 0 DO
  541. DEU|0203020403  |    22| E|          BEGIN
  542. DEU|0203020403  |    23| E|          WRITE NL, @kname, @kort;
  543. DEU|0203020403  |    24| E|          SQL FETCH IMMEDIATE NEXT erg INTO :@kname, :@kort;
  544. DEU|0203020403  |    25| E|          END;
  545. DEU|0203020403  |    26|  |
  546. DEU|0203020403  |    28|RI|                                                          ##0203040230->^Syntax
  547. DEU|0203020404  |     1|  |    Massenfetch :
  548. DEU|0203020404  |     3|  |    Eine elegante M÷glichkeit zur  Abarbeitung  von  Ergebnismengen  bietet
  549. DEU|0203020404  |     4|  |    SQL-PL  durch  eine  Erweiterung  des FETCH-Kommandos. Durch Angabe von
  550. DEU|0203020404  |     5|  |    Vektorbereichen im FETCH-Kommando wird  bewirkt,  da▀  mit  einem  SQL-
  551. DEU|0203020404  |     6|  |    Auftrag bis zu 255 Zeilen einer Ergebnismenge auf einmal bereitgestellt
  552. DEU|0203020404  |     7|  |    werden.
  553. DEU|0203020404  |     9|  |    Beispiel :
  554. DEU|0203020404  |    11|  |
  555. DEU|0203020404  |    12| E|      SQL ( SELECT knr, name FROM kunde ORDER BY knr );
  556. DEU|0203020404  |    13| E|      IF   $RC = 0 AND $COUNT <= 255
  557. DEU|0203020404  |    14| E|      THEN SQL ( FETCH INTO knr(1..$COUNT), name(1..$COUNT))
  558. DEU|0203020404  |    15| E|      ELSE ....
  559. DEU|0203020404  |    16|S |
  560. DEU|0203020404  |    19|RI|                                                          ##0203040231->^Syntax
  561. DEU|0203020405  |     1|  |    SQL-PL unterstⁿtzt die Behandlung von SQL-Fehlern wie folgt:
  562. DEU|0203020405  |     2|  |    In  AbhΣngigkeit  des  SQL-Returncodes  wird  geprⁿft,  ob das laufende
  563. DEU|0203020405  |     3|  |    Programm eine Routine mit dem unten angegebenen  Namen  besitzt.  Falls
  564. DEU|0203020405  |     4|  |    ja,  wird  diese  implizit  mit  CALL  aufgerufen, andernfalls wird die
  565. DEU|0203020405  |     5|  |    laufende Routine mit der nΣchsten Anweisung fortgesetzt.
  566. DEU|0203020405  |     6|  |    Die Routinen zur  Behandlung  von  SQL-Fehlern  k÷nnen  einen  formalen
  567. DEU|0203020405  |     7|  |    Parameter haben, dem vom SQL-PL Laufzeitsystem der Name der Routine, in
  568. DEU|0203020405  |     8|  |    der der SQL-Fehler auftrat, zugeordnet wird.
  569. DEU|0203020405  |    11|  |    SQLEXCEPTION  :  100 < $RC < 700
  570. DEU|0203020405  |    12| I|                                                          ##0203040236->^Syntax
  571. DEU|0203020405  |    14|  |    SQLNOTFOUND   :  $RC = 100
  572. DEU|0203020405  |    15| I|                                                          ##0203040237->^Syntax
  573. DEU|0203020405  |    17|S |    SQLTIMEOUT    :  $RC = 700
  574. DEU|0203020405  |    19| I|                                                          ##0203040238->^Syntax
  575. DEU|0203020405  |    21|  |    SQLERROR      :  $RC < 0
  576. DEU|0203020405  |    22| I|                                                          ##0203040235->^Syntax
  577. DEU|0203020405  |    24|  |    SQLWARNING    :  $SQLWARNING  (eine Warnung ist gesetzt)
  578. DEU|0203020405  |    25|RI|                                                          ##0203040239->^Syntax
  579. DEU|0203020406  |     1|  |    Mit  der  CONNECT-Anweisung  wird die Verbindung zu anderen Datenbanken
  580. DEU|0203020406  |     2|  |    oder anderen Benutzerbereichen auf derselben DB hergestellt.
  581. DEU|0203020406  |     4|  |    CONNECT symbolic_dbname AS (<username>, <password>, <serverdb>,
  582. DEU|0203020406  |     5|  |                               /<servernode>/)
  583. DEU|0203020406  |     7|  |    Der <servernode> mu▀ nur dann angegeben werden, wenn die Datenbank  auf
  584. DEU|0203020406  |     8|  |    einem anderen Knoten als dem aktuellen liegt.
  585. DEU|0203020406  |    10|  |    Beispiel :
  586. DEU|0203020406  |    12|  |
  587. DEU|0203020406  |    13| E|      READ @username, DARK, @password;
  588. DEU|0203020406  |    14| E|      CONNECT db2 AS (@username, @password, 'OTHERDB');
  589. DEU|0203020406  |    16| E|      db := 'DB2';
  590. DEU|0203020406  |    17|SE|      CONNECT :db AS ('MEIER', 'ANFANG', 'OTHERDB', 'NODE2');
  591. DEU|0203020406  |    19|  |
  592. DEU|0203020406  |    21| I|                                                          ##0203040233->^Syntax
  593. DEU|0203020406  |    23|  |    In $RC und $RT sind die Fehlercodes und -meldungen abfragbar.
  594. DEU|0203020406  |    25|  |    Die Verbindung wird nach Ausfⁿhrung des Programms implizit abgebrochen
  595. DEU|0203020406  |    27|  |    Mit  der  RELEASE-Anweisung  kann  die  Verbindung explizit abgebrochen
  596. DEU|0203020406  |    28|  |    werden.
  597. DEU|0203020406  |    30|  |    RELEASE symbolic_dbname
  598. DEU|0203020406  |    32|  |    Nach  dem  Schlⁿsselwort  SQL  wird   der   symbolische   Datenbankname
  599. DEU|0203020406  |    33|  |    angegeben,    dem   in   der   CONNECT-Anweisung   ein   physikalischer
  600. DEU|0203020406  |    34|  |    Datenbankname zugeordnet wurde. Das angegebene Kommando wird  dann  zur
  601. DEU|0203020406  |    35|S |    Ausfⁿhrung an das entsprechende DBMS geschickt.
  602. DEU|0203020406  |    37|  |    Beispiel :
  603. DEU|0203020406  |    39|  |
  604. DEU|0203020406  |    40| E|      READ @username, DARK, @password;
  605. DEU|0203020406  |    41| E|      CONNECT db2 AS (@username, @password, 'OTHERDB');
  606. DEU|0203020406  |    42| E|      SQL db2 ( SELECT knr, name FROM kunde );
  607. DEU|0203020406  |    43| E|      SQL db2 ( FETCH INTO :knr, :name ); ...
  608. DEU|0203020406  |    44| E|      RELEASE db2;
  609. DEU|0203020406  |    45|  |
  610. DEU|0203020406  |    47|RI|                                                          ##0203040234->^Syntax
  611. DEU|02030205    |     1|  |                    REPORT und gespeicherte Kommandos
  612. DEU|02030205    |     2|  |                    ---------------------------------
  613. DEU|02030205    |     4| M|                    Tabellenaufbereitung mit #01REPORT
  614. DEU|02030205    |     5| M|                    Aufruf von #02gespeicherten^Kommandos
  615. DEU|02030205    |     6| M|                    Im #03Multi-DB-Betrieb
  616. DEU|02030205    |     7| M|                    Angabe eines #04Headers
  617. DEU|02030205    |     8| M|                    #05Optionen
  618. DEU|02030205    |     9|RM|                    Weiterverwendung der Ergebnisse ( #06RESULT )
  619. DEU|0203020501  |     1|  |    Zur  Aufbereitung  von Datenbank-Ergebnismengen dient die Schnittstelle
  620. DEU|0203020501  |     2|  |    zum ADABAS Reportgenerator.
  621. DEU|0203020501  |     4|  |    Beispiel :
  622. DEU|0203020501  |     6|  |
  623. DEU|0203020501  |     7| E|      SQL ( SELECT * FROM kunde );
  624. DEU|0203020501  |     8| E|      REPORT CMD ( TTITLE ''== Kunden-Liste =='');
  625. DEU|0203020501  |     9|  |
  626. DEU|0203020501  |    11| I|    Es k÷nnen beliebige ##08REPORT-Kommandos - durch Semikolon oder  Zeilenende
  627. DEU|0203020501  |    12|  |    getrennt - angegeben werden.
  628. DEU|0203020501  |    14|  |    Beispiel :
  629. DEU|0203020501  |    16|  |
  630. DEU|0203020501  |    17|SE|      SQL ( SELECT * FROM kunde );
  631. DEU|0203020501  |    19| E|      REPORT CMD ( TTITLE ''== Kunden =='' ; TOTAL kontostand
  632. DEU|0203020501  |    20| E|                   GROUP kundennummer );
  633. DEU|0203020501  |    21|  |
  634. DEU|0203020501  |    25|  |    Durch einen Doppelpunkt gekennzeichnete SQL-PL Variablen werden vor dem
  635. DEU|0203020501  |    26|  |    Aufruf textuell substituiert.
  636. DEU|0203020501  |    28|  |    Beispiel :
  637. DEU|0203020501  |    30|  |
  638. DEU|0203020501  |    31| E|      Variable_mit_REPORT_Kommandos := 'GROUP kundennummer ; TOTAL 1';
  639. DEU|0203020501  |    32| E|      SQL ( SELECT * FROM kunde );
  640. DEU|0203020501  |    33| E|      READ @titel;
  641. DEU|0203020501  |    34| E|      REPORT CMD (:Variable_mit_REPORT_Kommandos ; TTITLE :@titel);
  642. DEU|0203020501  |    35|S |
  643. DEU|0203020501  |    37|  |    Um  benannte  Ergebnismengen  mit REPORT aufbereiten zu k÷nnen, mu▀ der
  644. DEU|0203020501  |    38|  |    Ergebnismengenname  angegeben  werden.  Dies  ist  auch  als   Variable
  645. DEU|0203020501  |    39|  |    (gekennzeichnet durch vorangestellten ':') m÷glich.
  646. DEU|0203020501  |    41|  |    Beispiele :
  647. DEU|0203020501  |    43|  |
  648. DEU|0203020501  |    44| E|      SQL ( SELECT  ergebnis (*) FROM kunde );
  649. DEU|0203020501  |    45| E|      REPORT ergebnis CMD (TTITLE ''== Kunden-Liste =='');
  650. DEU|0203020501  |    47| E|      erg := 'ERGEBNIS';
  651. DEU|0203020501  |    48| E|      REPORT :erg CMD (TTITLE ''== Kunden-Liste =='');
  652. DEU|0203020501  |    49|  |
  653. DEU|0203020501  |    51|  |    Mit  REPORT SHOW wird die Ergebnismenge des letzten SHOW- oder EXPLAIN-
  654. DEU|0203020501  |    52|S |    Kommandos aufbereitet.
  655. DEU|0203020501  |    55| I|    ZusΣtzlich k÷nnen eine  ##0203020503andere^Datenbank,  eine  ##0203020504▄berschrift,  ##0203020505Optionen
  656. DEU|0203020501  |    56| I|    oder ##0203020506weiterzuverwendende^Ergebnisse spezifiziert werden.
  657. DEU|0203020501  |    58|  |    Beispiel :
  658. DEU|0203020501  |    60|  |
  659. DEU|0203020501  |    61| E|      REPORT erg
  660. DEU|0203020501  |    62| E|             DBNAME = database2
  661. DEU|0203020501  |    63| E|             HEADER 'Kundenliste'
  662. DEU|0203020501  |    64| E|             CMD ( TTITLE 'Alle Kunden'
  663. DEU|0203020501  |    65| E|                   TOTAL 'Gesamtsumme : ' 3 )
  664. DEU|0203020501  |    66| E|             OPTIONS ( BACKGROUND, SETLOCAL )
  665. DEU|0203020501  |    67| E|             RESULT ( ges_sum = SUM (3), durchschn = AVG (4) );
  666. DEU|0203020501  |    68|  |
  667. DEU|0203020501  |    70|RI|                                                          ##0203040243->^Syntax
  668. DEU|0203020502  |     1|  |    Fⁿr den Aufruf von in QUERY definierten gespeicherten Kommandos gibt es
  669. DEU|0203020502  |     2|  |    zwei syntaktische M÷glichkeiten:
  670. DEU|0203020502  |     5|  |    Zum  einen kann fⁿr den Aufruf eines gespeicherten Kommandos die QUERY-
  671. DEU|0203020502  |     6|  |    Syntax verwendet werden. Nach dem  Schlⁿsselwort  CMD  folgt  dann  der
  672. DEU|0203020502  |     7|  |    Aufruf  wie  in  der  Kommandozeile  von  QUERY.  In  SQL-PL  ist dabei
  673. DEU|0203020502  |     8|  |    zusΣtzlich die Angabe von Variablen  m÷glich.  Variablen  mⁿssen  durch
  674. DEU|0203020502  |     9|  |    Voranstellen von ':' gekennzeichnet sein. Sie werden vor dem Aufruf des
  675. DEU|0203020502  |    10|  |    gespeicherten Kommandos durch ihren aktuellen Wert ersetzt.
  676. DEU|0203020502  |    12|  |    Beispiel :
  677. DEU|0203020502  |    14|  |
  678. DEU|0203020502  |    15| E|      QUERY  CMD ( run kunden_liste );
  679. DEU|0203020502  |    17|SE|      QUERY  CMD ( run :$USER.kunden_liste :nr 'Kundenliste' );
  680. DEU|0203020502  |    19|  |
  681. DEU|0203020502  |    23|  |    Als  zweite  M÷glichkeit  wird  das  gespeicherte Kommando durch Angabe
  682. DEU|0203020502  |    24|  |    seines Namens und ggf. des Eigentⁿmernamens  identifiziert.  Dies  kann
  683. DEU|0203020502  |    25|  |    als Konstante oder Variable (gekennzeichnet durch Voranstellen von ':')
  684. DEU|0203020502  |    26|  |    geschehen.
  685. DEU|0203020502  |    28|  |    Die  evt.  erforderlichen  Parameter werden nach dem Schlⁿsselwort PARM
  686. DEU|0203020502  |    29|  |    (oder PARMS) durch Komma  voneinander  getrennt  angegeben.  Es  k÷nnen
  687. DEU|0203020502  |    30|  |    beliebige  Ausdrⁿcke  als  Parameter  ⁿbergeben werden. NULL-Werte sind
  688. DEU|0203020502  |    31|  |    nicht erlaubt !!!
  689. DEU|0203020502  |    33|  |    Beispiel :
  690. DEU|0203020502  |    35|S |
  691. DEU|0203020502  |    37| E|      QUERY  kunden_liste;
  692. DEU|0203020502  |    39| E|      QUERY  :$USER.kunden_liste
  693. DEU|0203020502  |    40| E|             PARMS ( nr, 'Kundenliste' );
  694. DEU|0203020502  |    41|  |
  695. DEU|0203020502  |    46| I|    ZusΣtzlich k÷nnen eine ##0203020503andere^Datenbank, und -  wenn  das  gespeicherte
  696. DEU|0203020502  |    47| I|    Kommando  einen REPORT-Aufruf enthΣlt - eine ##0203020504▄berschrift, ##0203020505Optionen oder
  697. DEU|0203020502  |    48| I|    ##0203020506weiterzuverwendende^Ergebnisse spezifiziert werden.
  698. DEU|0203020502  |    50|  |    Beispiele :
  699. DEU|0203020502  |    52|  |
  700. DEU|0203020502  |    53|SE|      QUERY  DBNAME = database2
  701. DEU|0203020502  |    55| E|             HEADER 'Kundenliste'
  702. DEU|0203020502  |    56| E|             CMD ( run :$USER.kunden_liste :nr 'Kundenliste' )
  703. DEU|0203020502  |    57| E|             OPTION ( SETOFF )
  704. DEU|0203020502  |    58| E|             RESULT ( ges_sum = SUM (3) );
  705. DEU|0203020502  |    60| E|      QUERY  :$USER.kunden_liste
  706. DEU|0203020502  |    61| E|             DBNAME = database2
  707. DEU|0203020502  |    62| E|             HEADER 'Kundenliste'
  708. DEU|0203020502  |    63| E|             PARMS ( nr, 'Kundenliste' )
  709. DEU|0203020502  |    64| E|             OPTION ( SETOFF )
  710. DEU|0203020502  |    65| E|             RESULT ( ges_sum = SUM (3) );
  711. DEU|0203020502  |    66|  |
  712. DEU|0203020502  |    68|RI|                                                          ##0203040241->^Syntax
  713. DEU|0203020503  |     1|  |    Ergebnismengen, die nicht in der  Default-Datenbank  aufgebaut  wurden,
  714. DEU|0203020503  |     2|  |    k÷nnen   ebenfalls   mit   REPORT  bearbeitet  werden.  Dazu  wird  der
  715. DEU|0203020503  |     3|  |    symbolische Datenbankname angegeben.
  716. DEU|0203020503  |     5|  |    Ebenso  k÷nnen  gespeicherte  Kommandos  von  einer  anderen  Datenbank
  717. DEU|0203020503  |     6|  |    aufgerufen werden.
  718. DEU|0203020503  |     8|  |    Beispiele:
  719. DEU|0203020503  |    10|  |
  720. DEU|0203020503  |    11| E|      SQL db2 ( SELECT  ergebnis (*) FROM kunde );
  721. DEU|0203020503  |    12| E|      REPORT ergebnis CMD (TTITLE ''== Kunden-Liste =='')
  722. DEU|0203020503  |    13| E|             DBNAME = db2;
  723. DEU|0203020503  |    15| E|      QUERY kunden_liste
  724. DEU|0203020503  |    16|SE|            DBNAME = db2;
  725. DEU|0203020503  |    19| E|      QUERY  :$USER.kunden_liste PARMS ( nr, 'Kundenliste' )
  726. DEU|0203020503  |    20| E|             DBNAME = db2;
  727. DEU|0203020503  |    21|  |
  728. DEU|0203020503  |    23|RI|                                                          ##0203040241->^Syntax
  729. DEU|0203020504  |     1|  |    Es  kann  eine  bis  zu  40  Zeichen lange ▄berschrift der REPORT-Seite
  730. DEU|0203020504  |     2|  |    festgelegt werden.  Dazu  wird  hinter  dem  Schlⁿsselwort  HEADER  ein
  731. DEU|0203020504  |     3|  |    Ausdruck  angegeben (z. B. Zeichenkette oder Variable). Die ▄berschrift
  732. DEU|0203020504  |     4|  |    wird ggf. auf die ersten 40 Zeichen  verkⁿrzt.  Ist  keine  ▄berschrift
  733. DEU|0203020504  |     5|  |    angegeben,   wird   der   Name   der  Ergebnistabelle  als  ▄berschrift
  734. DEU|0203020504  |     6|  |    ausgegeben.
  735. DEU|0203020504  |     8|  |    Beispiele :
  736. DEU|0203020504  |    10|  |
  737. DEU|0203020504  |    11| E|      QUERY  HEADER 'Kundenliste'
  738. DEU|0203020504  |    12| E|             CMD ( run :$USER.kunden_liste :nr 'Kundenliste' );
  739. DEU|0203020504  |    14| E|      QUERY  :$USER.kunden_liste
  740. DEU|0203020504  |    15| E|             PARMS ( nr, 'Kundenliste' )
  741. DEU|0203020504  |    16|SE|             HEADER 'Kundenliste vom ' & DATE (dd.mm.yyyy);
  742. DEU|0203020504  |    19| E|      REPORT HEADER 'Kundenliste'
  743. DEU|0203020504  |    20| E|             CMD ( TTITLE 'Alle Kunden'
  744. DEU|0203020504  |    21| E|                   TOTAL 'Gesamtsumme : ' 3 )
  745. DEU|0203020504  |    22|  |
  746. DEU|0203020504  |    24|RI|                                                          ##0203040241->^Syntax
  747. DEU|0203020505  |     1|  |    Es k÷nnen Optionen fⁿr die REPORT-Ausfⁿhrung definiert werden. Mit  der
  748. DEU|0203020505  |     2|  |    Option  BACKGROUND  wird  die  Bildschirmausgabe  einer mit dem REPORT-
  749. DEU|0203020505  |     3|  |    Generator    aufbereiteten    Ergebnismenge    bis     zur     nΣchsten
  750. DEU|0203020505  |     4|  |    Bildschirmausgabe unterdrⁿckt.
  751. DEU|0203020505  |     6|  |    Die   interaktive   ─nderung  der  SET-Parameter  wΣhrend  der  REPORT-
  752. DEU|0203020505  |     7|  |    Ausfⁿhrung kann mit
  753. DEU|0203020505  |     8|  |        SETOFF unterbunden werden,
  754. DEU|0203020505  |     9|  |        SETLOCAL temporΣr erlaubt werden, d. h., nach Verlassen der REPORT-
  755. DEU|0203020505  |    10|  |        Anzeige werden die SET-Parameter auf  die  Werte  vor  dem  REPORT-
  756. DEU|0203020505  |    11|  |        Aufruf zurⁿckgesetzt.
  757. DEU|0203020505  |    12|  |    Ist  keine  Option  fⁿr die ─nderung der SET-Parameter angegeben, wirkt
  758. DEU|0203020505  |    13|  |    jede ─nderung der SET-Parameter global, d. h., sie ist bis zur nΣchsten
  759. DEU|0203020505  |    14|S |    SET-ParameterΣnderung gⁿltig.
  760. DEU|0203020505  |    19|  |    Beispiele :
  761. DEU|0203020505  |    21|  |
  762. DEU|0203020505  |    22| E|      QUERY  OPTION ( SETOFF )
  763. DEU|0203020505  |    23| E|             CMD ( run :$USER.kunden_liste :nr 'Kundenliste' );
  764. DEU|0203020505  |    25| E|      QUERY  :$USER.kunden_liste
  765. DEU|0203020505  |    26| E|             PARMS ( nr, 'Kundenliste' )
  766. DEU|0203020505  |    27| E|             OPTION ( SETOFF );
  767. DEU|0203020505  |    29| E|      REPORT CMD ( TTITLE 'Alle Kunden'
  768. DEU|0203020505  |    30| E|                   TOTAL 'Gesamtsumme : ' 3 )
  769. DEU|0203020505  |    31| E|             OPTIONS ( BACKGROUND, SETLOCAL );
  770. DEU|0203020505  |    32|  |
  771. DEU|0203020505  |    34|RI|                                                          ##0203040245->^Syntax
  772. DEU|0203020506  |     1|  |    Die durch den REPORT-Generator ermittelten  Endergebnisse  fⁿr  Spalten
  773. DEU|0203020506  |     2|  |    der  Ergebnistabelle  (SUM,  AVG, MIN, MAX, COUNT oder selbstdefinierte
  774. DEU|0203020506  |     3|  |    arithmetische Ausdrⁿcke) k÷nnen in SQL-PL weiterverwendet werden.  Dazu
  775. DEU|0203020506  |     4|  |    wird   das  entsprechende  Ergebnis  einer  Variablen  zugewiesen.  Ein
  776. DEU|0203020506  |     5|  |    Ergebnis ist nur dann nicht NULL, wenn  in  der  REPORT-Ausfⁿhrung  ein
  777. DEU|0203020506  |     6|  |    beliebiges  Ergebnis  fⁿr die angegebene Spalte berechnet wurde, d. h.,
  778. DEU|0203020506  |     7|  |    wenn es beim Aufruf von  REPORT  oder  bei  der  Ausfⁿhrung  interaktiv
  779. DEU|0203020506  |     8|  |    definiert wird.
  780. DEU|0203020506  |    10|  |    Beispiele :
  781. DEU|0203020506  |    12|  |
  782. DEU|0203020506  |    13| E|      QUERY  CMD ( run :$USER.kunden_liste :nr 'Kundenliste' )
  783. DEU|0203020506  |    14| E|             RESULT ( ges_sum = SUM (3) );
  784. DEU|0203020506  |    16| E|      QUERY  :$USER.kunden_liste PARMS ( nr, 'Kundenliste' )
  785. DEU|0203020506  |    17|SE|             RESULT ( ges_sum = SUM (3) );
  786. DEU|0203020506  |    19| E|      REPORT CMD ( TTITLE 'Alle Kunden'; TOTAL 'Gesamtsumme : ' 3 )
  787. DEU|0203020506  |    20| E|             RESULT ( ges_sum = SUM (3), durchschn = AVG (4) );
  788. DEU|0203020506  |    21|  |
  789. DEU|0203020506  |    23|RI|                                                          ##0203040244->^Syntax
  790. DEU|02030206    |     1|  |                    Bearbeiten von Betriebssystemdateien
  791. DEU|02030206    |     2|  |                    ------------------------------------
  792. DEU|02030206    |     4| M|                    #01╓ffnen und #01Schlie▀en von BS-Dateien
  793. DEU|02030206    |     5| M|                    #02Lesen von BS-Dateien
  794. DEU|02030206    |     6|RM|                    #03Beschreiben von BS-Dateien
  795. DEU|0203020601  |     1|  |
  796. DEU|0203020601  |     2| E|    OPEN  fileid  filename   READ oder WRITE oder APPEND
  797. DEU|0203020601  |     4| E|    CLOSE fileid
  798. DEU|0203020601  |     5|  |
  799. DEU|0203020601  |     7|  |    Eine  <fileid>  ist  ein interner Name fⁿr eine Datei, mit dem man sich
  800. DEU|0203020601  |     8|  |    bei READFILE, WRITEFILE oder CLOSE auf die  mit  OPEN  ge÷ffnete  Datei
  801. DEU|0203020601  |     9|  |    beziehen kann. READ er÷ffnet eine Datei zum Lesen, WRITE zum Schreiben.
  802. DEU|0203020601  |    10|  |    Mit APPEND wird eine bestehende Datei zum Schreiben er÷ffnet, wobei der
  803. DEU|0203020601  |    11|  |    bisherige Inhalt erhalten bleibt.
  804. DEU|0203020601  |    13|  |    Beispiele :
  805. DEU|0203020601  |    15|  |
  806. DEU|0203020601  |    16| E|      OPEN eingabe 'eingabe datei' READ
  807. DEU|0203020601  |    17|SE|      READFILE eingabe a:5, b:6;
  808. DEU|0203020601  |    19| E|      CLOSE eingabe
  809. DEU|0203020601  |    20|  |
  810. DEU|0203020601  |    22| I|                                                          ##0203040250<open^file^stmt>->^Syntax
  811. DEU|0203020601  |    23|RI|                                                          ##0203040251<close^file^stmt>->^Syntax
  812. DEU|0203020602  |     1|  |    Mit  der  READFILE-Anweisung  k÷nnen  Daten  aus  BS-Dateien  in SQL-PL
  813. DEU|0203020602  |     2|  |    Variablen  eingelesen  werden.  Die  Daten  mⁿssen  in  lesbarer   Form
  814. DEU|0203020602  |     3|  |    vorliegen.
  815. DEU|0203020602  |     5|  |    Beispiel :
  816. DEU|0203020602  |     7|  |
  817. DEU|0203020602  |     8| E|      OPEN eingabe 'eingabe datei' READ;
  818. DEU|0203020602  |     9| E|      IF NOT EOF ( eingabe )
  819. DEU|0203020602  |    10| E|      THEN
  820. DEU|0203020602  |    11| E|        READFILE eingabe l:5, b:l, c;
  821. DEU|0203020602  |    12|  |
  822. DEU|0203020602  |    13|  |        /* In die Variable l wird die LΣnge des nachfolgenden Wertes
  823. DEU|0203020602  |    14|  |        /* eingelesen !
  824. DEU|0203020602  |    16|  |    Zu  jeder  Variablen  -  au▀er  der  letzten - mu▀ eine LΣnge angegeben
  825. DEU|0203020602  |    17|S |    werden.
  826. DEU|0203020602  |    19|RI|                                                          ##0203040254->^Syntax
  827. DEU|0203020603  |     1|  |    Mit der WRITEFILE-Anweisung k÷nnen Daten in eine  BS-Datei  geschrieben
  828. DEU|0203020603  |     2|  |    werden.
  829. DEU|0203020603  |     4|  |    Beispiel :
  830. DEU|0203020603  |     6|  |
  831. DEU|0203020603  |     7| E|      dateiname := 'eingabe datei';
  832. DEU|0203020603  |     8| E|      OPEN ausgabe dateiname WRITE
  833. DEU|0203020603  |     9| E|      WRITEFILE ausgabe 'Diese Datei hat den Namen ', dateiname:7 ;
  834. DEU|0203020603  |    10| E|      WRITEFILE ausgabe 'Jetzt folgen 25 Leerzeichen ',' ':25;
  835. DEU|0203020603  |    11|  |
  836. DEU|0203020603  |    13|  |    Nach  den Werten kann eine LΣngenangabe folgen. Fehlt die LΣngenangabe,
  837. DEU|0203020603  |    14|  |    wird der  Wert  in  seiner  tatsΣchlichen  LΣnge  ausgegeben.  Ist  die
  838. DEU|0203020603  |    15|  |    LΣngenangabe  zu  gro▀  oder  zu  klein,  wird  abgeschnitten  oder mit
  839. DEU|0203020603  |    16|S |    Leerzeichen aufgefⁿllt.
  840. DEU|0203020603  |    19|RI|                                                          ##0203040252->^Syntax
  841. DEU|02030207    |     1|  |    Es ist m÷glich, aus einer SQL-PL Routine heraus den Editor  aufzurufen.
  842. DEU|02030207    |     2|  |    Als Argument ist ein Vektorbereich oder eine Variable anzugeben.
  843. DEU|02030207    |     3|  |    Wird  ein  Vektorbereich  angegeben,  entspricht  jede  Komponente  des
  844. DEU|02030207    |     4|  |    Vektors einer Zeile des Editierbereiches.
  845. DEU|02030207    |     6|  |    Beispiel :
  846. DEU|02030207    |     7|  |
  847. DEU|02030207    |     8| E|        EDIT ( text (1..20) );
  848. DEU|02030207    |     9|  |
  849. DEU|02030207    |    11|  |    Wird eine Variable angegeben, wird der mit dem  Editor  erstellte  Text
  850. DEU|02030207    |    12|  |    dieser Variablen zugewiesen. Dieser Text kann jederzeit erneut editiert
  851. DEU|02030207    |    13|  |    werden.  Insbesondere  kann  er in einer STRING-Spalte in der Datenbank
  852. DEU|02030207    |    14|  |    abgelegt werden.
  853. DEU|02030207    |    16|  |    Beispiel :
  854. DEU|02030207    |    17|S |
  855. DEU|02030207    |    19| E|                      PROC kunde.k_pflegen
  856. DEU|02030207    |    20| E|                       ...
  857. DEU|02030207    |    21| E|                      SQL ( OPEN COLUMN ... IN WRITE MODE );
  858. DEU|02030207    |    22| E|                      SQL ( READ COLUMN ... BUFFER :text );
  859. DEU|02030207    |    23| E|                      EDIT ( text );
  860. DEU|02030207    |    24| E|                      SQL ( WRITE COLUMN ... BUFFER :text );
  861. DEU|02030207    |    25| E|                      SQL ( CLOSE COLUMN ... );
  862. DEU|02030207    |    26|  |
  863. DEU|02030207    |    28|  |    Au▀erdem k÷nnen noch folgende Parameter angegeben werden :
  864. DEU|02030207    |    30|  |    POS (<zeile>, <spalte>)  bestimmt  die  Bildschirmposition  der  linken
  865. DEU|02030207    |    31|  |    oberen Ecke des Editorfensters.
  866. DEU|02030207    |    33|  |    SIZE (<zeilen>, <spalten>) bestimmt die Gr÷▀e des Fensters.
  867. DEU|02030207    |    35|S |    MARK (<zeilen>, <spalten>) bestimmt die Cursorposition.
  868. DEU|02030207    |    37|  |    MSG = <ausdruck> belegt die Meldungszeile des Editors.
  869. DEU|02030207    |    39|  |    LABEL = <ausdruck> ( bzw. HEADER ) belegt die ▄berschriftenzeile
  870. DEU|02030207    |    41|  |    COMPID = <ausdruck> belegt das linke Feld in der ▄berschriftenzeile des
  871. DEU|02030207    |    42|  |    Editors.
  872. DEU|02030207    |    44|  |    PRINT veranla▀t das Ausdrucken des Editorinhalts.
  873. DEU|02030207    |    46|  |    KEYSWAP bewirkt, da▀ der Editor die Tastenzuordnung von der aufrufenden
  874. DEU|02030207    |    47|  |    SQL-PL Routine ⁿbernimmt.
  875. DEU|02030207    |    49|  |    NOINIT  bewirkt, da▀ die Position des Editorfensters beim Verlassen des
  876. DEU|02030207    |    50|  |    Editors gespeichert wird und  beim  nΣchsten  Aufruf  des  Editors  mit
  877. DEU|02030207    |    51|  |    NOINIT-Option  und  der  gleichen  SQL-PL  Variablen wieder hergestellt
  878. DEU|02030207    |    52|S |    wird.
  879. DEU|02030207    |    55|  |    F1 = <ausdruck> aktiviert die  erste  Funktionstaste  (PF1  bzw.  SK1).
  880. DEU|02030207    |    56|  |    M÷glich ist die Angabe von F1 bis F12, HELP, UP und DOWN.
  881. DEU|02030207    |    58|  |    MAXLINES  = <ausdruck> legt die Anzahl der Σnderbaren Vektorkomponenten
  882. DEU|02030207    |    59|  |    fest.
  883. DEU|02030207    |    61|  |    Nach dem Editoraufruf sind die  Variablen  $CMD,  $EDITLINES  und  $KEY
  884. DEU|02030207    |    62|  |    belegt.
  885. DEU|02030207    |    64|RI|                                                          ##0203040247->^Syntax
  886. DEU|02030209    |     1|  |    Die  Komponenten  des  ersten  Vektors werden aufsteigend (GTSORT) oder
  887. DEU|02030209    |     2|  |    absteigend (LTSORT) sortiert. Die Komponenten  aller  anderen  Vektoren
  888. DEU|02030209    |     3|  |    werden entsprechend mitvertauscht.
  889. DEU|02030209    |     5|  |    Beispiele :
  890. DEU|02030209    |     6|  |
  891. DEU|02030209    |     8| E|      GTSORT ( nachname(1..10), vorname(), wohnort() );
  892. DEU|02030209    |     9| E|      LTSORT ( laenge(1..anzahl) );
  893. DEU|02030209    |    10|  |
  894. DEU|02030209    |    12|RI|                                                          ##0203040215->^Syntax
  895. DEU|02030210    |     1|  |    Die  Einstellung  der benutzerspezifischen SET-Parameter kann in SQL-PL
  896. DEU|02030210    |     2|  |    Programmen mit der SET-Anweisung geΣndert werden.
  897. DEU|02030210    |     4|  |    Beispiele :
  898. DEU|02030210    |     6|  |
  899. DEU|02030210    |     7| E|      SET ( NULL, '' );
  900. DEU|02030210    |     8| E|      SET ( DECIMALREP, '//./' );
  901. DEU|02030210    |     9|  |
  902. DEU|02030210    |    11|  |    Nur  die  zur  Laufzeit  relevanten  Set-Parameter  lassen  sich  durch
  903. DEU|02030210    |    12| M|    #01Schlⁿsselw÷rter einstellen.
  904. DEU|02030210    |    14| I|    Mit der ##0203030311SET-Funktion lassen sich die Werte der SET-Parameter ermitteln.
  905. DEU|02030210    |    16|RI|                                                          ##0203040311->^Syntax
  906. DEU|0203021001  |     1|  |    Die folgenden Schlⁿsselw÷rter sind in SET-Anweisungen zulΣssig :
  907. DEU|0203021001  |     3|  |    LANGUAGE        Die Sprache des laufenden Programms
  908. DEU|0203021001  |     4|  |    NULLVALUE       Die Darstellung des Nullwertes
  909. DEU|0203021001  |     5|  |    SEPARATOR       Das Zeichen zur Trennung von REPORT-Spalten
  910. DEU|0203021001  |     6|  |    DECIMALREP      Die Darstellung von numerischen Werten
  911. DEU|0203021001  |     7|  |    DATE            Die Darstellung von Datumswerten
  912. DEU|0203021001  |     8|  |    TIME            Die Darstellung von Zeitwerten
  913. DEU|0203021001  |     9|  |    COPIES          Die Anzahl von Kopien bei DruckauftrΣgen
  914. DEU|0203021001  |    10|  |    PROTOCOL        Der Name der Datei fⁿr SQLTRACE/MODULETRACE-Ausgaben
  915. DEU|0203021001  |    11| I|    SYSEDITOR       Der Name des gewⁿnschten Editors fⁿr ##040314SYSEDIT
  916. DEU|0203021001  |    12|  |    PRINFORMAT      Der Names des aktuellen Printformats
  917. DEU|0203021001  |    13|  |    PRESENTATION    Der Name der aktuellen Bildschirmeinstellung
  918. DEU|0203021001  |    15|RI|                                                          ##0203040302->^Syntax
  919. DEU|02030211    |     1|  |    Zur  Ermittlung  von Laufzeiten k÷nnen die $-Funktionen $SEC und $MICRO
  920. DEU|02030211    |     2|  |    verwendet werden.
  921. DEU|02030211    |     3|  |    Dazu wird mit der Anweisung INITTIME die Stoppuhr gestartet  und  diese
  922. DEU|02030211    |     4|  |    beiden  Variablen initialisiert. GETTIME weist $SEC und $MICRO dann die
  923. DEU|02030211    |     5|  |    seit INITTIME vergangene Zeit in Sekunden bzw. Mikrosekunden zu.
  924. DEU|02030211    |     7|  |    Beispiel :
  925. DEU|02030211    |     9|  |
  926. DEU|02030211    |    10| E|      PROC systime.control_appl;
  927. DEU|02030211    |    12| E|      READ @applname, @startmodule;
  928. DEU|02030211    |    14| E|      INITTIME;
  929. DEU|02030211    |    15| E|      SWITCHCALL :@applname CALL PROC :@startmodule;
  930. DEU|02030211    |    16|SE|      GETTIME;
  931. DEU|02030211    |    19| E|      WRITE 'Ausfⁿhrung des Programms', :@applname, NL;
  932. DEU|02030211    |    20| E|      WRITE $SEC, $MICRO, PAUSE;
  933. DEU|02030211    |    21|  |
  934. DEU|02030211    |    23|RI|                                                          ##0203040313->^Syntax
  935. DEU|02030212    |     1|  |    Zum Aufruf von Betriebssystemkommandos aus einem SQL-PL Programm heraus
  936. DEU|02030212    |     2|  |    dient das EXEC-Kommando.
  937. DEU|02030212    |     4|  |    Normalerweise werden die Betriebssystemkommandos  synchron  aufgerufen.
  938. DEU|02030212    |     5|  |    Einige    Betriebssysteme   erlauben   zusΣtzlich   einen   asynchronen
  939. DEU|02030212    |     6|  |    Kommandoaufruf.
  940. DEU|02030212    |     8|  |    Beim synchronen Aufruf wird ein Programmergebnis  in  einer  beliebigen
  941. DEU|02030212    |     9|  |    SQL-PL  Variablen zurⁿckgeliefert. Beim asynchronen Aufruf gibt es kein
  942. DEU|02030212    |    10|  |    solches Ergebnis.
  943. DEU|02030212    |    12|  |    Beispiele:
  944. DEU|02030212    |    14|  |
  945. DEU|02030212    |    15| E|      EXEC 'ls -l' RESULT resultvar;         /* synchroner Aufruf
  946. DEU|02030212    |    17|SE|      EXEC ASYNC 'ls -l > list';             /* asynchroner Aufruf
  947. DEU|02030212    |    19|  |
  948. DEU|02030212    |    21|RI|                                                          ##0203040257->^Syntax
  949. DEU|020303      |     1|  |                    Standardfunktionen
  950. DEU|020303      |     2|  |                    ------------------
  951. DEU|020303      |     4| M|                    #01$-Funktionen
  952. DEU|020303      |     5| M|                    #02Arithmetische^Funktionen
  953. DEU|020303      |     6| M|                    #03Stringfunktionen
  954. DEU|020303      |     7|RM|                    #04Datums-^und^Zeitfunktionen
  955. DEU|02030301    |     1|  |                        $-Funktionen
  956. DEU|02030301    |     2|  |                        ------------
  957. DEU|02030301    |     4| M|    #02$ACTION               #05$MAXLINES             #03$SEC
  958. DEU|02030301    |     5| M|    #02$CMD                  #05$MAXCOLS              #03$SERVERDB
  959. DEU|02030301    |     6| M|    #09$COLNO               ##02030211$MICRO                #03$SQLCODE
  960. DEU|02030301    |     7| M|    #04$COUNT                #07$MSGLINES             #03$SQLERRMC
  961. DEU|02030301    |     8| M|    #02$CURSOR               #08$OS                   #03$SQLERRPOS
  962. DEU|02030301    |     9| M|    #02$EDITLINES            #08$PROCESSID            #06$SQLWARN
  963. DEU|02030301    |    10| M|    #02$FUNCTION             #03$RC                   #10$SYSRC
  964. DEU|02030301    |    11| M|    #01$GROUP                #09$ROWNO                #10$SYSRT
  965. DEU|02030301    |    12| M|    #10$ITEMS                #03$RT                   #08$TERM
  966. DEU|02030301    |    13| M|    #07$KEY                  #05$SCREENCOLS           #01$USER
  967. DEU|02030301    |    14| M|    #05$KEYLINES             #05$SCREENLNS            #01$USERMODE
  968. DEU|02030301    |    16|RI|                                                          ##0203040153->^Syntax
  969. DEU|0203030101  |     1|  |    $USER       liefert den Namen des Benutzers, der die Routine aufgerufen hat.
  970. DEU|0203030101  |     3|  |    $GROUP      liefert den Namen der Benutzergruppe.
  971. DEU|0203030101  |     5|  |    $SERVERDB   liefert den Namen der Datenbank.
  972. DEU|0203030101  |     7|  |    $USERMODE   liefert den Benutzerstatus (STANDARD, RESOURCE, DBA)
  973. DEU|0203030101  |     9|RI|                                                          ##0203040315->^Syntax
  974. DEU|0203030102  |     1|  |    $KEY        liefert die zuletzt benutzte Ausl÷setaste.
  975. DEU|0203030102  |     2|  |                M÷glich sind : F1, ..., F9, ENTER, HELP
  976. DEU|0203030102  |     4|  |    $CURSOR     liefert die Nummer des Eingabefeldes, auf dem die
  977. DEU|0203030102  |     5|  |                Schreibmarke beim letzten FORM-Aufruf plaziert war.
  978. DEU|0203030102  |     7|  |    $CMD        liefert den Inhalt der Kommandozeile des Editors, wenn
  979. DEU|0203030102  |     8|  |                er aus einer SQL-PL Routine heraus aufgerufen wurde.
  980. DEU|0203030102  |    10|  |    $EDITLINES  liefert die Anzahl der Zeilen, die beim Editoraufruf
  981. DEU|0203030102  |    11|  |                bearbeitet wurden.
  982. DEU|0203030102  |    13|  |    $ACTION     liefert das aktivierte Feld der Menⁿleiste.
  983. DEU|0203030102  |    15|  |    $FUNCTION   liefert das ausgewΣhlte Feld eines Pulldown-Menⁿs.
  984. DEU|0203030102  |    17|RI|                                                          ##0203040316->^Syntax
  985. DEU|0203030103  |     1|  |    $RC liefert den Returncode des letzten SQL-Kommandos.
  986. DEU|0203030103  |     3|  |    Einige wichtige Returncodes :
  987. DEU|0203030103  |     5|  |                   0   - alles OK
  988. DEU|0203030103  |     6|  |                   100 - Zeile nicht gefunden
  989. DEU|0203030103  |     7|  |                   200 - doppelter Zeilenschlⁿssel
  990. DEU|0203030103  |     8|  |                   300 - Wertebereichsverletzung
  991. DEU|0203030103  |    11|  |    $RT liefert den zu $RC passenden (Fehler-) Text.
  992. DEU|0203030103  |    13|  |    Beispiel :
  993. DEU|0203030103  |    15|  |      $RC = 100   -->  $RT = '100 Zeile nicht gefunden'
  994. DEU|0203030103  |    17|S |    Synonym fⁿr $RC ist $SQLCODE; fⁿr $RT  $SQLERRMC.
  995. DEU|0203030103  |    19|  |    $SQLERRPOS liefert die Fehlerposition innerhalb des SQL-Kommandos,
  996. DEU|0203030103  |    20|  |               falls die Analyse scheitert.
  997. DEU|0203030103  |    22|RI|                                                          ##0203040316->^Syntax
  998. DEU|0203030104  |     1|  |    $COUNT  liefert die Anzahl der bei einem Massen-Select gefundenen Zeilen.
  999. DEU|0203030104  |     3|  |    Nach dem SQL-Kommando
  1000. DEU|0203030104  |     5|  |        SQL ( SELECT * FROM kunde );
  1001. DEU|0203030104  |     7|  |    ist m÷glich
  1002. DEU|0203030104  |     9|  |        $COUNT = 0      keine Zeile wurde gefunden ( $RC = 100 )
  1003. DEU|0203030104  |    10|  |        $COUNT = n      n Zeilen wurden gefunden
  1004. DEU|0203030104  |    11|  |        $COUNT IS NULL  es wurden Zeilen gefunden, die Anzahl ist jedoch
  1005. DEU|0203030104  |    12|  |                        noch nicht bekannt.
  1006. DEU|0203030104  |    14|  |    Au▀erdem liefert  $COUNT  nach  UPDATE-,  INSERT-,  DELETE-  und  SHOW-
  1007. DEU|0203030104  |    15|  |    Kommandos die Anzahl der betroffenen Zeilen.
  1008. DEU|0203030104  |    17|RI|                                                          ##0203040315->^Syntax
  1009. DEU|0203030105  |     1|  |    $SCREENLNS   liefert die maximale Anzahl der m÷glichen Zeilen in
  1010. DEU|0203030105  |     2|  |                 der zuletzt aufgerufenen Maske.
  1011. DEU|0203030105  |     4|  |    $SCREENCOLS  liefert die maximal m÷gliche Anzahl von Zeichen pro
  1012. DEU|0203030105  |     5|  |                 Zeile in der zuletzt aufgerufenen Maske.
  1013. DEU|0203030105  |     7|  |    $MAXLINES    liefert die maximale Anzahl der m÷glichen Zeilen pro
  1014. DEU|0203030105  |     8|  |                 Bildschirm.
  1015. DEU|0203030105  |    10|  |    $MAXCOLS     liefert die maximal m÷gliche Anzahl von Zeichen pro
  1016. DEU|0203030105  |    11|  |                 Bildschirmzeile.
  1017. DEU|0203030105  |    13|RI|                                                          ##0203040314->^Syntax
  1018. DEU|0203030106  |     1|  |    $SQLWARN
  1019. DEU|0203030106  |     3|  |    Mit dieser Funktion k÷nnen die vom Datenbanksystem gemeldeten Warnungen
  1020. DEU|0203030106  |     4|  |    abgefragt  werden.  Die Funktion mu▀ in logischen Ausdrⁿcken (z. B. IF)
  1021. DEU|0203030106  |     5|  |    verwendet werden. $SQLWARN ist wahr, wenn  weitere  Warnungen  gemeldet
  1022. DEU|0203030106  |     6|  |    wurden;  diese  k÷nnen  dann  mit $SQLWARN(1) .. $SQLWARN(15) abgefragt
  1023. DEU|0203030106  |     7|  |    werden.
  1024. DEU|0203030106  |     9|  |    Beispiel :
  1025. DEU|0203030106  |    11|  |
  1026. DEU|0203030106  |    12| E|      IF   $SQLWARN   /* any warning ?
  1027. DEU|0203030106  |    13| E|      THEN FOR i := 1 TO 15 DO
  1028. DEU|0203030106  |    14| E|              IF   $SQLWARN (i)
  1029. DEU|0203030106  |    15| E|              THEN WRITE NL,'Warning ',i,' ist gesetzt';
  1030. DEU|0203030106  |    16|S |
  1031. DEU|0203030106  |    19|RI|                                                          ##0203040316->^Syntax
  1032. DEU|0203030107  |     1|  |    $KEYLINES  liefert 1, wenn der Bildschirm ⁿber eine Softkeyzeilentaste
  1033. DEU|0203030107  |     2|  |               verfⁿgt, sonst 0.
  1034. DEU|0203030107  |     4|  |    $MSGLINES  liefert 1, wenn der Bildschirm ⁿber eine zusΣtzliche
  1035. DEU|0203030107  |     5|  |               Systemzeile fⁿr die Message verfⁿgt, sonst 0.
  1036. DEU|0203030107  |     7|RI|                                                          ##0203040315->^Syntax
  1037. DEU|0203030108  |     1|  |    $OS         liefert den Namen des aktuellen Betriebssystems
  1038. DEU|0203030108  |     3|  |    $TERM       liefert den Wert der Environment-Variable TERM
  1039. DEU|0203030108  |     5|  |    $PROCESSID  liefert einen numerischen Wert fⁿr den aktuellen
  1040. DEU|0203030108  |     6|  |                Betriebssystem-Proze▀
  1041. DEU|0203030108  |     8|RI|                                                          ##0203040315->^Syntax
  1042. DEU|0203030109  |     1|  |    $ROWNO, $COLNO  liefern nach einem REPORT-Aufruf die Zeile
  1043. DEU|0203030109  |     2|  |                    und Spalte der REPORT-Anzeige, in der der Cursor
  1044. DEU|0203030109  |     3|  |                    zuletzt positioniert war.
  1045. DEU|0203030109  |     4|  |                    War der Cursor au▀erhalb der REPORT-Anzeige
  1046. DEU|0203030109  |     5|  |                    positioniert, so sind $ROWNO und $COLNO 0.
  1047. DEU|0203030109  |     7|RI|                                                          ##0203040314->^Syntax
  1048. DEU|0203030110  |     1|  |    $SYSRC      liefert die Fehlernummer des letzten Datei- oder EXEC-Kommandos
  1049. DEU|0203030110  |     3|  |    $SYSRT      liefert einen erlΣuternden Fehlertext
  1050. DEU|0203030110  |     5|  |    $ITEMS      liefert die beim letzten TOKENIZE oder SEPARATE erkannten
  1051. DEU|0203030110  |     6|  |                Felder bzw. die Anzahl der beim letzten CHANGE durchgefⁿhrten
  1052. DEU|0203030110  |     7|  |                Ersetzungen
  1053. DEU|0203030110  |     9|RI|                                                          ##0203040315->^Syntax
  1054. DEU|02030302    |     1|  |                    Arithmetische Funktionen
  1055. DEU|02030302    |     2|  |                    ------------------------
  1056. DEU|02030302    |     4| M|                    #07ABS          #01MIN
  1057. DEU|02030302    |     5| M|                    #03ARCTAN       #05PI
  1058. DEU|02030302    |     6| M|                    #01AVG          #02ROUND
  1059. DEU|02030302    |     7| M|                    #03COS          #08SIGN
  1060. DEU|02030302    |     8| M|                    #04EXP          #03SIN
  1061. DEU|02030302    |     9| M|                    #04LN           #06SQR
  1062. DEU|02030302    |    10| M|                    #01MAX          #06SQRT
  1063. DEU|02030302    |    11| M|                    #05MDS          #02TRUNC
  1064. DEU|02030302    |    12|RI|                                                          ##0203040259->^Syntax
  1065. DEU|0203030201  |     1|  |    MIN  liefert den kleinsten Wert der angegebenen Menge.
  1066. DEU|0203030201  |     3|  |    MAX  liefert den gr÷▀ten Wert der angegebenen Menge.
  1067. DEU|0203030201  |     5|  |    AVG  liefert den Durchschnittswert der angegebenen Menge.
  1068. DEU|0203030201  |     7|  |    Beispiele :
  1069. DEU|0203030201  |     9|  |
  1070. DEU|0203030201  |    10| E|      MIN (1,2,3)     --> 1
  1071. DEU|0203030201  |    11| E|      MAX (1,1/0,3)   --> 3            ( 1/0  -> NULL ! )
  1072. DEU|0203030201  |    12| E|      AVG (1,10/0,3)  --> NULL
  1073. DEU|0203030201  |    13|  |
  1074. DEU|0203030201  |    15|RI|                                                          ##0203040302->^Syntax
  1075. DEU|0203030202  |     1|  |    ROUND  rundet die Zahl auf die angegebene Anzahl von Nachkommastellen.
  1076. DEU|0203030202  |     3|  |    TRUNC  verkⁿrzt die Zahl auf die angegebene Anzahl von Nachkommastellen.
  1077. DEU|0203030202  |     5|  |    Beispiele :
  1078. DEU|0203030202  |     7|  |
  1079. DEU|0203030202  |     8| E|      ROUND (1234.567 , 2)  --> 1234.57
  1080. DEU|0203030202  |     9| E|      TRUNC (1234.567 , 2)  --> 1234.56
  1081. DEU|0203030202  |    10| E|      TRUNC (1/0,3)         --> NULL         ( 1/0  -> NULL ! )
  1082. DEU|0203030202  |    11|  |
  1083. DEU|0203030202  |    13|RI|                                                          ##0203040259->^Syntax
  1084. DEU|0203030203  |     1|  |    SIN COS ARCTAN
  1085. DEU|0203030203  |     3|  |    Die bekannten trigonometrischen Funktionen.
  1086. DEU|0203030203  |     4|  |    Als Argument wird der Radiant erwartet.
  1087. DEU|0203030203  |     6|  |    Beispiele :
  1088. DEU|0203030203  |     8|  |
  1089. DEU|0203030203  |     9| E|      SIN (0)     --> 0
  1090. DEU|0203030203  |    10| E|      COS (0)     --> 1
  1091. DEU|0203030203  |    11| E|      ARCTAN (0)  --> 0
  1092. DEU|0203030203  |    12|  |
  1093. DEU|0203030203  |    14|RI|                                                          ##0203040259->^Syntax
  1094. DEU|0203030204  |     1|  |    EXP LN
  1095. DEU|0203030204  |     3|  |    Die bekannten mathematischen Funktionen
  1096. DEU|0203030204  |     5|  |    Beispiel :
  1097. DEU|0203030204  |     7|  |
  1098. DEU|0203030204  |     8| E|      LN (EXP(5)) --> 5  (ungefΣhr)
  1099. DEU|0203030204  |     9|  |
  1100. DEU|0203030204  |    11|RI|                                                          ##0203040259->^Syntax
  1101. DEU|0203030205  |     1|  |    PI   liefert den Wert von Pi auf 18 Stellen genau.
  1102. DEU|0203030205  |     3|  |    MDS  liefert die Maximalgr÷▀e eines Variablenwertes.
  1103. DEU|0203030205  |     5|RI|                                                          ##0203040259->^Syntax
  1104. DEU|0203030206  |     1|  |    SQR   liefert das Quadrat eines Ausdrucks.
  1105. DEU|0203030206  |     3|  |    SQRT  liefert die Quadratwurzel.
  1106. DEU|0203030206  |     5|  |    Beispiele :
  1107. DEU|0203030206  |     7|  |
  1108. DEU|0203030206  |     8| E|      SQR (2)   --> 4
  1109. DEU|0203030206  |     9| E|      SQRT (4)  --> 2
  1110. DEU|0203030206  |    10|  |
  1111. DEU|0203030206  |    12|RI|                                                          ##0203040259->^Syntax
  1112. DEU|0203030207  |     1|  |    ABS  liefert den Absolutbetrag eines numerischen Ausdrucks.
  1113. DEU|0203030207  |     3|  |    Beispiele :
  1114. DEU|0203030207  |     5|  |
  1115. DEU|0203030207  |     6| E|      ABS (-1)  --> 1
  1116. DEU|0203030207  |     7| E|      ABS (1)   --> 1
  1117. DEU|0203030207  |     8|  |
  1118. DEU|0203030207  |    10|RI|                                                          ##0203040259->^Syntax
  1119. DEU|0203030208  |     1|  |    SIGN  liefert das Vorzeichen eines numerischen Ausdrucks.
  1120. DEU|0203030208  |     3|  |    Beispiele :
  1121. DEU|0203030208  |     5|  |
  1122. DEU|0203030208  |     6| E|      SIGN(100)     ->  1
  1123. DEU|0203030208  |     7| E|      SIGN(-PI)     -> -1
  1124. DEU|0203030208  |     8| E|      SIGN(0)       ->  0
  1125. DEU|0203030208  |     9|  |
  1126. DEU|0203030208  |    11|RI|                                                          ##0203040259->^Syntax
  1127. DEU|02030303    |     1|  |                      Stringfunktionen
  1128. DEU|02030303    |     2|  |                      ----------------
  1129. DEU|02030303    |     4| M|                      #12BREAK        #15SEPARATE
  1130. DEU|02030303    |     5| M|                      #07CHANGE       #11SET
  1131. DEU|02030303    |     6| M|                      #08CHR          #13SPAN
  1132. DEU|02030303    |     7| M|                      #04FORMAT       #06STRPOS
  1133. DEU|02030303    |     8| M|                      #05INDEX        #02SUBSTR
  1134. DEU|02030303    |     9| M|                      #09HEX          #03TRIM
  1135. DEU|02030303    |    10| M|                      #03LENGTH       #15TOKENIZE
  1136. DEU|02030303    |    11| M|                      #10LOWER        #10UPPER
  1137. DEU|02030303    |    12| M|                      #08ORD          #02Konkatenation (&)
  1138. DEU|02030303    |    13| M|                      #14PAD          #01Zeichen-Wiederholung
  1139. DEU|02030303    |    14|RI|                                                          ##0203040305->^Syntax
  1140. DEU|0203030301  |     1|  |    Das angegebene Zeichen wird  entsprechend  der  durch  den  numerischen
  1141. DEU|0203030301  |     2|  |    Ausdruck definierten Anzahl wiederholt.
  1142. DEU|0203030301  |     4|  |    Beispiele :
  1143. DEU|0203030301  |     6|  |
  1144. DEU|0203030301  |     7| E|      '.'(5)     --> '.....';
  1145. DEU|0203030301  |     8| E|      a := 5;
  1146. DEU|0203030301  |     9| E|      BLANK(a)   --> '     '
  1147. DEU|0203030301  |    10|R |
  1148. DEU|0203030302  |     1|  |    Konkatenation (&) verbindet Strings.
  1149. DEU|0203030302  |     3|  |    SUBSTR  ermittelt den Teilstring ab der angegebenen Position in der
  1150. DEU|0203030302  |     4|  |            angegebenen LΣnge bzw. bis zum Ende des Strings, wenn keine
  1151. DEU|0203030302  |     5|  |            LΣnge angegeben wird.
  1152. DEU|0203030302  |     7|  |    Beispiele :
  1153. DEU|0203030302  |     9|  |
  1154. DEU|0203030302  |    10| E|      name   := vorname & nachname;
  1155. DEU|0203030302  |    11| E|      name   := 'Nachname : ' & nachname & ' Vorname : ' & vorname;
  1156. DEU|0203030302  |    12| E|      string := SUBSTR ('abcdefg',3,2)  --> 'cd'
  1157. DEU|0203030302  |    13| E|      string := SUBSTR ('abcdefg',3)    --> 'cdefg'
  1158. DEU|0203030302  |    14| E|      string := SUBSTR ('abcdefg',8)    --> NULL
  1159. DEU|0203030302  |    15| E|      string := SUBSTR ('abcdefg',4,10) --> 'defg'
  1160. DEU|0203030302  |    16|S |
  1161. DEU|0203030302  |    19|RI|                                                          ##0203040305->^Syntax
  1162. DEU|0203030303  |     1|  |    LENGTH  ermittelt die LΣnge des angegebenen Ausdrucks.
  1163. DEU|0203030303  |     3|  |    TRIM    entfernt das angegebene Zeichen (Leerzeichen, wenn nicht anders
  1164. DEU|0203030303  |     4|  |            angegeben) am Anfang und Ende des Stringausdrucks. Durch ein
  1165. DEU|0203030303  |     5|  |            zusΣtzliches Argument kann dies auf eine der beiden Seiten
  1166. DEU|0203030303  |     6|  |            eingeschrΣnkt werden.
  1167. DEU|0203030303  |     8|  |    Beispiele :
  1168. DEU|0203030303  |    10|  |
  1169. DEU|0203030303  |    11| E|      LENGTH ('drei')                 --> 4
  1170. DEU|0203030303  |    12| E|      LENGTH ('drei' & 'unddrei▀ig') --> 15
  1171. DEU|0203030303  |    13| E|      TRIM ('   A   ');               --> 'A'
  1172. DEU|0203030303  |    14| E|      TRIM ('   A   ','.');           --> '   A   '
  1173. DEU|0203030303  |    15| E|      TRIM ('...A   ','.');           --> 'A   '
  1174. DEU|0203030303  |    16| E|      TRIM ('  A  ', ' ', RIGHT )     -->   '  A'
  1175. DEU|0203030303  |    17|SE|      TRIM ('  A  ', ' ', LEFT  )     -->   'A  '
  1176. DEU|0203030303  |    19| E|      TRIM ('  A  ', ' ', BOTH  )     -->   'A'
  1177. DEU|0203030303  |    20|  |
  1178. DEU|0203030303  |    22|RI|                                                          ##0203040305->^Syntax
  1179. DEU|0203030304  |     1|  |    FORMAT dient zur Aufbereitung von Zahlen fⁿr die Ausgabe.
  1180. DEU|0203030304  |     3|  |    Beispiele :
  1181. DEU|0203030304  |     5|  |
  1182. DEU|0203030304  |     6| E|      FORMAT ( 1234,  '9 999' )       --> '1 234'
  1183. DEU|0203030304  |     7| E|      FORMAT ( 1234,  '9,999.99 Kg' ) --> '1,234.00 Kg'
  1184. DEU|0203030304  |     8| E|      FORMAT ( 12.3,  'DM 999,99' )   --> 'DM  12,30'
  1185. DEU|0203030304  |     9| E|      FORMAT ( 1.234, '9 Kg 555 g' )  --> '1 Kg 234 g'
  1186. DEU|0203030304  |    10| E|      FORMAT ( 12.34, '.9999e-99' )   --> '.1234e+02'
  1187. DEU|0203030304  |    11| E|      FORMAT ( -123,  '99 999' )      --> '  -123'
  1188. DEU|0203030304  |    12| E|      FORMAT (  123,  '+9 999' )      --> '+  123'
  1189. DEU|0203030304  |    13| E|      FORMAT (-1234,  '99 999-' )     --> ' 1 234-'
  1190. DEU|0203030304  |    14| E|      FORMAT ( 123,   '099 999' )     --> '000 123'
  1191. DEU|0203030304  |    15| E|      FORMAT ( 123,   '*99 999' )     --> '****123'
  1192. DEU|0203030304  |    16| E|      FORMAT ( 123,   '$>99 999' )    --> '   $123'
  1193. DEU|0203030304  |    17|S |
  1194. DEU|0203030304  |    19|RI|                                                          ##0203040305->^Syntax
  1195. DEU|0203030305  |     1|  |    INDEX  durchsucht einen Vektor nach einem bestimmten Wert.
  1196. DEU|0203030305  |     2|  |           Wird dieser Wert gefunden, liefert die Funktion den Index der
  1197. DEU|0203030305  |     3|  |           Vektorkomponente.
  1198. DEU|0203030305  |     5|  |    Beispiel :
  1199. DEU|0203030305  |     7|  |
  1200. DEU|0203030305  |     8| E|      a (5..7) := 'x';
  1201. DEU|0203030305  |     9| E|      INDEX (a(1..10),'x')        --> 5
  1202. DEU|0203030305  |    10| E|      INDEX (a(10..1),'x')        --> 7
  1203. DEU|0203030305  |    11| E|      INDEX (a(1..3),'x')         --> NULL
  1204. DEU|0203030305  |    12| E|      INDEX (a(1..10), NOT NULL ) --> 5
  1205. DEU|0203030305  |    13|  |
  1206. DEU|0203030305  |    15|RI|                                                          ##0203040301->^Syntax
  1207. DEU|0203030306  |     1|  |    STRPOS  durchsucht einen Variablenwert nach der angegebenen Zeichen-
  1208. DEU|0203030306  |     2|  |            kette. Wird diese gefunden, gibt STRPOS die Anfangsposition
  1209. DEU|0203030306  |     3|  |            als Ergebnis zurⁿck; anderenfalls liefert STRPOS NULL.
  1210. DEU|0203030306  |     4|  |            Es ist m÷glich, die Startposition der Suche anzugeben.
  1211. DEU|0203030306  |     6|  |    Beispiele :
  1212. DEU|0203030306  |     8|  |
  1213. DEU|0203030306  |     9| E|      STRPOS ('aabbccbbee','bb')    --> 3;
  1214. DEU|0203030306  |    10| E|      STRPOS ('aabbccbbee','bb',4)  --> 7;
  1215. DEU|0203030306  |    11| E|      STRPOS ('aabbccbbee','xx',4)  --> NULL;
  1216. DEU|0203030306  |    12|  |
  1217. DEU|0203030306  |    14|RI|                                                          ##0203040301->^Syntax
  1218. DEU|0203030307  |     1|  |    CHANGE  ersetzt eine Zeichenkette in einem Variablenwert durch eine
  1219. DEU|0203030307  |     2|  |            andere Zeichenkette. Die Anzahl der Ersetzungen kann mittels
  1220. DEU|0203030307  |     3|  |            $ITEMS abgefragt werden.
  1221. DEU|0203030307  |     5|  |    Beispiel :
  1222. DEU|0203030307  |     7|  |
  1223. DEU|0203030307  |     8| E|      string := CHANGE (string,' ','_'); /* ersetzt Leerzeichen
  1224. DEU|0203030307  |     9| E|                                         /* durch Unterstrich
  1225. DEU|0203030307  |    10| E|      string := CHANGE (string,' ');     /* eliminiert Leerzeichen
  1226. DEU|0203030307  |    11|  |
  1227. DEU|0203030307  |    13|RI|                                                          ##0203040305->^Syntax
  1228. DEU|0203030308  |     1|  |    CHR  liefert fⁿr den gegebenen numerischen Wert das Zeichen, das der
  1229. DEU|0203030308  |     2|  |         CHAR-Darstellung dieses Wertes entspricht. Wird etwas anderes
  1230. DEU|0203030308  |     3|  |         als ein numerischer Wert angegeben oder gibt es keine
  1231. DEU|0203030308  |     4|  |         CHAR-Darstellung fⁿr den numerischen Wert, liefert CHR als
  1232. DEU|0203030308  |     5|  |         Ergebnis den NULL-Wert.
  1233. DEU|0203030308  |     7|  |    ORD  ist die Umkehrfunktion zu CHR. Sie liefert fⁿr ein
  1234. DEU|0203030308  |     8|  |         Zeichen den entsprechenden numerischen Wert.
  1235. DEU|0203030308  |    10|  |    Beispiele :
  1236. DEU|0203030308  |    12|  |
  1237. DEU|0203030308  |    13| E|      b := ORD ('a');
  1238. DEU|0203030308  |    14| E|      a := CHR (b);         --> a = 'a';
  1239. DEU|0203030308  |    15|  |
  1240. DEU|0203030308  |    17|RI|                                                          ##0203040305->^Syntax
  1241. DEU|0203030309  |     1|  |    HEX  kann auf einen beliebigen String-Ausdruck angewendet werden.
  1242. DEU|0203030309  |     2|  |         Sie liefert einen doppeltlangen String in hexadezimaler Darstellung.
  1243. DEU|0203030309  |     4|  |    Beispiele :
  1244. DEU|0203030309  |     6|  |
  1245. DEU|0203030309  |     7| E|      hxstr := HEX ('Hallo');
  1246. DEU|0203030309  |     8|  |
  1247. DEU|0203030309  |    10|RI|                                                          ##0203040305->^Syntax
  1248. DEU|0203030310  |     1|  |    LOWER  wandelt die angegebene Zeichenkette in Kleinbuchstaben um.
  1249. DEU|0203030310  |     3|  |    UPPER  wandelt die angegebene Zeichenkette in Gro▀buchstaben um.
  1250. DEU|0203030310  |     5|  |    Beispiele:
  1251. DEU|0203030310  |     7|  |
  1252. DEU|0203030310  |     8| E|    LOWER ('Guten TAG !')  --> 'guten tag !'
  1253. DEU|0203030310  |     9| E|    UPPER ('Guten TAG !')  --> 'GUTEN TAG !'
  1254. DEU|0203030310  |    10|  |
  1255. DEU|0203030310  |    12|RI|                                                          ##0203040305->^Syntax
  1256. DEU|0203030311  |     1|  |    Die  Einstellung  der  benutzerspezifischen  SET-Parameter kann mit der
  1257. DEU|0203030311  |     2|  |    SET-Funktion ermittelt werden.
  1258. DEU|0203030311  |     4|  |    Beispiele :
  1259. DEU|0203030311  |     6|  |
  1260. DEU|0203030311  |     7| E|      @lang := SET ( LANGUAGE );
  1261. DEU|0203030311  |     8|  |
  1262. DEU|0203030311  |    10|  |    Nur die zur Laufzeit relevanten Set-Parameter lassen sich durch
  1263. DEU|0203030311  |    11| I|    ##0203021001Schlⁿsselw÷rter abfragen.
  1264. DEU|0203030311  |    13| I|    Die ─nderung der SET-Parameter erfolgt mit der ##02030210SET-Anweisung.
  1265. DEU|0203030311  |    15|RI|                                                          ##0203040310->^Syntax
  1266. DEU|0203030312  |     1|  |    BREAK durchsucht einen Variablenwert nach dem ersten Vorkommen eines
  1267. DEU|0203030312  |     2|  |          Zeichens der angegebenen Zeichenkette. BREAK gibt die
  1268. DEU|0203030312  |     3|  |          Anfangsposition als Ergebnis zurⁿck. Es ist m÷glich, die
  1269. DEU|0203030312  |     4|  |          Startposition der Suche anzugeben.
  1270. DEU|0203030312  |     6|  |    Beispiele :
  1271. DEU|0203030312  |     8|  |
  1272. DEU|0203030312  |     9| E|      BREAK ( '999.999,99', '.,' )     -->  4
  1273. DEU|0203030312  |    10| E|      BREAK ( '999.999,99', '.,', 5 )  -->  8
  1274. DEU|0203030312  |    11| E|      BREAK ( '999.999,99', 'abc', 5 ) --> 11
  1275. DEU|0203030312  |    12|  |
  1276. DEU|0203030312  |    14|RI|                                                          ##0203040301->^Syntax
  1277. DEU|0203030313  |     1|  |    SPAN durchsucht einen Variablenwert nach dem ersten Vorkommen eines
  1278. DEU|0203030313  |     2|  |         Zeichens, welches nicht in der angegebenen Zeichenkette vorkommt.
  1279. DEU|0203030313  |     3|  |         STRPOS gibt die Anfangsposition als Ergebnis zurⁿck. Es ist
  1280. DEU|0203030313  |     4|  |         m÷glich, die Startposition der Suche anzugeben.
  1281. DEU|0203030313  |     6|  |    Beispiele :
  1282. DEU|0203030313  |     8|  |
  1283. DEU|0203030313  |     9| E|      SPAN ( 'aabbccdd', 'ab' )               --> 5
  1284. DEU|0203030313  |    10| E|      SPAN ( '999.999,99', '0123456789' )     --> 4
  1285. DEU|0203030313  |    11| E|      SPAN ( 'aabbccdd', 'abcd' )             --> 9
  1286. DEU|0203030313  |    12|  |
  1287. DEU|0203030313  |    14|RI|                                                          ##0203040301->^Syntax
  1288. DEU|0203030314  |     1|  |    PAD fⁿllt eine Zeichenkette auf die angegebene LΣnge auf. Durch
  1289. DEU|0203030314  |     2|  |         ein zusΣtzliches Argument kann angegeben werden, ob links,
  1290. DEU|0203030314  |     3|  |         rechts oder auf beiden Seiten Leerzeichen hinzu gefⁿgt werden.
  1291. DEU|0203030314  |     5|  |    Beispiele :
  1292. DEU|0203030314  |     7|  |
  1293. DEU|0203030314  |     8| E|        PAD ( 'abc', 7 )         -->     'abc    '
  1294. DEU|0203030314  |     9| E|        PAD ( 'abc', 7, RIGHT )  -->     'abc    '
  1295. DEU|0203030314  |    10| E|        PAD ( 'abc', 7, LEFT  )  -->     '    abc'
  1296. DEU|0203030314  |    11| E|        PAD ( 'abc', 7, BOTH  )  -->     '  abc  '
  1297. DEU|0203030314  |    12|  |
  1298. DEU|0203030314  |    14|RI|                                                          ##0203040305->^Syntax
  1299. DEU|0203030315  |     1|  |    TOKENIZE und  SEPARATE  fⁿllen  einen  Vektor  mit  den  Feldern  einer
  1300. DEU|0203030315  |     2|  |    Zeichenkette.   Die   Felder  werden  durch  die  im  zweiten  Argument
  1301. DEU|0203030315  |     3|  |    enthaltenen Zeichen getrennt. TOKENIZE fa▀t mehrere aufeinanderfolgende
  1302. DEU|0203030315  |     4|  |    Trennzeichen zu einem einzigen zusammen, SEPARATE erkennt zwischen zwei
  1303. DEU|0203030315  |     5|  |    Trennzeichen immer ein weiteres Feld mit dem Wert NULL. Nach dem Aufruf
  1304. DEU|0203030315  |     6|  |    enthΣlt die Systemvariable $ITEMS die Anzahl der erkannten Felder.
  1305. DEU|0203030315  |     8|  |    Beispiele :
  1306. DEU|0203030315  |    10|  |
  1307. DEU|0203030315  |    11| E|    @t(1..20) := TOKENIZE ( '1,2,,3', ',' );
  1308. DEU|0203030315  |    12|  |
  1309. DEU|0203030315  |    13|  |    @t(1)   ->  '1';
  1310. DEU|0203030315  |    14|  |    @t(2)   ->  '2';
  1311. DEU|0203030315  |    15|  |    @t(3)   ->  '3';
  1312. DEU|0203030315  |    17|S |
  1313. DEU|0203030315  |    19| E|    @t(1..20) := SEPARATE ( '1,2,,3', ',' );
  1314. DEU|0203030315  |    20|  |
  1315. DEU|0203030315  |    21|  |    @t(1)   ->  '1';
  1316. DEU|0203030315  |    22|  |    @t(2)   ->  '2';
  1317. DEU|0203030315  |    23|  |    @t(3)   ->  NULL;
  1318. DEU|0203030315  |    24|  |    @t(4)   ->  '3';
  1319. DEU|0203030315  |    26|RI|                                                          ##0203040305->^Syntax
  1320. DEU|02030304    |     1|  |                      Datums- und Zeitfunktionen
  1321. DEU|02030304    |     2|  |                      --------------------------
  1322. DEU|02030304    |     4| M|                      #02ADDDATE
  1323. DEU|02030304    |     5| M|                      #04ADDTIME
  1324. DEU|02030304    |     6| M|                      #01DATE
  1325. DEU|02030304    |     7| M|                      #02DATEDIFF
  1326. DEU|02030304    |     8| M|                      #03DAYOFWEEK
  1327. DEU|02030304    |     9| M|                      #03DAYOFYEAR
  1328. DEU|02030304    |    10| M|                      #05MAKETIME
  1329. DEU|02030304    |    11| M|                      #02SUBDATE
  1330. DEU|02030304    |    12| M|                      #04SUBTIME
  1331. DEU|02030304    |    13| M|                      #01TIME
  1332. DEU|02030304    |    14| M|                      #04TIMEDIFF
  1333. DEU|02030304    |    15| M|                      #03WEEKOFYEAR
  1334. DEU|02030304    |    16|RI|                                                          ##0203040307->^Syntax
  1335. DEU|0203030401  |     1|  |    Mit DATE und TIME k÷nnen Datums- und Zeitangaben erzeugt und  umgeformt
  1336. DEU|0203030401  |     2|  |    werden.
  1337. DEU|0203030401  |     4|  |    Beispiele Tagesdatum und aktuelle Uhrzeit :
  1338. DEU|0203030401  |     6|  |      Am 21.1.89 liefert
  1339. DEU|0203030401  |     7|  |      DATE (mm/dd/yy)     -->  '01/21/89'
  1340. DEU|0203030401  |     8|  |      DATE (yyyy mm.dd)   -->  '1989 01.21'
  1341. DEU|0203030401  |     9|  |      DATE (dd mmm yyyy)  -->  '21 Jan 1989'
  1342. DEU|0203030401  |    10|  |      DATE (yyyy)         -->  '1989'
  1343. DEU|0203030401  |    12|  |      Um 17 Uhr 23 und 11 Sekunden liefert
  1344. DEU|0203030401  |    14|  |      TIME  (hh:mm-ss) --> '17:23-11'
  1345. DEU|0203030401  |    15|S |      TIME  (hhmm)        --> '1723'
  1346. DEU|0203030401  |    19|  |    Beispiele fⁿr vorgegebene Daten :
  1347. DEU|0203030401  |    20|  |
  1348. DEU|0203030401  |    21| E|      datum := '01.01.88';
  1349. DEU|0203030401  |    22| E|      datum := DATE ( YYYY/MM/DD, datum, dd.mm.yy );
  1350. DEU|0203030401  |    24| E|      datum := '09.03.94';
  1351. DEU|0203030401  |    25| E|      datum := DATE ( , datum, dd.mm.yy );
  1352. DEU|0203030401  |    27| E|      uhrzeit := '12:00:05';
  1353. DEU|0203030401  |    28| E|      uhrzeit := TIME ( hhmmss, uhrzeit, hh:mm:ss);
  1354. DEU|0203030401  |    29|  |
  1355. DEU|0203030401  |    30|  |    Die  zweite  Maske  beschreibt das Format des Eingabewertes. Fehlt eine
  1356. DEU|0203030401  |    31|  |    der Beschreibungen, wird das in den SET-Parametern eingestellte  Format
  1357. DEU|0203030401  |    32|  |    verwendet.
  1358. DEU|0203030401  |    34|RI|                                                          ##0203040307->^Syntax
  1359. DEU|0203030402  |     1|  |    ADDDATE   zΣhlt auf ein vorgegebenes Datum n Tage dazu.
  1360. DEU|0203030402  |     3|  |    SUBDATE   zieht von einem vorgegebenen Datum n Tage ab.
  1361. DEU|0203030402  |     5|  |    DATEDIFF  gibt die Differenz zwischen zwei Datumsangaben in Tagen an.
  1362. DEU|0203030402  |     7|  |    Beispiele :
  1363. DEU|0203030402  |     9|  |
  1364. DEU|0203030402  |    10| E|      ADDDATE ('19871231',1)           --> '19880101'
  1365. DEU|0203030402  |    11| E|      SUBDATE ('19871231',31)          --> '19871130'
  1366. DEU|0203030402  |    12| E|      DATEDIFF ('19880101','19870101') --> 365
  1367. DEU|0203030402  |    13|  |
  1368. DEU|0203030402  |    15|  |    Datumsangaben mⁿssen hierbei im Format 'YYYYMMDD' erfolgen.
  1369. DEU|0203030402  |    17|RI|                                                          ##0203040307->^Syntax
  1370. DEU|0203030403  |     1|  |    DAYOFWEEK   liefert einen numerischen Wert zwischen 1 und 7, der den
  1371. DEU|0203030403  |     2|  |                Wochentag identifiziert, wobei die 1 fⁿr Montag steht.
  1372. DEU|0203030403  |     4|  |    DAYOFYEAR   liefert einen numerischen Wert zwischen 1 und 366.
  1373. DEU|0203030403  |     6|  |    WEEKOFYEAR  liefert einen Wert zwischen 1 und 53.
  1374. DEU|0203030403  |     8|  |    Beispiele :
  1375. DEU|0203030403  |    10|  |
  1376. DEU|0203030403  |    11| E|      DAYOFWEEK ('19880105')   --> 2
  1377. DEU|0203030403  |    12| E|      DAYOFYEAR ('19870101')   --> 1
  1378. DEU|0203030403  |    13| E|      WEEKOFYEAR ('19880101')  --> 53
  1379. DEU|0203030403  |    14|  |
  1380. DEU|0203030403  |    16|S |    Datumsangaben mⁿssen hierbei im Format 'YYYYMMDD' erfolgen.
  1381. DEU|0203030403  |    19|RI|                                                          ##0203040309->^Syntax
  1382. DEU|0203030404  |     1|  |    SUBTIME   liefert eine Uhrzeit, die sich aus der Differenz der beiden
  1383. DEU|0203030404  |     2|  |              angegebenen Werte ergibt.
  1384. DEU|0203030404  |     4|  |    ADDTIME   liefert eine Uhrzeit, die sich aus der Summe der beiden
  1385. DEU|0203030404  |     5|  |              angegebenen Werte ergibt.
  1386. DEU|0203030404  |     7|  |    TIMEDIFF  liefert die positive Differenz der angegebenen Zeiten
  1387. DEU|0203030404  |     8|  |              in Sekunden.
  1388. DEU|0203030404  |     9|  |    Beispiele :
  1389. DEU|0203030404  |    11|  |
  1390. DEU|0203030404  |    12| E|      SUBTIME  ('00105523','00000023')   --> '00105500'
  1391. DEU|0203030404  |    13| E|      ADDTIME  ('00105523','00000037')   --> '00105600'
  1392. DEU|0203030404  |    14| E|      TIMEDIFF ('00000005','00000000')  --> 5
  1393. DEU|0203030404  |    15|  |
  1394. DEU|0203030404  |    17|S |    Zeitangaben mⁿssen hierbei im Format 'HHHHMMSS' erfolgen.
  1395. DEU|0203030404  |    19|RI|                                                          ##0203040308->^Syntax
  1396. DEU|0203030405  |     1|  |    MAKETIME  liefert eine Zeit, die sich aus der Summe der drei
  1397. DEU|0203030405  |     2|  |              Argumente ergibt
  1398. DEU|0203030405  |     3|  |              ( MAKETIME (<stunden>,<minuten>,<sekunden>) ).
  1399. DEU|0203030405  |     5|  |    Beispiele :
  1400. DEU|0203030405  |     7|  |
  1401. DEU|0203030405  |     8| E|      MAKETIME (10,59,33)  --> '00105933'
  1402. DEU|0203030405  |     9| E|      MAKETIME (10,59,63)  --> '00110003'
  1403. DEU|0203030405  |    10|  |
  1404. DEU|0203030405  |    12|RI|                                                          ##0203040308->^Syntax
  1405. DEU|020304      |     1|  |                            Syntaxbeschreibung
  1406. DEU|020304      |     2|  |                            ------------------
  1407. DEU|020304      |     4| M|                            #01Syntaxelemente
  1408. DEU|020304      |     5|RM|                            #05Schlⁿsselworte
  1409. DEU|02030401    |     1| I|    ##0203040101<prog^name>
  1410. DEU|02030401    |     2| I|    ##0203040102<mod^name>
  1411. DEU|02030401    |     3| I|    ##0203040103<routine>
  1412. DEU|02030401    |     4| I|    ##0203040104<parm^decl>
  1413. DEU|02030401    |     5| I|    ##0203040107<function>
  1414. DEU|02030401    |     6| I|    ##0203040108<db^procedure>
  1415. DEU|02030401    |     7| I|    ##0203040109<dbproc^parm^decl^list>
  1416. DEU|02030401    |     8| I|    ##0203040110<dbproc^parm^decl>
  1417. DEU|02030401    |     9| I|    ##0203040111<dir>
  1418. DEU|02030401    |    10| I|    ##0203040112<data^type>
  1419. DEU|02030401    |    11| I|    ##0203040113<trigger>
  1420. DEU|02030401    |    12| I|    ##0203040114<trigger^parm^decl>
  1421. DEU|02030401    |    13| I|    ##0203040115<trigger^column^spec>
  1422. DEU|02030401    |    14| I|    ##0203040116<trigger^predicat>
  1423. DEU|02030401    |    15| I|    ##0203040117<help^form>
  1424. DEU|02030401    |    16| I|    ##0203040118<name>
  1425. DEU|02030401    |    17|SI|    ##0203040119<literal>
  1426. DEU|02030401    |    19| I|    ##0203040120<numeric>
  1427. DEU|02030401    |    20| I|    ##0203040121<unsigned^integer>
  1428. DEU|02030401    |    21| I|    ##0203040122<digit>
  1429. DEU|02030401    |    22| I|    ##0203040123<fixed^point>
  1430. DEU|02030401    |    23| I|    ##0203040124<floating^point>
  1431. DEU|02030401    |    24| I|    ##0203040125<sign>
  1432. DEU|02030401    |    25| I|    ##0203040126<string^literal>
  1433. DEU|02030401    |    26| I|    ##0203040127<any^char>
  1434. DEU|02030401    |    27| I|    ##0203040128<hexstring^literal>
  1435. DEU|02030401    |    28| I|    ##0203040129<langdep^literal>
  1436. DEU|02030401    |    29| I|    ##0203040133<variable>
  1437. DEU|02030401    |    30| I|    ##0203040134<vector^slice>
  1438. DEU|02030401    |    31| I|    ##0203040135<variable^name>
  1439. DEU|02030401    |    32| I|    ##0203040136<expr>
  1440. DEU|02030401    |    33| I|    ##0203040137<num^expr>
  1441. DEU|02030401    |    34| I|    ##0203040138<term^list>
  1442. DEU|02030401    |    35|SI|    ##0203040139<term>
  1443. DEU|02030401    |    37| I|    ##0203040140<factor>
  1444. DEU|02030401    |    38| I|    ##0203040141<function^call>
  1445. DEU|02030401    |    39| I|    ##0203040142<str^expr>
  1446. DEU|02030401    |    40| I|    ##0203040143<basic^str>
  1447. DEU|02030401    |    41| I|    ##0203040144<repeat^string>
  1448. DEU|02030401    |    42| I|    ##0203040145<boolean^term>
  1449. DEU|02030401    |    43| I|    ##0203040146<boolean^expr>
  1450. DEU|02030401    |    44| I|    ##0203040147<expr^comparison>
  1451. DEU|02030401    |    45| I|    ##0203040148<check^cond>
  1452. DEU|02030401    |    46| I|    ##0203040149<simple^cond>
  1453. DEU|02030401    |    47| I|    ##0203040150<is^cond>
  1454. DEU|02030401    |    48| I|    ##0203040151<in^cond>
  1455. DEU|02030401    |    49| I|    ##0203040152<value^spec^list>
  1456. DEU|02030401    |    50| I|    ##0203040153<value^spec>
  1457. DEU|02030401    |    51| I|    ##0203040154<between^cond>
  1458. DEU|02030401    |    52| I|    ##0203040155<like^cond>
  1459. DEU|02030401    |    53|SI|    ##0203040156<var^section>
  1460. DEU|02030401    |    55| I|    ##0203040157<var^decl>
  1461. DEU|02030401    |    56| I|    ##0203040158<array^spec>
  1462. DEU|02030401    |    57| I|    ##0203040159<lab^stmt^list>
  1463. DEU|02030401    |    58| I|    ##0203040160<logic^op>
  1464. DEU|02030401    |    59| I|    ##0203040161<comp^op>
  1465. DEU|02030401    |    60| I|    ##0203040201<compound>
  1466. DEU|02030401    |    61| I|    ##0203040202<stmt>
  1467. DEU|02030401    |    62| I|    ##0203040203<assign^stmt>
  1468. DEU|02030401    |    63| I|    ##0203040204<assign^expr>
  1469. DEU|02030401    |    64| I|    ##0203040205<vector^assign^stmt>
  1470. DEU|02030401    |    65| I|    ##0203040206<if^stmt>
  1471. DEU|02030401    |    66| I|    ##0203040207<case^stmt>
  1472. DEU|02030401    |    67| I|    ##0203040208<case^list>
  1473. DEU|02030401    |    68| I|    ##0203040209<repeat^stmt>
  1474. DEU|02030401    |    69| I|    ##0203040210<while^stmt>
  1475. DEU|02030401    |    70| I|    ##0203040211<for^stmt>
  1476. DEU|02030401    |    71|SI|    ##0203040212<skip^stmt>
  1477. DEU|02030401    |    73| I|    ##0203040213<return^stmt>
  1478. DEU|02030401    |    74| I|    ##0203040214<stop^stmt>
  1479. DEU|02030401    |    75| I|    ##0203040215<vectsort^stmt>
  1480. DEU|02030401    |    76| I|    ##0203040216<proc^call>
  1481. DEU|02030401    |    77| I|    ##0203040216<form^call>
  1482. DEU|02030401    |    78| I|    ##0203040218<switch^stmt>
  1483. DEU|02030401    |    79| I|    ##0203040219<switchcall^stmt>
  1484. DEU|02030401    |    80| I|    ##0203040220<name^expr>
  1485. DEU|02030401    |    81| I|    ##0203040221<param>
  1486. DEU|02030401    |    82| I|    ##0203040222<parm^spec^list>
  1487. DEU|02030401    |    83| I|    ##0203040225<dbproc^call>
  1488. DEU|02030401    |    84| I|    ##0203040227<sql^stmt>
  1489. DEU|02030401    |    85| I|    ##0203040228<sql^cmd>
  1490. DEU|02030401    |    86| I|    ##0203040229<dynamic^sql^stmt>
  1491. DEU|02030401    |    87| I|    ##0203040230<dynamic^fetch^stmt>
  1492. DEU|02030401    |    88| I|    ##0203040231<mass^fetch^stmt>
  1493. DEU|02030401    |    89|SI|    ##0203040233<connect^stmt>
  1494. DEU|02030401    |    91| I|    ##0203040234<release^stmt>
  1495. DEU|02030401    |    92| I|    ##0203040235<sqlerror^routine>
  1496. DEU|02030401    |    93| I|    ##0203040236<sqlexception^routine>
  1497. DEU|02030401    |    94| I|    ##0203040237<sqlnotfound^routine>
  1498. DEU|02030401    |    95| I|    ##0203040238<sqltimeout^routine>
  1499. DEU|02030401    |    96| I|    ##0203040239<sqlwarning^routine>
  1500. DEU|02030401    |    97| I|    ##0203040240<try^catch^stmt>
  1501. DEU|02030401    |    98| I|    ##0203040241<query^stmt>
  1502. DEU|02030401    |    99| I|    ##0203040242<querycmd^spec>
  1503. DEU|02030401    |   100| I|    ##0203040243<report^stmt>
  1504. DEU|02030401    |   101| I|    ##0203040244<further^facilities>
  1505. DEU|02030401    |   102| I|    ##0203040245<query^option>
  1506. DEU|02030401    |   103| I|    ##0203040246<result^spec>
  1507. DEU|02030401    |   104| I|    ##0203040247<edit^call>
  1508. DEU|02030401    |   105| I|    ##0203040248<write^stmt>
  1509. DEU|02030401    |   106| I|    ##0203040249<read^stmt>
  1510. DEU|02030401    |   107|SI|    ##0203040250<open^file^stmt>
  1511. DEU|02030401    |   109| I|    ##0203040251<close^file^stmt>
  1512. DEU|02030401    |   110| I|    ##0203040252<write^file^stmt>
  1513. DEU|02030401    |   111| I|    ##0203040253<write^file^args>
  1514. DEU|02030401    |   112| I|    ##0203040254<read^file^stmt>
  1515. DEU|02030401    |   113| I|    ##0203040255<read^file^args>
  1516. DEU|02030401    |   114| I|    ##0203040256<writetrace^stmt>
  1517. DEU|02030401    |   115| I|    ##0203040257<exec^command>
  1518. DEU|02030401    |   116| I|    ##0203040258<operating^system^command>
  1519. DEU|02030401    |   117| I|    ##0203040259<arith^function>
  1520. DEU|02030401    |   118| I|    ##0203040260<index^function>
  1521. DEU|02030401    |   119| I|    ##0203040301<strpos^function>
  1522. DEU|02030401    |   120| I|    ##0203040302<set^function>
  1523. DEU|02030401    |   121| I|    ##0203040303<mixed^expr>
  1524. DEU|02030401    |   122| I|    ##0203040304<sign^function>
  1525. DEU|02030401    |   123| I|    ##0203040305<string^function>
  1526. DEU|02030401    |   124| I|    ##0203040301<strpos^function>
  1527. DEU|02030401    |   125|SI|    ##0203040307<date^function>
  1528. DEU|02030401    |   127| I|    ##0203040308<date^str^function>
  1529. DEU|02030401    |   128| I|    ##0203040309<date^arith^function>
  1530. DEU|02030401    |   129| I|    ##0203040311<set^stmt>
  1531. DEU|02030401    |   130| I|    ##0203040312<set^id>
  1532. DEU|02030401    |   131| I|    ##0203040313<systime^func>
  1533. DEU|02030401    |   132| I|    ##0203040314<dollar^numeric^variable>
  1534. DEU|02030401    |   133| I|    ##0203040315<dollar^string^variable>
  1535. DEU|02030401    |   134| I|    ##0203040316<dollar^boolean^variable>
  1536. DEU|02030401    |   135| I|    ##0203040317<object^header>
  1537. DEU|02030401    |   136|RI|    ##0203040318<module^option>
  1538. DEU|0203040101  |     1|  |    <prog name> ::=
  1539. DEU|0203040101  |     2|RI|           ##0203040118<name>
  1540. DEU|0203040102  |     1|  |    <mod name> ::=
  1541. DEU|0203040102  |     2|RI|           ##0203040118<name>
  1542. DEU|0203040103  |     1|  |    <routine> ::=
  1543. DEU|0203040103  |     2| I|             PROC ##0203040101<prog^name> . ##0203040102<mod^name>
  1544. DEU|0203040103  |     3| I|             [PARMS ( ##0203040104<parm^decl> ,...)]
  1545. DEU|0203040103  |     4| I|             [OPTIONS ( ##0203040318<module^option> ,...)]
  1546. DEU|0203040103  |     5| I|             [ ##0203040156<var^section> ]
  1547. DEU|0203040103  |     6|RI|             ##0203040159<lab^stmt^list>
  1548. DEU|0203040104  |     1|  |    <parm decl> ::=
  1549. DEU|0203040104  |     2|R |             <varname> [()]
  1550. DEU|0203040107  |     1|  |    <function> ::=
  1551. DEU|0203040107  |     2| I|             FUNCTION ##0203040101<prog^name> . ##0203040102<mod^name>
  1552. DEU|0203040107  |     3| I|             [PARMS ( ##0203040104<parm^decl> ,...)]
  1553. DEU|0203040107  |     4| I|             [OPTIONS ( ##0203040318<module^option> ,...)]
  1554. DEU|0203040107  |     5| I|             [ ##0203040156<var^section> ]
  1555. DEU|0203040107  |     6|RI|             ##0203040159<lab^stmt^list>
  1556. DEU|0203040108  |     1|  |    <db procedure> ::=
  1557. DEU|0203040108  |     2| I|             DBPROC ##0203040101<prog^name> . ##0203040102<mod^name>
  1558. DEU|0203040108  |     3| I|             [PARMS ( ##0203040110<dbproc^parm^decl> ,...)]
  1559. DEU|0203040108  |     4| I|             [OPTIONS ( ##0203040318<module^option> ,...)]
  1560. DEU|0203040108  |     5| I|             [ ##0203040156<var^section> ]
  1561. DEU|0203040108  |     6|RI|             ##0203040159<lab^stmt^list>
  1562. DEU|0203040109  |     1|  |    <dbproc parm decl list> ::=
  1563. DEU|0203040109  |     2| I|               ##0203040104<parm^decl> ,...
  1564. DEU|0203040109  |     3|RI|             | ##0203040110<dbproc^parm^decl> ,...
  1565. DEU|0203040110  |     1|  |    <dbproc parm decl> ::=
  1566. DEU|0203040110  |     2|RI|             ##0203040111<dir> ##0203040118<name> ##0203040112<data^type>
  1567. DEU|0203040111  |     1|R |    <dir> ::= IN | OUT | INOUT
  1568. DEU|0203040112  |     1|  |    <data type> ::=
  1569. DEU|0203040112  |     2| I|              FIXED [ ( ##0203040121<unsigned^integer> [, <unsigned integer> ] ) ]
  1570. DEU|0203040112  |     3|  |             | FLOAT [ ( <unsigned integer> ) ]
  1571. DEU|0203040112  |     4|  |             | CHAR [ ( <unsigned integer> ) ]   [ BYTE ]
  1572. DEU|0203040112  |     5|  |             | DBYTE [ ( <unsigned integer> ) ]
  1573. DEU|0203040112  |     6|  |             | DATE
  1574. DEU|0203040112  |     7|R |             | TIME
  1575. DEU|0203040113  |     1|  |    <trigger> ::=
  1576. DEU|0203040113  |     2|  |             TRIGGER <libname>.<funcname>
  1577. DEU|0203040113  |     3| I|             [PARMS ( ##0203040114<trigger^parm^decl> ,...)]
  1578. DEU|0203040113  |     4| I|             [OPTIONS ( ##0203040318<module^option> ,...)]
  1579. DEU|0203040113  |     5| I|             [ ##0203040156<var^section> ]
  1580. DEU|0203040113  |     6|RI|             ##0203040159<lab^stmt^list>
  1581. DEU|0203040114  |     1|  |    <trigger parm decl> ::=
  1582. DEU|0203040114  |     2|RI|             ##0203040111<dir> ##0203040115<trigger^column^spec> ##0203040112<data^type>
  1583. DEU|0203040115  |     1|  |    <trigger column spec> ::=
  1584. DEU|0203040115  |     2|  |               <column name>
  1585. DEU|0203040115  |     3|  |             | NEW.<column name>
  1586. DEU|0203040115  |     4|R |             | OLD.<column name>
  1587. DEU|0203040116  |     1|  |    <trigger predicat> ::=
  1588. DEU|0203040116  |     2|  |               FIRSTCALL|LASTCALL|INSERTING
  1589. DEU|0203040116  |     3|R |             | UPDATING|DELETING
  1590. DEU|0203040117  |     1|  |    <help form> ::=
  1591. DEU|0203040117  |     2| I|             HELPFORM  ##0203040101<prog^name> . ##0203040102<mod^name>
  1592. DEU|0203040117  |     3|  |                   [OPTIONS (<form option>,...)]
  1593. DEU|0203040117  |     4| I|                   [PARMS ( ##0203040104<parm^decl> ,...)]
  1594. DEU|0203040117  |     5| I|             [ ##0203040156<var^section> ]
  1595. DEU|0203040117  |     6|  |             <form layout>
  1596. DEU|0203040117  |     7|R |             [ <processing spec>;... ]
  1597. DEU|0203040118  |     1|  |    <name> ::= <firstchar>  [<name char> ... ]
  1598. DEU|0203040118  |     3|  |    <firstchar> ::= <letter> | # | @ | $
  1599. DEU|0203040118  |     5| I|    <name char> ::= <letter> | ##0203040122<digit> | _ | # | @ | $
  1600. DEU|0203040118  |     7|R |    <letter> ::= a | .. | z | A |..| Z
  1601. DEU|0203040119  |     1|  |    <literal> ::=  <numeric literal>
  1602. DEU|0203040119  |     2| I|             | ##0203040126<string^literal>
  1603. DEU|0203040119  |     3| I|             | ##0203040128<hexstring^literal>
  1604. DEU|0203040119  |     4| I|             | ##0203040129<langdep^literal>
  1605. DEU|0203040119  |     5|  |             | <key literal>
  1606. DEU|0203040119  |     7|RI|    <numeric literal> ::= ##0203040120<numeric>
  1607. DEU|0203040120  |     1| I|    <numeric> ::= ##0203040121<unsigned^integer>
  1608. DEU|0203040120  |     2| I|             | ##0203040123<fixed^point>
  1609. DEU|0203040120  |     3|RI|             | ##0203040124<floating^point>
  1610. DEU|0203040121  |     1| I|    <unsigned integer> ::= ##0203040122<digit>  [<unsigned integer>]
  1611. DEU|0203040121  |     2|R |                        maximal 18 Stellen
  1612. DEU|0203040122  |     1|R |    <digit> ::=  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  1613. DEU|0203040123  |     1|RI|    <fixed point> ::= ##0203040121<unsigned^integer>  [.<unsigned integer>]
  1614. DEU|0203040124  |     1|RI|    <floating point> ::= ##0203040123<fixed^point> E ##0203040125<sign> ##0203040122<digit> [<digit>]
  1615. DEU|0203040125  |     1|R |    <sign> ::= + | -
  1616. DEU|0203040126  |     1|RI|    <string literal> ::= ' ##0203040127<any^char> ...'
  1617. DEU|0203040127  |     1|R |    <any char> ::= beliebiges Zeichen der Tastatur
  1618. DEU|0203040128  |     1|  |    <hexstring literal> ::=
  1619. DEU|0203040128  |     2|  |             X'<hex digit seq>'  |  x'<hex digit seq>'
  1620. DEU|0203040128  |     4|  |    <hex digit seq> ::=
  1621. DEU|0203040128  |     5|  |             <hex digit><hex digit>[<hex digit seq>]
  1622. DEU|0203040128  |     7|  |    <hex digit> ::=
  1623. DEU|0203040128  |     8|  |               0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  1624. DEU|0203040128  |     9|R |             | A | B | C | D | E | F | a | b | c | d | e | f
  1625. DEU|0203040129  |     1| I|    <langdep literal> ::= ##0203040118!<name> [ (<literal size>) ]
  1626. DEU|0203040129  |     3|R |    <literal size> ::= S | M | L | XL
  1627. DEU|0203040133  |     1| I|    <variable> ::= ##0203040135<variable^name> [ (##0203040136<expr>) ]
  1628. DEU|0203040133  |     2|  |             | MESSAGE
  1629. DEU|0203040133  |     3|R |             | ERROR
  1630. DEU|0203040134  |     1|RI|    <vector slice> ::= ##0203040135<variable^name> ( ##0203040136<expr> .. <expr>)
  1631. DEU|0203040135  |     1|RI|    <variable name> ::= ##0203040118<name>
  1632. DEU|0203040136  |     1|RI|    <expr> ::=  ##0203040137<num^expr> | ##0203040142<str^expr>
  1633. DEU|0203040137  |     1|RI|    <num expr> ::=  [ ##0203040125<sign> ]  ##0203040139<term>  [ ##0203040138<term^list> ]
  1634. DEU|0203040138  |     1|RI|    <term list> ::=  ##0203040125<sign> ##0203040139<term> [<term list>]
  1635. DEU|0203040139  |     1| I|    <term> ::=  ##0203040140<factor>  [<mult op> <term>]
  1636. DEU|0203040139  |     3|R |    <mult op> ::=  * | / | MOD | DIV
  1637. DEU|0203040140  |     1|  |    <factor> ::=
  1638. DEU|0203040140  |     2| I|               ##0203040120<numeric>
  1639. DEU|0203040140  |     3| I|             | ##0203040133<variable>
  1640. DEU|0203040140  |     4| I|             | ( ##0203040136<expr> )
  1641. DEU|0203040140  |     5| I|             | ##0203040259<arith^function>
  1642. DEU|0203040140  |     6| I|             | ##0203040141<function^call>
  1643. DEU|0203040140  |     7|RI|             | ##0203040314<dollar^numeric^variable>
  1644. DEU|0203040141  |     1|R |    <function call> ::= %<function name>
  1645. DEU|0203040142  |     1|  |    <str expr> ::=
  1646. DEU|0203040142  |     2|RI|             ##0203040143<basic^str>  [& ##0203040136<expr>]
  1647. DEU|0203040143  |     1|  |    <basic str> ::=
  1648. DEU|0203040143  |     2| I|               ##0203040153<value^spec>
  1649. DEU|0203040143  |     3| I|             | ##0203040140<factor>
  1650. DEU|0203040143  |     4| I|             | ##0203040305<string^function>
  1651. DEU|0203040143  |     5| I|             | ##0203040301<strpos^function>
  1652. DEU|0203040143  |     6| I|             | ##0203040307<date^function>
  1653. DEU|0203040143  |     7|RI|             | ##0203040302<set^function>
  1654. DEU|0203040144  |     1|  |    <repeat string> ::=
  1655. DEU|0203040144  |     2| I|             <repeat char> ( ##0203040136<expr> )
  1656. DEU|0203040144  |     4|  |    <repeat char> ::=
  1657. DEU|0203040144  |     5|RI|             '##0203040127<any^char>' | BLANK
  1658. DEU|0203040145  |     1|  |    <boolean term> ::=
  1659. DEU|0203040145  |     2| I|              ( ##0203040146<boolean^expr> )
  1660. DEU|0203040145  |     3| I|             | ##0203040147<expr^comparison>
  1661. DEU|0203040145  |     4| I|             | ##0203040136<expr> ##0203040148<check^cond>
  1662. DEU|0203040145  |     5| I|             | ALL  ##0203040134<vector^slice> <check cond>
  1663. DEU|0203040145  |     6|  |             | EACH <vector slice> <check cond>
  1664. DEU|0203040145  |     7|  |             | ANY  <vector slice> <check cond>
  1665. DEU|0203040145  |     8|  |             | SOME <vector slice> <check cond>
  1666. DEU|0203040145  |     9|  |             | ONE  <vector slice> <check cond>
  1667. DEU|0203040145  |    10|  |             | EOF (<fileid>)         siehe "Bearbeiten von Dateien"
  1668. DEU|0203040145  |    11| I|             | $SQLWARN [( ##0203040136<expr> )]    siehe "System- und $-Variablen
  1669. DEU|0203040145  |    12|R |             | FORM IS MODIFIED
  1670. DEU|0203040146  |     1|  |    <boolean expr> ::=
  1671. DEU|0203040146  |     2|RI|             [NOT] ##0203040145<boolean^term>  [ ##0203040160<logic^op> <boolean expr>]
  1672. DEU|0203040147  |     1|  |    <expr comparison> ::=
  1673. DEU|0203040147  |     2|RI|             ##0203040136<expr> ##0203040161<comp^op> <expr>
  1674. DEU|0203040148  |     1|  |    <check cond> ::=
  1675. DEU|0203040148  |     2|RI|             ##0203040149<simple^cond>  [ ##0203040160<logic^op> <check cond>]
  1676. DEU|0203040149  |     1|  |    <simple cond> ::=
  1677. DEU|0203040149  |     2| I|             ##0203040150<is^cond>
  1678. DEU|0203040149  |     3| I|             | [NOT] ##0203040151<in^cond>
  1679. DEU|0203040149  |     4| I|             | [NOT] ##0203040154<between^cond>
  1680. DEU|0203040149  |     5|RI|             | [NOT] ##0203040155<like^cond>
  1681. DEU|0203040150  |     1|  |    <is cond> ::=
  1682. DEU|0203040150  |     2|  |               IS [NOT]  ALPHA
  1683. DEU|0203040150  |     3|  |             | IS [NOT]  NUMERIC
  1684. DEU|0203040150  |     4|  |             | IS [NOT]  BLANK
  1685. DEU|0203040150  |     5|  |             | IS [NOT]  NULL
  1686. DEU|0203040150  |     6|  |             | IS [NOT]  MODIFIED
  1687. DEU|0203040150  |     7| I|             | IS [NOT]  FIXED ( ##0203040136<expr> ,<expr>)
  1688. DEU|0203040150  |     8|  |             | IS [NOT]  DATE [ (<date mask>) ]
  1689. DEU|0203040150  |     9|R |             | IS [NOT]  TIME [ (<time mask>) ]
  1690. DEU|0203040151  |     1|  |    <in cond> ::=
  1691. DEU|0203040151  |     2|RI|             IN ( ##0203040152<value^spec^list> )
  1692. DEU|0203040152  |     1|  |    <value spec list> ::=
  1693. DEU|0203040152  |     2| I|             ##0203040153<value^spec> [..<value spec>]  [,<value spec list>]
  1694. DEU|0203040152  |     3|R |             | NULL  [,<value spec list> ]
  1695. DEU|0203040153  |     1|  |    <value spec> ::=
  1696. DEU|0203040153  |     2| I|               ##0203040119<literal>
  1697. DEU|0203040153  |     3| I|             | ##0203040144<repeat^string>
  1698. DEU|0203040153  |     4|  |             | BLANK
  1699. DEU|0203040153  |     5| I|             | ##0203040314<dollar^numeric^variable>
  1700. DEU|0203040153  |     6|RI|             | ##0203040315<dollar^string^variable>
  1701. DEU|0203040154  |     1|  |    <between cond> ::=
  1702. DEU|0203040154  |     2|RI|             BETWEEN ##0203040136<expr> AND <expr>
  1703. DEU|0203040155  |     1|  |    <like cond> ::=
  1704. DEU|0203040155  |     2|RI|             LIKE ##0203040136<expr> [ ESCAPE <expr> ]
  1705. DEU|0203040156  |     1|  |    <var section> ::=
  1706. DEU|0203040156  |     2| I|             VAR ##0203040157<var^decl> ,...;
  1707. DEU|0203040156  |     3|R |             [ VAR STATIC <var decl>,...; ]
  1708. DEU|0203040157  |     1|  |    <var decl> ::=
  1709. DEU|0203040157  |     2|RI|             <varname> [ ##0203040158<array^spec> ]
  1710. DEU|0203040158  |     1|  |    <array spec> ::=
  1711. DEU|0203040158  |     2|R |             ()
  1712. DEU|0203040159  |     1|  |    <lab stmt list> ::=
  1713. DEU|0203040159  |     2|RI|             [<label>]  ##0203040201<compound>  [<lab stmt list>]
  1714. DEU|0203040160  |     1|  |    <logic op> ::=
  1715. DEU|0203040160  |     2|R |           AND | OR
  1716. DEU|0203040161  |     1|  |    <comp op> ::=
  1717. DEU|0203040161  |     2|R |           = | < | > | <> | <= | >=
  1718. DEU|0203040201  |     1|  |    <compound> ::=
  1719. DEU|0203040201  |     2|RI|             BEGIN ##0203040202<stmt> ;... END | <stmt>
  1720. DEU|0203040202  |     1|  |    <stmt> ::=
  1721. DEU|0203040202  |     2| I|               ##0203040203<assign^stmt>        | ##0203040205<vector^assign^stmt>
  1722. DEU|0203040202  |     3| I|             | ##0203040206<if^stmt>            | ##0203040207<case^stmt>
  1723. DEU|0203040202  |     4| I|             | ##0203040209<repeat^stmt>        | ##0203040210<while^stmt>
  1724. DEU|0203040202  |     5| I|             | ##0203040211<for^stmt>           | ##0203040212<skip^stmt>
  1725. DEU|0203040202  |     6| I|             | ##0203040213<return^stmt>        | ##0203040214<stop^stmt>
  1726. DEU|0203040202  |     7| I|             | ##0203040215<vectsort^stmt>      | ##0203040219<switchcall^stmt>
  1727. DEU|0203040202  |     8| I|             | ##0203040216<proc^call>          | ##0203040216<form^call>
  1728. DEU|0203040202  |     9| I|             | ##0203040218<switch^stmt>        | ##0203040141<function^call>
  1729. DEU|0203040202  |    10| I|             | ##0203040225<dbproc^call>        | ##0203040227<sql^stmt>
  1730. DEU|0203040202  |    11| I|             | ##0203040233<connect^stmt>       | ##0203040234<release^stmt>
  1731. DEU|0203040202  |    12| I|             | ##0203040241<query^stmt>         | ##0203040243<report^stmt>
  1732. DEU|0203040202  |    13| I|             | ##0203040247<edit^call>          | ##0203040248<write^stmt>
  1733. DEU|0203040202  |    14| I|             | ##0203040249<read^stmt>          | ##0203040250<open^file^stmt>
  1734. DEU|0203040202  |    15| I|             | ##0203040252<write^file^stmt>    | ##0203040254<read^file^stmt>
  1735. DEU|0203040202  |    16| I|             | ##0203040251<close^file^stmt>    | ##0203040257<exec^command>
  1736. DEU|0203040202  |    17|RI|             | ##0203040311<set^stmt>           | <systime stmt>
  1737. DEU|0203040203  |     1|RI|    <assign stmt> ::=  ##0203040133<variable> := ##0203040204<assign^expr>
  1738. DEU|0203040204  |     1|RI|    <assign expr> ::=  ##0203040136<expr> | NULL
  1739. DEU|0203040205  |     1|  |    <vector assign stmt> ::=
  1740. DEU|0203040205  |     2| I|               ##0203040134<vector^slice> := ##0203040204<assign^expr>
  1741. DEU|0203040205  |     3|R |             | <vector slice> := <vector slice>
  1742. DEU|0203040206  |     1| I|    <if stmt> ::= IF ##0203040146<boolean^expr>
  1743. DEU|0203040206  |     2| I|              THEN ##0203040201<compound>
  1744. DEU|0203040206  |     3|R |             [ELSE <compound>]
  1745. DEU|0203040207  |     1|  |    <case stmt> ::=
  1746. DEU|0203040207  |     2| I|             CASE ##0203040136<expr> OF
  1747. DEU|0203040207  |     3| I|                      ##0203040208<case^list>
  1748. DEU|0203040207  |     4| I|                      [OTHERWISE ##0203040201<compound> ]
  1749. DEU|0203040207  |     5|R |             END
  1750. DEU|0203040208  |     1|  |    <case list> ::=
  1751. DEU|0203040208  |     2|RI|             ##0203040152<value^spec^list> : ##0203040201<compound> [;<case list>] ;
  1752. DEU|0203040209  |     1|RI|    <repeat stmt> ::=  REPEAT ##0203040202<stmt> ;... UNTIL ##0203040146<boolean^expr>
  1753. DEU|0203040210  |     1|RI|    <while stmt> ::=  WHILE ##0203040146<boolean^expr> DO ##0203040201<compound>
  1754. DEU|0203040211  |     1|  |    <for stmt> ::=
  1755. DEU|0203040211  |     2| I|             FOR ##0203040133<variable> := ##0203040136<expr> <direction> <expr>
  1756. DEU|0203040211  |     3| I|             DO ##0203040201<compound>
  1757. DEU|0203040211  |     5|R |    <direction> ::=  TO | DOWNTO
  1758. DEU|0203040212  |     1|RI|    <skip stmt> ::=  SKIP ##0203040118<name>
  1759. DEU|0203040213  |     1|  |    <return stmt> ::=
  1760. DEU|0203040213  |     2|  |               RETURN
  1761. DEU|0203040213  |     3|RI|             | RETURN (##0203040136<expr>)   <-- nur in SQL-PL Funktionen
  1762. DEU|0203040214  |     1|RI|    <stop stmt> ::=  STOP  [( ##0203040136<expr> [, <expr>] )]
  1763. DEU|0203040215  |     1|  |    <vectsort stmt> ::=
  1764. DEU|0203040215  |     2| I|               LTSORT ( ##0203040134<vector^slice>,... )
  1765. DEU|0203040215  |     3|R |             | GTSORT ( <vector slice>,... )
  1766. DEU|0203040216  |     1|  |    <proc call> ::=
  1767. DEU|0203040216  |     2|RI|             CALL PROC ##0203040220<name^expr> [PARMS ( ##0203040221<param> ,...)]
  1768. DEU|0203040217  |     1|  |    <form call> ::=
  1769. DEU|0203040217  |     2| I|             CALL FORM ##0203040220<name^expr>
  1770. DEU|0203040217  |     3|  |             [OPTIONS (<form calling options>)]
  1771. DEU|0203040217  |     4|RI|             [PARMS ( ##0203040221<param> ,...)]
  1772. DEU|0203040218  |     1|  |    <switch stmt> ::=
  1773. DEU|0203040218  |     2| I|               SWITCH [ ##0203040220<name^expr> .] <name expr> ##0203040216<form^call>
  1774. DEU|0203040218  |     3|RI|             | SWITCH [<name expr>.] <name expr> ##0203040216<proc^call>
  1775. DEU|0203040219  |     1|  |    <switchcall stmt> ::=
  1776. DEU|0203040219  |     2| I|               SWITCHCALL [ ##0203040220<name^expr> .] <name expr> ##0203040216<form^call>
  1777. DEU|0203040219  |     3|RI|             | SWITCHCALL [<name expr>.] <name expr> ##0203040216<proc^call>
  1778. DEU|0203040220  |     1|  |    <name expr> ::=
  1779. DEU|0203040220  |     2|RI|             ##0203040118<name> | : ##0203040136<expr>
  1780. DEU|0203040221  |     1|  |    <param> ::=
  1781. DEU|0203040221  |     2|RI|             ##0203040118<name>
  1782. DEU|0203040222  |     1|  |    <parm spec list> ::=
  1783. DEU|0203040222  |     2|RI|             PARM/S/ ( ##0203040157<var^decl> ,...)
  1784. DEU|0203040225  |     1|  |    <dbproc call> ::=
  1785. DEU|0203040225  |     2|  |               CALL DBPROC [[<owner>.]<progname>.]<dbproc name>
  1786. DEU|0203040225  |     3| I|                   [PARMS ( ##0203040221<param> ,...] [WITH COMMIT]
  1787. DEU|0203040225  |     4|  |             | SQL ( DBPROC[EDURE] [[<owner>.]<progname>.]<dbproc name>
  1788. DEU|0203040225  |     5|RI|                   [( ##0203040226<host^var> ,...)] [WITH COMMIT] )
  1789. DEU|0203040226  |     1|RI|    <host var> := ##0203040118:<name>
  1790. DEU|0203040227  |     1|  |    <sql stmt> ::=
  1791. DEU|0203040227  |     2| I|               SQL [<dbname>] ( ##0203040228<sql^cmd> )
  1792. DEU|0203040227  |     3| I|             | ##0203040229<dynamic^sql^stmt>
  1793. DEU|0203040227  |     4| I|             | ##0203040230<dynamic^fetch^stmt>
  1794. DEU|0203040227  |     5|RI|             | ##0203040231<mass^fetch^stmt>
  1795. DEU|0203040228  |     1|  |    <sql cmd> ::=
  1796. DEU|0203040228  |     2|R |             siehe ADABAS Referenzhandbuch
  1797. DEU|0203040229  |     1|  |    <dynamic sql stmt> ::=
  1798. DEU|0203040229  |     2| I|               SQL [<dbname>] EXECUTE IMMEDIATE ##0203040136<expr>
  1799. DEU|0203040229  |     3|  |             | SQL EXECUTE IMMEDIATE <expr> USING <expr list>
  1800. DEU|0203040229  |     4| I|             | SQL EXECUTE ##0203040118<name> USING <expr list>
  1801. DEU|0203040229  |     5|  |             | SQL PREPARE <name> FROM <expr>
  1802. DEU|0203040229  |     6|RI|             | SQL DESCRIBE <name> INTO ##0203040134<vector^slice>
  1803. DEU|0203040230  |     1|  |    <dynamic fetch stmt> ::=
  1804. DEU|0203040230  |     2|RI|             SQL [<dbname>] FETCH IMMEDIATE INTO ##0203040226<host^var> ,...
  1805. DEU|0203040231  |     1|  |    <mass fetch stmt> ::=
  1806. DEU|0203040231  |     2|RI|             SQL [<dbname>] ( FETCH INTO ##0203040134<vector^slice> ,... )
  1807. DEU|0203040232  |     1|  |    <fetch dynamic descr> ::=
  1808. DEU|0203040232  |     2|RI|             SQL FETCH LONGDESCR INTO ##0203040133:<variable>
  1809. DEU|0203040233  |     1|  |    <connect stmt> ::=
  1810. DEU|0203040233  |     2|  |               CONNECT <dbname>
  1811. DEU|0203040233  |     3|  |                   AS ( <username>, <password>, <serverdb>
  1812. DEU|0203040233  |     4|  |                      [,<servernode>] )
  1813. DEU|0203040233  |     5|  |             | CONNECT :<var>
  1814. DEU|0203040233  |     6|  |                   AS ( <username>, <password>, <serverdb>
  1815. DEU|0203040233  |     7|R |                      [,<servernode>] )
  1816. DEU|0203040234  |     1|  |    <release stmt> ::=
  1817. DEU|0203040234  |     2|  |               RELEASE <dbname>
  1818. DEU|0203040234  |     3|R |             | RELEASE :<var>
  1819. DEU|0203040235  |     1|  |    <sqlerror routine> ::=
  1820. DEU|0203040235  |     2|  |             PROC <progname>.SQLERROR ( <modulename> )
  1821. DEU|0203040235  |     3|RI|             ##0203040159<lab^stmt^list>
  1822. DEU|0203040236  |     1|  |    <sqlexception routine> ::=
  1823. DEU|0203040236  |     2|  |             PROC <progname>.SQLEXCEPTION ( <modulename> )
  1824. DEU|0203040236  |     3|RI|             ##0203040159<lab^stmt^list>
  1825. DEU|0203040237  |     1|  |    <sqlnotfound routine> ::=
  1826. DEU|0203040237  |     2|  |             PROC <progname>.SQLNOTFOUND ( <modulename> )
  1827. DEU|0203040237  |     3|RI|             ##0203040159<lab^stmt^list>
  1828. DEU|0203040238  |     1|  |    <sqltimeout routine> ::=
  1829. DEU|0203040238  |     2|  |             PROC <progname>.SQLTIMEOUT ( <modulename> )
  1830. DEU|0203040238  |     3|RI|             ##0203040159<lab^stmt^list>
  1831. DEU|0203040239  |     1|  |    <sqlwarning routine> ::=
  1832. DEU|0203040239  |     2|  |             PROC <progname>.SQLWARNING ( <modulename> )
  1833. DEU|0203040239  |     3|RI|             ##0203040159<lab^stmt^list>
  1834. DEU|0203040240  |     1|  |    <try catch stmt> ::=
  1835. DEU|0203040240  |     2|  |             TRY
  1836. DEU|0203040240  |     3| I|                   ##0203040201<compound>
  1837. DEU|0203040240  |     4| I|             CATCH ##0203040136<expr> OF
  1838. DEU|0203040240  |     5| I|                   ##0203040208<case^list>
  1839. DEU|0203040240  |     6|R |             END
  1840. DEU|0203040241  |     1|  |    <query stmt> ::=
  1841. DEU|0203040241  |     2|  |             QUERY <querycmd spec>
  1842. DEU|0203040241  |     3|RI|             [ ##0203040244<further^facilities> ]
  1843. DEU|0203040242  |     1|  |    <querycmd spec> ::=
  1844. DEU|0203040242  |     2|  |               [ CMD ]  ( <querycmd> )
  1845. DEU|0203040242  |     3|RI|             | EXEC[UTE] ##0203040136<expr>
  1846. DEU|0203040243  |     1|  |    <report stmt> ::=
  1847. DEU|0203040243  |     2|  |             REPORT [<result table name>]
  1848. DEU|0203040243  |     3|  |             [<report cmd spec>]
  1849. DEU|0203040243  |     4| I|             [ ##0203040244<further^facilities> ]
  1850. DEU|0203040243  |     6|  |    <report cmd spec> ::=
  1851. DEU|0203040243  |     7|  |             [ CMD ]  ( <report cmd>;... )
  1852. DEU|0203040243  |     9|  |    <report cmd> ::=
  1853. DEU|0203040243  |    10|  |             siehe REPORT-Beschreibung
  1854. DEU|0203040243  |    12|RI|    <result table name> ::= ##0203040220<name^expr>
  1855. DEU|0203040244  |     1|  |    <further facilities> ::=
  1856. DEU|0203040244  |     2|  |             [DBNAME   [=] <dbname>]
  1857. DEU|0203040244  |     3| I|             [PROGNAME [=] ##0203040136<expr> ]
  1858. DEU|0203040244  |     4|  |             [VERSION  [=] <expr>]
  1859. DEU|0203040244  |     5|  |             [MODE     [=] <expr>]
  1860. DEU|0203040244  |     6|  |             [HEADER   [=] <expr>]
  1861. DEU|0203040244  |     7| I|             [OPTION[S] ( ##0203040245<query^option> ,... )]
  1862. DEU|0203040244  |     8|RI|             [RESULT ( ##0203040246<result^spec> ,... )]
  1863. DEU|0203040245  |     1|  |    <query option> ::=
  1864. DEU|0203040245  |     2|R |             BACKGROUND | SETOFF | SETLOCAL | NOHEADLINE
  1865. DEU|0203040246  |     1|  |    <result spec> ::=
  1866. DEU|0203040246  |     2| I|             [:] ##0203040133<variable> = <erg spec>
  1867. DEU|0203040246  |     4|  |    <erg spec> ::=
  1868. DEU|0203040246  |     5|  |               SUM   ( <columnid> )
  1869. DEU|0203040246  |     6|  |             | AVG   ( <columnid> )
  1870. DEU|0203040246  |     7|  |             | COUNT ( <columnid> )
  1871. DEU|0203040246  |     8|  |             | MIN   ( <columnid> )
  1872. DEU|0203040246  |     9|  |             | MAX   ( <columnid> )
  1873. DEU|0203040246  |    10|  |             | VAL1  ( <columnid> )
  1874. DEU|0203040246  |    11|  |             | VAL2  ( <columnid> )
  1875. DEU|0203040246  |    12|  |             | VAL3  ( <columnid> )
  1876. DEU|0203040246  |    13|  |             | VAL4  ( <columnid> )
  1877. DEU|0203040246  |    15|  |    <columnid> ::=
  1878. DEU|0203040246  |    16|R |             <natural>
  1879. DEU|0203040247  |     1|  |    <edit call> ::=
  1880. DEU|0203040247  |     2| I|               EDIT ( ##0203040134<vector^slice> [, <edit option>,...] )
  1881. DEU|0203040247  |     3| I|             | EDIT ( ##0203040133<variable> [, <edit option>,...] )
  1882. DEU|0203040247  |     5|  |    <edit option> ::=
  1883. DEU|0203040247  |     6| I|               POS ( ##0203040136<expr> ,<expr>)
  1884. DEU|0203040247  |     7|  |             | SIZE (<expr>,<expr>)
  1885. DEU|0203040247  |     8|  |             | MSG = <expr>
  1886. DEU|0203040247  |     9|  |             | ERR = <expr>
  1887. DEU|0203040247  |    10|  |             | LABEL = <expr>
  1888. DEU|0203040247  |    11|  |             | MARK (<expr>,<expr>)
  1889. DEU|0203040247  |    12|  |             | HEADER = <expr>
  1890. DEU|0203040247  |    13|  |             | PROGNAME = <expr>
  1891. DEU|0203040247  |    14|  |             | MAXLINES = <expr>
  1892. DEU|0203040247  |    15|  |             | PRINT
  1893. DEU|0203040247  |    16|  |             | NOINIT
  1894. DEU|0203040247  |    17|R |             | <basic key> = <expr>
  1895. DEU|0203040248  |     1|  |    <write stmt> ::=
  1896. DEU|0203040248  |     2|  |             WRITE <write expr>,...
  1897. DEU|0203040248  |     4|  |    <write expr> ::=
  1898. DEU|0203040248  |     5| I|               ##0203040136<expr>
  1899. DEU|0203040248  |     6|  |             | HIGH
  1900. DEU|0203040248  |     7|  |             | SIZE (<expr>)
  1901. DEU|0203040248  |     8|  |             | POS (<expr>,<expr>)
  1902. DEU|0203040248  |     9|  |             | PAUSE
  1903. DEU|0203040248  |    10|  |             | CLEAR
  1904. DEU|0203040248  |    11|  |             | NL [(<natural>)]
  1905. DEU|0203040248  |    12|  |             | COL (<natural>)
  1906. DEU|0203040248  |    13|  |             | HI (<expr>,...)
  1907. DEU|0203040248  |    14|  |             | NOCLEAR
  1908. DEU|0203040248  |    15|  |             | OPEN
  1909. DEU|0203040248  |    16|  |             | CLOSE
  1910. DEU|0203040248  |    17|R |             | HOLD
  1911. DEU|0203040249  |     1|  |    <read stmt> ::=
  1912. DEU|0203040249  |     2|  |             READ  <read expr>,...
  1913. DEU|0203040249  |     4|  |    <read expr> ::=
  1914. DEU|0203040249  |     5| I|               ##0203040133<variable>
  1915. DEU|0203040249  |     6|  |             | HIGH
  1916. DEU|0203040249  |     7|  |             | DARK
  1917. DEU|0203040249  |     8| I|             | SIZE ( ##0203040136<expr> )
  1918. DEU|0203040249  |     9|  |             | POS (<expr>,<expr>)
  1919. DEU|0203040249  |    10|  |             | CLEAR
  1920. DEU|0203040249  |    11|  |             | NL [(<natural>)]
  1921. DEU|0203040249  |    12|  |             | COL (<natural>)
  1922. DEU|0203040249  |    13| I|             | PROMPT '##0203040127<any^char>'
  1923. DEU|0203040249  |    14|RI|             | OUTIN ( ##0203040133<variable> )
  1924. DEU|0203040250  |     1|  |    <open file stmt> ::=
  1925. DEU|0203040250  |     2|R |             OPEN <fileid> <filename> <open spec>
  1926. DEU|0203040251  |     1|  |    <close file stmt> ::=
  1927. DEU|0203040251  |     2|R |             CLOSE <fileid>
  1928. DEU|0203040252  |     1|  |    <write file stmt> ::=
  1929. DEU|0203040252  |     2|RI|             WRITEFILE <fileid> ##0203040253<write^file^args>
  1930. DEU|0203040253  |     1|  |    <write file args> ::=
  1931. DEU|0203040253  |     2|RI|             ##0203040136<expr> [: <expr>]  [,<write file args>]
  1932. DEU|0203040254  |     1|  |    <read file stmt> ::=
  1933. DEU|0203040254  |     2|RI|             READFILE <fileid> ##0203040255<read^file^args>
  1934. DEU|0203040255  |     1|  |    <read file args> ::=
  1935. DEU|0203040255  |     2|RI|             ##0203040133<variable> [: ##0203040136<expr>  [,<read file args>] ]
  1936. DEU|0203040256  |     1|RI|    <writetrace stmt> ::= WRITETRACE ##0203040253<write^file^args>
  1937. DEU|0203040257  |     1|  |    <exec command> ::=
  1938. DEU|0203040257  |     2| I|               EXEC [SYNC] ##0203040258<operating^system^command> RESULT variable
  1939. DEU|0203040257  |     3|R |             | EXEC ASYNC  <operating system command>
  1940. DEU|0203040258  |     1|  |    <operating system command> ::=
  1941. DEU|0203040258  |     2|  |                beliebiges Kommando oder
  1942. DEU|0203040258  |     3|R |                beliebiger Programmaufruf des Betriebssystems.
  1943. DEU|0203040259  |     1|  |    <arith function> ::=
  1944. DEU|0203040259  |     2| I|               ABS ( ##0203040136<expr> )
  1945. DEU|0203040259  |     3|  |             | SQR (<expr>)
  1946. DEU|0203040259  |     4|  |             | ROUND (<expr>,<expr>)
  1947. DEU|0203040259  |     5|  |             | SQRT (<expr>)
  1948. DEU|0203040259  |     6|  |             | TRUNC (<expr>,<expr>)
  1949. DEU|0203040259  |     7|  |             | SIN (<expr>)
  1950. DEU|0203040259  |     8|  |             | COS (<expr>)
  1951. DEU|0203040259  |     9|  |             | ARCTAN (<expr>)
  1952. DEU|0203040259  |    10|  |             | EXP (<expr>)
  1953. DEU|0203040259  |    11|  |             | LN (<expr>)
  1954. DEU|0203040259  |    12| I|             | INDEX ( ##0203040134<vector^slice> ,<expr>)
  1955. DEU|0203040259  |    13|  |             | LENGTH(<expr>)
  1956. DEU|0203040259  |    14|  |             | ORD (<expr>)
  1957. DEU|0203040259  |    15| I|             | ##0203040260<index^function>
  1958. DEU|0203040259  |    16| I|             | ##0203040302<set^function>
  1959. DEU|0203040259  |    17|SI|             | ##0203040301<strpos^function>
  1960. DEU|0203040259  |    19|RI|             | ##0203040304<sign^function>
  1961. DEU|0203040260  |     1|  |    <index function> ::=
  1962. DEU|0203040260  |     2| I|               INDEX ( ##0203040134<vector^slice> , [NOT] ##0203040136<expr> )
  1963. DEU|0203040260  |     3|R |             | INDEX (<vector slice>, [NOT] NULL)
  1964. DEU|0203040301  |     1|  |    <strpos function> ::=
  1965. DEU|0203040301  |     2| I|               STRPOS ( ##0203040136<expr>, <expr> [, ##0203040137<num^expr> ] )
  1966. DEU|0203040301  |     3|  |             | SPAN   ( <expr>, <expr> [, <num expr> ] )
  1967. DEU|0203040301  |     4|R |             | BREAK  ( <expr>, <expr> [, <num expr> ] )
  1968. DEU|0203040302  |     1|  |    <set function> ::=
  1969. DEU|0203040302  |     2| I|               MIN ( ##0203040303<mixed^expr> ,...)
  1970. DEU|0203040302  |     3|  |             | MAX (<mixed expr>,...)
  1971. DEU|0203040302  |     4|R |             | AVG (<mixed expr>,...)
  1972. DEU|0203040303  |     1|  |    <mixed expr> ::=
  1973. DEU|0203040303  |     2|RI|             ##0203040136<expr> | ##0203040134<vector^slice>
  1974. DEU|0203040304  |     1|  |    <sign function> ::=
  1975. DEU|0203040304  |     2|RI|             SIGN ( ##0203040136<expr> )
  1976. DEU|0203040305  |     1|  |    <string function> ::=
  1977. DEU|0203040305  |     2| I|               TRIM ( <expr [ , ##0203040127'<any^char>' ] )
  1978. DEU|0203040305  |     3| I|             | TRIM ( ##0203040136<expr> ,'<any char>',<side>)
  1979. DEU|0203040305  |     4|  |             | PAD (<expr>[, <expr>])
  1980. DEU|0203040305  |     5|  |             | PAD (<expr>, <expr>,<side>)
  1981. DEU|0203040305  |     6|  |             | SUBSTR(<expr>,<expr> [,<expr>] )
  1982. DEU|0203040305  |     7|  |             | UPPER (<expr>)
  1983. DEU|0203040305  |     8|  |             | LOWER (<expr>)
  1984. DEU|0203040305  |     9|  |             | FORMAT (<expr>,'<char>...')
  1985. DEU|0203040305  |    10|  |             | HEX (<expr>)
  1986. DEU|0203040305  |    11|  |             | CHR (<expr>)
  1987. DEU|0203040305  |    12| I|             | CHANGE ( <expr>, <expr> [, ##0203040137<num^expr> ] )
  1988. DEU|0203040305  |    13|  |             | TOKENIZE (<expr>, <expr>)
  1989. DEU|0203040305  |    14|  |             | SEPARATE (<expr>, <expr>)
  1990. DEU|0203040305  |    16|R |    <side> ::= RIGHT/LEFT/BOTH
  1991. DEU|0203040307  |     1|  |    <date function> ::=
  1992. DEU|0203040307  |     2| I|               ##0203040309<date^arith^function>
  1993. DEU|0203040307  |     3|RI|             | ##0203040308<date^str^function>
  1994. DEU|0203040308  |     1|  |    <date str function> ::=
  1995. DEU|0203040308  |     2| I|               DATE [ ([<date mask>]  , ##0203040136<expr>  [,<date mask>]) ]
  1996. DEU|0203040308  |     3|  |             | TIME [ ([<time mask>]  ,<expr> [,<time mask>])]
  1997. DEU|0203040308  |     4|  |             | ADDDATE (<expr>,<expr>)
  1998. DEU|0203040308  |     5|  |             | SUBDATE (<expr>,<expr>)
  1999. DEU|0203040308  |     6|  |             | MAKETIME (<expr>,<expr>,<expr>)
  2000. DEU|0203040308  |     7|  |             | ADDTIME (<expr>,<expr>)
  2001. DEU|0203040308  |     8|R |             | SUBTIME (<expr>,<expr>)
  2002. DEU|0203040309  |     1|  |    <date arith function> ::=
  2003. DEU|0203040309  |     2| I|               DAYOFWEEK ( ##0203040136<expr> )
  2004. DEU|0203040309  |     3|  |             | WEEKOFYEAR (<expr>)
  2005. DEU|0203040309  |     4|  |             | DAYOFYEAR (<expr>)
  2006. DEU|0203040309  |     5|  |             | DATEDIFF (<expr>,<expr>)
  2007. DEU|0203040309  |     6|R |             | TIMEDIFF (<expr>,<expr>)
  2008. DEU|0203040310  |     1|  |    <set function> ::=
  2009. DEU|0203040310  |     2|RI|             SET ( ##0203040312<set^id> )
  2010. DEU|0203040311  |     1|  |    <set stmt> ::=
  2011. DEU|0203040311  |     2|RI|             SET ( ##0203040312<set^id> , ##0203040136<expr> )
  2012. DEU|0203040312  |     1|  |    <set id> ::=
  2013. DEU|0203040312  |     2|  |               COPIES
  2014. DEU|0203040312  |     3|  |             | CODEAREA
  2015. DEU|0203040312  |     4|  |             | DATE
  2016. DEU|0203040312  |     5|  |             | DECIMALREP
  2017. DEU|0203040312  |     6|  |             | NESTING
  2018. DEU|0203040312  |     7|  |             | NULLVALUE
  2019. DEU|0203040312  |     8|  |             | LANGUAGE
  2020. DEU|0203040312  |     9|  |             | PRESENTATION
  2021. DEU|0203040312  |    10|  |             | PRETTY
  2022. DEU|0203040312  |    11|  |             | PRINTFORMAT
  2023. DEU|0203040312  |    12|  |             | PROTOCOL
  2024. DEU|0203040312  |    13|  |             | SEPARATOR
  2025. DEU|0203040312  |    14|  |             | SYSEDITOR
  2026. DEU|0203040312  |    15|  |             | TARGET_LANGS
  2027. DEU|0203040312  |    16|  |             | TIME
  2028. DEU|0203040312  |    17|S |             | VERSION
  2029. DEU|0203040312  |    19|R |             | VALUEAREA
  2030. DEU|0203040313  |     1|  |    <systime func> ::=
  2031. DEU|0203040313  |     2|R |             INITTIME | GETTIME
  2032. DEU|0203040314  |     1|  |    <dollar numeric variable> ::=
  2033. DEU|0203040314  |     2|  |               $COLNO
  2034. DEU|0203040314  |     3|  |             | $COUNT
  2035. DEU|0203040314  |     4|  |             | $CURSOR
  2036. DEU|0203040314  |     5|  |             | $EDITLINES
  2037. DEU|0203040314  |     6|  |             | $MAXLINES
  2038. DEU|0203040314  |     7|  |             | $MAXCOLS
  2039. DEU|0203040314  |     8|  |             | $MICRO
  2040. DEU|0203040314  |     9|  |             | $RC
  2041. DEU|0203040314  |    10|  |             | $ROWNO
  2042. DEU|0203040314  |    11|  |             | $SCREENCOLS
  2043. DEU|0203040314  |    12|  |             | $SCREENLNS
  2044. DEU|0203040314  |    13|  |             | $SEC
  2045. DEU|0203040314  |    14|R |             | $SYSRC
  2046. DEU|0203040315  |     1|  |    <dollar string variable> ::=
  2047. DEU|0203040315  |     2|  |               $ACTION
  2048. DEU|0203040315  |     3|  |             | $CMD
  2049. DEU|0203040315  |     4|  |             | $FUNCTION|$FUNCTION1...|$FUNCTION4
  2050. DEU|0203040315  |     5|  |             | $GROUP
  2051. DEU|0203040315  |     6|  |             | $KEY
  2052. DEU|0203040315  |     7|  |             | $OS
  2053. DEU|0203040315  |     8|  |             | $RT
  2054. DEU|0203040315  |     9|  |             | $SERVERDB
  2055. DEU|0203040315  |    10|  |             | $SYSRT
  2056. DEU|0203040315  |    11|  |             | $TERM
  2057. DEU|0203040315  |    12|  |             | $USER
  2058. DEU|0203040315  |    13|R |             | $USERMODE
  2059. DEU|0203040316  |     1|  |    <dollar boolean variable> ::=
  2060. DEU|0203040316  |     2|  |               $SQLWARN
  2061. DEU|0203040316  |     3|RI|             | $SQLWARN [( ##0203040136<expr> )]
  2062. DEU|0203040317  |     1|  |    <object header> ::=
  2063. DEU|0203040317  |     2|  |             <object type> <progname>.<modname>
  2064. DEU|0203040317  |     3| I|             OPTION/S/ ( ##0203040318<module^option> ,... )
  2065. DEU|0203040317  |     5|  |    <object type> ::=
  2066. DEU|0203040317  |     6|  |               PROC
  2067. DEU|0203040317  |     7|  |             | FUNCTION
  2068. DEU|0203040317  |     8|  |             | DBPROC
  2069. DEU|0203040317  |     9|  |             | TRIGGER
  2070. DEU|0203040317  |    10|  |             | FORM
  2071. DEU|0203040317  |    11|R |             | HELPFORM
  2072. DEU|0203040318  |     1|  |    <module option> ::=
  2073. DEU|0203040318  |     2|  |               <loop option>
  2074. DEU|0203040318  |     3|  |             | <autocommit option>
  2075. DEU|0203040318  |     4|  |             | <trace option>
  2076. DEU|0203040318  |     5|  |             | <test dbproc option>
  2077. DEU|0203040318  |     6|  |             | <lib option>
  2078. DEU|0203040318  |     7|  |             | <keyswap option>
  2079. DEU|0203040318  |     9|  |    <loop option> ::=
  2080. DEU|0203040318  |    10|  |             LOOP /=/ <natural>
  2081. DEU|0203040318  |    12|  |    <autocommit option> ::=
  2082. DEU|0203040318  |    13|  |             AUTOCOMMIT OFF
  2083. DEU|0203040318  |    15|  |    <trace option> ::=
  2084. DEU|0203040318  |    16|  |               SQLTRACE /ALL/
  2085. DEU|0203040318  |    17|S |             | MODULETRACE
  2086. DEU|0203040318  |    19|  |    <test dbproc option> ::= TEST DBPROC
  2087. DEU|0203040318  |    21|  |    <lib option> ::=
  2088. DEU|0203040318  |    22|  |             LIB [<username>.] <libname>
  2089. DEU|0203040318  |    24|  |    <keyswap option> ::=
  2090. DEU|0203040318  |    25|R |             <keyswap spec>
  2091. DEU|02030405    |     1|  |                            Schlⁿsselworte
  2092. DEU|02030405    |     2|  |                            ---------------
  2093. DEU|02030405    |     4| I|    ##0203030102$ACTION     ##0203030102$CMD        ##0203030109$COLNO      ##0203030104$COUNT      ##0203030102$CURSOR
  2094. DEU|02030405    |     5| I|    ##0203030102$EDITLINES  ##0203030102$FUNCTION   ##0203030101$GROUP      ##0203030110$ITEMS      ##0203030102$KEY
  2095. DEU|02030405    |     6| I|    ##0203030107$KEYLINES   ##0203030105$MAXLINES   ##0203030105$MAXCOLS    ##02030211$MICRO      ##0203030107$MSGLINES
  2096. DEU|02030405    |     7| I|    ##0203030108$OS         ##0203030108$PROCESSID  ##0203030103$RC         ##0203030109$COLNO      ##0203030103$RT
  2097. DEU|02030405    |     8| I|    ##0203030105$SCREENCOLS ##0203030105$SCREENLNS  ##02030211$SEC        ##0203030101$SERVERDB   ##0203030103$SQLCODE
  2098. DEU|02030405    |     9| I|    ##0203030103$SQLERRMC   ##0203030103$SQLERRPOS  ##0203030106$SQLWARN    ##0203030110$SYSRC      ##0203030110$SYSRT
  2099. DEU|02030405    |    10| I|    ##0203030108$TERM       ##0203030101$USER       ##0203030101$USERMODE
  2100. DEU|02030405    |    12| I|    ##0203030207ABS         ##050408ACCEPT      ##0203030402ADDDATE     ##0203030404ADDTIME     ##0203011004ALL
  2101. DEU|02030405    |    13| I|    ##0203011003ALPHA       ##0203011001AND         ##0203011004ANY         ##0203030203ARCTAN      ##0203030201AVG
  2102. DEU|02030405    |    15| I|    ##02030404BEGIN       ##0203011002BETWEEN     ##0203030301BLANK       ##0203030312BREAK
  2103. DEU|02030405    |    17|SI|    ##02030106CALL        ##02030104CASE        ##02030116CATCH       ##0203030307CHANGE      ##0203030308CHR
  2104. DEU|02030405    |    19| I|    ##05040404CHECK       ##02030202CLEAR       ##0203020601CLOSE       ##02030202CMDKEY      ##02030202COL
  2105. DEU|02030405    |    20| I|    ##0203020406CONNECT     ##050411CONTROL     ##0203030203COS         ##050607CPAGE
  2106. DEU|02030405    |    22| I|    ##02030203DARK        ##0203030401DATE        ##0203030402DATEDIFF    ##0203030403DAYOFWEEK   ##0203030403DAYOFYEAR
  2107. DEU|02030405    |    23| I|    ##0211DBPROC      ##0203011005DELETING    ##020302040202DESCRIBE    ##02030401DIV         ##02030112DO
  2108. DEU|02030405    |    24| I|    ##050408DOWN        ##050408DOWNKEY     ##02030112DOWNTO
  2109. DEU|02030405    |    26| I|    ##0203011004EACH        ##02030207EDIT        ##02030103ELSE        ##02030404END         ##050408ENDKEY
  2110. DEU|02030405    |    27| I|    ##0502ENDLAYOUT   ##110301ENDMODULE   ##050408ENTER       ##0203011003EOF         ##0502ERROR
  2111. DEU|02030405    |    28| I|    ##050409EXCEPT      ##02030212EXEC        ##0203020402EXECUTE     ##0203030204EXP
  2112. DEU|02030405    |    30| I|    ##0203020401FETCH       ##050404FIELD       ##0203011005FIRSTCALL   ##0203011003FIXED       ##02030112FOR
  2113. DEU|02030405    |    31| I|    ##0502FORM        ##0203030304FORMAT      ##050603FORMPOS     ##020701FUNCTION    ##050408F1^..^F12
  2114. DEU|02030405    |    33| I|    ##02030211GETIME      ##02030209GTSORT
  2115. DEU|02030405    |    35|SI|    ##050408HELP        ##05040403HELPFORM    ##050408HELPKEY     ##0203030309HEX         ##02030202HI
  2116. DEU|02030405    |    37| I|    ##02030202HIGH
  2117. DEU|02030405    |    39| I|    ##02030103IF          ##050409IGNORE      ##050403IN          ##0203030305INDEX       ##05040402INIT
  2118. DEU|02030405    |    40| I|    ##02030211INITTIME    ##021102INOUT       ##0203011005INSERTING   ##0203020403INTO        ##02030110IS
  2119. DEU|02030405    |    42| I|    ##02030207KEYSWAP
  2120. DEU|02030405    |    44| I|    ##0203011005LASTCALL    ##0502LAYOUT      ##050408LEFT        ##050408LEFTKEY
  2121. DEU|02030405    |    45| I|    ##0203030303LENGTH      ##0203011002LIKE        ##050607LINEFEED    ##050607LINESPACE   ##0203030204LN
  2122. DEU|02030405    |    46| I|    ##050402LOW         ##0203030310LOWER       ##02030209LTSORT
  2123. DEU|02030405    |    48| I|    ##0203030405MAKETIME    ##0203030201MAX         ##0203030205MDS         ##0502MESSAGE     ##0203030201MIN
  2124. DEU|02030405    |    49| I|    ##02030401MOD         ##0203011003MODIFIED
  2125. DEU|02030405    |    51| I|    ##050607NEWPAGE     ##050905NEXTFIELD   ##050906NEXTGROUP   ##02030202NL          ##050606NOINIT
  2126. DEU|02030405    |    52|SI|    ##0203011001NOT         ##0203011003NULL        ##0203011003NUMERIC
  2127. DEU|02030405    |    55| I|    ##02030104OF          ##0203011004ONE         ##0203020601OPEN        ##020305OPTION      ##020305OPTIONS
  2128. DEU|02030405    |    56| I|    ##0203011001OR          ##0203030308ORD         ##02030104OTHERWISE   ##050403OUT         ##02030203OUTIN
  2129. DEU|02030405    |    58| I|    ##0203030314PAD         ##050405PAGE        ##02030106PARM        ##02030106PARMS       ##02030202PAUSE
  2130. DEU|02030405    |    59| I|    ##050408PF1^..^PF12 ##0203030205PI          ##050406PICK        ##02030202POS         ##020302040202PREPARE
  2131. DEU|02030405    |    60| I|    ##050607PRINT       ##02030106PROC        ##02030203PROMPT      ##050406PUT
  2132. DEU|02030405    |    62| I|    ##0203020502QUERY
  2133. DEU|02030405    |    64| I|    ##02030203READ        ##0203020602READFILE    ##0203020406RELEASE     ##02030101REPEAT      ##02030205REPORT
  2134. DEU|02030405    |    65| I|    ##02030105RETURN      ##050416RETURNONLAST##050408RIGHT       ##050408RIGHTKEY    ##0203030202ROUND
  2135. DEU|02030405    |    67| I|    ##050603SCREENPOS   ##050603SCREENSIZE  ##0203030315SEPARATE    ##02030210SET         ##0203030208SIGN
  2136. DEU|02030405    |    68| I|    ##0203030203SIN         ##02030202SIZE        ##02030109SKIP        ##050408SK1^..^SK9  ##0203011004SOME
  2137. DEU|02030405    |    69| I|    ##0203030313SPAN        ##02030204SQL         ##0203030206SQR         ##0203030206SQRT        ##02030111STOP
  2138. DEU|02030405    |    70| I|    ##0203030306STRPOS      ##0203030402SUBDATE     ##0203030302SUBSTR      ##0203030404SUBTIME     ##02030108SWITCH
  2139. DEU|02030405    |    71|SI|    ##02030114SWITCHCALL
  2140. DEU|02030405    |    73| I|    ##02030103THEN        ##0203030401TIME        ##0203030404TIMEDIFF    ##02030112TO          ##0203030315TOKENIZE
  2141. DEU|02030405    |    74| I|    ##0211TRIGGER     ##0203030303TRIM        ##0203030202TRUNC       ##02030116TRY
  2142. DEU|02030405    |    76| I|    ##02030101UNTIL       ##050408UP          ##0203011005UPDATING    ##050408UPKEY       ##0203030310UPPER
  2143. DEU|02030405    |    78|RI|    ##0203030403WEEKOFYEAR  ##050409WHEN        ##02030102WHILE       ##02030202WRITE       ##0203020603WRITEFILE
  2144. DEU|020305      |     1|  |    In  der  OPTIONS-Anweisung  (direkt nach dem Modulkopf angebbar) k÷nnen
  2145. DEU|020305      |     2|  |    eine Reihe von Angaben gemacht  werden,  die  im  folgenden  aufgefⁿhrt
  2146. DEU|020305      |     3|  |    werden :
  2147. DEU|020305      |     5|  |    LOOP <zahl>   begrenzt  die  Anzahl  der  SchleifendurchlΣufe bei FOR-,
  2148. DEU|020305      |     6|  |         WHILE-  und  REPEAT-Schleifen  auf  die  angegebene  Anzahl.  Beim
  2149. DEU|020305      |     7|  |         ▄berschreiten der Anzahl wird die Ausfⁿhrung des Programms mit der
  2150. DEU|020305      |     8|  |         Meldung "Endlosschleife vermutet" abgebrochen.
  2151. DEU|020305      |    10|  |    AUTOCOMMIT OFF   bewirkt,  da▀ in dieser Routine kein implizites COMMIT
  2152. DEU|020305      |    11|  |         WORK  vor  Benutzereingaben  (READ,  FORM-Aufruf)  gemacht   wird.
  2153. DEU|020305      |    12|  |         Au▀erdem  wird  der  Fehler  700  (  Command  inactivity timeout )
  2154. DEU|020305      |    13|  |         durchgereicht und mu▀ von dem Programm abgefangen werden.
  2155. DEU|020305      |    15|  |    MODULETRACE  bewirkt, da▀ ab dem  Aufruf  dieser  Routine  alle  Unter-
  2156. DEU|020305      |    16|  |         programmaufrufe  in einer Protokolldatei vermerkt werden. Der Name
  2157. DEU|020305      |    17|S |         der Protokolldatei ist mit dem Werkbankkommando SET einstellbar.
  2158. DEU|020305      |    19|  |    SQLTRACE  bewirkt, da▀ alle in der Routine ausgefⁿhrten SQL-Aufrufe  in
  2159. DEU|020305      |    20|  |         einer Datei protokolliert werden.
  2160. DEU|020305      |    22|  |    SQLTRACE ALL   bewirkt,  da▀  alle folgenden SQL-Aufrufe in einer Datei
  2161. DEU|020305      |    23|  |         protokolliert werden.
  2162. DEU|020305      |    25|  |    LIB /<benutzername>./ <bibliotheksname>  bewirkt,  da▀  ab  dem  Aufruf
  2163. DEU|020305      |    26|  |         dieser  Routine  vom  Benutzer definierte SQL-PL Funktionen in der
  2164. DEU|020305      |    27|  |         angegebenen  Bibliothek   gesucht   werden.   StandardmΣssig   ist
  2165. DEU|020305      |    28|  |         <user>.STDLIB  eingestellt.  Die  Einstellung behΣlt ihre Wirkung,
  2166. DEU|020305      |    29|  |         bis eine neue Vereinbarung getroffen wird oder die Routine  wieder
  2167. DEU|020305      |    30|  |         verlassen wird.
  2168. DEU|020305      |    32| I|    TEST DBPROC bewirkt, da▀ alle in dieser Routine enthaltenen ##02030115CALL^DBPROC
  2169. DEU|020305      |    33|  |         Anweisungen  fⁿr einen speziellen Testmodus ⁿbersetzt werden. Dies
  2170. DEU|020305      |    34|  |         bedeutet, da▀ der Aufruf der DB-Prozedur simuliert  wird,  wodurch
  2171. DEU|020305      |    35|SI|         die  ⁿblichen  Testm÷glichkeiten  zur Verfⁿgung stehen ( ##0209Debugger,
  2172. DEU|020305      |    37|  |         SQLTRACE, MODULETRACE ).
  2173. DEU|020305      |    39|  |    SUBPROC bewirkt, das jede Anweisung, die  nicht  in  einer  DB-Prozedur
  2174. DEU|020305      |    40|  |      zulΣssig ist, als Fehler markiert wird.
  2175. DEU|020305      |    42| I|    ##050410KEYSWAP-Option.
  2176. DEU|020305      |    44|  |    Beispiele :
  2177. DEU|020305      |    46|  |
  2178. DEU|020305      |    47| E|      PROC kunde.start  OPTIONS ( LOOP 50, AUTOCOMMIT OFF );
  2179. DEU|020305      |    48| E|      PROC kunde.start  OPTIONS ( LIB kundefkt, SQLTRACE, MODULETRACE );
  2180. DEU|020305      |    49|  |
  2181. DEU|020305      |    51|RI|                                                          ##0203040318->^Syntax
  2182. DEU|0207        |     1|  |    SQL-PL Funktionen
  2183. DEU|0207        |     3|  |    SQL-PL  Funktionen  unterstⁿtzen  die Entwicklung gr÷▀erer Anwendungen.
  2184. DEU|0207        |     4|  |    FunktionalitΣt, die in  der  gesamten  Anwendung  ( d. h.  in  mehreren
  2185. DEU|0207        |     5|  |    Programmen )  ben÷tigt  wird,  kann  zu einer Bibliothek zusammengefa▀t
  2186. DEU|0207        |     6|  |    werden. Die Funktionen k÷nnen aufgerufen werden, ohne da▀ das  laufende
  2187. DEU|0207        |     7|  |    Programm verlassen wird.
  2188. DEU|0207        |     9| M|    #01Vereinbarung einer Funktion
  2189. DEU|0207        |    10| M|    #02Aufruf von Funktionen
  2190. DEU|0207        |    11|RM|    #03Restriktionen
  2191. DEU|020701      |     1|  |    Vereinbarung einer SQL-PL Funktion
  2192. DEU|020701      |     3|  |    Funktionen  werden  durch  das  einleitende  Schlⁿsselwort FUNCTION von
  2193. DEU|020701      |     4|  |    normalen SQL-PL Routinen unterschieden. Durch die RETURN-Anweisung kann
  2194. DEU|020701      |     5|  |    ein Wert an die aufrufende Umgebung zurⁿckgegeben werden.
  2195. DEU|020701      |     7|  |    Beispiele :
  2196. DEU|020701      |     9|  |
  2197. DEU|020701      |    10| E|      FUNCTION stdlib.summe PARMS (@s1, @s2, @s3, @s4, @s5);
  2198. DEU|020701      |    11| E|      RETURN (@s1 + @s2 + @s3 + @s4 + @s5);
  2199. DEU|020701      |    13| E|      FUNCTION stdlib.liste PARM (@reportname);
  2200. DEU|020701      |    14| E|      REPORT CMD ( TTITLE '':@reportname'')
  2201. DEU|020701      |    15|  |
  2202. DEU|020701      |    17|RI|                                                          ##0203040107->^Syntax
  2203. DEU|020702      |     1|  |    Aufruf von Funktionen
  2204. DEU|020702      |     3|  |    Der Aufruf einer SQL-PL Funktion  wird  durch  das  Prozentzeichen  (%)
  2205. DEU|020702      |     4|  |    eingeleitet.  Die Funktion wird in der aktuell eingestellten Bibliothek
  2206. DEU|020702      |     5| I|    ( ##020305Optionen und Testhilfen ) gesucht.
  2207. DEU|020702      |     7|  |    Funktionsaufrufe k÷nnen in Ausdrⁿcken verwendet werden, aber  auch  als
  2208. DEU|020702      |     8|  |    eigenstΣndige Anweisungen auftreten.
  2209. DEU|020702      |    10|  |    Beispiele :
  2210. DEU|020702      |    12|  |
  2211. DEU|020702      |    13| E|      summe := %summe (a,b,c,d,e);
  2212. DEU|020702      |    14| E|      %liste ('Kundenliste');
  2213. DEU|020702      |    15|  |
  2214. DEU|020702      |    17|S |    Bei  der Verwendung in Ausdrⁿcken mu▀ in der Funktion durch die RETURN-
  2215. DEU|020702      |    19|  |    Anweisung ein Wert zurⁿckgegeben werden.
  2216. DEU|020702      |    21|RI|                                                          ##0203040141->^Syntax
  2217. DEU|020703      |     1|  |    Restriktionen
  2218. DEU|020703      |     3|  |    In  SQL-PL  Funktionen  dⁿrfen  keine  CALL-   und   SWITCH-Anweisungen
  2219. DEU|020703      |     4|  |    auftreten; SQL-PL Funktionen dⁿrfen aufgerufen werden.
  2220. DEU|020703      |     6|R |    Globale Variablen sind nicht zugelassen.
  2221. DEU|0208        |     1|  |    Restriktionen
  2222. DEU|0208        |     3|  |    - 512   verschiedene  g l o b a l e  Variablen.
  2223. DEU|0208        |     4|  |    - 255   Komponenten pro Vektor.
  2224. DEU|0208        |     5|  |    - 12276 Byte gro▀e Variablenwerte.
  2225. DEU|0208        |     6|  |    - 63    Module pro Programm, die globale Variablen ansprechen.
  2226. DEU|0208        |     7|  |    - 255   Aus- und Eingabefelder pro Maske.
  2227. DEU|0208        |     8|  |    - 255   SQL-Variablen pro SQL-Kommando.
  2228. DEU|0208        |     9|  |    - Beliebige Anzahl von Programmen pro Benutzer.
  2229. DEU|0208        |    10|  |    - 255   formale Parameter pro Routine.
  2230. DEU|0208        |    11|  |    - 20    Argumente bei Maskenaufrufoption ATTR
  2231. DEU|0208        |    12|  |    - 20    Variablen-Argumente bei Maskenaufrufoption INPUT
  2232. DEU|0208        |    13|R |    - 255   Feldnummern-Argumente bei Maskenaufrufoption INPUT
  2233. DEU|0209        |     1|  |                         Der Debugger
  2234. DEU|0209        |     2|  |                         ------------
  2235. DEU|0209        |     4| M|                         #00Vorgehensweise
  2236. DEU|0209        |     5| M|                         #01Variablen^anzeigen
  2237. DEU|0209        |     6| M|                         #02Variablen^Σndern
  2238. DEU|0209        |     7| M|                         #03Haltepunkte^setzen
  2239. DEU|0209        |     8| M|                         #04Haltepunkte^l÷schen
  2240. DEU|0209        |     9| M|                         #06Haltepunkte^anzeigen
  2241. DEU|0209        |    10| M|                         #05Systemvariablen^anzeigen
  2242. DEU|0209        |    11|RM|                         #06sonstige^Kommandos
  2243. DEU|020900      |     1|  |    Die  SQL-PL  Testhilfe  ( Debugger )  soll  den Programmentwickler beim
  2244. DEU|020900      |     2|  |    Testen seiner SQL-PL Anwendungen unterstⁿtzen.
  2245. DEU|020900      |     4|  |    Folgende Vorgehensweise ist daher fⁿr den Debugger erforderlich:
  2246. DEU|020900      |     5|  |    In der Kommandozeile der Werkbank oder  des  Editors  wird  die  Debug-
  2247. DEU|020900      |     6| I|    Option  durch  Eingabe  von ##110401DEBUG^ON eingeschaltet. Die Module, die mit
  2248. DEU|020900      |     7| I|    dem Debugger bearbeitet  werden  sollen,  mⁿssen  dann  mit  ##110205STORE  neu
  2249. DEU|020900      |     8|  |    ⁿbersetzt werden.
  2250. DEU|020900      |    10| I|    Die Debug-Option wird durch Eingabe von ##110401DEBUG^OFF ausgeschaltet.
  2251. DEU|020900      |    12|  |    Das Programm wird dann solange "normal" ausgefⁿhrt, bis der erste Modul
  2252. DEU|020900      |    13|  |    aufgerufen  wird, der zuvor mit Debug-Option ⁿbersetzt wurde. Dann wird
  2253. DEU|020900      |    14|  |    in den Debugger verzweigt. In der  unteren  BildschirmhΣlfte  wird  der
  2254. DEU|020900      |    15|  |    SQL-PL  Modul  angezeigt.  Die aktuelle Anweisung wird in der mittleren
  2255. DEU|020900      |    16|  |    Zeile des Editierformulars hervorgehoben dargestellt. Mit den AUF-  und
  2256. DEU|020900      |    17|S |    AB-Tasten kann im Editierformular geblΣttert werden.
  2257. DEU|020900      |    19|  |    In  der Kommandozeile k÷nnen die unten beschriebenen Debugger-Kommandos
  2258. DEU|020900      |    20|  |    angegeben  werden.  Eventuelle  Anzeigen   erfolgen   in   der   oberen
  2259. DEU|020900      |    21|  |    BildschirmhΣlfte.
  2260. DEU|020900      |    24| I|    Der  Debugger  bietet  die M÷glichkeit Variableninhalte ##020901anzuzeigen oder
  2261. DEU|020900      |    25| I|    sie zu ##020902Σndern ;  Haltepunkte  zu  ##020903definieren,  zu  ##020904entfernen  oder  sie
  2262. DEU|020900      |    26| I|    ##020906anzuzeigen.
  2263. DEU|020900      |    28| I|    Der  Entwickler  kann  sich  die  ##020905Systemvariablen  und  die ##020906Aufruffolge
  2264. DEU|020900      |    29|R |    anzeigen lassen.
  2265. DEU|020901      |     1|  |    Es  kann  der   Wert   einzelner   Variablen,   Vektorkomponenten   und
  2266. DEU|020901      |     2|  |    Vektorbereiche des laufenden Programms angezeigt werden.
  2267. DEU|020901      |     4|  |    V <varname>
  2268. DEU|020901      |     5|  |    V <varname> ( <index> )
  2269. DEU|020901      |     6|  |    V <varname> ( <unterer index> .. <oberer index> )
  2270. DEU|020901      |     8|  |    Beispiele :
  2271. DEU|020901      |    10|  |      V zaehler
  2272. DEU|020901      |    11|  |      V liste(1..10)
  2273. DEU|020901      |    12|R |      V @kundennr(5)
  2274. DEU|020902      |     1|  |    Es   kann   der   Wert   einzelner   Variablen,  Vektorkomponenten  und
  2275. DEU|020902      |     2|  |    Vektorbereiche des laufenden Programms verΣndert werden.
  2276. DEU|020902      |     4|  |    Hierbei  kann  eine  Zahl  oder  eine  Zeichenkette  angegeben  werden.
  2277. DEU|020902      |     5|  |    Zeichenketten  sind  ohne Hochkommata anzugeben. Sie werden unverΣndert
  2278. DEU|020902      |     6|  |    ⁿbernommen.
  2279. DEU|020902      |     8|  |    Wird  hinter  dem  Variablennamen  kein  Wert  angegeben,  wird  dieser
  2280. DEU|020902      |     9|  |    Variablen der NULL-Wert zugewiesen.
  2281. DEU|020902      |    11|  |    A <varname> /<wert>/
  2282. DEU|020902      |    12|  |    A <varname> ( <index> ) /<wert>/
  2283. DEU|020902      |    13|  |    A <varname> ( <unterer index> .. <oberer index> ) /<wert>/
  2284. DEU|020902      |    15|  |    Beispiel :
  2285. DEU|020902      |    17|S |      A zaehler 10
  2286. DEU|020902      |    19|  |      A @kundennr(2) K1234
  2287. DEU|020902      |    20|R |      A liste(1..10)
  2288. DEU|020903      |     1|  |    Mit  der  B-Funktion  k÷nnen  Haltepunkte  in  "debug-fΣhigen" Routinen
  2289. DEU|020903      |     2|  |    definiert werden.
  2290. DEU|020903      |     4|  |    B <programm>/<modul>/<zeilennummer>
  2291. DEU|020903      |     5|  |    B <zeilennummer>
  2292. DEU|020903      |     7|  |    Die Ausfⁿhrung des Programms wird unterbrochen, bevor die Anweisung  in
  2293. DEU|020903      |     8|  |    Editorzeile  <zeilennummer>  ausgefⁿhrt wird. Ist kein Modul angegeben,
  2294. DEU|020903      |     9|  |    so wird der Haltepunkt in die entsprechende Zeile des gerade  aktuellen
  2295. DEU|020903      |    10|  |    Moduls gesetzt.
  2296. DEU|020903      |    12|  |    BV <varname>
  2297. DEU|020903      |    13|  |    BV <varname> ( <index> )
  2298. DEU|020903      |    15|  |    Die  Ausfⁿhrung  des  Programms  wird  unterbrochen,  wenn der Wert der
  2299. DEU|020903      |    16|S |    angegebenen Variablen geΣndert wurde.
  2300. DEU|020903      |    19|  |    ~
  2301. DEU|020903      |    21|  |    Beispiele :
  2302. DEU|020903      |    23|  |      B kunde/start/0005
  2303. DEU|020903      |    24|  |      B 5
  2304. DEU|020903      |    25|  |      BV zaehler
  2305. DEU|020903      |    26|R |      BV @kundennr(2)
  2306. DEU|020904      |     1|  |    Mit der R-Funktion kann der angegebene Haltepunkte deaktiviert werden.
  2307. DEU|020904      |     3|  |    R <programm>/<modul>/<zeilennummer>
  2308. DEU|020904      |     4|  |    R <zeilennummer>
  2309. DEU|020904      |     6|  |    RV <varname>
  2310. DEU|020904      |     7|  |    RV <varname> ( <index> )
  2311. DEU|020904      |     9|  |    Beispiele :
  2312. DEU|020904      |    11|  |      R kunde/start/0005
  2313. DEU|020904      |    12|  |      R 5
  2314. DEU|020904      |    13|  |      RV zaehler
  2315. DEU|020904      |    14|R |      RV @kundennr(2)
  2316. DEU|020905      |     1|  |    $        zeigt die Dollarvariablen an :
  2317. DEU|020905      |     2|  |             $USER, $GROUP, $DBNAME, $FILERC, $RC, $COUNT,
  2318. DEU|020905      |     3|  |             $CURSOR, $EDITLINES, $SEC, $MICRO, $ROWNO, $COLNO,
  2319. DEU|020905      |     4|  |             $SCREENLNS, $SCREENCOLS, $MAXLINES, $MAXCOLS,
  2320. DEU|020905      |     5|  |             $MSGLINES, $KEYLINES, $CMD, $KEY
  2321. DEU|020905      |     7|R |    $<name>  zeigt den Wert der angegebenen Systemvariablen an.
  2322. DEU|020906      |     1|  |    L                     zeigt eine Liste aller Haltepunkte,
  2323. DEU|020906      |     2|  |                          die fⁿr Anweisungen definiert sind.
  2324. DEU|020906      |     4|  |    LV                    zeigt eine Liste aller Haltepunkte,
  2325. DEU|020906      |     5|  |                          die fⁿr Variablen definiert sind.
  2326. DEU|020906      |     7|  |    T                     zeigt die Folge der aufgerufenen Module an.
  2327. DEU|020906      |     9|  |    G                     fⁿhrt das Programm bis zum nΣchsten Halte-
  2328. DEU|020906      |    10|  |                          punkt bzw. bis zum Ende fort.
  2329. DEU|020906      |    12|  |    H                     bewirkt den sofortigen Abbruch des Programms.
  2330. DEU|020906      |    14|  |    S                     schaltet den Einzelschrittmodus an bzw. aus.
  2331. DEU|020906      |    16|S |    X                     zeigt die Werte der ⁿbergebenen Parameter.
  2332. DEU|020906      |    19|  |    ?  oder INFO-Taste    verzweigt in den HELP-Modus.
  2333. DEU|020906      |    20|R |    BLANKO-Taste          l÷scht die obere BildschirmhΣlfte.
  2334. DEU|0211        |     1|  |                         DB-Prozeduren und Trigger
  2335. DEU|0211        |     2|  |                         -------------------------
  2336. DEU|0211        |     4| M|                         #01Restriktionen
  2337. DEU|0211        |     5| M|                         #02Parameter -Deklarationen
  2338. DEU|0211        |     6| M|                         #03EingeschrΣnkte Anweisungen
  2339. DEU|0211        |     7| M|                         #04Aufruf
  2340. DEU|0211        |     8| M|                         #05Parameter -Deklarationen in Triggern
  2341. DEU|0211        |     9| I|                         ##1107Verwaltung DB-Prozeduren
  2342. DEU|0211        |    10|RI|                         ##1108Verwaltung Trigger
  2343. DEU|021101      |     1|  |        Restriktionen in DB-Prozeduren und Triggern
  2344. DEU|021101      |     3|  |    Soll eine SQL-PL Routine als DB-Prozedur deklariert werden,  so  gelten
  2345. DEU|021101      |     4|  |    die folgenden zusΣtzlichen EinschrΣnkungen :
  2346. DEU|021101      |     6| I|    -  die ##021102Parameter der Routine mⁿssen deklariert werden.
  2347. DEU|021101      |     8|  |    -  der  Umfang  einer  Routine  ist auf ein Viertel der maximalen Gr÷▀e
  2348. DEU|021101      |     9|  |       einer normalen SQL-PL Routine beschrΣnkt.
  2349. DEU|021101      |    11|  |    -  alle direkt oder indirekt aufgerufenen Module mⁿssen existieren, sie
  2350. DEU|021101      |    12|  |       unterliegen den gleichen Restriktionen
  2351. DEU|021101      |    14| I|    -  nicht alle ##021103SQL-PL Anweisungen sind zulΣssig
  2352. DEU|021101      |    16|R |    -  die Compiler-Optionen DEBUG und SQLSYNTAX werden ignoriert
  2353. DEU|021102      |     1|  |        Parameter-Deklaration in DB-Prozeduren
  2354. DEU|021102      |     3|  |    DB-Prozeduren k÷nnen auch aus Precompiler-Programmen aufgerufen werden.
  2355. DEU|021102      |     4|  |    Da deren Programmiersprachen einem anderen Typ-Konzept unterliegen  als
  2356. DEU|021102      |     5|  |    SQL-PL, ist es erforderlich, die Parameter der Mainprocedure nach Modus
  2357. DEU|021102      |     6|  |    und Datentyp zu deklarieren.
  2358. DEU|021102      |     8|  |    Modus ist
  2359. DEU|021102      |    10|  |    -  IN (Eingabeparameter)
  2360. DEU|021102      |    12|  |    -  OUT (Ausgabeparameter)
  2361. DEU|021102      |    14|  |    -  INOUT (Ein-/Ausgabeparameter)
  2362. DEU|021102      |    16|  |    Der Typ ist Σquivalent zu den SQL-Datentypen von ADABAS :
  2363. DEU|021102      |    17|S |    FIXED, FLOAT, CHAR (BYTE/DBYTE), TIME, DATE.
  2364. DEU|021102      |    19|  |    Ein  Parameter  vom  Typ  LONG  kann nicht deklariert werden. NOT NULL,
  2365. DEU|021102      |    20|  |    Default-Werte   sowie   CHECK-Bedingungen   werden   ebenfalls    nicht
  2366. DEU|021102      |    21|  |    unterstⁿtzt.
  2367. DEU|021102      |    23|  |    Diese  Deklarationen  sind  nur  fⁿr  die  ▄bergabe  der  Parameter von
  2368. DEU|021102      |    24|  |    Bedeutung, innnerhalb der  DB-Prozedur  k÷nnen  die  Parametervariablen
  2369. DEU|021102      |    25|  |    jeden beliebigen Typ annehmen.
  2370. DEU|021102      |    27|  |    Beispiel :
  2371. DEU|021102      |    29|  |          DBPROC hotel.buchung (
  2372. DEU|021102      |    30|  |           IN  @kundenname CHAR(40),
  2373. DEU|021102      |    31|  |           IN  @tag        DATE,
  2374. DEU|021102      |    32|  |           OUT @hotel      CHAR(20),
  2375. DEU|021102      |    33|  |           OUT @kosten     FIXED(6,2) );
  2376. DEU|021102      |    35|RI|                                                          ##0203040110->^Syntax
  2377. DEU|021103      |     1|  |    Nicht zugelassen in DB-Prozeduren und Triggern sind
  2378. DEU|021103      |     4|  |    Ausgaben auf den Bildschirm, den Drucker oder eine Betriebssystemdatei :
  2379. DEU|021103      |     5|  |    WRITE, READ
  2380. DEU|021103      |     6|  |    CALL FORM, EDIT, REPORT, QUERY
  2381. DEU|021103      |     7|  |    WRITEFILE, READFILE, OPEN, CLOSE
  2382. DEU|021103      |     8|  |    Option MODULETRACE, SQLTRACE
  2383. DEU|021103      |    10|  |    Wechsel des laufenden Programms
  2384. DEU|021103      |    11|  |    SWITCH, SWITCHCALL
  2385. DEU|021103      |    13|  |    Erweiterte SQL-Schnittstelle :
  2386. DEU|021103      |    14|  |    dynamisches SQL
  2387. DEU|021103      |    15|  |    Multi-DB-Betrieb
  2388. DEU|021103      |    17|S |    Ausfⁿhren von DB-Prozeduren :
  2389. DEU|021103      |    19|  |    CALL DBPROC
  2390. DEU|021103      |    20|  |    SQL ( DBPROCEDURE ... )
  2391. DEU|021103      |    21|  |    Der  Aufruf  der  entsprechenden SQL-PL Routine ist dagegen mittels der
  2392. DEU|021103      |    22|  |    CALL-PROC-Anweisung m÷glich.
  2393. DEU|021103      |    24|  |    Beenden einer Transaktion :
  2394. DEU|021103      |    25|  |    SQL ( COMMIT ); SQL ( ROLLBACK )
  2395. DEU|021103      |    26|R |    Subtransaktionen sind zulΣssig.
  2396. DEU|021104      |     1|  |    Aufruf von DB-Prozeduren
  2397. DEU|021104      |     3|  |    Aufruf aus SQL-PL :
  2398. DEU|021104      |     5| I|    ##02030115CALL^DBPROC -Anweisung
  2399. DEU|021104      |     8|  |    Aufruf aus Precompiler-Programmen :
  2400. DEU|021104      |    10|  |    EXEC SQL ( DBPROCEDURE owner.appl.module ( :var1, :var2, ... ) )
  2401. DEU|021104      |    12|R |    NΣheres siehe Precompiler-Dokumentation.
  2402. DEU|021105      |     1|  |        Parameter-Deklarationen in Triggern
  2403. DEU|021105      |     3|  |    Die Parameter eines Triggers mⁿssen  wie  die  einer  DB-Prozedur  nach
  2404. DEU|021105      |     4| I|    ##021102Modus  und  ##021102Typ  deklariert  werden. Die Namen der Parameter sind nicht
  2405. DEU|021105      |     5|  |    frei wΣhlbar, sondern mⁿssen den Spaltennamen der Tabelle  entsprechen,
  2406. DEU|021105      |     6|  |    fⁿr  die  der Trigger definiert werden soll. ZusΣtzlich ist es m÷glich,
  2407. DEU|021105      |     7|  |    mit den PrΣfixen "NEW." und "OLD." auf den neuen  (  INSERT,  UPDATE  )
  2408. DEU|021105      |     8|  |    bzw. den alten Wert ( DELETE, UPDATE ) der Spalte zuzugreifen.
  2409. DEU|021105      |     9|  |    Beispiel :
  2410. DEU|021105      |    11|  |
  2411. DEU|021105      |    12| E|          TRIGGER Katalog.Preis_Aenderung (
  2412. DEU|021105      |    13| E|            IN  OLD.price FIXED ( 10, 3 ),
  2413. DEU|021105      |    14| E|            IN  NEW.price FIXED ( 10, 3 ) );
  2414. DEU|021105      |    16| E|          IF NEW.price > ( OLD.price * 1.1 )
  2415. DEU|021105      |    17|SE|          THEN
  2416. DEU|021105      |    19| E|              STOP ( -999, 'Preiserh÷hung nur bis 10 % zugelassen' );
  2417. DEU|021105      |    20|RE|    E$}
  2418.