' tb-screen: 80x25 ' tb-tempdir ' ISAM (Spec isam-datenbank, Anforderungen "Pufferverwaltung mit benanntem ' Fehler" und "Vergleichsreihenfolge fuer Indizes"): SETMEM aendert die ' Puffergrenze und liefert die verfuegbare Groesse, ein Ueberschreiten meldet ' 89; die Indexordnung stimmt mit dem Stringvergleich des Dialekts ueberein. ' Laeuft in einem temporaeren Verzeichnis. TYPE Wort Text AS STRING * 6 END TYPE DIM w AS Wort ON ERROR GOTO Handler OPEN "worte.isam" FOR ISAM Wort "Worte" AS #1 CREATEINDEX #1, "NachText", 0, "Text" SETINDEX #1, "NachText" ' --- 9.4: Gross-/Kleinschreibung und Zeichen jenseits von ASCII --- ' Eingefuegt in willkuerlicher Reihenfolge; der Index ordnet nach ' Unicode-Codepoints, also genau wie der Vergleichsoperator des Dialekts. w.Text = "birne" INSERT #1, w w.Text = "Apfel" INSERT #1, w w.Text = "Äpfel" INSERT #1, w w.Text = "apfel" INSERT #1, w w.Text = "Birne" INSERT #1, w PRINT "Indexordnung:"; DIM voriges AS STRING voriges = "" passt% = -1 MOVEFIRST #1 DO WHILE NOT EOF(1) RETRIEVE #1, w PRINT " "; RTRIM$(w.Text); ' Jedes Paar in Folge muss auch dem Operator < genuegen. IF voriges <> "" THEN IF NOT (voriges < w.Text) THEN passt% = 0 END IF voriges = w.Text MOVENEXT #1 LOOP PRINT PRINT "Indexordnung passt zu <:"; passt% ' --- 9.2: SETMEM liefert die verfuegbare Groesse --- frei& = SETMEM(0) PRINT "Puffer vorgabe:"; frei& frei& = SETMEM(-1024) PRINT "nach SETMEM(-1024):"; frei& frei& = SETMEM(1024) PRINT "nach SETMEM(1024):"; frei& ' --- 9.2: unter die Satzgroesse gesenkt meldet ein INSERT 89 --- frei& = SETMEM(-65530) PRINT "knapper Puffer:"; frei& w.Text = "zuviel" INSERT #1, w ' Wieder aufgemacht, geht es weiter. frei& = SETMEM(65530) w.Text = "zebra" INSERT #1, w PRINT "nach Aufstocken Saetze:"; LOF(1) CLOSE #1 PRINT "fertig" END Handler: PRINT "ERR="; ERR RESUME NEXT