home *** CD-ROM | disk | FTP | other *** search
/ Chip Hitware 3 / Chip_Hitware_Vol_03.iso / chiphit3 / dfu / wxbtx / winapi.new < prev    next >
Text File  |  1995-06-12  |  45KB  |  1,018 lines

  1. WXBtx (ab Version 2.10) Erweiterungen/Änderungen zur WINAPI Spezifikation:
  2.  
  3. Die Originalspezifikation ist bei der Deutschen Telekom AG unter
  4. der Seitennummer *10440170# als Telesoftware zu laden.
  5.  
  6. 1.)
  7. Die "Text:" WM_DDE_REQUEST und WM_DDE_ADVISE Message läßt einen
  8. weiteren Parameter zu. Dieser bedeutet dann die Anzahl der Bild-
  9. schirmzeilen (Höhe). Zeilen sind dabei durch CR/LF getrennt
  10. (gemäß dem Clipboard Standard) und können auch (entgegen der
  11. Spezifikation) bis zu 80 Zeichen lang sein, wenn eine 80-Zeichen
  12. Seite dargestellt wird und eine entsprechende Anforderung vorliegt.
  13. Enthält die WM_DDE_REQUEST oder WM_DDE_ADVISE Message das Clipboard-
  14. Format CF_OEMTEXT, wird der entsprechende Ausschnitt des Btx-Fensters
  15. im OEM-Zeichensatz aufbereitet. Dieser enthält unter anderem
  16. auch Näherungen für Linien- und Blockgrafik, griechische Symbole
  17. usw. CF_OEMTEXT liefert also mehr Information als CF_TEXT mit
  18. einem anschließendem AnsiToOem-Aufruf!
  19. Sind nur drei Parameter angegeben, wird nur eine Zeile ausgegeben,
  20. die auch, entsprechend der Spezifikation, kein CR/LF am Ende enthält.
  21. Abwärtskompatibilität ist also auf jeden Fall gegeben.
  22.  
  23. 2.)
  24. Zur Erleichterung der Auswertung von "AdeCount" bzw. "ErAdeCount"
  25. gibt es zwei Kommandos "AdeDelta" bzw. "ErAdeDelta". Sie liefern
  26. jedem Client unabhängig die Anzahl der eingegangenen ADEs bzw.
  27. ERADEs seit der letzten Abfrage, also bei WM_DDE_ADVISE im Normal-
  28. fall 1 (außer evtl. beim ersten Auftreten eines ADVISE).
  29.  
  30. 3.)
  31. Die Kodierung der Darstellungsattribute gem. Anhang A wurde auf der
  32. Position 0 um die möglichen Werte 4,5 und 6 erweitert.
  33. Diese Werte stehen für Zeichen aus dem PC-Zeichensatz (OEM) im Falle
  34. der Darstellung einer ANSI:VT100 Seite.
  35. Dabei werden die Zeichen 0x00 bis 0x5F auf Zeichensatz 4 abgebildet;
  36. 0x60 bis 0xBF auf Zeichensatz 5 und 0xC0 bis 0xFF auf Zeichensatz 6.
  37. Der Zeichencode an Position 1 (von 2/0 bis 7/15) gibt dabei dann den
  38. Offset in die jeweilige Tabelle an - Zeichensatz 4 und Zeichen 2/1
  39. entspricht also dem PC-Zeichen 0x01 (smiley) und nicht etwa 0x21!
  40. Für die Datex-J VT100 Darstellung wäre das nicht nötig, da dort nur
  41. ein 7 Bit Zeichensatz zwischen 0x20 und 0x7F definiert ist,
  42. jedoch unterstützt WXBtx die ANSI-Darstellung mit dem PC-Zeichensatz
  43. um auch mit Mailboxen einen Datenaustausch zu ermöglichen.
  44. Die Zeichencodes 6, 6/0 bis 7/15 sind nicht verwendet (da 0xC0 bis
  45. 0xFF nur 64 Werte sind, was 2/0 bis 5/15 entspricht).
  46.  
  47. 4.)
  48. Die "Colours" WM_DDE_REQUEST oder WM_DDE_ADVISE Message ist nicht
  49. genau spezifiziert, was die Anzahl der Farben in der Palette angeht.
  50. WXBtx bereitet nur die 16 definierbaren Farben auf, da die ersten 16
  51. von vornherein durch die CEPT-Spezifikation festgelegt sind.
  52. WXBtx versteht zusätzlich zum definierten Clipboard-Format CF_PALETTE
  53. auch CF_TEXT. Dann werden die 16 Farben als ein String mit 48 hexa-
  54. dezimalen Digits ausgegeben. Für jede Farbe 3 Digits jeweils für
  55. Rot, Grün und Blau. So bedeutet z.B. "000" Schwarz, "FF0" Hellgelb
  56. und "777" ein mittleres Grau.
  57.  
  58. 5.) /* noch nicht implementiert */
  59. Die "Drcs:<which>" WM_DDE_REQUEST oder WM_DDE_ADVISE Message ist
  60. gänzlich unspezifiziert hinsichtlich der Bedeutung von <which>.
  61. Derzeit ist sie noch nicht implementiert.
  62.  
  63. 6.) /* WM_DDE_EXECUTE [Format(x,y,z)] noch nicht implementiert */
  64. Ein neuer Befehl "Format" WM_DDE_REQUEST oder WM_DDE_ADVISE informiert
  65. den Client über das Bildschirmformat. Er liefert drei Werte: Spalten,
  66. Zeilen, Modus: Spalten kann dabei 40 oder 80 sein, Zeilen 20 oder
  67. 24 (80,20 ist nicht definiert) und Modus kann entweder "CEPT1", "ANSI"
  68. oder "VT100" gemäß der Spezifikation bei "Facilities" sein.
  69. Der Unterschied zwischen "ANSI" und "VT100" bezieht sich auf die
  70. Interpretation der Zeichencodes 5/11, 5/12, 5/13 und 7/11, 7/12, 7/13
  71. sowie 7/14. Telekom verwendet diese Zeichen als deutsche Umlaute
  72. (Ä,Ö,Ü,ä,ö,ü,ß), in üblichen Mailboxen wird jedoch ein 8-Bit Zeichen-
  73. satz gemäß dem IBM-Standard verwendet. Dort liegen die deutschen
  74. Umlaute auf Zeichencodes der oberen 128 Zeichen und auf den angegebenen
  75. Positionen liegen die US-ASCII Zeichen ([,\,],{,|,},~).
  76.  
  77. "[Format(x,y,m)]" steht auch als WM_DDE_EXECUTE zur Verfügung.
  78. Dabei wird der Dekoder in den entsprechenden Modus versetzt.
  79. Achtung!!!
  80.   Die Umschaltung zwischen CEPT1 und ANSI, VT100 ist nur bei
  81.   bestehender Datex-J Verbindung von Dauer und geschieht dann
  82.   über die Systemseite *707#. Leider scheint es unmöglich, eine
  83.   VT100 Anwahl bei ISDN durchzuführen, zumindest ist es mir bislang
  84.   nicht gelungen.
  85.   Ein Umschaltversuch auf 80,20 wird mit einem Fehler WM_DDE_ACK
  86.   quittiert und auch 40,20 ist nur bis zum nächsten von Seitenaufbau
  87.   von Dauer, falls dieser eine "Format Default" Sequenz enthält.
  88.  
  89. 7.)
  90. Ergänzend zu "Error" WM_DDE_REQUEST/WM_DDE_ADVISE existiert ein
  91. Element "Info", welches bei erfolgreichen Operationen (insbesondere
  92. bei WM_DDE_EXECUTE Kommandos) zusätzliche Informationen liefert.
  93.  
  94. 8.)
  95. Der Befehl "Connection" WM_DDE_REQUEST/WM_DDE_ADVISE liefert außer
  96. "disconnected" und "connected" noch die Zustände:
  97. "dialing"   während einer Anwahl
  98. "login"     nach erfolgreicher Anwahl, während Warten auf Login
  99. "busy"      bei Dekoder-Aktivität (Makros etc.)
  100. "closing"   während einer Abwahl
  101. Die Bedeutung von "connected" nach der WINAPI-Dokumentation ent-
  102. spricht also einem `vollständig verbunden` inclusive Login.
  103.  
  104. 9.) /* noch nicht implementiert */
  105. WXBtx versteht eine ganze Reihe WM_DDE_POKES zu den entsprechenden
  106. WM_DDE_REQUEST/WM_DDE_ADVISE Messages, mit entsprechenden Werten
  107. und Auswirkungen im Dekoder. Im einzelnen lassen sich "poken":
  108. "Mem:<z>,<s>,<size>"
  109.   setzt die entsprechenden Zeichenpositionen auf die angegebenen
  110.   Werte für Font, Zeichencode, Diakrit, Farben und Attribute.
  111. "Drcs:<which>"
  112.   definiert DRCS entsprechend der Definition für die WM_DDE_REQUEST/
  113.   WM_DDE_ADVISE Messages.
  114. "Colours"
  115.   setzt die Palette.
  116. "Dclut"
  117.   setzt die 4 Indizes für 4-Farb-DCRS.
  118. "FullRow"
  119.   setzt die Zeilen-Hintergrundfarben und die Bildschirmhintergundfarbe.
  120.  
  121. 10.)
  122. Außer den definierten Strings "RcvData:..." für WM_DDE_ADVISE
  123. stehen zusätzlich die Strings "RcvIsdn:..." zur Verfügung.
  124. Bei diesen ist die Bedeutung des Bytes rdFlags näher an der
  125. Dokumentation zu BTX-ISDN-Headern und damit abweichend von den
  126. in der WINAPI-Dokumentation verwendeten Bitmasken wie folgt:
  127. #define RDF_RAW   0 /* raw data */
  128. #define RDF_SCRN  1 /* screen data */
  129. #define RDF_TFID  2 /* terminal facility identifier */
  130. #define RDF_TDIO  4 /* transparent data */
  131. #define RDF_BULK  8 /* bulk data */
  132. #define RDF_MORE 16 /* more data (combined with RDF_TDIO/RDF_BULK) */
  133. Das BTX-ISDN-Header Format verwendet 2 Bytes, "Type" und "Control",
  134. wobei "Control" aber praktisch nur zur Unterscheidung zwischen "more"
  135. und "last" Datenblöcken bei transparenten Daten und Bulk Daten dient.
  136. Dieses eine Bit (Bit 0 von "Control") ist hier in RDF_MORE abgebildet.
  137. Die Werte RDF_TFID und RDF_BULK treten dabei nur bei tatsächlichen
  138. ISDN-Verbindungen auf! Bei Layer-2 (Modem-Verbindung) kommen die
  139. TFIs ebenfalls als RDF_SCRN und Reverse-Bulk-Daten als RDF_TDIO,
  140. da sie durch den Dekoder im Layer-2 nicht zu unterscheiden sind.
  141. Die RDF_TDIO Blocks sind aber dennoch mit RDF_MORE kombiniert,
  142. falls der jeweilige Datenblock im Layer-2 mit DLE/ETB empfangen wurde,
  143. was genau der Bedeutung des "more" in den BTX-ISDN-Headern entspricht.
  144. Transparente Layer-2 Daten enden "endgültig" mit DLE/ETX.
  145. Die "RcvIsdn:..." Messages sind also durchaus auch bei Modem-
  146. Verbindung möglich, es unterscheidet sich nur der Inhalt der
  147. RDF_RAW Daten bei ISDN- und Modem-Verbindungen!
  148.  
  149. Nebenbemerkung:
  150.   Soweit mir bekannt ist, findet bei den neuen "schnellen" Zugängen
  151.   kein Protokoll nach "Layer-2" mehr statt, außer im Falle der
  152.   Übertragung von transparenten Daten. Das ist u.U. bei der Auswertung
  153.   von RDF_RAW zu beachten, indem ein korrekter Layer-2 Dekoder auch
  154.   einen ungeblockten "Screen" Datenstrom akzeptiert. Das Handling
  155.   dieser Schicht wird ohnehin im Dekoder vorgenommen, sodaß nur
  156.   gültige Layer-2 Datenblöcke in den RDF_RAW Datenstrom eingehen.
  157.   Fehlerhafte Blockprüfsummen etc. werden vom Dekoder direkt
  158.   abgelehnt und gehen erst garnicht an den Client!
  159.  
  160. 11.)
  161. Zur Vereinfachung und schnelleren Abarbeitung von Sendedaten gibt
  162. es außer dem in WINAPI definierten Konstrukt aus WM_DDE_POKE "SendBuf"
  163. mit anschließendem WM_DDE_EXECUTE "[Send(len)]", "[SendTrans(len)]"
  164. oder "[SendBulk(len)]" ein neues WM_DDE_POKE "SndIsdn".
  165. Dieses erwartet im Datenbereich pData->Value[] eine Struktur ganz
  166. entsprechend den "RcvIsdn:..." WM_DDE_REQUEST/WM_DDE_ADVISE Messages,
  167. also im ersten WORD die Länge des Datenblockes, danach in einem
  168. BYTE den Datenblock-Typ gefolgt von den eigentlichen Daten.
  169. Die C-Struktur sieht so aus:
  170. /* Sendedaten in WM_DDE_POKE Message */
  171. /* (struct SndData *)pData.Value */
  172. struct SndData {
  173.   WORD sdDataLen;
  174.   BYTE sdFlags;
  175.   BYTE sdBuffer[];
  176. };
  177. Die Daten werden direkt bei WM_DDE_POKE gesendet und der zugehörige
  178. HGLOBAL wird (wenn der Client es über pData.fRelease anzeigt)
  179. auch sofort wieder freigegeben.
  180. Das sdFlags BYTE entspricht dabei dem rdFlags BYTE in den "RcvIsdn:..."
  181. Messages, hat also folgende Bedeutungen:
  182. #define SDF_RAW   0 /* raw data */
  183. #define SDF_SCRN  1 /* screen data */
  184. #define SDF_TFID  2 /* terminal facility identifier */
  185. #define SDF_TDIO  4 /* transparent data */
  186. #define SDF_BULK  8 /* bulk data */
  187. #define SDF_MORE 16 /* more data (combined with SDF_TDIO/SDF_BULK) */
  188.  
  189. Wichtig!!!
  190.   Ein "last" (bzw. "not more") SDF_TDIO oder SDF_BULK Datenblock,
  191.   der nicht in die vorgegebenen maximalen Blocklängen von 256 Byte
  192.   bei Layer-2 bzw. 126 Byte bei ISDN paßt, wird im Dekoder in
  193.   (evtl. mehrere) Datenblöcke der jeweiligen Maximalgröße zerteilt
  194.   und nur der letzte Block wird als wirklich als "last" gesendet.
  195.   Es genügt also durchaus, z.B. einen 1500 Byte großen, transparenten
  196.   Datenblock *OHNE* SDF_MORE in den Btx-Server zu "poken", da
  197.   dieser ohnehin abhängig vom Verbindungstyp die Daten stückeln muß.
  198.  
  199. Nebenbemerkung:
  200.   Wo die fehlenden 2 Bytes zwischen B3-Datablock-Size = 130 Byte,
  201.   und 2 Byte BTX-ISDN-Header + 126 Byte Daten = 128 Byte bleiben,
  202.   ist mir selbst bisher nicht klar geworden...
  203.   Doch letztens sagte eines dieser "valuable statements" bei
  204.   der Verabschiedung aus meiner lokalen Mailbox:
  205.   "Never test for an error that you don't know to handle!"
  206.   In diesem Sinne...
  207.  
  208. 12.)
  209. Zur Vereinfachung der Send- und Emfpangsfunktionen existieren
  210. mehrere WM_DDE_EXECUTE Befehle für transparente Daten und
  211. (Reverse-)Bulk. Diese erwarten einen Dateinamen als Argument
  212. und senden/empfangen die jeweiligen Datei aus/in die angegebene
  213. Datei. Die Befehle lauten:
  214.  
  215.    [GetTransp(filename.ext)]  - Start Transparente Daten empfangen
  216.    [EndTransp]              - Ende transparente Daten empfangen
  217.    [PutTransp(filename.ext)]  - Transparente Daten senden
  218.  
  219.    [GetBulk(filename.ext)]    - Start Reverse-Bulk Daten empfangen
  220.    [EndBulk]              - Ende Reverse-Bulk Daten empfangen
  221.    [PutBulk(filename.ext)]    - Bulk Daten senden
  222.  
  223. Die Dateinamen können Laufwerk und/oder Pfadnamen enthalten.
  224. Der Pfadname ".\" wird dabei auf das Installationsverzeichnis
  225. von WXBtx bezogen. Liegt WXBTX.EXE also z.B. in "C:\WXBTX",
  226. dann würde eine Datei ".\LOG\TEST.CC0" als Ergebnis den kompletten
  227. Pfadnamen "C:\WXBTX\LOG\TEST.CC0" liefern.
  228.  
  229. Zu beachten ist, daß z.B. transparente Daten üblicherweise eine
  230. Begrenzung der Feldlänge von 1500 Byte aufweisen und daß Bulk-
  231. Requests ein Handshake der Zeile-24 Meldungen erfordern.
  232. Ist eine Datei mit transparenten Daten größer als 1500 Byte,
  233. wird sie zu jeweils 1500 Byte geblockt. Dies funktioniert aber
  234. nicht z.B. mit der Mitteilungsseite *820#, wohl aber evtl. in
  235. einem externen Rechner mit entsprechender Software.
  236. Bulkdaten werden zu 4096 Byte geblockt, obwohl ein einzelner
  237. Bulkrequest inklusive dem "BDHQSEI" Element (einer kompletten
  238. Btx-Seite mit Seitenkopf) kaum 2048 Byte überschreiten wird.
  239. Ein erfolgversprechendes Bulk-up muß ohnehin jeden Bulk-Request
  240. mit der Zeile-24 Meldung verifizieren und geeignete Maßnahmen
  241. ergreifen.
  242.  
  243. Die Unterscheidung zwischen transparenten Daten und Bulk-Daten
  244. wird physikalisch erst mit ISDN eingeführt. Bei einer Layer-2
  245. (Modem) Verbindung liefern die beiden Funktionsgruppen sowohl bei
  246. `normalen' transparenten Daten als auch bei (Reverse-)Bulk-
  247. Daten Ergebnisse. Anwendungsprogramme sollten dennoch die ihrer
  248. Funtkion entsprechenden Befehle verwenden, da es sonst bei
  249. Anwendern mit ISDN-Anschluß zu Komplikationen kommt.
  250.  
  251. Solange transparente Daten oder Bulk-Daten empfangen werden,
  252. ignoriert der CEPT-Dekoder in WXBtx die einlaufenden Daten in
  253. diesem Format.
  254.  
  255. Die Empfangsdateien werden im shared-write-mode geöffnet,
  256. können also (wenn nötig) vom Anwendungsprogramm auch gleichzeitig
  257. shared-read geöffnet und mitgelesen werden. Bei [EndTransp]
  258. oder [EndBulk] wird die jeweilige Datei geschlossen.
  259.  
  260. 12.)
  261. Die umfangreichsten Erweiterungen der WINAPI betreffen die
  262. Unterstützung der Btx-Seitenverwaltung im zu InfoTool(tm)
  263. kompatiblen Format von BTL-Dateien. Diese Dateien enthalten
  264. eine Liste von Btx-Seiten mit den zugehörigen Seitenkopf-Daten
  265. und den jeweiligen Zuständen (neu, geändert, zu löschen, etc.).
  266. Durch DDE-Kommandos kann eine solche Datei durch WXBtx
  267. neu angelegt oder eine bestehende Datei geöffnet werden.
  268. Es können bestehende Seiten geändert, neue Seiten angelegt
  269. und die einzelnen Elemente jeder Seite manipuliert werden.
  270. Dabei werden bereits durch WXBtx die Elemente entsprechend
  271. den Regeln im Seitenkopf verwaltet und an der korrekten
  272. Position in den Seitendaten eingetragen!
  273. Es ist also (vergleichsweise) simpel, z.B. Dekoderdefinitionen,
  274. Seitenaufbaucode, Auswahlmöglichkeiten, transparente Daten,
  275. usw. auszulesen, zu löschen und neu zu setzen.
  276.  
  277. Hier nun die Liste der zur BTL-Datei-Verwaltung gehörenden
  278. DDE-Kommandos und ihrer Argumente:
  279.  
  280. [LibOpen(file)]                  WM_DDE_EXECUTE
  281.   - Öffnet eine BTL-Datei oder eine VTL-Datei mit der dazu-
  282.     gehörenden VT1-Indexdatei und liest die Seitenliste in
  283.     den Server-Arbeitsspeicher der Client Verbindung.
  284.     Die erste Seite (Leitseite) der Datei wird vorselektiert
  285.     (selPAG), aber noch nicht geladen.
  286.     So ist es möglich eine Seite zwischen zwei BTL- und/oder
  287.     VTL-Dateien zu kopieren.
  288.  
  289. [LibCreate(file.ext,"impressum",seite)]          WM_DDE_EXECUTE
  290.   - Erzeugt eine neue BTL-Datei oder eine VTL-Datei mit ihrer
  291.     VT1-Indexdatei mit dem angegebenen Impressum <impressum>
  292.     und der angegebenen Leitseite <seite>.
  293.     Die Dateierweiterung ".ext" entscheidet, ob eine BTL-Datei
  294.     oder eine VTL/VT1-Datei erzeugt wird und muß angegeben sein!
  295.     Eine BTL-Datei wird auf maximal 1015 Seiten ausgelegt
  296.     (Format InfoCept03 mit 16K Header), eine VTL-Datei kann
  297.     bei WXBtx maximal 65534 Seiten enthalten (134 MByte!).
  298.     Das InfoCept04 Format (Header bis 64K mit max. 4094 Seiten)
  299.     wird nur bei "LibOpen" aus Kompatibilitätsgründen unterstützt.
  300.     Verwenden Sie für große Bibliotheken das VTL-Dateiformat.
  301.  
  302. [LibClose]                     WM_DDE_EXECUTE
  303.   - Falls die Seitenliste geändert wurde (delPAG, insPAG)
  304.     wird sie in die BTL- oder VT1-Datei zurückgeschrieben.
  305.     Anschließend wird die Datei geschlossen.
  306.  
  307. [LibSelPag(xx/yyyyyyyyyyyyyyyyz)]         WM_DDE_EXECUTE
  308.   - Wählt eine Seite aus der Bibliothek und lädt sie gleichzeitig
  309.     in den Server Seitenkopf-Arbeitsspeicher.
  310.     Diese Funktionalität ist auch getrennt mit LIB:selPAG(seite)
  311.     und LIB:getSEL über WM_DDE_REQUEST möglich.
  312.  
  313. [LibDelPag(xx/yyyyyyyyyyyyyyyyz)]         WM_DDE_EXECUTE
  314.   - Löscht eine Seite in der Bibliothek.
  315.     Diese Funktionalität ist auch mit LIB:delPAG(seite) über
  316.     WM_DDE_REQUEST möglich, wobei bei Erfolg die Seitennumer
  317.     zurückgemeldet wird.
  318.  
  319. [LibInsPag(xx/yyyyyyyyyyyyyyyyz)]         WM_DDE_EXECUTE
  320.   - Fügt eine Seite in der Bibliothek ein und schreibt den
  321.     Inhalt des aktuellen Seitenkopf-Arbeitsspeichers in die
  322.     Bibliothek (nach Eintrag der Seitennummer in SKOSEITE).
  323.     Diese Funktionalität ist auch mit LIB:insPAG(seite) über
  324.     WM_DDE_REQUEST möglich, wobei bei Erfolg die Seitennumer
  325.     zurückgemeldet wird.
  326.  
  327.  
  328. LIB:getFILE                     WM_DDE_REQUEST
  329.   - liefert den vollständigen Pfadnamen der geöffneten
  330.     Bibliothek (BTL-Datei oder VTL-Datei).
  331.  
  332.  
  333. LIB:getLST(liste)               WM_DDE_REQUEST
  334.   - liefert eine Liste, und zwar für:
  335.  
  336.     -  LIB:getLST(PAG)
  337.        Liste aller Seiten der Bibliothek, der Indizes und der Status-
  338.        flags aus der Seitenliste der BTL-Datei oder VTL/VT1-Datei
  339.  
  340.        Format: CF_TEXT iiiippppnnnnffffxx/yyyyyyyyyyyyyyyyz
  341.      i = BTL Datei-Index der Seite (4 stellig hex)
  342.      p = BTL Datei-Index der vorhergehenden Seite (4 stellig hex)
  343.      p = BTL Datei-Index der folgenden Seite (4 stellig hex)
  344.      f = Flags der Seite (4 stellig hex)
  345.      x = BKZ - ist in den Dateiheadern zunächst immer 00!
  346.      y = Seitennummer
  347.      z = Blattkennzeichen (a-z)
  348.  
  349.        Seitennummer und Blattkennzeichen sind linksbünding.
  350.        Die Strings sind durch ein 0-Byte terminiert. Zwei
  351.        aufeinanderfolgende 0-Bytes kennzeichnen das Ende der Liste.
  352.        Die BTL Index-Felder haben für Client-Anwendungen nur
  353.        Info-Charakter, da WXBtx sie intern verwaltet.
  354.  
  355.     -  LIB:getLST(AWM)
  356.        Liste der Auswahlmöglichkeiten der gewählten Seite
  357.  
  358.        Format 1: CF_TEXT w:xx/yyyyyyyyyyyyyyyyz
  359.      w = Wahl #,0 und 1 bis 9
  360.          oder #,0 und 10 bis 99
  361.      x = BKZ 2-stellig
  362.      y = Seitennummer max. 16-stellig
  363.      z = Blattkennzeichen (a-z)
  364.  
  365.        Format 2: CF_TEXT w:yyyyyyyyyyyyyyyya
  366.      w = Wahl #,0 und 1 bis 9
  367.          oder #,0 und 10 bis 99
  368.      y = Seitennummer
  369.      a = Nur a-Blätter ohne BKZ in der ganzen Liste
  370.  
  371.        Format 3: CF_TEXT w:xx/yyyyyyyyyyyyyyyyz
  372.      w = Wahl #, 2, 19
  373.      x = BKZ 2-stellig
  374.      y = Seitennummer max. 16-stellig
  375.      z = Blattkennzeichen (a-z)
  376.  
  377.        Eine Seite mit Wahlen liefert bei LIB:getSKO(AWMDA) das
  378.        Flag 1. Ob 1-stellige oder 2-stellige Wahlen zu erwarten sind,
  379.        kann über LIB:getSKO(WM2ST) in Erfahrung gebracht werden.
  380.        Ist dieses Flag 1 (TRUE), sind 2-stellige Auswahlen im
  381.        Seitenkopf definiert. Das erste Format gilt für Wahlen
  382.        mit BKZ und Blattkennzeichen (LIB:getSKO(QSAM2) = 1),
  383.        das zweite Format für einfache Wahlen ohne BKZ und Blatt-
  384.        kennzeichen, also für LIB:getSKO(QSAM2) = 0.
  385.        Bei den Seitentypen SKOMSEIN, SKODSEIT und SKOGWSEI, also
  386.        bei Mitteilungs-, Dialog- und Übergabeseiten wird das dritte
  387.        Format zurückgeliefert.
  388.  
  389.     -  LIB:getLST(BBS)
  390.        Liste der Billboardseiten-Einträge einer Seite
  391.  
  392.        Format: CF_TEXT ttttt:xx/yyyyyyyyyyyyyyyyz
  393.      t = Wartezeit in Sekunden
  394.      x = BKZ
  395.      y = Seitennummer
  396.      z = Blattkennzeichen (a-z)
  397.  
  398.        Eine Billboardseite liefert bei LIB:getSKO(BBSEI) das
  399.        Flag 1. Die Anzahl der zu erwartenden Billboardseiten-
  400.        Einträge kann über LIB:getSKO(BBANZ) in Erfahrung ge-
  401.        bracht werden. Seiten vom Typ Billboardseite enthalten
  402.        ein transparentes Datenfeld mit einer speziellen Struktur,
  403.        die über diese Funktion in eine Liste von Seiten mit
  404.        zugehörigen Timeouts konvertiert wird.
  405.  
  406.     -  LIB:getLST(FBE)
  407.        Liste der Feldbeschreibungselemente einer Seite
  408.  
  409.        Format: CF_TEXT nnnxxxyyyllllffbbtttiiiii[....]
  410.      n  0  3 = Nummer des Feldes dezimal
  411.      x  3  3 = Spalte des Feldanfangs dezimal
  412.      y  6  3 = Zeile des Feldanfangs dezimal
  413.      l  9  4 = Länge des Feldes dezimal
  414.      f 13  2 = Flags des Feldes hex
  415.      b 15  2 = Binärkennzeichen des Feldes
  416.      t 17  3 = Typ des Feldes dezimal (numerischer Feldtyp)
  417.      i 20  ? = Inhalt (Vorbelegung) des Feldes - llll Zeichen
  418.          bei binären Daten 2 * llll Zeichen "Hexdump"
  419.  
  420.        Ob eine Seite Felder enthält, kann über LIB:getSKO(FBEDA)
  421.        in Erfahrung gebracht werden. Die Nummer nnn ist immer
  422.        fortlaufend von 0 bis LIB:getSKO(FBANZ) - 1, wird aber zur
  423.        Zuordnung eventuell vorhandener Prompting-Texte benötigt.
  424.        Das erste Eingabefeldes kann über LIB:getSKO(FBFD1) in
  425.        Erfahrung gebracht werden. Die Bedeutung der Flags ff und bb
  426.        ist der Dokumentation zum Bulk-Up zu entnehmen.
  427.        Bei einem binären Feld wird nicht der Feldinhalt direkt, sondern
  428.        der Inhalt eines vorhandenen TDA Bereiches als "Hexdump"
  429.        geliefert, ist also bei einer korrekten Seite 2 * llll Zeichen
  430.        lang. Stimmt die Länge von iii... nicht mit der Angabe in
  431.        llll überein, dann ist die Felddefinition fehlerhaft oder der
  432.        TDA-Bereich fehlt in der Seite.
  433.  
  434. LIB:putLST(liste)               WM_DDE_POKE
  435.   - analysiert eine Liste im Datenbereich DDEPOKE->Value,
  436.     erzeugt in der aktuellen Seite die entsprechende Daten
  437.     und setzt die evtl. dazugehörenden Flags.
  438.     Für die Werte von <liste> gilt:
  439.  
  440.     -  LIB:putLST(PAG)
  441.        Setzt die BTL-Header Flags für eine Liste von Seiten.
  442.        DDEPOKE->Value enthält die Liste der zu ändernden Seiten
  443.  
  444.        Format: CF_TEXT ffffxx/yyyyyyyyyyyyyyyyz
  445.      f = Flags der Seite (4 stellig hex)
  446.      x = BKZ
  447.      y = Seitennummer
  448.      z = Blattkennzeichen (a-z)
  449.  
  450.        Seitennummer und Blattkennzeichen sind linksbünding.
  451.        Die Strings sind durch ein 0-Byte terminiert. Zwei
  452.        aufeinanderfolgende 0-Bytes kennzeichnen das Ende der Liste.
  453.  
  454.     -  LIB:putLST(AWM)
  455.        Setzt die Auswahlmöglichkeiten der aktuellen Seite.
  456.        Der Bereich DDEPOKE->Value enthält dabei folgendes
  457.  
  458.        Format 1: CF_TEXT w:xx/yyyyyyyyyyyyyyyyz
  459.      w = Wahl #,0 und 1 bis 9
  460.          oder #,0 und 10 bis 99
  461.      x = BKZ 2-stellig
  462.      y = Seitennummer max. 16-stellig
  463.      z = Blattkennzeichen (a-z)
  464.  
  465.        Format 2: CF_TEXT w:yyyyyyyyyyyyyyyya
  466.      w = Wahl #,0 und 1 bis 9
  467.          oder #,0 und 10 bis 99
  468.      y = Seitennummer max. 16-stellig
  469.      a = Nur a-Blätter ohne BKZ in der ganzen Liste
  470.  
  471.        Format 3: CF_TEXT: w:xx/yyyyyyyyyyyyyyyyz
  472.      w = Wahl #, 2, 19
  473.      x = BKZ 2-stellig
  474.      y = Seitennummer max. 16-stellig
  475.      z = Blattkennzeichen (a-z)
  476.  
  477.        Ganz entsprechend LIB:getLST(AWM) wird aus der Liste der
  478.        Wahlen ein AWM Datenbereich gebildet und in den Seitenkopf
  479.        und die Seite eingetragen. Die zugehörigen Flags SKOAWMDA,
  480.        SKOWM2ST und SKOQSAM2 werden abhängig vom Inhalt der
  481.        Liste bei Infoseiten wie folgt gesetzt:
  482.      AWMDA - bei nicht leerer Liste immer gesetzt
  483.      WM2ST - bei Wahlen mit w > 9
  484.      QSAM2 - bei Wahlen mit BKZ und/oder Blatt ungleich a
  485.        Bei Mitteilungs-, Dialog- und Übergabeseiten gilt Format 3.
  486.  
  487.     -  BBS
  488.        DDEPOKE->Value enthält eine Liste der Billboardseiten-
  489.        Einträge und zugehörigen Timeouts für diese Seite im
  490.        Format: CF_TEXT ttttt:xx/yyyyyyyyyyyyyyyyz
  491.      t = Wartezeit in Sekunden (dezimal)
  492.      x = BKZ 2-stellig
  493.      y = Seitennummer max. 16-stellig
  494.      z = Blattkennzeichen (a-z)
  495.        Die Seite wird als Billboardseite definiert (SKOBBSEI)
  496.        und es wird ein transparenter Datenbereich mit den
  497.        Billboardseiten-Einträgen angelegt. Die Anzahl der
  498.        Einträge wird in SKOBBANZ vermerkt.
  499.  
  500.  
  501. LIB:getSEL                   WM_DDE_REQUEST
  502.   - liest die aktuell gewählte Seite von Platte in den
  503.     Server Seitenkopf-Arbeitsspeicher der Client Verbindung.
  504.   - liefert die Seitennummer im
  505.     Format: CF_TEXT xx/yyyyyyyyyyyyyyyyz
  506.       x = BKZ
  507.       y = Seitennummer
  508.       z = Blattkennzeiche (a-z)
  509.       BKZ, Seitennummer und Blattkennzeichen sind linksbünding.
  510.  
  511. LIB:putSEL                   WM_DDE_REQUEST
  512.   - schreibt die aktuell gewählte Seite aus dem Server
  513.     Seitenkopf-Arbeitsspeicher der Client Verbindung auf Platte.
  514.   - liefert die Seitennummer wie bei LIB:getSEL
  515.  
  516. LIB:decSEL                   WM_DDE_REQUEST
  517.   - dekodiert die aktuell gewählte Seite aus dem Server
  518.     Seitenkopf-Arbeitsspeicher der Client Verbindung.
  519.     Dabei wird zunächst eine eventuell angegebene Mutterseite
  520.     (SKOMTSEI) der Seite mit ihren zugehörigen Dekoderdefinitionen
  521.     ausgegeben, falls SKOCSEIT der aktuellen Seite TRUE ist.
  522.     Danach werden die in SKOSDRQ1 bis SKOSDRQ3 angegebenen
  523.     Dekoderdefinitionen geladen und dekodiert.
  524.     Anschließend werden die Dekoderdefinitionen der Seite selbst
  525.     und zuletzt deren Aufbaucode dekodiert bzw. angezeigt.
  526.   - liefert die Seitennummer wie bei LIB:getSEL
  527.  
  528. LIB:clrSEL                   WM_DDE_REQUEST
  529.   - löscht den Inhalt aller Elemente der akuellen Seite im
  530.     Server Seitenkopf-Arbeitsspeicher der Client Verbindung.
  531.     Die Seite wird als Infoseite mit 40x24 Zeichen vorbelegt
  532.     und enthält zunächst nur den eigentlichen Seitenkopf;
  533.     es muß also zumindest ein LIB:insHQ1 und LIB:insHQ4 folgen,
  534.     damit die Seite die minimalen Daten für Bulk-Up enthält.
  535.   - liefert den kompletten Seiteninhalt wie bei LIB:getRAW,
  536.     der aber in diesem Fall keine Seitenelemente, sondern
  537.     nur den SKO... - Anteil der Seite enthält (206 Bytes).
  538.  
  539. LIB:selPAG(xx/yyyyyyyyyyyyyyyyz)       WM_DDE_REQUEST
  540.   - selektiert eine Btx-Seite aus der Bibliothek (Seitenliste)
  541.     fehlt xx/, wird BKZ 00 angenommen (bundesweit);
  542.     y kann maximal 16-stellig sein;
  543.     fehlt z, wird Blatt a angenommen.
  544.   - liefert die vollständige Seitennummer wie bei LIB:getSEL
  545.  
  546. LIB:delPAG(xx/yyyyyyyyyyyyyyyyz)       WM_DDE_REQUEST
  547.   - löscht eine Btx-Seite aus der Bibliothek (Seitenliste)
  548.     fehlt xx/, wird BKZ 00 angenommen (bundesweit);
  549.     y kann maximal 16-stellig sein;
  550.     fehlt z, wird Blatt a angenommen.
  551.   - liefert die vollständige Seitennummer wie bei LIB:getSEL
  552.  
  553. LIB:insPAG(xx/yyyyyyyyyyyyyyyyz)       WM_DDE_REQUEST
  554.   - erzeugt eine Btx-Seite in der Bibliothek (Seitenliste)
  555.     fehlt xx/, wird BKZ 00 angenommen (bundesweit);
  556.     y kann maximal 16-stellig sein;
  557.     fehlt z, wird Blatt a angenommen.
  558.   - liefert die vollständige Seitennummer wie bei LIB:getSEL
  559.  
  560. LIB:getSKO(element)               WM_DDE_REQUEST
  561.   - liefert ein Element des Seitenkopfes gemäß Anhang A.
  562.     DDEDATA->Value liefert einen String mit dem Wert für
  563.     das Element im in Anhang A angegebenen Format.
  564.  
  565. LIB:putSKO(element)               WM_DDE_POKE
  566.   - setzt ein Element des Seitenkopfes gemäß Anhang A.
  567.     DDEPOKE->Value enthält einen String mit dem Wert für
  568.     das Element im in Anhang A angegebenen Format.
  569.  
  570. LIB:getRAW                   WM_DDE_REQUEST
  571.   - liefert den kompletten Seiteninhalt aus dem Server
  572.     Seitenkopf-Arbeitsspeicher an die Client-Applikation.
  573.     DDEDATA->pValue enthält eine Struktur
  574.     struct tagRAW {
  575.       WORD size;
  576.       BYTE data[];
  577.     } RAW;
  578.     size enthält die Länge des folgenden Datenbereiches.
  579.     Das Format von data ist in der Spezifikation des FTZ zum
  580.     Bulk-Up beschrieben und wird hier als bekannt vorausgesetzt.
  581.  
  582. LIB:putRAW                   WM_DDE_POKE
  583.   - schreibt einen kompletten Seiteninhalt in den Server
  584.     Arbeitsspeicher. Die Puffergröße beträgt maximal 2048 Byte.
  585.     Der Seitenkopf muß unbedingt gültige Werte für die verschiedenen
  586.     Pointer in den Datenbereich der Seite enthalten!
  587.     RAW->size muß nicht korrekt sein, da die Länge der Seite im
  588.     Feld SKOLANGE des Seitenkopfes korrekt angegeben ist.
  589.  
  590.  
  591. LIB:getAWM                   WM_DDE_REQUEST
  592.   - liefert die Auswahlmöglichkeiten der aktuellen Seite
  593.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  594.  
  595. LIB:delAWM                   WM_DDE_REQUEST
  596.   - löscht Auswahlmöglichkeiten der aktuelle Seite
  597.   - ändert SKOAMPTR, SKOAMLEN, SKOAWMDA, SKOWM2ST, SKOQSAM2 und SKOLANGE
  598.   - liefert den vorherigen Inhalt von AWM wie bei LIB:getAWM
  599.  
  600. LIB:insAWM                   WM_DDE_POKE
  601.   - löscht einen evtl. vorhandenen AWM Bereich
  602.   - schreibt die Auswahlmöglichkeiten in die aktuelle Seite
  603.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  604.     den Auswahlmöglichkeiten in RAW->data
  605.   - ändert SKOAMPTR, SKOAMLEN, SKOAWMDA und SKOLANGE
  606.  
  607.  
  608. LIB:getHQ1                   WM_DDE_REQUEST
  609.   - liefert den Text des Zeile-1 Datenbereichs der aktuellen Seite
  610.     Dieser Text ist 40 Zeichen lang und wird beim Bulkup durch das
  611.     Impressum des Anbieters der Seite und die Vergütung ersetzt.
  612.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  613.  
  614. LIB:delHQ1                   WM_DDE_REQUEST
  615.   - löscht den Zeile-1 Datenbereich in der aktuellen Seite
  616.   - ändert SKOHQPT1, SKOHQLE1 und SKOLANGE
  617.   - liefert den vorherigen Inhalt von HQ1 wie bei LIB:getHQ1
  618.  
  619. LIB:insHQ1                   WM_DDE_POKE
  620.   - löscht einen evtl. vorhandenen HQ1 Bereich
  621.   - schreibt den Text des Zeile-1 Datenbereichs der aktuellen Seite.
  622.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit dem
  623.     Impressum, die Vergütung (x,xx DM) wird aus dem Seitenkopf ergänzt.
  624.   - ändert SKOHQPT1, SKOHQLE1 und SKOLANGE
  625.  
  626.  
  627. LIB:getHQ4                   WM_DDE_REQUEST
  628.   - liefert den Text des Zeile-24 Datenbereichs der aktuellen Seite.
  629.     Dies ist die 19 stellige, rechtsbündige Seiten- und Blattnummer.
  630.     Diese wird beim Bulkup durch die Seiten- mit Blattnummer aus dem
  631.     Seitenkopf der Seite ersetzt.
  632.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  633.  
  634. LIB:delHQ4                   WM_DDE_REQUEST
  635.   - löscht den Zeile-24 Datenbereich in der aktuellen Seite
  636.   - ändert SKOHQPT4, SKOHQLE4 und SKOLANGE
  637.   - liefert den vorherigen Inhalt von HQ4 wie bei LIB:getHQ4
  638.  
  639. LIB:insHQ4                   WM_DDE_POKE
  640.   - löscht einen evtl. vorhandenen HQ4 Bereich
  641.   - schreibt den Text des Zeile-24 Datenbereichs der aktuellen Seite;
  642.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  643.     max. 17 Zeichen mit Seiten- und Blattnummer.
  644.   - ändert SKOHQPT4, SKOHQLE4 und SKOLANGE
  645.  
  646.  
  647. LIB:getDRC                   WM_DDE_REQUEST
  648.   - liefert die Dekoderdefinitionen der aktuellen Seite
  649.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  650.  
  651. LIB:delDRC                   WM_DDE_REQUEST
  652.   - löscht Dekoderdefinitionen der aktuelle Seite
  653.   - ändert SKODRPTR, SKODRLEN, SKODRCSV und SKOLANGE
  654.   - liefert den vorherigen Inhalt von DRC wie bei LIB:getDRC
  655.  
  656. LIB:insDRC                   WM_DDE_POKE
  657.   - löscht einen evtl. vorhandenen DRC Bereich
  658.   - schreibt die Dekoderdefinitionen in die aktuelle Seite
  659.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  660.     den Dekoderdefinition in RAW->data
  661.   - ändert SKODRPTR, SKODRLEN, SKODRCSV und SKOLANGE
  662.  
  663.  
  664. LIB:getACO                   WM_DDE_REQUEST
  665.   - liefert den Aufbaucode der aktuellen Seite
  666.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  667.  
  668. LIB:delACO                   WM_DDE_REQUEST
  669.   - löscht den Aufbaucode der aktuelle Seite
  670.   - ändert SKOACPTR, SKOACLEN, SKOACODV, SKODACDV und SKOLANGE
  671.   - liefert den vorherigen Inhalt von ACO wie bei LIB:getACO
  672.  
  673. LIB:insACO                   WM_DDE_POKE
  674.   - löscht einen evtl. vorhandenen ACO Bereich
  675.   - schreibt den Aufbaucode in die aktuelle Seite
  676.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  677.     dem Aufbaucode in RAW->data
  678.   - ändert SKOACPTR, SKOACLEN, SKOACODV und SKOLANGE
  679.  
  680.  
  681. LIB:getASP                   WM_DDE_REQUEST
  682.   - liefert die Abrufsperre der aktuellen Seite
  683.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  684.  
  685. LIB:delASP                   WM_DDE_REQUEST
  686.   - löscht die Abrufsperre der aktuelle Seite
  687.   - ändert SKOASPTR, SKOASLEN, SKOASPEV, SKOASTLN und SKOLANGE
  688.   - liefert den vorherigen Inhalt von ASP wie bei LIB:getASP
  689.  
  690. LIB:insASP                   WM_DDE_POKE
  691.   - löscht einen evtl. vorhandenen ASP Bereich
  692.   - schreibt die Abrufsperre in die aktuelle Seite
  693.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  694.     der Abrufsperre in RAW->data
  695.   - ändert SKOASPTR, SKOASLEN, SKOASPEV und SKOLANGE
  696.  
  697.  
  698. LIB:getFBE                   WM_DDE_REQUEST
  699.   - liefert die Feldbeschreibungselemente der aktuellen Seite
  700.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  701.  
  702. LIB:delFBE                   WM_DDE_REQUEST
  703.   - löscht die Feldbeschreibungselemente der aktuelle Seite
  704.   - ändert SKOFBPTR, SKOFBLEN, SKOFBEDA und SKOLANGE
  705.   - liefert den vorherigen Inhalt von FBE wie bei LIB:getFBE
  706.  
  707. LIB:insFBE                   WM_DDE_POKE
  708.   - löscht einen evtl. vorhandenen FBE Bereich
  709.   - schreibt die Feldbeschreibungselemente in die aktuelle Seite
  710.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  711.     den Feldbeschreibungselementen in RAW->data
  712.   - ändert SKOFBPTR, SKOFBLEN, SKOFBEDA und SKOLANGE
  713.  
  714.  
  715. LIB:getPMT                   WM_DDE_REQUEST
  716.   - liefert die Prompting-Texte der aktuellen Seite
  717.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  718.  
  719. LIB:delPMT                   WM_DDE_REQUEST
  720.   - löscht die Prompting-Texte der aktuelle Seite
  721.   - ändert SKOPMPTR, SKOPMLEN, SKOPMTDA und SKOLANGE
  722.   - liefert den vorherigen Inhalt von PMT wie bei LIB:getPMT
  723.  
  724. LIB:insPMT                   WM_DDE_POKE
  725.   - löscht einen evtl. vorhandenen PMT Bereich
  726.   - schreibt die Prompting-Texte in die aktuelle Seite
  727.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  728.     den Prompting-Texten in RAW->data
  729.   - ändert SKOPMPTR, SKOPMLEN, SKOPMTDA und SKOLANGE
  730.  
  731.  
  732. LIB:getSVE                   WM_DDE_REQUEST
  733.   - liefert die Schlagwortverzeichnis-Einträge der aktuellen Seite
  734.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  735.  
  736. LIB:delSVE                   WM_DDE_REQUEST
  737.   - löscht die Schlagwortverzeichnis-Einträge der aktuelle Seite
  738.   - ändert SKOBVPTR, SKOBVLEN, SKOSVANG, SKOSVEIN und SKOLANGE
  739.   - liefert den vorherigen Inhalt von SVE wie bei LIB:getSVE
  740.  
  741. LIB:insSVE                   WM_DDE_POKE
  742.   - löscht einen evtl. vorhandenen SVE Bereich
  743.   - schreibt die Schlagwortverzeichnis-Einträge in die aktuelle Seite
  744.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  745.     den Schlagwortverzeichniseinträgen in RAW->data
  746.   - ändert SKOBVPTR, SKOBVLEN, SKOSVANG, SKOSVEIN und SKOLANGE
  747.  
  748.  
  749. LIB:getTDA                   WM_DDE_REQUEST
  750.   - liefert den transparenten Datenbereich der aktuellen Seite
  751.     DDEDATA->pValue enthält eine Struktur wie bei LIB:getRAW.
  752.     Ob es sich bei transparenten Daten um Ein-/Ausgabefelder
  753.     oder z.B. eine Billboardseiten-Liste handelt, ist anhand
  754.     der Flags der Seite feststellbar.
  755.  
  756. LIB:delTDA                   WM_DDE_REQUEST
  757.   - löscht den transparenten Datenbereich der aktuelle Seite
  758.   - ändert SKOTDPTR, SKOTDLEN, SKOTRANS und SKOLANGE
  759.   - liefert den vorherigen Inhalt von TDA wie bei LIB:getTDA
  760.   - eventuell zugehörige Feldbeschreibungen werden nicht gelöscht!
  761.  
  762. LIB:insTDA                   WM_DDE_POKE
  763.   - löscht einen evtl. vorhandenen TDA Bereich
  764.   - schreibt den transparenten Datenbereich in die aktuelle Seite
  765.     DDEPOKE->pValue enthält eine Struktur wie bei LIB:GetRAW mit
  766.     den tranparenten Daten in RAW->data
  767.   - ändert SKOTDPTR, SKOTDLEN, SKOTRANS und SKOLANGE
  768.   - eventuell nötige Feldbeschreibungen werden nicht gesetzt!
  769.     Sie können über LIB:insFBE oder LIB:putLST(FBE) generiert
  770.     werden.
  771.  
  772.  
  773. Anhang A
  774.  
  775. Elemente des Seitenkopfes und ihre Formatierung
  776.  
  777. Name       - Elementname bei LIB:getSKO(Name) oder LIB:putSKO(Name)
  778. Format       - Formatierung des des Strings
  779. FL       - maximale Stellenzahl des Strings, nullterminiert
  780. TYP       - page= Seite mit BKZ, Seitennummer und Blatt, linksbündig
  781.          drq=  DRQ-Seite, linksbündig
  782.          dat=  Datum und Uhrzeit
  783.          tln=  Teilnehmernummer-Mitbenutzer
  784.          dez=  dezimal
  785.          bin=  Kopie des Feldes
  786.          bool= boolean (0 FALSE oder 1 TRUE)
  787. Element    - Elementstruktur im Seitenkopf
  788. Kommentar  - Kurzbeschreibung laut FTZ Bulk-Update Papier
  789.  
  790. Name  Format           FL Typ  Element Kommentar
  791. ------------------------------------------------------------------------
  792. SEITE xx/yyyyyyyyyyyyyyyyz 20 page 10 BYTE  Seitennummer der Seite
  793. CONCO nnn           3  dez  1  BYTE  später
  794. ALIGO nnn           3  dez  1  BYTE  später
  795. HEADR nnnnnnnnnnn       11 dez  1  DWORD intern
  796. LANGE nnnnn           5  dez  1  WORD  Länge der Seite inkl. Kopf
  797. ANZBZ nnn           3  dez  1  BYTE  Anzahl Zeilen (20/24)
  798. ANZSP nnn           3  dez  1  BYTE  Anzahl Spalten (40/80)
  799. BKZV1 nnn           3  dez  1  BYTE  später
  800. BALLL nnn           3  dez  1  BYTE  später
  801. PREPR nnnnn           5  dez  1  WORD  Preprozess
  802. POSTP nnnnn           5  dez  1  WORD  Postprozess
  803.  
  804. FLAG1 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  805. IZSPE b            1  bool    BIT7  Zugriff gesperrt
  806. BZSPE b            1  bool    BIT6  intern
  807. PERSO b            1  bool    BIT5  Persönliche Daten
  808. QUIBS b            1  bool    BIT4  intern
  809. SMACD b            1  bool    BIT3  Seite mit Autorisierungscode
  810. BERSE b            1  bool    BIT2  intern
  811. ENQIN b            1  bool    BIT1  intern
  812. ABRST b            1  bool    BIT0  Abrufstatistik
  813.  
  814. FLAG2 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  815. WM2ST b            1  bool    BIT7  2-stellige Wahlmöglichkeit
  816. SDRVR b            1  bool    BIT6  intern
  817. VBLAT b            1  bool    BIT5  Verkettetes Blatt folgt
  818. CSEIT b            1  bool    BIT4  Kombinierte Seite
  819. ESEIT b            1  bool    BIT3  Eintrittsseite
  820. SUNTB b            1  bool    BIT2  Seitenaufbau nicht unterbrechbar
  821. LBLAT b            1  bool    BIT1  Letztes Blatt der Seite
  822. DRCSV b            1  bool    BIT0  Decoderdefinition vorhanden
  823.  
  824. FLAG3 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  825. ACODV b            1  bool    BIT7  Aufbaucode vorhanden
  826. DACDV b            1  bool    BIT6  Decoderdefinition im Aufbaucode
  827. FBEDA b            1  bool    BIT5  Feldbeschreibungen vorhanden
  828. AWMDA b            1  bool    BIT4  Auswahlmöglichkeiten vorhanden
  829. PMTDA b            1  bool    BIT3  Promptingtexte vorhanden
  830. TRANS b            1  bool    BIT2  transparente Daten vorhanden
  831. SVANG b            1  bool    BIT1  Schlagwortbereich vorhanden
  832. SVEIN b            1  bool    BIT0  Schlagwortverzeichnis einarbeiten
  833.  
  834. FLAG4 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  835. HLOES b            1  bool    BIT7  intern
  836. ZMDSE b            1  bool    BIT6  intern
  837. NMWST b            1  bool    BIT5  intern
  838. HMWST b            1  bool    BIT4  intern
  839. VMWST b            1  bool    BIT3  100% vom MwSt-Satz
  840. RQCHE b            1  bool    BIT2  intern
  841. ZEILN b            1  bool    BIT1  intern
  842. WERBG b            1  bool    BIT0  Seite enthält Werbung
  843.  
  844. FLAG5 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  845. COTIN b            1  bool    BIT7  intern
  846. BIBIZ b            1  bool    BIT6  intern
  847. WRAPA b            1  bool    BIT5  später (Wraparound !?)
  848. FSBGH b            1  bool    BIT4  Hintergrund halten
  849. MZGES b            1  bool    BIT3  intern
  850. MABUL b            1  bool    BIT2  intern
  851. MASBV b            1  bool    BIT1  intern
  852. QSAM2 b            1  bool    BIT0  Auswahl enthält BKZ und Blatt
  853.  
  854. FLAG6 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  855. KSTV  b            1  bool    BIT7  intern
  856. MAONL b            1  bool    BIT6  intern
  857. KSTA  b            1  bool    BIT5  intern
  858. ONOPT b            1  bool    BIT4  intern
  859. ASPEV b            1  bool    BIT3  Abrufsperre vorhanden
  860. ASTLN b            1  bool    BIT2  Teilnehmerliste für Abrufsperre
  861. U219  b            1  bool    BIT1  intern
  862. OEFT  b            1  bool    BIT0  intern
  863.  
  864. FLAG7 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  865. FLG77 b            1  bool    BIT7  später
  866. FLG76 b            1  bool    BIT6  später
  867. FLG75 b            1  bool    BIT5  später
  868. FLG74 b            1  bool    BIT4  später
  869. FLG73 b            1  bool    BIT3  später
  870. FLG72 b            1  bool    BIT2  später
  871. FLG71 b            1  bool    BIT1  später
  872. ASCII b            1  bool    BIT0  VT100 / ASCII - Seite
  873.  
  874. VGKLE nnn           3  dez  1  BYTE  Nutzungszeitabh. Vergütungsklasse
  875.  
  876. FLAG8 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  877. ISEIT b            1  bool    BIT7  Informationsseite
  878. DSEIT b            1  bool    BIT6  Dialogseite
  879. MSEIN b            1  bool    BIT5  Mitteilungsseite, Eingabe
  880. GWSEI b            1  bool    BIT4  Gatewayseite (Übergabeseite)
  881. SSEIT b            1  bool    BIT3  intern (Systemseite !?)
  882. FSSER b            1  bool    BIT2  Format-Service Seite
  883. BBSEI b            1  bool    BIT1  Billboard-Seite
  884. DUMMY b            1  bool    BIT0  intern
  885.  
  886. FLAG9 nnn           3  dez  1  BYTE  folgende 8 Flag-Bits
  887. FERTA b            1  bool    BIT7  intern
  888. FFSEI b            1  bool    BIT6  intern
  889. ZVSEI b            1  bool    BIT5  intern
  890. FFZVS b            1  bool    BIT4  intern
  891. ZVSE  b            1  bool    BIT3  intern
  892. ZVSL  b            1  bool    BIT2  intern
  893. UZVSE b            1  bool    BIT1  intern
  894. MEB   b            1  bool    BIT0  intern
  895.  
  896. FLAGA nnn           3  dez  1  BYTE  folgende 8 Flag-Bits (TFI)
  897. TFGE1 b            1  bool    BIT7  Geometrie Profile 1
  898. TFGE2 b            1  bool    BIT6  Geometrie Profile 2
  899. TFPHO b            1  bool    BIT5  Photografic
  900. TFTSW b            1  bool    BIT4  Telesoftware
  901. TFTPM b            1  bool    BIT3  Transparent Mode
  902. TFCHM b            1  bool    BIT2  80 Zeichen Mode
  903. TFCHI b            1  bool    BIT1  Chipkarte
  904. TFRES b            1  bool    BIT0  später
  905.  
  906. FLAGB nnn           3  dez  1  BYTE  folgende 8 Flag-Bits (TFI2)
  907. TFI27 b            1  bool    BIT7  später
  908. TFI26 b            1  bool    BIT6  später
  909. TFI25 b            1  bool    BIT5  später
  910. TFI24 b            1  bool    BIT4  später
  911. TFI23 b            1  bool    BIT3  später
  912. TFI22 b            1  bool    BIT2  später
  913. TFI21 b            1  bool    BIT1  später
  914. TFI20 b            1  bool    BIT0  später
  915.  
  916. ABSNR tttttttttttt-mmmm    17 dez  8  BYTE  Absender Teilnehmer-Mitbenutzer
  917. ITLNR nnnnnnnnnnnn       12 dez  6  BCDp  Absender Teilnehmernummer
  918. IMBSU nnnn           4  dez  2  BCD   Absender Mitbenutzernummer
  919. EMPNR tttttttttttt-mmmm    17 dez  8  BYTE  Empfänger Teilnehmer-Mitbenutzer
  920. ETLNR nnnnnnnnnnnn       12 dez  6  BCDp  Empfänger Teilnehmernummer
  921. EMBSU nnnn           4  dez  2  BCD   Empfänger Mitbenutzernummer
  922.  
  923. ZEINA yy.mm.dd hh:mm:ss    17 dat  6  BCD   Datum/Uhrzeit Seitenerstellung
  924. ZEIFU yy.mm.dd hh:mm:ss    17 dat  6  BCD   Datum/Uhrzeit intern (Update !?)
  925.  
  926. ACIGB nnnn           4  dez  2  BCD   Autorisierungscode GBG
  927. EBETR nnnnn           5  dez  1  WORD  Vergütung der Seite in Pfennigen
  928. SCROL nnn           3  dez  1  BYTE  später
  929. ERNUM nnnnnn           6  dez  3  BCD   Externer Rechner Nummer
  930. GWNUM nnnnnn           6  dez  6  BYTE  Gateway Nummer
  931.  
  932. SZEST nnn           3  dez  1  BYTE  Stellenzahl der Leitseite
  933. LKEY0 nnn           3  dez  1  BYTE  Signifikante Stellenzahl der Seite
  934.  
  935. MTSEI xx/yyyyyyyyyyyyyyyyz 20 fmt  10 BYTE  Mutterseite (Kombinierte Seiten)
  936. MTCON nnn           3  dez  1  BYTE  später
  937. ZEILA nnn           3  dez  1  BYTE  Zeile Fensteranfang (2 - 23)
  938. ZEILE nnn           3  dez  1  BYTE  Zeile Fensterende (2 - 23)
  939.  
  940. SDRQ1 yyyyyyyyyyyyyyyyz    17 fmt  10 BYTE  Decoderdefinitionen Seite 1
  941. SDRQ2 yyyyyyyyyyyyyyyyz    17 fmt  10 BYTE  Decoderdefinitionen Seite 2
  942. SDRQ3 yyyyyyyyyyyyyyyyz    17 fmt  10 BYTE  Decoderdefinitionen Seite 3
  943.  
  944. LVERZ nnn           3  dez  1  BYTE  intern
  945.  
  946. AMPTR nnnnn           5  dez  1  WORD  Pointer Auswahlmöglichkeiten
  947. AMLEN nnnnn           5  dez  1  WORD  Länge Auswahlmöglichkeiten
  948.  
  949. SYSTI nnnnnnnnnnn       11 dez  1  DWORD intern
  950.  
  951. TYPZ1 nnn           3  dez  1  BYTE  intern
  952. FAZE1 nnn           3  dez  1  BYTE  V/H-Farbe erste Zeile
  953. FGZE1 nn           2  dez  4  BIT   Vordergrundfarbe erste Zeile
  954. BGZE1 nn           2  dez  4  BIT   Hintergrundfarbe erste Zeile
  955. HQPT1 nnnnn           5  dez  1  WORD  Pointer erste Zeile (Impressum)
  956. HQLE1 nnnnn           5  dez  1  WORD  Länge erste Zeile (Impressum)
  957.  
  958. TYPZ4 nnn           3  dez  1  BYTE  intern
  959. FAZE4 nnn           3  dez  1  BYTE  V/H-Farbe letzte Zeile
  960. FGZE4 nn           2  dez  4  BIT   Vordergrundfarbe letzte Zeile
  961. BGZE4 nn           2  dez  4  BIT   Hintergrundfarbe letzte Zeile
  962. HQPT4 nnnnn           5  dez  1  WORD  Pointer letzte Zeile (Seitennummer)
  963. HQLE4 nnnnn           5  dez  1  WORD  Länge letzte Zeile (Seitennummer)
  964.  
  965. DRPTR nnnnn           5  dez  1  WORD  Decoder Definition Offset
  966. DRLEN nnnnn           5  dez  1  WORD  Decoder Definition Länge
  967.  
  968. SYSTA nnnnnnnnnnn       11 dez  1  DWORD intern
  969.  
  970. ACPTR nnnnn           5  dez  1  WORD  Aufbaucode Offset
  971. ACLEN nnnnn           5  dez  1  WORD  Aufbaucode Länge
  972.  
  973. ASPTR nnnnn           5  dez  1  WORD  Abrufsperre Offset
  974. ASLEN nnnnn           5  dez  1  WORD  Abrufsperre Länge
  975.  
  976. FBPTR nnnnn           5  dez  1  WORD  TV/Felder Offset
  977. FBLEN nnnnn           5  dez  1  WORD  TV/Felder Länge
  978. FBOF1 nnnnn           5  dez  1  WORD  Feldbeschreibung 1 Offset
  979. FBANZ nnn           3  dez  1  BYTE  Anzahl der Feldbeschreibungen
  980. FBFD1 nnn           3  dez  1  BYTE  Erstes Feld für die Eingabe
  981.  
  982. CHIKA nnnnn           5  dez  1  WORD  intern (Chipkarte !?)
  983. CHFLG nnn           3  dez  1  BYTE  intern (Chipkarte Flag !?)
  984. CHIND nnn           3  dez  1  BYTE  intern (Chipkarte Index !?)
  985.  
  986. PMPTR nnnnn           5  dez  1  WORD  Promptingtexte Offset
  987. PMLEN nnnnn           5  dez  1  WORD  Promptingtexte Länge
  988.  
  989. NAPTR nnnnn           5  dez  1  WORD  intern
  990. NALEN nnnnn           5  dez  1  WORD  intern
  991.  
  992. BVPTR nnnnn           5  dez  1  WORD  Schlagwortanbindung Offset
  993. BVLEN nnnnn           5  dez  1  WORD  Schlagwortanbindung Länge
  994.  
  995. KSPTR nnnnn           5  dez  1  WORD  intern
  996. KSLEN nnnnn           5  dez  1  WORD  intern
  997.  
  998. TDPTR nnnnn           5  dez  1  WORD  Transparente Daten Offset
  999. TDLEN nnnnn           5  dez  1  WORD  Transparente Daten Länge
  1000.  
  1001. BBFCT nnn           3  dez  1  BYTE  Anzahl Billboard Wiederholungen
  1002.  
  1003. BTDBP nnnnn           5  dez  1  BYTE  intern
  1004.  
  1005. HQSHE nnnnnnnn           8  bin  8  BYTE  intern
  1006.  
  1007.  
  1008. Sollten Ihnen Fehler (vor allem in Anhang A) auffallen,
  1009. senden Sie bitte eine Nachricht ins *XBTX# Forum oder
  1010. im *XTREFF# externen Rechner!
  1011.  
  1012. Viel Erfolg und Spaß bei der Programmierung unter WinDoof
  1013. und mit der WINAPI von WXBtx wünscht,
  1014.  
  1015. Jürgen Buchmüller
  1016. Bonn den 04.06.1995
  1017.  
  1018.