home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1996 October / PCO_10.ISO / filesbbs / telixdos.arj / TPC350-4.ZIP / SALT.DOK < prev    next >
Encoding:
Text File  |  1995-06-29  |  249.4 KB  |  13,299 lines

  1.  
  2.  
  3.  
  4.  
  5.                                          
  6.       S A L T  - Programmierhandbuch
  7.  
  8.  
  9.  
  10.  
  11.       Copyright (c) 1988-95 ELSA GmbH, D-52070 Aachen
  12.  
  13.  
  14.       Telix  und  SALT   Copyright  (c) 1986-95  deltaComm  Development   und
  15.       Copyright (c) 1988-95 ELSA GmbH, Aachen. Alle Rechte vorbehalten.
  16.  
  17.  
  18.       Alle Angaben in  diesem Handbuch sind nach sorgfältiger  Prüfung zusam-
  19.       mengestellt worden, gelten  jedoch nicht als  Zusicherung von  Produkt-
  20.       eigenschaften. ELSA  haftet ausschließlich in  dem Umfang, der in ihren
  21.       Allgemeinen Geschäftsbedingungen festgelegt ist.
  22.  
  23.       Weitergabe  und Vervielfältigung  dieses Handbuchs  und die  Verwertung
  24.       seines  Inhalts sind nur  mit schriftlicher Erlaubnis  von ELSA gestat-
  25.       tet. Änderungen, die dem  technischen Fortschritt dienen, bleiben  vor-
  26.       behalten.
  27.  
  28.  
  29.  
  30.       Warenzeichen
  31.  
  32.       IBM ist ein eingetragenes  Warenzeichen von International Business  Ma-
  33.       chines.
  34.  
  35.  
  36.  
  37.  
  38.       1.  Die Telix-Programmiersprache SALT . . . . . . . . . . . . . .     2
  39.         1.1   Welche Möglichkeiten bietet SALT? . . . . . . . . . . . .     2
  40.         1.2   Über dieses Handbuch  . . . . . . . . . . . . . . . . . .     2
  41.         1.3   Schreibweise  . . . . . . . . . . . . . . . . . . . . . .     2
  42.         1.4   Erstellen von SALT-Programmen . . . . . . . . . . . . . .     2
  43.  
  44.       2.  Syntax  . . . . . . . . . . . . . . . . . . . . . . . . . . .     4
  45.  
  46.       3.  Programmstruktur  . . . . . . . . . . . . . . . . . . . . . .     7
  47.         3.1   Variablen . . . . . . . . . . . . . . . . . . . . . . . .     7
  48.         3.2   Ausdrücke und Operatoren  . . . . . . . . . . . . . . . .     8
  49.         3.3   Funktionen  . . . . . . . . . . . . . . . . . . . . . . .    11
  50.         3.4   Anweisungen . . . . . . . . . . . . . . . . . . . . . . .    12
  51.           3.4.1 Expression  . . . . . . . . . . . . . . . . . . . . . .    12
  52.           3.4.2 If  . . . . . . . . . . . . . . . . . . . . . . . . . .    12
  53.           3.4.3 While . . . . . . . . . . . . . . . . . . . . . . . . .    14
  54.           3.4.4 Do...while  . . . . . . . . . . . . . . . . . . . . . .    15
  55.           3.4.5 For . . . . . . . . . . . . . . . . . . . . . . . . . .    15
  56.           3.4.6 Return  . . . . . . . . . . . . . . . . . . . . . . . .    16
  57.           3.4.7 Break . . . . . . . . . . . . . . . . . . . . . . . . .    17
  58.           3.4.8 Continue  . . . . . . . . . . . . . . . . . . . . . . .    17
  59.           3.4.9 Goto  . . . . . . . . . . . . . . . . . . . . . . . . .    18
  60.  
  61.       4.  Eingebaute Funktionen . . . . . . . . . . . . . . . . . . . .    21
  62.         4.1   Auflistung der Funktionen, nach Typen geordnet  . . . . .    21
  63.         4.2   Beschreibung der einzelnen Funktionen . . . . . . . . . .    23
  64.  
  65.       5.  Systemvariablen . . . . . . . . . . . . . . . . . . . . . . .   150
  66.  
  67.       6.  Anhang A   ASCII-Zeichensatz  . . . . . . . . . . . . . . . .   194
  68.  
  69.       7.  Anhang B   Erweiterte Tastenscancodes . . . . . . . . . . . .   196
  70.  
  71.       8.  Anhang C - Farbattribute  . . . . . . . . . . . . . . . . . .   197
  72.  
  73.       9.  Anhang D - Index  . . . . . . . . . . . . . . . . . . . . . .   198
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.                                        - 1 -
  100.  
  101.  
  102.  
  103.       1. Die Telix-Programmiersprache SALT
  104.  
  105.       Im  Kommunikationsprogramm  Telix ist  eine  Programmiersprache  namens
  106.       SALT integriert (Script  Application Language for  Telix). SALT  ermög-
  107.       licht  die Durchführung beinahe jeder kommunikationsbezogenen Anwendung
  108.       unter Telix.  SALT ähnelt  der Sprache  C, aber  auch wenn  Sie bereits
  109.       eine der andere Programmiersprachen  (wie Pascal, BASIC, etc.)  verwen-
  110.       det haben, werden Sie  sich bei SALT bald "zuhause" fühlen.  Einerseits
  111.       ist SALT  zum leichten Erlernen  ausgelegt, ist andererseits  aber, wie
  112.       die meisten Programmiersprachen, sehr umfangreich, so daß  es sich emp-
  113.       fiehlt, dieses Kapitel  sorgfältig zu  lesen und  die angeführten  Bei-
  114.       spiele sowie die in Telix enthaltenen  Beispiele für SALT-Befehlsdatei-
  115.       en zu studieren.
  116.  
  117.  
  118.       1.1   Welche Möglichkeiten bietet SALT?
  119.  
  120.       Wie ein Programm  jeder anderen Programmiersprache  wird ein  SALT-Pro-
  121.       gramm (auch  ,Scriptdatei' = Befehlsdatei  genannt) typischerweise  zum
  122.       Ausführen von Aufgaben oder Funktionen benutzt. Diese reichen von  sehr
  123.       simplen Aufgaben bis hin  zu äußerst komplexen Aktionen.  Eine SALT-Be-
  124.       fehlsdatei  kann z. B. dergestalt mit  einem Eintrag im Anwahlverzeich-
  125.       nis gekoppelt werden, daß sie bei  Erreichen des betreffenden Anschlus-
  126.       ses automatisch Ihre Identifizierung und Ihr  Paßwort übermittelt. Eine
  127.       weitaus kompliziertere Scriptdatei ist die Basis des Telix-Hostmodus.
  128.  
  129.  
  130.       1.2   Über dieses Handbuch
  131.  
  132.       Dieses Handbuch  ist eine Beschreibung der  SALT-Programmiersprache. Es
  133.       ist keineswegs als  Lehrbuch über Programmieren  im Allgemeinen  konzi-
  134.       piert. Es wird davon  ausgegangen, daß der Leser bereits mit  allgemei-
  135.       nen Programmierkonzepten vertraut ist.
  136.  
  137.  
  138.       1.3   Schreibweise
  139.  
  140.       Wenn in diesem  Handbuch bestimmte  Wörter in  spitze Klammern  gesetzt
  141.       oder kursiv gedruckt sind, z.  B. <expression>, handelt es sich um  Va-
  142.       riablen,  denen ein Wort, eine Wortgruppe  oder einige Textzeilen zuge-
  143.       ordnet sind. Die Bedeutung der kursiv gedruckten  Wörter wird bei deren
  144.       Erscheinen im Handbuch erläutert.
  145.  
  146.  
  147.       1.4   Erstellen von SALT-Programmen
  148.  
  149.       Grundsätzlich ist eine SALT-Befehlsdatei eine Folge  von Anweisungen in
  150.       einer bestimmten  Syntax, die Telix befolgen soll. Zum Erstellen dieser
  151.       Befehlsdatei können Sie jeden beliebigen  Text-Editor verwenden, sofern
  152.       die Ausgabe als ASCII-Text erfolgen  kann (d. h. wenn Sie Ihr  Textver-
  153.       arbeitungsprogramm verwenden, müssen Sie  es in der Regel  ausdrücklich
  154.       anweisen, den Text im  ASCII-Format auszugeben, ohne spezielle  Steuer-
  155.       zeichen  hinzuzufügen). Sie  können einer  SALT-Programmdatei jeden be-
  156.       liebigen Namen zuweisen,  jedoch empfiehlt sich  zur Kennzeichnung  die
  157.       Erweiterung .SLT.
  158.  
  159.       Wenn Sie Ihre Befehlsdatei erstellt und auf  Diskette oder Platte gesi-
  160.       chert haben, muß  sie kompiliert werden. Das  in Telix enthaltene  Pro-
  161.       gramm  CS.EXE liest Ihre ,Quell'datei und gibt  ihr eine für Telix ver-
  162.       ständliche Form (kompiliert sie). Telix kann die kompilierte  Datei nun
  163.       schneller laden; meist ist sie auch kürzer.
  164.  
  165.                                        - 2 -
  166.  
  167.  
  168.  
  169.       Zum Kompilieren einer Befehlsquelldatei tippen Sie am DOS-Prompt
  170.  
  171.          cs <Pfadname>
  172.  
  173.       gefolgt von <Enter> (oder Carriage Return). Das  Programm CS.EXE muß im
  174.       aktuellen  Verzeichnis stehen  oder im  DOS-Pfad. <Pfadname>  steht für
  175.       den  Namen der zu  kompilierenden Datei,  ggf. zusammen  mit Laufwerks-
  176.       und Verzeichnisangabe. Die kompilierte Version erhält  den gleichen Na-
  177.       men, jedoch die Erweiterung .SLC.
  178.  
  179.       Wenn  der  Scriptcompiler in  Ihrer Quelldatei  einen  Fehler entdeckt,
  180.       wird er  den kompletten Vorgang  abbrechen und Ihnen die  Zeile, in der
  181.       der Fehler auftrat  und seine Art angeben. Der  Fehler sollte nun beho-
  182.       ben und die Quelldatei erneut kompiliert werden.  Der Vorgang wird wie-
  183.       derholt, bis der Compiler keinen Fehler mehr erkennt.
  184.  
  185.       Unter Telix kann diese kompilierte Datei  dann verschiedene Anwendungen
  186.       finden. Sie  kann durch  den Befehl  <Alt>-<G> (Script ausführen),  als
  187.       Zusatz  zur Befehlszeile  beim Aufruf  von Telix,  an einen  Eintrag im
  188.       Anwahlverzeichnis gekoppelt  oder innerhalb einer  anderen Befehlsdatei
  189.       ausgeführt werden. Die ersten  drei Möglichkeiten sind im  Telix-Bedie-
  190.       nerhandbuch  beschrieben, die letzte später im vorliegenden Handbuch.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.                                        - 3 -
  232.  
  233.  
  234.  
  235.       2. Syntax
  236.  
  237.       Beim  Editieren von  Befehlen, Funktionen  und Variablennamen  kommt es
  238.       auf Groß- oder  Kleinschreibung nicht an,  sondern nur innerhalb  einer
  239.       Zeichenkettenkonstanten  (z. B.  "Hello" ist  eine  andere Zeichenkette
  240.       als  "hello"). Zwischenräume (wie  Leerzeichen, Tabulator, Carriage Re-
  241.       turn  und Line Feed) werden nicht beachtet. Der Befehlsübersetzer igno-
  242.       riert die Plazierung der  einzelnen Bestandteile, so daß Sie Ihre  Pro-
  243.       gramme beliebig anordnen können. 
  244.  
  245.       Beispiel:
  246.  
  247.          if (wert == 1)
  248.              prints("Der Wert ist gleich 1!");
  249.          else
  250.              prints("Der Wert ist ungleich 1.");
  251.  
  252.       ist gleichbedeutend mit
  253.  
  254.          if (wert == 1) prints("Der Wert ist gleich 1!");
  255.          else           prints("Der Wert ist ungleich 1.");
  256.  
  257.       und sogar mit
  258.  
  259.          if(wert==1)prints("Der Wert ist gleich 1!");else prints
  260.          ("Der Wert ist ungleich 1.");
  261.  
  262.       Zwischenräume spielen nur dann eine Rolle, wenn  sie eine Zeichenkette,
  263.       ein Schlüsselwort  oder einen Funktionsnamen  unterbrechen. Das Schlüs-
  264.       selwort  ,while' z. B.  verliert seine Bedeutung,  wenn es unterbrochen
  265.       wird. Das gleiche  gilt für alle anderen  Schlüsselworte und für  Funk-
  266.       tionsnamen, zwischen einem Befehl und anderen  Zeichen muß ein Leerzei-
  267.       chen stehen. Z.  B. hat ,while' eine  andere Bedeutung als  ,whileabc'.
  268.       Es dient der Klarheit,  wenn Sie Ihren Kode durch sinnvolle  Einrückun-
  269.       gen und  Zwischenräume leicht  verständlich gestalten.  Es  gibt z.  B.
  270.       keinen Grund  dafür, mehr  als einen Befehl  in eine  Zeile zu  setzen;
  271.       auch wenn dies  zulässig ist. Ein  Beispiel für Programmierstil  zeigen
  272.       die in Telix enthaltenen Musterprogramme.
  273.  
  274.       Eine Zeichenkettenkonstante ist  eine Folge von  ASCII-Zeichen, die  in
  275.       Anführungszeichen gesetzt ist, z.  B: "Hello", "Goodbye" oder  "Telix".
  276.       Häufig  werden für  Zeichenkettenkonstanten  auch Spezialzeichen  benö-
  277.       tigt, die  über die Tastatur  nicht so leicht  eingegeben oder  auf dem
  278.       Bildschirm nicht problemlos darzustellen sind.  Dies löst man über  das
  279.       sogenannte  Escape-Zeichen, das mit  dem Accent  circonflex dargestellt
  280.       wird  (,^'). Wenn  der SALT-Compiler  eine Zeichenkettenkonstante liest
  281.       und auf das  ,^'-Zeichen trifft, tauscht er  es gegen einen  bestimmten
  282.       ASCII-Kode  auf der Basis  des folgenden Buchstabens  aus. Im folgenden
  283.       die Übersetzungen:
  284.  
  285.       ^c    ,c' sei  ein beliebiger  Buchstabe. Die dem Buchstaben  ,c' zuge-
  286.             ordnete  Steuerfunktion wird in  den Text  eingefügt. So steht ^M
  287.             für  <Ctrl>-<M>, ^J für <Ctrl>-<J>,  etc. Das ,c' kann groß- oder
  288.             kleingeschrieben  werden. Der tatsächliche Vorgang  ist hier, daß
  289.             64  vom Wert  des Buchstabens  ,c' subtrahiert  wird, so  daß das
  290.             Escape Zeichen beispielsweise mit ^[ dargestellt werden kann.
  291.  
  292.       ^^    Das eigentliche ,^' wird in den Text eingefügt. 
  293.  
  294.       ^"    Erscheint  im Text  als eigentliches ,"'.  Wenn eine Zeichenkette
  295.             Anführungszeichen  enthalten  soll, müssen  sie  auf  diese Weise
  296.  
  297.                                        - 4 -
  298.  
  299.  
  300.  
  301.             angesteuert werden, da das einfache ,"'-Zeichen vom Compiler  als
  302.             Ende der Zeichenkette angesehen wird. Beispiel: ,Er sagte  ^"Hal-
  303.             lo^".' wird übersetzt in ,Er sagte "Hallo"'.
  304.  
  305.       ^'    Erscheint als eigentliches ,'' im Text.
  306.  
  307.       ^nnn  ,nnn' steht für bis  zu drei Ziffern für  den ASCII-Wert des Zei-
  308.             chens,  das in  den Text eingefügt  werden soll.  Es werden höch-
  309.             stens drei Ziffern gelesen bzw. bis zum ersten  nicht-numerischen
  310.             Zeichen. Z. B. würde der Compiler die Zeichenkette ,S^65LT'  ein-
  311.             lesen und die  Zeichenkette ,SALT'  ausgeben, weil A den  ASCII--
  312.             Wert 65  hat. Wenn nnn  innerhalb einer  Zeichenkette von anderen
  313.             Ziffern gefolgt  wird und weniger  als drei  Stellen hat,  müssen
  314.             Sie  die fehlenden  Stellen durch  ein bzw.  zwei Nullen  vor der
  315.             Wertangabe ersetzen,  weil  sonst  ein falscher  Wert  eingelesen
  316.             würde. Die Zeichenkette ,^79  Park Avenue' würde  übersetzt in ,0
  317.             Park Avenue', da 79 der ASCIIWert von ,0' ist. Wenn Sie  tatsäch-
  318.             lich ein <Ctrl>-<G>  (ASCII-Code 7), gefolgt von ,9 Park  Avenue'
  319.             möchten, geben Sie die Zeichenkette ,^0079 Park Avenue' ein.
  320.  
  321.       Eine Integerkonstante  ist eine Ziffernsequenz aus dem Bereich der gan-
  322.       zen Zahlen von  -2147483648 bis 2147483647.  Eine Integerkonstante  muß
  323.       mit einer Ziffer von  0 bis 9 beginnen oder mit einem Minuszeichen (-),
  324.       das  von einer Ziffer  gefolgt wird. Bei  allen folgenden Zeichenketten
  325.       handelt es sich um gültige Integerkonstanten:
  326.  
  327.             10
  328.             -400067
  329.             999
  330.  
  331.       Eine Integerkonstante kann auch in hexaldezimaler  Form eingegeben wer-
  332.       den  (Basis 16, wobei die Ziffern ,0'  bis ,9' durch die Buchstaben ,a'
  333.       bis ,f' ergänzt werden,  um über 16 Werte zu verfügen).  Hex-Werten muß
  334.       ,0x'  vorangestellt werden, damit der Compiler sie als solche interpre-
  335.       tiert,  auf Groß-  bzw. Kleinschreibung  kommt es  dabei nicht  an. Bei
  336.       allen folgenden  Zeichenketten handelt es  sich um gültige  Eingaben in
  337.       hexadezimaler Form:
  338.  
  339.             0xff00
  340.             0Xa2
  341.             0x7D
  342.             0x1AbCdEf
  343.  
  344.  
  345.       2.1   Kommentare
  346.  
  347.       Kommentare  in  einer Befehlsdatei  beeinflussen  die  Arbeitsweise des
  348.       Programms  in keiner  Weise, sondern  dienen lediglich  zur Erläuterung
  349.       oder Beschreibung. Wenn in  einer SALT Befehlsdatei die Zeichen //  an-
  350.       getroffen werden, so werden  alle Zeichen ab dort bis zum Ende der Zei-
  351.       le als Kommentar angesehen und ignoriert. z. B.:
  352.  
  353.       prints("Hallo");       // Diese Zeile bewirkt die Ausgabe  von "Hallo" 
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.                                        - 5 -
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.                                        - 6 -
  429.  
  430.  
  431.  
  432.       3. Programmstruktur
  433.  
  434.       Ein SALT-Programm hat folgendes Format:
  435.  
  436.          <global_variable_definition>
  437.             ...
  438.          <global_variable_definition>
  439.  
  440.          <function_definition>
  441.  
  442.          <global_variable_definition>
  443.             ...
  444.          <global_variable_definition>
  445.  
  446.          <Function_definitions>
  447.  
  448.             ...
  449.  
  450.  
  451.       und so weiter. Grundsätzlich besteht eine  Scriptdatei aus Definitionen
  452.       globaler Variablen (Variablen, die  dann für den Rest dem Programm  zur
  453.       Verfügung  stehen) und  Funktionsdefinitionen (Funktionen  bestehen aus
  454.       Befehlszeilen, die  als Gruppe  zusammengefaßt sind  und so über  einen
  455.       Namen aufgerufen werden können). Um ablauffähig zu  sein, muß sie keine
  456.       globalen  Variablen enthalten,  notwendig ist  lediglich die Verwendung
  457.       wenigstens einer Funktion namens  ,main'. Beim folgendem Beispiel  han-
  458.       delt es sich um eine komplette Scriptdatei:
  459.  
  460.          main()
  461.          {
  462.           prints ("hallo");
  463.          }
  464.  
  465.       Nach  Kompilieren  und Starten  gibt dieses  Programm  die Zeichenkette
  466.       "hallo" auf dem Bildschirm aus.
  467.  
  468.  
  469.       3.1   Variablen
  470.  
  471.       Eine Variable ist ein  Platz im Systemspeicher, der eine bestimmte  In-
  472.       formation enthält. Der Inhalt einer Variablen  kann per Programmierkode
  473.       geändert  werden. (daher der  Name ,Variable'). SALT  kennt zwei Varia-
  474.       blentypen:  Integer-Variablen und  Zeichenkettenvariablen. Ersterer Typ
  475.       enthält einen Integer-Wert  (z. B. 485624 oder -627), während letzterer
  476.       Textzeichen enthält (z. B. "Telix" oder "SCRIPT"). 
  477.  
  478.       Es ist abhängig von der Plazierung der  Definierung einer Variablen, ob
  479.       sie  globalen oder  lokalen Charkater  hat.  Ist eine  Variable global,
  480.       bedeutet das, daß sie  an jeder ihrer Definierung folgenden Stelle  bis
  481.       zum Dateiende benutzt werden  kann. Wenn sie lokal ist, kann sie nur in
  482.       dem Teil der  Datei benutzt werden,  in den sie eingeschlossen  ist, z.
  483.       B. die Funktion, innerhalb  der sie definiert wird . Ein  Variablenname
  484.       kann  bis zu 31 Stellen  haben und die Buchstaben  ,A' bis ,Z' oder ,a'
  485.       bis ,z',  die Ziffern ,0'  bis ,9' und  den Unterstrich  ,_' enthalten.
  486.       Der  Name darf  nicht mit  einer Ziffer  beginnen. Zulässig  sind z. B.
  487.       ,his_name2' und ,_his_name2', nicht aber ,_his_name'. 
  488.  
  489.       Eine Integer-Variable wird wie folgt definiert:
  490.  
  491.          int <varname>;
  492.  
  493.  
  494.                                        - 7 -
  495.  
  496.  
  497.  
  498.       wobei <varname> für den Namen steht, der  der Variablen zugewiesen wer-
  499.       den soll. Eine andere Definierungsmöglichkeit ist:
  500.  
  501.          int <varname1>, <varname2>, ..., <varnameN>;
  502.  
  503.       wodurch Sie mehr  als eine Integer-Variable  innerhalb einer  Anweisung
  504.       definieren können. 
  505.  
  506.       Der Integer-Variable kann  wie folgt ein  Originalwert zugewiesen  wer-
  507.       den:
  508.  
  509.          int <varname> = <int_const>;
  510.  
  511.       <int_const> steht  für eine Integer-Konstante. Desgleichen  können Ori-
  512.       ginalwerte,  wie oben  beschrieben, mehrfach  definiert werden,  in dem
  513.       die Zuweisung vor das Komma gestellt wird.
  514.  
  515.       Einige Beispiele:
  516.  
  517.          int maximum
  518.          int start=0;
  519.          int level, i, count=20, loop;
  520.  
  521.       Eine Zeichenkettenvariable wird wie folgt definiert:
  522.  
  523.          str <varname> [<max>], <varname2> [<max>], ... 
  524.          <varnameN> [<max>]
  525.  
  526.       wodurch Sie innerhalb einer Anweisung mehr als eine Zeichenkette  defi-
  527.       nieren können. Der Zeichenkette  kann wie folgt ein  Originalwert zuge-
  528.       wiesen werden:
  529.  
  530.          str <varname> [<max>] = <str_const>;
  531.  
  532.       wobei  <str_const> für  eine Zeichenkettenkonstante  steht. Desgleichen
  533.       können  Originalwerte, wie oben beschrieben, mehrfach definiert werden,
  534.       indem die Zuweisung vor das Komma gestellt wird. Einige Beispiele:
  535.  
  536.          str password[80];
  537.          str password[40] = "mypass", name[30];
  538.  
  539.       Das Feld für die  Kettenlänge kann bei der Spezifizierung eines  Origi-
  540.       nalwertes freibleiben. Dann  wird davon ausgegangen, daß  die Länge der
  541.       Zeichenkette der des zugewiesenen Texten entspricht.
  542.  
  543.          strname [ ] = "John";
  544.  
  545.       Wenn eine  Variable außerhalb einer  Funktion definiert  wird, hat  sie
  546.       globalen Charakter. Innerhalb  einer Funktion hat  sie nur lokale  Wir-
  547.       kung und wird auch nur dort erkannt werden. Wird  einer Variable inner-
  548.       halb einer Funktion der  gleiche Name zugewiesen, wie er außerhalb  be-
  549.       reits existiert, steht er  während der Funktion zur Verfügung. Mit  dem
  550.       Ende der Funktion wird jedoch bei  Zugriff auf die Variable wieder  die
  551.       globale Version geliefert.
  552.  
  553.  
  554.       3.2   Ausdrücke und Operatoren
  555.  
  556.       Ein Ausdruck  ist eine  Zusammenstellung von  Symbolen, die einen  Wert
  557.       ergeben,  wenn sie ausgewertet werden.  Anders ausgedrückt ist ein Aus-
  558.       druck  grundsätzlich  eine Formel.  Ein Ausdruck  darf  aus Konstanten,
  559.  
  560.                                        - 8 -
  561.  
  562.  
  563.  
  564.       Variablen,  Funktionsaufrufen  und  Operatoren bestehen.  Ein  Ausdruck
  565.       kann sehr einfach oder auch sehr kompliziert sein.
  566.  
  567.       Im folgenden einige Beispiele:
  568.  
  569.          10 + 3 - 5
  570.          9 * 7 / 63 - 30
  571.          result = 10 * max(a, b)
  572.          month >= 10
  573.          200
  574.          command == "bye"
  575.          prints("Hallo")
  576.  
  577.       In einem Ausdruck  sind es die Konstanten, Variablen  und Funktionsauf-
  578.       rufe,  mit denen  gearbeitet wird,  während die Operatoren  (+, *, etc)
  579.       diese Arbeiten ausführen.  Es gibt viele  verschiedene Operatoren,  die
  580.       in 2 Gruppen aufzuteilen sind.  Binäre Operatoren (wie +, *, /)  bezie-
  581.       hen  die Ausdrücke  auf beiden  Seite des Operators  in die Kalkulation
  582.       ein, während nicht-binäre Operatoren vor einem  einzelnen Ausdruck ste-
  583.       hen und auf diesen einwirken.
  584.  
  585.       Folgende  Tabelle  ist eine  Zusammenstellung der  in  SALT verfügbaren
  586.       Operatoren:
  587.  
  588.  
  589.          Symbo        (Un/Bin)är      Seine Aufgabe
  590.          --------------------------------------------------------
  591.          -            unär            Arithmetische Negation
  592.          !            unär            Logisches NOT
  593.          not          unär            Logisches NOT (alternativ)
  594.          *            binär           Multiplikation
  595.          /            binär           Division
  596.          %            binär           Modula
  597.          +            binär           Addition
  598.          -            binär           Subtraktion
  599.  
  600.          Symbol       (Un/Bin)är      Seine Aufgabe
  601.          -----------------------------------------------------
  602.          <            binär           Kleiner als
  603.          >            binär           Größer als
  604.          <=           binär           Kleiner oder gleich
  605.          >=           binär           Größer oder gleich
  606.          ==           binär           Gleichheitsszeichen
  607.          !=           binär           Ungleich
  608.          &            binär           Bitweises UND
  609.          |            binär           Bitweises ODER
  610.          ^            binär           Bitweises Exclusiv ODER
  611.          &&           binär           Logisches UND
  612.          and          binär           Logisches UND (alternativ)
  613.          ||           binär           Logisches ODER
  614.          or           binär           Logisches ODER (alternativ)
  615.          =            binär           Zuweisung
  616.  
  617.  
  618.       Beachten Sie bitte, daß  das Minuszeichen sowohl als arithmetische  Ne-
  619.       gation als  auch zum Subtrahieren  verwendet werden kann.  Beachten Sie
  620.       bitte weiterhin, daß ,!'  gleichbedeutend ist mit ,not' sowie ,&&'  mit
  621.       ,and' und ,||'  mit ,or'. Den jeweils  erstgenannten Formen sollte  der
  622.       Vorzug gegeben werden, da sie nicht durch  Leerzeichen von anderen Zei-
  623.       chen getrennt werden müssen, um vom Compiler  erkannt zu werden, wohin-
  624.       gegen es für Anfänger einfacher sein mag, sich die  jeweils zweite Form
  625.  
  626.                                        - 9 -
  627.  
  628.  
  629.  
  630.       zu merken. Bitte verwechseln Sie ferner  nicht ,=' (Zuweisungsoperator)
  631.       mit ,==' (Gleichungsoperator).  Ersterer wird verwendet,  um einer  Va-
  632.       riable  einen  Wert zuzuweisen,  während letzterer  gebraucht  wird, um
  633.       zwei  Werte miteinander zu vergleichen. Angenommen,  Sie haben die bei-
  634.       den Ausdrücke <expr1> und <expr2>. <expr1>=<expr2>  würde dem einen den
  635.       anderen Wert zuweisen,  während <expr1>==<expr2> prüfen  würde, ob  sie
  636.       gleich sind. Z. B.:
  637.  
  638.          num=10
  639.  
  640.       weist der Variable ,num' den Wert 10 zu, während
  641.  
  642.          num==10
  643.  
  644.       einen  Wert ungleich  0 (TRUE)  ergibt, wenn  num gleich  10 ist  und 0
  645.       (FALSE), wenn num ungleich 10 ist. Auch  gibt es einen Unterschied zwi-
  646.       schen logischen und Bit-Operatoren. Die logischen  Operatoren (wie and,
  647.       &&, or, ||, etc.)  arbeiten mit den Werten  TRUE und FALSE und  liefern
  648.       auch TRUE oder  FALSE als Ergebnis, während  die Bit-Operatoren (&,  |,
  649.       ^)  die einzelnen  Datenbits bearbeiten.  Die Bit-Operatoren  müssen in
  650.       einer  Telix-Befehlsdatei beinahe  nie verwendet  werden, es  sei denn,
  651.       Sie möchten den  Wert eines einzelnen  Bits eines Datenbytes  feststel-
  652.       len.
  653.  
  654.       Jeder Operator erzeugt  einen Wert, der  das Ergebnis der  ausgeführten
  655.       Operation darstellt (z. B. 10  * 7 würde 70 ergeben). Die konditionalen
  656.       oder Gleichungsoperatoren, wie  ==, >, <= etc., ergeben den  Wert 0 für
  657.       FALSE und ungleich 0 für TRUE, auf Grundlage der  Ergebnisse der jewei-
  658.       ligen Ausdrücke. Sogar der Zuweisungsoperator = ergibt einen Wert.
  659.  
  660.       Das Ergebnis des Ausdrucks
  661.  
  662.          num = 10
  663.  
  664.       wäre 10.
  665.  
  666.       Welche  Operatoren vor  anderen Vorrang  haben, ist  festgelegt, um die
  667.       Reihenfolge ihrer Wertung zu bestimmen. Z.  B. 7 + 3 * 9 ist gleich 34,
  668.       weil 3 * 9  zuerst gewertet und dann zu  7 addiert wird (* hat  Vorrang
  669.       vor +). Im folgenden sind die Operatoren  ihrer Wichtigkeit nach aufge-
  670.       führt, zuoberst die Operatoren  mit dem höchsten Vorrang. Die in  einer
  671.       Zeile  stehenden Operatoren sind jeweils  gleich wichtig und werden der
  672.       Reihe nach abgearbeitet.
  673.  
  674.            -  !
  675.            *  /   %
  676.            +  -
  677.            <  >   <=  >=
  678.            == !=
  679.            &
  680.            |
  681.            and    &&
  682.            or ||
  683.            =
  684.  
  685.       Wenn  für die  Wertung eine  Reihenfolge benötigt wird,  die hier nicht
  686.       vorgesehen ist, können Klammern  verwendet werden. Z. B.:  99 + 1 *  10
  687.       ist gleich 109; (99 + 1) * 10 ist gleich 1000.
  688.  
  689.       Wenn Sie  sich nicht über  den Vorrang der  Operatoren im  Klaren sind,
  690.       die Sie beim Schreiben  eines Ausdrucks verwenden, sollten Sie von  den
  691.  
  692.                                       - 10 -
  693.  
  694.  
  695.  
  696.       Klammern Gebrach machen!
  697.  
  698.  
  699.       3.3  Funktionen
  700.  
  701.       Mittels  einer  Funktion werden  einige Befehlszeilen  in  einer Gruppe
  702.       zusammengefaßt.  Eine  Telix-Befehlsdatei  enthält  eine  oder  mehrere
  703.       Funktionen. Sie bieten einige Vorteile:
  704.  
  705.       ∙    Eine Funktion kann  von einer anderen  aufgerufen werden und  eine
  706.            bestimmte Aufgabe ausführen.  Die aufrufende Funktion  braucht von
  707.            der aufgerufenen Funktion  nur zu wissen, was diese  bewirkt. Eine
  708.            Befehlsdatei kann so in handliche Einheiten unterteilt werden, was
  709.            auch das Schreiben des Programms und die Fehlersuche erleichtert.
  710.  
  711.       ∙    Wie bereits  erwähnt, arbeitet  eine Funktion  in einen  "Privat"-
  712.            Bereich. Das bedeutet, daß innerhalb einer Funktion definierte Va-
  713.            riable nur in dieser gelten. Deshalb brauche Sie nicht zu befürch-
  714.            ten, daß sie in einem anderen  Teil der Befehlsdatei geändert wer-
  715.            den.
  716.  
  717.       ∙    Sie können eine Funktionsbibliothek aufbauen, um fertiggestellten
  718.            Kode nicht mehrfach schreiben zu müssen.
  719.  
  720.       Funktionen werden im folgenden Format definiert:
  721.  
  722.          <funcname> (<arg1>, <arg2>, ..., <argN>)
  723.  
  724.          {
  725.           <variable_def>
  726.            ...
  727.           <variable_def>
  728.                
  729.           <statement>
  730.            ...
  731.           <statement>
  732.          }
  733.  
  734.  
  735.       <funcname>          ist  der  Name der  Funktion. Er  folgt  den selben
  736.                           Regeln wie  die anderen SALT-Bezeichner.  Der selbe
  737.                           Name kann nur einmal verwendet werden.
  738.  
  739.       <arg1> bis <argN>   sind  die dieser  Funktion zugewiesenen  Werte (Pa-
  740.                           rameter). Zuweilen benötigt eine  Funktion zum Aus-
  741.                           führen ihrer Aufgabe  solche Werte. Jede  Zuweisung
  742.                           erfolgt  in der  Form <type>  <name>,  wobei <type>
  743.                           entweder ,int' oder ,str' sein kann  und <name> der
  744.                           Name ist,  mit dem  die Funktion aufgerufen  werden
  745.                           soll. Einer Funktion  können maximal  12 Werte  zu-
  746.                           gewiesen werden.
  747.  
  748.       <variable_def>      ist  die Definierung  einer  Variablen, wie  vorher
  749.                           unter  dieesem  Punkt  beschrieben. Jede  beliebige
  750.                           Anzahl von  Variablen  kann in  diesem Bereich  der
  751.                           Funktion definiert  werden. Sie haben  lokalen Cha-
  752.                           rakter  und sind nur innerhalb dieser Funktion ver-
  753.                           fügbar.
  754.  
  755.       <statement>         ist  eine  Anweisung. Eine  Funktion kann  so viele
  756.                           Anweisungen wie nötig haben.  Das Format einer  An-
  757.  
  758.                                       - 11 -
  759.  
  760.  
  761.  
  762.                           weisung wird nachstehend beschrieben. 
  763.  
  764.       Zunächst jedoch ein Beispiel für eine vollständige Funktion:
  765.  
  766.          max (int a, int b)
  767.          {
  768.           int result;
  769.           if (a > b)
  770.            result = a;
  771.           else
  772.            result = b;
  773.           return result;
  774.          }
  775.  
  776.       Diese  Funktion gibt  von zwei  Werten, die  ihr übergeben  werden, den
  777.       höheren aus. Sie hätte  wesentlich einfacher geschrieben werden  können
  778.       (ohne Verwendung der Variablen), doch  wurde diese Form gewählt,  damit
  779.       alle Elemente einer Funktion vorhanden sind.
  780.  
  781.  
  782.       3.4  Anweisungen
  783.  
  784.       Anweisungen sind  Hauptbestandteil eines Programms. Eine  Anweisung en-
  785.       det IMMER mit  einem Semikolon (;). Wo auch  immer Sie Anweisungen ver-
  786.       wenden, können Sie  sie mit geschweiften Klammern  zu einer Gruppe  zu-
  787.       sammenfassen (hierzu später mehr).  Es gibt verschiedene  Schlüsselwör-
  788.       ter  für  diese Anweisungen:  expression, if,  while,  do...while, for,
  789.       return,  break, continue  und goto.  Die einzelnen  Arten haben jeweils
  790.       einige typischen Bestandteile.
  791.  
  792.  
  793.       3.4.1 Expression
  794.  
  795.       Der <expression>-Befehl  ist der  einfachste und  gebräuchlichste. Sein
  796.       Format ist:
  797.  
  798.          <expression>;
  799.  
  800.       wobei <expression> für jeden möglichen Ausdruck  steht. Einige Beispie-
  801.       le:
  802.  
  803.          result = 20;
  804.          password = "Beef";
  805.          pause (20);
  806.          num = 20 * max(a, b);
  807.  
  808.       Vergessen  Sie nicht  das Semikolon  am Ende einer  jeden Anweisung, da
  809.       der  Compiler sonst  die nächste  Zeile  als Bestandteil  der aktuellen
  810.       betrachten und einen Fehler melden wird.
  811.  
  812.  
  813.       3.4.2 If
  814.  
  815.       If wird verwendet, wenn  eine Anweisung oder eine Gruppe von  Anweisun-
  816.       gen  nur unter  einer bestimmten  Bedingung zum Tragen  kommen soll. Im
  817.       folgenden das Format eines if-Befehls:
  818.  
  819.          if (<expression>)
  820.            <statement>
  821.  
  822.       Bei <statement> handelt es sich  um eine der vor- bzw. nachstehend  be-
  823.  
  824.                                       - 12 -
  825.  
  826.  
  827.  
  828.       schriebenen Anweisungen (d. h.  einen Ausdruck oder eine Anweisung  mit
  829.       if, while, do...while, for, return, break oder  continue), die nur dann
  830.       ausgeführt wird, wenn  <expression> zutrifft (Wert  ungleich 0).  Durch
  831.       Verwendung von geschweiften Klammern kann man so  auch eine ganze Grup-
  832.       pe von Anweisungen ausführen bzw. ignorieren lassen. Einige Beispiele:
  833.  
  834.          if (result == -1)
  835.            prints("FEHLER!");
  836.  
  837.          if (num_tries > maximum)
  838.            return 0;
  839.  
  840.          if (month > 10 && day < 20)
  841.           {
  842.            clear();
  843.            prints("Im Bereich.");
  844.            return 1;
  845.           }
  846.  
  847.       Eine weitere Form des if-Befehls ist:
  848.  
  849.          if (<expression>)
  850.            <statement1>
  851.          else
  852.            <statement2>
  853.  
  854.       In   diesem  Fall  wird   <statement1>  ausgeführt,  wenn  <expression>
  855.       ungleich  0  (TRUE) ist  und anderenfalls  <statement2>.  Wieder können
  856.       mehrere Anweisungen durch geschweifte Klammern gruppiert werden.
  857.  
  858.       Einige Beispiele:
  859.  
  860.          if (stat == -1)
  861.            prints("Ergebnis fehlerhaft.");
  862.          else
  863.            prints("Funktion fehlerfrei beendet.");
  864.  
  865.          if (level < 10)
  866.           {
  867.            alarm(1);
  868.            prints("Warnung!");
  869.           }
  870.          else
  871.            prints("Alles in Ordnung.");
  872.  
  873.       Da die Anweisung, die bedingt ausgeführt werden  soll, jedem beliebigen
  874.       Typ angehören kann, kann jede benötigte Anzahl von if-Befehlen  verwen-
  875.       det werden. Z. B.:
  876.  
  877.          if (num < 10)
  878.            if (!error)
  879.              if (read != 0)
  880.                return 1;
  881.  
  882.       Das bedeutet auch, daß folgendes zulässig ist:
  883.  
  884.          if (value == 10)
  885.            do_this()
  886.          else if (value == 100)
  887.            do_that()
  888.          else if (value )) 1000)
  889.  
  890.                                       - 13 -
  891.  
  892.  
  893.  
  894.            do_something_else();
  895.          else
  896.            do_whatever();
  897.  
  898.       Was hier eigentlich geschieht,  ist daß jeder if-Befehl mit dem  else--
  899.       Teile  des vorherigen verknüpft  wird. Obiges Beispiel  könnte auch wie
  900.       folgt geschrieben werden:
  901.  
  902.          if (value == 10)
  903.            do_this()
  904.          else
  905.          if (value == 100)
  906.            do_that();
  907.          else
  908.            if (value == 1000)
  909.              do_something_else();
  910.            else
  911.              do_whatever();
  912.  
  913.       Diese Ketten  könnten theoretisch beliebig lang  sein, der Compiler hat
  914.       jedoch begrenzten Speicherplatz.
  915.  
  916.       Sie  können ein  Programm in  jeder Ihnen  angenehmen Weise  schreiben,
  917.       jedoch  empfiehlt sich der Klarheit  wegen die Verwendung von Klammern.
  918.       Klammern an  den richtigen  Stellen  Ihres Programms  werden das  Lesen
  919.       erheblich erleichtern.
  920.  
  921.       Ein sehr häufiger Fehler, auf  den Sie achtgeben sollten, ist das  Set-
  922.       zen eines Semikolons  nach der  Klammer, die  den Ausdruck  beschließt.
  923.       Wird z. B. folgendes geschrieben:
  924.  
  925.          if (num == 10);
  926.            prints ("Num ist gleich 10");
  927.  
  928.       so würde die Zeichenkette  auf jeden Fall ausgegeben, welchen Wert  num
  929.       auch immer hat.  Der Grund ist das Semikolon hinter der ersten Klammer,
  930.       woduch  das Ende  der Anweisung  angezeigt wird.  Obiges Beispiel zeigt
  931.       eine unwirksame (leere) Anweisung.
  932.  
  933.  
  934.       3.4.3 While
  935.  
  936.       While  wird für  ständige  Wiederholungen (Schleifen)  benutzt, während
  937.       eine bestimmte Bedingung erfüllt ist. Die Form ist:
  938.  
  939.          while (<expression>)
  940.            <statement>
  941.  
  942.       <statement>  wird immer  wieder  ausgeführt, solange  <expression>  un-
  943.       gleich 0 (TRUE) ist.  Beachten Sie bitte, daß <statement> niemals  aus-
  944.       geführt wird, wenn  <expression> zu Beginn gleich  0 (FALSE) ist.  Auch
  945.       hier können  Anweisungen wieder  durch  geschweifte Klammern  gruppiert
  946.       werden.
  947.  
  948.       Einige Beispiele:
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.                                       - 14 -
  957.  
  958.  
  959.  
  960.          while (stat != -1)
  961.            stat = myfunc();
  962.  
  963.          while (um < 100)
  964.            {
  965.             printn(num);
  966.             prints("");
  967.             num = num + 1;
  968.            }
  969.  
  970.          while ()
  971.            {
  972.             if (func1())
  973.               return 0;
  974.             func2();
  975.            }
  976.  
  977.       Bitte  beachten Sie  wieder, daß  hinter der  Endklammer des  Ausdrucks
  978.       kein Semikolon stehen darf.
  979.  
  980.  
  981.       3.4.4 Do...while
  982.  
  983.       Dieser Befehl ähnelt dem while-Befehl und hat die Form:
  984.  
  985.          do
  986.            <statement>
  987.          while (<expression>);
  988.  
  989.       <statement> wird zumindest einmal  ausgeführt und wird solange  wieder-
  990.       holt, bis <expression> gleich 0 (FALSE) wird. Einige Beispiele:
  991.  
  992.          do
  993.            stat = func1();
  994.          while (stat != -1);
  995.  
  996.          do
  997.           {
  998.            prints("hallo");
  999.            num = num + 1;
  1000.           }
  1001.            while (num < 100);
  1002.  
  1003.  
  1004.       3.4.5 For
  1005.  
  1006.       Der for-Befehl  wird für ständige  Wiederholungen (Schleifen)  benutzt,
  1007.       während  eine bestimmte Bedingung  erfüllt ist. Er  hat Vorteile gegen-
  1008.       über dem  while-Befehl, weil  Zählvariablen ziemlich einfach  initiali-
  1009.       siert und eingebunden werden können. Folgende Form wird verwendet:
  1010.  
  1011.          for (<expression1>; <expression2>; <expression3>)
  1012.            <statement>;
  1013.  
  1014.       Der erste Audruck sollte  die Zählvariable initialisieren. Wenn Sie  z.
  1015.       B. von 1 bis  100 zählen möchten und der Variablenname ,num' sein soll,
  1016.       hieße der erste Audruck  ,num = 1'. Der zweite Ausdruck ist die zu prü-
  1017.       fende Bedingung. Solange  sie ungleich 0  (TRUE) ist, wird  <statement>
  1018.       ausgeführt. In obigen Beispiel würde dieser Ausdruck  ,num < 100' sein.
  1019.       Der  dritte Ausdruck bewirkt  den Zählvorgang. Im  obigen Beispiel wäre
  1020.       er  ,num = num  + 1'. Der hier  verwendete forBefehl unterscheidet sich
  1021.  
  1022.                                       - 15 -
  1023.  
  1024.  
  1025.  
  1026.       im Format  von den meisten  anderen Sprachen, er  gibt jedoch dem  Pro-
  1027.       grammierer  viel  Spielraum und  Flexibilität. Beachte  Sie  bitte, daß
  1028.       Ausdrücke  auch  "leer" sein  können; dann  werden  sie als  ungleich 0
  1029.       (TRUE) gewertet.
  1030.  
  1031.       Einige Beispiele:
  1032.  
  1033.                for (count = 0; count < 100; count = count + 1)
  1034.                 {
  1035.                  printn(count);
  1036.                  prints("");
  1037.                 }
  1038.  
  1039.                for (c = 1000; c > 0; c = c - 1)
  1040.                  do_this(c);
  1041.  
  1042.       Folgendes würde endlose Wiederholungen ausführen:
  1043.  
  1044.                for (;;)
  1045.                  prints("Hallo");
  1046.  
  1047.       Beachten Sie bitte, daß  es wirklich keine Einschränkungen für die  Art
  1048.       des Ausdrucks gibt. Folgendes ist beispielsweise durchaus zulässig:
  1049.  
  1050.                for (c = num = 0; c < 100 && stat != -1; c = c + 1)
  1051.                  {
  1052.                   stat = func(num);
  1053.                   num = func2();
  1054.                  }
  1055.  
  1056.       Die Anweisungen werden nur  dann ausgeführt, wenn c kleiner als 100 und
  1057.       stat ungleich -1 ist.
  1058.  
  1059.  
  1060.       3.4.6 Return
  1061.  
  1062.       Irgendwann muß jede Funktion verlassen werden. Wenn  das Ende der Funk-
  1063.       tion erreicht wird, erhält  die aufrufende Funktion automatisch  wieder
  1064.       die Kontrolle. Sehr häufig ist es jedoch  notwendig, eine Funktion zwi-
  1065.       schendurch zu  verlassen, möglicherweise zur  Prüfung einer  Bedingung.
  1066.       Auch muß eine Funktion  häufig einen Wert ausgeben. Das  Format für den
  1067.       return-Befehl ist:
  1068.  
  1069.          return <expression>;
  1070.  
  1071.       Wenn an irgendeiner Stelle  einer Funktion ein return-Befehl  angetrof-
  1072.       fen wird,  erhält sofort die aufrufende  Funktion die Kontrolle zurück.
  1073.       <expression> ist der  auszugebende Wert. Wenn  kein Ausdruck  angegeben
  1074.       wird,  erfolgt die Ausgabe eines Dummy-Wertes.  Der Ausdruck sollte dem
  1075.       Datentyp entsprechen, den die aufrufende Funktion  erwartet, d. h. wird
  1076.       der Typ ,int' erwartet,  so sollte der Ausdruck ein ,int'-Ergebnis  ha-
  1077.       ben;  wird der  Typ ,str'  erwartet, sollte das  Ergebnis des Ausdrucks
  1078.       eine Zeichenkette sein. Wegen des begrenzt  verfügbaren Speicherplatzes
  1079.       kann eine lokale Zeichenkettenvariable NICHT von  einer Funktion ausge-
  1080.       geben werden. Im folgenden einige Beispiele:
  1081.  
  1082.          return;
  1083.          return 1;
  1084.          return level;
  1085.          return (sum + 25);
  1086.          return "hallo";
  1087.  
  1088.                                       - 16 -
  1089.  
  1090.  
  1091.  
  1092.          return (func() + 20);
  1093.  
  1094.       Beachten Sie  bitte, daß komplexe Ausdrücke gewöhnlich in Klammern aus-
  1095.       gegeben  werden. Notwendig  ist dies  nicht, dient  aber  der Klarheit.
  1096.       Auch sollte klar  sein, daß nicht der  Ausdruck, sondern sein  Ergebnis
  1097.       ausgegeben wird.
  1098.  
  1099.  
  1100.       3.4.7 Break
  1101.  
  1102.       Bei Verwendung eines Schleifenbefehls  (while, do...while, for) ist  es
  1103.       häufig  notwendig,  die Wiederholungen  abzubrechen.  Hierzu  dient der
  1104.       break-Befehl. Er beendet jeden while-, do...while-  oder for-Befehl und
  1105.       das Programm wird direkt hinter Ende  des Schleifenbefehls fortgesetzt.
  1106.       Ein  Fehler  wäre es,  den breakBefehl  außerhalb  einer Wiederholungs-
  1107.       schleife zu plazieren. Das Format des break-Befehls ist:
  1108.  
  1109.          break;
  1110.  
  1111.       Angenommen, Sie haben folgenden Kode:
  1112.  
  1113.          int num = 0;
  1114.          while (1)
  1115.           {
  1116.            num = num + 1;
  1117.            if (num > 100)
  1118.              break;
  1119.           }
  1120.          prints("Fertig");
  1121.  
  1122.       Da die Bedingung dieses  while-Befehls immer erfüllt (ungleich 0; TRUE)
  1123.       ist,  hätte er  eine Endlos-Schleife  zur Folge,  wenn er  die Schleife
  1124.       nicht  bei  ,num >  100' durch  den  break-Befehl verlassen  würde. An-
  1125.       schließend wird der nächste Befehl ausgeführt  (der Funktionsaufruf zum
  1126.       Drucken).
  1127.  
  1128.  
  1129.       3.4.8 Continue
  1130.  
  1131.  
  1132.       Der  continue-Befehl wird  innerhalb einer  Wiederholungsschleife (whi-
  1133.       le-, do...while-, for-Befehl) benutzt und hat folgende Form:
  1134.  
  1135.          continue;
  1136.  
  1137.       Außerhalb einer Schleifenanwendung ist ,continue' unzulässig.  Der con-
  1138.       tinueBefehl bewirkt die Rückkehr der Programmkontrolle  hinter das Wort
  1139.       ,while'  beim while-  oder do...while-Befehl,  wo  es bewirkt,  daß die
  1140.       Bedingung geprüft und die Schleife ggf. erneut begonnen wird, z. B.:
  1141.  
  1142.          num = 0;
  1143.          while (num < 100000)
  1144.           {
  1145.            num = num + 1;
  1146.            if (num > 100)
  1147.             continue;
  1148.            prints("Hallo");
  1149.           }
  1150.  
  1151.       Im  obigen Beispiel bewirkt  der continue-Befehl, daß  "Hallo" nur dann
  1152.       ausgegeben  wird, solange  ,num' kleiner  oder gleich  100 ist,  da der
  1153.  
  1154.                                       - 17 -
  1155.  
  1156.  
  1157.  
  1158.       continue-Befehl ausgeführt wird, sobald  ,num' größer als 100 ist,  wo-
  1159.       durch der Rest der Gruppe wegfällt. 
  1160.  
  1161.       Im folgenden ein Beispiel für einen for-Befehl:
  1162.  
  1163.          for (num = 0; num < 100000; num = num + 1)
  1164.           {
  1165.            if (num > 100)
  1166.             continue;
  1167.            prints("Hallo");
  1168.           }
  1169.  
  1170.       In  diesem Fall  bewirkt continue  das gleiche.  Solange  ,num' kleiner
  1171.       oder gleich 100 ist,  wird die ganze Schleife ausgeführt. Sobald  ,num'
  1172.       größer 100 ist,  wird der continue-Befehl ausgeführt  und der Rest  des
  1173.       Schleifenkörpres  weggelassen, so  daß  "Hallo" nicht  mehr  ausgegeben
  1174.       wird.
  1175.  
  1176.  
  1177.       3.4.9 Goto
  1178.  
  1179.       Der  goto-Befehl wird verwendet, um innerhalb  einer Funktion von einer
  1180.       Stelle zur  anderen zu  springen. Der  Gebrauch von goto-Befehlen  wird
  1181.       als schlechter Programmierstil angesehen. Sie können  das Programm sehr
  1182.       unverständlich  machen und sind  eigentlich so  gut wie  nie notwendig.
  1183.       Telix  ist größtenteils  in C geschrieben,  worin es  einen goto-Befehl
  1184.       gibt, doch außer  für einige wenige Stücke vorgefertigten  Textes wurde
  1185.       er weder benötigt  noch verwendet. Andererseits kann  er   sparsam  und
  1186.       sinnvoll angewendet    Ihren Kode  zuweilen klarer und  evtl. schneller
  1187.       gestalten. Der goto-Befehl besteht  aus zwei Teilen, dem  ,label' (Mar-
  1188.       ke), zu dem  die Programmkontrolle springen soll  und dem Wort  ,goto'.
  1189.       Eine Marke wird in der Form
  1190.  
  1191.          <identifier>:
  1192.  
  1193.       definiert, wobei für <identifier> die gleichen  Vorschriften gelten wie
  1194.       für Variablennamen. Beachten Sie bitte, daß ein  Doppelpunkt hinter dem
  1195.       Namen  stehen  muß  (kein  Semikolon), welches  nicht  durch  irgendein
  1196.       (Leer)-zeichen vom Namen der  Marke getrennt sein darf. Eine Marke  muß
  1197.       nicht  auf einer  eigenen Kodezeile  stehen und wird  auch selbst nicht
  1198.       als Befehl angesehen. Für goto gebraucht man die Form:
  1199.  
  1200.          goto <label>;
  1201.  
  1202.       wobei <label>  eine Marke an  einer Stelle der Funktion  steht, die wie
  1203.       vorstehend  beschrieben  definiert wird.  Das Programm  wird  sodann an
  1204.       dieser Marke weitergeführt.
  1205.       Im folgenden ein Beispiel:
  1206.  
  1207.          start:
  1208.          prints("Hallo");
  1209.          goto start;
  1210.  
  1211.       Hierdurch würde "Hallo" immer wieder   für  immer   ausgegeben. Es gibt
  1212.       keine Vorschriften für die  Plazierung einer Marke, so daß obiges  Bei-
  1213.       spiel auch wie folgt geschrieben werden könnte:
  1214.  
  1215.          start:prints("Hallo");
  1216.          goto start;
  1217.  
  1218.       Wie  bereits erwähnt, gibt es gewöhnlich bessere Möglichkeiten, als die
  1219.  
  1220.                                       - 18 -
  1221.  
  1222.  
  1223.  
  1224.       Verwendung des goto-Befehls. Z. B. ist
  1225.  
  1226.          int i = 0;
  1227.          do
  1228.           i = i + 1;
  1229.          while (i < 100);
  1230.  
  1231.       klarer ausgedrückt als das gleichwertige
  1232.  
  1233.          int i = 0;
  1234.          loop:
  1235.           i = i + 1;
  1236.           if (i < 100)
  1237.            goto loop;
  1238.  
  1239.       Eine gute  Verwendung für  goto-Befehls  ist das  Aussteigen aus  einem
  1240.       tief  geschachtelten  while-Befehl,  ohne  viele  zusätzliche Prüfungen
  1241.       ausführen zu müssen.
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.                                       - 19 -
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.                                       - 20 -
  1353.  
  1354.  
  1355.  
  1356.       4. Eingebaute Funktionen
  1357.  
  1358.       In  Telix sind  eine Vielzahl  Funktionen integriert.  Diese Funktionen
  1359.       werden genauso aufgerufen, wie  Ihre eigenen SALT-Funktionen. Jede  hat
  1360.       eine spezielle Aufgabe (etwas auf dem  Bildschirm ausgeben, Zeichenket-
  1361.       ten verändern,  Disketten-/Plattendateien verlassen, etc.).  Jede Funk-
  1362.       tion wird  über Parameter  in  einem bestimmten  Format aufgerufen  und
  1363.       gibt  einen Integer-Wert  oder eine  Zeichenkette aus  (dieses Ergebnis
  1364.       muß nicht unbedingt  weiterverwendet werden und ist oft  eine Dummy-Va-
  1365.       riable).
  1366.  
  1367.       Die  folgenden Seiten  enthalten eine  nach Typen  geordnete Auflistung
  1368.       der vorgegebenen Funktionen,  gefolgt von vollständigen  Beschreibungen
  1369.       der einzelnen Funktionen in  alphabetischer Reihenfolge. Dort steht  zu
  1370.       jeder Funktion  ihr  Aufbau, eine  Beschreibung ihrer  Aufgabe und  der
  1371.       Ausgabewert. Oft sind  Beispiele für den korrekten  Gebrauch mit aufge-
  1372.       führt. Zum  Auffinden verwandter Funktionen hat jede Funktionsbeschrei-
  1373.       bung den  Punkt "Siehe auch",  in dem verwandte  Funktionen aufgelistet
  1374.       sind.
  1375.  
  1376.  
  1377.       4.1  Auflistung der Funktionen, nach Typen geordnet
  1378.  
  1379.       ∙    Bildschirmoperationen
  1380.  
  1381.       box,  cursor_onoff, clear_scr,  getx,  gety,  gotoxy,  printc,  printn,
  1382.       prints, printsc, pstra, pstraxy, scroll, status_wind, update_term
  1383.  
  1384.  
  1385.       ∙  Behandlung von Zeichenketten
  1386.  
  1387.       copychrs,  copystr,  delchrs,  gets,  getsxy,  inschrs,  itos,  setchr,
  1388.       setchrs, stoi,  strcat, strchr, strcmpi,  strlen, strlower,  strmaxlen,
  1389.       strpos, strposi, strupper, subchr, subschrs, substr
  1390.  
  1391.  
  1392.       ∙  Behandlung von Zeichen
  1393.  
  1394.       isascii,  isalnum, isalpha,  iscntrl, isdigit,  islower, isupper, tolo-
  1395.       wer, toupper
  1396.  
  1397.  
  1398.       ∙  Operationen am Kommunikations-Port
  1399.  
  1400.       carrier, cinp_cnt,  cgetc, cgetct,  cputc,  cputs, cputs_tr,  flushbuf,
  1401.       get_baud, get_datab, get_parity, get_port, get_stopb,  hangup, set_cpa-
  1402.       rams, set_port
  1403.  
  1404.  
  1405.       ∙  Operationen mit Dateien und Ein-/Ausgabe von Dateien
  1406.  
  1407.       fclearerr, fclose, fdelete, ferror,  feof, fflush, fgetc, fgets,  file-
  1408.       attr, filefind, filesize, filetime, fnstrip, fopen,  fputc, fputs, fre-
  1409.       ad, frename, fseek, ftell, fwrite
  1410.  
  1411.       ∙  Tastaturoperationen 
  1412.  
  1413.       inkey, inkeyw, keyget, keyload, keysave, keyset
  1414.  
  1415.  
  1416.       ∙  Operationen mit Datum/Zeit und Timer
  1417.  
  1418.                                       - 21 -
  1419.  
  1420.  
  1421.  
  1422.       curtime,   date,  tsec,   tday,   thour,  time,   time_up,  timer_free,
  1423.       timer_restart, timer_start, timer_total, tmin, tmonth, tyear
  1424.  
  1425.  
  1426.       ∙  Dateiübertragungen und Protokolle
  1427.  
  1428.       capture, printer, receive, send, transtab, usagelog, ustamp
  1429.  
  1430.  
  1431.       ∙  Befehlsverwaltung
  1432.  
  1433.       call, calld, delay_scr, is_loaded, load_scr, unload_scr
  1434.  
  1435.  
  1436.       ∙  Anpassung eingehender Zeichenketten
  1437.  
  1438.       track, track_addchr, track_free, track_hit, waitfor
  1439.  
  1440.  
  1441.       ∙  Andere Funktionen
  1442.  
  1443.       alarm,  chatmode, delay, dial, dos, dosfunction, exittelix, helpscreen,
  1444.       loadfon,  newdir,  redial,  redirect_dos,  run,  send_brk, set_defprot,
  1445.       set_terminal, show_directory, terminal, tone.
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.                                       - 22 -
  1485.  
  1486.  
  1487.  
  1488.       4.2         Beschreibung der einzelnen Funktionen
  1489.  
  1490.       alarm
  1491.  
  1492.       Aufbau        alarm(int <seconds>);
  1493.  
  1494.       Beschreibung  Die Alarmfunktion  gibt einen  Alarmton aus,  der soviele
  1495.                     Sekunden andauert, wie bei <seconds> angegeben.
  1496.  
  1497.       Ausgabewert   Die definierte Sekundenanzahl wird zurückgegeben.
  1498.  
  1499.       Siehe auch    tone
  1500.  
  1501.       Beispiel      while (!inkey())
  1502.                      alarm(1);
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.                                       - 23 -
  1551.  
  1552.  
  1553.  
  1554.       box
  1555.  
  1556.       Aufbau        box(int <x>, int <y>, int <x2>, int <y2>, int    <style>,
  1557.                     int <hollow>, int <color>);
  1558.  
  1559.       Beschreibung  Diese Funktion  wird  verwendet, um  auf  dem  Bildschirm
  1560.                     einen  Kasten erscheinen  zu  lassen.  Seine obere  linke
  1561.                     Ecke hat  die Position  <x>, <y>  und  die untere  rechte
  1562.                     Ecke  die Position  <x2>, <y2>.  Der Kasten  muß auf  den
  1563.                     Bildschirm passen. <color> steht  für die Farbe, mit  der
  1564.                     das  Viereck  gezeichnet wird.  Wenn <hollow>  einen Wert
  1565.                     ungleich 0 (TRUE)  darstellt, wird das  Innere des  Vier-
  1566.                     ecks nicht ausgefüllt.  Mit <style> wählen  Sie aus,  wie
  1567.                     Sie die Umrandung zeichnen möchten:
  1568.  
  1569.                     0    Leerzeichen
  1570.                     1    einfache Linie
  1571.                     2    Doppellinien
  1572.                     3    vertikal einfache Linien, horizontal
  1573.                          Doppellinien
  1574.                     4    vertikal Doppellinien, horzizontal
  1575.                          einfache Linien
  1576.  
  1577.                     Hat    <style>    irgendeinen    anderen    Wert,    wird
  1578.                     dieses Zeichen für die Seiten des Vierecks verwendet.
  1579.  
  1580.       Ausgabewert   keiner
  1581.  
  1582.       Siehe auch    scroll
  1583.  
  1584.       Beispiel      box(10, 10, 70, 20, 1, 0, 112);
  1585.                     // zeichnet farbig ausgefülltes Viereck.
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.                                       - 24 -
  1617.  
  1618.  
  1619.  
  1620.       call, calld
  1621.  
  1622.  
  1623.       Aufbau        call(str <scriptname>, <arg1>, <arg2>, <arg3>, ...);
  1624.  
  1625.                     calld(str <scriptname>, <arg1>, <arg2>,<arg3>, ...);
  1626.  
  1627.       Beschreibung  Die Funktion  call wird benutzt,  wenn eine  Befehlsdatei
  1628.                     eine  andere  aufrufen soll  (hineinspringen  und  später
  1629.                     wieder  zurückkehren). <scriptname> ist der Name der auf-
  1630.                     zurufenden  Befehlsdatei.  Ohne Angabe  einer Erweiterung
  1631.                     wird .SLC angenommen.
  1632.  
  1633.                     <arg1> bis <argn> stehen  für die Werte (Parameter),  die
  1634.                     der Hauptfunktion der  aufgerufenen Befehlsdatei  überge-
  1635.                     ben werden. Diese gibt  einen Integerwert oder eine  Zei-
  1636.                     chenkette zurück,  kann jedoch keine  lokalen Zeichenket-
  1637.                     tenvariablen ausgeben. Ist die  aufzurufende Befehlsdatei
  1638.                     bereits im Speicher, weil sie zuvor  geladen und resident
  1639.                     gemacht  wurde oder  wird sie  noch durch  einen früheren
  1640.                     Aufruf bearbeitet, so wird  sie nicht übertragen, sondern
  1641.                     das  "Gedächtnis" benutzt,  d.  h. daß  globale Variablen
  1642.                     die Werte haben  werden, die sie nach  dem letzten Ablauf
  1643.                     der Befehlsdatei hatten.
  1644.  
  1645.                     calld bewirkt  genau das gleiche wie call, außer daß eine
  1646.                     neue  Kopie der angegebenen  Befehlsdatei von der Disket-
  1647.                     te/Platte geladen wird,  wenn sie sich  bereits im  Spei-
  1648.                     cher  befindet. Dies gewährleistet, daß globale Variablen
  1649.                     in der Befehlsdatei  so eingerichtet werden,  wie sie  in
  1650.                     der Quelldatei  definiert sind  und  daß genügend  freier
  1651.                     Stack-Speicherplatz  vorhanden  ist.  calld   ist  jedoch
  1652.                     langsamer und erfordert mehr freien Speicherplatz.
  1653.  
  1654.       Ausgabewert   Ein  Integerwert oder  eine Zeichenkette,  dem Wert  ent-
  1655.                     sprechend,  der von  der  Hauptfunktion der  aufgerufenen
  1656.                     Befehlsdatei ausgegeben wurde. Wegen  des Speicherplatzes
  1657.                     darf es sich dabei nicht um eine  in der aufgerufenen Be-
  1658.                     fehlsdatei   definierte  Zeichenkettenvariable   handeln.
  1659.                     Wenn die angegebene  Datei nicht gefunden  wird, ist  der
  1660.                     Ausgabewert  -1. Wenn die  aufgerufene Datei vom Benutzer
  1661.                     abgebrochen wird, ist der Ausgabewert ebenfalls -1.
  1662.  
  1663.       Siehe auch    load_scr, unload_scr, is_loaded
  1664.  
  1665.       Beispiel      stat = call("TEST");
  1666.                     if (stat == -1)
  1667.                       prints("Aufgerufener Script konnte nicht
  1668.                        geladen werden oder wurde abgebrochen.");
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.                                       - 25 -
  1683.  
  1684.  
  1685.  
  1686.       capture
  1687.  
  1688.       Aufbau        capture(str <filename>);
  1689.  
  1690.       Beschreibung  Die     Funktion     capture     wird     benutzt,     um
  1691.                     Telix-Protokolldateien  zu  öffnen, zu  schließen, Pausen
  1692.                     zu  bewirken und  diese wieder  zu beenden.  Abhängig vom
  1693.                     Inhalt  der  Zeichenkettenvariable <filename>  werden un-
  1694.                     terschiedliche Maßnahmen ergriffen.
  1695.  
  1696.                     Wenn  <filename> durch  einen  gültigen Dateinamen  (ggf.
  1697.                     inkl. Pfad) ersetzt wird, eröffnet Telix  diese Datei und
  1698.                     beginnt, in ihr zu protokollieren.
  1699.  
  1700.                     Wenn  <filename> durch  "*CLOSE*"  ersetzt wird  und  die
  1701.                     Protokolldatei  gerade geöffnet  ist, wird  sie geschlos-
  1702.                     sen.
  1703.  
  1704.                     Wenn  <filename>  durch  "*PAUSE*" ersetzt  wird  und die
  1705.                     Protokolldatei gerade geöffnet ist, wird pausiert.
  1706.  
  1707.                     Wenn <filename>  durch "*UNPAUSE*" ersetzt  wird und  die
  1708.                     Protokolldatei gerade pausiert, wird sie fortgesetzt.
  1709.  
  1710.                     Wenn  <filename>  keine Zeichen  zugewiesen  werden (""),
  1711.                     verhält  Telix  sich wie  nach Drücken  von  <Alt>-<L> im
  1712.                     Terminalmodus (auch hier kommt es  darauf an, ob die Pro-
  1713.                     tokolldatei gerade offen oder geschlossen ist.
  1714.  
  1715.       Ausgabewert   Wenn die  Ausführung der angegebenen  Funktion Schwierig-
  1716.                     keiten  mit  sich bringt,  wird der  Wert  -1 ausgegeben,
  1717.                     sonst ein anderer Wert ungleich 0 (TRUE).
  1718.  
  1719.       Siehe auch    printer
  1720.  
  1721.       Beispiel      if (capture("TELIX.CAP") == -1
  1722.                      prints("Fehler beim Öffnen der Protokoll-
  1723.                      datei!");
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.                                       - 26 -
  1749.  
  1750.  
  1751.  
  1752.       capture_stat
  1753.  
  1754.       Aufbau        capture_stat();
  1755.  
  1756.       Beschreibung  Diese Funktion  gibt einen  Integer-Wert zurück, der  den
  1757.                     aktuellen Status der Protokolldatei repräsentiert:
  1758.  
  1759.                     0    Protokolldatei ist geschlossen
  1760.                     1    Protokolldatei ist geöffnet
  1761.                     2    Protokolldatei ist geöffnet und pausiert
  1762.  
  1763.       Ausgabewert   Ein Integer-Wert wie oben beschrieben.
  1764.  
  1765.       Siehe auch    usage_stat
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.                                       - 27 -
  1815.  
  1816.  
  1817.  
  1818.       carrier
  1819.  
  1820.       Aufbau        carrier();
  1821.  
  1822.       Beschreibung  Die Funktion carrier  gibt einen Wert  ungleich 0  (TRUE)
  1823.                     aus,  wenn das  vom Modem  kommende Signal  ,Data Carrier
  1824.                     Detect'  an  (high) ist,  sonst 0  (FALSE).  Beachten Sie
  1825.                     bitte,  daß manche  Modems von  Hause aus  so eingestellt
  1826.                     sind, daß sie den  tatsächlichen Status des Carriererken-
  1827.                     nungssignals  ignorieren und immer ein "high" senden. Da-
  1828.                     mit  diese  Funktion wirksam  ist, müssen  Sie  Ihr Modem
  1829.                     also  dazu  bringen, das  echte  Signal  zu liefern.  Die
  1830.                     Funktion kann verwendet  werden, um zu  prüfen, ob  Telix
  1831.                     über Modem  mit einem  entfernten Rechner  verbunden ist,
  1832.                     da  das  Carriererkennungssignal immer  an  sein  sollte,
  1833.                     wenn  eine Verbindung  besteht. Beachten  Sie bitte,  daß
  1834.                     bei  Verwendung eines  Übertragungskabels ohne  Modem die
  1835.                     Art des Kabels über den Ausgabewert entscheidet.
  1836.  
  1837.       Ausgabewert   Ungleich  0 (TRUE)  oder 0  (FALSE), abhängig  vom Status
  1838.                     des Trägererkennungssignals.
  1839.  
  1840.       Beispiel      if (carrier())
  1841.                       prints ("Verbindung hergestellt.");
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.                                       - 28 -
  1881.  
  1882.  
  1883.  
  1884.       chatmode
  1885.  
  1886.       Aufbau        chatmode(int <echo_remote>);
  1887.  
  1888.       Beschreibung  Mit der Funktion chatmode  gelangen Sie in den  Konversa-
  1889.                     tionsmodus,  wie nach Drücken  von <Alt>-<Y> im Terminal-
  1890.                     modus.  Wenn <echo_remote>  ungleich 0  (TRUE) ist,  wird
  1891.                     ein Echo der vom entfernten Rechner übertragenen  Zeichen
  1892.                     dorthin zurückgesandt,  anderenfalls nicht. Das  Echo ist
  1893.                     für Anwendungen im Hostmodus vorgesehen.
  1894.  
  1895.       Ausgabewert   keiner
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.                                       - 29 -
  1947.  
  1948.  
  1949.  
  1950.       cinp_cnt
  1951.  
  1952.       Aufbau        cinp_cnt();
  1953.  
  1954.       Beschreibung  Die Funktion cinp_cnt  gibt die Anzahl  der im  Empfangs-
  1955.                     speicher anstehenden Zeichen aus.
  1956.  
  1957.       Ausgabewert   Ein Integerwert, wie vorstehend beschrieben.
  1958.  
  1959.       Siehe auch    cgetc
  1960.  
  1961.       Beispiel      if (cinp_cnt() > 10)
  1962.                      handle_stuff();
  1963.  
  1964.                     while (!cinp_cnt())
  1965.                       ;
  1966.  
  1967.                     if (cinp_cnt())
  1968.                       c = cgetc();
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.                                       - 30 -
  2013.  
  2014.  
  2015.  
  2016.       cgetc, cgetct
  2017.  
  2018.       Aufbau        cgetc();
  2019.  
  2020.                     cgetct(int <timeout>);
  2021.  
  2022.       Beschreibung  Die  Funktion  cgetc bewirkt  die Ausgabe  des  ersten im
  2023.                     Empfangsspeicher  anstehenden  Zeichens.  Befinden   sich
  2024.                     keine Daten im  Empfangsspeicher, wird der  Wert -1  aus-
  2025.                     gegeben.  Mit  dieser Funktion  kann  geprüft werden,  ob
  2026.                     Daten im Empfangsspeicher anstehen.
  2027.  
  2028.                     Die  Funktion cgetct bewirkt  die Ausgabe  eines Zeichens
  2029.                     vom  Kommunikations-Port.  Dabei  wird  bis  zu <timeout>
  2030.                     Zehntelsekunden  auf  ein  eingehendes Zeichen  gewartet.
  2031.                     Steht bereits  ein Zeichen  im Empfangsspeicher,  wird es
  2032.                     umgehend ausgegeben.  Wenn innerhalb der  genannten Zeit-
  2033.                     spanne kein Zeichen  empfangen wird, erfolgt die  Ausgabe
  2034.                     des Wertes -1.
  2035.  
  2036.       Ausgabewert   Ein Integerwert, wie vorstehend beschrieben.
  2037.  
  2038.       Siehe auch    cinp_cnt
  2039.  
  2040.       Beispiel      if (cinp_cnt())
  2041.                       chr = cgetc();
  2042.  
  2043.                     if ((chr = cgetct(100)) == -1)
  2044.                       prints("Timeout!");
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.                                       - 31 -
  2079.  
  2080.  
  2081.  
  2082.       clear_scr
  2083.  
  2084.       Aufbau        clear_scr();
  2085.  
  2086.       Beschreibung  Die  Funktion clear_scr  löscht den  Bildschirminhalt und
  2087.                     plaziert den Cursor in die  obere linke Ecke an  Position
  2088.                     0,0.
  2089.  
  2090.       Ausgabewert   keiner
  2091.  
  2092.       Siehe auch    scroll
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.                                       - 32 -
  2145.  
  2146.  
  2147.  
  2148.       copychrs
  2149.  
  2150.       Aufbau        copychrs(str  <source>,  int  <target>,  int  <pos>,  int
  2151.                     <count>);
  2152.  
  2153.       Beschreibung  Die Funktion  copychrs  kopiert eine  Anzahl von  Zeichen
  2154.                     von einer Zeichenkette  in eine andere.  Zeichen aus  der
  2155.                     Zeichenkette <source> werden so lange in die  Zeichenket-
  2156.                     te <target> ab Position  <pos> kopiert, bis <count>  Zei-
  2157.                     chen übertragen wurden.  Beachten Sie, daß  SALT-Zeichen-
  2158.                     ketten bei  Position 0 beginnen.  Es werden nur  so viele
  2159.                     Zeichen übertragen, wie in <target> hineinpassen.
  2160.  
  2161.                     Diese Funktion ähnelt sehr  substr, außer, daß sie  nicht
  2162.                     Zeichenkettenorientiert  ist.  copychrs bricht  nicht ab,
  2163.                     wenn die Zeichenkette eine 0 enthält.
  2164.  
  2165.       Ausgabewert   keiner
  2166.  
  2167.       Siehe auch    copychrs, subchrs, substr, copystr
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.                                       - 33 -
  2211.  
  2212.  
  2213.  
  2214.       copystr
  2215.  
  2216.       Aufbau        copystr(str  <source>,  str  <target>,   int  <pos>,  int
  2217.                     <max>);
  2218.  
  2219.       Beschreibung  Die  Funktion copystr kopiert  eine Zeichen-kette in eine
  2220.                     andere  hinein.  Die  Zeichen der  Zeichenkette  <source>
  2221.                     werden  in die  Zeichenkette  <target> ab  Position <pos>
  2222.                     hineinkopiert.    (Beachten    Sie   bitte,    daß   SALT
  2223.                     Zeichenketten mit der Position  0 beginnen, nicht mit  1,
  2224.                     wie  in  einigen Sprachen).  Zeichen werden  kopiert, bis
  2225.                     eine 0 angetroffen wird  (gewöhnlich am Ende einer  jeden
  2226.                     Zeichenkette)  oder die Anzahl  <max> erreicht wird. Eine
  2227.                     0 (NUL) wird  immer an das Ende  der Zielzeichenkette ko-
  2228.                     piert.  Die 0 wird  nicht als Teil  von <max> berücksich-
  2229.                     tigt. Es werden  nur so viele  Zeichen kopiert, wie  noch
  2230.                     in <target> passen.
  2231.  
  2232.       Ausgabewert   keiner
  2233.  
  2234.       Siehe auch    copychrs, subchrs, substr
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.                                       - 34 -
  2277.  
  2278.  
  2279.  
  2280.       cputc
  2281.  
  2282.       Aufbau        cputc(int <character>);
  2283.  
  2284.       Beschreibung  Mit  cputc wird  <character> zum  Kommunikations-Port ge-
  2285.                     sandt. Es  wird das  entsprechende ASCII-Zeichen  verwen-
  2286.                     det.
  2287.  
  2288.       Ausgabewert   Kann das  Zeichen aus  irgendeinem Grunde  nicht versandt
  2289.                     werden,  erfolgt die  Ausgabe des  Wertes -1,  sonst wird
  2290.                     ein anderer Wert ungleich 0 ausgegeben.
  2291.  
  2292.       Siehe auch    cputs
  2293.  
  2294.       Beispiel      cputc(,A');
  2295.                     cputc(27);// Versenden von Escape
  2296.                     cputc(,^M');// Versenden von Carriage Return
  2297.                     cputc(inkeyw());
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.                                       - 35 -
  2343.  
  2344.  
  2345.  
  2346.       cputs
  2347.  
  2348.       Aufbau        cputs(str <outstr>);
  2349.  
  2350.       Beschreibung  Diese Funktion  sendet die ihr übergebene Zeichenkette an
  2351.                     das  Modem. Hinter die  Zeichenkette wird  weder Carriage
  2352.                     Return noch Line Feed gesetzt.
  2353.  
  2354.       Ausgabewert   keiner
  2355.  
  2356.       Siehe auch    cputs_tr
  2357.  
  2358.       Beispiel      cputs("Goodbye");
  2359.  
  2360.                     str password[] = "mypass";
  2361.                     cputs(password);
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.                                       - 36 -
  2409.  
  2410.  
  2411.  
  2412.       cputs_tr
  2413.  
  2414.       Aufbau        cputs_tr(str <outstr>);
  2415.  
  2416.       Beschreibung  Diese  Funktion versendet die ihr übergebene Zeichenkette
  2417.                     über  den Modem-Port, beachtet  aber die  im Telix-Bedie-
  2418.                     nungshandbuch  beschriebenen Übersetzungszeichen  für die
  2419.                     Übertragung ^ und ~.  Die Funktion ist nur dann  von Nut-
  2420.                     zen,  wenn dem  Modem  im Konfigurierungsmenü  definierte
  2421.                     Steuersequenzen gesandt werden sollen.
  2422.  
  2423.       Ausgabewert   keiner
  2424.  
  2425.       Siehe auch    cputs
  2426.  
  2427.       Beispiel      cputs_tr(_modem_init);
  2428.                      cputs_tr("Logoff^M~yes^M");
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.                                       - 37 -
  2475.  
  2476.  
  2477.  
  2478.       cursor_onoff
  2479.  
  2480.       Aufbau        cursor_onoff(int <state>);
  2481.  
  2482.       Beschreibung  Die Funktion cursor_onoff schaltet  das Blinken des  Cur-
  2483.                     sors an oder aus (läßt den Cursor  verschwinden bzw. wie-
  2484.                     der erscheinen),  abhängig davon, ob der  Status ungleich
  2485.                     0 (TRUE) oder 0 (FALSE) ist.
  2486.  
  2487.       Ausgabewert   keiner
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.                                       - 38 -
  2541.  
  2542.  
  2543.  
  2544.       curtime
  2545.  
  2546.       Aufbau        curtime();
  2547.  
  2548.       Beschreibung  Die Funktion curtime gibt  das aktuelle Datum als  Anzahl
  2549.                     vergangener Sekunden  seit dem 01.01.1970  zurück. Dieses
  2550.                     Zeit/Datumsformat  wird bei  vielen SALT  Funktionen ver-
  2551.                     wendet.
  2552.  
  2553.       Ausgabewert   Ein Integer-Wert wie beschrieben.
  2554.  
  2555.       Siehe auch    date, time, tyear, tmonth, tday, thour, tmin, tsec
  2556.  
  2557.       Beispiel      // Aktuelle Zeit ausgeben
  2558.                     int t;
  2559.                     str s[64];
  2560.  
  2561.                     t = curtime();
  2562.                     date(t, s);
  2563.                     prints(s);
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.                                       - 39 -
  2607.  
  2608.  
  2609.  
  2610.       date
  2611.  
  2612.       Aufbau        date(int <timeval>, str <buffer>);
  2613.  
  2614.       Beschreibung  Die   Datumsfunktion  schreibt ein   Datum  in der   Form
  2615.                     mm/dd/yy,  dd/mm/yy oder yy/mm/dd  (basierend auf der Sy-
  2616.                     stemvariable  date_format)  in  den  <buffer>.  <timeval>
  2617.                     steht für das  Datum, das durch die  Anzahl der seit  dem
  2618.                     01.01.70 vergangenen Sekunden ausgedrückt  wird. Zeitwer-
  2619.                     te in dieser Form werden u. a.  von den Funktionen curti-
  2620.                     me und filetime ausgegeben.
  2621.  
  2622.       Siehe auch    time, curtime, filetime
  2623.  
  2624.       Beispiel      str s[16];
  2625.                     printsc("Das heutige Datum ist ");
  2626.                     date(curtime(), s);
  2627.                     prints(s);
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.                                       - 40 -
  2673.  
  2674.  
  2675.  
  2676.       delay, delay_scr
  2677.  
  2678.       Aufbau        delay(int <duration>);
  2679.  
  2680.                     delay_scr(int <duration>);
  2681.  
  2682.       Beschreibung  Die Verzögerungsfunktion bewirkt eine  Pause, die so vie-
  2683.                     le  1/10 Sekunden  andauert,  wie in  <duration> spezifi-
  2684.                     ziert. Während  dieser Pause werden  sämtliche Funktionen
  2685.                     unterdrückt, außer dem  asynchronen Empfang vom  Kommuni-
  2686.                     kationsport kommender Zeichen.
  2687.  
  2688.                     Die  Funktion delay_scr bewirkt  lediglich eine  Pause in
  2689.                     der Ausführung  der aktuellen Sriptdatei für  die angege-
  2690.                     bene Dauer. Während dieser  Zeit werden Zeichen, die  vom
  2691.                     seriellen  Port  kommen, auf  dem  Bildschirm ausgegeben,
  2692.                     während  die  Tastenbedienungen  des Benutzers  ebenfalls
  2693.                     verarbeitet werden.
  2694.  
  2695.       Ausgabewert   Der <duration>-Wert wird ausgegeben.
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.                                       - 41 -
  2739.  
  2740.  
  2741.  
  2742.       delchrs
  2743.  
  2744.       Aufbau        delchrs(str <s>, int <pos>, int<num>);
  2745.  
  2746.       Beschreibung  Die Funktion delchrs entfernt  eine Anzahl Zeichen  einer
  2747.                     Zeichenkette  ab einer bestimmten  Position. <s>  ist die
  2748.                     betreffende Zeichenkette  und <pos> die Position,  ab der
  2749.                     <num>  Zeichen gelöscht  werden.  Beachten Sie,  daß  das
  2750.                     erste  Zeichen  einer SALT-Zeichenkette  die  Position  0
  2751.                     hat. Übrigbleibende Zeichen werden nach links geschoben.
  2752.  
  2753.       Ausgabewert   keiner
  2754.  
  2755.       siehe auch    inschrs
  2756.  
  2757.       Beispiel      str s[] = "123456789";
  2758.                      delchrs(s, 1, strlen(s) - 2);
  2759.                           //entferne alle Zeichen der
  2760.                          // Zeichenkette außer dem
  2761.                          // ersten und dem letzten
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.                                       - 42 -
  2805.  
  2806.  
  2807.  
  2808.       dial
  2809.  
  2810.       Aufbau        dial(str <dialstr>, int <maxtries>, int <no_link>);
  2811.  
  2812.       Beschreibung  Mit der Anwahlfunktion werden  die in <dialstr>  spezifi-
  2813.                     zierten Eintragungen  angewählt. Diese  sollten im  glei-
  2814.                     chen Format eingetragen werden wie  im Anwahlverzeichnis-
  2815.                     menü. Wenn <dialstr> leer  ist (""), wird das  Anwahlver-
  2816.                     zeichnis angezeigt.  <maxtries> ist  die maximale  Anzahl
  2817.                     von Anwahlversuchen. Wenn z. B. <dialstr>  nur einen Ein-
  2818.                     trag  enthält  und <maxtries>  gleich 5  ist,  wird Telix
  2819.                     fünfmal  versuchen,  diese  Nummer zu  erreichen.  Sind 5
  2820.                     Eintragungen spezifiziert, und  <maxtries> ist gleich  5,
  2821.                     so   wird  jede   Nummer  nur   einmal  angewählt.   Wenn
  2822.                     <maxtries> gleich  0 ist, wird  der Anwahlvorgang wieder-
  2823.                     holt, bis eine Verbindung  zustande kommt. Wenn eine  Be-
  2824.                     fehlsdatei  mit dem entsprechenden Eintrag verbunden ist,
  2825.                     wird sie ausgeführt, es  sei denn <no_link> ist  ungleich
  2826.                     0 (TRUE).
  2827.  
  2828.       Ausgabewert   Wenn eine  Verbindung zustande kam, gibt  die Anwahlfunk-
  2829.                     tion die Nummer des entsprechenden Eintrags  aus (oder 1,
  2830.                     wenn eine Nummer manuell  angewählt wurde). Gab es  keine
  2831.                     Verbindung,  wird 0  ausgegeben. Wenn <dialstr>  ein fal-
  2832.                     sches Format hat,  wird -1 ausgegeben.  Ferner wird  beim
  2833.                     Zustandekommen  einer  Verbindung  die Eintragsnummer  in
  2834.                     die Systemvariable  _entry_enum eingetragen und  der Name
  2835.                     des Teilnehmers in die Systemvariable  _entry_name einge-
  2836.                     tragen.
  2837.  
  2838.       Siehe auch    redial, _entry_enum, _entry_name
  2839.  
  2840.       Beispiel      int stat;
  2841.                     dial("10 15", 0);
  2842.                     dial("m0241 48221", 5);
  2843.                     stat = dial(number_list, 0);
  2844.  
  2845.  
  2846.  
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.                                       - 43 -
  2871.  
  2872.  
  2873.  
  2874.       dos
  2875.  
  2876.       Aufbau        dos(str <command>, int <mode>);
  2877.  
  2878.       Beschreibung  Die Funktion  dos ruft den DOS Befehlsübersetzer (gewöhn-
  2879.                     lich COMMAND.COM)  auf  und übergibt  ihm die  angegebene
  2880.                     Befehlszeichenkette. Wenn  es sich bei <command>  um eine
  2881.                     leere  Zeichenkette ("")  handelt,  wird Telix  die DOS--
  2882.                     Shell aufrufen, wie nach  Drücken von <Alt>-<J>. Für  den
  2883.                     Fall, daß  Sie Befehle  oder  Programme integrieren,  die
  2884.                     Bedienereingaben  verlangen,  sollten Sie  sicherstellen,
  2885.                     daß diese auch erfolgen. Der Wert  <mode> bietet folgende
  2886.                     Optionen:
  2887.  
  2888.                     0    Nach der  Ausführung des Befehls  wird der ursprüng-
  2889.                          liche Bildschirminhalt wieder geladen.
  2890.  
  2891.                     1    Nach  der Ausführung  des Befehls  wird der Bediener
  2892.                          zum  Drücken  einer  Taste  aufgefordert.  Hierdurch
  2893.                          wird das Laden des  ursprünglichen Bildschirminhalts
  2894.                          ausgelöst.
  2895.  
  2896.                     2    Der  ursprüngliche  Bildschirminhalt wird  nach Aus-
  2897.                          führung des Befehls nicht wieder geladen.
  2898.  
  2899.                     Diese  Funktion ist  mit der  Funktion run  verwandt. dos
  2900.                     sollte  verwendet werden,  wenn  ein interner  DOS-Befehl
  2901.                     oder  eine DOS-Shell  benötigt wird.  Anderenfalls sollte
  2902.                     run der Vorzug gegeben  werden, weil es weniger  Speicher
  2903.                     einnimmt und schneller ist.
  2904.  
  2905.       Ausgabewert   Die Funktion dos gibt  -1 aus, wenn der  Befehlsprozessor
  2906.                     nicht gefunden  werden kann oder nicht genügend Speicher-
  2907.                     platz vorhanden ist,  um ihn zu  laden. Ansonsten wird  0
  2908.                     ausgegeben.
  2909.  
  2910.       Siehe auch    run, dosfunction
  2911.  
  2912.       Beispiel      dos("copy a:*.* c:", 1);
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.                                       - 44 -
  2937.  
  2938.  
  2939.  
  2940.       dosfunction
  2941.  
  2942.       Aufbau        dosfunction();
  2943.  
  2944.       Beschreibung  Die  Funktion dosfunction ruft das DOS-Funktionsmenü auf,
  2945.                     wie nach Drücken von <Alt>-<F> im Terminal-Mode. 
  2946.  
  2947.       Ausgabewert   keiner
  2948.  
  2949.       Siehe auch    dos, run
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.                                       - 45 -
  3003.  
  3004.  
  3005.  
  3006.       exittelix
  3007.  
  3008.       Aufbau        exittelix(int <returncode>, int <hangup>);
  3009.  
  3010.       Beschreibung  Die Funktion  exittelix schließt eine  momentan geöffnete
  3011.                     Protokolldatei und verläßt Telix  nach DOS hin, wie  nach
  3012.                     Drücken  von <Alt>-<X>  im Terminalmodus.  Der Wert  <re-
  3013.                     turncode> sollte  zum DOS ausgegeben  werden. Dieser Wert
  3014.                     kann von jeder möglichen Datei gelesen  werden, die Telix
  3015.                     aufgerufen haben  könnte. (Z.  B.  eine Batch-Datei,  die
  3016.                     den  Befehl errorlevel  verwendet).  Die Option  <hangup>
  3017.                     kommt zum Tragen, wenn  Telix gerade eine Verbindung  un-
  3018.                     terhält. Wenn sie auf ungleich 0  (TRUE) eingestellt ist,
  3019.                     wird Telix eine  bestehende Telefonverbindung  abbrechen,
  3020.                     bevor  es zum  DOS  zurückkehrt, anderenfalls  bleibt die
  3021.                     Verbindung bestehen.
  3022.  
  3023.       Ausgabewert   Da diese Funktion  Telix beendet, gibt  es niemals  einen
  3024.                     Ausgabewert.
  3025.  
  3026.       Beispiel      exittelix(0, 1);
  3027.                     exittelix(100, 0);
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.                                       - 46 -
  3069.  
  3070.  
  3071.  
  3072.       fclearerr
  3073.  
  3074.       Aufbau        fclearerr(int <fh>);
  3075.  
  3076.       Beschreibung  Die  Funktion fclearerr  löscht  die Fehlermeldungen  der
  3077.                     Dateiverwaltung <fh>  (file handle) zur  aktuell geöffne-
  3078.                     ten  Datei.  Außerdem wird  das  Dateiende-Flag zurückge-
  3079.                     setzt.
  3080.  
  3081.       Ausgabewert   keiner
  3082.  
  3083.       Siehe auch    ferror, feof
  3084.  
  3085.       Beispiel      int f;
  3086.                     f = fopen("test.dat", "r");
  3087.                      ...
  3088.                     if (ferror(f))
  3089.                       fclearerr(f);
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.                                       - 47 -
  3135.  
  3136.  
  3137.  
  3138.       fclose
  3139.  
  3140.       Aufbau        fclose(int <fh>);
  3141.  
  3142.       Beschreibung  Die  Funktion fclose  schließt die  aktuelle  Datei <fh>,
  3143.                     die zuvor für Ein- oder  Ausgaben mit der Funktion  fopen
  3144.                     geöffnet wurde. Stehen  noch Daten im  Speicher zur  Aus-
  3145.                     gabe auf  Diskette/Platte an, so  werden sie  ausgegeben,
  3146.                     bevor die Datei geschlossen wird. 
  3147.  
  3148.       Ausgabewert   Mit  dem  Wert -1  werden Schwierigkeiten  beim Schließen
  3149.                     der Datei angezeigt.
  3150.  
  3151.       Siehe auch    fopen
  3152.  
  3153.       Beispiel      int f;
  3154.                     f = fopen("test.dat", "w");
  3155.                        ...
  3156.                     fclose(f);
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194.  
  3195.  
  3196.  
  3197.  
  3198.  
  3199.  
  3200.                                       - 48 -
  3201.  
  3202.  
  3203.  
  3204.       fdelete
  3205.  
  3206.       Aufbau        fdelete(str <filename>);
  3207.  
  3208.       Beschreibung  Die Funktion fdelete dient dem Löschen  von Dateien. <fi-
  3209.                     lename>  ist  der Name  der  Datei,  die gelöscht  werden
  3210.                     soll. Die Angabe  von Pfaden und  Laufwerksnamen ist  zu-
  3211.                     lässig.  Es wird  sowohl  Groß- als  auch Kleinschreibung
  3212.                     akzeptiert. Es  dürfen jedoch nicht  die Wildcard-Zeichen
  3213.                     * und ? verwendet werden.
  3214.  
  3215.       Ausgabewert   Wenn  eine Datei  aus irgendeinem  Grunde  nicht gelöscht
  3216.                     werden  konnte,  wird -1  ausgegeben, sonst  wird  eine 0
  3217.                     ausgegeben.
  3218.  
  3219.       Siehe auch    frename
  3220.  
  3221.       Beispiel      fdelete("C:\UTIL\TLX\TELIX.CAP");
  3222.                          // Löschen einer alten
  3223.                          // Protokolldatei 
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.                                       - 49 -
  3267.  
  3268.  
  3269.  
  3270.       feof
  3271.  
  3272.       Aufbau        feof(int <fh>);
  3273.  
  3274.       Beschreibung  Die Funktion feof bestimmt, ob der  Zeiger der geöffneten
  3275.                     Datei, die durch <fh> bestimmt  ist, sich am Ende  dieser
  3276.                     Datei befindet.
  3277.  
  3278.       Ausgabewert   Ein Wert ungleich 0  wird ausgegeben, wenn das  Dateiende
  3279.                     erreicht wurde.
  3280.  
  3281.       Siehe auch    ferror
  3282.  
  3283.       Beispiel      int f, chr;
  3284.                     f = fopen("test.dat", "r");
  3285.                     while ((chr = fgetc(f)) != -1)
  3286.                          // Dateiinhalt ausgeben 
  3287.                      printc(chr);
  3288.                     if (feof(f))
  3289.                      prints("Dateiende erreicht.");
  3290.                     else
  3291.                      prints("Fehler beim Lesen der Datei!");
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.                                       - 50 -
  3333.  
  3334.  
  3335.  
  3336.       ferror
  3337.  
  3338.       Aufbau        ferror(int <fh>);
  3339.  
  3340.       Beschreibung  Die Funktion  ferror überprüft die  Fehlerbedingung einer
  3341.                     Datei  <fh>. Die Fehleranzeige  bleibt bestehen,  bis sie
  3342.                     mit fclearerr gelöscht werden  oder die Datei geschlossen
  3343.                     wird.
  3344.  
  3345.       Ausgabwert    Ein  Wert  ungleich 0  (TRUE) wird  ausgegeben,  wenn die
  3346.                     Fehlermeldungen aufgelistet werden.
  3347.  
  3348.       Siehe auch    fclearerr, feof
  3349.  
  3350.       Beispiel      int f;
  3351.                     f = fopen("test.dat", "r");
  3352.                          // Datei nur zum Lesen öffnen
  3353.                     fputs("Dies sollte die Fehlerbedingung setzen!", f);
  3354.                     if (ferror(f))
  3355.                      prints("Fehler beim Schreiben in Datei!");
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.                                       - 51 -
  3399.  
  3400.  
  3401.  
  3402.       fflush
  3403.  
  3404.       Aufbau        fflush(int <fh>);
  3405.  
  3406.       Beschreibung  Die Funktion fflush schreibt den zur  Datei <fh> gehören-
  3407.                     den   Pufferspeicher zurück. Wenn  die Datei für Schreib-
  3408.                     zugriffe geöffnet ist, werden alle Zeichen,  die im Spei-
  3409.                     cher anstehen, übertragen. Ist die Datei  nur für Lesezu-
  3410.                     griffe geöffnet, wird der Speicher gelöscht.
  3411.  
  3412.       Ausgabewert   Wenn  Probleme  beim  Übertragen  des  Puffers auftreten,
  3413.                     wird der Wert -1 ausgegeben.
  3414.  
  3415.       Siehe auch    fopen, fclose
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.  
  3440.  
  3441.  
  3442.  
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.                                       - 52 -
  3465.  
  3466.  
  3467.  
  3468.       fgetc
  3469.  
  3470.       Aufbau        fgetc(int <fh>);
  3471.  
  3472.       Beschreibung  Die  Funktion fgetc  übergibt das  nächste  Zeichen einer
  3473.                     Datei <fh>. Die Datei muß mittels der  Funktion fopen für
  3474.                     Ausgaben oder Ein- und Ausgaben geöffnet worden sein.
  3475.  
  3476.       Ausgabewert   Es erfolgt die Ausgabe  des gelesenen Zeichens, bzw.  -1,
  3477.                     wenn das Dateiende  erreicht oder ein  Fehler angetroffen
  3478.                     wurde.
  3479.  
  3480.       Siehe auch    fopen, fputc
  3481.  
  3482.       Beispiel      int f;
  3483.                     f = fopen("test.dat", "r");
  3484.                     while (!feor(f)) 
  3485.                          // Alle Zeichen der Datei ausgeben
  3486.                      printc(fgetc(f));
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.                                       - 53 -
  3531.  
  3532.  
  3533.  
  3534.       fgets
  3535.  
  3536.       Aufbau        fgets(str <buffer>, int <n>, int <fh>);
  3537.  
  3538.       Beschreibung  Die Funktion fgets liest Zeichen  aus einer Datei <fh> in
  3539.                     die Zeichenkettenvariable  <buffer> ein.  Das Lesen  wird
  3540.                     unterbrochen, wenn ein  Zeilenvorschub (Line Feed)  gele-
  3541.                     sen  oder das  Dateiende erreicht  wird, ein  Fehler auf-
  3542.                     tritt oder <n> Zeichen gelesen wurden.  Das Line FeedZei-
  3543.                     chen (und  das Carriage  Return-Zeichen,  das diesem  ge-
  3544.                     wöhnlich  auf  MS-DOS-System  vorangeht)  wird  nicht als
  3545.                     Teil der Zeichenkette behandelt.
  3546.  
  3547.                     Wichtig: Die  unter SALT verwendete Funktion  fgets() un-
  3548.                     terscheidet sich  von der gleichnamigen  C-Funktion. Zwar
  3549.                     lesen beide bis  zu einem Line-Feed,  C jedoch  behandelt
  3550.                     das  Line Feed-Zeichen  als Teil der  Zeichenkette. Diese
  3551.                     Abweichung wurde gemacht,  weil das Line Feed  so gut wie
  3552.                     nie  gebraucht  wird  und anderenfalls  nach  jedem Lesen
  3553.                     manuell entfernt werden müßte.
  3554.  
  3555.       Ausgabewert   Beim Auftreten  eines Lesefehlers oder  Erreichen des Da-
  3556.                     teiendes, bevor  ein Zeichen gelesen werden  konnte, wird
  3557.                     der Wert -1 ausgegeben.
  3558.  
  3559.       Siehe auch    fopen, fputs
  3560.  
  3561.       Beispiel      int f;
  3562.                     str s[100];
  3563.                     f = fopen("test.dat", "r");
  3564.                     while (!feof(f)) 
  3565.                          // Dateiinhalt ausgeben
  3566.                      {
  3567.                       fgets(s, 100, f);
  3568.                       printsc(s);
  3569.                      }
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.                                       - 54 -
  3597.  
  3598.  
  3599.  
  3600.       fileattr
  3601.  
  3602.       Aufbau        fileattr(str <filespec>);
  3603.  
  3604.       Beschreibung  Unter  MS-DOS besitzen  Dateien bestimmte  Attribute, die
  3605.                     ihre Funktionen  und  bestimmte Abläufe  regeln. Wenn  im
  3606.                     Attribut-Byte einer Datei z.  B. das ,hidden'-Bit gesetzt
  3607.                     ist,  wird  diese Datei  mit dem  DOS-Befehl  ,dir' nicht
  3608.                     angezeigt. Ebenso  kann eine Datei deren  ,read only'-Bit
  3609.                     gesetzt ist, nicht überschrieben werden.
  3610.  
  3611.                     Die Funktion  fileattr gibt  einen Integer-Wert aus,  der
  3612.                     die Attribute der  spezifizierten Datei vertritt.  <file-
  3613.                     spec>  ist  der Dateiname  und kann  Laufwerks-  und Ver-
  3614.                     zeichnisangaben enthalten sowie die  DOS-Wildcard-Zeichen
  3615.                     * und ?.
  3616.  
  3617.                     Der ausgegebene Wert ist  die Summe der folgenden  Attri-
  3618.                     bute:
  3619.  
  3620.                     1    Reine Lesedatei.
  3621.                     2    Verborgene Datei. Die Datei wird  nicht aufgelistet,
  3622.                          wenn der DOS-Befehl ,dir' ausgeführt wird.
  3623.                     4    Systemdatei. Die Datei wird  nicht aufgelistet, wenn
  3624.                          der DOS-Befehl ,dir' ausgeführt wird.
  3625.                     8    Diskettenname. Hierbei handelt es  sich um den  Ver-
  3626.                          zeichnisnamen der Diskette.
  3627.                     16   Unterverzeichnis.  Hierbei  handelt es  sich  um den
  3628.                          Namen eines Unterverzeichnisses.
  3629.                     32   Archiv-Bit. Dieses Bit setzt  DOS, wenn in eine  Da-
  3630.                          tei  etwas eingetragen wurde  und dann  eine Backup-
  3631.                          Software prüft, ob die Datei seit dem letzten 
  3632.                          Backup geändert wurde.
  3633.  
  3634.                     Jeder dieser Werte  ist ein bestimmtes  Bit eines  Bytes.
  3635.                     Zur Prüfung  dieser Attribute sollte  der Bit-Opertor AND
  3636.                     verwendet  werden.  Folgende Zeile  prüft beispielsweise,
  3637.                     ob das ,read only'-Bit gesetzt ist:
  3638.  
  3639.                      if (attrib & 1)
  3640.                      ...
  3641.  
  3642.                     Ist <filespec>  leer (""), so werden die  Werte der letz-
  3643.                     ten mit  filefind gefundenen Funktion  übernommen. Beach-
  3644.                     ten Sie bitte,  daß nach zwischenzeitlichem  Aufrufen von
  3645.                     filesize oder filetime  mit Angaben  zum Dateinamen,  die
  3646.                     Eigenschaften  der so gefundenen Datei übernommen werden,
  3647.                     da sie den gleichen Puffer benutzen.
  3648.  
  3649.       Ausgabewert   Es wird ein Integer-Wert  ausgegeben, der für die  kombi-
  3650.                     nierten Eigenschaften  der angegebenen Datei  steht, bzw.
  3651.                     der  Wert -1,  wenn die  angegebene Datei  nicht gefunden
  3652.                     wird.
  3653.  
  3654.       Siehe auch    filefind, filesize, filetime
  3655.  
  3656.       Beispiel      int attr;
  3657.                     str filename[64];
  3658.                     gets(filename, 64);
  3659.                     if (attr & 6)
  3660.                          // Verknüpfung von System- mit
  3661.  
  3662.                                       - 55 -
  3663.  
  3664.  
  3665.  
  3666.                          // verborgenen Dateien
  3667.                      prints("Diese Datei ist als verborgen und
  3668.                      Systemdatei markiert");
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.                                       - 56 -
  3729.  
  3730.  
  3731.  
  3732.       filefind
  3733.  
  3734.       Aufbau        filefind(str <filespec>, int <attrib>, str <buffer>);
  3735.  
  3736.       Beschreibung  Die Funktion  filefind verwendet  man, um das  Vorhanden-
  3737.                     sein  einer  oder  mehrerer  Dateien  bzw.  Verzeichnisse
  3738.                     festzustellen.  Filefind  ordnet <buffer>  den  Namen der
  3739.                     ersten  Datei zu,  die  <filespec> entspricht,  ggf. ein-
  3740.                     schließlich  Laufwerks-  und  Verzeichnisangabe. Die  DOS
  3741.                     Wildcard-Zeichen * und ?  können verwendet werden (z.  B.
  3742.                     "*.*",  "C:\TELIX\TELIX.EXE",  "SCRIPTS\TEST??.*").  <at-
  3743.                     trib> steht  für die Eigenschaften (siehe auch fileattr),
  3744.                     denen  die  jeweiligen  Dateien entsprechen  müssen.  Man
  3745.                     definiert diese Eigenschaften  durch Addition  bestimmter
  3746.                     Werte, die im eizelnen folgende Bedeutung haben:
  3747.  
  3748.                     0    Normale und reine Lesedateien
  3749.                     2    Verborgene Dateien
  3750.                     4    Systemdateien
  3751.                     8    Diskettenname
  3752.                     16   Unterverzeichnis
  3753.  
  3754.                     Hat <attrib>  den Wert  0, werden  nur normale  und reine
  3755.                     Ausgabedateien  gefunden.  Wird der  Diskettenname ausge-
  3756.                     wählt, so werden  ausschließlich diese Namen  ausgegeben.
  3757.                     Durch  Auswahl jeder  anderen Eigenschaft,  bzw. Kombina-
  3758.                     tion (Addition)  von Eigenschaften, werden  alle Dateien,
  3759.                     die diese Eigenschaft(en) besitzen sowie  normale Dateien
  3760.                     ausgegeben.
  3761.  
  3762.                     Wenn eine passende Datei,  bzw. ein Verzeichnis oder  ein
  3763.                     Diskettenname  gefunden wird, wird sie/es/er <buffer> zu-
  3764.                     geordnet (beachten  Sie bitte,  daß Laufwerks- und  Pfad-
  3765.                     angaben  nicht  mit übergeben  werden) und  ein  Wert un-
  3766.                     gleich  0 (TRUE)  ausgegeben. Größe,  Datum/ Uhrzeit  und
  3767.                     Eigenschaften der gefundenen Datei können über die  Funk-
  3768.                     tionen  filesize, filetime  und fileattr  abgefrufen wer-
  3769.                     den. Wird keine  Datei gefunden, die  den Dateispezifika-
  3770.                     tionen entspricht, so  wird der Wert  0 (FALSE)  ausgege-
  3771.                     ben.
  3772.  
  3773.                     Wenn <filespec> leer  ist (""), sucht  filefind nach  der
  3774.                     nächsten passenden  Datei. Beachten Sie  bitte, daß  dies
  3775.                     nicht  funktioniert,  wenn  zwischenzeitlich  Dateigröße,
  3776.                     -zeit  oder  -eigenschaften mit  Angaben  zum  Dateinamen
  3777.                     abgerufen werden, da für  Suchen und Speichern der  glei-
  3778.                     che Puffer benutzt wird.
  3779.  
  3780.       Ausgabewert   Wenn eine  Datei gefunden  wird, die  den Spezifikationen
  3781.                     entspricht, wird  ein Wert ungleich  0 (TRUE) ausgegeben,
  3782.                     andernfalls 0 (FALSE).
  3783.  
  3784.       Siehe auch    filesize, filetime, fileattr
  3785.  
  3786.  
  3787.  
  3788.  
  3789.  
  3790.  
  3791.  
  3792.  
  3793.  
  3794.                                       - 57 -
  3795.  
  3796.  
  3797.  
  3798.       Beispiel      // Alle normalen Dateien des aktuellen
  3799.                     // Verzeichnisses anzeigen
  3800.                     str buf[16] = "*.*";
  3801.                     while (filefind(fspec, 0, buf) !=0)
  3802.                      {
  3803.                     prints(buf);
  3804.                     // gefundene Datei anzeigen
  3805.                     fspec = "";
  3806.                     // damit wir weitere Dateien suchen können
  3807.                      }
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.                                       - 58 -
  3861.  
  3862.  
  3863.  
  3864.       filesize
  3865.  
  3866.       Aufbau        filesize(str <filespec>);
  3867.  
  3868.       Beschreibung  Die Funktion filesize gibt  die Größe der  spezifizierten
  3869.                     Datei in Bytes aus.  <filespec> steht für den  Dateinamen
  3870.                     und  kann  Laufwerks-  und Verzeichnisangaben  sowie  die
  3871.                     DOS-Wildcard-Zeichen * und ? enthalten.
  3872.  
  3873.                     Wenn <filespec> leer ist (""),  wird  die Größe der letz-
  3874.                     ten  mit filefind  gefundenen Datei  ausgegeben. Beachten
  3875.                     Sie bitte, daß nach  zwischenzeitlichem Abrufen von  Zei-
  3876.                     ten oder Eigenschaften  spezifizierter Dateien die  Größe
  3877.                     der zuletzt so gefundenen  Datei ausgegeben wird, da  sie
  3878.                     im gleichen Puffer stehen.
  3879.  
  3880.       Ausgabewert   Es wird ein  Integer-Wert ausgegeben, der  der Größe  der
  3881.                     angegebenen Datei in Bytes entspricht, bzw.  der Wert -1,
  3882.                     wenn die Datei nicht gefunden werden konnte.
  3883.  
  3884.       Siehe auch    filefind, filetime, fileattr
  3885.  
  3886.       Beispiel      str filespec[24] = "*.*", buf[12];
  3887.                     int size;
  3888.                     siz = filesize("TELIX.EXE");
  3889.                          //Größe der Datei TELIX.EXE ausgeben
  3890.  
  3891.                          // Größe aller Dateien des aktuellen
  3892.                          // Verzeichnisses addieren
  3893.                     siz = 0;
  3894.                     while (filefind(filespec, 0 buf) != 0)
  3895.                          //bis zur letzten Datei
  3896.                      {
  3897.                       siz = siz + filesize("");
  3898.                       filespec = "";
  3899.                          // Größe der letzten mit file
  3900.                          // find gefundenen Datei ausgeben.
  3901.                          // Bei Folgeaufrufen muß
  3902.                          // filespec "" sein, damit
  3903.                          // weitere Dateien gesucht
  3904.                          // werden können.
  3905.                            }
  3906.  
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915.  
  3916.  
  3917.  
  3918.  
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.                                       - 59 -
  3927.  
  3928.  
  3929.  
  3930.       filetime
  3931.  
  3932.       Aufbau        filetime(str <filespec>);
  3933.  
  3934.       Beschreibung  Die Funktion  filetime bewirkt die Ausgabe von Datum/Zeit
  3935.                     der  spezifizierten Datei. <filespec>  steht für  den Da-
  3936.                     teinamen und kann  Laufwerks- und Verzeichnisangaben  so-
  3937.                     wie die DOS-Wildcard- Zeichen * und ? enthalten.
  3938.  
  3939.                     Ausgegeben wird der  Zeitpunkt der letzten  Dateibearbei-
  3940.                     tung   als Anzahl der Sekunden, die  seit dem 1.1.70 ver-
  3941.                     gangen  sind. Diese  Datumsform kann  bei  den Funktionen
  3942.                     date, time, tyear,  tmonth, tday, thour, tmin, tsec u. a.
  3943.                     benutzt werden.
  3944.  
  3945.                     Wenn  <filespec> leer  ist, wird  Datum/Zeit der  letzten
  3946.                     mit  filefind gefundenen  Datei ausgegeben.  Beachten Sie
  3947.                     bitte,  daß  nach zwischenzeitlichem  Abrufen  von  Größe
  3948.                     oder Eigenschaften spezifizierter Dateien  Datum/Zeit der
  3949.                     letzten  so  gefundenen  Datei  ausgegeben  wird, da  der
  3950.                     gleiche Puffer verwendet wird.
  3951.  
  3952.       Ausgabewert   Es wird  ein Integer-Wert ausgegeben, der  für Datum/Zeit
  3953.                     der  angegebenen  Datei steht,  bzw. -1,  wenn  die Datei
  3954.                     nicht gefunden werden konnte.
  3955.  
  3956.       Siehe auch    filefind, filesize, fileattr
  3957.  
  3958.       Beispiel      int time;
  3959.                     str s[16];
  3960.  
  3961.                     time = filesize("TELIX.EXE");
  3962.                     if (time == -1)
  3963.                        prints(",TELIX.EXE' nicht gefunden!");
  3964.                      else
  3965.                        {
  3966.                         printsc("TELIX.EXE wurde erzeugt am ");
  3967.                         time(time, s);
  3968.                         printsc(s);
  3969.                         printsc(" um ");
  3970.                         date(time, s);
  3971.                         printsc(s);
  3972.                        }
  3973.  
  3974.                      // Bei folgendem Beispiel wird davon ausgegangen,
  3975.                      // daß beide Dateien existieren:
  3976.                      if (filetime("FILE1") < filetime("FILE2"))
  3977.                        prints("FILE1 ist älter als FILE2";
  3978.                      else
  3979.                        prints("FILE1 ist neuer als FILE2");
  3980.  
  3981.  
  3982.  
  3983.  
  3984.  
  3985.  
  3986.  
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992.                                       - 60 -
  3993.  
  3994.  
  3995.  
  3996.       flushbuf
  3997.  
  3998.       Aufbau        flushbuf();
  3999.  
  4000.       Beschreibung  Die Funktion  flushbuf löscht etwaige  im Telix-Empfangs-
  4001.                     speicher anstehende  Zeichen.  Dies kann  z. B.  nützlich
  4002.                     sein, um  ungewollt empfangene  Zeichen (z.B.  durch Lei-
  4003.                     tungsstörungen) zu unterdrücken.
  4004.  
  4005.       Ausgabewert   keiner
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038.  
  4039.  
  4040.  
  4041.  
  4042.  
  4043.  
  4044.  
  4045.  
  4046.  
  4047.  
  4048.  
  4049.  
  4050.  
  4051.  
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.  
  4058.                                       - 61 -
  4059.  
  4060.  
  4061.  
  4062.       fnstrip
  4063.  
  4064.       Aufbau        fnstrip(str <filename>, int <specifier>, str <target>);
  4065.  
  4066.       Beschreibung  Die  Funktion fnstrip  ermöglicht die  Auswahl bestimmter
  4067.                     Teile eines Dateinamens. Unter MS-DOS kann  ein Dateiname
  4068.                     aus  bis zu  vier Teilen  bestehen: Laufwerk,  Pfad, Name
  4069.                     und  Erweiterung  (z.  B.:  C:\TELIX\TELIX.FON).  fnstrip
  4070.                     bearbeitet den als <filename>  angegebenen Dateinamen und
  4071.                     setzt  eine  von  <specifier> abhängige  Kombination  der
  4072.                     vier Namensteile  in die Zeichenkette  <target>. Folgende
  4073.                     Werte können <specifier>  mit entsprechenden  Ergebnissen
  4074.                     zugeordnet werden:
  4075.  
  4076.                     0    Voller Dateiname
  4077.                     1    Alles außer Laufwerk
  4078.                     2    Laufwerk, Name und Erweiterung
  4079.                     3    Name und Erweiterung
  4080.                     4    Laufwerk, Pfad und Name (ohne Erweiterung)
  4081.                     5    Pfad und Name (ohne Erweiterung)
  4082.                     6    Laufwerk und Name (ohne Erweiterung)
  4083.                     7    Nur der Name
  4084.                     12   Nur Laufwerk und Pfad
  4085.                     13   Nur der Pfad
  4086.                     14   Nur das Laufwerk
  4087.  
  4088.       Ausgabewert   keiner
  4089.  
  4090.       Siehe auch    filefind
  4091.  
  4092.       Beispiel      str filename[64], shortname[16]
  4093.                     gets(filename, 64);
  4094.                          // Frage nach einem Dateinamen
  4095.                     fnstrip(filename, 3, shortname);
  4096.                          // Nur Name und Erweiterung
  4097.                          // werden übernommen.
  4098.  
  4099.  
  4100.  
  4101.  
  4102.  
  4103.  
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109.  
  4110.  
  4111.  
  4112.  
  4113.  
  4114.  
  4115.  
  4116.  
  4117.  
  4118.  
  4119.  
  4120.  
  4121.  
  4122.  
  4123.  
  4124.                                       - 62 -
  4125.  
  4126.  
  4127.  
  4128.       fopen
  4129.  
  4130.       Aufbau        fopen(str <name>, str <mode>);
  4131.  
  4132.       Beschreibung  Man verwendet  die Funktion  fopen, um eine  Disketten-/-
  4133.                     Plattendatei  für Ein- und/oder  Ausgaben zu  öffnen. Die
  4134.                     zu  öffnende Datei  wird unter  <name> angegeben.  <mode>
  4135.                     steht  für  eine  Zeichenkette,  die  angibt,  zu welchem
  4136.                     Zweck  die Datei  geöffnet werden  soll. Für  <mode> sind
  4137.                     folgende Eingaben zulässig:
  4138.  
  4139.                   "r"    Öffnet für Lesezugriffe (read)
  4140.                   "w"    Öffnet für Schreibzugriffe (write); verwirft   evtl.
  4141.                          existierende Dateien mit gleichem Namen
  4142.                   "a"    Öffnet für Fortsetzungen (Eingaben am Dateiende (ap-
  4143.                          pend)). Richtet die  Datei ein, wenn sie  noch nicht
  4144.                          existiert.
  4145.                   "r+"   Öffnet für Aus- und Eingaben. Positioniert   den  Da
  4146.                          teizeiger an den Dateianfang. (Die Datei muß bereits
  4147.                          existieren.)
  4148.                   "w+"   Öffnet für Ein- und Ausgaben. Wenn die Datei bereits
  4149.                          existiert, wird Ihr Inhalt zerstört.
  4150.                   "a+"   Öffnet für  Ausgaben und Fortsetzungen.  Richtet die
  4151.                          Datei ein, wenn sie noch nicht existiert.
  4152.  
  4153.                   Wenn eine Datei für Ein- und  Ausgaben geöffnet ist  (Modus
  4154.                   "r+", "w+"  oder "a+"),  kann mit der  Funktion fseek,  die
  4155.                   Betriebsart gewechselt werden.
  4156.  
  4157.       Ausgabewert Die   Funktion  fopen  gibt   ein  ,handle'  aus,  das  der
  4158.                   Integer-Zahl entspricht, mit  der auf diese Datei zugegrif-
  4159.                   fen werden kann,  bis sie wieder geschlossen wird. Es  wird
  4160.                   0  ausgegeben, wenn  die Datei  nicht geöffnet  werden kann
  4161.                   (weil sie nicht existiert, wegen eines  Disketten-/Platten-
  4162.                   fehlers  oder   weil  keine  ,filehandles'  mehr  verfügbar
  4163.                   sind).  Es dürfen  maximal 8  Dateien gleichzeitig geöffnet
  4164.                   sein.  Es ist wichtig,  nicht mehr benötigte Dateien recht-
  4165.                   zeitig  zu  schließen,   da  ansonsten  die  8  verfügbaren
  4166.                   ,handles' schnell verbraucht sein können.
  4167.  
  4168.       Siehe auch  fclose
  4169.  
  4170.       Beispiel    int f;
  4171.                   f = fopen("data.txt", "r");
  4172.                      // Öffnen der Datei für Ausgaben
  4173.                   if (f == 0)
  4174.                    prints("Fehler beim Öffnen der Datei!");
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.                                       - 63 -
  4191.  
  4192.  
  4193.  
  4194.       fputc
  4195.  
  4196.       Aufbau        fputc(int <c>, int <fh>);
  4197.  
  4198.       Beschreibung  Die  Funktion  fputc schreibt  ein Zeichen  in  die Datei
  4199.                     <fh>. <c> ist das zu schreibende Zeichen.
  4200.  
  4201.       Ausgabewert   Es  wird  das  geschriebene  Zeichen  ausgegeben,  es sei
  4202.                     denn,  es tritt  ein Fehler  auf, dann  wird der  Wert -1
  4203.                     ausgegeben.
  4204.  
  4205.       Siehe auch    fputs, fgetc
  4206.  
  4207.       Beispiel      int f, i;
  4208.                     str teststr[] = "Dies ist eine Testzeichenkette";
  4209.                     f = fopen("test.dat", "w");
  4210.                     for (i = 0; i < 21; ++i)
  4211.                          // Zeichenkette Zeichen für
  4212.                       fputc(subchr(teststr, i), f); 
  4213.                          // Zeichen in Datei einsetzen
  4214.                        
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232.  
  4233.  
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.                                       - 64 -
  4257.  
  4258.  
  4259.  
  4260.       fputs
  4261.  
  4262.       Aufbau        fputs(str <s>, int <fh>);
  4263.  
  4264.       Beschreibung  Die  Funktion  fputs  schreibt eine  Zeichenkette  in die
  4265.                     Datei <fh>. Die Zeichenkette kann  bis zu 512 Bytes  lang
  4266.                     sein   (alle   Zeichenketten  schließen   mit   einer  0;
  4267.                     hierdurch wird erreicht,  daß alle Zeichen  vor dieser  0
  4268.                     geschrieben werden. Die 0 wird nicht geschrieben).
  4269.  
  4270.       Ausgabewert   Eine 0 wird ausgegeben,  wenn das Einsetzen der  Zeichen-
  4271.                     kette  erfolgreich  verlief,  ein Wert  ungleich  0, wenn
  4272.                     nicht.
  4273.  
  4274.       Siehe auch    fputc, fgets
  4275.  
  4276.       Beispiel      int f, i;
  4277.  
  4278.                     f = fopen("test.dat", "w>");
  4279.                     for (i = 0; i < 100; ++i)
  4280.                          // 100 mal "Hallo" plus Zeilenvorschub
  4281.                      fputs("Hallo^M^J", f);
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.  
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.                                       - 65 -
  4323.  
  4324.  
  4325.  
  4326.       fread
  4327.  
  4328.       Aufbau        fread(str <buf>, int <count>, int <fh>);
  4329.  
  4330.       Beschreibung  Mit der  Funktion fread werden  bis zu <count>  Bytes aus
  4331.                     der Arbeitsdatei  <fh>  gelesen. Die  Zeichen werden  der
  4332.                     Variable  <buf> zugeordnet,  die entsprechend  groß genug
  4333.                     sein muß.
  4334.  
  4335.       Ausgabewert   Es  wird  die Anzahl  der  tatsächlich gelesenen  Zeichen
  4336.                     ausgegeben;  diese  kann unter  <count> liegen,  wenn ein
  4337.                     Fehler auftritt oder das Dateiende erreicht wird.
  4338.  
  4339.                     Die Funktionen ferror und feof können  benutzt werden, um
  4340.                     einen aufgetretenen Fehler von  einem erreichten Dateien-
  4341.                     de zu unterscheiden.
  4342.  
  4343.       Siehe auch    fwrite
  4344.  
  4345.       Beispiel      int f;
  4346.                     str buffer[40];
  4347.                     f = fopen("test.dat", "r");
  4348.                     fseek(f, 1000, 0);
  4349.                          // Nach Abstand 1000 
  4350.                          // 40 Datenbytes einlesen
  4351.                     fread(buffer, 40, f);
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.  
  4364.  
  4365.  
  4366.  
  4367.  
  4368.  
  4369.  
  4370.  
  4371.  
  4372.  
  4373.  
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379.  
  4380.  
  4381.  
  4382.  
  4383.  
  4384.  
  4385.  
  4386.  
  4387.  
  4388.                                       - 66 -
  4389.  
  4390.  
  4391.  
  4392.       frename
  4393.  
  4394.       Aufbau        frename(str <alt>, str <neu>);
  4395.  
  4396.       Beschreibung  Die  Funktion frename  dient der  Umbennung  einer Datei.
  4397.                     Die  Datei mit dem  Namen <alt> wird  in <neu> umbenannt.
  4398.                     Pfade  und  Laufwerksnamen dürfen  mit  dem Originalnamen
  4399.                     angegeben werden, vor  dem neuen Namen  dürfen sie  nicht
  4400.                     angegeben werden. Die umbenannte  Datei verbleibt im Ori-
  4401.                     ginallaufwerk und -verzeichnis.  Groß- oder  Kleinschrei-
  4402.                     bung wird nicht unterschieden.
  4403.  
  4404.       Ausgabewert   Wenn  die  Funktion  erfolgreich ausgeführt  worden  ist,
  4405.                     wird eine 0 ausgegeben, sonst ein Wert ungleich 0.
  4406.  
  4407.       Beispiel      frename("\TELIX\TELIX.CAP", "OLDTLX.CAP");
  4408.  
  4409.  
  4410.  
  4411.  
  4412.  
  4413.  
  4414.  
  4415.  
  4416.  
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.  
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449.  
  4450.  
  4451.  
  4452.  
  4453.  
  4454.                                       - 67 -
  4455.  
  4456.  
  4457.  
  4458.       fseek
  4459.  
  4460.       Aufbau        fseek(int <fh>, int <offset>, int <origin>);
  4461.  
  4462.       Beschreibung  Die Funktion  fseek positioniert  den Dateizeiger in  der
  4463.                     Datei <fh>. Es wird die Position angesteuert,  an der die
  4464.                     nächste Ein-  oder Ausgabe  erfolgen soll.  <offset> ent-
  4465.                     spricht  dem Abstand  zu  <origin>. Zulässige  Werte  für
  4466.                     <origin> sind:
  4467.  
  4468.                     0    Dateianfang
  4469.                     1    Aktuelle Position
  4470.                     2    Dateiende
  4471.  
  4472.                     Der Cursor kann an jede beliebige Stelle  der Datei posi-
  4473.                     tioniert werden und sogar  hinter das Dateiende (wordurch
  4474.                     die Datei erweitert  wird). Nicht zulässig  ist der  Ver-
  4475.                     such, den Cursor vor den Dateianfang zu setzen.
  4476.  
  4477.       Ausgabewert   Wenn  die  Funktion  erfolgreich  ausgeführt  wurde, wird
  4478.                     eine 0 ausgegeben, anderenfalls ein Wert ungleich 0.
  4479.  
  4480.       Siehe auch    ftell
  4481.  
  4482.       Beispiel      int f;
  4483.                     f = fopen("test.dat", "r");
  4484.                     fseek(f, 0, 0);    // Auf Abstand 0 gehen
  4485.                     fseek(f, 1000, 0); // Auf Abstand 1000 gehen
  4486.                     fseek(f, -5, 1)    // 5 Stellen zurückgehen
  4487.                     fseek(f, 0, 2);    // Zum Dateiende gehen
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508.  
  4509.  
  4510.  
  4511.  
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.                                       - 68 -
  4521.  
  4522.  
  4523.  
  4524.       ftell
  4525.  
  4526.       Aufbau         ftell(int <fh>);
  4527.  
  4528.       Beschreibung  Die  Funktion  ftell gibt  die aktuelle  Position  in der
  4529.                     Datei <fh> aus.
  4530.  
  4531.       Ausgabewert   Ausgabewert  ist ein  Integer-Wert wie  oben beschrieben.
  4532.                     Wenn ein Fehler auftritt, wird -1 ausgegeben.
  4533.  
  4534.       Siehe auch    fseek
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.                                       - 69 -
  4587.  
  4588.  
  4589.  
  4590.       fwrite
  4591.  
  4592.       Aufbau        fwrite(str <buf>, int <count>, int <fh>);
  4593.  
  4594.       Beschreibung  Mit der  Funktion fwrite werden  Bytes in die  Datei <fh>
  4595.                     geschrieben.  Aus <buf> werden  soviele Bytes,  wie unter
  4596.                     <count> vorgegeben, eingelesen.
  4597.  
  4598.       Ausgabewert   Es wird  die Anzahl  der tatsächlich  geschriebenen Bytes
  4599.                     ausgegeben, die kleiner sein  kann als <count>, wenn  ein
  4600.                     Fehler auftrat.
  4601.  
  4602.       Siehe auch    fread
  4603.  
  4604.       Beispiel      int f;
  4605.                     str buffer[] = "1234567890123456789012345";
  4606.                     f = fopen("test.dat", "w");
  4607.                     fwrite(buffer, 25, f);
  4608.                       // Zeichenkette in Datei schreiben
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.  
  4628.  
  4629.  
  4630.  
  4631.  
  4632.  
  4633.  
  4634.  
  4635.  
  4636.  
  4637.  
  4638.  
  4639.  
  4640.  
  4641.  
  4642.  
  4643.  
  4644.  
  4645.  
  4646.  
  4647.  
  4648.  
  4649.  
  4650.  
  4651.  
  4652.                                       - 70 -
  4653.  
  4654.  
  4655.  
  4656.       get_baud
  4657.  
  4658.       Aufbau        get_baud();
  4659.  
  4660.       Beschreibung  Durch die  Funktion get_baud wird ein Integer-Wert ausge-
  4661.                     geben,  der der aktuellen  Baudrate am derzeitigen Kommu-
  4662.                     nikations-Port entspricht (300 bis 115200).
  4663.  
  4664.       Ausgabewert   Wie oben beschrieben.
  4665.  
  4666.       Siehe auch    get_parity, get_datab, get_stopb, get_port
  4667.  
  4668.       Beispiel      prints("Die aktuelle Baudrate ist ");
  4669.                     printn(get_baud));
  4670.                     prints("");
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678.  
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.  
  4694.  
  4695.  
  4696.  
  4697.  
  4698.  
  4699.  
  4700.  
  4701.  
  4702.  
  4703.  
  4704.  
  4705.  
  4706.  
  4707.  
  4708.  
  4709.  
  4710.  
  4711.  
  4712.  
  4713.  
  4714.  
  4715.  
  4716.  
  4717.  
  4718.                                       - 71 -
  4719.  
  4720.  
  4721.  
  4722.       get_datab
  4723.  
  4724.       Aufbau        get_datab();
  4725.  
  4726.       Beschreibung  Die Funktion get_datab gibt  die am aktuellen  Kommunika-
  4727.                     tions-Port gesetzten Datenbits aus (7 oder 8).
  4728.  
  4729.       Ausgabewert   Wie oben beschrieben.
  4730.  
  4731.       Siehe auch    get_baud, get_parity, get_stopb, get_port
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744.  
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764.  
  4765.  
  4766.  
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.                                       - 72 -
  4785.  
  4786.  
  4787.  
  4788.       getenv
  4789.  
  4790.       Aufbau        getenv(str <varname>, str <target>);
  4791.  
  4792.       Beschreibung  Mit der  Funktion getenv  kann das DOS-Environment  abge-
  4793.                     sucht  werden. <varname> ist  der Name  der DOS-Variablen
  4794.                     nach der gesucht werden  soll, <target> ist die  Zeichen-
  4795.                     kette, die unter dem Namen abgespeichert werden soll.
  4796.  
  4797.       Ausgabewert   Wenn  die  Funktion  erfolgreich ausgeführt  worden  ist,
  4798.                     wird  ein  Wert ungleich  0 (TRUE)  ausgegeben, ansonsten
  4799.                     wird eine 0 ausgegeben.
  4800.  
  4801.       Beispiel      str value[64];
  4802.                     if(getenv("TELIX", value))
  4803.                          // wenn die Umgebungsvariable 
  4804.                      prints(value)
  4805.                          // existiert, wird value ausgegeben
  4806.  
  4807.  
  4808.  
  4809.  
  4810.  
  4811.  
  4812.  
  4813.  
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828.  
  4829.  
  4830.  
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838.  
  4839.  
  4840.  
  4841.  
  4842.  
  4843.  
  4844.  
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.                                       - 73 -
  4851.  
  4852.  
  4853.  
  4854.       get_parity
  4855.  
  4856.       Aufbau        get_parity();
  4857.  
  4858.       Beschreibung  Die Funktion  get_parity gibt einen Integer-Wert aus, der
  4859.                     für die aktuelle Paritätseinstellung  am Kommunikations--
  4860.                     Port steht.
  4861.  
  4862.       Ausgabewert   Es gibt folgende mögliche Ausgabewerte:
  4863.  
  4864.                     0    Keine Parität
  4865.                     1    Gerade Parität
  4866.                     2    Ungerade Parität
  4867.  
  4868.       Siehe auch    get_baud, get_datab, get_stopb, get_port
  4869.  
  4870.  
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876.  
  4877.  
  4878.  
  4879.  
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.  
  4892.  
  4893.  
  4894.  
  4895.  
  4896.  
  4897.  
  4898.  
  4899.  
  4900.  
  4901.  
  4902.  
  4903.  
  4904.  
  4905.  
  4906.  
  4907.  
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.                                       - 74 -
  4917.  
  4918.  
  4919.  
  4920.       get_port
  4921.  
  4922.       Aufbau        get_port();
  4923.  
  4924.       Beschreibung  Die Funktion get_port gibt  die Nummer (1 bis 8)  des ak-
  4925.                     tuell benutzten Kommunikations- Ports aus.
  4926.  
  4927.       Ausgabewert   Wie oben beschrieben.
  4928.  
  4929.       Siehe auch    get_baud, get_datab, get_parity, get_stopb
  4930.  
  4931.       Beispiel      prints("Ausgewählte Schnittstelle: COM");
  4932.                     printn(get_port());
  4933.                     prints("");
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979.  
  4980.  
  4981.  
  4982.                                       - 75 -
  4983.  
  4984.  
  4985.  
  4986.       get_stopb
  4987.  
  4988.       Aufbau        get_stopb();
  4989.  
  4990.       Beschreibung  Die Funktion get_stopb gibt die Anzahl  der am Kommunika-
  4991.                     tions-Port gesetzten Stopbits aus (1 oder 2).
  4992.  
  4993.       Ausgabewert   Wie oben beschrieben.
  4994.  
  4995.       Siehe auch    get_baud, get_datab, get_parity, get_port
  4996.  
  4997.  
  4998.  
  4999.  
  5000.  
  5001.  
  5002.  
  5003.  
  5004.  
  5005.  
  5006.  
  5007.  
  5008.  
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042.  
  5043.  
  5044.  
  5045.  
  5046.  
  5047.  
  5048.                                       - 76 -
  5049.  
  5050.  
  5051.  
  5052.       gets
  5053.  
  5054.       Aufbau        gets(str <buffer>, int <max>);
  5055.  
  5056.       Beschreibung  Die  Funktion gets  ermöglicht dem  Benutzer  die Eingabe
  5057.                     einer vollständigen  Zeichenkette, wobei er  die Pfeilta-
  5058.                     sten zum Editieren benutzen kann. <buffer>  steht für die
  5059.                     Zeichenkettenvariable, in die die  Zeichenkette geschrie-
  5060.                     ben werden  soll. <max>  ist die  maximale Zeichenanzahl,
  5061.                     die der Benutzer  eingeben darf  (0 bis  80). Während  er
  5062.                     die Zeichenkette eingibt, kann der Benutzer  sie mit Hil-
  5063.                     fe der Cursortasten Pfeil-nach-links,  Pfeil-nach-rechts,
  5064.                     Strg- Pfeil-nach-links und  Strg-Pfeil-nach- rechts  edi-
  5065.                     tieren  und den  Einfügemodus  durch  Drücken der  Einfg-
  5066.                     Taste ein- und ausschalten, Die Eingabe der  Zeichenkette
  5067.                     wird durch Drücken  von Enter (Carriage  Return bei  man-
  5068.                     chen  Rechnern) abgeschlossen. Mit Escape kann der Benut-
  5069.                     zer die Eingabe  abbrechen. In diesem Fall  wird die Zei-
  5070.                     chenkette die Länge 0 haben.
  5071.  
  5072.       Ausgabewert   Es wird die Anzahl der vom  Benutzer eingegebenen Zeichen
  5073.                     ausgegeben. Drückt  der Benutzer Escape,  um die  Eingabe
  5074.                     abzubrechen, wird -1 ausgegeben.
  5075.  
  5076.       Siehe auch    getsxy
  5077.  
  5078.       Beispiel      int n
  5079.                     str password[8];
  5080.                     printsc("Geben Sie ein Passwort ein: ");
  5081.                     n = gets(password, 8);
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098.  
  5099.  
  5100.  
  5101.  
  5102.  
  5103.  
  5104.  
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.                                       - 77 -
  5115.  
  5116.  
  5117.  
  5118.       getsxy
  5119.  
  5120.       Aufbau        getsxy(str <targets>, int  <max>, int <y>,  int <y>,  int
  5121.                     <color>);
  5122.  
  5123.       Beschreibung  Die Funktion getsxy ähnelt  der Funktion gets, die  Posi-
  5124.                     tion der  Zeichenkette kann  jedoch mit  x,y spezifiziert
  5125.                     werden, sowie  auch eine Farbeigenschaft.  <buffer> steht
  5126.                     für die  Zeichenkettenvariable, in  die die  Zeichenkette
  5127.                     eingelesen  werden soll. <max> ist die Zeichenanzahl, die
  5128.                     der Benutzer maximal verwenden darf (0 bis 80).  Der Cur-
  5129.                     sor wird sich auf  die Position <x>, <y> stellen  und der
  5130.                     Text wird in der unter <color>  spezifizierten Farbe ein-
  5131.                     gefügt.
  5132.  
  5133.                     Während er  die Zeichenkette  eingibt, kann  der Benutzer
  5134.                     sie mit  Hilfe der Tasten  Pfeil-nach-links, Pfeil-nach--
  5135.                     rechts,  Strg-  Pfeil-nach-links  und   Strg-Pfeil-nach--
  5136.                     rechts editieren und den  Einfügemodus durch Drücken  der
  5137.                     Einfg-Taste  ein- und ausschalten,  Die Eingabe  der Zei-
  5138.                     chenkette wird  durch Drücken von Enter  (Carriage Return
  5139.                     bei manchen Rechnern) abgeschlossen. Mit Escape kann  der
  5140.                     Benutzer die Eingabe abbrechen.  In diesem Fall wird  die
  5141.                     Zeichenkette die Länge 0 haben.
  5142.  
  5143.       Ausgabewert   Es wird die Anzahl der vom  Benutzer eingegebenen Zeichen
  5144.                     ausgegeben.  Drückt der Benutzer  Escape, um  die Eingabe
  5145.                     abzubrechen, so wird -1 ausgegeben.
  5146.  
  5147.       Siehe auch    gets
  5148.  
  5149.       Beispiel      int n;
  5150.                     str filename[64] = "C:\TELIX\TELIX.EXE";
  5151.                          // Benutzer kann den Dateinamen in
  5152.                          // schwarz auf weiß an der
  5153.                          // aktuellen Position eingeben
  5154.                     n = getsxy(filename, 64, getx(), gety(), 112);
  5155.  
  5156.  
  5157.  
  5158.  
  5159.  
  5160.  
  5161.  
  5162.  
  5163.  
  5164.  
  5165.  
  5166.  
  5167.  
  5168.  
  5169.  
  5170.  
  5171.  
  5172.  
  5173.  
  5174.  
  5175.  
  5176.  
  5177.  
  5178.  
  5179.  
  5180.                                       - 78 -
  5181.  
  5182.  
  5183.  
  5184.       getx, gety
  5185.  
  5186.       Aufbau        getx();
  5187.  
  5188.                     gety();
  5189.  
  5190.       Beschreibung  Die Funktion getx gibt die aktuelle  Position des Cursors
  5191.                     auf der x-Achse aus.
  5192.  
  5193.                     Die Funktion gety gibt die aktuelle  Position des Cursors
  5194.                     auf der y-Achse aus.
  5195.  
  5196.       Ausgabewert   Bei der  Funktion getx  wird ein  Wert zwischen 0  (erste
  5197.                     Position  ganz  links)  und   79  (letzte  Position  ganz
  5198.                     rechts) ausgegeben.
  5199.  
  5200.                     Bei der Funktion gety  wird ein Wert zwischen 0  (oberste
  5201.                     Zeile) und 24 (unterste Zeile) ausgegeben.
  5202.  
  5203.       Siehe auch    gotoxy
  5204.  
  5205.  
  5206.  
  5207.  
  5208.  
  5209.  
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.  
  5220.  
  5221.  
  5222.  
  5223.  
  5224.  
  5225.  
  5226.  
  5227.  
  5228.  
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.  
  5246.                                       - 79 -
  5247.  
  5248.  
  5249.  
  5250.       gotoxy
  5251.  
  5252.       Aufbau        gotoxy(int <xpos>, int <ypos>);
  5253.  
  5254.       Beschreibung  Die  Funktion gotoxy  positioniert  den  Cursor  auf  die
  5255.                     Bildschirmkoordinaten, die  mit <xpos> und  <ypos> vorge-
  5256.                     geben werden. Beachten Sie bitte, daß 0,0 die obere  lin-
  5257.                     ke Ecke  des Bildschirms ist. Auf einem Bildschirm für 80
  5258.                     x 25 Zeichen ist 79,24 die untere rechte Ecke.
  5259.  
  5260.       Ausgabewert   keiner
  5261.  
  5262.       Siehe auch    getx, gety
  5263.  
  5264.       Beispiel      gotoxy(0, 0);
  5265.                         // Cursor in obere linke Ecke
  5266.  
  5267.                     gotoxy(79, 24);
  5268.                       // Cursor in untere rechte Ecke
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.  
  5275.  
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289.  
  5290.  
  5291.  
  5292.  
  5293.  
  5294.  
  5295.  
  5296.  
  5297.  
  5298.  
  5299.  
  5300.  
  5301.  
  5302.  
  5303.  
  5304.  
  5305.  
  5306.  
  5307.  
  5308.  
  5309.  
  5310.  
  5311.  
  5312.                                       - 80 -
  5313.  
  5314.  
  5315.  
  5316.       hangup
  5317.  
  5318.       Aufbau        hangup();
  5319.  
  5320.       Beschreibung  Die Funktion  hangup versucht, eine  bestehende Modemver-
  5321.                     bindung abzubrechen, genau wie  bei Drücken von Alt-H  im
  5322.                     Terminalmodus. Hierzu wird zunächst  das Signal DTR abge-
  5323.                     schaltet. Hilft dies nicht, wird die im  Konfigurierungs-
  5324.                     menü definierte  Zeichenkette zum  Auflegen an  das Modem
  5325.                     gesandt.
  5326.  
  5327.       Ausgabewert   Wenn  erfolgreich aufgelegt  wurde,  erfolgt die  Ausgabe
  5328.                     eines Wertes ungleich 0 (TRUE), ansonsten  wird 0 (FALSE)
  5329.                     ausgegeben.
  5330.  
  5331.  
  5332.  
  5333.  
  5334.  
  5335.  
  5336.  
  5337.  
  5338.  
  5339.  
  5340.  
  5341.  
  5342.  
  5343.  
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.  
  5354.  
  5355.  
  5356.  
  5357.  
  5358.  
  5359.  
  5360.  
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367.  
  5368.  
  5369.  
  5370.  
  5371.  
  5372.  
  5373.  
  5374.  
  5375.  
  5376.  
  5377.  
  5378.                                       - 81 -
  5379.  
  5380.  
  5381.  
  5382.       helpscreen
  5383.  
  5384.       Aufbau        helpscreen();
  5385.  
  5386.       Beschreibung  Die Funktion  helpscreen bewirkt  die Anzeige des  Hilfe-
  5387.                     Bildschirms, wie  nach Drücken  der entsprechenden  Taste
  5388.                     im Terminalmodus.
  5389.  
  5390.       Ausgabewert   keiner
  5391.  
  5392.  
  5393.  
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.  
  5400.  
  5401.  
  5402.  
  5403.  
  5404.  
  5405.  
  5406.  
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421.  
  5422.  
  5423.  
  5424.  
  5425.  
  5426.  
  5427.  
  5428.  
  5429.  
  5430.  
  5431.  
  5432.  
  5433.  
  5434.  
  5435.  
  5436.  
  5437.  
  5438.  
  5439.  
  5440.  
  5441.  
  5442.  
  5443.  
  5444.                                       - 82 -
  5445.  
  5446.  
  5447.  
  5448.       inkey, inkeyw
  5449.  
  5450.       Aufbau        inkey();
  5451.  
  5452.                     inkeyw();
  5453.  
  5454.       Beschreibung  Die  Funktion inkey  gibt ein  Zeichen der  Tastatur aus,
  5455.                     wartet jedoch nicht auf einen Tastendruck. 
  5456.  
  5457.                     Die  Funktion inkeyw  gibt ein  Zeichen der  Tastatur aus
  5458.                     und wartet auf einen Tastendruck,  wenn der Tastaturspei-
  5459.                     cher leer ist.
  5460.  
  5461.                     Beachten Sie bitte, daß  Telix während der Auführung  ei-
  5462.                     ner  Befehlsdatei nach  jedem  Befehl die  Tastatur über-
  5463.                     prüft, um zu erkennen,  ob der Benutzer die  Befehlsdatei
  5464.                     abbrechen will. Um  mit den Funktionen  inkey und  inkeyw
  5465.                     arbeiten zu  können, muß diese  Tastaturprüfung unterbun-
  5466.                     den werden. Das geschieht  durch Setzen der  Systemvaria-
  5467.                     ble _scr_chk_key auf den Wert 0  (FALSE). (Diese Variable
  5468.                     wird unter "Systemvariablen" näher beschrieben).
  5469.  
  5470.       Ausgabewert   inkey  gibt das  erste Zeichen  im Tastaturspeicher  aus,
  5471.                     bzw. 0, wenn dieser leer ist.
  5472.  
  5473.                     inkeyw wartet bis eine  Taste gedrückt wird, wenn im  Ta-
  5474.                     staturspeicher kein  Zeichen  ansteht und  gibt den  ent-
  5475.                     sprechenden Wert aus.
  5476.  
  5477.                     Beide  Funktionen geben auch Werte aus, die nicht zum AS-
  5478.                     CII-Zeichensatz gehören (z. B. den Kode  für Alt-D). Die-
  5479.                     se Werte sind im Anhang beschrieben.
  5480.  
  5481.       Beispiel      chr = inkey();
  5482.  
  5483.  
  5484.  
  5485.  
  5486.  
  5487.  
  5488.  
  5489.  
  5490.  
  5491.  
  5492.  
  5493.  
  5494.  
  5495.  
  5496.  
  5497.  
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.  
  5508.  
  5509.  
  5510.                                       - 83 -
  5511.  
  5512.  
  5513.  
  5514.       inschrs
  5515.  
  5516.       Aufbau        inschrs(str  <source>,  str  <target>,   int  <pos>,  int
  5517.                     <num>;
  5518.  
  5519.       Beschreibung  Die Funktion  inschrs  wird verwendet,  um Zeichen  einer
  5520.                     Zeichenkette an einer bestimmten  Position in eine andere
  5521.                     Zeichenkette  einzufügen,  wobei vorhandene  Zeichen nach
  5522.                     rechts  verschoben  werden.  Es werden  die  Zeichen  aus
  5523.                     <source> nach <target> übertragen,  und zwar mit dem  un-
  5524.                     ter <pos> definierten  Abstand. Beachten  Sie bitte,  daß
  5525.                     die  Abstände von  Zeichenketten mit  0 beginnen,  so daß
  5526.                     das erste Zeichen  den Abstand 0 hat,  das zweite 1  usw.
  5527.                     Es  werden nur  <num>  Zeichen  eingefügt und  vorhandene
  5528.                     Zeichen nach rechts verschoben (sie gehen verloren,  wenn
  5529.                     sie außerhalb  des für die Zeichenkette  verfügbaren Rau-
  5530.                     mes gelangen).
  5531.  
  5532.       Ausgabewert   keiner
  5533.  
  5534.       Siehe auch    copystr, copychrs
  5535.  
  5536.       Beispiel      str test[24] = "Goodbye";
  5537.                          // "Hallo" am Anfang der existierenden
  5538.                          // Zeichenkette einfügen
  5539.                     inschrs("Hallo ", test, 0, 6);
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.  
  5552.  
  5553.  
  5554.  
  5555.  
  5556.  
  5557.  
  5558.  
  5559.  
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565.  
  5566.  
  5567.  
  5568.  
  5569.  
  5570.  
  5571.  
  5572.  
  5573.  
  5574.  
  5575.  
  5576.                                       - 84 -
  5577.  
  5578.  
  5579.  
  5580.       isalnum - isupper
  5581.  
  5582.       Aufbau        isalnum (int <c>);
  5583.                     Auf  Alphanumerik  überprüfen   (,A'-,Z',  ,a'-,z'   oder
  5584.                     ,0'-,9')
  5585.  
  5586.                     isalpha (int <c>);
  5587.                     Auf Buchstaben überprüfen (,A'-,Z' oder ,a'-,z')
  5588.  
  5589.                     isascii (int <c>);
  5590.                     Auf ASCII-Wert überprüfen (0-255)
  5591.  
  5592.                     iscntrl (int <c>);
  5593.                     Auf Steuerzeichen überprüfen (0-31 oder 127)
  5594.  
  5595.                     isdigit (int <c>);
  5596.                     Auf Ziffern überprüfen (,0'-,9')
  5597.  
  5598.                     islower (int <c>);
  5599.       ;             Auf Kleinschreibung überprüfen (,a'- ,z')
  5600.  
  5601.                     isupper (int <c>)
  5602.                     Auf Großschreibung überprüfen(,A'-,Z')
  5603.  
  5604.       Beschreibung  Die oben aufgeführten  Funktionen überprüfen einen  Inte-
  5605.                     ger-Wert  und geben  einen Wert  ungleich 0  (>TRUE) aus,
  5606.                     wenn die zu prüfende Bedingung  erfüllt ist, bzw. 0 (FAL-
  5607.                     SE), wenn sie nicht erfüllt ist.
  5608.  
  5609.                     Mit Ausnahme von isascii haben diese  Funktionen nur gül-
  5610.                     tige Ergebnisse bei  Anwendung auf Integer-Werte  des AS-
  5611.                     CII-Zeichensatzes, d. h. für die isascii erfüllt. ist.
  5612.  
  5613.       Ausgabewert   Es wird  ein Wert ungleich 0 (TRUE)  ausgegeben, wenn die
  5614.                     Testbedingung erfüllt ist, anderenfalls 0 (FALSE).
  5615.  
  5616.  
  5617.  
  5618.  
  5619.  
  5620.  
  5621.  
  5622.  
  5623.  
  5624.  
  5625.  
  5626.  
  5627.  
  5628.  
  5629.  
  5630.  
  5631.  
  5632.  
  5633.  
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.  
  5640.  
  5641.  
  5642.                                       - 85 -
  5643.  
  5644.  
  5645.  
  5646.       is_loaded
  5647.  
  5648.       Aufbau        is_loaded(str <filename>);
  5649.  
  5650.       Beschreibung  Die  Funktion is_loaded wird verwendet, um festzustellen,
  5651.                     ob eine  mit <filename> bezeichnete  SALT-Scriptdatei zur
  5652.                     Zeit geladen ist. Die Befehlsdatei kann  im Speicher ste-
  5653.                     hen, weil  sie mit der  Funktion load_script ausdrücklich
  5654.                     geladen wurde  oder nach einem abgebrochenen  Ablauf noch
  5655.                     im  Speicher stehen. Wenn filename keine Erweiterung ent-
  5656.                     hält, wird automatisch ,.SLC' hinzugefügt.
  5657.  
  5658.       Ausgabewert   Wenn  die  angegebenen  Befehlsdatei im  Speicher  steht,
  5659.                     wird ein Wert ungleich  0 (TRUE) ausgegeben, anderenfalls
  5660.                     0 (FALSE).
  5661.  
  5662.       Siehe auch    load_scr, unload_scr
  5663.  
  5664.       Beispiel      if (!is_loaded("TESTSCR"))
  5665.                          // Überprüfen, ob die Datei 
  5666.                          // im Speicher steht.
  5667.                     load_scr("TESTSCR");
  5668.  
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.  
  5700.  
  5701.  
  5702.  
  5703.  
  5704.  
  5705.  
  5706.  
  5707.  
  5708.                                       - 86 -
  5709.  
  5710.  
  5711.  
  5712.       itos
  5713.  
  5714.       Aufbau        itos(int <value>, str<s>);
  5715.  
  5716.       Beschreibung  Die Funktion  itos überträgt die Ziffern des eingegebenen
  5717.                     Integer-Wertes auf <s>.
  5718.  
  5719.       Ausgabewert   keiner
  5720.  
  5721.       Siehe auch    stoi
  5722.  
  5723.       Beispiel      int chr;
  5724.                     str s[16];
  5725.                     chr = keyinw();
  5726.                          // Tastendruck vom Benutzer abwarten und
  5727.                          // ASCII-Wert dieses Zeichens ausgeben
  5728.                     itos(chr, s);
  5729.                     prints(s);
  5730.  
  5731.  
  5732.  
  5733.  
  5734.  
  5735.  
  5736.  
  5737.  
  5738.  
  5739.  
  5740.  
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747.  
  5748.  
  5749.  
  5750.  
  5751.  
  5752.  
  5753.  
  5754.  
  5755.  
  5756.  
  5757.  
  5758.  
  5759.  
  5760.  
  5761.  
  5762.  
  5763.  
  5764.  
  5765.  
  5766.  
  5767.  
  5768.  
  5769.  
  5770.  
  5771.  
  5772.  
  5773.  
  5774.                                       - 87 -
  5775.  
  5776.  
  5777.  
  5778.       keyget
  5779.  
  5780.       Aufbau        keyget(int <key>, int<table>, str <buffer>;
  5781.  
  5782.       Beschreibung  Die Funktion  keyget wird verwendet, um nachzusehen, wel-
  5783.                     cher  Text einer  Taste zugeordnet  ist. <key>  steht für
  5784.                     einen  Integer-Wert,  der  einer  bestimmten  Taste  ent-
  5785.                     spricht  (wie im  Anhang  beschrieben). Der  dieser Taste
  5786.                     zugewiesenen  Makrotext  wird in  die  Variable  <buffer>
  5787.                     geschrieben.  Telix führt  ständig zwei Tabellen  für Ta-
  5788.                     stenmakrodifinierungen, nämlich eine Benutzertabelle  und
  5789.                     eine Terminaltabelle, die immer  dann geladen wird,  wenn
  5790.                     das  aktuelle Terminal gewechselt  werden soll.  Ist <ta-
  5791.                     ble> 0, wird  angenommen, daß es sich  um eine Taste  aus
  5792.                     der  Benutzertabelle handelt,  wenn  <table> 1  ist, wird
  5793.                     sie der Terminaltabelle zugeordnet.
  5794.  
  5795.       Ausgabewert   keiner
  5796.  
  5797.       Siehe auch    keyset, keyload, keysave
  5798.  
  5799.  
  5800.       Beispiel      str s[100];
  5801.                     prints("Text, der Taste F1 zugewiesen ist:)";
  5802.                     keyget(0x3a00, 0, s);
  5803.                     prints(s);
  5804.  
  5805.  
  5806.  
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.  
  5816.  
  5817.  
  5818.  
  5819.  
  5820.  
  5821.  
  5822.  
  5823.  
  5824.  
  5825.  
  5826.  
  5827.  
  5828.  
  5829.  
  5830.  
  5831.  
  5832.  
  5833.  
  5834.  
  5835.  
  5836.  
  5837.  
  5838.  
  5839.  
  5840.                                       - 88 -
  5841.  
  5842.  
  5843.  
  5844.       keyload
  5845.  
  5846.       Aufbau        keyload(str <fname>, int <table>);
  5847.  
  5848.       Beschreibung  Die Funktion keyload  wird verwendet, um  eine Datei  mit
  5849.                     Tastatur-Makrodefinierungen nach Telix zu  laden. <fname>
  5850.                     ist der Name der  Zuweisungsdatei (wenn keine Erweiterung
  5851.                     angegeben  wird, wird  ,.KEY'  angenommen). Telix  behält
  5852.                     immer zwei Zuweisungstabellen im  Speicher: eine ziemlich
  5853.                     konstante Benutzertabelle und  eine Terminaltabelle,  die
  5854.                     sich je  nach Terminaltyp ändert  und die für  das jewei-
  5855.                     lige  Terminal  spezifischen  Tastenzuweisungen  enthält.
  5856.                     Ist  <table> gleich 0, werden  die Zuweisungen in die Be-
  5857.                     nutzertabelle  geladen. Wenn  <table> 1  ist, werden  die
  5858.                     Zuweisungen in die Terminaltabelle geladen.
  5859.  
  5860.       Ausgabewert   Bei Problemen mit dem  Laden der Zuweisungsdatei wird  -1
  5861.                     ausgegeben,  ansonsten   ein  anderer  Wert   ungleich  0
  5862.                     (TRUE).
  5863.  
  5864.       Siehe auch    keysave, keyget, keyset
  5865.  
  5866.       Beispiel      keyload("SPECIAL", 0);
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872.  
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.  
  5880.  
  5881.  
  5882.  
  5883.  
  5884.  
  5885.  
  5886.  
  5887.  
  5888.  
  5889.  
  5890.  
  5891.  
  5892.  
  5893.  
  5894.  
  5895.  
  5896.  
  5897.  
  5898.  
  5899.  
  5900.  
  5901.  
  5902.  
  5903.  
  5904.  
  5905.  
  5906.                                       - 89 -
  5907.  
  5908.  
  5909.  
  5910.       keysave
  5911.  
  5912.       Aufbau        keysave(str <fname>, int <table>);
  5913.  
  5914.       Beschreibung  Die   Funktion  keysave   wird  verwendet,   um  akutelle
  5915.                     Tasten-Makrodefinierungen    auf    Diskette/Platte    zu
  5916.                     sichern. <fname> steht für den Dateinamen,  unter dem die
  5917.                     Definitionen  abgelegt  werden.  Wenn  keine  Erweiterung
  5918.                     angegeben  wird, wird  ,.KEY'  hinzugefügt. Telix  behält
  5919.                     ständig zwei Tastenzuweisungstabellen  im Speicher,  eine
  5920.                     ziemlich konstante Benutzertabelle  und eine  Terminalta-
  5921.                     belle, die je  nach Terminaltyp variiert und die  für das
  5922.                     jeweilige  Terminal  spezifischen Tastenzuweisungen  ent-
  5923.                     hält. Wenn <table> gleich  0 ist, werden die  Zuweisungen
  5924.                     der  Benutzertabelle  gesichert. Wenn  <table>  gleich  1
  5925.                     ist,  werden  die  Zuweisungen  der  Terminaltabelle  ge-
  5926.                     sichert.
  5927.  
  5928.       Ausgabewert   Treten  aus  irgendeinem Grund  Schwierigkeiten  beim Si-
  5929.                     chern auf,  wird  -1 ausgegeben,  ansonsten  ein  anderer
  5930.                     Wert ungleich 0. 
  5931.  
  5932.       Siehe auch    keyload, keyget, keyset
  5933.  
  5934.  
  5935.  
  5936.  
  5937.  
  5938.  
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  
  5945.  
  5946.  
  5947.  
  5948.  
  5949.  
  5950.  
  5951.  
  5952.  
  5953.  
  5954.  
  5955.  
  5956.  
  5957.  
  5958.  
  5959.  
  5960.  
  5961.  
  5962.  
  5963.  
  5964.  
  5965.  
  5966.  
  5967.  
  5968.  
  5969.  
  5970.  
  5971.  
  5972.                                       - 90 -
  5973.  
  5974.  
  5975.  
  5976.       keyset
  5977.  
  5978.  
  5979.       Aufbau        keyset(int <key>, int <table>, str <text>;
  5980.  
  5981.       Beschreibung  Die  Funktion keyset  wird benutzt,  um einer  Taste Text
  5982.                     zuzuweisen. <key>  steht für einen Integer-Wert,  der ei-
  5983.                     ner  bestimmten Taste  entspricht (siehe  Anhang). <text>
  5984.                     wird  der Taste  zugewiesen.  Telix  behält ständig  zwei
  5985.                     Tastenzuweisungstabellen im Speicher, eine  ziemlich kon-
  5986.                     stante Benutzertabelle  und eine Terminaltabelle,  die je
  5987.                     nach  Terminaltyp  variiert und  die für  das   jeweilige
  5988.                     Terminal  spezifischen  Tastenzuweisungen  enthält.   Bei
  5989.                     <table> gleich 0 wird  die Tastenzuweisung in der  Benut-
  5990.                     zertabelle bearbeitet, bei <table> gleich 1  die der Ter-
  5991.                     minaltabelle.
  5992.  
  5993.       Ausgabewert   keiner
  5994.  
  5995.       Siehe auch    keyget, keyload, keysave
  5996.  
  5997.       Beispiel      // Zuweisung für die Taste F1 der Benutzertabelle.
  5998.                     // Beachten Sie bitte, daß eine etwa existierende
  5999.                     // Belegung dieser Taste in der Terminaltabelle
  6000.                     // bevorzugt behandelt würde.
  6001.                     keyset(0x3a00, 0, "Joe Smith");
  6002.  
  6003.  
  6004.  
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.  
  6014.  
  6015.  
  6016.  
  6017.  
  6018.  
  6019.  
  6020.  
  6021.  
  6022.  
  6023.  
  6024.  
  6025.  
  6026.  
  6027.  
  6028.  
  6029.  
  6030.  
  6031.  
  6032.  
  6033.  
  6034.  
  6035.  
  6036.  
  6037.  
  6038.                                       - 91 -
  6039.  
  6040.  
  6041.  
  6042.       loadfon
  6043.  
  6044.       Aufbau        loadfon(str <filename>);
  6045.  
  6046.       Beschreibung  Die  Funktion loadfon lädt das angegebene Anwahlverzeich-
  6047.                     nis. Es muß der  vollständige Name angegeben werden,  et-
  6048.                     waige  Erweiterungen  oder  Laufwerks-/Verzeichnisangaben
  6049.                     dürfen nicht fehlen,  wenn die Datei  nicht im  aktuellen
  6050.                     Verzeichnis steht.
  6051.  
  6052.       Ausgabewert   Wenn  das  Anwahlverzeichnis  erfolgreich geladen  werden
  6053.                     kann, wird ein Wert ungleich 0  (TRUE) ausgegeben. Treten
  6054.                     irgendwelche Fehler auf (Datei existiert  nicht, Lesefeh-
  6055.                     ler, etc.), erfolgt die Ausgabe von 0 (FALSE).
  6056.  
  6057.  
  6058.  
  6059.  
  6060.  
  6061.  
  6062.  
  6063.  
  6064.  
  6065.  
  6066.  
  6067.  
  6068.  
  6069.  
  6070.  
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.  
  6080.  
  6081.  
  6082.  
  6083.  
  6084.  
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101.  
  6102.  
  6103.  
  6104.                                       - 92 -
  6105.  
  6106.  
  6107.  
  6108.       load_scr
  6109.  
  6110.       Aufbau        load_scr(str <filename>);
  6111.  
  6112.       Beschreibung  Wenn  eine Scriptdatei  ausgeführt  wird (entweder,  weil
  6113.                     der Benutzer  sie  im Terminalmodus  ausführen läßt  oder
  6114.                     weil sie von einer  anderen Scriptdatei aufgerufen wird),
  6115.                     wird  sie  gewöhnlich  von  Diskette/Platte  geladen. Die
  6116.                     Funktion  load_scr wird  verwendet,  um eine  Scriptdatei
  6117.                     bereits im voraus zu  laden, damit bei wiederholten  Aus-
  6118.                     führungen  Zeit  gespart wird.  <filename> steht  für den
  6119.                     Namen der  zu ladenden  Scriptdatei. Fehlt eine  Erweite-
  6120.                     rung, wird ,.SLC' angenommen.
  6121.  
  6122.       Ausgabewert   Wenn beim  Laden aus  irgendeinem Grunde  Schwierigkeiten
  6123.                     aufgetreten sind, wird -1  ausgegeben (Datei nicht gefun-
  6124.                     den;  nicht genügend Speicherplatz). Sonst wird ein ande-
  6125.                     rer Wert ungleich 0 (TRUE) ausgeben.
  6126.  
  6127.       Siehe auch    unload_scr, is_loaded
  6128.  
  6129.       Beispiel      int stat;
  6130.                     stat=load_scr("TEST");
  6131.                          // Laden von TEST.SLC
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.  
  6146.  
  6147.  
  6148.  
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154.  
  6155.  
  6156.  
  6157.  
  6158.  
  6159.  
  6160.  
  6161.  
  6162.  
  6163.  
  6164.  
  6165.  
  6166.  
  6167.  
  6168.  
  6169.  
  6170.                                       - 93 -
  6171.  
  6172.  
  6173.  
  6174.       newdir
  6175.  
  6176.       Aufbau        newdir(<directory>);
  6177.  
  6178.       Beschreibung  Die  Funktion newdir  wird  verwendet,  um  das  aktuelle
  6179.                     Laufwerk  und/oder  Verzeichnis zu  wechseln. <directory>
  6180.                     steht für das neue Laufwerk/Verzeichnis.
  6181.  
  6182.       Ausgabewert   Bei erfolgreicher  Ausführung der Funktion wird  ein Wert
  6183.                     ungleich 0 (TRUE)  ausgegeben. Anderenfalls (bei  illega-
  6184.                     ler Laufwerks-/Verzeichnisangabe) erfolgt die  Augabe des
  6185.                     Wertes 0 (FALSE).
  6186.  
  6187.       Siehe auch    dos, run
  6188.  
  6189.       Beispiel      newdir("C:\TELIX");
  6190.  
  6191.  
  6192.  
  6193.  
  6194.  
  6195.  
  6196.  
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213.  
  6214.  
  6215.  
  6216.  
  6217.  
  6218.  
  6219.  
  6220.  
  6221.  
  6222.  
  6223.  
  6224.  
  6225.  
  6226.  
  6227.  
  6228.  
  6229.  
  6230.  
  6231.  
  6232.  
  6233.  
  6234.  
  6235.  
  6236.                                       - 94 -
  6237.  
  6238.  
  6239.  
  6240.       printc
  6241.  
  6242.       Aufbau        printc(int <chr>);
  6243.  
  6244.       Beschreibung  Die Funktion printc gibt  das Zeichen auf dem  Bildschirm
  6245.                     aus, das dem ASCII-Wert <chr> entspricht.
  6246.  
  6247.       Ausgabewert   Es wird immer <chr> ausgegeben.
  6248.  
  6249.       Siehe auch    prints, printsc, printn
  6250.  
  6251.       Beispiel      printc(,A');
  6252.                     printc(7);
  6253.                      // Ausgabe des ASCII-Wertes 7 (Klingelzeichen)
  6254.  
  6255.                     printc(keyinw());
  6256.                          // Ausgabe einer gedrückten Taste
  6257.  
  6258.  
  6259.  
  6260.  
  6261.  
  6262.  
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.  
  6278.  
  6279.  
  6280.  
  6281.  
  6282.  
  6283.  
  6284.  
  6285.  
  6286.  
  6287.  
  6288.  
  6289.  
  6290.  
  6291.  
  6292.  
  6293.  
  6294.  
  6295.  
  6296.  
  6297.  
  6298.  
  6299.  
  6300.  
  6301.  
  6302.                                       - 95 -
  6303.  
  6304.  
  6305.  
  6306.       printer
  6307.  
  6308.       Aufbau        printer(int <state>);
  6309.  
  6310.       Beschreibung  Die  Funktion printer  wird benutzt,  um  innerhalb einer
  6311.                     Scriptdatei  den Drucker an-  bzw. auszuschalten,  so als
  6312.                     ob der Anwender den  Alt-0-Befehl im Terminalmodus einge-
  6313.                     geben  hätte.  Wenn  <state>  ein  Wert  ungleich  0  ist
  6314.                     (TRUE),  werden  alle Bildschirmausgaben  auf  dem  ange-
  6315.                     schlossenen  Drucker  mitprotokolliert,  sonst  wird  der
  6316.                     Drucker ausgeschaltet.
  6317.  
  6318.       Ausgabewert   keiner
  6319.  
  6320.       Siehe auch    capture
  6321.  
  6322.       Beispiel      printer(1);     // Drucker mitlaufen lassen
  6323.  
  6324.  
  6325.  
  6326.  
  6327.  
  6328.  
  6329.  
  6330.  
  6331.  
  6332.  
  6333.  
  6334.  
  6335.  
  6336.  
  6337.  
  6338.  
  6339.  
  6340.  
  6341.  
  6342.  
  6343.  
  6344.  
  6345.  
  6346.  
  6347.  
  6348.  
  6349.  
  6350.  
  6351.  
  6352.  
  6353.  
  6354.  
  6355.  
  6356.  
  6357.  
  6358.  
  6359.  
  6360.  
  6361.  
  6362.  
  6363.  
  6364.  
  6365.  
  6366.  
  6367.  
  6368.                                       - 96 -
  6369.  
  6370.  
  6371.  
  6372.       printn
  6373.  
  6374.       Aufbau        printn(int <num>);
  6375.  
  6376.       Beschreibung  Die Funktion  printn gibt die ihr übergebene Integer-Zahl
  6377.                     auf  dem Bildschirm aus.  Der Cursor  wird NICHT  auf den
  6378.                     Anfang der nächsten Zeile gesetzt.
  6379.  
  6380.       Ausgabewert   Es wird  der Wert  der übergebenen  Integer-Zahl ausgege-
  6381.                     ben.
  6382.  
  6383.       Siehe auch    prints, printsc, printc
  6384.  
  6385.       Beispiel      printsc("Aktuelle Baudrate ist ");
  6386.                     printn(get_baud);
  6387.  
  6388.  
  6389.  
  6390.  
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396.  
  6397.  
  6398.  
  6399.  
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.  
  6408.  
  6409.  
  6410.  
  6411.  
  6412.  
  6413.  
  6414.  
  6415.  
  6416.  
  6417.  
  6418.  
  6419.  
  6420.  
  6421.  
  6422.  
  6423.  
  6424.  
  6425.  
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434.                                       - 97 -
  6435.  
  6436.  
  6437.  
  6438.       prints, printsc, printsc_trm
  6439.  
  6440.       Aufbau        prints(str <outstr>);
  6441.  
  6442.                     printsc(str <outstr>);
  6443.  
  6444.                     printsc_trm(str <outstr>);
  6445.  
  6446.       Beschreibung  Die Funktion prints gibt  die ihr übergebene Zeichenkette
  6447.                     an  der aktuellen Cursor-Position auf dem Bildschirm aus,
  6448.                     gefolgt  von Carriage  Return und  Line Feed  (woduch der
  6449.                     Cursor auf den Anfang der nächsten Zeile gesetzt wird).
  6450.  
  6451.                     Die Funktion printsc gibt  die ihr übergebene Zeichenket-
  6452.                     te an  der aktuellen Cursor-Position  auf dem  Bildschirm
  6453.                     aus. Der Cursor  wird jedoch nicht  in die nächste  Zeile
  6454.                     gesetzt; ,c' steht für continuous (fortgesetzt).
  6455.  
  6456.                     Die Funktion  printsc_trm ist  der Funktion printsc  ver-
  6457.                     wandt.  Allerdings werden die  ausgegeben Zeichen vom ak-
  6458.                     tuellen Terminalemulator verarbeitet,  so daß  Terminal--
  6459.                     Escape-Sequenzen in die  ausgegebenen Zeichenketten  ein-
  6460.                     gefügt sein können.
  6461.  
  6462.       Ausgabewert   keiner
  6463.  
  6464.       Siehe auch    printn, printc
  6465.  
  6466.       Beispiel      prints("Hallo");
  6467.  
  6468.                     printsc("Hallo^M^J");
  6469.                          // gleicher Effekt wie erstes Beispiel
  6470.  
  6471.  
  6472.  
  6473.  
  6474.  
  6475.  
  6476.  
  6477.  
  6478.  
  6479.  
  6480.  
  6481.  
  6482.  
  6483.  
  6484.  
  6485.  
  6486.  
  6487.  
  6488.  
  6489.  
  6490.  
  6491.  
  6492.  
  6493.  
  6494.  
  6495.  
  6496.  
  6497.  
  6498.  
  6499.  
  6500.                                       - 98 -
  6501.  
  6502.  
  6503.  
  6504.       pstra, pstraxy
  6505.  
  6506.       Aufbau        pstra(str <s>, int <color>);
  6507.  
  6508.                     pstraxy(str <s>, int <x>, int <y>, int <color>);
  6509.  
  6510.       Beschreibung  Die Funktion pstra (Print  STRing with color Attribute  -
  6511.                     Ausgabe  einer  Zeichenkette  mit  Farbeigenschaft)  wird
  6512.                     verwendet, um  eine Zeichenkette auf den  Bildschirm aus-
  6513.                     zugeben,  ähnlich wie  mit prints/printsc. pstra  ist je-
  6514.                     doch viel schneller und sollte verwendet  werden, wenn es
  6515.                     auf Geschwindigkeit  ankommt. Auch  erlaubt die  Funktion
  6516.                     die  Spezifikation einer Farbe für  den Text. <s> wird an
  6517.                     der aktuellen Cursor-Postion in  der Farbe <color> ausge-
  6518.                     geben.
  6519.  
  6520.                     pstraxy arbeitet  ähnlich, erlaubt jedoch  zusätzlich die
  6521.                     Positionierung der auszugebenden  Zeichenkette. Die  Zei-
  6522.                     chenkette wird  an der  Position <x>,<y> ausgeben,  wobei
  6523.                     0,0 die obere linke Ecke des Bildschirms ist.
  6524.  
  6525.                     Beachten Sie, daß  prints vom eingestellten  Terminalemu-
  6526.                     lator verarbeitet  wird, so daß z.B.  entsprechende Esca-
  6527.                     pe-Steuersequenzen benutzt werden können.  pstra schreibt
  6528.                     dagegen direkt auf  den Bildschirm  und ignoriert  solche
  6529.                     Sequenzen.
  6530.  
  6531.       Ausgabewert   keiner
  6532.  
  6533.       Siehe auch    prints, printsc
  6534.  
  6535.       Beispiel      pstraxy("Ihr Name:",10, 10, 112);
  6536.                          // inverse Ausgabe
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544.  
  6545.  
  6546.  
  6547.  
  6548.  
  6549.  
  6550.  
  6551.  
  6552.  
  6553.  
  6554.  
  6555.  
  6556.  
  6557.  
  6558.  
  6559.  
  6560.  
  6561.  
  6562.  
  6563.  
  6564.  
  6565.  
  6566.                                       - 99 -
  6567.  
  6568.  
  6569.  
  6570.       receive
  6571.  
  6572.       Aufbau        receive(int <protocol>, str <name>);
  6573.  
  6574.       Beschreibung  Die Funktion receive wird verwendet, um  eine oder mehre-
  6575.                     re Dateien von einem  anderen System zu empfangen  (Down-
  6576.                     load).  <protocol>  steht für  das Zeichen,  mit  dem das
  6577.                     geeignete  Protokoll  aus  dem Telix-Empfangsmenü  ausge-
  6578.                     wählt wird (z. B. ,X' für Xmodem), wie folgt:
  6579.  
  6580.                     ,A'  ASCII
  6581.                     ,K'  Kermit
  6582.                     ,M'  Modem7
  6583.                     ,S'  SEAlink
  6584.                     ,T'  Telink
  6585.                     ,X'  Xmodem
  6586.                     ,1'  Xmodem-1k
  6587.                     ,G'  Xmodem-1k-g
  6588.                     ,Y'  Ymodem
  6589.                     ,E'  YmodEm-g
  6590.                     ,Z'  Zmodem
  6591.  
  6592.                     Wenn ein  externes Protokoll definiert wurde,  kann <pro-
  6593.                     tocol> auch für die Taste stehen, die  zur Auswahl dieses
  6594.                     Protokolls bestimmt ist.  <name> ist  der zu  verwendende
  6595.                     Dateiname.  Bei Verwendung  von  Protokollen, die  selbst
  6596.                     einen Dateinamen vergeben, sollte dieses Feld  frei blei-
  6597.                     ben  (""). Wenn  im Konfigurierungsmenü  ein Empfangsver-
  6598.                     zeichnis  definiert wurde, werden empfangene Dateien dort
  6599.                     abgelegt, es  sei denn,  die Zeichenkette  <name> enthält
  6600.                     ausdrücklich  den  Pfad  zu einem  anderen  Laufwerk/Ver-
  6601.                     zeichnis.
  6602.  
  6603.       Ausgabewert   Bei  abgebrochener  Übertragung oder  Verbindung  wird -1
  6604.                     ausgegeben, andernfalls wird eine 1 ausgegeben.
  6605.  
  6606.       Siehe auch    send, _down_dir
  6607.  
  6608.  
  6609.       Beispiel      int result;
  6610.                     result = receive(,X', "TEST.EXE");
  6611.                     if (result < 0)
  6612.                       prints("Dateitransfer misslungen!");
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.  
  6627.  
  6628.  
  6629.  
  6630.  
  6631.  
  6632.                                       - 100 -
  6633.  
  6634.  
  6635.  
  6636.       redial
  6637.  
  6638.       Aufbau        redial(str <dialstr>, int <maxtries>, int <no_link>);
  6639.  
  6640.       Beschreibung  Die Funktion  redial wählt  die in <dialstr>  definierten
  6641.                     Eintragungen. Die Eintragungen sollten  in demselben For-
  6642.                     mat eingegeben werden wie  im Anwahlverzeichnis. Ist <di-
  6643.                     alstr>   leer,   wird   dem   Benutzer   die  Wahlwieder-
  6644.                     holungskette  angezeigt, wie  nach Drücken  von Alt-Q  im
  6645.                     Terminalmodus. <maxtries> steht  für die maximale  Anzahl
  6646.                     der  Wahlwiederholungen.  Enthält  die Zeichenkette  z.B.
  6647.                     einen  Entrag  und <maxtries>  ist gleich  5,  wird Telix
  6648.                     fünfmal versuchen, den  entprechenden Anschluß zu  errei-
  6649.                     chen. Sind  5 Eintragungen  angegeben und  <maxtries> ist
  6650.                     gleich  5, wird  jede Nummer  nur einmal  angewählt. Wenn
  6651.                     <maxtries>  gleich 0  ist, erfolgt  Wahlwiederholung, bis
  6652.                     eine Verbindung zustandekommt.  Wenn ein Eintrag  mit ei-
  6653.                     ner Befehlsdatei  gekoppelt ist,  wird diese  ausgeführt,
  6654.                     es sei denn, <no_link> ist ungleich 0 (TRUE).
  6655.  
  6656.       Ausgabewert   Wenn eine  Verbindung hergestellt  wurde, gibt  die Funk-
  6657.                     tion redial  die Nummer des  entsprechenden Eintrags  aus
  6658.                     (oder  1, wenn  eine Nummer  manuell gewählt  wurde). Kam
  6659.                     keine  Verbindung zustande,  wird 0 ausgegeben.  Hat <di-
  6660.                     alstr>  ein  ungültiges Format,  erfolgt die  Ausgabe von
  6661.                     -1. Ferner  wird bei erfolgreichem  Verbindungsaufbau die
  6662.                     Systemvariable _entry_enum mit der  Nummer des betreffen-
  6663.                     den  Eintrags belegt  und die  Systemvariable _entry_name
  6664.                     mit dessen Namen.
  6665.  
  6666.       Siehe auch    dial, _entry_enum, _entry_name
  6667.  
  6668.       Beispiel      int stat;
  6669.                     str number_list[] = "1 4 27";
  6670.                     dial("10 15", 0);
  6671.                     dial("m 0241 48221", 5);
  6672.                     stat = dial(number_list, 0);
  6673.  
  6674.  
  6675.  
  6676.  
  6677.  
  6678.  
  6679.  
  6680.  
  6681.  
  6682.  
  6683.  
  6684.  
  6685.  
  6686.  
  6687.  
  6688.  
  6689.  
  6690.  
  6691.  
  6692.  
  6693.  
  6694.  
  6695.  
  6696.  
  6697.  
  6698.                                       - 101 -
  6699.  
  6700.  
  6701.  
  6702.       run
  6703.  
  6704.       Aufbau        run(str <filemane>, str <comline>, int <mode>);
  6705.  
  6706.       Beschreibung  Die Funktion run bewirkt  die Ausführung der  angegebenen
  6707.                     Datei.  Die Datei muß  entweder im  aktuellen Verzeichnis
  6708.                     stehen, auf  einem DOS-Pfad  sein oder  den vollständigen
  6709.                     Pfad enthalten (d. h.  Angabe von Laufwerk und/oder  Ver-
  6710.                     zeichnis). Stellen  Sie bitte  sicher, daß  ein Programm,
  6711.                     das die Eingabe eines Benutzers erwartet,  diese auch be-
  6712.                     kommt. Der Parameter <comline> steht  für die Befehlszei-
  6713.                     le, die  dem aufgerufenen  Programm übergeben wird.  Fol-
  6714.                     gende Modi können durch <mode> eingerichtet werden:
  6715.  
  6716.                     0    Ursprünglicher Bildschirminhalt wir nach Programmen-
  6717.                          de wieder geladen.
  6718.                     1    Nach Programmende wird vom Benutzer ein  Tastendruck
  6719.                          abgefragt,  nach  welchem  der  ursprüngliche  Bild-
  6720.                          schirminhalt wieder geladen wird.
  6721.                     2    Nach Programmende wird der ursprüngliche Bildschirm-
  6722.                          inhalt nicht wieder geladen.
  6723.  
  6724.                     Diese Funktion ist der DOS-Funktion run  sehr ähnlich. Da
  6725.                     sie weniger  Speicherplatz einnimmt und  schneller arbei-
  6726.                     tet, ist sie jener jedoch vorzuziehen,  sofern nicht eine
  6727.                     DOS-Batchdatei  ausgeführt  oder ein  interner DOS-Befehl
  6728.                     spezifiziert   werden   soll;  dann   muß   nämlich   die
  6729.                     DOS-Funktion benutzt werden.
  6730.  
  6731.       Ausgabewert   Die Funktion run gibt  -1 aus, wenn die Datei  nicht aus-
  6732.                     geführt werden kann  (weil sie nicht  gefunden wird  oder
  6733.                     nicht  genügend  Speicherplatz verfügbar  ist). Ansonsten
  6734.                     erfolgt die Ausgabe des Wertes, der  von dem aufgerufenen
  6735.                     Programm  ausgegeben  wird  (gewöhnlich 0),  jedoch  kann
  6736.                     auch ein positiver Wert ausgegeben werden,  wenn das auf-
  6737.                     gerufene Programm abgebrochen wurde.
  6738.  
  6739.       Siehe auch    dos, dosfunction
  6740.  
  6741.       Beispiel      run("CS test", 1);
  6742.  
  6743.  
  6744.  
  6745.  
  6746.  
  6747.  
  6748.  
  6749.  
  6750.  
  6751.  
  6752.  
  6753.  
  6754.  
  6755.  
  6756.  
  6757.  
  6758.  
  6759.  
  6760.  
  6761.  
  6762.  
  6763.  
  6764.                                       - 102 -
  6765.  
  6766.  
  6767.  
  6768.       scroll
  6769.  
  6770.       Aufbau        scroll(int <x>,  int <y>,  int <x2>, int  <y2>, int  <li-
  6771.                     nes>, int <color>);
  6772.  
  6773.       Beschreibung  Die  Funktion scroll wird  verwendet, um  den Bildschrim-
  6774.                     inhalt  zu  verschieben oder  einen  Bildschirmbereich zu
  6775.                     löschen.  Der zu  bearbeitende  Bereich wird  mit <x>,<y>
  6776.                     für die  obere linke  Ecke und  <x2>,<y2> für  die untere
  6777.                     rechte Ecke definiert.  (Die obere linke  Ecke des  Bild-
  6778.                     schirms ist 0,0). Entspricht der  Parameter <lines> einem
  6779.                     positiven Wert, wird der Textblock um  genau diese Anzahl
  6780.                     von Zeilen hochgeschoben.  Enthält <lines> einen  negati-
  6781.                     ven Wert, wird der  Block um genau diese Anzahl  von Zei-
  6782.                     len  heruntergeschoben. Ist  <lines>  gleich 0,  wird der
  6783.                     Block gelöscht. Mit  <color> kann die  Farbe der so  ent-
  6784.                     stehenden Leerzeilen festgelegt werden.
  6785.  
  6786.       Ausgabewert   keiner
  6787.  
  6788.       Siehe auch    box
  6789.  
  6790.       Beispiel      scroll(0, 0, 79, 24, 10, 7);
  6791.                     // 10 Zeilen nach oben verschieben
  6792.  
  6793.  
  6794.  
  6795.  
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  
  6803.  
  6804.  
  6805.  
  6806.  
  6807.  
  6808.  
  6809.  
  6810.  
  6811.  
  6812.  
  6813.  
  6814.  
  6815.  
  6816.  
  6817.  
  6818.  
  6819.  
  6820.  
  6821.  
  6822.  
  6823.  
  6824.  
  6825.  
  6826.  
  6827.  
  6828.  
  6829.  
  6830.                                       - 103 -
  6831.  
  6832.  
  6833.  
  6834.       send
  6835.  
  6836.       Aufbau        send(int <protocol>, str <name>);
  6837.  
  6838.       Beschreibung  Die Funktion send  wird verwendet, um  eine oder  mehrere
  6839.                     Dateien über den Kommunikations-Port  zu versenden. <pro-
  6840.                     tocol> ist das Zeichen,  mit dem das geeignete  Protokoll
  6841.                     ausgewählt wird:
  6842.  
  6843.                     ,A'  ASCII
  6844.                     ,K'  Kermit
  6845.                     ,M'  Modem7
  6846.                     ,S'  SEAlink
  6847.                     ,T'  Telink
  6848.                     ,X'  Xmodem
  6849.                     ,1'  Xmodem-1k
  6850.                     ,G'  Xmodem-1k-g
  6851.                     ,Y'  Ymodem
  6852.                     ,E'  YmodEm-g
  6853.                     ,Z'  Zmodem
  6854.  
  6855.                     Wurde ein externes  Protokoll definiert, kann  <protocol>
  6856.                     auch  die  Taste  enthalten, mit  der  dieses  ausgewählt
  6857.                     wird.  <name>  steht für  die  zu sendende(n)  Datei(en).
  6858.                     <name> darf die DOS- Wildcard-Zeichen *  und ? enthalten,
  6859.                     was  das Senden  aller passenden  Dateien zur  Folge hat.
  6860.                     (Das Protokoll muß allerdings in  der Lage sein, mehr als
  6861.                     eine  Datei gleichzeitig  zu übertragen,  z. B.  SEAlink,
  6862.                     Zmodem,  Ymodem (batch),  etc.) Wenn  im Konfigurierungs-
  6863.                     menü  ein  Sende-(Ausgabe)Verzeichnis  definiert   wurde,
  6864.                     wird Telix dort nach  zu versendenden Dateien suchen,  es
  6865.                     sei denn, die Zeichenkette <name>  enthält einen explizi-
  6866.                     ten Pfad zu einem anderen Laufwerk/Verzeichnis.
  6867.  
  6868.       Ausgabewert   Bei  abgebrochener Übertragung  oder  Verbindung wird  -1
  6869.                     ausgegeben, andernfalls wird eine 1 ausgegeben.
  6870.  
  6871.       Siehe auch    receive, _up_dir
  6872.  
  6873.  
  6874.  
  6875.  
  6876.  
  6877.  
  6878.  
  6879.  
  6880.  
  6881.  
  6882.  
  6883.  
  6884.  
  6885.  
  6886.  
  6887.  
  6888.  
  6889.  
  6890.  
  6891.  
  6892.  
  6893.  
  6894.  
  6895.  
  6896.                                       - 104 -
  6897.  
  6898.  
  6899.  
  6900.       send_brk
  6901.  
  6902.       Aufbau        send_brk(<duration>);
  6903.  
  6904.       Beschreibung  Die  Funktion send_brk  sendet für  die Dauer  von <dura-
  6905.                     tion> Zehntelsekunden ein Break-Signal  über den Kommuni-
  6906.                     kations-Port.
  6907.  
  6908.       Ausgabewert   keiner
  6909.  
  6910.  
  6911.  
  6912.  
  6913.  
  6914.  
  6915.  
  6916.  
  6917.  
  6918.  
  6919.  
  6920.  
  6921.  
  6922.  
  6923.  
  6924.  
  6925.  
  6926.  
  6927.  
  6928.  
  6929.  
  6930.  
  6931.  
  6932.  
  6933.  
  6934.  
  6935.  
  6936.  
  6937.  
  6938.  
  6939.  
  6940.  
  6941.  
  6942.  
  6943.  
  6944.  
  6945.  
  6946.  
  6947.  
  6948.  
  6949.  
  6950.  
  6951.  
  6952.  
  6953.  
  6954.  
  6955.  
  6956.  
  6957.  
  6958.  
  6959.  
  6960.  
  6961.  
  6962.                                       - 105 -
  6963.  
  6964.  
  6965.  
  6966.       set_cparams
  6967.  
  6968.       Aufbau        set_cparams(int  <baud>, int  <parity>,  int <data>,  int
  6969.                     <stop>;
  6970.  
  6971.       Beschreibung  Die Funktion  set_cparams  wird zum  Setzen der  Übertra-
  6972.                     gungsparameter, die am  aktuelle Kommunikations-Port  be-
  6973.                     nutzt  werden, verwendet. Erlaubte <baud>-Werte sind 300,
  6974.                     1200, 2400, 4800, 9600,  19200, 38400, 57600 und  115200.
  6975.                     <parity> ist eine Integer-Zahl die für  die zu verwenden-
  6976.                     de Parität steht.  Zulässige Werte sind 0,  1 und 2:  Sie
  6977.                     stehen für  keine, gerade  bzw. ungerade Parität.  <data>
  6978.                     steht  für die zu verwenden  Datenbits (7 oder 8). <stop>
  6979.                     ist die Einstellung der Stopbits (1 oder 2).
  6980.  
  6981.       Ausgabewert   Wenn  die Werte  für  alle  Einstellungen zulässig  sind,
  6982.                     wird ein  Wert ungleich 0  und -1 (TRUE)  ausgeben, ande-
  6983.                     renfalls -1.
  6984.  
  6985.       Siehe auch    set_port
  6986.  
  6987.       Beispiel      set_cparams(2400, 0, 8, 1);
  6988.  
  6989.                     set_cparams(9600,       get_parity(),        get_datab(),
  6990.                     get_stopb());
  6991.  
  6992.  
  6993.  
  6994.  
  6995.  
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  
  7001.  
  7002.  
  7003.  
  7004.  
  7005.  
  7006.  
  7007.  
  7008.  
  7009.  
  7010.  
  7011.  
  7012.  
  7013.  
  7014.  
  7015.  
  7016.  
  7017.  
  7018.  
  7019.  
  7020.  
  7021.  
  7022.  
  7023.  
  7024.  
  7025.  
  7026.  
  7027.  
  7028.                                       - 106 -
  7029.  
  7030.  
  7031.  
  7032.       set_defprot
  7033.  
  7034.       Aufbau        set_defprot(int <protocol>);
  7035.  
  7036.       Beschreibung  Die  Funktion set_defprot  wird verwendet,  um  das stan-
  7037.                     dardmäßige  (default)  Dateiübertragungsprotokoll  einzu-
  7038.                     richten,  das dem  Benutzer angeboten  wird wenn  er eine
  7039.                     Dateiübertragung  verlangt. <protocol> steht für das Zei-
  7040.                     chen,  mit dem  das geeignete  Protokoll ausgewählt  wird
  7041.                     (Optionen wie unter receive beschrieben).
  7042.  
  7043.       Ausgabewert   keiner
  7044.  
  7045.       Siehe auch    receive, send
  7046.  
  7047.       Beispiel      set_defprot(,Z');
  7048.                      // Zmodem als Standardprotokoll auswählen
  7049.  
  7050.  
  7051.  
  7052.  
  7053.  
  7054.  
  7055.  
  7056.  
  7057.  
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.  
  7071.  
  7072.  
  7073.  
  7074.  
  7075.  
  7076.  
  7077.  
  7078.  
  7079.  
  7080.  
  7081.  
  7082.  
  7083.  
  7084.  
  7085.  
  7086.  
  7087.  
  7088.  
  7089.  
  7090.  
  7091.  
  7092.  
  7093.  
  7094.                                       - 107 -
  7095.  
  7096.  
  7097.  
  7098.       setchr
  7099.  
  7100.       Aufbau        setchr(str <buf>, int <pos>, int <c>);
  7101.  
  7102.       Beschreibung  Die  Funktion setchr  setzt das  Zeichen <c>  an Position
  7103.                     <pos> in der unter <buf> genannten Zeichenkette.
  7104.  
  7105.       Ausgabewert   Es wird das Zeichen <c> ausgegeben.
  7106.  
  7107.       Siehe auch    setchrs, subchr
  7108.  
  7109.       Beispiel      int i;
  7110.                     str s[100];
  7111.                     for(i=0;i<10;++i)
  7112.                          // die ersten 10 Buchstaben auf A setzen.
  7113.                     setchr(s, i, ,A');
  7114.  
  7115.  
  7116.  
  7117.  
  7118.  
  7119.  
  7120.  
  7121.  
  7122.  
  7123.  
  7124.  
  7125.  
  7126.  
  7127.  
  7128.  
  7129.  
  7130.  
  7131.  
  7132.  
  7133.  
  7134.  
  7135.  
  7136.  
  7137.  
  7138.  
  7139.  
  7140.  
  7141.  
  7142.  
  7143.  
  7144.  
  7145.  
  7146.  
  7147.  
  7148.  
  7149.  
  7150.  
  7151.  
  7152.  
  7153.  
  7154.  
  7155.  
  7156.  
  7157.  
  7158.  
  7159.  
  7160.                                       - 108 -
  7161.  
  7162.  
  7163.  
  7164.       setchrs
  7165.  
  7166.       Aufbau        setchrs(str <buf>, int <pos>, int <c>, int <count>;
  7167.  
  7168.       Beschreibung  Die  Funktion  setchrs  wird verwendet,  um  eine gewisse
  7169.                     Anzahl Zeichen  mit  gleichem Wert  in eine  Zeichenkette
  7170.                     einzusetzen. <buf> ist die Zeichenkette, in  die die Zei-
  7171.                     chen eingesetzt werden. Es wird begonnen  an Stelle <pos>
  7172.                     dieser Zeichenkette.  (Beachten Sie bitte, daß  das erste
  7173.                     Zeichen einer SALT-Zeichenkette  die Position 0  hat, das
  7174.                     zweite 1 usw.) Die Zahl von <count>  Zeichen wird mit dem
  7175.                     Wert <c> eingesetzt.
  7176.  
  7177.       Ausgabewert   keiner
  7178.  
  7179.       Siehe auch    setchr, subchrs
  7180.  
  7181.       Beispiel      str s[100];
  7182.                          // Eine ganze Zeichenkette mit Nullen besetzen
  7183.                     setchrs(s, 0, 0, strmaxlen(s));
  7184.                          // Die ersten 10 Zeichen auf ,A' setzen
  7185.                     setchrs(s, 0, ,A', 10);
  7186.  
  7187.  
  7188.  
  7189.  
  7190.  
  7191.  
  7192.  
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.  
  7199.  
  7200.  
  7201.  
  7202.  
  7203.  
  7204.  
  7205.  
  7206.  
  7207.  
  7208.  
  7209.  
  7210.  
  7211.  
  7212.  
  7213.  
  7214.  
  7215.  
  7216.  
  7217.  
  7218.  
  7219.  
  7220.  
  7221.  
  7222.  
  7223.  
  7224.  
  7225.  
  7226.                                       - 109 -
  7227.  
  7228.  
  7229.  
  7230.       set_port
  7231.  
  7232.       Aufbau        set_port(int <port>);
  7233.  
  7234.       Beschreibung  Mit der Funktion set_port  wird der zu benutzende  Kommu-
  7235.                     nikations-Port  ausgewählt.  Zulässige  Werte für  <port>
  7236.                     sind 1 bis 8.
  7237.  
  7238.       Ausgabewert   Bei erfolgreicher Initialisierung wird  ein Wert ungleich
  7239.                     0 und -1 (TRUE) ausgegeben, anderenfalls -1.
  7240.  
  7241.       Siehe auch    set_cparams
  7242.  
  7243.  
  7244.  
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.  
  7254.  
  7255.  
  7256.  
  7257.  
  7258.  
  7259.  
  7260.  
  7261.  
  7262.  
  7263.  
  7264.  
  7265.  
  7266.  
  7267.  
  7268.  
  7269.  
  7270.  
  7271.  
  7272.  
  7273.  
  7274.  
  7275.  
  7276.  
  7277.  
  7278.  
  7279.  
  7280.  
  7281.  
  7282.  
  7283.  
  7284.  
  7285.  
  7286.  
  7287.  
  7288.  
  7289.  
  7290.  
  7291.  
  7292.                                       - 110 -
  7293.  
  7294.  
  7295.  
  7296.       set_terminal
  7297.  
  7298.       Aufbau        set_terminal(str <terminal>_name>);
  7299.  
  7300.       Beschreibung  Die Funktion  set_terminal wird verwendet, um das aktuell
  7301.                     emulierte Terminal  zu wechseln. <terminal_name>  ist der
  7302.                     Name des neuen Terminals, wie folgt:
  7303.  
  7304.                          "TTY"
  7305.                          "ANSI-BBS"
  7306.                          "VT102"
  7307.                          "VT52"
  7308.                          "AVATAR"
  7309.  
  7310.       Ausgabewert   Bei problemloser Umschaltung auf  das gewünschte Terminal
  7311.                     wird ein Wert ungleich 0 und -1 (TRUE) ausgegeben,  ande-
  7312.                     renfalls -1.
  7313.  
  7314.       Beispiel      set_terminal("VT102");
  7315.  
  7316.  
  7317.  
  7318.  
  7319.  
  7320.  
  7321.  
  7322.  
  7323.  
  7324.  
  7325.  
  7326.  
  7327.  
  7328.  
  7329.  
  7330.  
  7331.  
  7332.  
  7333.  
  7334.  
  7335.  
  7336.  
  7337.  
  7338.  
  7339.  
  7340.  
  7341.  
  7342.  
  7343.  
  7344.  
  7345.  
  7346.  
  7347.  
  7348.  
  7349.  
  7350.  
  7351.  
  7352.  
  7353.  
  7354.  
  7355.  
  7356.  
  7357.  
  7358.                                       - 111 -
  7359.  
  7360.  
  7361.  
  7362.       show_directory
  7363.  
  7364.       Aufbau        show_directory(str  <filespec>,  int  <cecho>, int  <car-
  7365.                     rier>);
  7366.  
  7367.       Beschreibung  Die  Funktion show_directory  bewirkt  die Anzeige  einer
  7368.                     Dateiliste, die optional auch an  den Kommunikations-Port
  7369.                     gesendet werden  kann. <filespec> ist  die zu verwendende
  7370.                     Dateimaske (z. B. "*.*")  und darf ferner Laufwerks-  und
  7371.                     Verzeichnisangaben beinhalten, genau  wie der  DOS-Befehl
  7372.                     ,dir'.  Wenn <cecho> ungleich 0 (TRUE)  ist, wird die Li-
  7373.                     ste auch  zum Kommunikations- Port geechot. Ist <carrier>
  7374.                     ungleich  0  (TRUE) und  die  Liste  wird zum  Kommunika-
  7375.                     tions-Port gesendet, wird für den Fall,  daß eine Verbin-
  7376.                     dung  verloren geht  (und  damit die  Anzeige abgebrochen
  7377.                     wird), das DCD-Signal überwacht.  Nach jedem vollen Bild-
  7378.                     schirminhalt wird vom Benutzer ein Tastendruck verlangt.
  7379.  
  7380.       Ausgabewert   keiner
  7381.  
  7382.       Siehe auch    dos, dosfunction
  7383.  
  7384.       Beispiel      show_directory("*.DOC", 0, 0);
  7385.  
  7386.  
  7387.  
  7388.  
  7389.  
  7390.  
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397.  
  7398.  
  7399.  
  7400.  
  7401.  
  7402.  
  7403.  
  7404.  
  7405.  
  7406.  
  7407.  
  7408.  
  7409.  
  7410.  
  7411.  
  7412.  
  7413.  
  7414.  
  7415.  
  7416.  
  7417.  
  7418.  
  7419.  
  7420.  
  7421.  
  7422.  
  7423.  
  7424.                                       - 112 -
  7425.  
  7426.  
  7427.  
  7428.       status_wind
  7429.  
  7430.       Aufbau        status_wind(str <message>, int <duration>);
  7431.  
  7432.       Beschreibung  Die  status_wind  Funktion  zeigt den  Text  <message> in
  7433.                     einem  pop-up-Fenster auf dem  Bildschirm an. Nach <dura-
  7434.                     tion>  Zehntelsekunden  verschwindet  die Meldung  wieder
  7435.                     und der alte Bildschirminhalt wird wieder dargestellt.
  7436.  
  7437.       Ausgabewert   keiner
  7438.  
  7439.       Siehe auch    box, pstra, pstraxy
  7440.  
  7441.       Beispiel      status_wind("Datei nicht gefunden!", 10);
  7442.  
  7443.  
  7444.  
  7445.  
  7446.  
  7447.  
  7448.  
  7449.  
  7450.  
  7451.  
  7452.  
  7453.  
  7454.  
  7455.  
  7456.  
  7457.  
  7458.  
  7459.  
  7460.  
  7461.  
  7462.  
  7463.  
  7464.  
  7465.  
  7466.  
  7467.  
  7468.  
  7469.  
  7470.  
  7471.  
  7472.  
  7473.  
  7474.  
  7475.  
  7476.  
  7477.  
  7478.  
  7479.  
  7480.  
  7481.  
  7482.  
  7483.  
  7484.  
  7485.  
  7486.  
  7487.  
  7488.  
  7489.  
  7490.                                       - 113 -
  7491.  
  7492.  
  7493.  
  7494.       stoi
  7495.  
  7496.       Aufbau        stoi(str <s>);
  7497.  
  7498.       Beschreibung  Die Funktion stoi  nimmt an, daß es sich bei  <s> um eine
  7499.                     Zeichenkette handelt, die  eine ausgeschriebene  Integer-
  7500.                     Zahl enthält. Sie bearbeitet  die Zeichenkette nach Stel-
  7501.                     len und  gibt den  entsprechenden Wert  aus.  Z. B.  gibt
  7502.                     stoi("123")  den Integer-Wert  123  aus. Die  Bearbeitung
  7503.                     hört  mit dem  ersten nicht  digitalen Zeichen  auf. Wird
  7504.                     eine  leere oder  ungültige  Zeichenkette übergeben,  er-
  7505.                     folgt die Ausgabe des Wertes 0.
  7506.  
  7507.       Ausgabewert   Ein Integer-Wert wie oben beschrieben.
  7508.  
  7509.       Siehe auch    itos
  7510.  
  7511.       Beispiel      str s[] = "123";
  7512.                     if (stoi(s) == 123)
  7513.                       prints("Dieser Text erscheint immer!");
  7514.  
  7515.  
  7516.  
  7517.  
  7518.  
  7519.  
  7520.  
  7521.  
  7522.  
  7523.  
  7524.  
  7525.  
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531.  
  7532.  
  7533.  
  7534.  
  7535.  
  7536.  
  7537.  
  7538.  
  7539.  
  7540.  
  7541.  
  7542.  
  7543.  
  7544.  
  7545.  
  7546.  
  7547.  
  7548.  
  7549.  
  7550.  
  7551.  
  7552.  
  7553.  
  7554.  
  7555.  
  7556.                                       - 114 -
  7557.  
  7558.  
  7559.  
  7560.       strcat
  7561.  
  7562.       Aufbau        strcat(str <string1>, str <string2>);
  7563.  
  7564.       Beschreibung  Die Funktion strcat verkettet  eine Zeichenkette mit  ei-
  7565.                     ner  anderen. <string2>  wird an  das Ende  von <string1>
  7566.                     angehängt.  Bietet  <string1>  nicht genügend  Platz,  so
  7567.                     werden nur so viele Zeichen angehängt, wie hineinpassen.
  7568.  
  7569.       Ausgabewert   keiner
  7570.  
  7571.       Beispiel      str s[80] = "hallo";
  7572.                     strcat(s, "goodbye");
  7573.                     if (s == "hallogoodbye")
  7574.                       prints("Dieser Text erscheint immer");
  7575.  
  7576.  
  7577.  
  7578.  
  7579.  
  7580.  
  7581.  
  7582.  
  7583.  
  7584.  
  7585.  
  7586.  
  7587.  
  7588.  
  7589.  
  7590.  
  7591.  
  7592.  
  7593.  
  7594.  
  7595.  
  7596.  
  7597.  
  7598.  
  7599.  
  7600.  
  7601.  
  7602.  
  7603.  
  7604.  
  7605.  
  7606.  
  7607.  
  7608.  
  7609.  
  7610.  
  7611.  
  7612.  
  7613.  
  7614.  
  7615.  
  7616.  
  7617.  
  7618.  
  7619.  
  7620.  
  7621.  
  7622.                                       - 115 -
  7623.  
  7624.  
  7625.  
  7626.       strchr
  7627.  
  7628.       Aufbau        strchr(str <s>, int <pos>, int<c>);
  7629.  
  7630.       Beschreibung  Diese  Funktion  wird  benutzt,   um  Zeichen  in   einer
  7631.                     Zeichenkette zu  suchen.  <s> ist  die  zu  untersuchende
  7632.                     Zeichenkette, <pos> die Position,  bei der die Suche  be-
  7633.                     ginnen  soll  und <c>  ist der  ASCII-Wert  des Zeichens,
  7634.                     nach dem gesucht  wird. Ist das  Zeichen vorhanden,  wird
  7635.                     seine  Position zurückgeliefert,  ansonsten wird  eine -1
  7636.                     zurückgegeben. Beachten Sie, daß das  erste Zeichen einer
  7637.                     Zeichenkette den Offset 0  hat, nicht eine 1 wie  in man-
  7638.                     chen Programmiersprachen.
  7639.  
  7640.       Ausgabewert   Ein Integer-Wert wie oben beschrieben.
  7641.  
  7642.       Beispiel      // Wie  oft erscheint ein  bestimmtes Zeichen in  einer -
  7643.                     Zeichenkette
  7644.  
  7645.                     int i, count = 0;
  7646.                     str[s] = "abcabcabcabcabc";
  7647.  
  7648.                     i = 0;
  7649.                     do
  7650.                      {
  7651.                      i = strchr(s, i, ,a');
  7652.                      if (i != -1)
  7653.                      count = count + 1;
  7654.                      }
  7655.  
  7656.                     while (i != -1);
  7657.  
  7658.  
  7659.  
  7660.  
  7661.  
  7662.  
  7663.  
  7664.  
  7665.  
  7666.  
  7667.  
  7668.  
  7669.  
  7670.  
  7671.  
  7672.  
  7673.  
  7674.  
  7675.  
  7676.  
  7677.  
  7678.  
  7679.  
  7680.  
  7681.  
  7682.  
  7683.  
  7684.  
  7685.  
  7686.  
  7687.  
  7688.                                       - 116 -
  7689.  
  7690.  
  7691.  
  7692.       strcmpi
  7693.  
  7694.       Aufbau        strcmpi(str <string1>, str <string2>);
  7695.  
  7696.       Beschreibung  Die Funktion  strcmpi wird verwendet, um zwei Zeichenket-
  7697.                     ten miteinander zu vergleichen (in einer  ähnlichen Weise
  7698.                     wie  mit  den Operatoren  ==, >  und  <, jedoch  ohne die
  7699.                     Groß-  oder Kleinschreibung zu berücksichtigen). Die Zei-
  7700.                     chenketten werden  Zeichen für  Zeichen miteinander  ver-
  7701.                     glichen, bis ein Unterschied  entdeckt oder das Ende  der
  7702.                     Zeichenkette  ereicht wird.  Dann wird  ein Interger-Wert
  7703.                     ausgegeben:
  7704.  
  7705.                     0    <string1> ist gleich <string2>
  7706.                     < 0  <string1> ist kleiner als <string2>
  7707.                     > 0  <string1> ist größer als <string2>
  7708.  
  7709.       Ausgabewert   Es wird ein  Integer-Wert ausgegeben, wie oben  beschrie-
  7710.                     ben.
  7711.  
  7712.       Beispiel      if (strcmpi("HeLLo", "hEllO");
  7713.                      prints("Dieser Text erscheint immer");
  7714.  
  7715.  
  7716.  
  7717.  
  7718.  
  7719.  
  7720.  
  7721.  
  7722.  
  7723.  
  7724.  
  7725.  
  7726.  
  7727.  
  7728.  
  7729.  
  7730.  
  7731.  
  7732.  
  7733.  
  7734.  
  7735.  
  7736.  
  7737.  
  7738.  
  7739.  
  7740.  
  7741.  
  7742.  
  7743.  
  7744.  
  7745.  
  7746.  
  7747.  
  7748.  
  7749.  
  7750.  
  7751.  
  7752.  
  7753.  
  7754.                                       - 117 -
  7755.  
  7756.  
  7757.  
  7758.       strlen
  7759.  
  7760.       Aufbau        strlen(str <s>);
  7761.  
  7762.       Beschreibung  Diese Funktion gibt  die Anzahl der  in der  Zeichenkette
  7763.                     <s> verwendeten  Zeichen  aus. Da  Zeichenketten mit  dem
  7764.                     Zeichen  0 (NUL)  beendet  werden,  zählt diese  Funktion
  7765.                     tatsächlich  die Anzahl  der  Zeichen vor  dem  Antreffen
  7766.                     einer 0.
  7767.  
  7768.       Ausgabewert   Es wird ein  Integer-Wert ausgegeben, der  der Länge  der
  7769.                     Zeichenkette entspricht.
  7770.  
  7771.       Siehe auch    strmaxlen
  7772.  
  7773.       Beispiel      str teststr[] = "Dies ist eine Test-Zeichenkette";
  7774.                     printsc("Die Länge von ,teststr' ist ");
  7775.                     printn(strlen(teststr));
  7776.  
  7777.  
  7778.  
  7779.  
  7780.  
  7781.  
  7782.  
  7783.  
  7784.  
  7785.  
  7786.  
  7787.  
  7788.  
  7789.  
  7790.  
  7791.  
  7792.  
  7793.  
  7794.  
  7795.  
  7796.  
  7797.  
  7798.  
  7799.  
  7800.  
  7801.  
  7802.  
  7803.  
  7804.  
  7805.  
  7806.  
  7807.  
  7808.  
  7809.  
  7810.  
  7811.  
  7812.  
  7813.  
  7814.  
  7815.  
  7816.  
  7817.  
  7818.  
  7819.  
  7820.                                       - 118 -
  7821.  
  7822.  
  7823.  
  7824.       strlower
  7825.  
  7826.       Aufbau        strlower(str <s>);
  7827.  
  7828.       Beschreibung  Die  Funktion strlower  bearbeitet  die Zeichenkette  <s>
  7829.                     und  verwandelt jeden  Großbuchstaben  in seine  kleinge-
  7830.                     schriebene Form. Andere Zeichen bleiben unverändert.
  7831.  
  7832.       Ausgabewert   keiner
  7833.  
  7834.       Siehe auch    strupper
  7835.  
  7836.  
  7837.  
  7838.  
  7839.  
  7840.  
  7841.  
  7842.  
  7843.  
  7844.  
  7845.  
  7846.  
  7847.  
  7848.  
  7849.  
  7850.  
  7851.  
  7852.  
  7853.  
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  
  7859.  
  7860.  
  7861.  
  7862.  
  7863.  
  7864.  
  7865.  
  7866.  
  7867.  
  7868.  
  7869.  
  7870.  
  7871.  
  7872.  
  7873.  
  7874.  
  7875.  
  7876.  
  7877.  
  7878.  
  7879.  
  7880.  
  7881.  
  7882.  
  7883.  
  7884.  
  7885.  
  7886.                                       - 119 -
  7887.  
  7888.  
  7889.  
  7890.       strmaxlen
  7891.  
  7892.       Aufbau        strmaxlen(str <s>);
  7893.  
  7894.       Beschreibung  Die  Funktion strmaxlen  gibt die  maximale Zeichenanzahl
  7895.                     aus, die  die  Zeichenkette <s>  enthalten darf.  Hierbei
  7896.                     handelt es sich um den Wert, der  bei der Definierung der
  7897.                     Zeichenkette an einer anderen Stelle des Programms  fest-
  7898.                     gelegt wurde (z. B. wenn  eine Zeichenkette als ,str hal-
  7899.                     lo[16];' definiert wurde, wird hier der  Wert 16 ausgege-
  7900.                     ben). Die Zeichenketten sind tatsächlich  noch eine Stel-
  7901.                     le  länger als  festgelegt, da  das letzte  Zeichen immer
  7902.                     die  abschließende 0  (NUL) ist.  Da dieser  Wert niemals
  7903.                     geändert werden kann,  zählt er jedoch nicht  bei der Be-
  7904.                     stimmung der Länge einer Zeichenkette.
  7905.  
  7906.       Ausgabewert   Es  wird  ein  Integer-Wert  ausgegeben,  wie  vorstehend
  7907.                     beschrieben.
  7908.  
  7909.       Siehe auch    strlen
  7910.  
  7911.  
  7912.  
  7913.  
  7914.  
  7915.  
  7916.  
  7917.  
  7918.  
  7919.  
  7920.  
  7921.  
  7922.  
  7923.  
  7924.  
  7925.  
  7926.  
  7927.  
  7928.  
  7929.  
  7930.  
  7931.  
  7932.  
  7933.  
  7934.  
  7935.  
  7936.  
  7937.  
  7938.  
  7939.  
  7940.  
  7941.  
  7942.  
  7943.  
  7944.  
  7945.  
  7946.  
  7947.  
  7948.  
  7949.  
  7950.  
  7951.  
  7952.                                       - 120 -
  7953.  
  7954.  
  7955.  
  7956.       strpos, strposi
  7957.  
  7958.       Aufbau        strpos(str <string1>, str <substr>, int <start>); 
  7959.  
  7960.                     strposi(str <string1>, str <substr>, int <start>);
  7961.  
  7962.       Beschreibung  Die Funktion  strpos wird  verwendet, um  innerhalb einer
  7963.                     Zeichenkette  nach  einer  anderen  zu  suchen. <string1>
  7964.                     wird ab der Stelle <start> auf  <substr> untersucht. Wird
  7965.                     <substr>  gefunden,  erfolgt die  Ausgabe  ihres Abstands
  7966.                     zum  Zeichenkettenanfang, wenn nicht, wird -1 ausgegeben.
  7967.                     Beachten Sie bitte,  daß das erste Zeichen den  Abstand 0
  7968.                     hat und nicht 1, wie in manchen Sprachen.
  7969.  
  7970.                     strposi  ist eine  Abwandlung von  strpos, bei  der Groß-
  7971.                     und Kleinschreibung nicht berücksichtigt werden.
  7972.  
  7973.       Ausgabewert   Es wird ein  Integer-Wert ausgegeben, wie vorstehend  be-
  7974.                     schrieben.
  7975.  
  7976.       Beispiel      str teststr[] = "cat dog cat dog";
  7977.                     int i = 0, num = 0;
  7978.  
  7979.                     while (1)
  7980.                          // Wiederholung, solange erforderlich
  7981.                      {
  7982.                      i = strpos(teststr, "cat", i);
  7983.                      if (i == -1)
  7984.                       break;
  7985.                      i = i + 1;
  7986.                          // um nicht den selben zu finden
  7987.                      num = num + 1;
  7988.                          // Zähler erhöhen
  7989.                      }
  7990.                          prints(",cat' wurde ");
  7991.                     printn(num);
  7992.                     prints(" mal gefunden.");
  7993.  
  7994.  
  7995.  
  7996.  
  7997.  
  7998.  
  7999.  
  8000.  
  8001.  
  8002.  
  8003.  
  8004.  
  8005.  
  8006.  
  8007.  
  8008.  
  8009.  
  8010.  
  8011.  
  8012.  
  8013.  
  8014.  
  8015.  
  8016.  
  8017.  
  8018.                                       - 121 -
  8019.  
  8020.  
  8021.  
  8022.       strupper
  8023.  
  8024.       Aufbau        strupper(str <s>);
  8025.  
  8026.       Beschreibung  Die  Funktion strupper  bearbeitet  die Zeichenkette  <s>
  8027.                     und  verwandelt jeden  Kleinbuchstaben  in seine  großge-
  8028.                     schriebene Form. Andere Zeichen bleiben unverändert.
  8029.  
  8030.       Ausgabewert   keiner
  8031.  
  8032.       Siehe auch    strlower
  8033.  
  8034.  
  8035.  
  8036.  
  8037.  
  8038.  
  8039.  
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.  
  8047.  
  8048.  
  8049.  
  8050.  
  8051.  
  8052.  
  8053.  
  8054.  
  8055.  
  8056.  
  8057.  
  8058.  
  8059.  
  8060.  
  8061.  
  8062.  
  8063.  
  8064.  
  8065.  
  8066.  
  8067.  
  8068.  
  8069.  
  8070.  
  8071.  
  8072.  
  8073.  
  8074.  
  8075.  
  8076.  
  8077.  
  8078.  
  8079.  
  8080.  
  8081.  
  8082.  
  8083.  
  8084.                                       - 122 -
  8085.  
  8086.  
  8087.  
  8088.       subchr
  8089.  
  8090.       Aufbau        subchr(str <s>, int <pos>);
  8091.  
  8092.       Beschreibung  Die Funktion subchr  gibt das Zeichen aus,  das an Stelle
  8093.                     <pos> der  Zeichenkette  <s> steht.  Beachten Sie  bitte,
  8094.                     daß  ein  Integer-Wert  ausgegeben wird  (ASCII-Wert  des
  8095.                     Zeichens),  nicht eine  Zeichenkette.  Bei <pos>  kann es
  8096.                     sich um jede beliebige Stelle handeln.  Beachten Sie bit-
  8097.                     te, daß die  Stellen mit  0 beginnen.  Das erste  Zeichen
  8098.                     einer Zeichenkette hat so die Position  0, das vierzigste
  8099.                     die Position 39 usw.  Eine Zeichenkette, deren Länge  mit
  8100.                     10 Stellen definiert ist,  hat die gültigen Positionen  0
  8101.                     bis 9, wobei  Position 10  den Wert 0  enthält, der  alle
  8102.                     Zeichenketten beendet.
  8103.  
  8104.       Ausgabewert   Es wird ein  Integer-Wert ausgegeben, wie  vorstehend be-
  8105.                     schrieben.
  8106.  
  8107.       Siehe auch    setchr, subschrs
  8108.  
  8109.       Beispiel      // Es sollen die einzelnen Werte aller
  8110.                     // Zeichen einer Test-Zeichenkette ausgege-
  8111.                     //  ben  werden,  bis  eine erreicht  wird,  die  // jede
  8112.                     Zeichenkette beenden sollte.
  8113.  
  8114.                     int i;
  8115.                     str s[] = "Dies ist eine Test-Zeichenkette";
  8116.                     for (i = 0; subchr(s, i) != 0; ++i)
  8117.                      printc(subchr(s, i));
  8118.  
  8119.  
  8120.  
  8121.  
  8122.  
  8123.  
  8124.  
  8125.  
  8126.  
  8127.  
  8128.  
  8129.  
  8130.  
  8131.  
  8132.  
  8133.  
  8134.  
  8135.  
  8136.  
  8137.  
  8138.  
  8139.  
  8140.  
  8141.  
  8142.  
  8143.  
  8144.  
  8145.  
  8146.  
  8147.  
  8148.  
  8149.  
  8150.                                       - 123 -
  8151.  
  8152.  
  8153.  
  8154.       subchrs
  8155.  
  8156.       Aufbau        subchrs(str <source>, int  <pos>, int <count>,  int <tar-
  8157.                     get>);
  8158.  
  8159.       Beschreibung  Die Funktion  subchrs kopiert  eine bestimmte  Zeichenan-
  8160.                     zahl  aus  einer Zeichenkette  in eine  andere,  und zwar
  8161.                     werden <count>  Zeichen aus <source>  in die Zeichenkette
  8162.                     <target> ab  Position <pos> hineinkopiert.  (Beachten Sie
  8163.                     hierbei bitte, daß die Positionen  der SALT-Zeichenketten
  8164.                     ab  0  gezählt  werden,  nicht  ab  1,  wie   in  einigen
  8165.                     Sprachen.) Es werde nur  soviele Zeichen übernommen,  wie
  8166.                     noch in <target> hineinpassen.
  8167.  
  8168.                     Diese Funktion gleicht sehr der Funktion  substr, sie be-
  8169.                     handelt jedoch  einzelne Zeichen und beendet  den Kopier-
  8170.                     vorgang nicht beim Antreffen einer 0.
  8171.  
  8172.       Ausgabewert   keiner
  8173.  
  8174.       Siehe auch    substr, subchr, copystr, copychrs
  8175.  
  8176.  
  8177.  
  8178.  
  8179.  
  8180.  
  8181.  
  8182.  
  8183.  
  8184.  
  8185.  
  8186.  
  8187.  
  8188.  
  8189.  
  8190.  
  8191.  
  8192.  
  8193.  
  8194.  
  8195.  
  8196.  
  8197.  
  8198.  
  8199.  
  8200.  
  8201.  
  8202.  
  8203.  
  8204.  
  8205.  
  8206.  
  8207.  
  8208.  
  8209.  
  8210.  
  8211.  
  8212.  
  8213.  
  8214.  
  8215.  
  8216.                                       - 124 -
  8217.  
  8218.  
  8219.  
  8220.       substr
  8221.  
  8222.       Aufbau        substr(str  <source>,  int <pos>,  int  <max>, str  <tar-
  8223.                     get>);
  8224.  
  8225.       Beschreibung  Die Funktion substr kopiert einen Teil  einer Zeichenket-
  8226.                     te in eine  andere hinein. Die  Zeichen der  Zeichenkette
  8227.                     <source> werden  ab Position <pos> an den Anfang der Zei-
  8228.                     chenkette  <target>  kopiert. (Beachten  Sie  bitte,  daß
  8229.                     SALT-Zeichenketten  mit  der Position  0  beginnen, nicht
  8230.                     mit 1, wie in einigen Sprachen).  Zeichen werden kopiert,
  8231.                     bis  eine 0  angetroffen wird  (gewöhnlich am  Ende einer
  8232.                     jeden Zeichenkette) oder die Anzahl <max>  erreicht wird.
  8233.                     Eine 0 (NUL) wird immer  an das Ende der Zielzeichenkette
  8234.                     kopiert. Die 0 wird nicht als Teil  von <max> berücksich-
  8235.                     tigt. Es werden  nur so viele  Zeichen kopiert, wie  noch
  8236.                     in <target> passen.
  8237.  
  8238.       Ausgabewert   keiner
  8239.  
  8240.       Siehe auch    subchrs
  8241.  
  8242.       Beispiel      str s[] = "horse cat dog", s2;
  8243.                     substr(s, 6, 3, s2);
  8244.                     if (s2 == "cat")
  8245.                      prints("Dieser Text erscheint immer");
  8246.  
  8247.  
  8248.  
  8249.  
  8250.  
  8251.  
  8252.  
  8253.  
  8254.  
  8255.  
  8256.  
  8257.  
  8258.  
  8259.  
  8260.  
  8261.  
  8262.  
  8263.  
  8264.  
  8265.  
  8266.  
  8267.  
  8268.  
  8269.  
  8270.  
  8271.  
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278.  
  8279.  
  8280.  
  8281.  
  8282.                                       - 125 -
  8283.  
  8284.  
  8285.  
  8286.       tday - tyear
  8287.  
  8288.       Aufbau        tday (int <timeval>);
  8289.  
  8290.                     thour (int <timeval>);
  8291.  
  8292.                     tmin (int <timeval>);
  8293.  
  8294.                     tmonth (int <timeval>);
  8295.  
  8296.                     tsec (int <timeval>);
  8297.  
  8298.                     tyear (int <timeval>);
  8299.  
  8300.       Beschreibung  Alle oben  aufgeführten Funktionen beziehen  ihre Zeitin-
  8301.                     formationen aus <timeval>, das  für ein bestimmtes Tages-
  8302.                     datum bzw. eine Uhrzeit steht. Enthält  <timeval> ein Da-
  8303.                     tum, so  wird es als  Anzahl der Sekunden  behandelt, die
  8304.                     seit dem 01.01.1970 bis  zu diesem Datum vergangen  sind.
  8305.                     Handelt es sich  um eine  Uhrzeit, so ist  es die  Anzahl
  8306.                     der Sekunden, die  seit Mitternacht bis  zu diesem  Zeit-
  8307.                     punkt  vergangen sind.  Ist  beides vorhanden,  so werden
  8308.                     die beiden Werte  einfach addiert. U. a.  geben die Funk-
  8309.                     tionen curtime und  filetime ihre Zeit-  und Datumsinfor-
  8310.                     mationen in diesem Format aus.
  8311.  
  8312.                     tday gibt einen  Integer-Wert zwischen 1 und  31 aus, der
  8313.                     der Tagesangabe in <timeval> entspricht.
  8314.  
  8315.                     thour  gibt einen Integer-Wert zwischen 0 und 23 aus, der
  8316.                     der Stundenangabe in <timeval> entspricht.
  8317.  
  8318.                     tmin gibt einen Integer-Wert zwischen  0 und 59 aus,  der
  8319.                     der Minutenangabe in <timeval> entspricht.
  8320.  
  8321.                     tmonth  gibt einen  Integer-Wert zwischen  1 und  12 aus,
  8322.                     der der Monatsangabe in <timeval> entspricht.
  8323.  
  8324.                     tyear  gibt  einen Integer-Wert  zwischen  1980  und 2019
  8325.                     aus, der der Jahresangabe in <timeval> entspricht.
  8326.  
  8327.       Ausgabewert   Es wird  ein Integer-Wert ausgegeben, wie  vorstehend be-
  8328.                     schrieben.
  8329.  
  8330.       Siehe auch    curtime, filetime
  8331.  
  8332.       Beispiel      int t;
  8333.                     t = curtime();
  8334.                     printsc("Dies ist Monat Nummer ");
  8335.                     printn(tmonth(t));
  8336.                     printsc(" im Jahre ");
  8337.                     printn(tyear(t));
  8338.                     prints(".");
  8339.  
  8340.  
  8341.  
  8342.  
  8343.  
  8344.  
  8345.  
  8346.  
  8347.  
  8348.                                       - 126 -
  8349.  
  8350.  
  8351.  
  8352.       terminal
  8353.  
  8354.       Aufbau        terminal();
  8355.  
  8356.       Beschreibung  Mit  dem Aufrufen  der Funktion  terminal werden  die von
  8357.                     der seriellen Schnittstelle eingehenden  Zeichen bearbei-
  8358.                     tet   und   auf   dem   Bildschirm    dargestellt   sowie
  8359.                     Tastendrücke  des Benutzers  bearbeitet. Wenn  eine Funk-
  8360.                     tion  gerade  ruht (z.  B. während  der  Funktion track),
  8361.                     kann   sie   die    Funktion   terminal   aufrufen,    um
  8362.                     sicherzustellen, daß Zeichen  und Tastendrücke  verarbei-
  8363.                     tet werden. Beachten Sie  bitte, daß diese Funktion  ter-
  8364.                     minal auf  keinen  Fall aufgerufen  werden  sollte,  wenn
  8365.                     eine Scriptdatei  des Benutzers jedes  eingehende Zeichen
  8366.                     verarbeiten würde (z.B. mit der Funktion cgetc).
  8367.  
  8368.       Ausgabewert   keiner
  8369.  
  8370.       Siehe auch    track
  8371.  
  8372.       Beispiel      // Es soll solange gewartet werden, bis eine
  8373.                     // von zwei Zeichenketten am Kommunikations-
  8374.                     // Port eingeht. Dann soll die
  8375.                     // Funktion abgebrochen werden.
  8376.  
  8377.                     int t1, t2, stat;
  8378.  
  8379.                     t1 = track("hallo", 0);
  8380.                     t2 = track("goodbye", 0);
  8381.  
  8382.                     while (1)       // Endlosschleife
  8383.                      {
  8384.                      terminal();
  8385.  
  8386.                      // Der Aufruf von terminal() bewirkt, daß
  8387.                      // alle am Kommunikations-Port eingehenden
  8388.                      // Zeichen von internen Telix-Routinen auf
  8389.                      // eine Übereinstimmung überprüft werden. 
  8390.                      // Auch werden die eingehenden Zeichen auf
  8391.                      // dem Bildschirm ausgegeben und Tasten-
  8392.                      // drücke des Benutzers verarbeitet.
  8393.  
  8394.                     stat = track_hit(0);
  8395.                     if(stat==t1||stat==t2)
  8396.                      // Abbruch, wenn eine der Zeichenketten
  8397.                      // eingetroffen ist
  8398.                      break;
  8399.                      }
  8400.  
  8401.                     track_free(t1);
  8402.                      // Stoppt Telix' Suche nach 
  8403.                      // weiteren Übereinstimmmungen.
  8404.                     track_free(t2);
  8405.  
  8406.  
  8407.  
  8408.  
  8409.  
  8410.  
  8411.  
  8412.  
  8413.  
  8414.                                       - 127 -
  8415.  
  8416.  
  8417.  
  8418.       time
  8419.  
  8420.       Aufbau        time(int <timeval>, str <buffer>);
  8421.  
  8422.       Beschreibung  Die time Funktion  schreibt eine Zeitangabe  in der  Form
  8423.                     hh:mm:ss  in die Zeichenkette  <buffer>, entweder  im 12-
  8424.                     oder  24-Stunden-Format  (festgelegt durch  die Systemva-
  8425.                     riable  _date_format). In  <timeval>  steht die  Zeit  in
  8426.                     Form   von   Anzahl   der   vergangenen   Sekunden   seit
  8427.                     Mitternacht. Zeitangaben in  dieser Form werden  z.B. von
  8428.                     den Funktionen curtime und filetime geliefert.
  8429.  
  8430.       Ausgabewert   keiner
  8431.  
  8432.       Siehe auch    date, curtime, filetime
  8433.  
  8434.       Beispiel      str s[16];
  8435.                     printsc("Die aktuelle Zeit ist ");
  8436.                     time(curtime(), s);
  8437.                     prints(s);
  8438.  
  8439.  
  8440.  
  8441.  
  8442.  
  8443.  
  8444.  
  8445.  
  8446.  
  8447.  
  8448.  
  8449.  
  8450.  
  8451.  
  8452.  
  8453.  
  8454.  
  8455.  
  8456.  
  8457.  
  8458.  
  8459.  
  8460.  
  8461.  
  8462.  
  8463.  
  8464.  
  8465.  
  8466.  
  8467.  
  8468.  
  8469.  
  8470.  
  8471.  
  8472.  
  8473.  
  8474.  
  8475.  
  8476.  
  8477.  
  8478.  
  8479.  
  8480.                                       - 128 -
  8481.  
  8482.  
  8483.  
  8484.       time_up - timer_total
  8485.  
  8486.       Aufbau        time_up (int <thandle>);
  8487.  
  8488.                     timer_free (int <thandle>);
  8489.  
  8490.                     timer_restart (int <thandle>, int <time>);
  8491.  
  8492.                     timer_start (int <time>);
  8493.  
  8494.                     timer_total (int <thandle>);
  8495.  
  8496.       Beschreibung  Die timer-Funktionen werden  verwendet, um  Zeitmeßvaria-
  8497.                     blen einzurichten und gemessene Zeiten zu speichern.
  8498.  
  8499.                     Mit der  Funktion timer_start  wird eine  Zeitmessung be-
  8500.                     gonnen.  Diese kann später benutzt werden, um festzustel-
  8501.                     len, ob eine bestimmte  Zeit seit Beginn der  Zeitmessung
  8502.                     verstrichen ist. Diese  Funktion gibt einen  Integer-Wert
  8503.                     aus, der ,timer  handle' <thandle> genannt  wird und  für
  8504.                     spätere Zugriffe  auf die  Zeitmessung benutzt  wird. Der
  8505.                     Parameter <time> steht für die Zeitspanne (in  Zehntelse-
  8506.                     kunden),  nach  der  die   Zeitmessung  enden  soll  (zum
  8507.                     Gebrauch mit  der Funktion  time_up).  Wenn die  Funktion
  8508.                     time_up nicht benutzt werden soll,  kann dieser Parameter
  8509.                     jeden beliebigen Wert haben.
  8510.  
  8511.                     Die Funktion time_up  gibt einen Wert  ungleich 0  (TRUE)
  8512.                     aus,  wenn die  von  <thandle> vertretene  Zeitmessung zu
  8513.                     Ende geführt wurde, sonst wird 0  (FALSE) ausgegeben. Die
  8514.                     Zeitspanne, nach der  die Zeitmessung endet,  wird inner-
  8515.                     halb der Funktion timer_start festgelegt.
  8516.  
  8517.                     Die  Funktion timer_total gibt  die Zeitspanne  (in Zehn-
  8518.                     telsekunden)  aus,  die  vergangen ist,  seit  die  durch
  8519.                     <thandle>  vertretene  Zeitmessung gestartet  oder wieder
  8520.                     aufgenommen wurde.
  8521.  
  8522.                     Die  Funktion  timer_restart  bewirkt   das  gleiche  wie
  8523.                     timer_start.  Nur wird  eine bereits  vorhandene Zeitmes-
  8524.                     sung  wieder aufgenommen,  die durch  <thandle> vertreten
  8525.                     wird.
  8526.  
  8527.                     Die  Funktion  timer-free  löscht eine  Zeitmeß-Variable,
  8528.                     die  nicht mehr  benötigt wird.  <thandle> steht  für den
  8529.                     Wert,  der  für  die  entsprechende Zeitmessung  von  der
  8530.                     Funktion timer_start  als timer handle  ausgegeben wurde.
  8531.                     Sobald  eine  Zeitmeß-Variable  gelöscht   wurde,  sollte
  8532.                     nicht mehr auf sie Bezug genommen werden.
  8533.  
  8534.       Ausgabewert   timer_start  gibt einen  Integer-Wert  aus,  der für  die
  8535.                     ,handle' steht,  mit  dem  auf  einen  Timer  zugegriffen
  8536.                     wird.
  8537.  
  8538.                     time_up gibt einen  Wert ungleich  0 (TRUE)  aus, bzw.  0
  8539.                     (FALSE), abhängig  davon, ob  die Zeitmessung  zuende ge-
  8540.                     führt wurde oder nicht.
  8541.  
  8542.                     timer_total  gibt einen Integer-Wert aus, der die vergan-
  8543.                     gene Zeit seit dem Beginn einer Zeitmessung wiedergibt. 
  8544.  
  8545.  
  8546.                                       - 129 -
  8547.  
  8548.  
  8549.  
  8550.                     timer_restart  gibt immer  einen  Wert ungleich  0 (TRUE)
  8551.                     aus.
  8552.  
  8553.                     timer_frei gibt immer einen Wert ungleich 0 (TRUE) aus.
  8554.  
  8555.       Siehe auch    delay
  8556.  
  8557.       Beispiel      int t;
  8558.  
  8559.                     t = timer_start(100) 
  8560.                      // 10 Sekunden Verzögerung
  8561.                     while (!time_up(t))
  8562.                       ;
  8563.                     timer_free(t);
  8564.  
  8565.                      // Beginn einer  Zeitmessung mit einer End// losschlei-
  8566.                      fe, die die vergangene  Zeit in // Zehntelsekunden aus-
  8567.                      gibt.
  8568.  
  8569.                      t = timer_start(0);
  8570.                      while (1)
  8571.                        {
  8572.                        printn(timer_total(t));
  8573.                        prints("");
  8574.                        }
  8575.  
  8576.  
  8577.  
  8578.  
  8579.  
  8580.  
  8581.  
  8582.  
  8583.  
  8584.  
  8585.  
  8586.  
  8587.  
  8588.  
  8589.  
  8590.  
  8591.  
  8592.  
  8593.  
  8594.  
  8595.  
  8596.  
  8597.  
  8598.  
  8599.  
  8600.  
  8601.  
  8602.  
  8603.  
  8604.  
  8605.  
  8606.  
  8607.  
  8608.  
  8609.  
  8610.  
  8611.  
  8612.                                       - 130 -
  8613.  
  8614.  
  8615.  
  8616.       tolower
  8617.  
  8618.       Aufbau        tolower(int <chr>);
  8619.  
  8620.       Beschreibung  Wenn es sich bei  <chr> um einen Großbuchstaben  handelt,
  8621.                     gibt die  Funktion  tolower den  Wert des  entsprechenden
  8622.                     Kleinbuchstabens  aus.  Ansonsten wird  <chr> unverändert
  8623.                     ausgegeben. Beachten Sie bitte, daß <chr> ein  ASCII-Wert
  8624.                     ist, nicht eine Zeichenkette.
  8625.  
  8626.       Ausgabewert   Es wird ein  Integer-Wert ausgegeben, wie vorstehend  be-
  8627.                     schrieben.
  8628.  
  8629.       Siehe auch    toupper
  8630.  
  8631.  
  8632.  
  8633.  
  8634.  
  8635.  
  8636.  
  8637.  
  8638.  
  8639.  
  8640.  
  8641.  
  8642.  
  8643.  
  8644.  
  8645.  
  8646.  
  8647.  
  8648.  
  8649.  
  8650.  
  8651.  
  8652.  
  8653.  
  8654.  
  8655.  
  8656.  
  8657.  
  8658.  
  8659.  
  8660.  
  8661.  
  8662.  
  8663.  
  8664.  
  8665.  
  8666.  
  8667.  
  8668.  
  8669.  
  8670.  
  8671.  
  8672.  
  8673.  
  8674.  
  8675.  
  8676.  
  8677.  
  8678.                                       - 131 -
  8679.  
  8680.  
  8681.  
  8682.       tone
  8683.  
  8684.       Aufbau        tone(int <frequency>, int <length>);
  8685.  
  8686.       Beschreibung  Die Funktion  tone läßt Telix  ein Geräusch mit  der Fre-
  8687.                     quenz <frequency> ausgeben,  und zwar für  so viele  Hun-
  8688.                     dertstelsekunden, wie unter <length> festgelegt.
  8689.  
  8690.       Ausgabewert   keiner
  8691.  
  8692.       Siehe auch    alarm
  8693.  
  8694.       Beispiel      tone(659, 14);
  8695.  
  8696.  
  8697.  
  8698.  
  8699.  
  8700.  
  8701.  
  8702.  
  8703.  
  8704.  
  8705.  
  8706.  
  8707.  
  8708.  
  8709.  
  8710.  
  8711.  
  8712.  
  8713.  
  8714.  
  8715.  
  8716.  
  8717.  
  8718.  
  8719.  
  8720.  
  8721.  
  8722.  
  8723.  
  8724.  
  8725.  
  8726.  
  8727.  
  8728.  
  8729.  
  8730.  
  8731.  
  8732.  
  8733.  
  8734.  
  8735.  
  8736.  
  8737.  
  8738.  
  8739.  
  8740.  
  8741.  
  8742.  
  8743.  
  8744.                                       - 132 -
  8745.  
  8746.  
  8747.  
  8748.       toupper
  8749.  
  8750.       Aufbau        toupper(int <chr>);
  8751.  
  8752.       Beschreibung  Wenn es sich bei <chr> um  einen Kleinbuchstaben handelt,
  8753.                     gibt die  Funktion  toupper den  Wert des  entsprechenden
  8754.                     Großbuchstabens  aus.  Ansonsten  wird <chr>  unverändert
  8755.                     ausgegeben. Beachten Sie bitte, daß <chr> ein  ASCII-Wert
  8756.                     ist, nicht eine Zeichenkette.
  8757.  
  8758.       Ausgabewert   Es  wird  ein  Integer-Wert  ausgegeben,  wie  vorstehend
  8759.                     beschrieben.
  8760.  
  8761.       Siehe auch    tolower
  8762.  
  8763.  
  8764.  
  8765.  
  8766.  
  8767.  
  8768.  
  8769.  
  8770.  
  8771.  
  8772.  
  8773.  
  8774.  
  8775.  
  8776.  
  8777.  
  8778.  
  8779.  
  8780.  
  8781.  
  8782.  
  8783.  
  8784.  
  8785.  
  8786.  
  8787.  
  8788.  
  8789.  
  8790.  
  8791.  
  8792.  
  8793.  
  8794.  
  8795.  
  8796.  
  8797.  
  8798.  
  8799.  
  8800.  
  8801.  
  8802.  
  8803.  
  8804.  
  8805.  
  8806.  
  8807.  
  8808.  
  8809.  
  8810.                                       - 133 -
  8811.  
  8812.  
  8813.  
  8814.       track - track_hit
  8815.  
  8816.       Aufbau        track(str <trackstr>, int <mode>);
  8817.  
  8818.                     track_hit(int <handle>);
  8819.  
  8820.                     track_addchr(int <chr>);
  8821.  
  8822.                     track_free(int <handle>);
  8823.  
  8824.       Beschreibung  track und die damit verwandten  Funktionen werden verwen-
  8825.                     det, um bestimmte Zeichenketten,  die am Kommunikations--
  8826.                     Port  eingehen, abzupassen (ähnlich  wie mit waitfor) und
  8827.                     sie aufzuzeichnen. waitfor kann  jedoch nur eine Zeichen-
  8828.                     kette behandeln, während die Funktion track  mit (z. Zt.)
  8829.                     bis zu  16 Zeichenketten gleichzeitig arbeiten  kann, die
  8830.                     in jeglicher  Reihenfolge (oder überhaupt  nicht) auftre-
  8831.                     ten können.
  8832.  
  8833.                     Die  Funktion track  weist Telix  an, eine  in <trackstr>
  8834.                     hinterlegte Zeichenkette am Kommunikations-Port  abzupas-
  8835.                     sen. Wenn  <mode> gleich 0  ist, wird  Groß-/Kleinschrei-
  8836.                     bung hierbei  berücksichtigt, bei <mode> gleich  1 nicht.
  8837.                     Ersterer  Modus ist  schneller und sollte  besonders dann
  8838.                     benutzt  werden, wenn  viele Zeichenketten  erwartet wer-
  8839.                     den.  track  gibt  einen  Integer-Wert  aus,  der  ,track
  8840.                     handle' genannt wird und später verwendet  wird, wenn mit
  8841.                     track_hit  festgestellt werden  soll ob  die Zeichenkette
  8842.                     eingegangen ist.
  8843.  
  8844.                     Wenn track  aufgerufen wird,  dreht  Telix nicht  endlose
  8845.                     Schleifen,  um die  eingehenden Zeichen  abzupassen, son-
  8846.                     dern geht wieder  zu der Scriptdatei  über. Wenn  Zeichen
  8847.                     eingehen,  überprüft  Telix,  ob erwartete  Zeichenketten
  8848.                     darunter  sind und  markiert die  Übereinstimmungen. Eine
  8849.                     Scriptdatei kann jederzeit die  Funktion track_hit aufru-
  8850.                     fen und so feststellen,  ob die mit <handle>  bezeichnete
  8851.                     Zeichenkette empfangen  wurde. Wenn track_hit  einen Wert
  8852.                     ungleich 0 (TRUE)  ausgibt, ist  die Zeichenkette  einge-
  8853.                     gangen, bzw. 0 (FALSE), wenn nicht.  Die Markierung einer
  8854.                     Handle  verschwindet,  sobald  durch track_hit  angezeigt
  8855.                     wurde,  daß  die  entsprechende Zeichenkette  eingegangen
  8856.                     ist.
  8857.  
  8858.                     Während  des  Ablaufs einer  Scriptdatei  befindet  Telix
  8859.                     sich nicht im Terminal-Modus  und hat keinen Zugriff  auf
  8860.                     eingehende Zeichen,  um sie auf Übereinstimmungen mit er-
  8861.                     warteten   zu  überprüfen.  Aus   diesem  Grund  muß  die
  8862.                     Funktion  terminal  periodisch  aufgerufen werden,  damit
  8863.                     Telix  die  empfangenen  Zeichen  untersuchen  kann.  Die
  8864.                     Funktion  terminal wird  an  anderer Stelle  beschrieben.
  8865.                     Wenn  eine Befehlsdatei  jedoch selbst diese  Zeichen be-
  8866.                     arbeiten muß (mit einer  Funktion wie cgetc) und  deshalb
  8867.                     die  Funktion terminal  nicht aufrufen  kann,  werden die
  8868.                     Zeichen einer Routine  zur Prüfung auf  Übereinstimmungen
  8869.                     unterworfen. Hierfür  wird die Funktion  track_addchr be-
  8870.                     nutzt.  Wenn sie  aufgerufen  wird, behandelt  Telix  das
  8871.                     Zeichen  <chr> wie  ein vom  Terminalemulator empfangenes
  8872.                     und benutzt es zur Prüfung auf Übereinstimmung.
  8873.  
  8874.                     Die Funktion track_free wird  benutzt, um Telix vom  War-
  8875.  
  8876.                                       - 134 -
  8877.  
  8878.  
  8879.  
  8880.                     ten auf eine bestimmte Zeichenkette zu entbinden.  <hand-
  8881.                     le> ist der Wert, der dieser Zeichenkette bei  einem vor-
  8882.                     ausgegangenen Aufruf  der Funktion track  zugewiesen wur-
  8883.                     de. Es ist  sehr wichtig,  track_free aufzurufen,  sobald
  8884.                     es nicht  mehr nötig  ist, eine Zeichenkette  abzupassen,
  8885.                     da Telix langsamer werden  kann, wenn auf viele  Zeichen-
  8886.                     ketten gewartet wird. Wenn  <handle> gleich 0 ist,  been-
  8887.                     det Telix den Wartevorgang.
  8888.  
  8889.       Ausgabewert   Alle Funktionen geben  Integer-Werte aus, wie  vorstehend
  8890.                     beschrieben.
  8891.  
  8892.       Siehe auch    waitfor
  8893.  
  8894.       Beispiel      //  Einloggen bei  einem  BBS-System mit  Beant// wortung
  8895.                     zweier Abfragen in beliebiger
  8896.                     // Reihenfolge. Es soll endlos lange gewar-
  8897.                     // tet werden, so daß es für den aktuellen //    Gebrauch
  8898.       ein wenig abgeändert werden
  8899.                     // müßte.
  8900.                     // Beispiele  entnehmen Sie bitte den  Muster-// Befehls-
  8901.                     dateien.
  8902.  
  8903.                     int stat, t1, t2;
  8904.                     t1 = track("Name? "), 0);
  8905.                     t2 = track("Password? ", 0);
  8906.  
  8907.                     while (1)
  8908.                          // Endlosschleife, solange nötig
  8909.                      {
  8910.                      terminal();
  8911.                          // Aufruf der Funktion terminal, damit 
  8912.                          // Telix eingehende Zeichen auf Überein-
  8913.                          // stimmungen untersuchen und Telix
  8914.                          // Tastendrücke des Benutzers verarbei-
  8915.                          // ten kann.
  8916.  
  8917.                       stat=track_hit(0);
  8918.                          // Übereinstimmungen überprüfen
  8919.                         
  8920.                          if(stat==t1)
  8921.                          // Abfrage des Namens
  8922.                      cputs("Joe Smith^M");
  8923.                          // Namen senden, Schleife fortführen
  8924.  
  8925.                          if(stat==t2)
  8926.                          // Abfrage des Paßworts
  8927.                       {
  8928.                        cputs("mypass^M");
  8929.                          // Paßwort senden
  8930.                        break;
  8931.                          // und Schleife abbrechen
  8932.                         }
  8933.                       }
  8934.                     track_free(t1);
  8935.                          // track handles verwerfen
  8936.                     track_free(t2);
  8937.  
  8938.  
  8939.  
  8940.  
  8941.  
  8942.                                       - 135 -
  8943.  
  8944.  
  8945.  
  8946.       transtab
  8947.  
  8948.       Aufbau        transtab(str <filename>);  
  8949.                      // oder 
  8950.  
  8951.                     transtab(str <filename>, 0);
  8952.                     // für eingehende Zeichen
  8953.  
  8954.                     transtab(str <filename>, 1);
  8955.                     // für ausgehende Zeichen
  8956.  
  8957.       Beschreibung  Die Funktion  transtab wird  verwendet, um  Übersetzungs-
  8958.                     tabellen zu laden oder außer Kraft zu setzen. 
  8959.  
  8960.                     Wenn <filename> leer ist (""),  fragt Telix nach dem  Na-
  8961.                     men der zu ladenden Übersetzungstabelle.
  8962.  
  8963.                     Wenn   <filename>   den   gültigen    Namen   einer   Te-
  8964.                     lix-übersetzungstabelle enthält (aus dem  Telix-Übersetz-
  8965.                     ungstabellenmenü gesichert), wird diese geladen.
  8966.  
  8967.                     Ist  <filename>  "*CLEAR*",  wird die  aktuelle  geladene
  8968.                     Übersetzungstabelle  außer Kraft  gesetzt und  Telix wird
  8969.                     eingehende Zeichen nicht mehr übersetzen.
  8970.  
  8971.       Ausgabewert   Treten  beim  Laden einer  Übersetzungstabelle Schwierig-
  8972.                     keiten auf,  wird  -1 ausgegeben,  ansonsten ein  anderer
  8973.                     Wert ungleich 0 (TRUE).
  8974.  
  8975.       Beispiel      transtab("TELIX.XLT");
  8976.  
  8977.  
  8978.  
  8979.  
  8980.  
  8981.  
  8982.  
  8983.  
  8984.  
  8985.  
  8986.  
  8987.  
  8988.  
  8989.  
  8990.  
  8991.  
  8992.  
  8993.  
  8994.  
  8995.  
  8996.  
  8997.  
  8998.  
  8999.  
  9000.  
  9001.  
  9002.  
  9003.  
  9004.  
  9005.  
  9006.  
  9007.  
  9008.                                       - 136 -
  9009.  
  9010.  
  9011.  
  9012.       unload_scr
  9013.  
  9014.       Aufbau        unload_scr(str <filename>);
  9015.  
  9016.       Beschreibung  Die Funktion load_scr kann in einer  Scriptdatei dazu be-
  9017.                     nutzt werden, eine andere Scriptdatei in  den Speicher zu
  9018.                     laden,   bevor   sie   ausgeführt  wird.   Die   Funktion
  9019.                     unload_scr   sollte  dann   benutzt  werden,   wenn  eine
  9020.                     Scriptdatei  im folgenden  nicht  länger gebraucht  wird.
  9021.                     <filename>  ist  der Name  der Scriptdatei,  die  aus dem
  9022.                     Speicher  entfernt werden  soll. Fehlt  eine Erweiterung,
  9023.                     so wird .SLC  angenommen. Beachten Sie,  daß die  aktuell
  9024.                     ablaufende bzw. geladene Scriptdatei NICHT  entfernt wer-
  9025.                     den darf!
  9026.  
  9027.       Ausgabewert   Wenn die  Scriptdatei aus  irgendeinem Grunde  nicht ent-
  9028.                     fernt werden konnte, wird der Wert  -1 ausgegeben, anson-
  9029.                     sten wird ein Wert ungleich -1 ausgegeben.
  9030.  
  9031.       Siehe auch    load_scr, is_loaded
  9032.  
  9033.       Beispiel      int stat;
  9034.                     stat = load_scr("TEST");
  9035.                          // lade TEST.SLC
  9036.                     ...// bearbeite andere Dinge
  9037.                     unload_scr("TEST");
  9038.                      // speichere TEST.SLC ab
  9039.  
  9040.  
  9041.  
  9042.  
  9043.  
  9044.  
  9045.  
  9046.  
  9047.  
  9048.  
  9049.  
  9050.  
  9051.  
  9052.  
  9053.  
  9054.  
  9055.  
  9056.  
  9057.  
  9058.  
  9059.  
  9060.  
  9061.  
  9062.  
  9063.  
  9064.  
  9065.  
  9066.  
  9067.  
  9068.  
  9069.  
  9070.  
  9071.  
  9072.  
  9073.  
  9074.                                       - 137 -
  9075.  
  9076.  
  9077.  
  9078.       update_term
  9079.  
  9080.       Aufbau        update_term();
  9081.  
  9082.       Beschreibung  Die Funktion update_term wird  aufgerufen, um zu  gewähr-
  9083.                     leisten, daß  Telix bestimmte Bildschirm-  und Terminal--
  9084.                     Einstellungen aktualisiert. Z.  B. treten Änderungen  der
  9085.                     Systemvariablen  _back_color und _fore_color erst dann in
  9086.                     Kraft, nachdem  update_term aufgerufen  wurde. Auch  wird
  9087.                     Telix manchmal bis zu 15 Sekunden  benötigen, um die Sta-
  9088.                     tuszeile  zu  aktualisieren (und  sie zu  anderen Zeiten,
  9089.                     wenn  Befehlsdateien  ablaufen, unverändert  lassen). Der
  9090.                     Aufruf von update_term  gewährleistet die  Aktualisierung
  9091.                     der Statuszeile.
  9092.  
  9093.       Ausgabewert   keiner
  9094.  
  9095.       Beispiel      int temp;
  9096.                          // aktuelle Bildschirmfarben umkehren
  9097.                     temp = back_color;
  9098.                     back_color = fore_color;
  9099.                     fore_color = temp;
  9100.                     update_term();
  9101.  
  9102.  
  9103.  
  9104.  
  9105.  
  9106.  
  9107.  
  9108.  
  9109.  
  9110.  
  9111.  
  9112.  
  9113.  
  9114.  
  9115.  
  9116.  
  9117.  
  9118.  
  9119.  
  9120.  
  9121.  
  9122.  
  9123.  
  9124.  
  9125.  
  9126.  
  9127.  
  9128.  
  9129.  
  9130.  
  9131.  
  9132.  
  9133.  
  9134.  
  9135.  
  9136.  
  9137.  
  9138.  
  9139.  
  9140.                                       - 138 -
  9141.  
  9142.  
  9143.  
  9144.       usagelog
  9145.  
  9146.       Aufbau        usagelog(str <filename>);
  9147.  
  9148.       Beschreibung  Die Funktion  usagelog wird verwendet, um Telix' Möglich-
  9149.                     keiten zur Protokollierung zu aufzurufen.
  9150.  
  9151.                     Wenn <filename> leer ist,  fragt Telix den Namen der  Da-
  9152.                     tei  ab,  unter der  das Protokoll  geführt  werden soll,
  9153.                     genau wie nach Drücken von Alt-U im Terminalmodus.
  9154.  
  9155.                     Enthält <filename>  einen Dateinamen, wird  das Protokoll
  9156.                     unter diesem  Namen  geführt. Gewöhnlich  nennt  man  die
  9157.                     Standardprotokolldatei "TELIX.USE".
  9158.  
  9159.                     Ist <filename> gleich  "*CLOSE*", und die  Protokolldatei
  9160.                     gerade geöffnet, wird sie geschlossen.
  9161.  
  9162.       Ausgabewert   Wenn beim Ausführen der gewünschten  Operation Schwierig-
  9163.                     keiten  auftreten, wird -1  ausgegeben, ansonsten ein an-
  9164.                     derer Wert ungleich 0 (TRUE). 
  9165.  
  9166.       Siehe auch    ustamp
  9167.  
  9168.       Beispiel      usagelog("TELIX.USE");
  9169.  
  9170.  
  9171.  
  9172.  
  9173.  
  9174.  
  9175.  
  9176.  
  9177.  
  9178.  
  9179.  
  9180.  
  9181.  
  9182.  
  9183.  
  9184.  
  9185.  
  9186.  
  9187.  
  9188.  
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.  
  9196.  
  9197.  
  9198.  
  9199.  
  9200.  
  9201.  
  9202.  
  9203.  
  9204.  
  9205.  
  9206.                                       - 139 -
  9207.  
  9208.  
  9209.  
  9210.       usage_stat
  9211.  
  9212.       Aufbau        usage_stat();
  9213.  
  9214.       Beschreibung  Die usage_stat-Funktion liefert  einen Integer-Wert,  der
  9215.                     den  aktuellen  Status der  Benutzungs-Logdatei repräsen-
  9216.                     tiert.  Wenn  die  Benutzungsdatei gerade  geöffnet  ist,
  9217.                     wird  ein Wert  ungleich  0 (TRUE)  ausgegeben, ansonsten
  9218.                     wird 0 ausgegeben.
  9219.  
  9220.       Ausgabewert   Ein Integer-Wert, wie oben beschrieben.
  9221.  
  9222.       Siehe auch    capture_stat
  9223.  
  9224.  
  9225.  
  9226.  
  9227.  
  9228.  
  9229.  
  9230.  
  9231.  
  9232.  
  9233.  
  9234.  
  9235.  
  9236.  
  9237.  
  9238.  
  9239.  
  9240.  
  9241.  
  9242.  
  9243.  
  9244.  
  9245.  
  9246.  
  9247.  
  9248.  
  9249.  
  9250.  
  9251.  
  9252.  
  9253.  
  9254.  
  9255.  
  9256.  
  9257.  
  9258.  
  9259.  
  9260.  
  9261.  
  9262.  
  9263.  
  9264.  
  9265.  
  9266.  
  9267.  
  9268.  
  9269.  
  9270.  
  9271.  
  9272.                                       - 140 -
  9273.  
  9274.  
  9275.  
  9276.       ustamp
  9277.  
  9278.       Aufbau        ustamp(str <text>, int <new_entry>, int <add_nl>);
  9279.  
  9280.       Beschreibung  Die Funktion ustamp wird verwendet, um  einen Text inner-
  9281.                     halb  des  Telix-Benutzungsprotokolls  einzutragen.  Wenn
  9282.                     die Protokolldatei  gerade nicht geöffnet ist,  wird die-
  9283.                     ser  Funktionsaufruf einfach  ignoriert.  <text> ist  der
  9284.                     Eintrag,  der  im  Protokoll gemacht  werden  soll.  Wenn
  9285.                     <new_entry>  einen Wert  ungleich 0 (TRUE)  enthält, wird
  9286.                     das aktuelle  Datum sowie die  Uhrzeit vor  den Text  ge-
  9287.                     setzt,  ansonsten wird  angenommen, daß  es sich  um eine
  9288.                     Fortsetzung des vorausgehenden  Eintrags handelt und  Da-
  9289.                     tum/Uhrzeit  wird nicht  eingesetzt. Wenn  <add_nl> einem
  9290.                     Wert ungleich 0 (TRUE) entspricht, wird  dem Eintrag Car-
  9291.                     riage Return  und Line Feed hinterhergeschoben.  Dies ist
  9292.                     gewöhnlich der  Fall, es sei  denn, auf diese  Zeile soll
  9293.                     noch etwas geschrieben werden.
  9294.  
  9295.       Ausgabewert   Wenn  beim Eintragen in  die Protokolldatei Probleme auf-
  9296.                     treten, wird  -1 ausgegeben,  ansonsten ein  anderer Wert
  9297.                     ungleich 0 (TRUE).
  9298.  
  9299.       Siehe auch    usagelog
  9300.  
  9301.       Beispiel      ustamp("Aufruf des Benutzer-Unterprogramms... ", 1, 0);
  9302.                     if (user_sub == -1)
  9303.                       ustamp("erfolglos!, 0, 1);
  9304.                     else
  9305.                       ustamp("erfolreich", 0, 1);
  9306.  
  9307.  
  9308.  
  9309.  
  9310.  
  9311.  
  9312.  
  9313.  
  9314.  
  9315.  
  9316.  
  9317.  
  9318.  
  9319.  
  9320.  
  9321.  
  9322.  
  9323.  
  9324.  
  9325.  
  9326.  
  9327.  
  9328.  
  9329.  
  9330.  
  9331.  
  9332.  
  9333.  
  9334.  
  9335.  
  9336.  
  9337.  
  9338.                                       - 141 -
  9339.  
  9340.  
  9341.  
  9342.       vgetchr
  9343.  
  9344.       Aufbau        vgetchr();
  9345.  
  9346.       Beschreibung  Die Funktion vgetchr  wird benutzt, um  das Zeichen  (in-
  9347.                     klusive Farbinformation) an der  aktuellen Cursorposition
  9348.                     am  Bildschirm  einzulesen. Der  Ausgabewert  enthält das
  9349.                     Zeichen im  ersten (low) Byte  und die Farbe  des Zeichen
  9350.                     im zweiten  (higher) Byte.  Jede Komponente  kann mittels
  9351.                     der & und / Operatoren abgerufen  werden, wie im nachfol-
  9352.                     genden  Beispiel beschrieben.  Wenn  ,c' der  ausgegebene
  9353.                     Zeichen-/Farbwert  ist,  kann grundsätzlich  der Zeichen-
  9354.                     wert für sich durch den Ausdruck
  9355.  
  9356.                          (c & 255)
  9357.  
  9358.                      abgerufen werden, während der Farbwert
  9359.  
  9360.                          (c / 256)
  9361.  
  9362.                     ist.
  9363.  
  9364.       Ausgabewert   Ein Integerwert wie oben beschrieben.
  9365.  
  9366.       Siehe auch    vgetchrs, vgetchrsa, vputchr
  9367.  
  9368.       Beispiel      int chr;
  9369.                     chr = vgetchr();
  9370.                          // Zeichen/Farbe an der aktuellen 
  9371.                          // Cursorposition einlesen
  9372.  
  9373.                     printsc("Das Zeichen heißt ");
  9374.                     printc(chr & 255);
  9375.                          // Ausgabe des Zeichens ohne Farbinfor// mation
  9376.  
  9377.                     printsc(" mit einem Farbwert von ");
  9378.                     printn(chr / 256);
  9379.                          // Hinzufügen des Farbbytes.
  9380.  
  9381.  
  9382.  
  9383.  
  9384.  
  9385.  
  9386.  
  9387.  
  9388.  
  9389.  
  9390.  
  9391.  
  9392.  
  9393.  
  9394.  
  9395.  
  9396.  
  9397.  
  9398.  
  9399.  
  9400.  
  9401.  
  9402.  
  9403.  
  9404.                                       - 142 -
  9405.  
  9406.  
  9407.  
  9408.       vgetchrs, vgetchrsa
  9409.  
  9410.       Aufbau        vgetchrs(int  <x>,  int <y>,  str <buf>,  int  <pos>, int
  9411.                     <num>);
  9412.  
  9413.                     vgetchrsa(int  <x>, int  <y>, str  <buf>, int  <pos>, int
  9414.                     <num>);
  9415.  
  9416.       Beschreibung  Die Funktionen  vgetchrs und  vgetchrsa dienem  dem Lesen
  9417.                     mehrerer  Zeichen aus  dem Bildschirmspeicher.  Die erste
  9418.                     Funktion liest nur  Buchstaben (eine  Sequenz von  Bytes)
  9419.                     in  den  Puffer, während  die zweite  auch  die Farbwerte
  9420.                     (Serie  von  Doppel-Bytes) liest.  <x> und  <y>  sind die
  9421.                     Bildschirmkoordinaten, aus denen eingelesen  werden soll.
  9422.                     <buf>  ist  der Puffer,  in dem  die  Zeichen gespeichert
  9423.                     werden.  <pos> ist  der Offset im  Puffer für  den ersten
  9424.                     Buchstaben.  Beachten  Sie, daß  jedes  Zeichen, das  mit
  9425.                     vgetchrsa  eingelesen  wird, zwei  Bytes  im  Puffer ein-
  9426.                     nimmt, da  auch der  Farbwert gespeichert wird.  Beachten
  9427.                     Sie  außerdem, daß diese Funktion keine  0 (NULL als Zei-
  9428.                     chen für  Stringende) setzt.  Wenn die  ausgegebenen Zei-
  9429.                     chen als  Zeichenfolge behandelt werden  sollen, muß  mit
  9430.                     der Funktion setchr eine 0 am Ende angefügt werden.
  9431.  
  9432.       Ausgabewert   keiner
  9433.  
  9434.       Beispiel      // kopiere 20 Zeichen beginnend bei (10,10) 
  9435.                     // auf dem Bildschirm nach (20,20)
  9436.                     // kopiere keine Farbwerte 
  9437.                     str buffer[20];
  9438.                     vgetchrs(10, 10, buffer, 0, 20);
  9439.                     vputchrs(20, 20, buffer, 0, 20);
  9440.  
  9441.                     // kopiere ein 20 x 10 Raster von Zeichen, 
  9442.                     // inklusive Farbwerte, mit oberer linker
  9443.                     // Ecke (10,5) nach (40,7)
  9444.                     str buffer[400];
  9445.                     // 20 breit x 10 hoch x 2 Bytes pro
  9446.                     // Zeichen
  9447.                     int y;
  9448.                     for (y = 5; y < 15; y = y+1)
  9449.                     // lese Zeichen in einer Schleife
  9450.                       vgetchrsa(10, y, buffer, 2 * 20 * (y - 5),
  9451.                      20);
  9452.                     for (y = 7; y < 17; y = y+1)
  9453.                     // schreibe sie in einer Schleife
  9454.  
  9455.  
  9456.  
  9457.  
  9458.  
  9459.  
  9460.  
  9461.  
  9462.  
  9463.  
  9464.  
  9465.  
  9466.  
  9467.  
  9468.  
  9469.  
  9470.                                       - 143 -
  9471.  
  9472.  
  9473.  
  9474.       vputchr
  9475.  
  9476.       Aufbau        vputchr(int <chr>);
  9477.  
  9478.       Beschreibung  Die Funktion vputchr wird  verwendet, um ein Zeichen  auf
  9479.                     dem Bildschirm an die aktuelle Cursorposition  zu setzen.
  9480.                     Gleichzeitig   wird  die   Farbinformation  spezifiziert.
  9481.                     <chr> ist das betreffende  Zeichen. Das erste (low)  Byte
  9482.                     enthält  den  ASCII- Wert  des Zeichens,  und  das zweite
  9483.                     Byte den Farbwert. Wenn  ,c' das Zeichen ist  und ,color'
  9484.                     die zu verwendende  Farbe, wird der  richtige Wert  durch
  9485.                     den Ausdruck
  9486.  
  9487.                          (c + color * 256)
  9488.  
  9489.                     erreicht.
  9490.  
  9491.       Ausgabewert   keiner
  9492.  
  9493.       Siehe auch    vgetchr
  9494.  
  9495.       Beispiel      // Ein inverses ,X' soll in die linke obere
  9496.                     // Ecke des Bildschirms gesetzt werden.
  9497.  
  9498.                     gotoxy(0, 0);
  9499.                     vputchr(,X' + 112 * 256);
  9500.  
  9501.  
  9502.  
  9503.  
  9504.  
  9505.  
  9506.  
  9507.  
  9508.  
  9509.  
  9510.  
  9511.  
  9512.  
  9513.  
  9514.  
  9515.  
  9516.  
  9517.  
  9518.  
  9519.  
  9520.  
  9521.  
  9522.  
  9523.  
  9524.  
  9525.  
  9526.  
  9527.  
  9528.  
  9529.  
  9530.  
  9531.  
  9532.  
  9533.  
  9534.  
  9535.  
  9536.                                       - 144 -
  9537.  
  9538.  
  9539.  
  9540.       vputchrs, vputchrsa
  9541.  
  9542.       Aufbau        vputchrs(int  <x>,  int <y>,  str <buf>,  int  <pos>, int
  9543.                     <num>, int <attr>);
  9544.  
  9545.                     vputchrsa(int  <x>, int  <y>, str  <buf>, int  <pos>, int
  9546.                     <num>);
  9547.  
  9548.       Beschreibung  Die Funktionen  vputchrs und vputchrsa  schreiben mehrere
  9549.                     Zeichen in den  Bildschirmspeicher. Bei der  ersten Funk-
  9550.                     tion wird angenommen,  daß die  Zeichenfolge keine  Farb-
  9551.                     werte enthält. Die in  den Bildschirm geschriebenen  Zei-
  9552.                     chen  haben  den in  <attr> gewählten  Farbwert.  Bei der
  9553.                     zweiten Funktion  wird angenommen, daß jedem  Zeichen der
  9554.                     Zeichenfolge  sofort ein  Farbwert  folgt (Sequenzen  von
  9555.                     Doppel-Bytes). <x> und  <y> sind die  Bildschirmkoordina-
  9556.                     ten, an  denen das Schreiben begonnen wird. <buf> ist der
  9557.                     Puffer,  aus dem  die Zeichen  gelesen werden.  <pos> ist
  9558.                     der Offset an  dem begonnen wird. Bei  der Wahl des  Off-
  9559.                     sets, sollten Sie  beachten, daß jedes  Zeichen, das  mit
  9560.                     vputchrsa geschrieben  wird, zwei  Bytes in  der Zeichen-
  9561.                     folge ein-nimmt, da auch ein Farbwert definiert wird.
  9562.  
  9563.       Ausgabewert   keiner
  9564.  
  9565.       Beispiel      // kopiere 20 Zeichen beginnend bei (10,10)
  9566.                     // auf dem Bildschirm nach (20,20)
  9567.                     // kopiere keine Farbwerte
  9568.                     str buffer[20];
  9569.                     vgetchrs(10, 10, buffer, 0, 20);
  9570.                     vputchrs(20, 20, buffer, 0, 20);
  9571.  
  9572.                     // kopiere ein 20  x 10 Raster von Zeichen,  // inklusive
  9573.                     Farbwerte, mit oberer linker 
  9574.                     // Ecke (10,5) nach (40,7)
  9575.                     str buffer[400];
  9576.                     // 20 breit x 10 hoch x 2 Bytes pro
  9577.                     // Zeichen
  9578.                     int y;
  9579.                     for (y = 5; y < 15; y = y+1)
  9580.                     // lese Zeichen in einer Schleife
  9581.                      vgetchrsa(10, y, buffer, 2 * 20 * (y - 5),
  9582.                       20);
  9583.                     for (y = 7; y < 17; y = y+1)
  9584.                     // schreibe sie in einer Schleife
  9585.  
  9586.  
  9587.  
  9588.  
  9589.  
  9590.  
  9591.  
  9592.  
  9593.  
  9594.  
  9595.  
  9596.  
  9597.  
  9598.  
  9599.  
  9600.  
  9601.  
  9602.                                       - 145 -
  9603.  
  9604.  
  9605.  
  9606.       vrstrarea
  9607.  
  9608.       Aufbau        vrstrarea(int <vhandle>);
  9609.  
  9610.       Beschreibung  Die Funktion vrstrarea wird  benutzt, um einen zuvor  ge-
  9611.                     sicherten Bildschirmbereich  neu zu laden.  <vhandle> ist
  9612.                     das Bildinformationsbezeichner, der  beim letzten  Aufruf
  9613.                     von vsavearea  zum Sichern des  Bildschirmbereichs ausge-
  9614.                     geben wurde.
  9615.  
  9616.                     Beachten Sie  bitte, daß es  sich bei <vhandle>  um einen
  9617.                     gültigen Bezeichner  handeln muß, der zuvor von vsavearea
  9618.                     ausgegeben  wurde, da  sonst unverhersehbare  Folgen ein-
  9619.                     treten.
  9620.  
  9621.       Ausgabewert   keiner
  9622.  
  9623.       Siehe auch    vsavearea
  9624.  
  9625.  
  9626.  
  9627.  
  9628.  
  9629.  
  9630.  
  9631.  
  9632.  
  9633.  
  9634.  
  9635.  
  9636.  
  9637.  
  9638.  
  9639.  
  9640.  
  9641.  
  9642.  
  9643.  
  9644.  
  9645.  
  9646.  
  9647.  
  9648.  
  9649.  
  9650.  
  9651.  
  9652.  
  9653.  
  9654.  
  9655.  
  9656.  
  9657.  
  9658.  
  9659.  
  9660.  
  9661.  
  9662.  
  9663.  
  9664.  
  9665.  
  9666.  
  9667.  
  9668.                                       - 146 -
  9669.  
  9670.  
  9671.  
  9672.       vsavearea
  9673.  
  9674.       Aufbau        vsavearea(int <x1>, int <y1>, int <x2>, int <y2>);
  9675.  
  9676.       Beschreibung  Die Funktion  vsavearea wird  verwendet, um einen  recht-
  9677.                     eckigen  Teil des Bildschirms  (der später wieder geladen
  9678.                     werden soll)  zu sichern. <x1>, <y1> ist  die obere linke
  9679.                     Ecke des zu sichernden  Bereichs und <<x2>, <y2> die  un-
  9680.                     tere  rechte Ecke.  Die Zeichen  (und deren  Farben), die
  9681.                     sich gerade in diesem Rechteck befinden,  werden in einen
  9682.                     Puffer  gesichert und  ein  ,handle' ausgegeben,  welches
  9683.                     gespeichert und  beim nachfolgenden Aufruf  von vrstrarea
  9684.                     zum  erneuten  Laden des  gesicherten  Bereichs verwendet
  9685.                     werden  muß.   Wenn  nicht  genügend   Speicherplatz  zum
  9686.                     Sichern  der Videobytes  vorhanden  ist, wird  statt  des
  9687.                     Handles der Wert -1 ausgegeben.
  9688.  
  9689.                     Beachten Sie, daß  Telix nur  einen begrenzten  Speicher-
  9690.                     raum zur  Verfügung hat,  um diese Funktion  auszuführen.
  9691.                     Mit diesem Befehl sollten  immer nur so viele  Bildschir-
  9692.                     mausschnitte gespeichert  werden, daß sie  zusammen einen
  9693.                     gesamten Bildschirm ergäben. 
  9694.  
  9695.                     Es ist ebenfalls  sehr wichtig, daß  jedem Aufruf  dieser
  9696.                     Funktion der Befehl  vrstrarea folgt. Ansonsten wird  der
  9697.                     verfügbare Speicherplatz vollkommen aufgebraucht.
  9698.  
  9699.       Ausgabewert   Ein Integerwert, der für  das Handle des gesicherten  Be-
  9700.                     reichs steht.
  9701.  
  9702.       Siehe auch    vstrarea
  9703.  
  9704.       Beispiel      int vhandle;
  9705.  
  9706.                     vhandle = vsavearea(0, 0, 79, 24);
  9707.                          // Sichern des aktuellen 
  9708.                          // Bildschirminhalts 
  9709.                     myfunc();
  9710.                          // Aufruf einer Funktion,
  9711.                          // die den Bildschirm ändert 
  9712.                     vrstrarea(vhandle)
  9713.                          // erneutes Laden des
  9714.                          // alten Bildschirminhalts
  9715.  
  9716.  
  9717.  
  9718.  
  9719.  
  9720.  
  9721.  
  9722.  
  9723.  
  9724.  
  9725.  
  9726.  
  9727.  
  9728.  
  9729.  
  9730.  
  9731.  
  9732.  
  9733.  
  9734.                                       - 147 -
  9735.  
  9736.  
  9737.  
  9738.       waitfor
  9739.  
  9740.       Aufbau        waitfor(str <waitstr>, int <timeout>);
  9741.  
  9742.       Beschreibung  Die Funktion waitfor wird benutzt, um  auf das Eintreffen
  9743.                     einer bestimmten Zeichenkette  am Kommunikations-Port  zu
  9744.                     warten. Bei <timeout>  handelt es sich  um die  Zeitpanne
  9745.                     (in Sekunden), die maximal auf die Zeichenkette  gewartet
  9746.                     werden  soll. Auf  Groß-  oder  Kleinschreibung kommt  es
  9747.                     nicht an. Die  Zeichenkette darf nicht  mehr als 40  Zei-
  9748.                     chen enthalten.
  9749.  
  9750.       Ausgabewert   Es  wird ein Wert ungleich  0 (TRUE) ausgegeben, wenn die
  9751.                     Zeichenkette innerhalb der vorgegebenen  Zeit von der se-
  9752.                     riellen Schnittstelle eingeht, sonst wird 0 (FALSE)  aus-
  9753.                     gegeben.
  9754.  
  9755.       Siehe auch    track
  9756.  
  9757.       Beispiel      if (waitfor("name?", 1800)
  9758.                      prints("Zeichenkette ,name?' vom Modem   
  9759.                      empfangen.");
  9760.                     else
  9761.                      {
  9762.                      prints("Zeichenkette ,name?' wurde  während     3 Minu-
  9763.                     ten");
  9764.                       prints("nicht vom Modem empfangen!");
  9765.                      }
  9766.  
  9767.  
  9768.  
  9769.  
  9770.  
  9771.  
  9772.  
  9773.  
  9774.  
  9775.  
  9776.  
  9777.  
  9778.  
  9779.  
  9780.  
  9781.  
  9782.  
  9783.  
  9784.  
  9785.  
  9786.  
  9787.  
  9788.  
  9789.  
  9790.  
  9791.  
  9792.  
  9793.  
  9794.  
  9795.  
  9796.  
  9797.  
  9798.  
  9799.  
  9800.                                       - 148 -
  9801.  
  9802.  
  9803.  
  9804.  
  9805.  
  9806.  
  9807.  
  9808.  
  9809.  
  9810.  
  9811.  
  9812.  
  9813.  
  9814.  
  9815.  
  9816.  
  9817.  
  9818.  
  9819.  
  9820.  
  9821.  
  9822.  
  9823.  
  9824.  
  9825.  
  9826.  
  9827.  
  9828.  
  9829.  
  9830.  
  9831.  
  9832.  
  9833.  
  9834.  
  9835.  
  9836.  
  9837.  
  9838.  
  9839.  
  9840.  
  9841.  
  9842.  
  9843.  
  9844.  
  9845.  
  9846.  
  9847.  
  9848.  
  9849.  
  9850.  
  9851.  
  9852.  
  9853.  
  9854.  
  9855.  
  9856.  
  9857.  
  9858.  
  9859.  
  9860.  
  9861.  
  9862.  
  9863.  
  9864.  
  9865.  
  9866.                                       - 149 -
  9867.  
  9868.  
  9869.  
  9870.       5.            Systemvariablen
  9871.  
  9872.       Telix besitzt eine  Vielzahl vordefinierter Variablen.  Sie werden  Sy-
  9873.       stemvariablen  genannt und  dienen der  Speicherung interner Telix-Ein-
  9874.       stellungen. Es  gibt Systemvariablen, die  Zeichenketten enthalten  und
  9875.       solche numerischer Art. Man kann auf sie zugreifen, wie  auf jede ande-
  9876.       re  Variable. Zur  Unterscheidung von  normalen Variablen  beginnen sie
  9877.       alle mit dem Unterstrich (_).
  9878.  
  9879.       Auf den folgenden  Seiten werden alle  Systemvariablen beschrieben.  Zu
  9880.       jeder Variable werden  Aufbau und Beschreibung  geliefert. Häufig  wird
  9881.       auch ein Anwendungsbeispiel für die Variable aufgeführt.
  9882.  
  9883.       Die Variablen erscheinen  in alphabetischer Reihenfolge.  Um Ihnen  das
  9884.       Auffinden verwandter  Variablen (und eingebauter  Funktionen) zu erlei-
  9885.       chern, enthalten fast alle Variablen Querverweise unter "Siehe auch".
  9886.  
  9887.  
  9888.  
  9889.  
  9890.  
  9891.  
  9892.  
  9893.  
  9894.  
  9895.  
  9896.  
  9897.  
  9898.  
  9899.  
  9900.  
  9901.  
  9902.  
  9903.  
  9904.  
  9905.  
  9906.  
  9907.  
  9908.  
  9909.  
  9910.  
  9911.  
  9912.  
  9913.  
  9914.  
  9915.  
  9916.  
  9917.  
  9918.  
  9919.  
  9920.  
  9921.  
  9922.  
  9923.  
  9924.  
  9925.  
  9926.  
  9927.  
  9928.  
  9929.  
  9930.  
  9931.  
  9932.                                       - 150 -
  9933.  
  9934.  
  9935.  
  9936.       _add_lf
  9937.  
  9938.       Aufbau        int _add_lf;
  9939.  
  9940.       Beschreibung  Wenn die Variable _add_lf  auf ungleich 0 (TRUE)  gesetzt
  9941.                     ist, wird  jedem eingehenden Carriage  Return-Zeichen ein
  9942.                     Line Feed hinzugefügt.
  9943.  
  9944.  
  9945.  
  9946.  
  9947.  
  9948.  
  9949.  
  9950.  
  9951.  
  9952.  
  9953.  
  9954.  
  9955.  
  9956.  
  9957.  
  9958.  
  9959.  
  9960.  
  9961.  
  9962.  
  9963.  
  9964.  
  9965.  
  9966.  
  9967.  
  9968.  
  9969.  
  9970.  
  9971.  
  9972.  
  9973.  
  9974.  
  9975.  
  9976.  
  9977.  
  9978.  
  9979.  
  9980.  
  9981.  
  9982.  
  9983.  
  9984.  
  9985.  
  9986.  
  9987.  
  9988.  
  9989.  
  9990.  
  9991.  
  9992.  
  9993.  
  9994.  
  9995.  
  9996.  
  9997.  
  9998.                                       - 151 -
  9999.  
  10000.  
  10001.  
  10002.       _alarm_on
  10003.  
  10004.       Aufbau        int _alarm_on;
  10005.  
  10006.       Beschreibung  Wenn  die Variable  _alarm_on auf  ungleich 0  (TRUE) ge-
  10007.                     setzt ist, sind  die Telix-Alarme in  Kraft gesetzt.  Be-
  10008.                     achten  Sie bitte,  daß  hierfür  die Variable  _sound_on
  10009.                     nicht auf  0 (FALSE) gesetzt sein darf, sonst werden kei-
  10010.                     nerlei Alarme gehört.
  10011.  
  10012.       Siehe auch    _sound_on
  10013.  
  10014.  
  10015.  
  10016.  
  10017.  
  10018.  
  10019.  
  10020.  
  10021.  
  10022.  
  10023.  
  10024.  
  10025.  
  10026.  
  10027.  
  10028.  
  10029.  
  10030.  
  10031.  
  10032.  
  10033.  
  10034.  
  10035.  
  10036.  
  10037.  
  10038.  
  10039.  
  10040.  
  10041.  
  10042.  
  10043.  
  10044.  
  10045.  
  10046.  
  10047.  
  10048.  
  10049.  
  10050.  
  10051.  
  10052.  
  10053.  
  10054.  
  10055.  
  10056.  
  10057.  
  10058.  
  10059.  
  10060.  
  10061.  
  10062.  
  10063.  
  10064.                                       - 152 -
  10065.  
  10066.  
  10067.  
  10068.       _answerback_str
  10069.  
  10070.       Aufbau        str _answerback_str[19];
  10071.  
  10072.       Beschreibung  Die Systemvariable _answerback_str  enthält die  Zeichen-
  10073.                     kette, die Telix senden  wird, wenn im Terminalmodus  ein
  10074.                     Ctrl-E (ENQ) Zeichen empfangen  wird. Wenn diese Zeichen-
  10075.                     kette leer ist, wird  nichts gesendet. Beachten Sie  bit-
  10076.                     te, daß  diese Antwortzeichenkette  nicht gesendet  wird,
  10077.                     wenn Compuserve-B-Übertragungen erlaubt  sind, da  Compu-
  10078.                     serve das  Ctrl-E innerhalb des  Übertragungsvorgangs be-
  10079.                     nutzt. Die maximale Länge beträgt 19 Zeichen.
  10080.  
  10081.  
  10082.  
  10083.  
  10084.  
  10085.  
  10086.  
  10087.  
  10088.  
  10089.  
  10090.  
  10091.  
  10092.  
  10093.  
  10094.  
  10095.  
  10096.  
  10097.  
  10098.  
  10099.  
  10100.  
  10101.  
  10102.  
  10103.  
  10104.  
  10105.  
  10106.  
  10107.  
  10108.  
  10109.  
  10110.  
  10111.  
  10112.  
  10113.  
  10114.  
  10115.  
  10116.  
  10117.  
  10118.  
  10119.  
  10120.  
  10121.  
  10122.  
  10123.  
  10124.  
  10125.  
  10126.  
  10127.  
  10128.  
  10129.  
  10130.                                       - 153 -
  10131.  
  10132.  
  10133.  
  10134.       _asc_rcrtrans - _asc_striph
  10135.  
  10136.       Aufbau        int _asc_rcrtrans;
  10137.  
  10138.                     int _asc_remabort;
  10139.  
  10140.                     int _asc_rlftrans;
  10141.  
  10142.                     int _asc_scpacing;
  10143.  
  10144.                     int _asc_scrtrans;
  10145.  
  10146.                     int _asc_secho;
  10147.  
  10148.                     int _asc_sexpand;
  10149.  
  10150.                     int _asc_slftrans;
  10151.  
  10152.                     int _asc_slpacing;
  10153.  
  10154.                     int _asc_spacechr;
  10155.  
  10156.                     int _asc_striph;
  10157.  
  10158.       Beschreibung  _asc_rcrtrans  bestimmt darüber,  was Telix  beim ASCII--
  10159.                     Empfang mit Carriage Return-Zeichen macht. 0  = nichts, 1
  10160.                     = weglassen, 2 = Line Feeds hinzufügen.
  10161.  
  10162.                     _asc_remabort ist das Zeichen,  welches - wenn im  Rahmen
  10163.                     einer ASCII-Übertragung von der  entfernten Seite empfan-
  10164.                     gen -  das Signal  für den  Abbruch der Übertragung  dar-
  10165.                     stellt.
  10166.  
  10167.                     _asc_rlftrans     bestimmt     darüber,     was     Telix
  10168.                     beim  ASCII-Empfang  mit  Line Feed-Zeichen  macht.  0  =
  10169.                     nichts;1 = weglassen; 2 = Carriage Returns voranstellen.
  10170.  
  10171.                     _asc_scpasing  ist die Zeitspanne (in Millisekunden), die
  10172.                     Telix  während  ASCII-Sendungen zwischen  der Übertragung
  10173.                     der einzelnen Zeichen warten soll.
  10174.  
  10175.                     _asc_scrtrans bestimmt darüber, was  Telix bei ASCII-Sen-
  10176.                     dungen mit Carriage Return-Zeichen  macht. 0 = nichts;  1
  10177.                     = weglassen; 2 = Line Feeds hinzufügen.
  10178.  
  10179.                     Wenn _asc_secho auf ungleich  0 (TRUE) gesetzt ist,  wird
  10180.                     Telix während ASCII-Sendungen jedes Zeichen echoen.
  10181.  
  10182.                     Wenn  _asc_sexpand auf  ungleich  0  (TRUE) gesetzt  ist,
  10183.                     wird  Telix während  ASCII-Sendungen Leerzeilen  zu einem
  10184.                     Leerzeichen verarbeiten.
  10185.  
  10186.                     _asc_slftran  bestimmt darüber, was Telix während ASCII--
  10187.                     Sendungen mit  Line Feed-Zeichen macht.  0 = nichts;  1 =
  10188.                     weglassen; 2 = Carriage Returns voranstellen.
  10189.  
  10190.                     _asc_slpacing  ist  die Zeitspanne  (in Zehntelsekunden),
  10191.                     die  Telix bei  ASCII-Sendungen zwischen  der Übertragung
  10192.                     der einzelnen Zeilen warten soll. 
  10193.  
  10194.                     _asc_spacechr ist das Zeichen, auf das  Telix bei ASCII--
  10195.  
  10196.                                       - 154 -
  10197.  
  10198.  
  10199.  
  10200.                     Sendungen vor  der Übertragung der  einzelnen Zeilen war-
  10201.                     ten soll (0 bedeutet, daß Telix nicht warten soll).
  10202.  
  10203.                     Wenn _asc_striph auf ungleich 0 (TRUE)  gesetzt ist, wird
  10204.                     Telix  bei ASCII-Übertragungen das höchste (most signifi-
  10205.                     cant) Bit jedes Zeichens weglassen.
  10206.  
  10207.  
  10208.  
  10209.  
  10210.  
  10211.  
  10212.  
  10213.  
  10214.  
  10215.  
  10216.  
  10217.  
  10218.  
  10219.  
  10220.  
  10221.  
  10222.  
  10223.  
  10224.  
  10225.  
  10226.  
  10227.  
  10228.  
  10229.  
  10230.  
  10231.  
  10232.  
  10233.  
  10234.  
  10235.  
  10236.  
  10237.  
  10238.  
  10239.  
  10240.  
  10241.  
  10242.  
  10243.  
  10244.  
  10245.  
  10246.  
  10247.  
  10248.  
  10249.  
  10250.  
  10251.  
  10252.  
  10253.  
  10254.  
  10255.  
  10256.  
  10257.  
  10258.  
  10259.  
  10260.  
  10261.  
  10262.                                       - 155 -
  10263.  
  10264.  
  10265.  
  10266.       _auto_ans_str
  10267.  
  10268.       Aufbau        str _auto_ans_str[48];
  10269.  
  10270.       Beschreibung  Die  Variable _auto_ans_str enthält die Zeichenkette, die
  10271.                     dem Modem gesandt wird, damit es  Anrufe automatisch ent-
  10272.                     gegennimmt.  Diese Zeichenkette  wird u.  a. von  der Be-
  10273.                     fehlsdatei für  den Host-Modus verwendet.  Diese Zeichen-
  10274.                     kette  kann Übersetzungszeichen  enthalten,  wie im  ent-
  10275.                     sprechenden  Abschnitt  des Telix-Bedienerhandbuches  be-
  10276.                     schrieben  und  sollte  dem  Modem mittels  der  Funktion
  10277.                     cputs_tr übersandt  werden. Die maximale Länge beträgt 49
  10278.                     Zeichen.
  10279.  
  10280.       Siehe auch    _mdm_init_string
  10281.  
  10282.  
  10283.  
  10284.  
  10285.  
  10286.  
  10287.  
  10288.  
  10289.  
  10290.  
  10291.  
  10292.  
  10293.  
  10294.  
  10295.  
  10296.  
  10297.  
  10298.  
  10299.  
  10300.  
  10301.  
  10302.  
  10303.  
  10304.  
  10305.  
  10306.  
  10307.  
  10308.  
  10309.  
  10310.  
  10311.  
  10312.  
  10313.  
  10314.  
  10315.  
  10316.  
  10317.  
  10318.  
  10319.  
  10320.  
  10321.  
  10322.  
  10323.  
  10324.  
  10325.  
  10326.  
  10327.  
  10328.                                       - 156 -
  10329.  
  10330.  
  10331.  
  10332.       _back_color
  10333.  
  10334.       Aufbau        int _back_color;
  10335.  
  10336.       Beschreibung  Die  Variable  _back_color enthält  die Hintergrundfarbe,
  10337.                     die  im Terminal-Modus für  Texte verwendet  werden soll.
  10338.                     Zulässige Werte sind  0 bis 15.  Beachten Sie bitte,  daß
  10339.                     Änderungen  dieser Variable  erst  in Kraft  treten, wenn
  10340.                     der Bildschirminhalt gelöscht wurde.
  10341.  
  10342.       Siehe auch    _fore_color
  10343.  
  10344.  
  10345.  
  10346.  
  10347.  
  10348.  
  10349.  
  10350.  
  10351.  
  10352.  
  10353.  
  10354.  
  10355.  
  10356.  
  10357.  
  10358.  
  10359.  
  10360.  
  10361.  
  10362.  
  10363.  
  10364.  
  10365.  
  10366.  
  10367.  
  10368.  
  10369.  
  10370.  
  10371.  
  10372.  
  10373.  
  10374.  
  10375.  
  10376.  
  10377.  
  10378.  
  10379.  
  10380.  
  10381.  
  10382.  
  10383.  
  10384.  
  10385.  
  10386.  
  10387.  
  10388.  
  10389.  
  10390.  
  10391.  
  10392.  
  10393.  
  10394.                                       - 157 -
  10395.  
  10396.  
  10397.  
  10398.       _capture_fname
  10399.  
  10400.       Aufbau        str _capture_fname[64];
  10401.  
  10402.       Beschreibung  Die Systemvariable _capture_fname  enthält den  Standard-
  10403.                     namen  der Protokolldatei. Die  maximale Länge beträgt 64
  10404.                     Zeichen.
  10405.  
  10406.       Siehe auch    _usage_fname
  10407.  
  10408.  
  10409.  
  10410.  
  10411.  
  10412.  
  10413.  
  10414.  
  10415.  
  10416.  
  10417.  
  10418.  
  10419.  
  10420.  
  10421.  
  10422.  
  10423.  
  10424.  
  10425.  
  10426.  
  10427.  
  10428.  
  10429.  
  10430.  
  10431.  
  10432.  
  10433.  
  10434.  
  10435.  
  10436.  
  10437.  
  10438.  
  10439.  
  10440.  
  10441.  
  10442.  
  10443.  
  10444.  
  10445.  
  10446.  
  10447.  
  10448.  
  10449.  
  10450.  
  10451.  
  10452.  
  10453.  
  10454.  
  10455.  
  10456.  
  10457.  
  10458.  
  10459.  
  10460.                                       - 158 -
  10461.  
  10462.  
  10463.  
  10464.       _cisb_auto
  10465.  
  10466.       Aufbau        int _cisb_auto;
  10467.  
  10468.       Beschreibung  Die  Variable  _cisb_auto  kontrolliert, ob  automatische
  10469.                     Übertragungen  mit  Compuserve Quick  B  gestattet  sind.
  10470.                     Wenn  diese Variable  auf 0  (FALSE) gesetzt  ist, werden
  10471.                     Übertragungswünsche des entfernten Rechners  (Compuserve)
  10472.                     mit dem Quick B-Protokoll ignoriert.
  10473.  
  10474.       Siehe auch    _zmod_auto
  10475.  
  10476.  
  10477.  
  10478.  
  10479.  
  10480.  
  10481.  
  10482.  
  10483.  
  10484.  
  10485.  
  10486.  
  10487.  
  10488.  
  10489.  
  10490.  
  10491.  
  10492.  
  10493.  
  10494.  
  10495.  
  10496.  
  10497.  
  10498.  
  10499.  
  10500.  
  10501.  
  10502.  
  10503.  
  10504.  
  10505.  
  10506.  
  10507.  
  10508.  
  10509.  
  10510.  
  10511.  
  10512.  
  10513.  
  10514.  
  10515.  
  10516.  
  10517.  
  10518.  
  10519.  
  10520.  
  10521.  
  10522.  
  10523.  
  10524.  
  10525.  
  10526.                                       - 159 -
  10527.  
  10528.  
  10529.  
  10530.       _connect_str
  10531.  
  10532.       Aufbau        str _connect_str[19];
  10533.  
  10534.       Beschreibung  Die Variable  _connect_str enthält die  Zeichenkette, auf
  10535.                     die Telix wartet, wenn es wählt und  die es dann annehmen
  10536.                     läßt,  daß eine  Verbindung  zustande  gekommen ist.  Bei
  10537.                     Hayes-kompatiblen  Modems ist  dies meist  "CONNECT". Die
  10538.                     maximale Länge beträgt 19 Zeichen.
  10539.  
  10540.       Siehe auch    _no_connect1 - _no_connect4
  10541.  
  10542.  
  10543.  
  10544.  
  10545.  
  10546.  
  10547.  
  10548.  
  10549.  
  10550.  
  10551.  
  10552.  
  10553.  
  10554.  
  10555.  
  10556.  
  10557.  
  10558.  
  10559.  
  10560.  
  10561.  
  10562.  
  10563.  
  10564.  
  10565.  
  10566.  
  10567.  
  10568.  
  10569.  
  10570.  
  10571.  
  10572.  
  10573.  
  10574.  
  10575.  
  10576.  
  10577.  
  10578.  
  10579.  
  10580.  
  10581.  
  10582.  
  10583.  
  10584.  
  10585.  
  10586.  
  10587.  
  10588.  
  10589.  
  10590.  
  10591.  
  10592.                                       - 160 -
  10593.  
  10594.  
  10595.  
  10596.       _date_format
  10597.  
  10598.       Aufbau        int _date_format;
  10599.  
  10600.       Beschreibung  Der  Inhalt der Systemvariable _date_format bestimmt über
  10601.                     das Format, das Telix für Datumsangaben verwenden soll:
  10602.  
  10603.                          0mm/tt/jj
  10604.                          1tt/mm/jj
  10605.                          2jj/mm/tt
  10606.  
  10607.       Siehe auch    _time_format
  10608.  
  10609.  
  10610.  
  10611.  
  10612.  
  10613.  
  10614.  
  10615.  
  10616.  
  10617.  
  10618.  
  10619.  
  10620.  
  10621.  
  10622.  
  10623.  
  10624.  
  10625.  
  10626.  
  10627.  
  10628.  
  10629.  
  10630.  
  10631.  
  10632.  
  10633.  
  10634.  
  10635.  
  10636.  
  10637.  
  10638.  
  10639.  
  10640.  
  10641.  
  10642.  
  10643.  
  10644.  
  10645.  
  10646.  
  10647.  
  10648.  
  10649.  
  10650.  
  10651.  
  10652.  
  10653.  
  10654.  
  10655.  
  10656.  
  10657.  
  10658.                                       - 161 -
  10659.  
  10660.  
  10661.  
  10662.       _dial_pause
  10663.  
  10664.       Aufbau        int _dial_pause;
  10665.  
  10666.       Beschreibung  Die  Systemvariable  _dial_pause  enthält die  Zeitspanne
  10667.                     (in  Sekunden), die nach  dem Ende  eines Anwahlversuches
  10668.                     vor  dem Beginn  des nächsten  gewartet werden  soll. Für
  10669.                     die meisten Modems reicht eine Pause von 1 Sekunde.
  10670.  
  10671.  
  10672.  
  10673.  
  10674.  
  10675.  
  10676.  
  10677.  
  10678.  
  10679.  
  10680.  
  10681.  
  10682.  
  10683.  
  10684.  
  10685.  
  10686.  
  10687.  
  10688.  
  10689.  
  10690.  
  10691.  
  10692.  
  10693.  
  10694.  
  10695.  
  10696.  
  10697.  
  10698.  
  10699.  
  10700.  
  10701.  
  10702.  
  10703.  
  10704.  
  10705.  
  10706.  
  10707.  
  10708.  
  10709.  
  10710.  
  10711.  
  10712.  
  10713.  
  10714.  
  10715.  
  10716.  
  10717.  
  10718.  
  10719.  
  10720.  
  10721.  
  10722.  
  10723.  
  10724.                                       - 162 -
  10725.  
  10726.  
  10727.  
  10728.       _dial_time
  10729.  
  10730.       Aufbau        int _dial_time;
  10731.  
  10732.       Beschreibung  Die  Systemvariable _dial_time enthält die Zeitspanne (in
  10733.                     Sekunden), die Telix beim Anwahlvorgang auf  eine Verbin-
  10734.                     dung warten soll (z. B. 60).
  10735.  
  10736.       Siehe auch    _dial_pause
  10737.  
  10738.  
  10739.  
  10740.  
  10741.  
  10742.  
  10743.  
  10744.  
  10745.  
  10746.  
  10747.  
  10748.  
  10749.  
  10750.  
  10751.  
  10752.  
  10753.  
  10754.  
  10755.  
  10756.  
  10757.  
  10758.  
  10759.  
  10760.  
  10761.  
  10762.  
  10763.  
  10764.  
  10765.  
  10766.  
  10767.  
  10768.  
  10769.  
  10770.  
  10771.  
  10772.  
  10773.  
  10774.  
  10775.  
  10776.  
  10777.  
  10778.  
  10779.  
  10780.  
  10781.  
  10782.  
  10783.  
  10784.  
  10785.  
  10786.  
  10787.  
  10788.  
  10789.  
  10790.                                       - 163 -
  10791.  
  10792.  
  10793.  
  10794.       _dialpost
  10795.  
  10796.       Aufbau        str _dialpost[19];
  10797.  
  10798.       Beschreibung  Die  Systemvariable  _dialpost enthält  die Zeichenkette,
  10799.                     die dem Modem beim Wählen nach der  Nummer gesandt werden
  10800.                     soll  (Anwahlsuffix).  Bei  Hayes-kompatiblen Modems  ist
  10801.                     dies  meist nur das Carriage-Return-Zeichen. Die maximale
  10802.                     Länge beträgt  19 Zeichen. Diese Zeichenkette  kann Über-
  10803.                     setzungszeichen enthalten, wie im  Telix-Bedienerhandbuch
  10804.                     beschrieben  und  sollte dem  Modem mittels  der Funktion
  10805.                     cputs_tr übersandt werden.
  10806.  
  10807.       Siehe auch    _dialpref, _dialpref2, _dialpref3, _redial_stop
  10808.  
  10809.  
  10810.  
  10811.  
  10812.  
  10813.  
  10814.  
  10815.  
  10816.  
  10817.  
  10818.  
  10819.  
  10820.  
  10821.  
  10822.  
  10823.  
  10824.  
  10825.  
  10826.  
  10827.  
  10828.  
  10829.  
  10830.  
  10831.  
  10832.  
  10833.  
  10834.  
  10835.  
  10836.  
  10837.  
  10838.  
  10839.  
  10840.  
  10841.  
  10842.  
  10843.  
  10844.  
  10845.  
  10846.  
  10847.  
  10848.  
  10849.  
  10850.  
  10851.  
  10852.  
  10853.  
  10854.  
  10855.  
  10856.                                       - 164 -
  10857.  
  10858.  
  10859.  
  10860.       _dialpref
  10861.  
  10862.       Aufbau        str _dialpref[19];
  10863.  
  10864.                     str _dialpref2[19];
  10865.  
  10866.                     str _dialpref3[19];
  10867.  
  10868.       Beschreibung  Die  Systemvariable  _dialpref enthält  die Zeichenkette,
  10869.                     die dem Modem  beim Wählen vor  der Nummer gesandt  wird.
  10870.                     Bei Hayes-kompatiblen Modems  it dies  meist ,ATDP'.  Die
  10871.                     maximale  Länge beträgt  19  Zeichen. Diese  Zeichenkette
  10872.                     kann Übersetzungszeichen enthalten,  wie im  Telix-Bedie-
  10873.                     nerhandbuch beschrieben und sollte  dem Modem mittels der
  10874.                     Funktion cputs_tr übersandt werden.
  10875.  
  10876.                     _dialpref2  und _dialpref3  sind die beiden  weiteren An-
  10877.                     wahlpräfixe, die unter Telix definiert werden können.
  10878.  
  10879.       Siehe auch    _dialpost, _rdl_stop
  10880.  
  10881.  
  10882.  
  10883.  
  10884.  
  10885.  
  10886.  
  10887.  
  10888.  
  10889.  
  10890.  
  10891.  
  10892.  
  10893.  
  10894.  
  10895.  
  10896.  
  10897.  
  10898.  
  10899.  
  10900.  
  10901.  
  10902.  
  10903.  
  10904.  
  10905.  
  10906.  
  10907.  
  10908.  
  10909.  
  10910.  
  10911.  
  10912.  
  10913.  
  10914.  
  10915.  
  10916.  
  10917.  
  10918.  
  10919.  
  10920.  
  10921.  
  10922.                                       - 165 -
  10923.  
  10924.  
  10925.  
  10926.       _dir_prog
  10927.  
  10928.       Aufbau        str _dir_prog[64];
  10929.  
  10930.       Beschreibung  Die Systemvariable _dir_prog enthält  den Namen des  Dis-
  10931.                     ketten-/   Plattenverzeichnisprogramms,  das   aufgerufen
  10932.                     werden soll,  wenn der  Benutzer die  Option ,Inhaltsver-
  10933.                     zeichnis'  aus dem DOS-Funktionsmenü auswählt. Bleibt die
  10934.                     Variable leer  (""), wird  der DOS-Befehl  ,dir' benutzt.
  10935.                     Die maximale Länge beträgt 15 Zeichen. 
  10936.  
  10937.  
  10938.  
  10939.  
  10940.  
  10941.  
  10942.  
  10943.  
  10944.  
  10945.  
  10946.  
  10947.  
  10948.  
  10949.  
  10950.  
  10951.  
  10952.  
  10953.  
  10954.  
  10955.  
  10956.  
  10957.  
  10958.  
  10959.  
  10960.  
  10961.  
  10962.  
  10963.  
  10964.  
  10965.  
  10966.  
  10967.  
  10968.  
  10969.  
  10970.  
  10971.  
  10972.  
  10973.  
  10974.  
  10975.  
  10976.  
  10977.  
  10978.  
  10979.  
  10980.  
  10981.  
  10982.  
  10983.  
  10984.  
  10985.  
  10986.  
  10987.  
  10988.                                       - 166 -
  10989.  
  10990.  
  10991.  
  10992.       _disp_free
  10993.  
  10994.       Aufbau        int _disp_free;
  10995.  
  10996.       Beschreibung  Wenn  die Systemvariable  _disp_free auf  einen  Wert un-
  10997.                     gleich 0 (TRUE) gesetzt  ist, wird Telix den  verfügbaren
  10998.                     freien Speicherplatz eines  Laufwerks anzeigen, wenn  der
  10999.                     Benutzer  PgDn   drückt,  um  eine   Datei  herbeizuholen
  11000.                     (Download).
  11001.  
  11002.  
  11003.  
  11004.  
  11005.  
  11006.  
  11007.  
  11008.  
  11009.  
  11010.  
  11011.  
  11012.  
  11013.  
  11014.  
  11015.  
  11016.  
  11017.  
  11018.  
  11019.  
  11020.  
  11021.  
  11022.  
  11023.  
  11024.  
  11025.  
  11026.  
  11027.  
  11028.  
  11029.  
  11030.  
  11031.  
  11032.  
  11033.  
  11034.  
  11035.  
  11036.  
  11037.  
  11038.  
  11039.  
  11040.  
  11041.  
  11042.  
  11043.  
  11044.  
  11045.  
  11046.  
  11047.  
  11048.  
  11049.  
  11050.  
  11051.  
  11052.  
  11053.  
  11054.                                       - 167 -
  11055.  
  11056.  
  11057.  
  11058.       _down_dir
  11059.  
  11060.       Aufbau        str _down_dir [64];
  11061.  
  11062.       Beschreibung  Die Systemvariable  _down_dir enthält den Namen des Stan-
  11063.                     dard-Empfangsverzeichnisses.  Wird  eine Datei  empfangen
  11064.                     und der Benutzer  gibt mit dem  Dateinamen auch  Laufwerk
  11065.                     und/oder Verzeichnis an,  so wird die  Datei nach  diesen
  11066.                     Angaben abgelegt.  Wenn jedoch nur der  Dateiname angege-
  11067.                     ben wird, kommt die  Datei in das mit  _down_dir bezeich-
  11068.                     nete Verzeichnis. Die maximale Länge  beträgt 64 Zeichen,
  11069.                     und diese  Zeichenkette sollte mit  dem Backslash-Zeichen
  11070.                     (,\') enden.
  11071.  
  11072.       Siehe auch    _up_dir, receive
  11073.  
  11074.  
  11075.  
  11076.  
  11077.  
  11078.  
  11079.  
  11080.  
  11081.  
  11082.  
  11083.  
  11084.  
  11085.  
  11086.  
  11087.  
  11088.  
  11089.  
  11090.  
  11091.  
  11092.  
  11093.  
  11094.  
  11095.  
  11096.  
  11097.  
  11098.  
  11099.  
  11100.  
  11101.  
  11102.  
  11103.  
  11104.  
  11105.  
  11106.  
  11107.  
  11108.  
  11109.  
  11110.  
  11111.  
  11112.  
  11113.  
  11114.  
  11115.  
  11116.  
  11117.  
  11118.  
  11119.  
  11120.                                       - 168 -
  11121.  
  11122.  
  11123.  
  11124.       _editor
  11125.  
  11126.       Aufbau        str _editor[64];
  11127.  
  11128.       Beschreibung  Die  Systemvariable _editor  enthält den  Namen  des Edi-
  11129.                     tors, der nach Drücken  von Alt-A verwendet werden  soll.
  11130.                     Wenn der Editor auf dem DOS-Pfad steht,  muß nur der Name
  11131.                     angegeben  werden,  ansonsten   der  komplette   Pfadname
  11132.                     (Laufwerk,  Verzeichnis, Name).  Die  maximale Länge  be-
  11133.                     trägt 64 Zeichen. Soll eine Batchdatei  ablaufen, muß die
  11134.                     Erweiterung .BAT angegeben werden.
  11135.  
  11136.  
  11137.  
  11138.  
  11139.  
  11140.  
  11141.  
  11142.  
  11143.  
  11144.  
  11145.  
  11146.  
  11147.  
  11148.  
  11149.  
  11150.  
  11151.  
  11152.  
  11153.  
  11154.  
  11155.  
  11156.  
  11157.  
  11158.  
  11159.  
  11160.  
  11161.  
  11162.  
  11163.  
  11164.  
  11165.  
  11166.  
  11167.  
  11168.  
  11169.  
  11170.  
  11171.  
  11172.  
  11173.  
  11174.  
  11175.  
  11176.  
  11177.  
  11178.  
  11179.  
  11180.  
  11181.  
  11182.  
  11183.  
  11184.  
  11185.  
  11186.                                       - 169 -
  11187.  
  11188.  
  11189.  
  11190.       _entry_enum
  11191.  
  11192.       Aufbau        int _entry_enum;
  11193.  
  11194.       Beschreibung  Die  Variable  _entry_enum  wird  von  den Anwahlroutinen
  11195.                     gesetzt.  Wenn  beim Anwählen  eine  Verbindung  zustande
  11196.                     kommt, wird die  Eintragsnummer des erreichten  Anschlus-
  11197.                     ses hier  abgelegt. Handelt es  sich um eine  manuell ge-
  11198.                     wählte Nummer, so wird der Wert 0 abgelegt.
  11199.  
  11200.       Siehe auch    _entry_name, dial, redial
  11201.  
  11202.  
  11203.  
  11204.  
  11205.  
  11206.  
  11207.  
  11208.  
  11209.  
  11210.  
  11211.  
  11212.  
  11213.  
  11214.  
  11215.  
  11216.  
  11217.  
  11218.  
  11219.  
  11220.  
  11221.  
  11222.  
  11223.  
  11224.  
  11225.  
  11226.  
  11227.  
  11228.  
  11229.  
  11230.  
  11231.  
  11232.  
  11233.  
  11234.  
  11235.  
  11236.  
  11237.  
  11238.  
  11239.  
  11240.  
  11241.  
  11242.  
  11243.  
  11244.  
  11245.  
  11246.  
  11247.  
  11248.  
  11249.  
  11250.  
  11251.  
  11252.                                       - 170 -
  11253.  
  11254.  
  11255.  
  11256.       _entry_name - _entry_pass
  11257.  
  11258.       Aufbau        str _entry_name[29];
  11259.  
  11260.                     str _entry_num[17];
  11261.  
  11262.                     str _entry_pass[14];
  11263.  
  11264.       Beschreibung  Die  Variable  _entry_name wird  von  den  Anwahlroutinen
  11265.                     gesetzt.  Wenn eine  Verbindung zustande kommt,  wird der
  11266.                     Namensteil des  erreichten Eintrags hier  hinein kopiert,
  11267.                     um von  Scriptdateien verwendet  zu werden. Die  maximale
  11268.                     Länge beträgt 29 Zeichen.
  11269.  
  11270.                     Die  Variable _entry_num  wird  auf gleiche  Weise belegt
  11271.                     und  enthält die  Telefonnummer des  erreichten Eintrags.
  11272.                     Die maximale Länge beträgt 17 Zeichen.
  11273.  
  11274.                     Auch die Variable  _entry_pass wird so  belegt, sie  ent-
  11275.                     hält das  Paßwort  für den  erreichten  Eintrag.  Hiermit
  11276.                     kann das  Einloggen in  einem Mailboxsystem  durchgeführt
  11277.                     werden. Die maximale Länge beträgt 14 Zeichen.
  11278.  
  11279.       Siehe auch    _entry_enum, dial, redial
  11280.  
  11281.  
  11282.  
  11283.  
  11284.  
  11285.  
  11286.  
  11287.  
  11288.  
  11289.  
  11290.  
  11291.  
  11292.  
  11293.  
  11294.  
  11295.  
  11296.  
  11297.  
  11298.  
  11299.  
  11300.  
  11301.  
  11302.  
  11303.  
  11304.  
  11305.  
  11306.  
  11307.  
  11308.  
  11309.  
  11310.  
  11311.  
  11312.  
  11313.  
  11314.  
  11315.  
  11316.  
  11317.  
  11318.                                       - 171 -
  11319.  
  11320.  
  11321.  
  11322.       _ext_filespec
  11323.  
  11324.       Aufbau        str _ext_filespec [64];
  11325.  
  11326.       Beschreibung  Diese Variable ist zum  Gebrauch innerhalb von  Scriptda-
  11327.                     teien gedacht, die externe Protokolle benutzen.  Wenn ein
  11328.                     externes Protokoll als  von einer Scriptdatei  aufgerufen
  11329.                     definiert ist, wird diese  Variable zunächst mit der  Da-
  11330.                     teispezifikation  belegt,  die  vom   Benutzer  im  Über-
  11331.                     tragungsmenü eingegeben wurde.  Dann wird die  zugehörige
  11332.                     Scriptdatei  ausgeführt. Die  Scriptdatei kann  den Namen
  11333.                     dann  z. B.  einem Programm  übergeben, das  ein externes
  11334.                     Protokoll  eingerichtet. Beachten  Sie bitte,  daß einige
  11335.                     Datenübertragungsprotokolle   keine   Namenseingabe   für
  11336.                     Downloads  erwarten. In  dem  Fall bleibt  diese Variable
  11337.                     leer.
  11338.  
  11339.  
  11340.  
  11341.  
  11342.  
  11343.  
  11344.  
  11345.  
  11346.  
  11347.  
  11348.  
  11349.  
  11350.  
  11351.  
  11352.  
  11353.  
  11354.  
  11355.  
  11356.  
  11357.  
  11358.  
  11359.  
  11360.  
  11361.  
  11362.  
  11363.  
  11364.  
  11365.  
  11366.  
  11367.  
  11368.  
  11369.  
  11370.  
  11371.  
  11372.  
  11373.  
  11374.  
  11375.  
  11376.  
  11377.  
  11378.  
  11379.  
  11380.  
  11381.  
  11382.  
  11383.  
  11384.                                       - 172 -
  11385.  
  11386.  
  11387.  
  11388.       _fore_color
  11389.  
  11390.       Aufbau        int _fore_color;
  11391.  
  11392.       Beschreibung  Die Systemvariable _fore_color  enthält die  Vordergrund-
  11393.                     farbe,  die im Terminal-Modus  für Texte verwendet werden
  11394.                     soll. Zulässige Werte sind 0 bis 15. Beachten Sie  bitte,
  11395.                     daß  Änderungen dieser  Variable  erst in  Kraft  treten,
  11396.                     nachdem der Bildschirminhalt geräumt wurde.
  11397.  
  11398.       Siehe auch    _back_color
  11399.  
  11400.  
  11401.  
  11402.  
  11403.  
  11404.  
  11405.  
  11406.  
  11407.  
  11408.  
  11409.  
  11410.  
  11411.  
  11412.  
  11413.  
  11414.  
  11415.  
  11416.  
  11417.  
  11418.  
  11419.  
  11420.  
  11421.  
  11422.  
  11423.  
  11424.  
  11425.  
  11426.  
  11427.  
  11428.  
  11429.  
  11430.  
  11431.  
  11432.  
  11433.  
  11434.  
  11435.  
  11436.  
  11437.  
  11438.  
  11439.  
  11440.  
  11441.  
  11442.  
  11443.  
  11444.  
  11445.  
  11446.  
  11447.  
  11448.  
  11449.  
  11450.                                       - 173 -
  11451.  
  11452.  
  11453.  
  11454.       _image_file
  11455.  
  11456.       Aufbau        str _image_file [64];
  11457.  
  11458.       Beschreibung  Die Systemvariable _image_file enthält  den vollständigen
  11459.                     Namen der Datei, in der Bildschirminhalte  gesichert wer-
  11460.                     den  sollen, wenn  der Benutzer  im Terminal-Modus  Alt-T
  11461.                     drückt. Wenn  diese Datei bereits  existiert, werden  die
  11462.                     Daten an ihr Ende angehängt.
  11463.  
  11464.  
  11465.  
  11466.  
  11467.  
  11468.  
  11469.  
  11470.  
  11471.  
  11472.  
  11473.  
  11474.  
  11475.  
  11476.  
  11477.  
  11478.  
  11479.  
  11480.  
  11481.  
  11482.  
  11483.  
  11484.  
  11485.  
  11486.  
  11487.  
  11488.  
  11489.  
  11490.  
  11491.  
  11492.  
  11493.  
  11494.  
  11495.  
  11496.  
  11497.  
  11498.  
  11499.  
  11500.  
  11501.  
  11502.  
  11503.  
  11504.  
  11505.  
  11506.  
  11507.  
  11508.  
  11509.  
  11510.  
  11511.  
  11512.  
  11513.  
  11514.  
  11515.  
  11516.                                       - 174 -
  11517.  
  11518.  
  11519.  
  11520.       _local_echo
  11521.  
  11522.       Aufbau        int _local_echo;
  11523.  
  11524.       Beschreibung  Die Variable _local_echo kontrolliert,  ob die im  Termi-
  11525.                     nal-Modus  über  Tastatur eingegebenen  Zeichen  auf  den
  11526.                     Bildschirm  geechot werden  sollen. Wenn  _local_echo auf
  11527.                     ungleich  0 (TRUE)  gesetzt ist,  erscheint ein  Echo der
  11528.                     Zeichen auf dem Bildschirm, sonst nicht.
  11529.  
  11530.  
  11531.  
  11532.  
  11533.  
  11534.  
  11535.  
  11536.  
  11537.  
  11538.  
  11539.  
  11540.  
  11541.  
  11542.  
  11543.  
  11544.  
  11545.  
  11546.  
  11547.  
  11548.  
  11549.  
  11550.  
  11551.  
  11552.  
  11553.  
  11554.  
  11555.  
  11556.  
  11557.  
  11558.  
  11559.  
  11560.  
  11561.  
  11562.  
  11563.  
  11564.  
  11565.  
  11566.  
  11567.  
  11568.  
  11569.  
  11570.  
  11571.  
  11572.  
  11573.  
  11574.  
  11575.  
  11576.  
  11577.  
  11578.  
  11579.  
  11580.  
  11581.  
  11582.                                       - 175 -
  11583.  
  11584.  
  11585.  
  11586.       _mdm_hang
  11587.  
  11588.       Aufbau        str _mdm_hang [19];
  11589.  
  11590.       Beschreibung  Die  Systemvariable  _mdm_hang enthält  die Zeichenkette,
  11591.                     die  dem  Modem gesandt  wird,  wenn  der Benutzer  Alt-H
  11592.                     drückt. Beachten  Sie bitte,  daß diese  Zeichenkette nur
  11593.                     dann gesandt wird, wenn  es Telix nicht gelingt, das  Mo-
  11594.                     dem  durch Abschalten  des DTR-Signals  an der  seriellen
  11595.                     Schnittstelle aufzulegen. Diese  Zeichenkette kann  Über-
  11596.                     setzungszeichen  enthalten,  wie im  Bedienerhandbuch be-
  11597.                     schrieben und sollte dem Modem mit  der Funktion cputs_tr
  11598.                     gesandt werden. Die maximale Länge beträgt 19 Zeichen.
  11599.  
  11600.       Siehe auch    str _mdm_init, _auto_ans_str
  11601.  
  11602.  
  11603.  
  11604.  
  11605.  
  11606.  
  11607.  
  11608.  
  11609.  
  11610.  
  11611.  
  11612.  
  11613.  
  11614.  
  11615.  
  11616.  
  11617.  
  11618.  
  11619.  
  11620.  
  11621.  
  11622.  
  11623.  
  11624.  
  11625.  
  11626.  
  11627.  
  11628.  
  11629.  
  11630.  
  11631.  
  11632.  
  11633.  
  11634.  
  11635.  
  11636.  
  11637.  
  11638.  
  11639.  
  11640.  
  11641.  
  11642.  
  11643.  
  11644.  
  11645.  
  11646.  
  11647.  
  11648.                                       - 176 -
  11649.  
  11650.  
  11651.  
  11652.       _mdm_init_str
  11653.  
  11654.       Aufbau        str_mdm_init_str [49];
  11655.  
  11656.       Beschreibung  Die Systemvariable _mdm_init_str enthält  die Zeichenket-
  11657.                     te,  die dem Modem  gesandt werden soll,  wenn Telix auf-
  11658.                     gerufen wird.  Hierdurch wird gewährleistet, daß  das Mo-
  11659.                     dem  korrekt  eingestellt  ist.  Diese  Zeichenkette kann
  11660.                     Übersetzungszeichen  enthalten,  wie im  Bedienerhandbuch
  11661.                     beschrieben   und  sollte  dem  Modem  mit  der  Funktion
  11662.                     cputs_tr  gesandt werden.  Die maximale  Zeichenlänge be-
  11663.                     trägt 49 Zeichen.
  11664.  
  11665.       Siehe auch    _auto_ans_str, _mdm_hang
  11666.  
  11667.  
  11668.  
  11669.  
  11670.  
  11671.  
  11672.  
  11673.  
  11674.  
  11675.  
  11676.  
  11677.  
  11678.  
  11679.  
  11680.  
  11681.  
  11682.  
  11683.  
  11684.  
  11685.  
  11686.  
  11687.  
  11688.  
  11689.  
  11690.  
  11691.  
  11692.  
  11693.  
  11694.  
  11695.  
  11696.  
  11697.  
  11698.  
  11699.  
  11700.  
  11701.  
  11702.  
  11703.  
  11704.  
  11705.  
  11706.  
  11707.  
  11708.  
  11709.  
  11710.  
  11711.  
  11712.  
  11713.  
  11714.                                       - 177 -
  11715.  
  11716.  
  11717.  
  11718.       _no_connect1 - _no_connect4
  11719.  
  11720.       Aufbau        str _no_connect1 [19];
  11721.  
  11722.                     str _no_connect2 [19];
  11723.  
  11724.                     str _no_connect3 [19];
  11725.  
  11726.                     str _no_connect4 [19];
  11727.  
  11728.       Beschreibung  Diese  Systemvariablen  enthalten die  Zeichenketten, die
  11729.                     Telix beim  Anwählen als  Information erkennt, daß  keine
  11730.                     Verbindung zustande  kam  (z. B.  Anschluß  besetzt  oder
  11731.                     Anruf  wurde nicht  entgegenkommen).  Die maximale  Länge
  11732.                     beträgt 19 Zeichen.
  11733.  
  11734.       Siehe auch    _connect_str
  11735.  
  11736.  
  11737.  
  11738.  
  11739.  
  11740.  
  11741.  
  11742.  
  11743.  
  11744.  
  11745.  
  11746.  
  11747.  
  11748.  
  11749.  
  11750.  
  11751.  
  11752.  
  11753.  
  11754.  
  11755.  
  11756.  
  11757.  
  11758.  
  11759.  
  11760.  
  11761.  
  11762.  
  11763.  
  11764.  
  11765.  
  11766.  
  11767.  
  11768.  
  11769.  
  11770.  
  11771.  
  11772.  
  11773.  
  11774.  
  11775.  
  11776.  
  11777.  
  11778.  
  11779.  
  11780.                                       - 178 -
  11781.  
  11782.  
  11783.  
  11784.       _qdbar_on
  11785.  
  11786.       Aufbau        int _qdbar_on;
  11787.  
  11788.       Beschreibung  Wenn die Systemvariable _qdbar_on  auf ungleich 0  (TRUE)
  11789.                     gesetzt  ist, wird  nach Drücken  von Alt-D  zunächst das
  11790.                     Fenster  für schnelle  Wahl angezeigt;  anderenfalls wird
  11791.                     dem Benutzer gleich das Anwahlverzeichnis präsentiert.
  11792.  
  11793.  
  11794.  
  11795.  
  11796.  
  11797.  
  11798.  
  11799.  
  11800.  
  11801.  
  11802.  
  11803.  
  11804.  
  11805.  
  11806.  
  11807.  
  11808.  
  11809.  
  11810.  
  11811.  
  11812.  
  11813.  
  11814.  
  11815.  
  11816.  
  11817.  
  11818.  
  11819.  
  11820.  
  11821.  
  11822.  
  11823.  
  11824.  
  11825.  
  11826.  
  11827.  
  11828.  
  11829.  
  11830.  
  11831.  
  11832.  
  11833.  
  11834.  
  11835.  
  11836.  
  11837.  
  11838.  
  11839.  
  11840.  
  11841.  
  11842.  
  11843.  
  11844.  
  11845.  
  11846.                                       - 179 -
  11847.  
  11848.  
  11849.  
  11850.       _redial_stop
  11851.  
  11852.       Aufbau        str _redial_stop [19];
  11853.  
  11854.       Beschreibung  Die Systemvariable _redial_stop  enthält die  Zeichenket-
  11855.                     te, die dem Modem gesandt werden soll,  um einen Wahlwie-
  11856.                     derholungsvorgang  abzubrechen.  Gewöhnlich  enthält  sie
  11857.                     nur ein Carriage-Return-Zeichen. Diese  Zeichenkette kann
  11858.                     Übersetzungszeichen  enthalten,  wie im  Bedienerhandbuch
  11859.                     beschrieben   und  sollte  dem  Modem  mit  der  Funktion
  11860.                     cputs_tr gesandt werden.  Die maximale  Länge beträgt  19
  11861.                     Zeichen.
  11862.  
  11863.       Siehe auch    _dialpref, _dialpref2, _dialpref3, dialpost
  11864.  
  11865.  
  11866.  
  11867.  
  11868.  
  11869.  
  11870.  
  11871.  
  11872.  
  11873.  
  11874.  
  11875.  
  11876.  
  11877.  
  11878.  
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  
  11885.  
  11886.  
  11887.  
  11888.  
  11889.  
  11890.  
  11891.  
  11892.  
  11893.  
  11894.  
  11895.  
  11896.  
  11897.  
  11898.  
  11899.  
  11900.  
  11901.  
  11902.  
  11903.  
  11904.  
  11905.  
  11906.  
  11907.  
  11908.  
  11909.  
  11910.  
  11911.  
  11912.                                       - 180 -
  11913.  
  11914.  
  11915.  
  11916.       _scr_chk_key
  11917.  
  11918.       Aufbau        int _scr_chk_key;
  11919.  
  11920.       Beschreibung  Bei  der Ausführung  einer Scriptdatei  prüft  Telix nach
  11921.                     jedem  Kommando im Tastaturpuffer  nach, ob  der Benutzer
  11922.                     einen Abbruch gefordert hat. Dies stört jedoch u. a.  die
  11923.                     Funktion  inkey. Auch  ist  es manchmal  notwendig, einen
  11924.                     Abbruch der  Scriptdatei durch den Benutzer  zu unterbin-
  11925.                     den. Wenn _scr_chk_key  auf 0 (FALSE)  gesetzt ist,  wird
  11926.                     Telix  keine  Prüfungen  auf Abbruchwünsche  durchführen.
  11927.                     Das  Zurücksetzen auf ungleich  0 (TRUE) wird die Prüfun-
  11928.                     gen wieder in  Kraft setzen. Wenn  diese Variable  inner-
  11929.                     halb einer  Scriptdatei verändert  wird, sollte  der alte
  11930.                     Status  in einer  scratch-Variablen  abgelegt und  später
  11931.                     wieder geladen werden.
  11932.  
  11933.       Siehe auch    inkey
  11934.  
  11935.  
  11936.  
  11937.  
  11938.  
  11939.  
  11940.  
  11941.  
  11942.  
  11943.  
  11944.  
  11945.  
  11946.  
  11947.  
  11948.  
  11949.  
  11950.  
  11951.  
  11952.  
  11953.  
  11954.  
  11955.  
  11956.  
  11957.  
  11958.  
  11959.  
  11960.  
  11961.  
  11962.  
  11963.  
  11964.  
  11965.  
  11966.  
  11967.  
  11968.  
  11969.  
  11970.  
  11971.  
  11972.  
  11973.  
  11974.  
  11975.  
  11976.  
  11977.  
  11978.                                       - 181 -
  11979.  
  11980.  
  11981.  
  11982.       _script_dir
  11983.  
  11984.       Aufbau        str _script_dir[64];
  11985.  
  11986.       Beschreibung  Die Systemvariable _script_dir enthält  den vollständigen
  11987.                     Pfad  des Verzeichnisses, in  dem Telix nach kompilierten
  11988.                     Scriptdateien suchen soll,  wenn eine Scriptdatei  ausge-
  11989.                     führt werden  soll. Telix verwendet  dann folgende Proze-
  11990.                     dur: Enthält  der Name  Laufwerks- und/oder  Verzeichnis-
  11991.                     angabe,  wird nur  dieser Pfad abgesucht.  Wird lediglich
  11992.                     der Dateiname angegeben,  sucht Telix  zunächst im  aktu-
  11993.                     ellen Verzeichnis,  dann in dem von _script_dir angezeig-
  11994.                     ten. Diese Zeichenkette  endet mit dem  Zeichen ,\'.  Die
  11995.                     maximale Länge beträgt 64 Zeichen.
  11996.  
  11997.       Siehe auch    _telix_dir, _up_dir, _down_dir
  11998.  
  11999.  
  12000.  
  12001.  
  12002.  
  12003.  
  12004.  
  12005.  
  12006.  
  12007.  
  12008.  
  12009.  
  12010.  
  12011.  
  12012.  
  12013.  
  12014.  
  12015.  
  12016.  
  12017.  
  12018.  
  12019.  
  12020.  
  12021.  
  12022.  
  12023.  
  12024.  
  12025.  
  12026.  
  12027.  
  12028.  
  12029.  
  12030.  
  12031.  
  12032.  
  12033.  
  12034.  
  12035.  
  12036.  
  12037.  
  12038.  
  12039.  
  12040.  
  12041.  
  12042.  
  12043.  
  12044.                                       - 182 -
  12045.  
  12046.  
  12047.  
  12048.       _sound_on
  12049.  
  12050.       Aufbau        int _sound_on;
  12051.  
  12052.       Beschreibung  Wenn die Systemvariable _sound_on  auf ungleich 0  (TRUE)
  12053.                     gesetzt  ist, werden die  unter Telix  verfügbaren Geräu-
  12054.                     sche in  Kraft gesetzt, sonst werden  sämtliche Geräusche
  12055.                     unterbunden.
  12056.  
  12057.       Siehe auch    _alarm_on
  12058.  
  12059.  
  12060.  
  12061.  
  12062.  
  12063.  
  12064.  
  12065.  
  12066.  
  12067.  
  12068.  
  12069.  
  12070.  
  12071.  
  12072.  
  12073.  
  12074.  
  12075.  
  12076.  
  12077.  
  12078.  
  12079.  
  12080.  
  12081.  
  12082.  
  12083.  
  12084.  
  12085.  
  12086.  
  12087.  
  12088.  
  12089.  
  12090.  
  12091.  
  12092.  
  12093.  
  12094.  
  12095.  
  12096.  
  12097.  
  12098.  
  12099.  
  12100.  
  12101.  
  12102.  
  12103.  
  12104.  
  12105.  
  12106.  
  12107.  
  12108.  
  12109.  
  12110.                                       - 183 -
  12111.  
  12112.  
  12113.  
  12114.       _strip_high
  12115.  
  12116.       Aufbau        int _strip_high;
  12117.  
  12118.       Beschreibung  Mit der  Systemvariable _strip_high wird  festgelegt, was
  12119.                     Telix mit  dem höchstwertigsten  Bit eingehender  Zeichen
  12120.                     im Terminalmodus macht. Wenn  diese Variable auf ungleich
  12121.                     0 (TRUE) gesetzt ist, wird Telix  das höchstwertigste Bit
  12122.                     eingehender Zeichen zurücksetzen.
  12123.  
  12124.  
  12125.  
  12126.  
  12127.  
  12128.  
  12129.  
  12130.  
  12131.  
  12132.  
  12133.  
  12134.  
  12135.  
  12136.  
  12137.  
  12138.  
  12139.  
  12140.  
  12141.  
  12142.  
  12143.  
  12144.  
  12145.  
  12146.  
  12147.  
  12148.  
  12149.  
  12150.  
  12151.  
  12152.  
  12153.  
  12154.  
  12155.  
  12156.  
  12157.  
  12158.  
  12159.  
  12160.  
  12161.  
  12162.  
  12163.  
  12164.  
  12165.  
  12166.  
  12167.  
  12168.  
  12169.  
  12170.  
  12171.  
  12172.  
  12173.  
  12174.  
  12175.  
  12176.                                       - 184 -
  12177.  
  12178.  
  12179.  
  12180.       _swap_bs
  12181.  
  12182.       Aufbau        int _swap_bs;
  12183.  
  12184.       Beschreibung  Mit  der  Systemvariable  _swap_bs  wird  festgelegt, was
  12185.                     Telix  sendet, wenn  die  Rückschrittaste gedrückt  wird.
  12186.                     Wenn die Variable gleich 0 ist, sendet Telix einen  Rück-
  12187.                     schritt, bzw.  DELETE bei Ctrl-Backspace.  Ist die Varia-
  12188.                     ble auf 1 gesetzt, kehrt Telix diese Funktionen um.
  12189.  
  12190.  
  12191.  
  12192.  
  12193.  
  12194.  
  12195.  
  12196.  
  12197.  
  12198.  
  12199.  
  12200.  
  12201.  
  12202.  
  12203.  
  12204.  
  12205.  
  12206.  
  12207.  
  12208.  
  12209.  
  12210.  
  12211.  
  12212.  
  12213.  
  12214.  
  12215.  
  12216.  
  12217.  
  12218.  
  12219.  
  12220.  
  12221.  
  12222.  
  12223.  
  12224.  
  12225.  
  12226.  
  12227.  
  12228.  
  12229.  
  12230.  
  12231.  
  12232.  
  12233.  
  12234.  
  12235.  
  12236.  
  12237.  
  12238.  
  12239.  
  12240.  
  12241.  
  12242.                                       - 185 -
  12243.  
  12244.  
  12245.  
  12246.       _telix_dir
  12247.  
  12248.       Aufbau        str _telix_dir[64];
  12249.  
  12250.       Beschreibung  Die Systemvariable _telix_dir  enthält den  vollständigen
  12251.                     Pfad  zum  Basis-Inhaltsverzeichnis  für   Telix  (z.  B.
  12252.                     ,C:\TELIX\').  Von  einer Änderung  dieser  Variable wird
  12253.                     abgeraten, da  die Verwendung eines  falschen Wertes dazu
  12254.                     führt, daß  Telix wahrscheinlich viele  benötigte Dateien
  12255.                     nicht findet. Die maximale Länge beträgt 64 Zeichen.
  12256.  
  12257.                     Wenn die Variable  geändert werden sollte,  ist es  zwin-
  12258.                     gend  notwendig, an ihr  Ende ein Backslash-Zeichen (,\')
  12259.                     zu setzen. Telix  baut Pfade zu vielen  Dateien, indem es
  12260.                     dieser Zeichenkette einen Namen anhängt. Wenn der  Backs-
  12261.                     lash fehlt, wird dies zu Problemen führen.
  12262.  
  12263.       Siehe auch    _script_dir, _up_dir, _down_dir
  12264.  
  12265.  
  12266.  
  12267.  
  12268.  
  12269.  
  12270.  
  12271.  
  12272.  
  12273.  
  12274.  
  12275.  
  12276.  
  12277.  
  12278.  
  12279.  
  12280.  
  12281.  
  12282.  
  12283.  
  12284.  
  12285.  
  12286.  
  12287.  
  12288.  
  12289.  
  12290.  
  12291.  
  12292.  
  12293.  
  12294.  
  12295.  
  12296.  
  12297.  
  12298.  
  12299.  
  12300.  
  12301.  
  12302.  
  12303.  
  12304.  
  12305.  
  12306.  
  12307.  
  12308.                                       - 186 -
  12309.  
  12310.  
  12311.  
  12312.       _time_format
  12313.  
  12314.       Aufbau        int _time_format;
  12315.  
  12316.       Beschreibung  Die  Systemvariable  _time_format bestimmt  darüber, wel-
  12317.                     ches  Format  Telix  für auszugebende  Zeit-Zeichenketten
  12318.                     benutzt. Wenn _time_format 0 ist, benutzt  Telix ein 12--
  12319.                     Stundenformat, ansonsten ein 24-Stundenformat.
  12320.  
  12321.       Siehe auch    _date_format
  12322.  
  12323.  
  12324.  
  12325.  
  12326.  
  12327.  
  12328.  
  12329.  
  12330.  
  12331.  
  12332.  
  12333.  
  12334.  
  12335.  
  12336.  
  12337.  
  12338.  
  12339.  
  12340.  
  12341.  
  12342.  
  12343.  
  12344.  
  12345.  
  12346.  
  12347.  
  12348.  
  12349.  
  12350.  
  12351.  
  12352.  
  12353.  
  12354.  
  12355.  
  12356.  
  12357.  
  12358.  
  12359.  
  12360.  
  12361.  
  12362.  
  12363.  
  12364.  
  12365.  
  12366.  
  12367.  
  12368.  
  12369.  
  12370.  
  12371.  
  12372.  
  12373.  
  12374.                                       - 187 -
  12375.  
  12376.  
  12377.  
  12378.       _up_dir
  12379.  
  12380.       Aufbau        str _up_dir[64];
  12381.  
  12382.       Beschreibung  Die  Systemvariable _up_dir enthält den Standardnamen für
  12383.                     das Sendeverzeichnis (Uploadverzeichnis).  Soll eine  Da-
  12384.                     tei versandt werden und der Benutzer  gibt Laufwerk und/-
  12385.                     oder Verzeichnis  mit an, wird auf das so angegebene Ver-
  12386.                     zeichnis zugegriffen. Wird jedoch  nur der Dateiname spe-
  12387.                     zifiziert, so  wird im  durch  _up_dir bezeichneten  Ver-
  12388.                     zeichnis gesucht. Diese  Variable sollte mit dem  Zeichen
  12389.                     ,\' enden. Die maximale Länge beträgt 64 Zeichen.
  12390.  
  12391.       Siehe auch    _down_dir
  12392.  
  12393.  
  12394.  
  12395.  
  12396.  
  12397.  
  12398.  
  12399.  
  12400.  
  12401.  
  12402.  
  12403.  
  12404.  
  12405.  
  12406.  
  12407.  
  12408.  
  12409.  
  12410.  
  12411.  
  12412.  
  12413.  
  12414.  
  12415.  
  12416.  
  12417.  
  12418.  
  12419.  
  12420.  
  12421.  
  12422.  
  12423.  
  12424.  
  12425.  
  12426.  
  12427.  
  12428.  
  12429.  
  12430.  
  12431.  
  12432.  
  12433.  
  12434.  
  12435.  
  12436.  
  12437.  
  12438.  
  12439.  
  12440.                                       - 188 -
  12441.  
  12442.  
  12443.  
  12444.       _usage_fname
  12445.  
  12446.       Aufbau        str _usage_fname[64];
  12447.  
  12448.       Beschreibung  Die Systemvariable _usage_fname  enthält den  Standardna-
  12449.                     men  für die Benutzungs-Logdatei.  Die maximale Länge be-
  12450.                     trägt 64 Zeichen.
  12451.  
  12452.       Siehe auch    _capture_fname
  12453.  
  12454.  
  12455.  
  12456.  
  12457.  
  12458.  
  12459.  
  12460.  
  12461.  
  12462.  
  12463.  
  12464.  
  12465.  
  12466.  
  12467.  
  12468.  
  12469.  
  12470.  
  12471.  
  12472.  
  12473.  
  12474.  
  12475.  
  12476.  
  12477.  
  12478.  
  12479.  
  12480.  
  12481.  
  12482.  
  12483.  
  12484.  
  12485.  
  12486.  
  12487.  
  12488.  
  12489.  
  12490.  
  12491.  
  12492.  
  12493.  
  12494.  
  12495.  
  12496.  
  12497.  
  12498.  
  12499.  
  12500.  
  12501.  
  12502.  
  12503.  
  12504.  
  12505.  
  12506.                                       - 189 -
  12507.  
  12508.  
  12509.  
  12510.       _zmod_auto
  12511.  
  12512.       Aufbau        int _zmod_auto;
  12513.  
  12514.       Beschreibung  Die Systemvariable _zmod_auto kontrolliert,  ob automati-
  12515.                     sche Empfangs- (Download-) Vorgänge  mit dem ZmodemProto-
  12516.                     koll zulässig sind. Wenn Telix im  Terminal-Modus zum au-
  12517.                     tomatischen  Empfang aufgefordert wird und diese Variable
  12518.                     auf 0 (FALSE)  gesetzt ist, wird  Telix die  Aufforderung
  12519.                     ignorieren. (Der  Benutzer kann  die  Datei jedoch  immer
  12520.                     noch  empfangen, indem  er  das Zmodem-Protokoll  manuell
  12521.                     aus dem Alt-R Menü auswählt.
  12522.  
  12523.       Siehe auch    _cisb_auto
  12524.  
  12525.  
  12526.  
  12527.  
  12528.  
  12529.  
  12530.  
  12531.  
  12532.  
  12533.  
  12534.  
  12535.  
  12536.  
  12537.  
  12538.  
  12539.  
  12540.  
  12541.  
  12542.  
  12543.  
  12544.  
  12545.  
  12546.  
  12547.  
  12548.  
  12549.  
  12550.  
  12551.  
  12552.  
  12553.  
  12554.  
  12555.  
  12556.  
  12557.  
  12558.  
  12559.  
  12560.  
  12561.  
  12562.  
  12563.  
  12564.  
  12565.  
  12566.  
  12567.  
  12568.  
  12569.  
  12570.  
  12571.  
  12572.                                       - 190 -
  12573.  
  12574.  
  12575.  
  12576.       _zmod_rcrash
  12577.  
  12578.       Aufbau        int _zmod_rcrash;
  12579.  
  12580.       Beschreibung  Mit der  Systemvariable _zmod_rcrash wird  festgelegt, ob
  12581.                     die Zmodem-Option Crash Recovery (resume) für  den Daten-
  12582.                     empfang eingeschaltet  ist. Wenn  diese Variable  auf un-
  12583.                     gleich 0 (TRUE) gesetzt  ist, wird Telix versuchen,  wäh-
  12584.                     rend  eines  Zmodem-Downloads abgebrochene  Übertragungen
  12585.                     wieder aufzunehmen.
  12586.  
  12587.  
  12588.  
  12589.  
  12590.  
  12591.  
  12592.  
  12593.  
  12594.  
  12595.  
  12596.  
  12597.  
  12598.  
  12599.  
  12600.  
  12601.  
  12602.  
  12603.  
  12604.  
  12605.  
  12606.  
  12607.  
  12608.  
  12609.  
  12610.  
  12611.  
  12612.  
  12613.  
  12614.  
  12615.  
  12616.  
  12617.  
  12618.  
  12619.  
  12620.  
  12621.  
  12622.  
  12623.  
  12624.  
  12625.  
  12626.  
  12627.  
  12628.  
  12629.  
  12630.  
  12631.  
  12632.  
  12633.  
  12634.  
  12635.  
  12636.  
  12637.  
  12638.                                       - 191 -
  12639.  
  12640.  
  12641.  
  12642.       _zmod_scrash
  12643.  
  12644.       Aufbau        int _zmod_scrash;
  12645.  
  12646.       Beschreibung  Mit der  Systemvariable _zmod_scrash wird  festgelegt, ob
  12647.                     die  Zmodem-Option ,Crash Recovery'  beim Senden  von Da-
  12648.                     teien  (Upload)  eingeschaltet ist.  Wenn  diese Variable
  12649.                     auf ungleich 0 (TRUE) gesetzt ist,  wird Telix versuchen,
  12650.                     die andere  Seite zur Wiederaufnahme einer  während eines
  12651.                     Zmodem-Uploads abgebrochenen Übertragung zu bewegen.
  12652.  
  12653.       Siehe auch    _zmod_rcrash
  12654.  
  12655.  
  12656.  
  12657.  
  12658.  
  12659.  
  12660.  
  12661.  
  12662.  
  12663.  
  12664.  
  12665.  
  12666.  
  12667.  
  12668.  
  12669.  
  12670.  
  12671.  
  12672.  
  12673.  
  12674.  
  12675.  
  12676.  
  12677.  
  12678.  
  12679.  
  12680.  
  12681.  
  12682.  
  12683.  
  12684.  
  12685.  
  12686.  
  12687.  
  12688.  
  12689.  
  12690.  
  12691.  
  12692.  
  12693.  
  12694.  
  12695.  
  12696.  
  12697.  
  12698.  
  12699.  
  12700.  
  12701.  
  12702.  
  12703.  
  12704.                                       - 192 -
  12705.  
  12706.  
  12707.  
  12708.  
  12709.  
  12710.  
  12711.  
  12712.  
  12713.  
  12714.  
  12715.  
  12716.  
  12717.  
  12718.  
  12719.  
  12720.  
  12721.  
  12722.  
  12723.  
  12724.  
  12725.  
  12726.  
  12727.  
  12728.  
  12729.  
  12730.  
  12731.  
  12732.  
  12733.  
  12734.  
  12735.  
  12736.  
  12737.  
  12738.  
  12739.  
  12740.  
  12741.  
  12742.  
  12743.  
  12744.  
  12745.  
  12746.  
  12747.  
  12748.  
  12749.  
  12750.  
  12751.  
  12752.  
  12753.  
  12754.  
  12755.  
  12756.  
  12757.  
  12758.  
  12759.  
  12760.  
  12761.  
  12762.  
  12763.  
  12764.  
  12765.  
  12766.  
  12767.  
  12768.  
  12769.  
  12770.                                       - 193 -
  12771.  
  12772.  
  12773.  
  12774.       6.            Anhang A   ASCII-Zeichensatz
  12775.  
  12776.       Der  ASCII-Zeichensatz besteht  aus 128  Zeichen, die einem  Wert von 0
  12777.       bis  127 zugeordnet  werden. Der  IBM PC  benutzt den  IBM- erweiterten
  12778.       Zeichensatz  mit weiteren  128 Werten,  um  Sonderzeichen darzustellen.
  12779.       Die  folgende  Tabelle führt  den normalen  ASCII-Zeichensatz  auf. Die
  12780.       erste Spalte enthält die ASCII-Steuerzeichen.  Sie können normalerweise
  12781.       nicht dargestellt werden und  sind, ebenso wie Zeichen 127,   mit ihrem
  12782.       Namen bezeichnet.
  12783.  
  12784.  
  12785.       Dez  Hex Strg Name  Dez  Hex  Chr  Dez  Hex  Chr  Dez  Hex  Chr
  12786.  
  12787.         0   00   ^@  NUL   32   20        64   40    @   96   60    `
  12788.         1   01   ^A  SOH   33   21    !   65   41    A   97   61    a
  12789.         2   02   ^B  STX   34   22    "   66   42    B   98   62    b
  12790.         3   03   ^C  ETX   35   23    #   67   43    C   99   63    c
  12791.         4   04   ^D  EOT   36   24    $   68   44    D  100   64    d
  12792.         5   05   ^E  ENQ   37   25    %   69   45    E  101   65    e
  12793.         6   06   ^F  ACK   38   26    &   70   46    F  102   66    f
  12794.         7   07   ^G  BEL   39   27    '   71   47    G  103   67    g
  12795.         8   08   ^H   BS   40   28    (   72   48    H  104   68    h
  12796.         9   09   ^I   HT   41   29    )   73   49    I  105   69    i
  12797.        10   0a   ^J   LF   42   2a    *   74   4a    J  106   6a    j
  12798.        11   0b   ^K   VT   43   2b    +   75   4b    K  107   6b    k
  12799.        12   0c   ^L   FF   44   2c    ,   76   4c    L  108   6c    l
  12800.        13   0d   ^M   CR   45   2d    -   77   4d    M  109   6d    m
  12801.        14   0e   ^N   SO   46   2e    .   78   4e    N  110   6e    n
  12802.        15   0f   ^O   SI   47   2f    /   79   4f    O  111   6f    o
  12803.        16   10   ^P  DLE   48   30    0   80   50    P  112   70    p
  12804.        17   11   ^Q  DC1   49   31    1   81   51    Q  113   71    q
  12805.        18   12   ^R  DC2   50   32    2   82   52    R  114   72    r
  12806.        19   13   ^S  DC3   51   33    3   83   53    S  115   73    s
  12807.        20   14   ^T  DC4   52   34    4   84   54    T  116   74    t
  12808.        21   15   ^U  NAK   53   35    5   85   55    U  117   75    u
  12809.        22   16   ^V  SYN   54   36    6   86   56    V  118   76    v
  12810.        23   17   ^W  ETB   55   37    7   87   57    W  119   77    w
  12811.        24   18   ^X  CAN   56   38    8   88   58    X  120   78    x
  12812.        25   19   ^Y   EM   57   39    9   89   59    Y  121   79    y
  12813.        26   1a   ^Z  SUB   58   3a    :   90   5a    Z  122   7a    z
  12814.        27   1b   ^[  ESC   59   3b    ;   91   5b    [  123   7b    {
  12815.        28   1c   ^\   FS   60   3c    <   92   5c    \  124   7c    |
  12816.        29   1d   ^]   GS   61   3d    =   93   5d    ]  125   7d    }
  12817.        30   1e   ^^   RS   62   3e    >   94   5e    ^  126   7e    ~
  12818.        31   1f   ^_   US   63   3f    ?   95   5f    _  127   7f  DEL
  12819.  
  12820.  
  12821.  
  12822.  
  12823.  
  12824.  
  12825.  
  12826.  
  12827.  
  12828.  
  12829.  
  12830.  
  12831.  
  12832.  
  12833.  
  12834.  
  12835.  
  12836.                                       - 194 -
  12837.  
  12838.  
  12839.  
  12840.  
  12841.  
  12842.  
  12843.  
  12844.  
  12845.  
  12846.  
  12847.  
  12848.  
  12849.  
  12850.  
  12851.  
  12852.  
  12853.  
  12854.  
  12855.  
  12856.  
  12857.  
  12858.  
  12859.  
  12860.  
  12861.  
  12862.  
  12863.  
  12864.  
  12865.  
  12866.  
  12867.  
  12868.  
  12869.  
  12870.  
  12871.  
  12872.  
  12873.  
  12874.  
  12875.  
  12876.  
  12877.  
  12878.  
  12879.  
  12880.  
  12881.  
  12882.  
  12883.  
  12884.  
  12885.  
  12886.  
  12887.  
  12888.  
  12889.  
  12890.  
  12891.  
  12892.  
  12893.  
  12894.  
  12895.  
  12896.  
  12897.  
  12898.  
  12899.  
  12900.  
  12901.  
  12902.                                       - 195 -
  12903.  
  12904.  
  12905.  
  12906.       7. Anhang B   Erweiterte Tastenscancodes
  12907.  
  12908.       Die folgende Tabelle  führt die Tastenscancodes  für besondere  nicht--
  12909.       ASCIITasten auf, so wie sie  von inkey und inkeyw geliefert werden bzw.
  12910.       von den keyget,  key-set, keyload, und keysave SALT  Funktionen benutzt
  12911.       werden.
  12912.  
  12913.  
  12914.       Taste          Normal        Strg           Alt          Shift
  12915.                    Dec    Hex    Dec    Hex    Dec    Hex    Dec    Hex
  12916.  
  12917.       F1         15104   3b00  24064   5e00  26624   6800  21504   5400
  12918.       F2         15360   3c00  24320   5f00  26880   6900  21760   5500
  12919.       F3         15616   3d00  24576   6000  27136   6a00  22016   5600
  12920.       F4         15872   3e00  24832   6100  27392   6b00  22272   5700
  12921.       F5         16128   3f00  25088   6200  27648   6c00  22528   5800
  12922.       F6         16384   4000  25344   6300  27904   6d00  22784   5900
  12923.       F7         16640   4100  25600   6400  28160   6e00  23040   5a00
  12924.       F8         16896   4200  25856   6500  28416   6f00  23296   5b00
  12925.       F9         17152   4300  26112   6600  28672   7000  23552   5c00
  12926.       F10        17408   4400  26368   6700  28928   7100  23808   5d00
  12927.  
  12928.  
  12929.       1                                      30720   7800
  12930.       2                                      30976   7900
  12931.       3                                      31232   7a00
  12932.       4                                      31488   7b00
  12933.       5                                      31744   7c00
  12934.       6                                      32000   7d00
  12935.       7                                      32256   7e00
  12936.       8                                      32512   7f00
  12937.       9                                      32768   8000
  12938.       10                                     33024   8100
  12939.  
  12940.  
  12941.  
  12942.       Hoch       18432   4800
  12943.       Tief       20480   5000
  12944.       Links      19200   4b00  29440   7300
  12945.       Rechts     19712   4d00  29696   7400
  12946.       Pos1       18176   4700  30464   7700
  12947.       Ende       20224   4f00  29952   7500
  12948.       Bild^      18688   4900  33792   8400
  12949.       Bildv      20736   5100  30208   7600
  12950.       Einfg      20992   5200
  12951.       Entf       21248   5300
  12952.  
  12953.  
  12954.  
  12955.  
  12956.  
  12957.  
  12958.  
  12959.  
  12960.  
  12961.  
  12962.  
  12963.  
  12964.  
  12965.  
  12966.  
  12967.  
  12968.                                       - 196 -
  12969.  
  12970.  
  12971.  
  12972.       8. Anhang C - Farbattribute
  12973.  
  12974.       Einige SALT Funktionen wie pstra benutzen  Farbattributwerte. Ein Bild-
  12975.       schirmzeichen besitzt eine Vordergrundfarbe und  eine Hintergrundfarbe.
  12976.       Erlaubte Farben werden wie folgt numeriert:
  12977.  
  12978.          Schwarz          00
  12979.          Blau             01
  12980.          Grün             02
  12981.          Türkis           03
  12982.          Rot              04
  12983.          Violett          05
  12984.          Braun            06
  12985.          Hellgrau         07
  12986.          Dunkelgrau       08
  12987.          Hellblau         09
  12988.          Hellgrün         10
  12989.          Helltürkis       11
  12990.          Hellrot          12
  12991.          Hellviolett      13
  12992.          Gelb             14
  12993.          Weiß             15
  12994.  
  12995.       Ein  Farbattributwert  für  eine  Farbkombination  berechnet  sich  wie
  12996.       folgt: 
  12997.  
  12998.         Farbattributwert = Vordergrundfarbwert + (16 * Hintergrundfarbwert)
  12999.  
  13000.       Beispiel: 
  13001.  
  13002.       Ein gelbes Zeichen  auf blauem Untergrund  hat den Farbattributwert  30
  13003.       (14 + (16 * 1)).
  13004.  
  13005.  
  13006.  
  13007.  
  13008.  
  13009.  
  13010.  
  13011.  
  13012.  
  13013.  
  13014.  
  13015.  
  13016.  
  13017.  
  13018.  
  13019.  
  13020.  
  13021.  
  13022.  
  13023.  
  13024.  
  13025.  
  13026.  
  13027.  
  13028.  
  13029.  
  13030.  
  13031.  
  13032.  
  13033.  
  13034.                                       - 197 -
  13035.  
  13036.  
  13037.  
  13038.       9. Anhang D - Index
  13039.  
  13040.  _add_lf   151
  13041.  _alarm_on   152, 183
  13042.  _answerback_str   153
  13043.  _asc_rcrtrans   154
  13044.  _asc_striph   154
  13045.  _auto_ans_str   156, 176
  13046.  _back_color   157, 173
  13047.  _capture_fname   158, 189
  13048.  _cisb_auto   159, 190
  13049.  _connect_str   160, 178
  13050.  _date_format   161, 187
  13051.  _dial_pause   162, 163
  13052.  _dial_time   163
  13053.  _dialpost   164
  13054.  _dialpref   165
  13055.  _dir_prog   166
  13056.  _disp_free   167
  13057.  _down_dir   100, 168, 182, 186, 188
  13058.  _editor   169
  13059.  _entry_enum   170
  13060.  _entry_name   43, 101, 171
  13061.  _entry_pass   171
  13062.  _ext_filespec   172
  13063.  _fore_color   157, 173
  13064.  _image_file   174
  13065.  _local_echo   175
  13066.  _mdm_hang   176, 177
  13067.  _mdm_init_str   177
  13068.  _qdbar_on   179
  13069.  _redial_stop   164, 180
  13070.  _scr_chk_key   181
  13071.  _script_dir   182
  13072.  _sound_on   152, 183
  13073.  _strip_high   184
  13074.  _swap_bs   185
  13075.  _telix_dir   186
  13076.  _time_format   161, 187
  13077.  _up_dir   104, 168, 182, 186, 188
  13078.  _usage_fname   158, 189
  13079.  _zmod_auto   159, 190
  13080.  _zmod_rcrash   191, 192
  13081.  _zmod_scrash   192
  13082.  Alarm   13, 22, 23, 132, 152, 183
  13083.  Box   21, 24, 103, 113
  13084.  Break   12, 13, 17, 105, 121, 127, 135
  13085.  Call   22, 25
  13086.  Calld   22, 25
  13087.  Capture   22, 26, 27, 96, 140, 158, 189
  13088.  Capture_stat   27, 140
  13089.  Carrier   21, 28, 112
  13090.  Cgetc   21, 30, 31, 127, 134
  13091.  Cgetct   21, 31
  13092.  Chatmode   29
  13093.  Cinp_cnt   30, 31
  13094.  Clear_scr   32
  13095.  Continue   17
  13096.  Copychrs   33, 84, 124
  13097.  Copystr   21, 33, 34, 84, 124
  13098.  Cputc   21, 35
  13099.  
  13100.                                       - 198 -
  13101.  
  13102.  
  13103.  
  13104.  Cputs   21, 35-37, 135, 156, 164, 165, 176, 177, 180
  13105.  Cputs_tr   36, 37
  13106.  Cursor_onoff   38
  13107.  Curtime   22, 39, 40, 126, 128
  13108.  Date   22, 39, 40, 60, 128, 161, 187
  13109.  Delay   22, 41, 130
  13110.  Delay_scr   41
  13111.  Delchrs   21, 42
  13112.  Dial   22, 43, 101, 162, 163, 170, 171
  13113.  Do...while   15
  13114.  Dos    3, 22, 44-46, 54,  55, 57, 59, 60, 62, 73,  94, 102, 104, 112, 166,
  13115.            169
  13116.  Dosfunction   44, 45, 102, 112
  13117.  Exittelix   46
  13118.  Expression   12
  13119.  Fclearerr   47
  13120.  Fclose   21, 48, 52, 63
  13121.  Fdelete   21, 49
  13122.  Feof   21, 47, 50, 51, 54, 66
  13123.  Ferror   21, 47, 50, 51, 66
  13124.  Fflush   21, 52
  13125.  Fgetc   21, 50, 53, 64
  13126.  Fgets   21, 54, 65
  13127.  Fileattr   55, 57, 59, 60
  13128.  Filefind   57, 62
  13129.  Filesize   59
  13130.  Filetime   40, 55, 60, 126, 128
  13131.  Flushbuf   61
  13132.  Fnstrip   21, 62
  13133.  Fopen   21, 47, 48, 50-54, 63-66, 68, 70
  13134.  For   2, 12, 13, 15-18, 64, 65, 108, 123, 143, 145
  13135.  Fputc   21, 53, 64, 65
  13136.  Fputs   21, 51, 54, 64, 65
  13137.  Fread   21, 66, 70
  13138.  Frename   21, 49, 67
  13139.  Fseek   21, 63, 66, 68, 69
  13140.  Ftell   21, 68, 69
  13141.  Fwrite   21, 66, 70
  13142.  Get_baud   71
  13143.  Get_datab   72
  13144.  Get_parity   74
  13145.  Get_port   71, 72, 74-76
  13146.  Get_stopb   75, 76
  13147.  Getenv   73
  13148.  Gets   21, 55, 62, 77, 78
  13149.  Getsxy   21, 77, 78
  13150.  Getx   21, 78-80
  13151.  Gety   21, 78-80
  13152.  Goto   12, 18, 19
  13153.  Gotoxy   21, 79, 80, 144
  13154.  Hangup   21, 46, 81
  13155.  Helpscreen   82
  13156.  If   4, 12-15, 17-19, 25,  26, 28, 30, 31, 47, 50, 51, 55, 60, 63, 73, 86,
  13157.            100, 114-117, 121, 125, 127, 135, 141, 148
  13158.  Inkey   21, 23, 83, 181, 196
  13159.  Inkeyw   21, 35, 83, 196
  13160.  Inschrs   21, 42, 84
  13161.  Is_loaded   25, 86, 93, 137
  13162.  Isalnum   21, 85
  13163.  Isalpha   21, 85
  13164.  Isascii   21, 85
  13165.  
  13166.                                       - 199 -
  13167.  
  13168.  
  13169.  
  13170.  Iscntrl   21, 85
  13171.  Isdigit   21, 85
  13172.  Islower   21, 85
  13173.  Isupper   21, 85
  13174.  Itos   21, 87, 114
  13175.  Keyget   21, 88-91, 196
  13176.  Keyload   21, 88-91, 196
  13177.  Keysave   21, 88-91, 196
  13178.  Keyset   21, 88-91
  13179.  Load_scr   93
  13180.  Loadfon   22, 92
  13181.  Newdir   22, 94
  13182.  Printc   21, 50, 53, 95, 97, 98, 123, 142
  13183.  Printer   22, 26, 96
  13184.  Printn   15, 16, 21, 71, 75, 95, 97, 98, 118, 121, 126, 130, 142
  13185.  Prints  4, 5,  7, 9, 13-18, 21,  25, 26, 28, 31,  39, 40, 50, 51,  56, 58,
  13186.            60,  63, 71, 73,  75, 87,  88, 95, 97-100,  114, 115,  117, 121,
  13187.            125, 126, 128, 130, 148
  13188.  Printsc   21, 40, 54, 60, 77, 95, 97-99, 118, 126, 128, 142
  13189.  Printsc_trm   98
  13190.  Pstra   21, 99, 113, 197
  13191.  Pstraxy   21, 99, 113
  13192.  Receive   22, 100, 104, 107, 168
  13193.  Redial   22, 43, 101, 164, 170, 171, 180
  13194.  Return   3, 4, 12, 13, 15-17, 35,  36, 54, 77, 78, 98, 141, 151, 154, 164,
  13195.            180
  13196.  Run   22, 44, 45, 94, 102
  13197.  Scroll   21, 24, 32, 103
  13198.  Send   22, 100, 104, 105, 107
  13199.  Send_brk   105
  13200.  Set_cparams   106, 110
  13201.  Set_defprot   107
  13202.  Set_port   21, 106, 110
  13203.  Set_terminal   111
  13204.  Setchr   21, 108, 109, 123, 143
  13205.  Setchrs   21, 108, 109
  13206.  Show_directory   112
  13207.  Status_wind   113
  13208.  Strcat   21, 115
  13209.  Strchr   21, 116
  13210.  Strcmpi   21, 117
  13211.  Strlen   21, 42, 118, 120
  13212.  Strlower   119, 122
  13213.  Strmaxlen   118, 120
  13214.  Strpos   21, 121
  13215.  Strposi   21, 121
  13216.  Strupper   119, 122
  13217.  Subchr   21, 64, 108, 123, 124
  13218.  Subchrs   33, 34, 109, 124, 125
  13219.  Substr   21, 33, 34, 121, 124, 125
  13220.  Tday   22, 39, 60, 126
  13221.  Terminal   111, 127
  13222.  Thour   22, 39, 60, 126
  13223.  Time   22, 39, 40, 60, 128-130, 161, 163, 187
  13224.  Time_up   22, 129, 130
  13225.  Timer_free   129
  13226.  Timer_restart   129
  13227.  Timer_start   129
  13228.  Timer_total   129
  13229.  Tmin   22, 39, 60, 126
  13230.  Tmonth   22, 39, 60, 126
  13231.  
  13232.                                       - 200 -
  13233.  
  13234.  
  13235.  
  13236.  Tolower   21, 131, 133
  13237.  Tone   22, 23, 132
  13238.  Toupper   21, 131, 133
  13239.  Track   22, 127, 134, 135, 148
  13240.  Track_hit   134
  13241.  Transtab   136
  13242.  Tsec   22, 39, 60, 126
  13243.  Tyear   22, 39, 60, 126
  13244.  Unload_scr   22, 86, 137
  13245.  Update_term   21, 138
  13246.  Usage_stat   27, 140
  13247.  Usagelog   139, 141
  13248.  Ustamp   22, 139, 141
  13249.  Vgetchr   142, 144
  13250.  Vgetchrsa   143
  13251.  Vputchr   142, 144
  13252.  Vputchrsa   145
  13253.  Vrstrarea   146
  13254.  Vsavearea   146, 147
  13255.  Waitfor   22, 134, 135, 148
  13256.  While   4, 12-15, 17, 19,  23, 30, 50, 53, 54, 58, 59, 116, 121, 127, 130,
  13257.            135
  13258.  
  13259.  
  13260.  
  13261.  
  13262.  
  13263.  
  13264.  
  13265.  
  13266.  
  13267.  
  13268.  
  13269.  
  13270.  
  13271.  
  13272.  
  13273.  
  13274.  
  13275.  
  13276.  
  13277.  
  13278.  
  13279.  
  13280.  
  13281.  
  13282.  
  13283.  
  13284.  
  13285.  
  13286.  
  13287.  
  13288.  
  13289.  
  13290.  
  13291.  
  13292.  
  13293.  
  13294.  
  13295.  
  13296.  
  13297.  
  13298.                                       - 201 -
  13299.