home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 20 / dos_txl / hilfe.txl next >
Encoding:
Text File  |  1991-03-19  |  73.5 KB  |  1,097 lines

  1. ╔════════════════════════════════════════════════════════════════╗
  2. ║ Befehlsübersicht:  Standard-Befehle                            ║
  3. ╟─────────────┬──────────────────────────────────────────────────╢
  4. ║ Befehlsname │ Funktion                                         ║
  5. ╟─────────────┼──────────────────────────────────────────────────╢
  6. ║ lauf        │ Ausführen eines Interpreterprogramms im Speicher ║
  7. ║ drucke      │ Ausgabe von Text oder Werten auf dem Terminal    ║
  8. ║ setze       │ Zuweisen eines Wertes an eine Variable           ║
  9. ║ wenn        │ Bedingte Programmausführung (siehe unten)        ║
  10. ║ gehezu      │ Programm an anderer Stelle fortführen            ║
  11. ║ ende        │ Ende eines Interpreterprogramms                  ║
  12. ║ merke       │ Kommentar                                        ║
  13. ║ liste       │ Auflisten des Interpreterprogramms               ║
  14. ║ neu         │ Programm im Speicher löschen                     ║
  15. ║ lade        │ Laden eines TXL-Quelltexts                       ║
  16. ║ speichere   │ Speichern eines TXL-Quelltexts (ASCII-Format)    ║
  17. ║ verlasse    │ Verlassen des Interpreters                       ║
  18. ║ info        │ Die Entstehungsgeschichte des TXL-Interpreters   ║
  19. ╚═════════════╧═══════════════════════════════════════< weiter >═╝
  20. |
  21. ╔════════════════════════════════════════════════════════════════╗
  22. ║ Befehlsübersicht:  Neue-Befehle                                ║
  23. ╟─────────────┬──────────────────────────────────────────────────╢
  24. ║ Befehlsname │ Funktion                                         ║
  25. ╟─────────────┼──────────────────────────────────────────────────╢
  26. ║ hilfe       │ Hilfe am Bildschirm anzeigen                     ║
  27. ║ dos         │ Startet ein Dos-Programm oder Dos-Shell          ║
  28. ║ setfarbe    │ Stellt die Farbe ein für zeig,loesch,lese,box    ║
  29. ║ zeig        │ Positionierte Ausgabe auf dem Bildschirm         ║
  30. ║ lese        │ Positioniertes Einlesen einer Variable           ║
  31. ║ loesch      │ Ganzer Bildschirm oder Ausschnitt löschen        ║
  32. ║ sbild       │ Bildschirm in eine Variable sichern              ║
  33. ║ rbild       │ Bildschirm aus einer Var. wieder herstellen      ║
  34. ║ attribut    │ Wechselt die Farbe am Bildschirm                 ║
  35. ║ box         │ Zeichnet eine Box an die angegebenen Koordin.    ║
  36. ║ pause       │ Wartet auf einen Tastendruck                     ║
  37. ║ iftaste     │ Abfrage der letzten Taste von PAUSE und LESE     ║
  38. ║ piep        │ Erzeugt einen Piepton                            ║
  39. ╚═════════════╧═══════════════════════════════════════< weiter >═╝
  40. |
  41. ╔════════════════════════════════════════════════════════════════╗
  42. ║ Befehlsübersicht: Weitere neue Befehle         Befehle Seite 3 ║
  43. ╟─────────────┬──────────────────────────────────────────────────╢
  44. ║ Befehlsname │ Parameter und Funktion                           ║
  45. ╟─────────────┼──────────────────────────────────────────────────╢
  46. ║ strdef      │ <String-Var> <Länge>                             ║
  47. ║             │   Definition eines Strings mit bestimmter Länge  ║
  48. ║ strset      │ <String-Var> = <String> Stringzuweisung          ║
  49. ║ strtoi      │ <String(-var)> <Integer-Var>                     ║
  50. ║             │   Wandelt String in long um                      ║
  51. ║ itostr      │ <Integer(-var)> <String-Var>                     ║
  52. ║             │   Wandelt long in String um                      ║
  53. ║ readln      │ <String-Var>                                     ║
  54. ║             │ Liest String von Tastatur                        ║
  55. ║             │                                                  ║
  56. ║ randomize   │ Initialisiet den Zufallszahlengenerator          ║
  57. ║ random      │ <Integer(-var)> <Integer-Var>                    ║
  58. ║             │   Setzt 2. Variable auf Zufallszahl, maximal     ║
  59. ║             │   auf den Wert des ersten Parameters             ║
  60. ╚═════════════╧═══════════════════════════════════════< weiter >═╝
  61. |
  62. ╔════════════════════════════════════════════════════════════════╗
  63. ║ Verweise auf weitere Befehlsgruppen            Befehle Seite 4 ║
  64. ╟────────────────────────────────────────────────────────────────╢
  65. ║                                                                ║
  66. ║ Unterprogramm-Erstellung                                       ║
  67. ║   blockbegin,blockend,gosub    -> siehe <gosub>                ║
  68. ║                                                                ║
  69. ║ Stackverwaltung (push/pop)     -> siehe <push>                 ║
  70. ║                                                                ║
  71. ║ Gemischte Arrays                                               ║
  72. ║   DefArrayElem, SetArrayElem, GetArrayElem                     ║
  73. ║                                                                ║
  74. ║ Windows         -> eigene Befehlsübersicht                     ║
  75. ║ Editor          -> folgt nach der Fensterbefehl-Beschreibung   ║
  76. ║ Datenbank       -> 10 ausführliche Hilfsseiten                 ║
  77. ║ Präprozessor    -> folgt nach der Datenbankbeschreibung        ║
  78. ║                                                                ║
  79. ║ Menüs -> siehe bei Windows                                     ║
  80. ║                                                                ║
  81. ╚════════════════════════════════════════════════════════════════╝
  82. |
  83. ╔════════════════════════════════════════════════════════════════╗
  84. ║ Syntaxbeschreibung:                                            ║
  85. ╟────────────────────────────────────────────────────────────────╢
  86. ║ lauf<Return>                                                   ║
  87. ║ drucke "String";<Return>                                       ║
  88. ║ drucke Variable;<Return>                                       ║
  89. ║ setze  Variable1 = Variable2;<Return>                          ║
  90. ║ setze  Variable = (Formel);<Return>                            ║
  91. ║ wenn   (Bedingung)<Return>                                     ║
  92. ║        (Dann-Zweig)<Return>                                    ║
  93. ║        (Sonst-Zweig)<Return>                                   ║
  94. ║ gehezu Zeilennummer<Return>                                    ║
  95. ║ ende<Return>                                                   ║
  96. ║ merke  Kommentar<Return>                                       ║
  97. ║ liste<Return>                                                  ║
  98. ║ neu<Return>                                                    ║
  99. ║ lade      "Filename.Extension"<Return>                         ║
  100. ║ speichere "Filename.Extension"<Return>                         ║
  101. ║ verlasse<Return>                                               ║
  102. ╚════════════════════════════════════════════════════════════════╝
  103. |
  104. <hilfe>
  105. ╔════════════════════════════════════════════════════════════════╗
  106. ║ Syntaxbeschreibung: HILFE                                      ║
  107. ╟────────────────────────────────────────────────────────────────╢
  108. ║                                                                ║
  109. ║ hilfe<Return>           Zeigt die gesammte Hilfe an.           ║
  110. ║                                                                ║
  111. ║ hilfe BEFEHL<Return>                                           ║
  112. ║ BEFEHL<F1>              Zeigt die Hilfe zum angegebenen Befehl ║
  113. ║ F1                                                             ║
  114. ║                                                                ║
  115. ║ Hilfetext erweitern oder ändern :                              ║
  116. ║                                                                ║
  117. ║     Der gesammte Hilfetext ist in der Datei "hilfe.txl"        ║
  118. ║     gespeichert.                                               ║
  119. ║     Die einzelnen Bildschirmseiten sind durch das Zeichen 124  ║
  120. ║     voneinander abgetrennt.                                    ║
  121. ║     Um einen Befehl in den SUCH-INDEX aufzunehmen,             ║
  122. ║     reicht es, den gewünschten Befehl nach einem Seitenzeichen ║
  123. ║     zwischen die Zeichen '<' und '>' zu schreiben.   <neubef>  ║
  124. ║                                                                ║
  125. ╚════════════════════════════════════════════════════════════════╝
  126. |
  127. <dos>
  128. ╔════════════════════════════════════════════════════════════════╗
  129. ║ Syntaxbeschreibung: DOS                                        ║
  130. ╟────────────────────────────────────────────────────────────────╢
  131. ║                                                                ║
  132. ║ dos<Return>             Dos-Shell                              ║
  133. ║                                                                ║
  134. ║ dos "BEFEHL"<return>    Dosbefehl ausführen                    ║
  135. ║                                                                ║
  136. ╚════════════════════════════════════════════════════════════════╝
  137. |
  138. <setfarbe>
  139. ╔════════════════════════════════════════════════════════════════╗
  140. ║ Syntaxbeschreibung: SETFARBE                                   ║
  141. ╟────────────────────────────────────────────────────────────────╢
  142. ║                                                                ║
  143. ║ setfarbe  n1  n2<Return>     Bildschirmfarbe einstellen für    ║
  144. ║                              zeig, loesch und lese             ║
  145. ║                                                                ║
  146. ║           n1    : Vordergrund                                  ║
  147. ║           n2    : Hintergrund                                  ║
  148. ║                                                                ║
  149. ║     Farben :                                                   ║
  150. ║     --------                                                   ║
  151. ║     0 schwarz                                                  ║
  152. ║     1 blau                                                     ║
  153. ║     2 grün                                                     ║
  154. ║     3 türkis                                                   ║
  155. ║     4 rot                                                      ║
  156. ║     5 lila                                                     ║
  157. ║     6 braun                                                    ║
  158. ║     7 weiss                                                    ║
  159. ╚════════════════════════════════════════════════════════════════╝
  160. |
  161. <zeig>
  162. ╔════════════════════════════════════════════════════════════════╗
  163. ║ Syntaxbeschreibung: ZEIG                                       ║
  164. ╟────────────────────────────────────────────────────────────────╢
  165. ║                                                                ║
  166. ║ zeig  n1  n2  "String"<Return>            Positionierte        ║
  167. ║ zeig  n1  n2  Variable "MASKE"<Return>    Bildschirmausgabe.   ║
  168. ║                                                                ║
  169. ║       n1        : Zeile    ( 0-24 )                            ║
  170. ║       n2        : Spalte   ( 0-79 )                            ║
  171. ║       "String"  : Ausgabetext                                  ║
  172. ║       Variable  : Ausgabevariable                              ║
  173. ║       MASKE     : Ausgabemaske ist nur bei Var-Ausgabe aktiv ! ║
  174. ║                                                                ║
  175. ║                   "99999999"      Zahlen                       ║
  176. ║                   "99999.99"      Dezimalzahl                  ║
  177. ║                   "XXXXXXXX"      String                       ║
  178. ║                                                                ║
  179. ║ Siehe auch  <SETFARBE>                                         ║
  180. ╚════════════════════════════════════════════════════════════════╝
  181. |
  182. <lese>
  183. ╔════════════════════════════════════════════════════════════════╗
  184. ║ Syntaxbeschreibung: LESE                           1. Seite    ║
  185. ╟────────────────────────────────────────────────────────────────╢
  186. ║                                                                ║
  187. ║ lese  n1  n2   Variable  "MASKE"<return> Einlesen einer        ║
  188. ║                                          Variable.             ║
  189. ║       n1         : Zeile  ( 0-24 )                             ║
  190. ║       n2         : Spalte ( 0-79 )                             ║
  191. ║       Variable   : Variable, die eingelesen wird               ║
  192. ║       MASKE      : Siehe nächste Seite                         ║
  193. ║                   "9999"          Integer einlesen             ║
  194. ║                   "9.99"          Dezimalzahl einlesen         ║
  195. ║                   "XXXX"          String                       ║
  196. ║                   "DD.DD.DDDD"    Datum                        ║
  197. ║                                                                ║
  198. ║       Mit diesen Tasten wird LESE beendet :                    ║
  199. ║                   Return, ESC, Pfeiltasten rauf runter,        ║
  200. ║                   Seite auf ab, alle Funktionstasten.          ║
  201. ║                                                                ║
  202. ║ Siehe auch  <SETFARBE> <IFTASTE>  <nächste Seite>              ║
  203. ╚═════════════════════════════════════════════════< weiter >═════╝
  204. |
  205. ╔════════════════════════════════════════════════════════════════╗
  206. ║ Syntaxbeschreibung: LESE                           2. Seite    ║
  207. ╟────────────────────────────────────────────────────────────────╢
  208. ║                                                                ║
  209. ║       MASKE :  "99999999"      Zahlen            -1234567890   ║
  210. ║                "99999.99"      Dezimalzahl       -.1234567890  ║
  211. ║                "XXXXXXXX"      String            Alle Zeichen  ║
  212. ║                "DD.DD.DD"      Datum             TT.MM.JJ      ║
  213. ║                "DD.DD.DDDD"                      TT.MM.JJJJ    ║
  214. ║                                                                ║
  215. ║      Jedes Maskenzeichen ergibt eine Eingabestelle.            ║
  216. ║                                                                ║
  217. ║                                                                ║
  218. ║      Sezial :  "@X"  = Maske wird automatisch    Alle Zeichen  ║
  219. ║                        auf Stringlänge erstellt.               ║
  220. ║                                                                ║
  221. ║                "@D"  = Maske wird automatisch    TT.MM.JJJJ    ║
  222. ║                        auf Datumfeld erstellt.                 ║
  223. ║                                                                ║
  224. ║ Siehe auch  <SETFARBE> <IFTASTE>  <vorherige Seite>            ║
  225. ╚════════════════════════════════════════════════════════════════╝
  226. |
  227. <loesch>
  228. ╔════════════════════════════════════════════════════════════════╗
  229. ║ Syntaxbeschreibung: LOESCH                                     ║
  230. ╟────────────────────────────────────────────────────────────────╢
  231. ║                                                                ║
  232. ║ loesch ;<Return>                 Löscht den ganzen Bildschirm  ║
  233. ║ loesch  n1  n2  n3  n4 <Return>  Löscht einen Ausschnitt       ║
  234. ║                                  auf dem Bildschirm            ║
  235. ║                                                                ║
  236. ║         n1   :  obere Zeile    ( 0-24 )                        ║
  237. ║         n2   :  linke Spalte   ( 0-79 )                        ║
  238. ║         n3   :  untere Zeile   ( 0-24 )                        ║
  239. ║         n4   :  rechte Spalte  ( 0-79 )                        ║
  240. ║                                                                ║
  241. ║ Bsp.                                                           ║
  242. ║                                                                ║
  243. ║         loesch 10 5 20 40<Return>                              ║
  244. ║                                                                ║
  245. ║                                                                ║
  246. ║ Siehe auch  <SETFARBE>                                         ║
  247. ╚════════════════════════════════════════════════════════════════╝
  248. |
  249. <sbild>
  250. ╔════════════════════════════════════════════════════════════════╗
  251. ║ Syntaxbeschreibung: SBILD    (Im ANSI-Modus nicht aktiv !)     ║
  252. ╟────────────────────────────────────────────────────────────────╢
  253. ║                                                                ║
  254. ║ sbild  n1  n2  n3  n4  Str-Var<Return>  Sichert den Bildschirm ║
  255. ║                                         des angegebenen        ║
  256. ║                                         Fensters in Variable.  ║
  257. ║                                                                ║
  258. ║         n1      :  obere Zeile    ( 0-24 )                     ║
  259. ║         n2      :  linke Spalte   ( 0-79 )                     ║
  260. ║         n3      :  untere Zeile   ( 0-24 )                     ║
  261. ║         n4      :  rechte Spalte  ( 0-79 )                     ║
  262. ║         Str-Var :  Variable vom Type STRING                    ║
  263. ║ Bsp.                                                           ║
  264. ║                                                                ║
  265. ║         sbild  10 5 20 40 screen<Return>                       ║
  266. ║                                                                ║
  267. ║                                                                ║
  268. ║ Siehe auch  <RBILD>                                            ║
  269. ╚════════════════════════════════════════════════════════════════╝
  270. |
  271. <rbild>
  272. ╔════════════════════════════════════════════════════════════════╗
  273. ║ Syntaxbeschreibung: RBILD    (Im ANSI-Modus nicht aktiv !)     ║
  274. ╟────────────────────────────────────────────────────────────────╢
  275. ║                                                                ║
  276. ║ rbild  n1  n2  n3  n4  Str-Var<Return>  Stellt den Bildschirm  ║
  277. ║                                         aus einer Variablen    ║
  278. ║                                         wieder her.            ║
  279. ║                                                                ║
  280. ║         n1      :  obere Zeile    ( 0-24 )                     ║
  281. ║         n2      :  linke Spalte   ( 0-79 )                     ║
  282. ║         n3      :  untere Zeile   ( 0-24 )                     ║
  283. ║         n4      :  rechte Spalte  ( 0-79 )                     ║
  284. ║         Str-Var :  Variable vom Type STRING                    ║
  285. ║ Bsp.                                                           ║
  286. ║                                                                ║
  287. ║         rbild  10 5 20 40 screen<Return>                       ║
  288. ║                                                                ║
  289. ║                                                                ║
  290. ║ Siehe auch  <SBILD>                                            ║
  291. ╚════════════════════════════════════════════════════════════════╝
  292. |
  293. <attribut>
  294. ╔════════════════════════════════════════════════════════════════╗
  295. ║ Syntaxbeschreibung: ATTRIBUT (Im ANSI-Modus nicht aktiv !)     ║
  296. ╟────────────────────────────────────────────────────────────────╢
  297. ║                                                                ║
  298. ║ attribut  n1  n2  n3  n4  v  h<Return>  Stellt die Bildschirm- ║
  299. ║                                         farbe im angegebenen   ║
  300. ║                                         Fenster um.            ║
  301. ║                                         Die Zeichen auf den    ║
  302. ║                                         Bildschirm werden      ║
  303. ║                                         nicht verändert.       ║
  304. ║                                                                ║
  305. ║         n1      :  obere Zeile      ( 0-24 )                   ║
  306. ║         n2      :  linke Spalte     ( 0-79 )                   ║
  307. ║         n3      :  untere Zeile     ( 0-24 )                   ║
  308. ║         n4      :  rechte Spalte    ( 0-79 )                   ║
  309. ║         v       :  Vordergrundfarbe ( 0-7 )    (Farbtabelle    ║
  310. ║         h       :  Hintergrundfarbe ( 0-7 )     bei SETFARBE)  ║
  311. ║                                                                ║
  312. ║ Siehe auch  <SETFARBE>                                         ║
  313. ╚════════════════════════════════════════════════════════════════╝
  314. |
  315. <box>
  316. ╔════════════════════════════════════════════════════════════════╗
  317. ║ Syntaxbeschreibung: BOX                                        ║
  318. ╟────────────────────────────────────────────────────────────────╢
  319. ║                                                                ║
  320. ║ box    n1  n2  n3  n4 "Box-Str"<Return>  Zeichnet eine Box     ║
  321. ║                                          an die angegebenen    ║
  322. ║                                          Koordinaten.          ║
  323. ║                                                                ║
  324. ║         n1        :  obere Zeile    ( 0-24 )                   ║
  325. ║         n2        :  linke Spalte   ( 0-79 )                   ║
  326. ║         n3        :  untere Zeile   ( 0-24 )                   ║
  327. ║         n4        :  rechte Spalte  ( 0-79 )                   ║
  328. ║         "Box-Str" :  Variable vom Type STRING                  ║
  329. ║                                                                ║
  330. ║         Boxstring "12345678#"  ergibt    12222223              ║
  331. ║                                          4######8              ║
  332. ║                                          4######8              ║
  333. ║         "╔═╗║╝═╚║ "                      76666665              ║
  334. ║                                                                ║
  335. ║ Siehe auch  <SETFARBE>                                         ║
  336. ╚════════════════════════════════════════════════════════════════╝
  337. |
  338. <pause>
  339. ╔════════════════════════════════════════════════════════════════╗
  340. ║ Syntaxbeschreibung:  PAUSE                                     ║
  341. ╟────────────────────────────────────────────────────────────────╢
  342. ║                                                                ║
  343. ║ pause<Return>          Das Programm wartet auf einen Tasten-   ║
  344. ║                        druck.                                  ║
  345. ║                                                                ║
  346. ║ Siehe auch  <IFTASTE>                                          ║
  347. ╚════════════════════════════════════════════════════════════════╝
  348. |
  349. <iftaste>
  350. ╔════════════════════════════════════════════════════════════════╗
  351. ║ Syntaxbeschreibung: IFTASTE                                    ║
  352. ╟────────────────────────────────────────────────────────────────╢
  353. ║                                                                ║
  354. ║ iftaste TASTENWERT<Return>       Fragt den Tastenwert ab,      ║
  355. ║         (Dann-Zweig)<Return>     mit dem die Funktion          ║
  356. ║         (Sonst-Zweig)<Return>    PAUSE oder LESE verlassen     ║
  357. ║                                  wurde.                        ║
  358. ║                                                                ║
  359. ║         Tasten-Tabelle auf der nächsten Seite !                ║
  360. ║                                                                ║
  361. ║ Siehe auch  <PAUSE>  <LESE>      < nächste Seite >             ║
  362. ╚════════════════════════════════════════════════════════════════╝
  363. |
  364. ╔════════════════════════════════════════════════════════════════╗
  365. ║ Tastenwert-Tabelle  für IFTASTE                                ║
  366. ╟────────────────────────────────────────────────────────────────╢
  367. ║      Normal      Shift        Ctrl         Alt                 ║
  368. ║      ------      -----        ----         ---                 ║
  369. ║      F1  9059    SF1  9084    CF1  9094    AF1  9104           ║
  370. ║      F2  9060    SF2  9085    CF2  9095    AF2  9105           ║
  371. ║      F3  9061    SF3  9086    CF3  9096    AF3  9106           ║
  372. ║      F4  9062    SF4  9087    CF4  9097    AF4  9107           ║
  373. ║      F5  9063    SF5  9088    CF5  9098    AF5  9108           ║
  374. ║      F6  9064    SF6  9089    CF6  9099    AF6  9109           ║
  375. ║      F7  9065    SF7  9090    CF7  9100    AF7  9110           ║
  376. ║      F8  9066    SF8  9091    CF8  9101    AF8  9111           ║
  377. ║      F9  9067    SF9  9092    CF9  9102    AF9  9112           ║
  378. ║      F10 9068    SF10 9093    CF10 9103    AF10 9113           ║
  379. ║                                                                ║
  380. ║         Escape        9027    Page up       9073               ║
  381. ║         Return        9013    Page down     9081               ║
  382. ║         Pfeilrunter   9080    Pfeilrauf     9072               ║
  383. ║                                                                ║
  384. ╚════════════════════════════════════════════════════════════════╝
  385. |
  386. <info>
  387. ╔════════════════════════════════════════════════════════════════╗
  388. ║    TXL, die "toolbox language",  ist ein nach allen Seiten     ║
  389. ║    offenes Interpreterkonzept für PC und Atari-ST.             ║
  390. ║    Jedem C-Programmierer wird es damit möglich, sich seine     ║
  391. ║    eigene Sprache zu gestalten.                                ║
  392. ║    Neben der Verwendung der TXL für Schulungszwecke lassen     ║
  393. ║    sich auch hervorragend  rechnerunabhängige  Anwendungen     ║
  394. ║    realisieren.   Einzige  Voraussetzung  ist  ein  ANSI-C     ║
  395. ║    Compiler.                                                   ║
  396. ║    Das Grundgerüst für den TXL-Interpreter  wurde  in  der     ║
  397. ║    Zeitschrift toolbox, Heft 9/10'1990 vorgestellt.            ║
  398. ║    Wesentliche Erweiterungen  sowie  eine  Windows-Version     ║
  399. ║    wurden im Rahmen eines Wettbewerbs in der toolbox 04'91     ║
  400. ║    veröffentlicht.                                             ║
  401. ║    Bezogen werden kann der aktuelle  Grundinterpreter  als     ║
  402. ║    toolbox-Special 20.                                         ║
  403. ║    Bestellungen richten sie bitte an den DMV-Verlag            ║
  404. ║                                          Postfach 250          ║
  405. ║                                          3440 Eschwege         ║
  406. ║                                                                ║
  407. ╚════════════════════════════════════════════════════════════════╝
  408. |
  409. <gosub>
  410. ╔════════════════════════════════════════════════════════════════╗
  411. ║ Unterprogramme                                                 ║
  412. ╟────────────────────────────────────────────────────────────────╢
  413. ║                                                                ║
  414. ║ Unterprogramme werden mit den Befehlen 'blockbegin' am Anfang  ║
  415. ║ und 'blockend' am Ende gekennzeichnet. Mit 'gosub <zeile>'     ║
  416. ║ wird ein Unterprogramm aufgerufen. Zur Namensgebung lassen     ║
  417. ║ sich Variablen verwenden.                                      ║
  418. ║                                                                ║
  419. ║ Beispiel :                                                     ║
  420. ║                                                                ║
  421. ║   010 setze SUB = 100;                                         ║
  422. ║   020 gosub SUB                                                ║
  423. ║   030 gehezu 200                                               ║
  424. ║   100 blockbegin                                               ║
  425. ║   110 drucke " Hier Unterprogramm. "                           ║
  426. ║   120 blockend                                                 ║
  427. ║   200 merke Programmende                                       ║
  428. ║                                                                ║
  429. ╚════════════════════════════════════════════════════════════════╝
  430. |
  431. <DefArray>
  432. ╔════════════════════════════════════════════════════════════════╗
  433. ║ Arrays                                                         ║
  434. ╟────────────────────────────────────────────────────────────────╢
  435. ║                                                                ║
  436. ║ Mit "DefArray" definierte Arrays können jeden Datentyp - außer ║
  437. ║ weitere Arrays - als Elemente enthalten, auch gemischte        ║
  438. ║ Arrays (verschiedene Typen in einem Array) sind möglich.       ║
  439. ║                                                                ║
  440. ║ Mit "DefArray" muß das Array zuerst definiert werden.          ║
  441. ║                                                                ║
  442. ║                                                                ║
  443. ║   Syntax : DefArray <name> : <dim1> [,dim2] [,dim3]            ║
  444. ║                                                                ║
  445. ║   Beispiel : DefArray quadrat : 10,10                          ║
  446. ║           (definiert ein 10*10 Felder großes Array)            ║
  447. ║                                                                ║
  448. ║ Mit DefArray könnten Arrays auch redefiniert werden, da aber   ║
  449. ║ Speicher verloren geht, wenn bereits Werte in das Array ein-   ║
  450. ║ getragen sind, ist von der Redefinition abzuraten.             ║
  451. ║                                                                ║
  452. ╚══════════════════════════════════════════════════════<weiter>══╝
  453. |
  454. <SetArrayElem>
  455. ╔════════════════════════════════════════════════════════════════╗
  456. ║ Arrays : "SetArrayElem"                                        ║
  457. ╟────────────────────────────────────────────────────────────────╢
  458. ║                                                                ║
  459. ║ Syntax : SetArrayElem <name> (dim1 [,dim2[,dim3]]) = <wert>    ║
  460. ║                                                                ║
  461. ║ Setzt ein Arrayelement an der Stelle (dim1,dim2,dim3), wobei   ║
  462. ║ <wert> ein einfacher Typ (Fließkomma, Ganzzahl oder Zeichen)   ║
  463. ║ oder ein String sein kann.                                     ║
  464. ║                                                                ║
  465. ║ Beispiel : SetArrayElem quadrat (4,4) = zahl                   ║
  466. ║                                                                ║
  467. ║ Anmerkungen :                                                  ║
  468. ║   - Hinter dem "=" muß eine Variable stehen, Direktwerte sind  ║
  469. ║     nicht erlaubt.                                             ║
  470. ║   - Die Numerierung der Elemente beginnt bei 0                 ║
  471. ║   - vollständiges Beispiel auf nächster Seite                  ║
  472. ║                                                                ║
  473. ╚══════════════════════════════════════════════════════<weiter>══╝
  474. |
  475. <GetArrayElem>
  476. ╔════════════════════════════════════════════════════════════════╗
  477. ║ Arrays : "GetArrayElem"                                        ║
  478. ╟────────────────────────────────────────────────────────────────╢
  479. ║                                                                ║
  480. ║ Syntax : GetArrayElem <name> (dim1 [,dim2[,dim3]]) -> <wert>   ║
  481. ║                                                                ║
  482. ║ Speichert das Element an der Stelle (dim1,dim2,dim3) in <wert>.║
  483. ║ <wert> muß den Typ des Elements haben.                         ║
  484. ║                                                                ║
  485. ║ Beispiel : DefArray quadrat : 10,10                            ║
  486. ║            setze string = "Ein String im Array "               ║
  487. ║            setze zahl = 100;                                   ║
  488. ║            SetArrayElem quadrat (0,0) = string                 ║
  489. ║            SetArrayElem quadrat (0,1) = zahl                   ║
  490. ║            GetArrayElem quadrat (0,0) -> string2               ║
  491. ║            GetArrayElem quadrat (0,1) -> zahl2                 ║
  492. ║            drucke string2                                      ║
  493. ║            drucke zahl2                                        ║
  494. ║                                                                ║
  495. ╚════════════════════════════════════════════════════════════════╝
  496. |
  497. <push>
  498. ╔════════════════════════════════════════════════════════════════╗
  499. ║ Integer-Stack                                                  ║
  500. ╟────────────────────────────────────────────────────────────────╢
  501. ║                                                                ║
  502. ║ Mit den Befehlen "push" und "pop" ist der Stack, auf dem nur   ║
  503. ║ Ganzzahl-Variablen (long) gespeichert werden können.           ║
  504. ║                                                                ║
  505. ║ Die Größe des Stacks ist nur durch den freien Heap begrenzt.   ║
  506. ║ Der Stack läßt sich gut zur Rückgabe von Funktionswerten       ║
  507. ║ in Unterprogrammen oder zur Parameterübergabe benutzen.        ║
  508. ║                                                                ║
  509. ║   Syntax : push <var oder Konstante>                           ║
  510. ║            pop <var>                                           ║
  511. ║                                                                ║
  512. ╚════════════════════════════════════════════════════════════════╝
  513. |
  514. <window>
  515. ╔════════════════════════════════════════════════════════════════════════════╗
  516. ║ Das Window-System (c) 1991 toolbox                                         ║
  517. ╟────────────────────────────────────────────────────────────────────────────╢
  518. ║ Das Windowsystem für TXL erlaubt soviele Fenster, wie der Heap aufnehmen   ║
  519. ║ kann. Einen ersten Überblick gibt die Kurzbeschreibung der Befehle:        ║
  520. ║                                                                            ║
  521. ║   openwindow      Fenster öffnen und Farben definieren                     ║
  522. ║   closewindow     Oberstes Fenster schließen                               ║
  523. ║   setcursor       Cursor relativ zum Fenster positionieren                 ║
  524. ║   newfirstwindow  Verdecktes Fenster nach vorne bringen                    ║
  525. ║   newwindowkoor   Neue Koordinaten für oberstes Fenster                    ║
  526. ║   resizewindow    Ändern der Größe des obersten Fensters                   ║
  527. ║   movewindow      Verschieben       "     "        "                       ║
  528. ║   winreadstring   String in neuem Fenster einlesen (mit Informationszeile) ║
  529. ║   winmessage      Ausgabe einer Meldung in einem Fenster                   ║
  530. ║   winwrite        Schnelle Stringausgabe im ob. Fenster                    ║
  531. ║                                                                            ║
  532. ╚═══════════════════════════════════════< genaue Beschreibung folgt ... >════╝
  533. |
  534. <openwindow>
  535. ╔════════════════════════════════════════════════════════════════════════════╗
  536. ║ Neue Fenster öffnen                               Das Window-System      1 ║
  537. ╟────────────────────────────────────────────────────────────────────────────╢
  538. ║  Syntax                                                                    ║
  539. ║                                                                            ║
  540. ║    openwindow <x1> <y1> <x2> <y2>   <f1> <f2> <f3> <f4>  [num]             ║
  541. ║                                                                            ║
  542. ║  Die linke obere Ecke wird mit x1/y1, die rechte untere mit x2/y2          ║
  543. ║  angegeben. Es folgen vier Farbangaben :                                   ║
  544. ║                                                                            ║
  545. ║        f1 : Farbe des Rahmens                                              ║
  546. ║        f2 : Farbe des Inneren                                              ║
  547. ║        f3 : Farbe für Überschrift (für Editor)                             ║
  548. ║             Überschriften für Nicht-Editor-Fenster können mit "winwrite"   ║
  549. ║             erzeugt werden.                                                ║
  550. ║        f4 : Farbe der Statuszeile (siehe f3)                               ║
  551. ║                                                                            ║
  552. ║  Im optionalen Parameter [num] wird die Fensternummer des neuen Fensters   ║
  553. ║  gespeichert.                                                              ║
  554. ║                                                                            ║
  555. ╚════════════════════════════════════════════════════════════════════════════╝
  556. |
  557. <resizewindow>
  558. ╔════════════════════════════════════════════════════════════════════════════╗
  559. ║ Fensterkoordinaten ändern                         Das Window-System      2 ║
  560. ╟────────────────────────────────────────────────────────────────────────────╢
  561. ║                                                                            ║
  562. ║  Der allgemeine Befehl zum Ändern der Fensterkoordinaten (des obersten     ║
  563. ║  Fensters) ist                                                             ║
  564. ║                                                                            ║
  565. ║      newwindowkoor <x1> <y1> <x2> <y2>.                                    ║
  566. ║                                                                            ║
  567. ║  Die Parameternamen sprechen für sich.                                     ║
  568. ║                                                                            ║
  569. ║  Nur Breite und Höhe bzw. Position ändern folgende Befehle :               ║
  570. ║                                                                            ║
  571. ║  (1) resizewindow <rel-x> <rel-y>                                          ║
  572. ║  (2) movewindow   <rel-x> <rel-y>                                          ║
  573. ║                                                                            ║
  574. ║  Bei (1) wird die rechte untere Ecke um relx/rely verschoben, bei (2)      ║
  575. ║  das gesamte Fenster. (Da keine negativen Werte möglich sind, muß          ║
  576. ║  "newwindowkoor" benutzt werden, um negative Werte zu ersetzen.)           ║
  577. ║                                                                            ║
  578. ╚════════════════════════════════════════════════════════════════════════════╝
  579. |
  580. <winmessage>
  581. ╔════════════════════════════════════════════════════════════════════════════╗
  582. ║ "Automatische Fenster"                            Das Window-System      3 ║
  583. ╟────────────────────────────────────────────────────────────────────────────╢
  584. ║                                                                            ║
  585. ║ winmessage <string>     Gibt den <string> und die Aufforderung, eine Taste ║
  586. ║                         zu drücken in einem zentrierten Fenster aus, das   ║
  587. ║                         nach einem Tastendruck wieder geschlossen wird.    ║
  588. ║                                                                            ║
  589. ║ winreadstr <frage> <str-var> <laenge>                                      ║
  590. ║                                                                            ║
  591. ║                         Gibt in einem zentrierten Fenster <frage> aus und  ║
  592. ║                         liest einen String in <str-var> ein. Das Fenster   ║
  593. ║                         wird wieder geschlossen. <laenge> gibt an, wie     ║
  594. ║                         lang das Eingabefeld minimal sein soll.            ║
  595. ║                                                                            ║
  596. ╚════════════════════════════════════════════════════════════════════════════╝
  597. |
  598. <winwrite>
  599. ╔════════════════════════════════════════════════════════════════════════════╗
  600. ║ weitere Window-Befehle                            Das Window-System      4 ║
  601. ╟────────────────────────────────────────────────────────────────────────────╢
  602. ║                                                                            ║
  603. ║ closewindow                Schließt das oberste Fenster                    ║
  604. ║                                                                            ║
  605. ║ newfirstwindow <num>       Das Fenster <nr> (siehe Openwindow) wird neues  ║
  606. ║                            oberes Fenster (behält aber seine Nummer)       ║
  607. ║                                                                            ║
  608. ║ winwrite <x> <y> <a> <str> Schreibt <str> mit dem Farbattribut <a> an      ║
  609. ║                            die Position x/y des oberen Fensters.           ║
  610. ║                            0/0 gibt die linke obere Ecke des Rahmens an.   ║
  611. ║                                                                            ║
  612. ║ setcursor <x> <y>          Setzt den Cursor an x/y (oberes Fenster)        ║
  613. ║                                                                            ║
  614. ║ "winwrite" und "setcursor" funktionieren auch ohne geöffnetes Fenster.     ║
  615. ║                                                                            ║
  616. ╚════════════════════════════════════════════════════════════════════════════╝
  617. |
  618. <menue>
  619. ╔════════════════════════════════════════════════════════════════════════════╗
  620. ║ Pulldown- und Auswahlmenüs                                         1 von 2 ║
  621. ╟────────────────────────────────────────────────────────────────────────────╢
  622. ║                                                                            ║
  623. ║ Die hier implementierten Pulldownmenüs werden mit den Cursortasten ge-     ║
  624. ║ steuert, und mit <ESC> verlassen. Die Auswahlmenüs werden nach der Auswahl ║
  625. ║ eines Punktes mit <Return> geschlossen. Beide Formen öffnen kein Fenster,  ║ 
  626. ║ dieses muß also vorher geöffnet werden. Dadurch hat man aber die freie     ║
  627. ║ Wahl in der Farbe und Position des Menüs und die Menü-Parameterzeile wird  ║
  628. ║ nicht zu lang. Der Auswahlbalken wird in der Rahmenfarbe dargestellt.      ║
  629. ║                                                                            ║
  630. ║ Syntax :                                                                   ║
  631. ║                                                                            ║
  632. ║   auswahl <punkt1> <punkt2> ... <punkt n>                                  ║
  633. ║   menue <punkt1> <uprog1> ... <punkt n> <uprog n>                          ║
  634. ║                                                                            ║
  635. ║ Beschreibung wird auf nächster Seite fortgesetzt.                          ║
  636. ║                                                                            ║
  637. ╚════════════════════════════════════════════════════════════════════════════╝
  638. |
  639. ╔════════════════════════════════════════════════════════════════════════════╗
  640. ║ Pulldown- und Auswahlmenüs                                         2 von 2 ║
  641. ╟────────────────────────────────────────────────────────────────────────────╢
  642. ║                                                                            ║
  643. ║ Der "menue"-Befehl ruft im Gegensatz zum "auswahl"-Befehl nach jeder Wahl  ║
  644. ║ eines Menüpunktes ein Unterprogramm, das durch seine Zeilennummer in den   ║
  645. ║ Parametern <uprog x> angegeben ist, auf. Nach Ausführung des Unter-        ║
  646. ║ programms wird die Menüschleife solange weiter durchlaufen, bis <ESC>      ║
  647. ║ gedrückt wird. Das Unterprogramm kann natürlich auch aus einer Zeile       ║
  648. ║ bestehen, wenn kein "blockbegin" angegeben ist.                            ║
  649. ║                                                                            ║
  650. ║ Der "auswahl"-Befehl wird nach Auswahl eines Punktes beendet und legt die  ║
  651. ║ Nummer des ausgewählten Punktes auf den Stack (erster Punkt : 1), so daß   ║
  652. ║ sie mit pop <xxx> ausgelesen werden sollte.                                ║
  653. ║                                                                            ║
  654. ║ Hinweis : Das Fenster für die Menüs muß nach Beenden des Menüs wieder      ║
  655. ║           explizit geschlossen werden.                                     ║
  656. ║                                                                            ║
  657. ╚════════════════════════════════════════════════════════════════════════════╝
  658. |
  659. <edit>
  660. ╔════════════════════════════════════════════════════════════════════════════╗
  661. ║ Das Editor-System (c) 1991 toolbox                                         ║
  662. ╟────────────────────────────────────────────────────────────────────────────╢
  663. ║ Das Editorsystem für TXL erlaubt 10 Editoren, die gleichzeitig             ║
  664. ║ verschiedene Dateien bearbeiten können und eine Schnittstelle zu TXL       ║
  665. ║ besitzen, d.h. (fast) jede Editorfunktion kann durch einen TXL-Befehl      ║
  666. ║ simuliert werden. Da 50 Hotkeys für die Editoren in TXL auf Unterprogramme ║
  667. ║ gelegt werden können (Alt/Shift/Ctrl-F1-F10, F1-F10, Alt0-Alt9) können     ║
  668. ║ so Makros programmiert werden.                                             ║
  669. ║                                                                            ║
  670. ║   Im Direktmodus bearbeitet "edit" das aktuelle Programm, speichert es     ║
  671. ║   am Ende unter "AKTUELL.TXL" und läd es in den Interpreter.               ║
  672. ║                                                                            ║
  673. ║   "edit <file>" läd eine bestimmte Datei, die explizit gesichert           ║
  674. ║   werden muß (z.B. edit "Programm.TXL").                                   ║
  675. ║                                                                            ║
  676. ╚═══════════════════════════════════════< Übersichttafeln folgen ... >═══════╝
  677. |
  678. ╔════════════════════════════════════════════════════════════════════════════╗
  679. ║ Editorbefehle beim Editieren                              Der Editor    1  ║
  680. ╟────────────────────────────────────────────────────────────────────────────╢
  681. ║ Funktionsnr  Hotkey                                                        ║
  682. ║    10         INS                                                          ║
  683. ║    11         DEL                                                          ║
  684. ║    12       Backspace                                                      ║
  685. ║    13        Return                                                        ║
  686. ║    14        Ctrl-Y    Zeile löschen                                       ║
  687. ║    15       Ctrl-Left  Wort links                                          ║
  688. ║    16       Ctrl-Right Wort rechts                                         ║
  689. ║    17       Ctrl-B     Blockbeginn setzen                                  ║
  690. ║    18       Ctrl-E     Blockende setzen                                    ║
  691. ║    19       Ctrl-C     Block kopieren                                      ║
  692. ║    20       Ctrl-D     Block löschen                                       ║
  693. ║    21       Ctrl-V     Block verschieben                                   ║
  694. ║    22       Ctrl-R     Block von Diskette lesen                            ║
  695. ║    24       Ctrl-W     Block auf Diskette schreiben                        ║
  696. ║                                                                            ║
  697. ╚════════════════════════════════════════════════════════════════════════════╝
  698. |
  699. <edfunction>
  700. ╔════════════════════════════════════════════════════════════════════════════╗
  701. ║ Editorbefehle beim Editieren                              Der Editor    2  ║
  702. ╟────────────────────────────────────────────────────────────────────────────╢
  703. ║ Funktionsnr  Hotkey                                                        ║
  704. ║    23       Ctrl-S     Datei speichern                                     ║
  705. ║    25        Home      Cursor an Deteianfang                               ║
  706. ║    26        End       Cursor an Textende                                  ║
  707. ║    30       Alt-R      Fenster mit Cursortasten in Größe ändern            ║
  708. ║    31       Alt-M      Fenster mit Cursortasten verschieben                ║
  709. ║    32       Alt-Z      Fenster zoomen, d.h. auf ganzen Bildschirm ausdehnen║
  710. ║    --       Ctrl-T     Aufruf des Präprozessors                            ║
  711. ║     0                  Eingabe eines Zeichens                              ║
  712. ║  1,2,3,4               Simulieren der                                      ║
  713. ║ 5,6,7,8,9                  Cursortasten                                    ║
  714. ║                                                                            ║
  715. ║ Der TXL-Befehl "edfunction <Ed-Nr> <Func-Nr> <Char>" führt die             ║  
  716. ║ Funktionsnummer <Func-Nr> im Editor <Ed-Nr> aus. <Char> ist bei Funktion   ║
  717. ║ 0 der ASCII-Code des Zeichens, das eingefügt werden soll. (Über Makros     ║
  718. ║ sind so auch die unteren Zeichen des Zeichensatzes ansprechbar.)           ║
  719. ║                                                                            ║
  720. ╚════════════════════════════════════════════════════════════════════════════╝
  721. |
  722. <initeditor>
  723. ╔════════════════════════════════════════════════════════════════════════════╗
  724. ║ Editorbefehle für TXL                                     Der Editor    3  ║
  725. ╟────────────────────────────────────────────────────────────────────────────╢
  726. ║ Grundsätzlich ist ein Editor nicht an ein bestimmtes Fenster gebunden;     ║
  727. ║ die Ausgaben der Editorfunktionen finden immer im obersten Fenster statt.  ║
  728. ║ Da insgesamt 10 Editoren zur Verfügung stehen (Nummer 0 bis 9), ist der    ║
  729. ║ erste Parameter der meisten Editor-Befehle die Nummer des angesprochenen   ║
  730. ║ Editors. Zuerst wird ein Editor mit                                        ║
  731. ║                                                                            ║
  732. ║   initeditor <nummer> [file]                                               ║
  733. ║                                                                            ║
  734. ║ initialisiert. Der optionale Parameter [file] hat den selben Zweck, wie    ║
  735. ║ [file] beim "edit"-Befehl. Wird er weggelassen, so läd der Editor das      ║
  736. ║ TXL-Programm. Der Befehl                                                   ║
  737. ║                                                                            ║
  738. ║   editorproc <nummer>                                                      ║
  739. ║                                                                            ║
  740. ║ veranlaßt den Editor <nummer>, solange Benutzereingaben zu bearbeiten,     ║
  741. ║ bis <ESC> oder <Ctrl>-T gedrückt wird. Der Editor wird durch diese         ║
  742. ║ Eingaben nicht automatisch geschlossen (im Unterschied zu "edit").         ║
  743. ╚════════════════════════════════════════════════════════════════════════════╝
  744. |
  745. <closeeditor>
  746. ╔════════════════════════════════════════════════════════════════════════════╗
  747. ║ Editorbefehle für TXL                                     Der Editor    4  ║
  748. ╟────────────────────────────────────────────────────────────────────────────╢
  749. ║                                                                            ║
  750. ║ Soll der vom Editorinhalt belegte Speicher freigegeben werden, so ist der  ║
  751. ║ Befehl                                                                     ║
  752. ║                                                                            ║
  753. ║    closeeditor <nummer>                                                    ║
  754. ║                                                                            ║
  755. ║ anzuwenden. Dieser Befehl speichert nur, wenn das aktuelle TXL-Programm    ║
  756. ║ geladen ist, und dann in die Datei "aktuell.txl".                          ║
  757. ║ Für Fälle, in denen es notwendig wird, den Fensterinhalt für einen Editor  ║
  758. ║ neu darzustellen, ist die Anweisung                                        ║
  759. ║                                                                            ║
  760. ║    showeditor <nummer>                                                     ║
  761. ║                                                                            ║
  762. ║ gedacht. Sie ist aber nicht erforderlich, wenn der Text mit "editorproc"   ║
  763. ║ bearbeitet wird.                                                           ║
  764. ║                                                                            ║
  765. ╚════════════════════════════════════════════════════════════════════════════╝
  766. |
  767. <setfkey>
  768. ╔════════════════════════════════════════════════════════════════════════════╗
  769. ║ Editorbefehle für TXL                                     Der Editor    5  ║
  770. ╟────────────────────────────────────────────────────────────────────────────╢
  771. ║                                                                            ║
  772. ║ Die Belegung der Hotkeys, die für alle Editoren gleichzeitig gelten, wird  ║
  773. ║ von                                                                        ║
  774. ║                                                                            ║
  775. ║   setfkey <taste> <zeile>                                                  ║
  776. ║                                                                            ║
  777. ║ übernommen. Die Zeile mit der Nummer <zeile> wird angesprungen, wenn die   ║
  778. ║ angegebene Taste gedrückt wird. Steht in dieser Zeile ein "blockbegin",    ║
  779. ║ so wird natürlich der darauf folgende Block ausgeführt. Die Angabe "0"     ║
  780. ║ bei <zeile> bewirkt die Löschung der Hotkey-definition für <taste>.        ║
  781. ║ <taste> kann folgende Werte haben :                                        ║
  782. ║                                                                            ║
  783. ║   1-10 : F1-F10            31-40 : Alt-F1-F10                              ║
  784. ║  11-20 : Shift-F1-F10      41-50 : Alt-1 bis Alt-0                         ║
  785. ║  21-30 : Ctrl-F1-F10                                                       ║
  786. ║                                                                            ║
  787. ╚════════════════════════════════════════════════════════════════════════════╝
  788. |
  789. <insertstring>
  790. ╔════════════════════════════════════════════════════════════════════════════╗
  791. ║ Editorbefehle für TXL                                     Der Editor    6  ║
  792. ╟────────────────────────────────────────────────────────────────────────────╢
  793. ║ Neben der Funktion 0 von "edfunction", die einzelne Zeichen in den Editor  ║
  794. ║ eingibt, existiert auch eine Funktion, die Strings in den Editor eingibt:  ║
  795. ║                                                                            ║
  796. ║   insertstring <editornr> <str>                                            ║
  797. ║                                                                            ║
  798. ║ Außer dem String / der Stringvariablen wird als erster Parameter die       ║
  799. ║ Editornummer erwartet.                                                     ║
  800. ║                                                                            ║
  801. ║ Das Lesen des Editors in TXL-Programmen kann wort- oder zeilenweise        ║
  802. ║ erfolgen :                                                                 ║
  803. ║                                                                            ║
  804. ║   getedword <editornr> <str-var>                                           ║
  805. ║   getedstring <editornr> <str-var>                                         ║
  806. ║                                                                            ║
  807. ║ Bei "getedword" muß der Cursor auf dem Anfang des Wortes stehen, bei       ║
  808. ║ "getedstring" wird die gesamte Zeile in <str-var> gespeichert.             ║
  809. ║                                                                            ║
  810. ╚════════════════════════════════════════════════════════════════════════════╝
  811. |
  812. ╔════════════════════════════════════════════════════════════════════════════╗
  813. ║ Das Datenbankmodul (c) 1991 toolbox                                        ║
  814. ╟────────────────────────────────────────────────────────────────────────────╢
  815. ║                                                                            ║
  816. ║ Der Aufbau der Datenfelder ist frei wählbar und wird in einer Datei mit    ║
  817. ║ der Endung ".def" gespeichert, sobald einmal definiert. Die Daten werden   ║
  818. ║ in gleichnamige Dateien, jedoch mit der Endung ".dat" geschrieben. Als     ║
  819. ║ Datenfeldtypen stehen Zeichenfelder mit frei definierbarer Länge und       ║
  820. ║ Integerfelder zur Verfügung. Die Sortierung der Daten erfolgt bei den      ║
  821. ║ Strings in einem binären Baum, was aber für die Programmierung in TXL      ║
  822. ║ nicht von Bedeutung ist. Die vielfältigen Möglichkeiten beim Suchen von    ║
  823. ║ Datensätzen und sonstigen Funktionen werden auf den folgenden Seiten       ║
  824. ║ beschrieben.                                                               ║
  825. ║                                                                            ║
  826. ║ Bei den Befehlen des Datenbankmoduls ist die Groß/Kleinschreibung zu       ║
  827. ║ beachten. ("UnMarkAll" liest sich besser als "unmarkall".)                 ║
  828. ║                                                                            ║
  829. ║ Es können gleichzeitig 3 Datenbanken geöffnet werden, daher haben die      ║
  830. ║ meisten Datenbankfunktionen einen Parameter <dbnr>, für den Werte von      ║
  831. ║ 0 bis 2 erlaubt sind.                                                      ║
  832. ║                                                                            ║
  833. ╚════════════════════════════════════════════════════════════════════════════╝
  834. |
  835. <DefDB>
  836. ╔════════════════════════════════════════════════════════════════════════════╗
  837. ║ Erstellen und Öffnen einer Datenbank                Das Datenbankmodul  1  ║
  838. ╟────────────────────────────────────────────────────────────────────────────╢
  839. ║ Zuerst muß der Aufbau eines Datensatzes definiert werden. Dazu wird für    ║
  840. ║ jedes Datenfeld die Funktion                                               ║
  841. ║                                                                            ║
  842. ║   DefDB <dbnr> <int?> <strlen>                                             ║
  843. ║                                                                            ║
  844. ║ aufgerufen. <int?>=1 zeigt an, daß es sich um ein Integerfeld handelt, der ║
  845. ║ Parameter <strlen> muß vorhanden sein, sein Wert bedeutet aber in diesem   ║
  846. ║ Fall nichts. Wenn <int?>=0 ist, wird ein Stringfeld mit der Länge <strlen> ║
  847. ║ erstellt. Der Parameter <dbnr> gibt die Nummer der Datenbank an (0 bis 2). ║
  848. ║ Die Feldnummer wird automatisch ermittelt: Der erste Aufruf definiert      ║
  849. ║ Feld 1, maximal 20 Felder sind möglich.                                    ║
  850. ║ Ist die Definition vollständig, muß sie mit                                ║
  851. ║                                                                            ║
  852. ║   CreateDB <dbnr> <name>                                                   ║
  853. ║                                                                            ║
  854. ║ gespeichert werden. Dabei werden die Dateien "<name>.def" und "<name>.dat" ║
  855. ║ neu erzeugt und dabei gelöscht, falls sie schon vorhanden sind.            ║
  856. ╚════════════════════════════════════════════════════════════════════════════╝
  857. |
  858. <OpenDB>
  859. ╔════════════════════════════════════════════════════════════════════════════╗
  860. ║ Öffnen und Schließen einer Datenbank                Das Datenbankmodul  2  ║
  861. ╟────────────────────────────────────────────────────────────────────────────╢
  862. ║                                                                            ║
  863. ║ Eine mit "CreateDB" erstellte Datenbank kann mit                           ║
  864. ║                                                                            ║
  865. ║   OpenDB <dbnr> <name>                                                     ║
  866. ║                                                                            ║
  867. ║ wieder geöffnet werden. Die Definition wird dabei automatisch geladen,     ║
  868. ║ die Anwendung von "DefDB" ist hier also nicht nötig.                       ║
  869. ║                                                                            ║
  870. ║ Nach der Bearbeitung wird die Datenbank mit                                ║
  871. ║                                                                            ║
  872. ║   CloseFile <dbnr>                                                         ║
  873. ║                                                                            ║
  874. ║ geschlossen.                                                               ║
  875. ║                                                                            ║
  876. ╚════════════════════════════════════════════════════════════════════════════╝
  877. |
  878. <WriteDB>
  879. ╔════════════════════════════════════════════════════════════════════════════╗
  880. ║ Datenspeicherung                                    Das Datenbankmodul  3  ║
  881. ╟────────────────────────────────────────────────────────────────────────────╢
  882. ║                                                                            ║
  883. ║ Das Beschreiben eines Datensatzes erfolgt für jedes Feld einzeln mit dem   ║
  884. ║ Befehl                                                                     ║
  885. ║                                                                            ║
  886. ║   WriteDB <dbnr> <feldnr> <str> <int>                                      ║
  887. ║                                                                            ║
  888. ║ In das Feld <feldnr> des aktuellen Datensatzes der Datenbank <dbnr> wird   ║
  889. ║ entweder der String <str>, oder der Integer <int> geschrieben, je nach     ║
  890. ║ Feldtyp. Beide Parameter müssen angegeben werden. Besonders günstig        ║
  891. ║ ist die Dateneingabe mit Hilfe des Editors, wie im Beispielprogramm        ║
  892. ║ demonstriert wird. Mit "AddDB" wird der aktuelle Datensatz auf Diskette    ║
  893. ║ gespeichert. Syntax : AddDB <dbnr>                                         ║
  894. ║                                                                            ║
  895. ╚════════════════════════════════════════════════════════════════════════════╝
  896. |
  897. <ReadDB>
  898. ╔════════════════════════════════════════════════════════════════════════════╗
  899. ║ Das Lesen der Daten                                 Das Datenbankmodul  4  ║
  900. ╟────────────────────────────────────────────────────────────────────────────╢
  901. ║ Analog zum Beschreiben eines Satzes funktioniert das Auslesen :            ║
  902. ║                                                                            ║
  903. ║   ReadDB <dbnr> <feldnr> <str> <int>                                       ║
  904. ║                                                                            ║
  905. ║ liest das Feld <feldnr> und speichert den Inhalt je nach Typ entweder in   ║
  906. ║ <str> oder <int>.                                                          ║
  907. ║                                                                            ║
  908. ║ Zur Formatierten Ausgabe bessert geeignet ist folgender Befehl:            ║
  909. ║                                                                            ║
  910. ║   ReadDBForm <dbnr> <feldnr> <str>                                         ║
  911. ║                                                                            ║
  912. ║ gibt in jedem Fall einen String zurück, der auf die Maximale Länge des     ║
  913. ║ Feldes ausgedehnt ist (linksbündig ausgerichtet), und sich so gut für      ║
  914. ║ Tabellen eignet. Integerwerte werden in einen sechs Zeichen langen String  ║
  915. ║ umgewandelt.                                                               ║
  916. ║                                                                            ║
  917. ╚════════════════════════════════════════════════════════════════════════════╝
  918. |
  919. <GotoBegin>
  920. ╔════════════════════════════════════════════════════════════════════════════╗
  921. ║ Bewegung innerhalb der Datenbank                    Das Datenbankmodul  5  ║
  922. ╟────────────────────────────────────────────────────────────────────────────╢
  923. ║                                                                            ║
  924. ║ Nach der Öffnung befindet sich als aktueller Datensatz ein neuer Satz im   ║
  925. ║ Speicher, der hinter allen bisher gespeicherten Datensätzen in der Datei   ║
  926. ║ gespeichert wird. Um den aktuellen Datensatz zu ändern, existieren, außer  ║
  927. ║ den Datensuchbefehlen, folgende Befehle :                                  ║
  928. ║                                                                            ║
  929. ║   Befehl                        Zielposition                               ║
  930. ║                                                                            ║
  931. ║   GotoBegin  <dbnr>             erster Datensatz der Datei                 ║
  932. ║   GotoEnd    <dbnr>             ein Satz hinter dem letzten (neuer Satz)   ║
  933. ║   GoForward  <dbnr>             einen Satz weiter                          ║
  934. ║   GoBackward <dbnr>             einen Satz zurück, Richtung Dateianfang    ║
  935. ║   GoTo       <dbnr> <filepos>   Dateiposition (Byte Nr.) <filepos>         ║
  936. ║   GoToNr     <dbnr> <satznr>    Datensatz Nummer <satznr>                  ║
  937. ║                                                                            ║
  938. ╚════════════════════════════════════════════════════════════════════════════╝
  939. |
  940. <MarkCurrent>
  941. ╔════════════════════════════════════════════════════════════════════════════╗
  942. ║ Löschen von Datensätzen                             Das Datenbankmodul  6  ║
  943. ╟────────────────────────────────────────────────────────────────────────────╢
  944. ║                                                                            ║
  945. ║ Der aktuelle Datensatz wird durch                                          ║
  946. ║                                                                            ║
  947. ║   MarkCurrent <dbnr> <val>                                                 ║
  948. ║                                                                            ║
  949. ║ mit <val> markiert. <val> ungleich 0 bedeutet Löschen.                     ║
  950. ║                                                                            ║
  951. ║   DelMarked <dbnr>                                                         ║
  952. ║                                                                            ║
  953. ║ löscht alle markierten Datensätze physikalisch in der Datei.               ║
  954. ║ Die Markierung kann entweder mit "MarkCurrent <dbnr> 0" für einen          ║
  955. ║ speziellen Satz, oder mit                                                  ║
  956. ║                                                                            ║
  957. ║   UnMarkAll <dbnr>                                                         ║
  958. ║                                                                            ║
  959. ║ für alle markierten Sätze rückgängig gemacht werden.                       ║
  960. ║                                                                            ║
  961. ╚════════════════════════════════════════════════════════════════════════════╝
  962. |
  963. <SearchDB>
  964. ╔════════════════════════════════════════════════════════════════════════════╗
  965. ║ Suchen ohne Baum                                    Das Datenbankmodul  7  ║
  966. ╟────────────────────────────────────────────────────────────────────────────╢
  967. ║                                                                            ║
  968. ║ Zur Suche mit komplexen Bedingungen ist der Befehl                         ║
  969. ║                                                                            ║
  970. ║   SearchDB <dbnr> <test> <ausg>                                            ║
  971. ║                                                                            ║
  972. ║ gedacht. Er geht die Datenbank Satz für Satz durch und ruft für jeden Satz ║
  973. ║ das Unterprogramm ab der Zeile <test> auf. Dieses kann mit "ReadDB" den    ║
  974. ║ aktuellen Satz auf verschiedene Bedingungen testen und ruft "GefundenOK"   ║
  975. ║ ohne Parameter auf, falls der Datensatz den gewünschten Bedingungen        ║
  976. ║ entspricht. Ist dies der Fall, so ruft "SearchDB" das Unterprogramm <ausg> ║
  977. ║ auf, das die Bearbeitung oder Ausgabe des Satzes übernimmt. In beiden      ║
  978. ║ Unterprogrammen kann die Suche mit dem parameterlosen Befehl "StopSearch"  ║
  979. ║ beendet werden.                                                            ║
  980. ║                                                                            ║
  981. ╚════════════════════════════════════════════════════════════════════════════╝
  982. |
  983. <MakeTree>
  984. ╔════════════════════════════════════════════════════════════════════════════╗
  985. ║ Sortieren                                           Das Datenbankmodul  8  ║
  986. ╟────────────────────────────────────────────────────────────────────────────╢
  987. ║                                                                            ║
  988. ║ Jede der Datenbanken kann für eines der Zeichenfelder einen binären Baum   ║
  989. ║ zur Sortierung aufbauen. Dies wird durch den Befehl                        ║
  990. ║                                                                            ║
  991. ║   MakeTree <dbnr> <feldnr>                                                 ║
  992. ║                                                                            ║
  993. ║ veranlaßt. Für das (String-)Feld <feldnr> baut die Datenbank <dbnr> einen  ║
  994. ║ Baum auf. Dieser kann mit                                                  ║
  995. ║                                                                            ║
  996. ║   DelTree <dbnr>                                                           ║
  997. ║                                                                            ║
  998. ║ explizit wieder gelöscht werden, was aber automatisch geschieht, wenn      ║
  999. ║ erneut "MakeTree" für dieselbe Datenbank aufgerufen wird.                  ║
  1000. ║                                                                            ║
  1001. ╚════════════════════════════════════════════════════════════════════════════╝
  1002. |
  1003. <PassTree>
  1004. ╔════════════════════════════════════════════════════════════════════════════╗
  1005. ║ Nutzung des sortierten Baumes                       Das Datenbankmodul  9  ║
  1006. ╟────────────────────────────────────────────────────────────────────────────╢
  1007. ║ Die Funktion "PassTree" geht ebenso wie "SearchDB" die gesamte Datenbank   ║
  1008. ║ durch, jedoch in der Reihenfolge, die durch den Baum vorgegeben ist. Für   ║
  1009. ║ jeden Datensatz wird wieder eine Test- und dann je nach Ergebnis eine      ║
  1010. ║ Bearbeitungs-/Ausgaberoutine aufgerufen. Die Syntax ist demnach dieselbe   ║
  1011. ║ wie bei "SearchDB" :                                                       ║
  1012. ║                                                                            ║
  1013. ║   PassTree <dbnr> <test> <ausg>                                            ║
  1014. ║                                                                            ║
  1015. ║ Zum direkten Auffinden eines Datensatzes eignet sich der Befehl:           ║
  1016. ║                                                                            ║
  1017. ║   SearchTree <dbnr> <ERGEBNIS> <str>                                       ║
  1018. ║                                                                            ║
  1019. ║ Er sucht <str> im Baum (<str> muß also in einem Feld stehen, daß im Baum   ║
  1020. ║ sortiert wurde) und gibt die Dateiposition des gefundenen Satzes in        ║
  1021. ║ <ERGEBNIS> zurück. Der Wert 1 Milliarde bedeutet, daß der Satz nicht ge-   ║
  1022. ║ funden wurde. Die Position ist mit "GoTo", nicht mit "GoToNr" direkt an-   ║
  1023. ║ steuerbar, sie wird auch automatisch gesetzt, wenn <str> gefunden wurde.   ║
  1024. ╚════════════════════════════════════════════════════════════════════════════╝
  1025. |
  1026. <ListTree>
  1027. ╔════════════════════════════════════════════════════════════════════════════╗
  1028. ║ Ausgabe des sortierten Baumes                       Das Datenbankmodul  10 ║
  1029. ╟────────────────────────────────────────────────────────────────────────────╢
  1030. ║                                                                            ║
  1031. ║ Um eine einfache Baumausgaberoutine handelt es sich bei:                   ║
  1032. ║                                                                            ║
  1033. ║   ListTree <dbnr>                                                          ║
  1034. ║                                                                            ║
  1035. ║ Der Bauminhalt wird (sortiert) wie mit "drucke" ausgegeben, also nicht in  ║
  1036. ║ irgendein Fenster.                                                         ║
  1037. ║                                                                            ║
  1038. ╚════════════════════════════════════════════════════════════════════════════╝
  1039. |
  1040. ╔════════════════════════════════════════════════════════════════════════════╗
  1041. ║ Der Präprozessor (c) 1991 toolbox                                        1 ║
  1042. ╟────────────────────────────────────────────────────────────────────────────╢
  1043. ║ Der Präprozessor wandelt ein Programm im Editor in ein TXL-ausführbares    ║
  1044. ║ Programm um. Er wird mit Ctrl-T im Editor aufgerufen. Nach Drücken dieser  ║
  1045. ║ Tastenkombination wird das Programm automatisch gespeichert, mit dem Prä-  ║
  1046. ║ prozessor in die Datei "AKTUELL.TXL" umgewandelt und automatisch in den    ║
  1047. ║ Programmspeicher eingelesen.                                               ║
  1048. ║                                                                            ║
  1049. ║ Die Verbesserungen durch den Präprozessor sind :                           ║
  1050. ║   - Wegfall der Zeilennumern am Anfang jeder Zeile                         ║
  1051. ║   - Ansteuerung von Unterprogrammen und Programmzeilen (gehezu und gosub)  ║
  1052. ║     mit Namen statt mit Zeilennummern                                      ║
  1053. ║   - Einführung von Bezeichnern für Konstanten, die vom Präprozessor        ║
  1054. ║     automatisch eingesetzt werden.                                         ║
  1055. ║   - Leerzeilen sind möglich                                                ║
  1056. ║                                                                            ║
  1057. ║ Sowohl Programmzeilenbezeichnungen, als auch Konstanten können auch nach   ║
  1058. ║ ihrer ersten Bezeichnung noch definiert werden.                            ║
  1059. ║                                                                            ║
  1060. ╚══════════════════════════════════════════════════════════════< weiter >════╝
  1061. |
  1062. ╔════════════════════════════════════════════════════════════════════════════╗
  1063. ║ Die Präprozessorbefehle                                                  2 ║
  1064. ╟────────────────────────────────────────────────────────────────────────────╢
  1065. ║                                                                            ║
  1066. ║ 1. label <name>                                                            ║
  1067. ║                                                                            ║
  1068. ║   ordnet der folgenden Zeile den Bezeichner <name> zu, der überall im      ║
  1069. ║   Programm verwendet werden kann.                                          ║
  1070. ║                                                                            ║
  1071. ║ 2. const <name> <wert>                                                     ║
  1072. ║                                                                            ║
  1073. ║   definiert eine Konstante, die den Wert <wert> und die Bezeichnung <name> ║
  1074. ║   hat.                                                                     ║
  1075. ║                                                                            ║
  1076. ╚══════════════════════════════════════════════════════════════< weiter >════╝
  1077. |
  1078. ╔════════════════════════════════════════════════════════════════════════════╗
  1079. ║ Ein Beispiel für den Präprozessor                                        3 ║
  1080. ╟────────────────────────────────────────────────────────────────────────────╢
  1081. ║                                                                            ║
  1082. ║ gehezu haupt                                                               ║
  1083. ║                                                                            ║
  1084. ║ label Unterprogramm                                                        ║
  1085. ║   blockbegin                                                               ║
  1086. ║     drucke KONSTANTE                                                       ║
  1087. ║   blockend                                                                 ║
  1088. ║                                                                            ║
  1089. ║ label haupt                                                                ║
  1090. ║   ...                                                                      ║
  1091. ║   gosub Unterprogramm                                                      ║
  1092. ║   ...                                                                      ║
  1093. ║                                                                            ║
  1094. ║ const KONSTANTE 2000                                                       ║
  1095. ║                                                                            ║
  1096. ╚════════════════════════════════════════════════════════════════════════════╝
  1097.