   Key words:

        Global key words:

        @akatouse           : Aka to use
        @systemname         : System name
        @sysopname          : Sysop name
        @phoneline1         : Phone line 1
        @phoneline2         : Phone line 2
        @phoneline3         : Phone line 3
        @location           : Location
        @flags              : Flags
        @baud               : Baud
        @comment            : System comment
        @prgversion         : ALLFIX program version
        @daynr              : Day number (1-31)
        @day                : Day
        @monthnr            : Month number (1-12)
        @month              : Month
        @year               : Year (1980-xxxx)
        @cookie             : Fotune cookie
        @areabegin          : Begin an area block
        @end                : End a file block
        @msgto              : Who the message is written to
        @msgfrom            : Who the message is written from
        @msgsubject         : The subject of the message



        Key words for the new file reports:

        @filebegin          : Begin a file block
        @filename           : File name
        @filedesc           : File description
        @filterdesc         : Filter high ascii from the description
        @filesize           : File size
        @filesizekb         : File size in kb's
        @filedate           : File date
        @filetime           : File time
        @fileorigin         : Origin of this file
        @filefrom           : Where you received this file from
        @filecrc            : Crc of the file
        @filereplace        : File(spec) this file replaces
        @filemagic          : Magic name for this file

        @fileecho           : Name of the file echo or file area if
                              used in FileFind template files.
        @group              : Group this file belongs to
        @groupname          : Name of the group this file belongs to
        @echodesc           : File echo comment (description)

        @blockbytes         : Total number of bytes in current block
        @blockkb            : Total number of Kb's in current block
        @blockfiles         : Total number of files in current block
        @totalbytes         : Total number of bytes in current report
        @totalkb            : Total number of Kb's in current report
        @totalfiles         : Total number of files in current report

        Keywords for Notify messages:

        @groupbegin         : Begin a group block
        @echostat           : A character designating whether user has access,
                              or not to this echo
        @avgfiles           : Average number of files in this echo per month
        @avgkb              : Average number of kb in this echo per month
        @echopassword       : File echo password for this system
        @mgrpassword        : AreaMgr password for this system
        @availgroups        : Groups this system has access to
        @mailstat           : Message status for this system
        @direct             : Direct bit status for this system
        @ticmode            : TIC file mode for this system
        @packmode           : Packing mode for this system
        @template           : Include template files for this system
        @notify             : Send notify messages to this system
        @forward            : Forward requests to uplink
        @autoadd            : Allow auto add for this system
        @remote             : Allow remote maintenance
        @compression        : Compression type for this system


   Commands:

        @just(@keyword, [L|R], Size [,PadChar] [,R])

          This function will justify a character either Left or Right,
          as specified by the [L|R] option (read as L or R) in a field
          of length Size padded with optional character PadChar. If the
          optional character PadChar is not specified then a space will
          be used. The last optional character, R, means Rawmode.
          Normally the macro interpreter will cut a string that is to
          long to fit in the field off at the nearest space. In Rawmode,
          the string will be cut off at the length of the field, if it
          is longer than the field.

          Ex. [@just(@fileecho,L,14,'-')]

              results in: [ALLFIX--------]

        @center(@keyword,Size [,PadChar] [,R])

          This function will center a string inside a field of length
          Size padded with the optional parameter PadChar. The last
          optional parameter, R for Rawmode, has the same functionality
          as in the previous function.

          Ex. [@center(@fileecho,14,'-')]

              results in: [----ALLFIX----]

        @copy(@keyword,begin [,num] [,R])

          Copies a portion of a string starting at the number begin, and
          ending at the length of the string, unless the optional parameter
          num is included which specifies the number of characters to copy.
          The last optional parameter, R for Rawmode, has the same
          functionality as in the previous function.

          Ex. @copy(@filecho,1,3)

              results in: ALL

              Notice that the Rawmode parameter was not used in this
              example, yet the string was cut off in a position where
              there was no space. This is becuase there is no space in
              the string 'ALLFIX' and therefore the macro interpreter
              will cut it off at the number of places specified.

        @overflow

          This function repeates the previous function that created any
          overflow. Overflow is that portion of a keyword that did not fit
          into the area defined in one of the previous functions. The
          macro interpreter will continue to process this command until
          there is no more overflow. If there is no overflow to begin
          with, then the line containing this command will be skipped.

          Ex. @just(@filedesc,R,40)
              @overflow

          Will result in:

              |-----------40 characters--------------|

                This is a super duper long description
                       to demonstrate how the overflow
                function works by displaying this long
               description using the justify procedure
                   in a 'window' that is 40 bytes long

        @test(@keyword,[=|<>],[@keyword|"string"])
          {block}
        @else
          {block}
        @end

          The @else keyword is optional. If it is included, then
          the first block will be processed if the test yields true and
          the second block will be processed if the test yields false.
          If the @else keyword is not included, then the first block
          will be processed if the test yields true.

          A keyword can be compared to another keyword or a string,
          which must be enclosed by double quotes "". The testing
          criteria is either an equal '=' or an not equal '<>' sign.

          Ex.

          @filebegin
            @just(@filename,L,13)@just(@filesize,R,9) @copy(@filedesc,1,53)
                                   @overflow
          @test(@filemagic,<>,"")
                                   FREQ: @filemagic
          @end
          @end

          In the previous example, the magic request name is only included
          in the report if it is defined (ie. other than nothing, denoted
          by "").

        @assign(@variable,[@keyword|value])

          This command can be used to store a string or the value of
          a keyword in a temporary variable. If the variable does not
          yet exist, then a new one is made. If it does exist, then the
          value is updated. Value is either a string, enclosed in double
          quotes, or a number.

          Ex. @assign(@tmp,"Hi there")
              @center(@tmp,30)

          Ex. @assign(@tmp,"No");
              @tmp
              @assign(@tmp,"Yes");
              @tmp

        @add(@variable,value)

          This function adds a value to the current value of a variable.
          If the value is a string, then the new value will be
          concatenated to the current value.

          Ex. If @test is equal to "Hi there ", then the statement
              @add(@test,"mom") changes the value of @test to
              "Hi there mom"

          If the value is a number, then the it will be added to the
          current value of the variable.

          Ex. If @test is equal to 10, then the statement
              @add(@test,5) changes the value of @test to 15.

        @sub(@variable,number)

          This function subtracts a value from the current value of
          a variable. This function only works with variables that
          contain numbers.

          Ex. If @test is equal to 15, then @sub(@test,5) changes the
              value of @test to 10.

        @pos(@variable,@variable)

          This function returns the position of the second variable in
          the first variable.

          Ex. If the systemname is "The Pascal Paradise" then the
          statement: @pos(@systemname,"Pascal") would return the value
          4.

        @len(@variable)

          This function returns the length of the variable.

          Ex. If the systemname is "The Pascal Paradise" then the
          statement: @len(@systemname) would return the value 19.


   Extra notes:

        If an incorrect syntax is used for a paticular function, then
        the macro interpreter will not handle that function. The
        complete function and parameters as specified in the template
        file will, however, be copied into the resulting report. This
        means that if you can use the '@' character in your report,
        for things other than the just the keywords and functions. It
        also means, however, that your report can turn into a mess if
        you do not make sure that the correct syntax is used.

        Keywords do not need to be preceded by a '@' symbol if they
        are being used within a function, however, the presence of a
        '@' will not make a difference.

          Ex. @just(systemname,L,40)

              is the same as

              @just(@systemname,L,40)


        You may not skip optional parameters.

          Ex. Incorrect: @just(@systemname,L,40,R)

              Correct  : @just(@systemname,L,40, ,R)

          In the first example, the PadChar was left out. This is
          incorrect. Since the last optional parameter is being
          used, then any optional parameters before it must also
          be specified.

        In almost every situation where a @keyword is used a function
        result can also be used. For example:

          Ex. @center(@copy(@systemname,5,5),20)


