home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 November / PCO1197.ISO / FilesBBS / DOS / MXL226.EXE / GERDOC.ZIP / TEMPLATE.DOC < prev    next >
Encoding:
Text File  |  1996-10-19  |  36.4 KB  |  930 lines

  1. ┌╦═╦═╦┐┌╦═╦═╦┐┌╦═══╦┐┌╦═══╦┐┌╦═══╦┐╒╦╕┌╦═══╦┐     ┌╦═══╦┐┌╦     ┌╦═══╦┐┌╦   ╦┐
  2.    ║      ║   │║  ═╦┐├╬══   │╠══╦╩┘   └╩═══╦┐     │║     │║     ├╬═══╬┤│║ ║ ║│
  3.    ║   └╩═╩═╩┘└╩═══╩┘└╩═══╩┘└╩  ╚═┘   └╩═══╩┘     │║     └╩═══╩┘└╩   ╩┘└╩═╩═╩┘
  4. ┌╦─╩───────────────────────────────────────────── └╩═══╩┘ ──── HATTINGEN ───╦┐
  5. │║                      » HOME OF MAXLIST / MAXF'REQ «                      ║│
  6. └╩══════════════════════════════════════════════════════════════════════════╩┘
  7.   FidoNet 2:2444/6001 (V34) ■ 2:2444/6002 ∙ 2:2444/6003 ∙ 2:2444/6004 (ISDN)
  8.  
  9.  
  10.           ┌──────┐ ┌──────┐ ┌─┐  ┌─┐ ┌─┐      ┌─┐ ┌──────┐ ┌───────┐
  11.           └──────┘ └──────┘ └─┘  └─┘ └─┘      └─┘ └──────┘ └───────┘
  12.           ┌─┐┌┐┌─┐ ┌──────┐   ┌──┐   ┌─┐      ┌─┐ ┌──────┐    ┌─┐
  13.           │ │└┘│ │ │ ┌──┐ │  ┌┘┌┐└┐  │ │      │ │ └────┐ │    │ │
  14.           │ │  │ │ │ │  │ │ ┌┘┌┘└┐└┐ │ └────┐ │ │ ┌────┘ │    │ │
  15.           └─┘  └─┘ └─┘  └─┘ └─┘  └─┘ └──────┘ └─┘ └──────┘    └─┘
  16.      ■ MaxList v2.25 ∙ 29-Jun-96             OS/2, DOS und DPMI Version ■
  17.      ■ Templategesteuerter Filebaseprozessor für Maximus CBCS v2 und v3 ■
  18.      ────────────────────────────────────────────────────────────────────
  19.      ■ (c) 1994-96 by Wilfried Brinkmann, Germany - All rights reserved ■
  20.  
  21.  
  22.            ────────────────────────────────────────────────────────
  23.             Anleitung und Übersicht zu den MaxList Template-Tokens
  24.            ════════════════════════════════════════════════════════
  25.  
  26.     MaxList verwendet für ALLE Ausgaben in den Listen und Files.bbs Dateien
  27.     sogenannte Templates (Vorlagen). Diese enthalten die Anweisungen, wie
  28.     der Kopf und die einzelnen Zeilen ausehen sollen.
  29.  
  30.  
  31.                           Allgemeine Hinweise
  32.                          ─────────────────────
  33.  
  34.     Es gibt keine Zeilenlängenbegrenzung für Templates und Filebeschreibungen.
  35.     Ein Template, bzw eine Dateibschreibung kann maximal 8Kb groß sein.
  36.     Größere Beschreibungen werden OHNE Warnung auf 8192 Zeichen gekürzt!
  37.     Der Interner Bearbeitungspuffer ist entsprechend größer, um eventuelle
  38.     Umformatierungen durchführen zu können.
  39.  
  40.     Da logischerweise in einer Zeile sehr viele Tokens stehen können, würde
  41.     der Text schnell unleserlich oder ist nicht mehr anzufertigen.
  42.  
  43.     Deshalb kannst Du an jeder Stelle einen physikalischen Zeilenumbruch
  44.     einsetzen. Das heisst, eine logische Zeile kann sich über mehrere
  45.     Textzeilen erstrecken. Als Trennzeichen wird der Backslash verwendet "\".
  46.  
  47.     Beispiel:
  48.         @Format(@FileName @FileSize(#######) \
  49.         @FileDate(DD.MM.YYF) \
  50.         @Adjust("@AreaName",l,15,t) @Adjust("@FilePath",l,32,t))
  51.  
  52.     Das ganze wird später in einer Zeile dargestellt.
  53.     Das Zeichen \ selbst, sowie alle nachfolgenden Leerzeichen und
  54.     CRLF's werden entfernt. Am Ende des gesamten Strings wird automatisch
  55.     EIN CRLF angefügt, unabhängig davon, wieviele im Text stehen.
  56.  
  57.     Wird das Zeichen \ selber im Text benötigt, muss es doppelt angegeben
  58.     werden. In diesem Fall wird das Zeichen \ einmal dargestellt.
  59.     So wird aus "Backslash \\ im Text" ein "Backslash \ im Text".
  60.  
  61.     In den BBS-Headertemplates können MECCA-Colortokens verwendet werden.
  62.     Diese werden vom MaxList übersetzt.
  63.     Folgende MECCA-Tokens sind möglich:
  64.  
  65.       [cls]   - Bildschirm löschen
  66.  
  67.     Farben:
  68.       Vordergrund und Hintergrund     Nur bei Vordergrund
  69.       ---------------------------     -------------------
  70.       [black]                         [darkgray]
  71.       [blue]                          [lightblue]
  72.       [green]                         [lightgreen]
  73.       [cyan]                          [lightcyan]
  74.       [red]                           [lightred]
  75.       [magenta]                       [lightmagenta]
  76.       [brown]                         [yellow]
  77.       [gray]                          [white]
  78.  
  79.     Um gleichzeitig Vorder- und Hintergrundfarbe zu setzen, MUSS das Token
  80.     ON verwendet werden, z.B. [white ON Blue].
  81.  
  82.     CLS kann zusammen mit einer Coloranweisung stehen, z.B. [cls red on blue].
  83.     Wird die eckige Klammer ([) als Textzeichen gebraucht, muss diese zweimal
  84.     angegeben werden, z.B. so: [cls white][[Weiss] [[[yellow]Gelb[white]].
  85.  
  86.     MaxList schreibt automatisch das MECCA-Token [left cr lf] an das Ende
  87.     jeder Zeile des BBSHeaders. Über diese Zeichenfolge erkennt MaxList
  88.     den Header und ist so in der Lage, diesen auch wieder zu entfernen.
  89.  
  90.     MaxList führt keinen umfangreichen Syntaxcheck durch. Wenn Du also
  91.     die Tokens falsch schreibst, oder die Klammerung fehlerhaft ist, wird
  92.     das Ergebnis nicht vorhersehbar sein.
  93.  
  94.     Deswegen hier nochmal der Hinweis:
  95.  
  96.         SCHALTE FÜR DIE ERSTEN TESTLÄUFE DEN DEBUGG MODE EIN !!!!!
  97.  
  98.     Nur so kannst Du verhindern, das die Files.bbs Dateien verändert werden.
  99.     Das Ergebnis der Bemühungen von MaxList kannst Du Dir in den FILES.$$$
  100.     Dateien ansehen.
  101.  
  102.  
  103.  
  104.                               Die Templates
  105.                              ───────────────
  106.  
  107.     Nachfolgend sind alle Templates, deren Funktion und Einsatz beschrieben.
  108.  
  109.     Es gibt fünf Templatetypen: BBS, AREA, GROUP, REPORT und TITLE.
  110.     Die Templates AREA, GROUP und REPORT unterteilen sich nochmals in
  111.     HEADER und FOOTER, sodaß insgesamt acht Templates zur Verfügung stehen.
  112.  
  113.     Die HEADER Templates von BBS, AREA und GROUP enthalten jeweils eine
  114.     Anweisung, wie die einzelnen Dateieinträge ausehen sollen.
  115.  
  116.     Diese Anweisung lautet @FORMAT(@ID @ID ... @ID) und MUSS am Ende
  117.     des Templates stehen.
  118.     Wenn Du keinen Kopf haben willst, schreibst Du nur diese Anweisung in
  119.     das entsprechende Template.
  120.  
  121.     Innerhalb der Klammer werden dann die einzelnen Token (@ID) für
  122.     Dateiname, Dateigröße, Datum, Dateibeschreibung etc. angegeben.
  123.     Welche Parameter möglich sind, ist vom jeweiligem Template abhängig.
  124.     Tokens, die nicht ersetzbar sind, werden entfernt. Stehen diese dann
  125.     innerhalb einer @ADJUST Anweisung, wird ein entsprechender Leerstring
  126.     eingesetzt!
  127.  
  128.  
  129.     Das Template BBSHEADER
  130.     ──────────────────────
  131.     Für die Files.bbs Dateien kannst Du für jede Area oder Gruppe einen
  132.     eigenen Header erstellen. Bedenke jedoch, das ALLE Templates ständig
  133.     im Speicher gehalten werden. Unter DOS sind der Sache Grenzen gesetzt.
  134.  
  135.     Es sollte mindestens ein BBSHeader angegeben werden. Erfolgt keine Angabe,
  136.     verwendet MaxList einen Internen, der nicht geändert werden kann.
  137.  
  138.     Der Interne BBSHeader besteht nur aus der Formatzeile:
  139.         @Format(@FileName FileDesc(31, 79))
  140.  
  141.  
  142.     WICHTIGER HINWEIS FÜR MAXIMUS 3.0 BENUTZER!
  143.     ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
  144.  
  145.     MaxList unterstützt auch ein spezielles Format der Files.bbs Datei,
  146.     welches sowohl Dateigröße als auch Dateidatum enthält.
  147.  
  148.     Maximus 3.0 kennt hierfür einen speziellen Typ, der mit der Anweisung
  149.         TYPE  DATELIST
  150.     in der Area-Definition festgelegt wird.
  151.  
  152.     Für diesen speziellen Fall ist ein Template notwendig, in dem die
  153.     @FORMAT Anweisung wie folgt aussehen muss:
  154.  
  155.         @Format(@FileName \
  156.         @FileSize(#######_f)@FileDate(MM-DD-YY__)\
  157.         @FreeDwnLd@DlCounter@FileDesc(31,79))
  158.  
  159.     Die Randeinstellungen bei @FILEDESC kannst Du auf Deine Bedürfnisse
  160.     ändern. Ebenso kann @FREEDWNLD und @DLCOUNTER entfallen, wenn Du dieses
  161.     nicht benötigst. Im einfachsten Fall enthält die @FORMAT Anweisung dann
  162.  
  163.         @Format(@FileName \
  164.         @FileSize(#######_f)@FileDate(MM-DD_YY__)@FileDesc(31,79))
  165.  
  166.     HINWEIS:
  167.         Du kannst diese @FORMAT Anweisung auch für Areas ohne TYPE DATELIST
  168.         benutzen. In diesen Fall wird MaxList KEINE Dateigröße und Datum in
  169.         die Files.bbs Dateien eintragen.
  170.         Somit ist es möglich, mit EINEM Template ALLE Areas zu bearbeiten !
  171.         Dieses Template findest Du im Archiv unter BBSHDR3.TPL !
  172.  
  173.  
  174.     Das Template LISTTITLE
  175.     ──────────────────────
  176.     Optional kannst Du ein Titel-Template benutzen.
  177.     Damit kannst Du z.B. den Listentyp unmittelbar nach Deinem Logo
  178.     (ListHeaderFile) in die Liste einsetzen. Ich verwende für diesen
  179.     Titel einen Graphik-Font, der mir den Listenname mittig zentriert
  180.     einsetzt.
  181.     Weiterhin können hier Datum, Uhrzeit und Tag, sowie die verwendeten
  182.     Newfileflags eingetragen werden. Für die Parameter sind entsprechende
  183.     Tokens vorhanden. Siehe dazu auch Template TITLE.TPL
  184.  
  185.  
  186.     Die AREA Templates (AreaHeader / AreaFooter)
  187.     ────────────────────────────────────────────
  188.     Du kannst zwei Templates für jede Area definieren, AreaHeader und
  189.     AreaFooter. Der Footer ist optional.
  190.     Im Header MUSS eine @FORMAT Anweisung enthalten sein.
  191.  
  192.     Der Header wird am Anfang jeder Area ausgegeben. Danach folgen die
  193.     einzelnen Dateien.
  194.     Am Ende jeder Area KANN ein Footer ausgegeben werden.
  195.  
  196.     Für die DUPE-Liste wird ebenfalls der AreaHeader und die darin enthaltene
  197.     @FORMAT Anweisung verwendet, um die einzelnen DUPE-Dateien aufzulisten.
  198.     (Siehe Template DUPEHDR.TPL)
  199.  
  200.  
  201.     Die GROUP Templates (GroupHeader / GroupFooter)
  202.     ───────────────────────────────────────────────
  203.     Diese beiden Templates werden in den Reportlisten benötigt.
  204.     Der GroupHeader MUSS wieder die @FORMAT Anweisung enthalten.
  205.     Der Footer ist optional.
  206.  
  207.     Der Header wird vor jeder Area der Gruppe ausgegeben, danach folgen die
  208.     einzelnen Area-Einträge für diese Gruppe.
  209.  
  210.  
  211.     Die REPORT Templates (ReportHeader / ReportFooter)
  212.     ──────────────────────────────────────────────────
  213.     Diese beiden Templates sind optional.
  214.     Der ReportHeader wird an den Anfang der Statistik geschrieben, der
  215.     Footer am Ende, unmittelbar vor meiner Copyright-Notiz.
  216.     In den Report Templates wird keine @Format Anweisung benötigt.
  217.  
  218.  
  219.     Prinzipieller Aufbau einer Fileliste:
  220.  
  221.         ┌───────────────────────────────────┐
  222.         │ FileListHeader (Optional)         │
  223.         │ ...                               │
  224.         ├───────────────────────────────────┤
  225.         │ ListTitle      (Optional)         │
  226.         │ Datum, Zeit, Programmname, Flags  │
  227.         ╞═══════════════════════════════════╡ ──┐
  228.         │ AreaHeader mit @Format Anweisung  │   │
  229.         ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤   │
  230.         │ Datei Beschreibung                │   │
  231.         │   ...                             │   │
  232.         │ Datei Beschreibung                │   ├── Nicht bei Reportlisten.
  233.         ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤   │   Bei Dupelisten nur ein
  234.         │ AreaFooter     (Optional)         │   │   AreaHeader.
  235.         ├───────────────────────────────────┤   │
  236.         │ ... weitere Areas                 │   │
  237.         ╞═══════════════════════════════════╡ ══╡
  238.         │ ReportHeader   (Optional)         │   │
  239.         ├───────────────────────────────────┤   │
  240.         │ GroupHeader mit @Format Anweisung │   │
  241.         ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤   │
  242.         │ Areas dieser Gruppe               │   │
  243.         │   ...                             │   ├── Nur wenn AllAreaReport
  244.         │ Areas dieser Gruppe               │   │   auf YES steht.
  245.         ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤   │   Immer bei Reportlisten.
  246.         │ GroupFooter    (Optional)         │   │
  247.         ├───────────────────────────────────┤   │
  248.         │ ... weitere Gruppen               │   │
  249.         ├───────────────────────────────────┤   │
  250.         │ ReportFooter   (Optional)         │   │
  251.         ╞═══════════════════════════════════╡ ──┘
  252.         │ FileListFooter (Optional)         │
  253.         │ ...                               │
  254.         ├───────────────────────────────────┤
  255.         │        Copyright Logo             │
  256.         └───────────────────────────────────┘
  257.  
  258.  
  259.     Beispiel einer Newfilesliste mit Titel, AreaHeader, GroupHeader und
  260.     ReportHeader:
  261.  
  262.  
  263.                  █▄  █ █▀▀▀▀ █   █ █▀▀▀▀ ▀█▀ █     █▀▀▀▀ ▄▀▀▀▀
  264.         ▀▀▀▀▀    █ ▀▄█ █▀▀▀  █▄▀▄█ █▀▀▀   █  █     █▀▀▀   ▀▀▀▄    ▀▀▀▀▀
  265.                  ▀   ▀ ▀▀▀▀▀ ▀   ▀ ▀     ▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀
  266.      This list was created at 22:50 on Monday, 05.Feb 96 by MAXLIST+ v2.22
  267.  
  268.                       All files are less than 30 days old.
  269.  
  270. ═══════════════════════════════════════════════════════════════════════════════
  271.  ▄▀▀▀▄ ║ Lokales Echo
  272.   ▄▀▀  ║ Available: 3 files (236.918 Bytes)
  273.  ▀▀▀▀▀ ║ Newest: FRO_PWAD.ZIP  (03.09.1995, 79084 Bytes)
  274. ───────────────────────────────────────────────────────────────────────────────
  275. Filename        Size    Date   Description
  276. ──────────── ─────── ───────── ────────────────────────────────────────────────
  277. CTFILES.ZIP    24944 01.09.95  Alle neuen C't Files; =================
  278. FRO_PWAD.ZIP   79084 03.09.95  Frodo PWAD for DOOM2 and Heretic
  279.                                DOOM2 level 1, 2, and 3
  280.                                Heretic e1m1, m2, and m3
  281. GERFAQ4A.ZIP  132890 29.08.95  FAQ zu OS/2 Warp 3, deutschsprachige
  282.                                Ausgabe 3a v. 03.03.95, TXT und INF.
  283.  
  284. ╒═════════╤═════════════════════════════════════════════════════════╤═════════╕
  285. │░▒▓███▓▒░│                     NEWFILES SUMMARY                    │░▒▓███▓▒░│
  286. │░▒▓███▓▒░├─────────────────────────────────────────────────────────┤░▒▓███▓▒░│
  287. │░▒▓███▓▒░│        72 files (5.553 Kb) in 24 Areas (6 Groups)       │░▒▓███▓▒░│
  288. ╘═════════╧═════════════════════════════════════════════════════════╧═════════╛
  289.  
  290. Group: GFD.APP - Gfd-Net Applicationen
  291. Available: 9 files (694 Kb) in 3 areas
  292. ═══════════════════════════════════════════════════════════════════════════════
  293. Area              Description                                  Files      Bytes
  294. ───────────────── ─────────────────────────────────────────── ────── ──────────
  295. GFD.APP.ARC       Archiver                                         3       231K
  296. GFD.APP.BACK      Backup Tools                                     3       231K
  297. GFD.APP.EDIT      Editoren                                         3       231K
  298.  
  299. Group: GFD.FNT - Gfd-Net Mailbox Programm
  300. Available: 18 files (1.388 Kb) in 6 areas
  301. ═══════════════════════════════════════════════════════════════════════════════
  302. Area              Description                                  Files      Bytes
  303. ───────────────── ─────────────────────────────────────────── ────── ──────────
  304. GFD.FNT.BBS       BBS Programme                                    3       231K
  305. GFD.FNT.DOOR      Door Programme                                   3       231K
  306. GFD.FNT.MISC      Diverse Tools                                    3       231K
  307. GFD.FNT.PNT       Pointprogramme                                   3       231K
  308. GFD.FNT.TOSS      Tosser                                           3       231K
  309.  
  310. Available: 3 files (231 Kb) in 1 area
  311. ═══════════════════════════════════════════════════════════════════════════════
  312. Area              Description                                  Files      Bytes
  313. ───────────────── ─────────────────────────────────────────── ────── ──────────
  314. 2                 Lokales Echo                                     3       231K
  315.  
  316.    ╒═══════════════════════════════════════════════════════════════════════╕
  317.    │         This list was produced by MAXLIST+ (Version 2.22∙OS2)         │
  318.    │   Copyright 1994/96 by Wilfried Brinkmann, 45529 Hattingen, Germany   │
  319.    ╘═══════════════════════════════════════════════════════════════════════╛
  320.  
  321.  
  322.  
  323.                         Die Template Tokens
  324.                        ─────────────────────
  325.  
  326.     In folgendem Abschnitt findest Du nun alle Templatetokens erläutert.
  327.     Zu dem jeweiligen Token ist angegeben, in welchem Abschnitt bzw.
  328.     in welchem Template Du dieses einsetzen kannst.
  329.  
  330.     Teilweise bringen gleiche Tokens unterschiedliche Ergebnisse.
  331.     Das trifft insbesondere für die Summen zu, z.B. bei @FILES.
  332.  
  333.     JEDES Token beginnt mit einem Klammeraffen "@". Hat das Token Parameter,
  334.     dann müssen diese in Klammern "( )" stehen. Die einzelnen Parameter
  335.  
  336.     innerhalb der Klammer werden durch ein Komma "," voneinander getrennt.
  337.  
  338.     Groß-/Kleinschreibung ist nicht von Bedeutung. Die Tokens können beliebig
  339.     geschachtelt werden, d.h. innerhalb der Parameter eines Tokens können
  340.     weitere Tokens benutzt werden.
  341.  
  342.         Beispiel:  @Adjust(@Adjust(@Adjust("Test1",l,5),l,10),r,20)
  343.  
  344.     Optionale Parameter sind in eckigen Klammern dargestellt. Diese
  345.     Klammern dürfen im Template natürlich NICHT eingesetzt werden.
  346.     Hat ein Token mehrere Optionen, kann der nicht verwendete Teil
  347.     ausgelassen werden. Die Kommas müssen jedoch gesetzt werden.
  348.  
  349.         Beispiel:   @FileDesc(31,79,,TF)
  350.  
  351.  
  352.  
  353.     Die @FORMAT Anweisung
  354.     ─────────────────────
  355.     Syntax: @Format(@ID @ID .... @ID)
  356.  
  357.     Diese Anweisung ist, wie schon gesagt, für das Format der einzelnen
  358.     Dateieinträge in der Files.bbs und den Listen zuständig.
  359.  
  360.     Die Anweisung MUSS in folgenden Templates eingesetzt werden:
  361.  
  362.         BBSHeader       - Für die Files.bbs
  363.         AreaHeader      - Für die Filelisten
  364.         GroupHeader     - Für die Reportlisten
  365.  
  366.     In anderen Templates hat diese Anweisung nichts zu suchen. Steht sie
  367.     trotzdem drin, wird MaxList das geflissentlich ignorieren.
  368.  
  369.     Beispiel einer Format Anweisung:
  370.         @Format(@FileName @FreeDwnLd@DlCounter@Filedesc(31,79))
  371.  
  372.     Nach der Übersetzung durch MaxList, sieht die Files.bbs etwa so aus:
  373.  
  374.     NWFAQ503.ARJ /bt [00] Novell FAQ Version 03/95  ASCII-Version
  375.                                    deutschsprachige FAQ ueber alles, was
  376.                                    mit Novell zu tun hat.
  377.                                    inkl. aktueller File- und Mailboxliste
  378.  
  379.  
  380.     @LISTTYP
  381.     ────────
  382.     Syntax:     @ListTyp
  383.     Templates:  Alle außer BBS und @FORMAT Anweisung
  384.  
  385.     Für diese Token wird der Typ der Liste ausgegeben.
  386.     Listentypen:
  387.         ALL        [Name]   - [Name] oder ALLFILES
  388.         NEW <Tage> [Name]   - [Name] oder NEWFILES
  389.         PART       [Name]   - [Name]  (Wenn angegeben)
  390.         REPORT     [Name]   - [Name] oder REPORT
  391.         DUPE       [Name]   - [Name] oder DUPES
  392.         ORPHAN     [Name]   - [Name] oder ORPHAN
  393.         ANNOUNCE   [Name]   - [Name] oder ANNOUNCE
  394.  
  395.     !!! WICHTIGER HINWEIS:
  396.         Wird @ListTyp mit @Test benutzt, wird nicht der Name der Liste,
  397.         sondern der Typname als vergleich benutzt !
  398.  
  399.         @Test(@ListTyp,=,All, ...)  ergibt TRUE, wenn die Liste von
  400.         Typ ALL ist.
  401.  
  402.  
  403.     @TEST
  404.     ─────
  405.     Syntax:     @Test(@ID1, <|=|>|<>|[], @ID2, @IDTrue, @IDFalse)
  406.     Templates:  Alle
  407.  
  408.     Zum Testen von Parametern.
  409.     @ID1 wird mit @ID2 verglichen.
  410.     Vergleichsoperatoren:
  411.       <     - Kleiner
  412.       =     - Gleich
  413.       >     - Größer
  414.       <>    - Ungleich
  415.       []    - In Bereich
  416.  
  417.     In Abhängigkeit des Vergleichs wird @IDTrue oder @IDFalse ausgegeben.
  418.  
  419.     Beispiele:  @Test(@Groups,>,1,(@Groups Groups),"")
  420.                 Hier wird die Anzahl der Gruppen nur dann ausgegeben, wenn
  421.                 die Anzahl größer 1 ist.
  422.  
  423.                @Test(@AreaTag,[],12..99,"Geheim",@AreaTag)
  424.                Ist der Areatag in 12 bis 99, wird "Geheim" ausgegeben,
  425.                andernfalls der Areatag.
  426.  
  427.  
  428.     @FILEPATH
  429.     ─────────
  430.     Syntax:     @FilePath
  431.     Templates:  Alle außer TitleTemplate und BBS
  432.  
  433.     Laufwerk und Pfad(e) wie in DownLoad angegeben, z.B. D:\LISTEN\SHUTTLE\.
  434.     Enthält die Files.bbs eine Pfadangabe vor dem Dateinamen, wird diese
  435.     Angabe verwendet.
  436.  
  437.  
  438.     @FILENAME
  439.     ─────────
  440.     Syntax:     @FileName
  441.     Templates:  In allen @FORMAT Anweisungen
  442.  
  443.     Hier wird der Name der Datei linksbündig mit einer Feldlänge von 12
  444.     Zeichen ausgegeben. Ist der Name kürzer als 12 Zeichen, wird mit
  445.     Leerzeichen aufgefüllt, z.B. "ABC.ZIP_____"
  446.  
  447.     Ein Pfad in der Files.bbs wird in den Listen nicht ausgegeben, hingegen
  448.     bleibt dieser in der Files.bbs erhalten.
  449.  
  450.  
  451.     @FILEDATE
  452.     ─────────
  453.     Syntax:     @FileDate(DateFormat)
  454.     Templates:  In allen @FORMAT Anweisungen
  455.  
  456.     Das Datum kann beliebig formatiert werden. DateForm MUSS angegeben
  457.     werden. Folgende Parameter und Formate sind möglich:
  458.  
  459.         D   - Tag (Day)     01 .. 31
  460.         M   - Monat (Month) 01 .. 12, oder Monatsnamen (Jan, Feb etc)
  461.         Y   - Jahr (Year)
  462.         F   - Flagzeichen für neue Datei
  463.               Ist die Datei älter als für das Flag vorgesehen, wird ein
  464.               Leerzeichen eingesetzt.
  465.         _   - Unterstreichstrich, wird durch ein Leerzeichen ersetzt.
  466.  
  467.     Formatbeispiele:
  468.  
  469.         DD.MM.YY        - 20.09.95
  470.         MM.YYYY         - 09.1995
  471.         DD-MM-YYF       - 20-09-95+
  472.         D.M.YF          - 20.09.95+
  473.         DD.MMM_YYYY     - 20.Sep 1995
  474.         D.M.YYY         - 20.09.1995
  475.         DD-MM-YYF_      - 20-09-95+_  (_ ist ein Leerzeichen)
  476.  
  477.  
  478.     @FILESIZE
  479.     ─────────
  480.     Syntax:     @FileSize(SizeFormat)
  481.     Templates:  In allen @FORMAT Anweisungen
  482.  
  483.     Die Größe einer Datei. Die Zahl kann beliebig formatiert, und in andere
  484.     Größeneinheiten umgewandelt werden.
  485.     Die Einheiten werden in Byte gerechnet und können nach KiloByte
  486.     (div 1024) bzw. MegaByte (div 1048576) umgerechnet werden.
  487.  
  488.     HINWEIS:
  489.         In den BBS Templates für TYPE DATELIST darf KEINE Umwandlung in
  490.         andere Einheiten erfolgen. Die Formatierung für diese Templates
  491.         MUSS folgendes Format haben:    @FileSize(#######_F)
  492.  
  493.     Formatzeichen:
  494.         #   - Wird durch eine Zahl ersetzt
  495.         K   - Umrechnung in Kilobytes
  496.         M   - Umrechnung in Megabytes
  497.         F   - Mit Leerzeichen auffüllen
  498.         _   - Unterstreichstrich, wird durch ein Leerzeichen ersetzt.
  499.  
  500.         BEACHTE: Die Formatzeichen K, M, F MÜSSEN am Ende stehen !
  501.  
  502.     Formatbeispiele:
  503.  
  504.         Keine Angabe (Leere Klammer)        123456789
  505.         Ein oder mehrere #                  123456789
  506.         #.###.###                           12.346.789
  507.         K (Umrechnung KiloByte)             120563
  508.         #.###.###K                          120.563
  509.         M (Umrechnung MegaByte)             117
  510.         #.###.###M                          117
  511.         #.###F                              123456.789
  512.         #######MF                           ____117  (_ ist ein Leerzeichen)
  513.         #.###_M                             117_     (_ ist ein Leerzeichen)
  514.  
  515.  
  516.     @FREEDWNLD
  517.     ──────────
  518.     Syntax:     @FreeDwnLd
  519.     Templates:  Nur in der @FORMAT Anweisung bei den BBS Templates
  520.  
  521.     An dieser Stelle wird, wenn in der Konfig definiert (FreeDownLoad),
  522.     der entsprechende String und ein zusätzliches Leerzeichen eingesetzt.
  523.     Ist kein FreeDownLoad für diese Area/Gruppe freigegeben wird NICHTS
  524.     eingesetzt. Möglich ist hier "/b ", "/t " oder "/bt ".
  525.  
  526.  
  527.     @DLCOUNTER
  528.     ──────────
  529.     Syntax:     @DLCounter
  530.     Templates:  Nur in der @FORMAT Anweisung der BBS und AREA Templates
  531.  
  532.     Ist in der Konfig ein DownLoadCounter (DLCounter) definiert, wird dieser
  533.     hier eingesetzt, wenn noch nicht vorhanden. Ein vorhandener Counter wird
  534.     unverändert übernommen.
  535.  
  536.     Ist in der Konfig ein DLCounter abgegeben, aber dieses Token nicht
  537.     benutzt, wird ein DLCounter, der zu dem angegebenen Format
  538.     (Rahmenzeichen) passt, gnadenlos entfernt!
  539.  
  540.     Steht kein DLCounter in der Konfig, wird diese Token nicht beachtet.
  541.     BEACHTE: Es wird ein zusätzliches Leerzeichen angehängt, wenn ein
  542.              Downloadcounter eingetragen wird !
  543.  
  544.  
  545.     @AREANAME
  546.     ─────────
  547.     Syntax:     @AreaName
  548.     Templates:  Alle außer TitleTemplate
  549.  
  550.     Hier wird der VOLLE Areaname ausgegeben, also MIT FileDivisions.
  551.     Liegt die Area (sagen wir EDIT) in der Gruppe GFD.APP wird hier dann
  552.     "GFD.APP.EDIT" ausgegeben.
  553.  
  554.  
  555.     @AREATAG
  556.     ────────
  557.     Syntax:     @AreaTag
  558.     Templates:  Alle außer TitleTemplate
  559.  
  560.     Damit kannst Du den Namen der Area ausgeben. Die Gruppe wird hierbei
  561.     nicht ausgegeben.
  562.  
  563.  
  564.     @GROUPTAG
  565.     ─────────
  566.     Syntax:     @GroupTag
  567.     Templates:  Alle außer TitleTemplate
  568.  
  569.     Hier wird der Name der Gruppe ausgegeben, z.B. "GFD.APP".
  570.     Die Area wird nicht ausgegeben.
  571.  
  572.  
  573.     @AREADESC / @GROUPDESC
  574.     ──────────────────────
  575.     Syntax:     @AreaDesc / @GroupDesc
  576.     Templates:  Alle außer TitleTemplate
  577.  
  578.     Damit gibst Du die Beschreibung der Area bzw. der Gruppe aus.
  579.     Die Länge der Beschreibung ist intern auf 50 Zeichen begrenzt.
  580.  
  581.  
  582.     @AREAACS / @GROUPACS
  583.     ────────────────────
  584.     Syntax:     @AreaAcs / @GroupAcs
  585.     Templates:  Alle außer TitleTemplate
  586.  
  587.     Das sind die AccessLevel und Keys der Area, bzw. der Gruppe.
  588.     Hast Du in der Konfig mit USERLEVEL die Level/Key's übersetzt, wird
  589.     hier dieser String eingesetzt. Andernfalls erscheint Level/Keys wie in
  590.     der jeweiliegen Area / Gruppe angegeben.
  591.     Die Länge der Accessstrings ist intern auf 50 Zeichen begrenzt.
  592.  
  593.  
  594.     @OFFLINE
  595.     ────────
  596.     Syntax:     @OffLine
  597.     Templates:  Nur in der @FORMAT Anweisung der AREA Templates
  598.  
  599.     Bei allen "normalen" Filelistern steht an Stelle von Filegröße und Datum
  600.     der "Offline" String, wenn die Datei nicht vorhanden ist.
  601.  
  602.     Da es bei MaxList jedoch möglich ist, die Parameter an beliebige Stelle
  603.     zu setzen, muss hier ein anderes Verfahren benutzt werden, um den in der
  604.     Konfig definierten "Offline" String einzusetzen.
  605.  
  606.     Soll dieser verwendet werden, muss das ganze mit dem Token @Test gemacht
  607.     werden. Das ganze sieht dann wie folgt aus:
  608.  
  609.         @Format(@FileName \
  610.         @Test(@FileSize(),>,0,\
  611.         @FileSize(#######F) @FileDate(DD.MM.YYF),\
  612.         @Adjust("@OffLine",l,17)) @Filedesc(31,79))
  613.  
  614.     Bei MaxList wird Dateigröße mit 0 besetzt, wenn die Datei nicht vorhanden
  615.     ist. (Auch eine 0 Byte Datei gilt als nicht vorhanden !)
  616.     Somit kann geprüft werden, ob FileSize > 0 ist. In diesem Fall wird nach
  617.     dem FileNamen @FileSize(#######F) @FileDate(DD.MM.YYF) eingesetzt.
  618.     Ist die Dateigröße = 0, wird @Adjust("@OffLine",l,17) verwendet.
  619.  
  620.  
  621.     @NEWFNAME
  622.     ─────────
  623.     Syntax:     @NewFName
  624.     Templates:  AREA und BBS Templates, nicht in @FORMAT Anweisung
  625.  
  626.     Name der NEUESTEN Datei in dieser Area.
  627.     Der Name ist in keiner Weise formatiert. Er wird so ausgegeben, wie
  628.     er vorgefunden wurde.
  629.  
  630.  
  631.     @NEWFDATE
  632.     ─────────
  633.     Syntax:     @NewFDate(DateFormat)
  634.     Templates:  AREA und BBS Templates, nicht in @FORMAT Anweisung
  635.  
  636.     Datum der NEUESTEN Datei dieser Area.
  637.     Das Format des Parameters DateFormat ist wie bei @FILEDATE.
  638.  
  639.  
  640.     @NEWFSIZE
  641.     ─────────
  642.     Syntax:     @NewFSize(SizeFormat)
  643.     Templates:  AREA und BBS Templates, nicht in @FORMAT Anweisung
  644.  
  645.     Größe der NEUESTEN Datei dieser Area.
  646.     Das Format des Parameters SizeFormat ist wie bei @FILESIZE.
  647.  
  648.  
  649.     @FILES
  650.     ──────
  651.     Syntax:     @Files
  652.     Templates:  Alle außer in @FORMAT Anweisung
  653.  
  654.     Damit wird die Summe der Dateien (unformatiert) ausgegeben.
  655.     WELCHE Summe erscheint, ist vom jeweiligem Template abhängig:
  656.  
  657.         AREA / BBS  -   Summe der Dateien in dieser Area
  658.         GROUP       -   ... in dieser Gruppe
  659.         REPORT      -   ... in dieser Liste
  660.  
  661.  
  662.     @BYTES
  663.     ──────
  664.     Syntax:     @Bytes(SizeFormat)
  665.     Templates:  Alle außer in @FORMAT Anweisung
  666.  
  667.     Das ist die Summe der Bytes.
  668.     Das Format des Parameters SizeFormat ist wie bei @FILESIZE.
  669.     WELCHE Summe ausgegeben wird, ist vom Template abhängig:
  670.  
  671.         AREA / BBS  -   Summe der Bytes in dieser Area
  672.         GROUP       -   ... in dieser Gruppe
  673.         REPORT      -   ... in dieser Liste
  674.  
  675.  
  676.     @AREAS
  677.     ──────
  678.     Syntax:     @Areas
  679.     Templates:  Nur in GROUP und REPORT
  680.  
  681.     Das ist die Summe der Areas.
  682.     WELCHE Summe ausgegeben wird, ist vom Template abhängig:
  683.  
  684.         GROUP       -   Summe der Areas in dieser Gruppe
  685.         REPORT      -   ... in dieser Liste
  686.  
  687.  
  688.     @GROUPS
  689.     ───────
  690.     Syntax:     @Groups
  691.     Templates:  Nur in REPORT
  692.  
  693.     Das ist die Summe aller Gruppen dieser Liste.
  694.     Hast Du keine FileDivisions, ist die Anzahl der Gruppen gleich 1.
  695.     (MainGroup = Gruppe ohne FileDivisions)
  696.     Diese Gruppe hat keinen Tag, kein ACS und keine Description!
  697.  
  698.  
  699.     @PROGNAME
  700.     ─────────
  701.     Syntax:     @PrgName
  702.     Templates:  Nur in Titel Templates
  703.  
  704.     Ja, ja ... Das wird durch   'MAXLIST+ v#.##'   ersetzt.
  705.     Ich will doch hoffen, das Ihr diese Token IMMER benutzt ;-)
  706.     Das '+' erscheint nur bei der Reg-Version, v#.## ist die Versionsnummer.
  707.  
  708.  
  709.     @DATE
  710.     ─────
  711.     Syntax:     @Date(DateFormat)
  712.     Templates:  Nur in Titel Templates
  713.  
  714.     Mit diesem Token kannst Du das aktuelles Tagesdatum einsetzten.
  715.     Das Format des Parameters DateFormat ist wie bei @FILEDATE.
  716.  
  717.  
  718.     @TIME
  719.     ─────
  720.     Syntax:     @Time(TimeFormat)
  721.     Templates:  Nur in Titel Templates
  722.  
  723.     Mit diesem Token kannst Du die aktuelles Uhrzeit einsetzten.
  724.     Folgende Parameter und Formate sind möglich:
  725.  
  726.         H   - Stunde   00 .. 23
  727.         M   - Minute   00 .. 59
  728.         S   - Sekunde  00 .. 59
  729.         _   - Unterstreichstrich, wird durch ein Leerzeichen ersetzt.
  730.  
  731.     Formatbeispiele:
  732.  
  733.         HH:MM:SS        - 22.17.05
  734.         H:M             - 22:17
  735.         HH:MM.SS_       - 22:17.05_  (_ ist ein Leerzeichen)
  736.  
  737.  
  738.     @DAY
  739.     ────
  740.     Syntax:     @Day
  741.     Templates:  Nur in Titel Templates
  742.  
  743.     Mit diesem Token kannst Du den aktuelles Tagesnamen einsetzten.
  744.     Die Tagesnamen werden so verwendet, die in der Konfig von MaxList
  745.     definiert. Ist keine Übersetzung vorhanden, werden die englischen
  746.     Namen eingesetzt.
  747.  
  748.  
  749.     @NEWFDAYS
  750.     ─────────
  751.     Syntax:     @NewFDays
  752.     Templates:  Nur in Titel Templates
  753.  
  754.     Dieses Token wird durch die Angabe <Tage> bei den Newfileslisten ersetzt.
  755.     Beispiel für die Anwendung findest Du im Template TITLE.TPL
  756.  
  757.  
  758.     @FLAGS
  759.     ──────
  760.     Syntax:     @Flags(FlagFormat)
  761.     Templates:  Nur in Titel Templates
  762.  
  763.     Mit @Flags werden ALLE in der Konfig definierten NewFileFlags (FLAGCHAR)
  764.     ausgegeben. Die einzelnen Flags werden durch ein Komma getrennt.
  765.  
  766.     FlagFormat legt fest, wie die Daten auszugeben sind:
  767.  
  768.         $   - wird durch das Flagzeichen ersetzt
  769.         #   - wird durch die Anzahl der Tage ersetzt
  770.         _   - Unterstreichstrich wird durch ein Leerzeichen ersetzt
  771.  
  772.     Beispiel:
  773.       Du hast in der Konfig von MaxList den Eintrag:
  774.             FlagChar            7,!  14,*  30,+
  775.       und im Template die Angabe
  776.             @Flags($_=_#_days)
  777.  
  778.       dann wird MaxList folgende ausgeben:
  779.  
  780.             ! = 7 days, * = 14 days, + = 30 days.
  781.  
  782.  
  783.     @FONTSTR
  784.     ─────────
  785.     Syntax:     @FontStr(FontName, @ID), @FontStr(FontName)
  786.     Templates:  Alle außer in @FORMAT Anweisung
  787.  
  788.     Damit kannst Du einen beliebigen Text in Grafikzeichen ausgeben.
  789.     Zuvor muss jedoch in der Konfig ein Font geladen sein. (LoadFont).
  790.     Ist KEIN Font geladen, wird auch nichts ausgegeben !
  791.  
  792.     Eine Besonderheit ist zu berücksichtigen:
  793.  
  794.         Ein Fontzeichen besteht aus mehreren Zeilen, die genau untereinander
  795.         stehen müssen. Da jede Ausgabe mit @ADJUST verändert werden kann,
  796.         MUSS für JEDE Zeile ein @FONTSTR Token eingesetzt werden.
  797.  
  798.         Hast Du z.B. einen Font, der 3 Zeilen hoch ist, MUSS an der
  799.         jeweiligen Spalten und Zeilenposition ein weiteres @FONTSTR(FontName)
  800.         eingesetzt werden.
  801.         Der FontName MUSS IMMER angegebene werden, der Parameter @ID
  802.         darf jedoch NUR in der ERSTEN Anweisung stehen !
  803.  
  804.         Beispiel:
  805.             @Adjust("@FontStr(Digi3x5, -'@ListTyp'-)",c,79)@CrLf\
  806.             @Adjust("@FontStr(Digi3x5)",c,79)@CrLf\
  807.             @Adjust("@FontStr(Digi3x5)",c,79)
  808.  
  809.  
  810.     Die Fonts kannst Du mit dem beigefügtem Font-Editor (FNTMAKE(p).EXE)
  811.     selber erstellen. Es sind fünf verschieden Fonts beigefügt.
  812.  
  813.  
  814.     @CRLF
  815.     ─────
  816.     Syntax:     @CrLf
  817.     Templates:  Alle
  818.  
  819.     Damit kannst Du zusätzliche Zeilenumbrüche einfügen.
  820.  
  821.  
  822.     @ADJUST
  823.     ───────
  824.     Syntax:     @Adjust("@ID", L|C|R, Len [, T]);
  825.     Templates:  Alle
  826.  
  827.     @ID kann wiederum jedes Token außer @FILEDESC enthalten.
  828.     Das @ID MUSS in Anführungsstriche gestellt werden.
  829.  
  830.     Beispiel:
  831.         @Adjust("  Das ist ein Test",l,20)  wird zu |  Das ist ein Test|
  832.  
  833.     Es kann Linksbündig "L", Zentriert "C", oder Rechtsbündig "R"
  834.     ausgerichtet werden. Die angegebene Feldlänge "Len" wird entsprechend
  835.     mit Leerzeichen aufgefüllt.
  836.  
  837.     Ist der Optionale Parameter "T" (für Truncate) angegeben, wird der String
  838.     in jedem Fall auf die angegebene Länge "Len" gekürzt.
  839.  
  840.  
  841.     @FILEDESC
  842.     ─────────
  843.     Syntax:     @FileDesc(Links, Rechts [, Zeilen [, T|TF [, PreLine]]])
  844.     Templates:  Nur in den @FORMAT Anweisungen
  845.  
  846.     Damit wird nun die Beschreibung zu den einzelnen Dateien bearbeitet und
  847.     ausgerichtet.
  848.  
  849.     Die Parameter:
  850.         Links       - Der linke Rand der (erweiterten) Beschreibung, also
  851.                       ab der zweiten Zeile.
  852.                       Der Wert kann zwischen 1 und 65535 liegen, muss jedoch
  853.                       kleiner als der Rechte Rand sein.
  854.  
  855.         Rechts      - Der rechte Rand der Beschreibung.
  856.                       Der Wert kann zwischen 1 und 65535 liegen, muss jedoch
  857.                       größer als der linke Rand sein.
  858.  
  859.         Zeilen      - Optional. Damit kannst Du die Anzahl der Zeilen
  860.                       begrenzen. Gut für seitenlange FILE_ID.DIZ.
  861.                       Zeilen = 0 heißt unbegrenzt, was auch Vorgabe ist.
  862.                       Ansonsten kann der Wert zwischen 1 und 65535 liegen.
  863.  
  864.         T oder TF   - Optional. Steht für Truncate, bzw TruncateFirst.
  865.                       Normalerweise wird die Beschreibung komplett neu
  866.                       umgebrochen, wenn sie nicht in die Grenzen
  867.                       (Links - Rechts) passt. Ist "T"runcate angegeben, wird
  868.                       nicht umgebrochen, sondern die zu langen Zeilen werden
  869.                       am rechten Rand abgeschnitten.
  870.  
  871.                       "TF" ist ein HighLight für Leute mit Downloadcounter ;-)
  872.                       Bei TF schneidet MaxList nur die ERSTE Zeile ab, wenn
  873.                       diese über den rechten Rand hinausgeht.
  874.                       Stellt sich allerdings im weiteren Verlauf der
  875.                       Bearbeitung heraus, das die Beschreibung neu umgebrochen
  876.                       werden muss, setzt MaxList zunächst den Teil wieder ein,
  877.                       bevor der Text weiter bearbeitet wird.
  878.  
  879.         PreLine     - Optional. Damit kann z.B. die Liste wie eine Tabelle
  880.                       aufgebaut werden. Alternativ kann PreLine benutzt
  881.                       werden, um ein "+" vor die erweiterte Dateibeschreibung
  882.                       zu setzen. PreLine kann auch ein @ID enthalten.
  883.  
  884.                       Beispiel:
  885.                         @FileDesc(31,79,,,@Adjust("+ ",r,31))
  886.  
  887.                       Die Ausgabe wird dann etwas so aussehen:
  888.                         TEST.ZIP         12K 01.01.80  Eine Testdatei
  889.                                                      + mit Erweiterter
  890.                                                      + Beschreibung und
  891.                                                      + einem Pluszeichen
  892.  
  893.                       Noch ein Beispiel:
  894.                         @Format(@FileName│@FileSize(#######)│\
  895.                                 @FileDate(dd.mm.yyf)│\
  896.                                 @FileDesc(31,79,,,@Adjust("│",l,13)\
  897.                                 @Adjust("│",l,8)@Adjust("│",l,10)))
  898.  
  899.                       Die Ausgabe:
  900.                         TEST1.ZIP   │  12351│01.01.80 │Eine Testdatei
  901.                                     │       │         │in Tabellenform
  902.                                     │       │         │mit Linien.
  903.                         ANYFILE.ARJ │  12351│01.01.80 │Noch eine Datei
  904.                                     │       │         │in Tabellenform
  905.  
  906.  
  907. ═══════════════════════════════════════════════════════════════════════════════
  908.  
  909.                             Noch ein Hinweis
  910.                            ══════════════════
  911.  
  912.     Beispiele für den Aufbau findest Du in den beigefügten Templates.
  913.     Diese befinden sich in dem Archiv TEMPLATE.ZIP.
  914.     Du solltest diese in ein eigenes Unterverzeichnis kopieren und in der
  915.     MaxList Konfig ein Define für diesen Pfad benutzen.
  916.  
  917.     Das zuvor Gesagte gilt auch für die Fontdatei und den FontMaker.
  918.     Die Fonts und das Programm FNTMAKE.EXE bzw. FNTMAKEP.EXE für OS/2
  919.     findest Du in dem Archiv FONTS.ZIP. Ebenso eine kurze Anleitung.
  920.  
  921.     Wenn Du einen neuen Font und/oder ein schönes Template entworfen hast,
  922.     solltest Du nicht zögern, diese zu mir zu schicken, damit auch andere
  923.     MaxList User davon profitieren können.
  924.  
  925.  
  926.     Der Autor, Wilfried Brinkmann
  927.  
  928. ────────────────────────────────────────────────────────────────────────────
  929. Template.Doc zu MaxList 2.25                                 Stand Juni 1996
  930.