home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / adpt107f.zip / ADPREXX.DOC < prev    next >
Text File  |  1996-04-20  |  111KB  |  4,115 lines

  1.      ----------------------------------------------------------------------
  2.  
  3.                            AdeptXBBS REXX INTERFACE
  4.  
  5.                     Copyright (c) 1993 - 1996 by AdeptSoft
  6.                   portions Copyright (c)  1991-1994 M. Kimes
  7.                              All Rights Reserved
  8.  
  9.                       AdeptSoft, AdeptXBBS, GateKeeper,
  10.                         are trademarks of AdeptSoft.
  11.  
  12.       "XBBS"  Copyright (c) 1988 - 1994 by M. Kimes. The "XBBS" name is a
  13.                            Trademark of M. Kimes.
  14.                                        
  15.  
  16.      ----------------------------------------------------------------------
  17.      What's New:
  18.  
  19.      04/03/96
  20.  
  21.      Change to AdeptLog() info
  22.      
  23.      Documented Print()
  24.  
  25.      Documented Printf()
  26.  
  27.      Deleted ReturnComPort()
  28.  
  29.      Added info to AfSysMoveFile()
  30.  
  31.      Changed the name of AfSysSetGetFileDate() to AfSysGetFileDate()
  32.  
  33.      Documented AdeptSayGen()
  34.  
  35.      Deleted AdeptSaveUser() -didn't exist.
  36.  
  37.      Changed the name of AdeptRexxStartThread() to AdeptStartRexxThread()
  38.  
  39.      Changed the name of AdeptRexxKillThread() to AdeptKillRexxThread()
  40.  
  41.      Documented AdeptKillRexxThread()
  42.  
  43.      Changed AdeptStartRexxThread() info
  44.  
  45.  
  46.      ----------------------------------------------------------------------
  47.  
  48.  
  49.      __________________________
  50.      _ _ ADEPT REXX INTERFACE _
  51.      __________________________
  52.  
  53.      AdeptXBBS comes with two 'menu' systems, the standard text, ASCII
  54.      based menu system and a REXX subsystem.  The REXX subsystem 
  55.      included with the BBS software allows all basic menu functions with 
  56.      some additional flexibility.
  57.  
  58.      We also offer, still in development, a complete REXX API subsystem 
  59.      that gives even the novice programmer control over the BBS 
  60.      software.
  61.  
  62.      With the AdeptXBBS REXX API Programming module you get access to all
  63.      available memory variables,  all internal functions,  and  
  64.      unrestricted access to all running nodes at one time.
  65.  
  66.      This is an extremely powerful module, giving control over the
  67.      entire BBS.  For programmers wishing to write their own programs in a
  68.      simple language, yet maintain the speed and flexibility of AdeptXBBS
  69.      this is for you.  We also have utilities that allow you to ship your
  70.      programs without making the source code available to the end user.
  71.  
  72.      Adept contains a REXX interface to the BBS functions.  This allows you
  73.      to create your own scripts to execute from Adept.  By using REXX
  74.      functions alone you can completely customize Adept.
  75.  
  76.      Three types of REXX commands can be automatically executed by Adept. 
  77.      They are .cmd, .srx and .erx files.  To be executed they need only 
  78.      exist in the .\Menus directory.  Below is a list of .cmd files that
  79.      Adept will automatically run if they exist in the .\Menus directory.
  80.  
  81.      Main.Cmd or Main?.Cmd
  82.      This REXX script is executed INSTEAD OF the default menu system.
  83.  
  84.      AtEnd.Cmd or AtEnd?.Cmd
  85.      This REXX script is executed after the user logs off (or the default
  86.      script has ended) The BPS rate will be zero and the time left will be
  87.      five minutes. This script is executed before the user info is saved to
  88.      the user data base.
  89.  
  90.      AtStart.Cmd or AtStart?.Cmd
  91.      This REXX script is executed at logon. The filename with the line 
  92.      number is executed in place of 'AtStart.Cmd' if it exists.
  93.  
  94.      Exception.Cmd           
  95.      This REXX script is executed if a exception violation occurs.  You can
  96.      use this script to notify the user of what just happened.  And to help
  97.      assist us by asking the user what they where doing when the exception
  98.      happened.
  99.  
  100.      ConvertXXX.Cmd
  101.      Where 'XXX' is a file extension of a type of file you wish to convert 
  102.      to another format.  For instance, if you want to convert ARC files to 
  103.      ZIP,you would create a ConvertARC.CMD ConvertARC.Cmd would then 
  104.      convert the file, if the file is converted it creates a file called 
  105.      "xxxxx.NewName" where 'xxxxx' is the file name without the extension 
  106.      This file contains 1 line, the line has the new filename of the file  
  107.      after it was converted. Adept will use this filename when it puts 
  108.      the file info into the file system.
  109.  
  110.      ChatReq.Cmd or ChatReq?.Cmd  
  111.      Where '?' is the line number. 
  112.  
  113.      Fax.Cmd or Fax?.Cmd  
  114.      Where '?' is the line number. Executed when modem returns a fax result
  115.      code.
  116.  
  117.  
  118.  
  119.      Standard and Extended REXX Programs:
  120.      .SRX stands for Standard REXX files.  They are the same as .CMD files 
  121.      in that they are not compiled in any way.  .ERX files are REXX files 
  122.      that have been preprocessed with the AdeptREXX Processor (SrxToErx).  
  123.      ERX files are typically 50% smaller and always faster then standard 
  124.      REXX files (When run Cached).
  125.  
  126.      We are asking that people who write rexx scripts for Adept that are 
  127.      not preprocessed please use the extension .SRX.  The preprocessor 
  128.      will ONLY process files with the .SRX extension.
  129.  
  130.      SrxToErx.Exe FileNameWithoutExtention will yield a file with the same
  131.      name, but the .ERX extension.  If you are a commercial developer is
  132.      recommended that you preprocess your rexx .SRX files before 
  133.      distributing them.  Also it recommended that you DO NOT preprocess 
  134.      the following!
  135.  
  136.      Atstart.Cmd - This MUST remain a .CMD file.  So that others may modify
  137.      it and chain needed rexx scripts (preprocessed or not) from it.
  138.  
  139.      The BBS software will only look for .ERX versions of files that we feel are
  140.      OK to preprocess.  In fact if you are running a .SRX file (i.e. .cmd)
  141.      file in cached mode (as we default to) it is treated as a .ERX file
  142.      after we preprocess it internally.  So it is honestly recommended that
  143.      you do not preprocess anything that you are NOT going to be
  144.      distributing.
  145.  
  146.  
  147.  
  148.      Proper REXX Programming Syntax:
  149.      ALL REXX functions in the software unless you are looking for a value
  150.      should be called with the CALL function NOT with the () method.
  151.  
  152.      i.e.
  153.      call AdeptChainRexx "c:\adept\Doors\AdeptVote.erx", line
  154.  
  155.      NOT - AdeptChainRexx("RexxCmdFile.Cmd", line)
  156.      
  157.      The call method is always preferred but sometimes the API set does not 
  158.      call for it.  Those functions must be set equal to some variable as they 
  159.      return a value to the calling Script. 
  160.    
  161.      The second one will usually work correctly but not always.  It is always
  162.      preferred to use the first method.
  163.  
  164.      
  165.      ________________________________
  166.      _ _ ADEPT REXX INTERFACE CALLS _
  167.      ________________________________
  168.  
  169.      Adept registers functions which can be called from the REXX 
  170.      interpreter.  These calls are used to interface a REXX script to 
  171.      number as the first argument to the function.  The REXX script should 
  172.      store that line number because it must be passed back to the 
  173.      AdeptREXX functions as the first parameter.
  174.  
  175.      Remember to Start every REXX script with /* <text if any> */ then on
  176.      the next line (or the one after) Do the following ..
  177.  
  178.          ARG Line
  179.          *OR*
  180.          ARG LineNumber
  181.  
  182.      Remember, if you use "Line", then all your REXX Function must have the
  183.      first parameter as "Line". If you use "LineNumber" then all your REXX
  184.      functions must have the first parameter as "LineNumber".  If you have
  185.      used ARG Line and in a function you have put "LineNumber" (where it's
  186.      supposed to be) then nothing will happen :), so you must remember to
  187.      always use the same argument that you started with.
  188.  
  189.          ** Example **
  190.  
  191.          You used ARG Line so all your Functions (AdeptPrint, AdeptCall,
  192.          AdeptInput, etc..) will have to be passed like so:
  193.  
  194.          call AdeptPrint Line,"String"
  195.  
  196.          and NOT
  197.  
  198.          call AdeptPrint LineNumber, "String"
  199.  
  200.      It is the same if you have the two reversed. So really, where ever you
  201.      see "LineNumber" in this file, you replace it with the argument you
  202.      stated at the beginning of the REXX script.
  203.      
  204.      Note:
  205.   
  206.      Strings:
  207.      Strings in REXX are denoted by the double quote mark.  Characters are 
  208.      marked by singe quotes. "String"  'A'
  209.     
  210.      Empty Parameters:
  211.      If the function you wish to use does not require all the parameters 
  212.      filled in, do not simply terminate the function call when you have put 
  213.      all the parameters in that you need.  Continue to complete the function 
  214.      definition with commas with no intervening spaces. 
  215.   
  216.            Example:
  217.   
  218.                 Call AdeptCall Linenumber,1,,'cmd.exe /c twar.bat'
  219.    
  220.            Notice that the flags field is empty and that there are no
  221.            intervening spaces.
  222.  
  223.      Debugging Scripts:
  224.      When your script has terminated abnormally you will notce an integer 
  225.      value in the Recent Events Screen.  To find out what the error was 
  226.      record that integer value down and open an OS/2 window and type 
  227.   
  228.            help rex(ReturnNumber)
  229.   
  230.      So if you have an error and the value in the Recent Events window is 
  231.      (-6), Open up an OS/2 window and type help rex6
  232.   
  233.   
  234.  
  235. FUNCTION LISTING
  236. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  237.  
  238.      AChatDeleteAll()
  239.  
  240.      FUNCTION USAGE
  241.  
  242.      ARGUMENTS
  243.  
  244.      RETURNED VALUE
  245.  
  246.      DESCRIPTION
  247.  
  248.      EXAMPLE
  249.  
  250.      RELATED FUNCTIONS
  251.  
  252. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  253.  
  254.      AChatGetMsg()
  255.  
  256.      FUNCTION USAGE
  257.  
  258.      ARGUMENTS
  259.  
  260.      RETURNED VALUE
  261.  
  262.      DESCRIPTION
  263.  
  264.      EXAMPLE
  265.  
  266.      RELATED FUNCTIONS
  267.  
  268. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  269.  
  270.      AChatSendMsg()
  271.  
  272.      FUNCTION USAGE
  273.  
  274.      ARGUMENTS
  275.  
  276.      RETURNED VALUE
  277.  
  278.      DESCRIPTION
  279.  
  280.      EXAMPLE
  281.  
  282.      RELATED FUNCTIONS
  283.  
  284. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  285.  
  286.      AChatUnavailable()
  287.  
  288.      FUNCTION USAGE
  289.  
  290.      ARGUMENTS
  291.  
  292.      RETURNED VALUE
  293.  
  294.      DESCRIPTION
  295.  
  296.      EXAMPLE
  297.  
  298.      RELATED FUNCTIONS
  299.  
  300. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  301.  
  302.      Adept16BitCRC()
  303.  
  304.      FUNCTION USAGE
  305.  
  306.      ARGUMENTS
  307.  
  308.      RETURNED VALUE
  309.  
  310.      DESCRIPTION
  311.  
  312.      EXAMPLE
  313.  
  314.      RELATED FUNCTIONS
  315.  
  316. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  317.  
  318.      Adept32BitCRC()
  319.  
  320.      FUNCTION USAGE
  321.  
  322.      ARGUMENTS
  323.  
  324.      RETURNED VALUE
  325.  
  326.      DESCRIPTION
  327.  
  328.      EXAMPLE
  329.  
  330.      RELATED FUNCTIONS
  331.  
  332. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  333.  
  334.      AdeptAddToXferList()
  335.  
  336.      FUNCTION USAGE
  337.        call AdeptAddToXferList LineNumber, Flags, Path, File1, ..., FileN
  338.  
  339.      ARGUMENTS
  340.        LineNumber: 
  341.        Node Number assed to REXX routine from Adept as first parameter. 
  342.      
  343.      RETURNED VALUE
  344.  
  345.      DESCRIPTION
  346.  
  347.      EXAMPLE
  348.  
  349.      RELATED FUNCTIONS
  350.  
  351. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  352.  
  353.      AdeptCall()
  354.  
  355.      FUNCTION USAGE
  356.        call AdeptCall LineNumber, Type, Flags, String1, ..., StringN
  357.        or
  358.        value = AdeptCall(LineNumber, Type, Flags, String1, ..., StringN)
  359.  
  360.      ARGUMENTS
  361.        LineNumber: 
  362.        Node Number passed to REXX routine from Adept as first parameter. 
  363.  
  364.        Type:
  365.        1   Same as menu item 801. Spawn a separate session. 
  366.            Strings are concatenated to form one string which is 
  367.            used as the spawn string. Can be used for a door 
  368.            program that accesses the com port in a more 
  369.            traditional (and complicated) fashion.
  370.            You can run DOS doors here also.
  371.        
  372.        Flags:
  373.        1   Start session in background.
  374.        2   Same as menu item 802. Run OS/2 type door.
  375.            (same as menu item 800 but assumes a program which is 
  376.            more friendly to having its I/O redirected thru pipes 
  377.            to the com port.)  Program must allow itself to be 
  378.            killed.
  379.            Flags:
  380.                  Not Used.
  381.        3   Same as menu item 800. Run OS/2 type door. Program must 
  382.            allow itself to be killed.
  383.            Flags:
  384.                  Not Used.
  385.            Flags:
  386.                  Only used for Type 1 call.  If flag is 1, then the program 
  387.                  is started in the background.
  388.  
  389.        String1..N:
  390.        Strings are added together to form one string which is used to spawn the
  391.        session.
  392.  
  393.      RETURNED VALUE
  394.        0      No Error
  395.  
  396.      DESCRIPTION
  397.        Runs an external program.  All sessions inherit Adepts environment.
  398.  
  399.      EXAMPLE
  400.        The following EXAMPLE would call the batch file twar.bat and run 
  401.        TradeWars in the Foreground.
  402.  
  403.        call AdeptCall Linenumber,1,,'cmd.exe /c twar.bat'
  404.  
  405.      RELATED FUNCTIONS
  406.          
  407. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  408.   
  409.      AdeptChainRexx()
  410.  
  411.      FUNCTION USAGE
  412.        call AdeptChainRexx "RexxScriptName", LineNumber
  413.        or
  414.        Value = AdeptChainRexx("RexxScriptName", LineNumber)
  415.  
  416.      ARGUMENTS
  417.        RexxScriptName:
  418.        Name and path of file you want to run.
  419.  
  420.        LineNumber: 
  421.        Node Number passed to REXX routine from Adept as first parameter. 
  422.  
  423.      RETURNED VALUE
  424.  
  425.      DESCRIPTION
  426.        Chains REXX files within REXX files.  Runs the rexx script in cached 
  427.        mode.
  428.  
  429.      EXAMPLE
  430.  
  431.      RELATED FUNCTIONS
  432.        AdeptChainRexxNc
  433.  
  434. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  435.  
  436.      AdeptChainRexxNc()
  437.  
  438.      FUNCTION USAGE
  439.        call AdeptChainRexxNc "RexxScriptName", LineNumber
  440.  
  441.      ARGUMENTS
  442.        RexxScriptName:
  443.        Name and path of file you want to run.
  444.  
  445.        LineNumber: 
  446.        Node Number passed to REXX routine from Adept as first parameter. 
  447.  
  448.      RETURNED VALUE
  449.  
  450.      DESCRIPTION       
  451.        Chains REXX files within REXX files.  Runs the rexx script in 
  452.        cached mode. (Notice: Once a script is cached by Adept into Memory   
  453.        will remain there until you shut down Adept.  So if you modify a
  454.        script, the changes will not take effect until you shutdown Adept.)
  455.  
  456.      EXAMPLE
  457.        The following would chain the REXX file Pager.ERX from another REXX script
  458.        and not cache the script into memory.
  459.  
  460.        Call AdeptChainRexxNc "D:\Adept\Batch\Pager.Erx",LineNumber
  461.   
  462.      RELATED FUNCTIONS
  463.        AdeptChainRexx()
  464.   
  465. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  466.   
  467.      AdeptChangeGroup()
  468.  
  469.      FUNCTION USAGE
  470.        call AdeptChangeGroup LineNumber, group_num
  471.        or
  472.        Value = AdeptChangeGroup(LineNumber, group_num)
  473.  
  474.      ARGUMENTS
  475.        LineNumber: 
  476.        Node Number passed to REXX routine from Adept as first parameter. 
  477.  
  478.        group_num:
  479.        Number that corresponds to the group level that you want to 
  480.        change the user to.
  481.  
  482.      RETURNED VALUE
  483.        0      Users group was not upgraded or group_num not found.
  484.  
  485.        1      Successful upgrade.
  486.  
  487.      DESCRIPTION
  488.        This works just like upgrading a users group in the local user editor.  
  489.        The user will take on the changes specified for the specific group that 
  490.        they have joined/are in.
  491.  
  492.      EXAMPLE
  493.        The following EXAMPLE will change the current user to group level 10.
  494.  
  495.        Call AdeptChangeGroup LineNumber, 10
  496.  
  497.      RELATED FUNCTIONS
  498.  
  499. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  500.  
  501.      AdeptCheckCard()
  502.  
  503.      FUNCTION USAGE
  504.  
  505.      ARGUMENTS
  506.  
  507.      RETURNED VALUE
  508.  
  509.      DESCRIPTION
  510.  
  511.      EXAMPLE
  512.  
  513.      RELATED FUNCTIONS
  514.  
  515. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  516.  
  517.      AdeptCheckBit()
  518.  
  519.      FUNCTION USAGE
  520.        call AdeptCheckBit Linenumber, BitNumber, Numeric Long
  521.        or
  522.        Value = AdeptCheckBit(Linenumber, BitNumber, Numeric Long)
  523.  
  524.      ARGUMENTS
  525.        LineNumber: 
  526.        Node Number passed to REXX routine from Adept as first parameter. 
  527.  
  528.        BitNumber:
  529.        Numeric Long
  530.  
  531.      RETURNED VALUE
  532.        1      Bit is set
  533.        0      Bit is not set
  534.      
  535.      DESCRIPTION
  536.        This can be used to test if a users bit is turned on for any of 
  537.        the LONG bitmap'd flags.
  538.  
  539.      EXAMPLE
  540.        The following EXAMPLE will check to see if the current user has
  541.        bit number 10 turned on.  If so, it will print "Flag 10 is on!"
  542.        If the bit is not set, it will not print anything.
  543.  
  544.        UserFlag = AdeptGetVar(LineNumber, 42) /* 42 - User Flags */
  545.        IsOn = AdeptCheckBit(LineNumber, 10, UserFlag)
  546.        if IsOn = '1' then
  547.           call AdeptPrint LineNumber, "Flag 10 is on!\r\n"
  548.  
  549.      RELATED FUNCTIONS
  550.  
  551. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  552.  
  553.      AdeptCheckForMail()
  554.  
  555.      FUNCTION USAGE
  556.  
  557.      ARGUMENTS
  558.  
  559.      RETURNED VALUE
  560.  
  561.      DESCRIPTION
  562.  
  563.      EXAMPLE
  564.  
  565.      RELATED FUNCTIONS
  566.  
  567. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  568.  
  569.      AdeptClearXferList()
  570.      
  571.      FUNCTION USAGE
  572.        call AdeptClearXferList LineNumber, Flags, Path, File1, ..., FileN
  573.  
  574.      ARGUMENTS
  575.        LineNumber: 
  576.        Node Number passed to REXX routine from Adept as first parameter. 
  577.  
  578.      RETURNED VALUE
  579.  
  580.      DESCRIPTION
  581.      
  582.      EXAMPLE
  583.  
  584.      RELATED FUNCTIONS
  585.  
  586. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  587.  
  588.      AdeptCls()
  589.  
  590.      FUNCTION USAGE
  591.        call AdeptCls LineNumber
  592.        or
  593.        Value = AdeptCls(LineNumber)
  594.  
  595.      ARGUMENTS
  596.        LineNumber: 
  597.        Node Number passed to REXX routine from Adept as first parameter. 
  598.  
  599.      RETURNED VALUE
  600.  
  601.      DESCRIPTION
  602.        Clears local and remote screen.
  603.  
  604.      EXAMPLE
  605.        The following EXAMPLE will clear the screen
  606.  
  607.        call AdeptCls LineNumber
  608.  
  609.      RELATED FUNCTIONS
  610.  
  611. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  612.  
  613.      AdeptComFlush()
  614.  
  615.      FUNCTION USAGE
  616.        call AdeptComFlush LineNumber
  617.        
  618.      ARGUMENTS
  619.        LineNumber: 
  620.        Node Number passed to REXX routine from Adept as first parameter. 
  621.  
  622.      RETURNED VALUE
  623.  
  624.      DESCRIPTION
  625.        AdeptComFlush will flush the output stream of the current com 
  626.        port.
  627.        ** BE CAREFUL **
  628.        This is a RAW com function.  This is only to be used by
  629.        professionals or people experienced with programming serial based
  630.        products.
  631.  
  632.      EXAMPLE
  633.  
  634.        call AdeptComFlush LineNumber
  635.  
  636.      RELATED FUNCTIONS
  637.  
  638. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  639.  
  640.      AdeptComPutC()
  641.  
  642.      FUNCTION USAGE
  643.  
  644.      ARGUMENTS
  645.  
  646.      RETURNED VALUE
  647.  
  648.      DESCRIPTION
  649.  
  650.      EXAMPLE
  651.  
  652.      RELATED FUNCTIONS
  653.  
  654. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  655.  
  656.      AdeptComWrite()
  657.  
  658.      FUNCTION USAGE
  659.        call AdeptComWrite LineNumber, "string"
  660.        or
  661.        Value = AdeptComWrite(LineNumber, "string")
  662.  
  663.      ARGUMENTS
  664.        LineNumber: 
  665.        Node Number passed to REXX routine from Adept as first parameter. 
  666.        
  667.        String:
  668.        A string enclosed in quotes.
  669.  
  670.      RETURNED VALUE
  671.  
  672.      DESCRIPTION
  673.        AdeptComWrite will place a string into the com ports output 
  674.        stream.  This is a raw com function.  It will return -1 for 
  675.        carrier drop.
  676.        ** BE CAREFUL **
  677.        This is a RAW com function.  This is only to be used by   
  678.        professionals or people experienced with programming serial based
  679.        products.
  680.  
  681.      EXAMPLE
  682.        The following EXAMPLE would be used to Display "Hello!" to the output 
  683.        stream, if the carrier is dropped, it would signal NoCarrier and the 
  684.        script would be terminated.
  685.  
  686.        rc = AdeptComWrite(LineNumber,"Hello!")
  687.        if rc = '-1' then signal NoCarrier
  688.           NoCarrier:
  689.        End
  690.  
  691.      RELATED FUNCTIONS
  692.  
  693. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  694.  
  695.      AdeptConvert()
  696.  
  697.      FUNCTION USAGE
  698.        Value = AdeptConvert(LineNumber, String)
  699.  
  700.      ARGUMENTS
  701.        LineNumber: 
  702.        Node Number passed to REXX routine from Adept as first parameter. 
  703.  
  704.        String:
  705.        String which contains META variables which need to be converted.
  706.  
  707.      RETURNED VALUE
  708.        Converted string.
  709.  
  710.      DESCRIPTION
  711.        Converts META variables passed in String.
  712.  
  713.      EXAMPLE
  714.        The following EXAMPLE will convert the Meta variable {F5 to dred. 
  715.        {F5 is the Meta var for the color dark red. So where ever you use
  716.        dred it will put it in Dark Red since there are some Functions 
  717.        that do not support Meta Codes (NOT just color, ALL Meta Codes)
  718.  
  719.        dred=AdeptConvert(LineNumber,'{F5')
  720.  
  721.      RELATED FUNCTIONS
  722.  
  723. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  724.  
  725.      AdeptComDial()
  726.  
  727.      FUNCTION USAGE
  728.        call AdeptComDial LineNumber, "STRING TO DIAL"
  729.  
  730.      ARGUMENTS
  731.        LineNumber: 
  732.        Node Number passed to REXX routine from Adept as first parameter. 
  733.  
  734.        String to Dial:
  735.        A string enclosed in quotes that you want to be sent to the modem.
  736.  
  737.      RETURNED VALUE
  738.  
  739.      DESCRIPTION
  740.        AdeptComDial will parse a string to the modem through the dialing
  741.        translation.  I.E. "v~^ATDT555-1212|" will be translated to
  742.        LOWER DTR, PAUSE FOR A SECOND, RAISE DTR, SEND 'ATDT555-1212' then
  743.        a CR (Carriage Return to the modem'.
  744.  
  745.      EXAMPLE
  746.        The following EXAMPLE will dial the number 555-1212
  747.  
  748.        Call AdeptComDail LineNumber,"v~^~ATDT555-1212|"
  749.   
  750.      RELATED FUNCTIONS
  751.  
  752. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  753.  
  754.      AdeptComDoDTR()
  755.  
  756.      FUNCTION USAGE
  757.        call AdeptComDoDTR LineNumber, `0' or `1'
  758.  
  759.      ARGUMENTS 
  760.        LineNumber: 
  761.        Node Number passed to REXX routine from Adept as first parameter. 
  762.  
  763.        Type:
  764.        0 - Drop DTR (Will leave it dropped)
  765.        1 - Raise DTR (Will Leave it raised)
  766.  
  767.      RETURNED VALUE
  768.  
  769.      DESCRIPTION
  770.        The AdeptComDoDTR function will raise or drop DTR to the node specified
  771.        with the LineNumber parameter.
  772.  
  773.      EXAMPLE
  774.        This EXAMPLE will drop the DTR.
  775.  
  776.        call AdeptComDoDTR LineNumber,'1'
  777.  
  778.      RELATED FUNCTIONS
  779.  
  780. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  781.  
  782.      AdeptComGetBlock()
  783.  
  784.      FUNCTION USAGE
  785.  
  786.      ARGUMENTS
  787.  
  788.      RETURNED VALUE
  789.  
  790.      DESCRIPTION
  791.  
  792.      EXAMPLE
  793.  
  794.      RELATED FUNCTIONS
  795.  
  796. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  797.  
  798.      AdeptComGetByte()
  799.  
  800.      FUNCTION USAGE
  801.  
  802.      ARGUMENTS
  803.  
  804.      RETURNED VALUE
  805.  
  806.      DESCRIPTION
  807.  
  808.      EXAMPLE
  809.  
  810.      RELATED FUNCTIONS
  811.  
  812. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  813.  
  814.      AdeptComGetString()
  815.  
  816.      FUNCTION USAGE
  817.  
  818.      ARGUMENTS
  819.  
  820.      RETURNED VALUE
  821.  
  822.      DESCRIPTION
  823.  
  824.      EXAMPLE
  825.  
  826.      RELATED FUNCTIONS
  827.  
  828. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  829.  
  830.      AdeptComPeekByte()
  831.  
  832.      FUNCTION USAGE
  833.  
  834.      ARGUMENTS
  835.  
  836.      RETURNED VALUE
  837.  
  838.      DESCRIPTION
  839.  
  840.      EXAMPLE
  841.  
  842.      RELATED FUNCTIONS
  843.  
  844. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  845.  
  846.      AdeptComPutC()
  847.  
  848.      FUNCTION USAGE
  849.  
  850.      ARGUMENTS
  851.  
  852.      RETURNED VALUE
  853.  
  854.      DESCRIPTION
  855.  
  856.      EXAMPLE
  857.  
  858.      RELATED FUNCTIONS
  859.  
  860. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  861.  
  862.      AdeptCurPos()
  863.  
  864.      FUNCTION USAGE
  865.  
  866.      ARGUMENTS
  867.  
  868.      RETURNED VALUE
  869.  
  870.      DESCRIPTION
  871.  
  872.      EXAMPLE
  873.  
  874.      RELATED FUNCTIONS
  875.  
  876. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  877.  
  878.      AdeptDropGlobalVar()
  879.  
  880.      FUNCTION USAGE
  881.        RetCode = AdeptDropGlobalVar('VarName')
  882.  
  883.      ARGUMENTS
  884.  
  885.      RETURNED VALUE
  886.  
  887.      DESCRIPTION
  888.        AdeptDropGlobalVar will free the memory space occupied by VarName, 
  889.        where VarName is a Global Variable made by AdeptSetGlobalVar.
  890.   
  891.      EXAMPLE
  892.        
  893.        AdeptDropGlobalVar('VarName')
  894.    
  895.      RELATED FUNCTIONS
  896.        AdeptSetGlobalVar()
  897.  
  898. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  899.  
  900.      AdeptFile()
  901.  
  902.      FUNCTION USAGE
  903.        call AdeptFile LineNumber, Type, StartAt, KeyName
  904.          
  905.      ARGUMENTS
  906.        LineNumber: 
  907.        Node Number passed to REXX routine from Adept as first parameter. 
  908.  
  909.        Type:
  910.        1     Returns name of current file area.
  911.        2     Returns number of current file area.
  912.        3     Find file area (number of area to find in StartAt)
  913.              Returns file area number
  914.        4     Find file area (name of area to find in KeyName)
  915.              Returns name of current file area.
  916.        5     Go to next file area
  917.              Returns name of current file area.
  918.        6     Go to previous file area
  919.              Returns name of current file area.
  920.        7     Returns download path of current file area.
  921.        8     Returns upload path of current file area.
  922.  
  923.        StartAt:
  924.        Number of area to look for. (see type 3)
  925.  
  926.        Keyname:
  927.        Name of area to look for. (see type 4)
  928.  
  929.      RETURNED VALUE
  930.  
  931.      DESCRIPTION
  932.        File area manipulation
  933.  
  934.      EXAMPLE
  935.        Call AdeptFile LineNumber,4,,"AdeptSoft" /* This would find the File
  936.                                                    area "AdeptSoft" as
  937.                                                    listed in File_Areas */
  938.        Call AdeptFile LineNumber,5,,""          /* Goto next area       */
  939.        Call AdeptFile LineNumber,6,,""          /* Goto previous area   */
  940.       
  941.      RELATED FUNCTIONS
  942.  
  943. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  944.  
  945.      AdeptGetGlobalVar()
  946.  
  947.      FUNCTION USAGE
  948.        RetCode = AdeptGetGlobalVar('VarName')
  949.  
  950.      ARGUMENTS
  951.  
  952.      RETURNED VALUE
  953.  
  954.      DESCRIPTION
  955.        AdeptGetGlobalVar will pull a variable's value out of memory. 
  956.   
  957.      EXAMPLE  
  958.          RetCode = AdeptGetGlobalVar('Games')
  959.   
  960.      RELATED FUNCTIONS
  961.  
  962. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  963.  
  964.      AdeptGetUser()
  965.  
  966.      FUNCTION USAGE
  967.  
  968.      ARGUMENTS
  969.  
  970.      RETURNED VALUE
  971.  
  972.      DESCRIPTION
  973.  
  974.      EXAMPLE
  975.  
  976.      RELATED FUNCTIONS
  977.  
  978. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  979.  
  980.      AdeptGetUserVar()
  981.  
  982.      FUNCTION USAGE
  983.  
  984.      ARGUMENTS
  985.  
  986.      RETURNED VALUE
  987.  
  988.      DESCRIPTION
  989.  
  990.      EXAMPLE
  991.  
  992.      RELATED FUNCTIONS
  993.  
  994. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  995.  
  996.      AdeptGetVar and AdeptPutVar()
  997.  
  998.      FUNCTION USAGE
  999.        Value = AdeptGetVar(LineNumber, varnumber)
  1000.        or
  1001.        Value = AdeptPutVar(LineNumber, varnumber, Data)
  1002.  
  1003.      ARGUMENTS
  1004.        LineNumber: 
  1005.        Node Number passed to REXX routine from Adept as first parameter. 
  1006.  
  1007.        varnumber:
  1008.        Variable number from the list below.
  1009.  
  1010.        Data:
  1011.        Data that you want to replace in varnumber.
  1012.  
  1013.      RETURNED VALUE
  1014.  
  1015.      DESCRIPTION
  1016.        This function duplicates some of the functions already in the
  1017.        AdeptREXX language.  This returns almost every single variable 
  1018.        Adept uses in the BBS software.  This will give a REXX programmer 
  1019.        total control over all of the BBS's users and mailers memory 
  1020.        variables.
  1021.        There will also be some new variables added that will be blank.
  1022.        These variables will be usable in real time across nodes by 
  1023.        multiple REXX programs running at the same time.  The 
  1024.        possibilities of such a setup are limitless.
  1025.  
  1026.        The following are the variable numbers:
  1027.  
  1028.          User Info:
  1029.             1 - Users Name
  1030.             2 - Users Handle
  1031.             3 - Users Address
  1032.             4 - Users Address1
  1033.             5 - Users Address2
  1034.             6 - Users City
  1035.             7 - Users State
  1036.             8 - Users Zipcode
  1037.             9 - Users Home Phone
  1038.             10 - Users Data Phone
  1039.             11 - Users Fax Phone
  1040.             12 - Users Business Phone
  1041.             13 - Users Interests
  1042.             14 - Sysop Comment about User
  1043.             15 - Users Bank Time
  1044.             16 - Users Computer Type (Number)
  1045.             17 - Users User ID
  1046.             18 - Users Point ID
  1047.             19 - Users BirthYear
  1048.             20 - Users BirthMonth
  1049.             21 - Users BirthDay
  1050.             22 - Users Gender (Represented by 1 letter)
  1051.             23 - Users NetMail Credit
  1052.             25 - The Group the User belongs to
  1053.             27 - Time Used Today
  1054.             28 - Time Per Day
  1055.             29 - Time Per Call
  1056.             30 - Number of calls the user has made
  1057.             31 - Upload Number
  1058.             32 - Download Number
  1059.             33 - Uploads in K
  1060.             34 - Downloads in K
  1061.             35 - Upload K today
  1062.             36 - Download K today
  1063.             37 - Upload K per day (Max Allowed)
  1064.             38 - Download K per day (Max Allowed)
  1065.             39 - Number of posts (Total)
  1066.             40 - Security Level #1
  1067.             41 - Security Level #2
  1068.             42 - Flags represented as a 32-bit long
  1069.             43 - Flags2 Represented as a 32-bit long
  1070.             44 - User Attributes represented as a 32-bit long
  1071.             45 - User Attributes #2 represented as a 32-bit long
  1072.             46 - Users Screen Length
  1073.             47 - Users Screen width
  1074.             48 - Last Message Area number user was in
  1075.             49 - Last File Area Number user was in
  1076.             50 - Last Protocol Chosen (Returns the letter for the protocol)
  1077.             51 - Last Archiver Chosen Returns Archive Letter
  1078.             53 - Percentage of Upload/Download ratio to consider the user a
  1079.                  leech
  1080.             54 - Maximum Bank time allowed for this user
  1081.             55 - Password Represented as a 32-bit long (32-bit CRC)
  1082.             56 - Password reversed represented as a 32-bit long (32-bit 
  1083.                  CRC)
  1084.             57 - Max Messages to pack into a mail packet.
  1085.             58 - Users Age
  1086.             59 - User Bad Password Attempts
  1087.             60 - MailStatus (I forget how we use this at the moment)
  1088.             61 - Number of lines shown to the remote user since last reset
  1089.                  (clear screen or new screen shown, etc).  This is 
  1090.                  calculated by the display subsystem and should always be 
  1091.                  correct.
  1092.                  This variable takes everything from ANSI and Avatar cursor
  1093.                  movement into account, to number of actual lines 
  1094.                  displayed.
  1095.             62 - Did the user pick non-stop display after the last more
  1096.                  prompt or non-stop display choice.
  1097.          BBS Info:
  1098.             100 - Number of Calls to the BBS
  1099.             101 - Last User ID Assigned by the BBS
  1100.             102 - Last Point ID Assigned by the BBS
  1101.             103 - Minimum Age Required to Log on
  1102.             104 - Maximum Age Allows on the BBS
  1103.             105 - Amount of NetMail Credit the user has
  1104.             106 - Expire Users after x amount of days
  1105.             107 - Expire Users after x amount of minutes
  1106.             108 - Default User Time Per Day
  1107.             109 - Default User Security Level #1
  1108.             110 - Default User Security Level #2
  1109.             111 - BBS User Default Flags #1 returned as a 32-bit long
  1110.             112 - BBS User Default Flags #2 returned as a 32-bit long
  1111.             113 - Default Upload K per day max
  1112.             114 - Maximum download k per day
  1113.             115 - BBS User Default Attribs returned as a 32-bit long
  1114.             116 - BBS User Default Attribs #2 returned as 32-bit long
  1115.             117 - The default group the user belongs to.  The user will      
  1116.                   inherit the default settings for this group. 0 for none.
  1117.             118 - Maximum Users to allow in the user file
  1118.             119 - Default Origin Line for EchoMail Areas
  1119.             120 - Maximum Password Attempts Allowed
  1120.             125 - Default Cost to send a NetMail message
  1121.             126 - Line number the BBS is on in the quote file
  1122.             127 - Default Maximum Time Per Call
  1123.             128 - I don't remember I will have to check this one
  1124.             129 - Odds of getting a quote when called
  1125.             130 - Mailer Incoming Password Protected Mail Path
  1126.             131 - Mailer OkFile for Password Protected Nodes
  1127.             132 - Mailer Incoming Public Mail Path
  1128.             133 - Mailer OkFile for Public Mail
  1129.             134 - Mailer Unlisted Node Mail Path
  1130.             135 - Mailer OkFile for Unlisted Nodes
  1131.             136 - Number of times a user can page the sysop
  1132.             137 - The BBS's Name
  1133.             138 - BBS UAttribs 32-bit long
  1134.             139 - BBS UAttribs #2 32-bit long
  1135.             140 - Sysops Name
  1136.             141 - Is The Sysop In (0 or 1)
  1137.             142 - Default Max Messages in Packet
  1138.             143 - City/State info for BBS & .QWK Packet
  1139.             144 - .QWK BBS ID
  1140.             145 - BBS .QWK Phone Number
  1141.             146 - Default Max Bank Time
  1142.          Modem/Mailer Info:
  1143.             200 - Modem Handle
  1144.             201 - Node Number
  1145.             202 - Port Name (COM1, \PIPE\ADEPT1, etc)
  1146.             203 - Modem Init String
  1147.             204 - Default Dialing Prefix
  1148.             205 - Default Dialing Suffix
  1149.             206 - Optional Dialing Prefix #1
  1150.             207 - Optional Dialing Suffix #1
  1151.             208 - Optional Dialing Prefix #2
  1152.             209 - Optional Dialing Suffix #2
  1153.             210 - Optional Dialing Prefix #3
  1154.             211 - Optional Dialing Suffix #3
  1155.             212 - Optional Dialing Prefix #4
  1156.             213 - Optional Dialing Suffix #4
  1157.             214 - Optional Dialing Prefix #5
  1158.             215 - Optional Dialing Suffix #5
  1159.             216 - Optional Dialing Prefix #6
  1160.             217 - Optional Dialing Suffix #6
  1161.             218 - Optional Dialing Prefix #7
  1162.             219 - Optional Dialing Suffix #7
  1163.             220 - Optional Dialing Prefix #8
  1164.             221 - Optional Dialing Suffix #8
  1165.             222 - Modem Answer String
  1166.             223 - Obsolete
  1167.             224 - Obsolete
  1168.             225 - Mail Only Event Text
  1169.             226 - Text if User is too slow
  1170.             228 - Baud Rate to Init Modem at
  1171.             229 - Minimum Baud rate Allowed on BBS
  1172.             230 - Minimum Incoming Baud Rate for Mail
  1173.             231 - Minimum Baud Rate to Call Out for Mail
  1174.             232 - Maximum Baud Rate for Outbound Mail
  1175.             233 - Current Baud Rate of Modem
  1176.             234 - Minimum Cost of Mail for This Event (Dialout)
  1177.             235 - Maximum Cost of Mail for This Event (Dialout)
  1178.             236 - Maximum Mail in K to send in a mail session
  1179.             237 - Maximum Time Limit for a mail session
  1180.             239 - Maximum Bad Mail Calls before no more are made
  1181.             240 - Maximum Times to call a node to send mail
  1182.             241 - If Port Locked (0 / 1)
  1183.             242 - Allow Human Callers or Users on the BBS? (0/1)
  1184.             243 - Allow File Requests (0/1)
  1185.             244 - Accept File Request (0/1)
  1186.             245 - Dialing Out OK?
  1187.             246 - OK To Answer the Phone?
  1188.             248 - Force FTS-0001 Mail Sessions (0/1)
  1189.             249 - Receive Mail From Unlisted Nodes? (0/1)
  1190.             250 - Send Mail to Unlisted Nodes? (0/1)
  1191.             251 - Was the last incoming call to the BBS or Mail 
  1192.                   (1 for BBS, 0 for mailer)
  1193.             252 - Sealink Overdrive Off (0/1) 1 = off
  1194.             253 - Sealink Mail On/Off (1 = on)
  1195.             254 - 1k Sealink On/Off (1 = off)
  1196.             255 - Allow DietINFA (1 = on (TBBS & XBBS use dietINFA))
  1197.             256 - In Chat with Sysop (0/1)
  1198.             257 - Debug Transfers (0/1) Extra Log Info
  1199.             258 - Allow Hydra Mail Transfers (0/1) (Currently Disabled)
  1200.             259 - Allow ZedZip for Mail Transfers (0/1)
  1201.             260 - Allow ZedZap for Mail Transfer (0/1)
  1202.             261 - Turn the mailer off? (0/1) 1 = off
  1203.             262 - Key to represent Yes (Y) for USA
  1204.             263 - Key to represent No (N) for USA
  1205.             264 - Key to represent Stop (S) for USA
  1206.             264 - Key to represent Pause (P) for USA
  1207.             264 - Key to represent Quit (Q) for USA
  1208.             268 - Maximum # of resyncs to abort transfers
  1209.             269 - Maximum # of transfer errors to abort on
  1210.             270 - Last Users on this lines name
  1211.             271 - Last Mailer to call this node
  1212.             272 - Last Long Entry Written
  1213.             276 - Check Carrier Detect (0/1) 1 = on
  1214.             277 - Video Display Handle
  1215.             278 - Number of ring to wait for answer on this node
  1216.  
  1217.      EXAMPLE        
  1218.        The following would come out like "Welcome to AdeptSoft! You are welcomed
  1219.        by Julie Strietelmeier". (Except AdeptSoft would be your BBS name and
  1220.        Julie Strietelmeier would be your name.
  1221.  
  1222.        BBSname=AdeptGetVar(LineNumber,137)
  1223.        SYSOPname=AdeptGetVar(LineNumber,140)
  1224.  
  1225.        AdeptPrint(line,"\r\nWelcome to " BBSname "! You are welcomed by "
  1226.        SYSOPname)
  1227.  
  1228.      RELATED FUNCTIONS
  1229.  
  1230. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1231.  
  1232.      AdeptHitReturn()
  1233.  
  1234.      FUNCTION USAGE
  1235.        call AdeptHitReturn LineNumber
  1236.  
  1237.      ARGUMENTS
  1238.        LineNumber: 
  1239.        Node Number passed to REXX routine from Adept as first parameter. 
  1240.         
  1241.      RETURNED VALUE
  1242.  
  1243.      DESCRIPTION         
  1244.        AdeptHitReturn will wait for the user to press enter.  This will
  1245.        use the Press Enter to continue in the English.Text or other
  1246.        language file.
  1247.  
  1248.      EXAMPLE
  1249.        The following would prompt the user to press Enter (return) to continue.
  1250.  
  1251.        call AdeptHitReturn LineNumber
  1252.  
  1253.      RELATED FUNCTIONS
  1254.  
  1255. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1256.          
  1257.      AdeptInKey()
  1258.  
  1259.      FUNCTION USAGE
  1260.        call AdeptInKey LineNumber
  1261.        or
  1262.        Value = AdeptInKey(LineNumber)
  1263.  
  1264.      ARGUMENTS
  1265.        LineNumber: 
  1266.        Node Number passed to REXX routine from Adept as first parameter. 
  1267.  
  1268.      RETURNED VALUE
  1269.  
  1270.      DESCRIPTION
  1271.        AdeptInKey will return the ASCII code for a incoming key sequence.
  1272.        AdeptInKey will not wait for a key, it will return 0 if there are 
  1273.        no keys waiting.  If you use this in a loop, please offset the 
  1274.        amount of CPU time a loop uses with a AdeptSleep command.
  1275.  
  1276.      EXAMPLE
  1277.  
  1278.        ReturnCode = AdeptInKey(LineNumber)
  1279.  
  1280.      RELATED FUNCTIONS
  1281.  
  1282. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1283.  
  1284.      AdeptInput()
  1285.    
  1286.      FUNCTION USAGE
  1287.        Value = AdeptInput(LineNumber, MinLen, MaxLen, Type, Flags, 
  1288.        Prompt, Help, HelpFile, Default)
  1289.  
  1290.      ARGUMENTS
  1291.        LineNumber:
  1292.        Node number passed to REXX routine from Adept as first parameter.
  1293.        
  1294.        MinLen:
  1295.        Minimum length of input string.
  1296.  
  1297.        MaxLen:
  1298.        Maximum length of input string.
  1299.  
  1300.        Type:
  1301.        Type of input (will define later)
  1302.  
  1303.        Flags:
  1304.        <undefined>
  1305.  
  1306.        Prompt:
  1307.        Prompt to display when asking for input.
  1308.  
  1309.        Help:
  1310.        Name of subject to look for in HelpFile when user asks for help.
  1311.  
  1312.        HelpFile:
  1313.        Contains help on subjects pertaining to this input prompt.
  1314.  
  1315.        Default:
  1316.        Default keystroke.
  1317.  
  1318.      RETURNED VALUE
  1319.  
  1320.      DESCRIPTION
  1321.        Get a string from the user.
  1322.  
  1323.      EXAMPLE
  1324.        The following would ask the User for his or her name with a MinLen of 1
  1325.        Character and a MaxLen of 50 Characters, with a prompt of "What
  1326.        is your Name". When this is printed, it will print to the local
  1327.        and remote screen "Your Name is Jean-Ray" (Jean-Ray being the
  1328.        name entered).
  1329.  
  1330.        answer=AdeptInput(LineNumber,1,50,,,'What Is your Name : ',,,       
  1331.        call AdeptPrint LineNumber,'\r\n Your name is' answer
  1332.  
  1333.      RELATED FUNCTIONS
  1334.  
  1335. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1336.  
  1337.      AdeptKillRexxThread()
  1338.  
  1339.      FUNCTION USAGE
  1340.        AdeptKillRexxThread(TID)
  1341.  
  1342.      ARGUMENTS
  1343.        TID:
  1344.        Thread ID
  1345.  
  1346.      RETURNED VALUE
  1347.        0      No error
  1348.        0>     Error
  1349.  
  1350.      DESCRIPTION
  1351.        Terminates the rexx thread with the ID "TID".
  1352.  
  1353.      EXAMPLE
  1354.  
  1355.      RELATED FUNCTIONS
  1356.  
  1357. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1358.  
  1359.      AdeptLibrary()
  1360.  
  1361.      FUNCTION USAGE
  1362.        call AdeptLibraryLineNumber, Type, StartAt, KeyName
  1363.  
  1364.      ARGUMENTS
  1365.        LineNumber:
  1366.        Node number passed to REXX routine from Adept as first parameter.
  1367.        
  1368.        Type:
  1369.        1     Returns name of current library area.
  1370.        2     Returns number of current library area.
  1371.        3     Find library area (number of area to find in StartAt)
  1372.              Returns library area number
  1373.        4     Find library area (name of area to find in KeyName)
  1374.              Returns name of current library area.
  1375.        5     Go to next library area
  1376.              Returns name of current library area.
  1377.        6     Go to previous library area
  1378.              Returns name of current library area.
  1379.        7     Returns path of current library area.
  1380.  
  1381.        StartAt:
  1382.        Number of area to look for. (see type 3)
  1383.  
  1384.        Keyname:
  1385.        Name of area to look for. (see type 4)
  1386.          
  1387.      RETURNED VALUE
  1388.  
  1389.      DESCRIPTION
  1390.        Library area manipulation.
  1391.        ** NOTE: The Adept Library Functions are not yet finished.
  1392.  
  1393.      EXAMPLE
  1394.  
  1395.      RELATED FUNCTIONS
  1396.  
  1397. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1398.  
  1399.      AdeptLocation()
  1400.  
  1401.      FUNCTION USAGE
  1402.        call AdeptLocation LineNumber, "User Location on the BBS"
  1403.        or
  1404.        Value = AdeptLocation(LineNumber, "User Location on the BBS")
  1405.  
  1406.      ARGUMENTS
  1407.  
  1408.      RETURNED VALUE
  1409.  
  1410.      DESCRIPTION
  1411.        Will display where the User is on the BBS (Sysop defined)
  1412.  
  1413.        ** NOTE: Remember, Once the script ends, the location will go back  
  1414.        to what it was before the function was executed. This function
  1415.        however is great for Doors and Chat Mode with the Sysop if you 
  1416.        use a Main.Cmd or a .Cmd file for your Door Menu. It can let 
  1417.        other users know what Door the other node(s) are in if any.
  1418.  
  1419.      EXAMPLE
  1420.        This would display the user on that particular line in a Door of
  1421.        Barren Realms Elite.
  1422.  
  1423.        call AdeptLocation LineNumber,"In Door - Barren Realms Elite"
  1424.  
  1425.      RELATED FUNCTIONS
  1426.  
  1427. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1428.  
  1429.      AdeptLog()
  1430.          
  1431.      FUNCTION USAGE
  1432.        call AdeptLog LineNumber, Flags, String1, ..., StringN
  1433.        or
  1434.        Value = AdeptLog(LineNumber, Flags, String1, ..., StringN)
  1435.  
  1436.      ARGUMENTS
  1437.        LineNumber:
  1438.        Node number passed to REXX routine from Adept as first parameter.
  1439.  
  1440.        Flags:
  1441.        1    Output to log only
  1442.        2    Output to listbox only
  1443.        3    Output to log and listbox
  1444.  
  1445.        String1..N:                                                                            
  1446.        Strings are added together to form one string which is used to
  1447.        spawn the session.
  1448.  
  1449.      RETURNED VALUE
  1450.  
  1451.      DESCRIPTION
  1452.        Log an action to the logfile and/or listbox.
  1453.  
  1454.      EXAMPLE
  1455.        Call AdeptLog LineNumber,2, "Mylog"
  1456.        Call AdeptLog LineNumber,1,1, "MainMenu Started"
  1457.  
  1458.      RELATED FUNCTIONS
  1459.  
  1460. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1461.  
  1462.      AdeptMenu()
  1463.  
  1464.      FUNCTION USAGE
  1465.        call AdeptMenu LineNumber, Flags, MenuName
  1466.        or
  1467.        Value = AdeptMenu(LineNumber, Flags, MenuName)
  1468.  
  1469.      ARGUMENTS
  1470.        LineNumber:
  1471.        Node number passed to REXX routine from Adept as first parameter.
  1472.  
  1473.        Flags:
  1474.        1    Return after user chooses a command from the menu.
  1475.        2    Return after executing all commands contained in menu.
  1476.  
  1477.        MenuName:
  1478.        File name of the menu to use.
  1479.  
  1480.      RETURNED VALUE
  1481.  
  1482.      DESCRIPTION
  1483.        Executes a menu contain in the file MenuName.
  1484.  
  1485.      EXAMPLE
  1486.  
  1487.        Call AdeptMenu LineNumber,2, "Test.Menu"
  1488.        Call AdeptMenu(LineNumber,0, "Message.Menu")
  1489.  
  1490.      RELATED FUNCTIONS
  1491.  
  1492. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1493.  
  1494.      AdeptMenuType()
  1495.  
  1496.      FUNCTION USAGE
  1497.        call AdeptMenuType LineNumber, menutype, menudata
  1498.        or
  1499.        Value = AdeptMenuType(LineNumber, menutype, menudata)
  1500.  
  1501.      ARGUMENTS
  1502.  
  1503.      RETURNED VALUE
  1504.  
  1505.      DESCRIPTION
  1506.        This function let's you use one of Adept's menu types in a rexx
  1507.        script.  See the ADPXBBS.DOC file for more info on menu types.
  1508.        When using menutype 10, put quotes around the file name.
  1509.  
  1510.        ** NOTE ** Menu types below menu type 10 are now allowed for this
  1511.        function.  Only 10 and above are legal.
  1512.  
  1513.      EXAMPLE
  1514.        This command allows you to execute a menu options 10 - 998.  Just
  1515.        pass the standard menudata.
  1516.  
  1517.        Call AdeptMenuType LineNumber,42,,,0  /* This would display The 
  1518.                                               Users online at the current 
  1519.                                               time. */
  1520.        Call AdeptMenuType LineNumber,900,""  /* Your Mailbox */
  1521.        Call AdeptMenuType LineNumber,15,""   /* New mail read */
  1522.        Call AdeptMenuType LineNumber,16,,""  /* Quickscan messages */
  1523.        Call AdeptMenuType LineNumber,78,""   /* List files in area */
  1524.        Call AdeptMenuType LineNumber,76,""   /* KeyWord Search */
  1525.        Call AdeptMenuType LineNumber,74,""   /* New files */
  1526.        Call AdeptMenuType LineNumber,85,""   /* Download */
  1527.        Call AdeptMenuType LineNumber,90,""   /* Upload a file */
  1528.        Call AdeptMenuType LineNumber,146,""  /* Select Default Protocol */
  1529.  
  1530.      RELATED FUNCTIONS
  1531.                   
  1532. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1533.  
  1534.      AdeptMessage()
  1535.  
  1536.      FUNCTION USAGE
  1537.        call AdeptMessage LineNumber, Type, StartAt, KeyName
  1538.   
  1539.      ARGUMENTS
  1540.        LineNumber:
  1541.        Node number passed to REXX routine from Adept as first parameter.
  1542.  
  1543.        Type:
  1544.        1     Returns name of current message area.
  1545.        2     Returns number of current message area.
  1546.        3     Find message area (number of area to find in StartAt)
  1547.              Returns message area number
  1548.        4     Find message area (name of area to find in KeyName)
  1549.              Returns name of current message area.
  1550.        5     Go to next message area
  1551.              Returns name of current message area.
  1552.        6     Go to previous message area
  1553.              Returns name of current message area.
  1554.        7     Returns number of messages in current message area.
  1555.        8     Lists available message areas to user.
  1556.        9     Sets the first message area, in the message area list, 
  1557.              that user is currently 'looking at' 
  1558.              (the user is not necessarily in the area)
  1559.              The name of the area is returned if one is available,
  1560.              otherwise '-1' is returned.
  1561.              This function type is useful when listing message areas.
  1562.              This function type should be called before using type 10.
  1563.        10    Sets the next message area, in the message area list, 
  1564.              that user is currently 'looking at'. It is the next area
  1565.              based on the current area the user is 'looking at'.
  1566.              (the user is not necessarily in the area)
  1567.              The name of the area is returned if one is available,
  1568.              otherwise '-1' is returned.
  1569.              This function type is useful when listing message areas.
  1570.              You must call AdeptMessage() with the type 9 before using
  1571.              this function, or results will be undefined!
  1572.        11    Sets the previous message area, in the message area list, 
  1573.              that user is currently 'looking at'. It is the previous 
  1574.              area based on the current area the user is 'looking at'.
  1575.              (the user is not necessarily in the area)
  1576.              The name of the area is returned if one is available,
  1577.              otherwise '-1' is returned.
  1578.              This function type is useful when listing message areas.
  1579.              You must call AdeptMessage() with the type 9 before using
  1580.              this function, or results will be undefined!
  1581.        12    Sets the next message area, in the message area list, 
  1582.              that user is currently 'looking at'. It is the next area
  1583.              based on the current area the user is in.
  1584.              The name of the area is returned if one is available,
  1585.              otherwise '-1' is returned.
  1586.        13    Sets the previous message area, in the message area list, 
  1587.              that user is currently 'looking at'. It is the previous 
  1588.              area based on the current area the user is in.
  1589.              The name of the area is returned if one is available,
  1590.              otherwise '-1' is returned.
  1591.  
  1592.        StartAt:
  1593.        Number of area to look for. (see type 3)
  1594.  
  1595.        Keyname:
  1596.        Name of area to look for. (see type 4)
  1597.  
  1598.      RETURNED VALUE
  1599.        Depends on the type used.
  1600.  
  1601.      DESCRIPTION
  1602.        Message area manipulation.
  1603.        Note: Types 5 and 6 have pecularities.  Do not use the Call method
  1604.        on them
  1605.  
  1606.      EXAMPLE
  1607.        Would find message area Number 1 as listed in the
  1608.        Adept\System\Message_Areas file.
  1609.  
  1610.        call AdeptMessage LineNumber,3,'1',
  1611.                
  1612.        AdeptMessage(LineNumber,5,,"")       /* Goto next area */
  1613.        AdeptMessage(LineNumber,6,,"")       /* Goto previous area */
  1614.   
  1615.      RELATED FUNCTIONS
  1616.  
  1617. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1618.  
  1619.      AdeptMore()
  1620.  
  1621.      FUNCTION USAGE
  1622.        call AdeptMore LineNumber
  1623.  
  1624.      ARGUMENTS
  1625.        LineNumber:
  1626.        Node number passed to REXX routine from Adept as first parameter.
  1627.  
  1628.      RETURNED VALUE
  1629.  
  1630.      DESCRIPTION         
  1631.        AdeptMore will execute a standard more prompt.  This will use the
  1632.        More prompt in the English.Text or other language file.  This will
  1633.        also use the International Y/N/Q/A info.
  1634.  
  1635.      EXAMPLE
  1636.        Call AdeptMore LineNumber
  1637.   
  1638.      RELATED FUNCTIONS   
  1639.  
  1640. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1641.  
  1642.      AdeptNextUser()
  1643.  
  1644.      FUNCTION USAGE
  1645.  
  1646.      ARGUMENTS
  1647.  
  1648.      RETURNED VALUE
  1649.  
  1650.      DESCRIPTION
  1651.  
  1652.      EXAMPLE
  1653.  
  1654.      RELATED FUNCTIONS
  1655.  
  1656. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1657.  
  1658.      AdeptPause()
  1659.  
  1660.      FUNCTION USAGE
  1661.        call AdeptPause LineNumber
  1662.        or      
  1663.        Value = AdeptPause(LineNumber)
  1664.  
  1665.      ARGUMENTS
  1666.        LineNumber:
  1667.        Node number passed to REXX routine from Adept as first parameter.
  1668.  
  1669.      RETURN VALUE
  1670.  
  1671.      DESCRIPTION
  1672.        AdeptPause will wait for any key.  This does not display any text.
  1673.  
  1674.      EXAMPLE
  1675.        Will wait for any key to be pressed on current node.
  1676.  
  1677.        call AdeptPause LineNumber
  1678.  
  1679.      RELATED FUNCTIONS
  1680.  
  1681. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1682.  
  1683.      AdeptPeekByte()
  1684.  
  1685.      FUNCTION USAGE
  1686.        call AdeptPeekByteLineNumber, length
  1687.        or
  1688.        Value = AdeptPeekByte(LineNumber, length)
  1689.  
  1690.      ARGUMENTS
  1691.        LineNumber:
  1692.        Node number passed to REXX routine from Adept as first parameter.
  1693.  
  1694.        Length:
  1695.        Time to wait for the next char to enter the data stream. Milliseconds.
  1696.  
  1697.      RETURNED VALUE
  1698.        The software will return TIMEOUT or LOSTCARRIER.
  1699.  
  1700.      DESCRIPTION
  1701.        Will place the next char in the incoming stream that is waiting.
  1702.        It will NOT remove it from the incoming data stream.
  1703.        (This is a RAW comm function).
  1704.  
  1705.      EXAMPLE
  1706.        Will Wait 6 seconds for the next char to enter the data stream.
  1707.  
  1708.        call AdeptPeekByte LineNumber,6000
  1709.  
  1710.      RELATED FUNCTIONS
  1711.  
  1712. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1713.  
  1714.      AdeptPlayMM()
  1715.  
  1716.      FUNCTION USAGE
  1717.  
  1718.      ARGUMENTS
  1719.  
  1720.      RETURNED VALUE
  1721.  
  1722.      DESCRIPTION
  1723.  
  1724.      EXAMPLE
  1725.  
  1726.      RELATED FUNCTIONS
  1727.  
  1728. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1729.      AdeptPostTextMessage()
  1730.  
  1731.      FUNCTION USAGE
  1732.        call AdeptPostTestMessage LineNumber,AreaNum,To,From,
  1733.               Subject,File,IsPrivate
  1734.  
  1735.      ARGUMENTS
  1736.        LineNumber:
  1737.        Node number passed to REXX routine from Adept as first parameter.
  1738.  
  1739.        AreaNum:
  1740.        Message area number to post the message in.
  1741.  
  1742.        To:
  1743.        Name of the person to whom the message should go to.
  1744.  
  1745.        From:
  1746.        Name of the person that the message is from.
  1747.  
  1748.        Subject:
  1749.        The subject for the message.
  1750.  
  1751.        File:
  1752.        Name of the text file to use as the message.
  1753.  
  1754.      RETURNED VALUE
  1755.        There's no return code
  1756.  
  1757.      DESCRIPTION
  1758.        Post a message using a text file as the message.
  1759.        IsPrivate may be ommited. If so, the msg is assumed public. All other
  1760.        parameters are manadtory. node maybe 0 if the rexx prog. isn't running
  1761.        in a particular node (ie. a global script).
  1762.  
  1763.  
  1764.      EXAMPLE
  1765.  
  1766.      RELATED FUNCTIONS
  1767.  
  1768. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1769.  
  1770.      AdeptPrevUser()
  1771.  
  1772.      FUNCTION USAGE
  1773.  
  1774.      ARGUMENTS
  1775.  
  1776.      RETURNED VALUE
  1777.  
  1778.      DESCRIPTION
  1779.  
  1780.      EXAMPLE
  1781.  
  1782.      RELATED FUNCTIONS
  1783.  
  1784. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1785.  
  1786.      AdeptPrint()
  1787.  
  1788.      FUNCTION USAGE
  1789.        call AdeptPrint LineNumber, String1, ..., StringN
  1790.  
  1791.      ARGUMENTS
  1792.        LineNumber:
  1793.        Node number passed to REXX routine from Adept as first parameter.
  1794.  
  1795.        String1..N:
  1796.        Strings are printed in the order that they were passed.
  1797.  
  1798.      RETURNED VALUE
  1799.  
  1800.      DESCRIPTION        
  1801.        Prints a string to the local and remote screen. The string may
  1802.        contain Adept META variables.  You may pass more than one or more
  1803.        strings to this function.
  1804.  
  1805.      EXAMPLE
  1806.        This Would print "Hello! Welcome to The BBS" to the User online.
  1807.  
  1808.        call AdeptPrint LineNumber,"Hello! Welcome to The BBS"
  1809.  
  1810.      RELATED FUNCTIONS
  1811.        AdeptPrintL
  1812.  
  1813. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1814.  
  1815.      AdeptPrintL()
  1816.  
  1817.      FUNCTION USAGE
  1818.        call AdeptPrintL LineNumber, String1, ..., StringN
  1819.  
  1820.      ARGUMENTS
  1821.        LineNumber:
  1822.        Node number passed to REXX routine from Adept as first parameter.
  1823.  
  1824.        String1..N:
  1825.        Strings are printed in the order that they were passed.
  1826.  
  1827.      RETURNED VALUE
  1828.  
  1829.      DESCRIPTION
  1830.        AdeptPrintL works exactly like AdeptPrint except it prints to the
  1831.        LOCAL screen only.
  1832.  
  1833.      EXAMPLE
  1834.  
  1835.      RELATED FUNCTIONS
  1836.        AdeptPrint
  1837.  
  1838. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1839.  
  1840.      AdeptPutC()
  1841.  
  1842.      FUNCTION USAGE
  1843.        call AdeptPutC LineNumber, char
  1844.        or
  1845.        Value = AdeptPutC(LineNumber, char)
  1846.          
  1847.      ARGUMENTS
  1848.        LineNumber:
  1849.        Node number passed to REXX routine from Adept as first parameter.
  1850.  
  1851.        Char:
  1852.  
  1853.  
  1854.      RETURNED VALUE
  1855.  
  1856.      DESCRIPTION
  1857.        AdeptPutC will put a char into the Com port output stream.  This 
  1858.        is a raw com function.  It will return -1 for carrier drop.
  1859.  
  1860.        ** BE CAREFUL**
  1861.  
  1862.        This is a RAW com function.  This is only to be used by
  1863.        professionals or people experienced with programming serial based
  1864.        products.
  1865.  
  1866.      EXAMPLE
  1867.        This would put the letter 'A' in the Com Port's output stream.
  1868.  
  1869.        call AdeptPutC LineNumber,'A'
  1870.  
  1871.      RELATED FUNCTIONS
  1872.  
  1873. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1874.  
  1875.      AdeptPutKey()
  1876.      
  1877.      FUNCTION USAGE
  1878.        call AdeptPutKey LineNumber, char
  1879.        or
  1880.        Value = AdeptPutKey(LineNumber, char)
  1881.  
  1882.      ARGUMENTS
  1883.        LineNumber:
  1884.        Node number passed to REXX routine from Adept as first parameter.
  1885.  
  1886.        Char:
  1887.  
  1888.  
  1889.      RETURNED VALUE
  1890.  
  1891.      DESCRIPTION
  1892.        AdeptPutKey will place a character into keyboard input stream.  
  1893.        Char can be a character i.e. 'A' or a ASCII character code.
  1894.  
  1895.      EXAMPLE
  1896.        Will put the Character 'A' in the Keyboard's input stream.
  1897.  
  1898.        call AdeptPutKey LineNumber,'A'
  1899.  
  1900.      RELATED FUNCTIONS
  1901.  
  1902. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1903.  
  1904.      AdeptPutUserVar()
  1905.  
  1906.      FUNCTION USAGE
  1907.  
  1908.      ARGUMENTS
  1909.  
  1910.      RETURNED VALUE
  1911.  
  1912.      DESCRIPTION
  1913.  
  1914.      EXAMPLE
  1915.  
  1916.      RELATED FUNCTIONS
  1917.  
  1918. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1919.  
  1920.      AdeptRawComClose()
  1921.  
  1922.      FUNCTION USAGE
  1923.  
  1924.      ARGUMENTS
  1925.  
  1926.      RETURNED VALUE
  1927.  
  1928.      DESCRIPTION
  1929.  
  1930.      EXAMPLE
  1931.  
  1932.      RELATED FUNCTIONS
  1933.  
  1934. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1935.  
  1936.      AdeptRawComGetBlock()
  1937.  
  1938.      FUNCTION USAGE
  1939.  
  1940.      ARGUMENTS
  1941.  
  1942.      RETURNED VALUE
  1943.  
  1944.      DESCRIPTION
  1945.  
  1946.      EXAMPLE
  1947.  
  1948.      RELATED FUNCTIONS
  1949.  
  1950. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1951.  
  1952.      AdeptRawComGetString()
  1953.  
  1954.      FUNCTION USAGE
  1955.  
  1956.      ARGUMENTS
  1957.  
  1958.      RETURNED VALUE
  1959.  
  1960.      DESCRIPTION
  1961.  
  1962.      EXAMPLE
  1963.  
  1964.      RELATED FUNCTIONS
  1965.  
  1966. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1967.  
  1968.      AdeptRawComLink()
  1969.  
  1970.      FUNCTION USAGE
  1971.  
  1972.      ARGUMENTS
  1973.  
  1974.      RETURNED VALUE
  1975.  
  1976.      DESCRIPTION
  1977.  
  1978.      EXAMPLE
  1979.  
  1980.      RELATED FUNCTIONS
  1981.  
  1982. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1983.  
  1984.      AdeptRawComOpen()
  1985.  
  1986.      FUNCTION USAGE
  1987.  
  1988.      ARGUMENTS
  1989.  
  1990.      RETURNED VALUE
  1991.  
  1992.      DESCRIPTION
  1993.  
  1994.      EXAMPLE
  1995.  
  1996.      RELATED FUNCTIONS
  1997.  
  1998. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1999.  
  2000.      AdeptRawComWrite()
  2001.  
  2002.      FUNCTION USAGE
  2003.  
  2004.      ARGUMENTS
  2005.  
  2006.      RETURNED VALUE
  2007.  
  2008.      DESCRIPTION
  2009.  
  2010.      EXAMPLE
  2011.  
  2012.      RELATED FUNCTIONS
  2013.  
  2014. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2015.  
  2016.      AdeptRawOpenSocket()
  2017.  
  2018.      FUNCTION USAGE
  2019.  
  2020.      ARGUMENTS
  2021.  
  2022.      RETURNED VALUE
  2023.  
  2024.      DESCRIPTION
  2025.  
  2026.      EXAMPLE
  2027.  
  2028.      RELATED FUNCTIONS
  2029.  
  2030. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2031.  
  2032.      AdeptRawSetBPS()
  2033.  
  2034.      FUNCTION USAGE
  2035.  
  2036.      ARGUMENTS
  2037.  
  2038.      RETURNED VALUE
  2039.  
  2040.      DESCRIPTION
  2041.  
  2042.      EXAMPLE
  2043.  
  2044.      RELATED FUNCTIONS
  2045.  
  2046. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2047.  
  2048.      AdeptRead()
  2049.  
  2050.      FUNCTION USAGE
  2051.        call AdeptRead LineNumber, Type, Flags, StartAt
  2052.        or
  2053.        Value = AdeptRead(LineNumber, Type, Flags, StartAt)
  2054.  
  2055.      ARGUMENTS
  2056.        LineNumber:
  2057.        Node number passed to REXX routine from Adept as first parameter.
  2058.  
  2059.        Type:
  2060.        1    Read messages in current area.
  2061.        2    Globally read messages.
  2062.  
  2063.        Flags:
  2064.        (for Type 1)
  2065.        1    Show only messages to user
  2066.        2    Show only messages from user
  2067.        8    Don't clear top of screen
  2068.        16   Read Reverse (default is forward)
  2069.        (for Type 2)
  2070.        1    Stop at all areas
  2071.        8    Don't clear top of screen
  2072.  
  2073.        StartAt:
  2074.        Number of message at which Adept should start reading.
  2075.        StartAt is not used with global message reading.
  2076.  
  2077.      RETURNED VALUE
  2078.        (for Type 1)
  2079.        Direction user is reading in. 1 = User is reading forward,
  2080.        -1 = user is reading backwards.
  2081.  
  2082.        (for Type 2)
  2083.        Returns 0
  2084.  
  2085.      DESCRIPTION
  2086.        Read messages.
  2087.        You should do a carrier check after this function to make sure
  2088.        the user is online.
  2089.  
  2090.      EXAMPLE
  2091.  
  2092.        Call AdeptRead LineNumber,2,,4   /* This would start the user
  2093.                                           currently online reading the
  2094.                                           messages globally starting from
  2095.                                           Message Area #4 (as defined in
  2096.                                           Adept\System\Message_Areas
  2097.                                           file). */
  2098.        Call AdeptRead line,1,,1         /* This will start reading messages
  2099.                                           in the current area */
  2100.  
  2101.      RELATED FUNCTIONS
  2102.       
  2103. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2104.  
  2105.      AdeptRecv()
  2106.  
  2107.      FUNCTION USAGE
  2108.        call AdeptRecv LineNumber, Flags, Path, Area, File1, ..., FileN
  2109.        or
  2110.        Value = AdeptRecv(LineNumber, Flags, Path, Area, File1, ..., FileN)
  2111.          
  2112.      ARGUMENTS
  2113.        LineNumber:
  2114.        Node number passed to REXX routine from Adept as first parameter.
  2115.  
  2116.        Flags:
  2117.        1    No time verification
  2118.        4    Silence
  2119.        8    Never be silent
  2120.        16   Don't ask for DESCRIPTION
  2121.        64   Don't credit upload (does not return files size)
  2122.        128  Accept as private file.
  2123.  
  2124.        Path:
  2125.        Path to put files in.
  2126.  
  2127.        Area:
  2128.        Name of area to put files in.
  2129.  
  2130.        File1..N:
  2131.        Names of files to be received.
  2132.  
  2133.      RETURNED VALUE
  2134.        String containing number of bytes downloaded, a space and the
  2135.        number of files downloaded.
  2136.  
  2137.      DESCRIPTION
  2138.        Upload files
  2139.         
  2140.        NOTE: This function will change in the future.
  2141.                                                                             
  2142.      EXAMPLE
  2143.        This will send the File Adept97b.Zip from the AdeptSoft area and
  2144.        the directory of D:\ADEPT
  2145.  
  2146.        call AdeptRecv line,128,'D:\ADEPT','AdeptSoft','Adept97b.Zip'
  2147.  
  2148.      RELATED FUNCTIONS
  2149.  
  2150. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2151.  
  2152.      AdeptSayGen()
  2153.  
  2154.      FUNCTION USAGE
  2155.        AdeptSayGen(LineNumber, String)
  2156.  
  2157.      ARGUMENTS
  2158.        LineNumber:
  2159.        Node number passed to REXX routine from Adept as first parameter.
  2160.  
  2161.        String:
  2162.        Status String.
  2163.  
  2164.      RETURNED VALUE
  2165.        0      No error
  2166.        0>     Error
  2167.  
  2168.      DESCRIPTION
  2169.        Sets the "user location" for the given node in the Adept 
  2170.        status windows.
  2171.  
  2172.      EXAMPLE
  2173.  
  2174.      RELATED FUNCTIONS
  2175.  
  2176. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2177.         
  2178.      AdeptSend()
  2179.  
  2180.      FUNCTION USAGE
  2181.        call AdeptSend LineNumber, Flags, Path, File1, ..., FileN
  2182.        call AdeptSent LineNumber,,,''@file''
  2183.        or
  2184.        Value = AdeptSend(LineNumber, Flags, Path, File1, ..., FileN)
  2185.        Value = AdeptSent(LineNumber,,,''@file'')
  2186.  
  2187.      ARGUMENTS
  2188.        LineNumber:
  2189.        Node number passed to REXX routine from Adept as first parameter.
  2190.  
  2191.        Flags:
  2192.        1    No time verification
  2193.        2    No leech checking
  2194.        4    Silence
  2195.        8    Never be silent
  2196.        16   Don't check all download paths
  2197.        64   Don't return files length (free file/bytes)
  2198.  
  2199.        Path:
  2200.        Path to files.  If blank, use current file area path.
  2201.  
  2202.        File1..N:
  2203.        Names of files to be sent.
  2204.        NOTE: Currently the files are sent one at a time.
  2205.  
  2206.        @File:
  2207.        Text file with the filenames and paths (one per line) of
  2208.        the files to send.
  2209.  
  2210.      RETURNED VALUE
  2211.        String containing number of bytes downloaded, a space and the
  2212.        number of files downloaded.
  2213.  
  2214.      DESCRIPTION
  2215.        Download Files.
  2216.         
  2217.      EXAMPLE
  2218.        Will send the File that is in the file called list.
  2219.        call AdeptSend LineNumber,,,'@c:\list')
  2220.  
  2221.      RELATED FUNCTIONS
  2222.        AdeptRecv
  2223.  
  2224. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2225.      AdeptSetBit()
  2226.  
  2227.      FUNCTION USAGE
  2228.        call AdeptSetBit LineNumber, BIT NUMBER, Numeric Long
  2229.        or
  2230.        Value = AdeptSetBit(LineNumber, BIT NUMBER, Numeric Long)
  2231.  
  2232.      ARGUMENTS
  2233.  
  2234.      RETURNED VALUE
  2235.  
  2236.      DESCRIPTION
  2237.        Will set BIT Number 1 - 32 to ON.
  2238.        The changes are not saved until you put the changes back into
  2239.        active memory with the AdeptPutVar option.
  2240.  
  2241.      EXAMPLE
  2242.        SetBit= AdeptGetVar(LineNumber,42)
  2243.        call AdeptSetBit LineNumber,30,SetBit
  2244.  
  2245.      RELATED FUNCTIONS
  2246.  
  2247. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2248.      AdeptSetGlobalVar()
  2249.  
  2250.      FUNCTION USAGE
  2251.        RetCode = AdeptSetGlobalVar('VarName', Value)
  2252.  
  2253.      ARGUMENTS
  2254.  
  2255.      RETURNED VALUE
  2256.  
  2257.      DESCRIPTION
  2258.        AdeptSetGlobalVar will set a global variable named VarName in
  2259.        memory with a value of VarValue.
  2260.   
  2261.      EXAMPLE
  2262.        Value = 6
  2263.        RetCode = AdeptSetGlobalVar('VarName', Value)
  2264.  
  2265.      RELATED FUNCTIONS
  2266.   
  2267. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2268.  
  2269.      AdeptSetTimer()
  2270.  
  2271.      FUNCTION USAGE
  2272.        call AdeptSetTimer LineNumber, Timer
  2273.        or
  2274.        Value = AdeptSetTimer(LineNumber, Timer)
  2275.  
  2276.      ARGUMENTS
  2277.        LineNumber:
  2278.        Node number passed to REXX routine from Adept as First Parameter.
  2279.   
  2280.        Timer: 
  2281.        Time In Milliseconds
  2282.  
  2283.      RETURNED VALUE
  2284.  
  2285.      DESCRIPTION
  2286.  
  2287.      EXAMPLE
  2288.        call AdeptSetTimer LineNumber,10000  /* 10 seconds */
  2289.  
  2290.      RELATED FUNCTIONS
  2291.  
  2292. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2293.  
  2294.      AdeptShow()
  2295.  
  2296.      FUNCTION USAGE
  2297.        call AdeptShow LineNumber, Type, Flags, StartAt, KeyName
  2298.  
  2299.      ARGUMENTS
  2300.        LineNumber:
  2301.        Node number passed to REXX routine from Adept as first parameter.
  2302.  
  2303.        Type:
  2304.        1     Show a text file (StartAt=filename, KeyName=keys to abort
  2305.              on)
  2306.        2     Page-read text file (Keyname=filename)
  2307.        3     Show new text files (Keyname=directory to look in)
  2308.        4     Show any text file (Keyname=directory to look in)
  2309.  
  2310.        Flags:
  2311.        <undefined> (for now)
  2312.  
  2313.        StartAt:
  2314.        (see type 1)
  2315.  
  2316.        KeyName:
  2317.        Keys on which to abort showing of the text file. (see type 1)
  2318.        -or-
  2319.        Name of file or directory to look for. (see types 2-4)
  2320.  
  2321.      RETURNED VALUE
  2322.  
  2323.      DESCRIPTION
  2324.        Display text files.
  2325.  
  2326.      EXAMPLE
  2327.        The following will display the Bullet.Ans file in the Adept\Text 
  2328.        directory and if the User presses the letter 'Q' it will abort 
  2329.        viewing of the file.
  2330.        call AdeptShow LineNumber,1,,'C:\Adept\Text\Bullet.Ans,Q
  2331.  
  2332.      RELATED FUNCTIONS
  2333.  
  2334. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2335.  
  2336.      AdeptSleep()
  2337.  
  2338.      FUNCTION USAGE         
  2339.        call AdeptSleep LineNumber, time_to_sleep_in_milliseconds
  2340.        or
  2341.        Value = AdeptSleep(LineNumber, time_to_sleep_in_milliseconds)
  2342.  
  2343.      ARGUMENTS
  2344.        LineNumber:
  2345.        Node number passed to REXX routine from Adept as first parameter.
  2346.  
  2347.        time_to_sleep_in_milliseconds:
  2348.        milliseconds = 1 second.
  2349.        The smallest timeslice OS/2 can sleep is 32ms.
  2350.  
  2351.      RETURNED VALUE
  2352.  
  2353.      DESCRIPTION
  2354.        AdeptSleep will cause the current node to sleep for x amount of
  2355.        milliseconds.  This is very helpful in making your REXX scripts 
  2356.        CPU friendly. When you use this command it will release the 
  2357.        current time slice to the next node or program waiting in line.  
  2358.        A decent sleep amount is AdeptSleep(65), 65 milliseconds, 1000 
  2359.            
  2360.      EXAMPLE
  2361.        call AdeptSleep LineNumber,1000    /* 1 Second   */
  2362.        call AdeptSleep LineNumber,10000   /* 10 Seconds */
  2363.        call AdeptSleep LineNumber,60000   /* 1 Minute   */
  2364.        call AdeptSleep LineNumber,600000  /* 10 Minutes */
  2365.  
  2366.      RELATED FUNCTIONS
  2367.  
  2368. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2369.  
  2370.      AdeptStartRexxThread()
  2371.  
  2372.      FUNCTION USAGE
  2373.        RetCode = AdeptStartRexxThread(FileName, [var1 var2 var3 var4])
  2374.  
  2375.      ARGUMENTS
  2376.        FileName:
  2377.        Name of AdeptREXX program to execute as a background thread.
  2378.  
  2379.        Var1:
  2380.        Variable to pass to the rexx program, you can pass as many variables 
  2381.        you want.  They are not shared once they are passed. 
  2382.  
  2383.      RETURNED VALUE
  2384.        Thread ID >0 if thread started
  2385.  
  2386.      DESCRIPTION
  2387.        This will cause the program Thread.Cmd to be run in the
  2388.        background with the rexx programming calling it as the parent.
  2389.        When the parent ends, all children and grandchildren are 
  2390.        killed with it.
  2391.  
  2392.      EXAMPLE
  2393.        rc = AdeptStartRexxThread('Thread.Cmd', line)
  2394.  
  2395.      RELATED FUNCTIONS
  2396.        AdeptKillRexxThread, AdeptSetGlobalVar, AdeptGetGlobalVar,
  2397.        AdeptDropGlobalVar
  2398.         
  2399. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2400.  
  2401.      AdeptTimedInKey()
  2402.  
  2403.      FUNCTION USAGE
  2404.        call AdeptTimedInKey LineNumber,timeout
  2405.        or
  2406.        Value = AdeptTimedInKey(LineNumber,timeout)
  2407.  
  2408.      ARGUMENTS
  2409.  
  2410.      RETURNED VALUE
  2411.        Value for key inputed.
  2412.        If no key is pressed with in the timeout value a -1 or 0 for timeout.
  2413.        If the Carrier is lost a value of -2 is returned.
  2414.        If the SysOp presses F3 on the local BBS Window -3 is returned.
  2415.        If the SysOp presses F4 on the local BBS Window -4 is returned.
  2416.    
  2417.      DESCRIPTION
  2418.        Returns the value for the key inputed, watched the port for a
  2419.        period of time in milliseconds.
  2420.  
  2421.      EXAMPLE
  2422.        KeyIn=AdeptTimedInKey(LineNumber,5000)    /* 5 seconds */
  2423.  
  2424.      RELATED FUNCTIONS
  2425.  
  2426. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2427.  
  2428.      AdeptTimeLeft()
  2429.  
  2430.      FUNCTION USAGE
  2431.        call AdeptTimeLeft LineNumber[, SecsLeftInSession]
  2432.        or
  2433.        Value = AdeptTimeLeft(LineNumber[, SecsLeftInSession])
  2434.  
  2435.      ARGUMENTS
  2436.        LineNumber:
  2437.        Node number passed to REXX routine from Adept as first parameter.
  2438.  
  2439.        SecsLeftInSession:
  2440.        Optional.  Set seconds left in current session.
  2441.      
  2442.      RETURNED VALUE
  2443.        Time left in session in seconds.
  2444.  
  2445.      DESCRIPTION
  2446.        Optionally sets time left in current session. Always returns time
  2447.        left in current session.
  2448.          
  2449.      EXAMPLE
  2450.        This will give the user online 1 minute left in his/her session.
  2451.        call AdeptTimeLeft LineNumber, 60000
  2452.          
  2453.      RELATED FUNCTIONS
  2454.        
  2455. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2456.  
  2457.      AdeptTimerUp()
  2458.  
  2459.      FUNCTION USAGE
  2460.        call AdeptTimerUp LineNumber, Timer
  2461.        or
  2462.        Value = AdeptTimerUp(LineNumber, Timer)
  2463.  
  2464.      ARGUMENTS
  2465.        LineNumber:
  2466.        Node number passed to REXX routine from Adept as first parameter.
  2467.  
  2468.        Timer:
  2469.        The return value of the AdeptSetTimer function.
  2470.  
  2471.      RETURNED VALUE
  2472.        0      Time is up
  2473.        1      Time is not up
  2474.  
  2475.      DESCRIPTION
  2476.        Checks to see if the timer is up.
  2477.  
  2478.      EXAMPLE
  2479.        The following example sets the timer to 10 seconds and then checks to
  2480.        see if the time is up.
  2481.  
  2482.        ** EXAMPLE with the TWO PREVIOUS rexx Functions **
  2483.        Timer=AdeptSetTimer(LineNumber,10000)  /* 10 Seconds */
  2484.        MyRet=AdeptTimerUp(LineNumber,timer)
  2485.  
  2486.      RELATED FUNCTIONS
  2487.        AdeptSetTimer
  2488.  
  2489. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2490.  
  2491.      AdeptUnsetBit()
  2492.  
  2493.      FUNCTION USAGE
  2494.        call AdeptUnsetBit LineNumber, BIT NUMBER, Numeric Long
  2495.        or
  2496.        Value = AdeptUnsetBit(LineNumber, BIT NUMBER, Numeric Long)
  2497.  
  2498.      ARGUMENTS
  2499.        LineNumber:
  2500.        Node number passed to REXX routine from Adept as first parameter.
  2501.  
  2502.        Bit Number:
  2503.  
  2504.        Numeric Long:
  2505.  
  2506.      RETURNED VALUE
  2507.  
  2508.      DESCRIPTION
  2509.        Will set BIT Number 1 - 32 to OFF.
  2510.        The changes are not saved until you put the changes back into 
  2511.        active memory with the AdeptPutVar option.
  2512.  
  2513.        ***NOTE : The changes are not saved until you put the changes back
  2514.        into active memory with the AdeptPutVar option.
  2515.  
  2516.      EXAMPLE
  2517.        The following example will turn bit number 30 OFF.
  2518.        call AdeptUnsetBit LineNumber, 30, SetBit
  2519.  
  2520.      RELATED FUNCTIONS
  2521.  
  2522. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2523.  
  2524.      AdeptComWaitConnect()
  2525.  
  2526.      FUNCTION USAGE
  2527.        call AdeptComWaitConnect LineNumber, Time
  2528.        or
  2529.        Value = AdeptComWaitConnect(LineNumber, Time)
  2530.  
  2531.      ARGUMENTS
  2532.        LineNumber:
  2533.        Node number passed to REXX routine from Adept as first parameter.
  2534.  
  2535.        Time:
  2536.        The time is in the format of milliseconds.
  2537.  
  2538.      RETURNED VALUE
  2539.        0      Time out.
  2540.        If it doesn't timeout it will then return the return code from the 
  2541.        modem i.e. 'CONNECT 28800' 'ERROR', 'OK', 'NO CARRIER'.
  2542.  
  2543.      DESCRIPTION
  2544.        AdeptComWaitConnect will wait for a modem connect or error code.  
  2545.  
  2546.      EXAMPLE
  2547.  
  2548.      RELATED FUNCTIONS
  2549. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2550.  
  2551.      AdeptWaitKey()
  2552.  
  2553.      FUNCTION USAGE
  2554.        call AdeptWaitKey LineNumber
  2555.        or
  2556.        Value = AdeptWaitKey(LineNumber)
  2557.  
  2558.      ARGUMENTS
  2559.        LineNumber:
  2560.        Node number passed to REXX routine from Adept as first parameter.
  2561.  
  2562.      RETURNED VALUE
  2563.        ASCII code for the key pressed.
  2564.  
  2565.      DESCRIPTION
  2566.        AdeptWaitKey will return the ASCII code for a incoming key 
  2567.        sequence. Unlike AdeptInKey, AdeptWaitKey will actually wait for 
  2568.        a key sequence. If the user times out, it will log the user off.
  2569.  
  2570.      EXAMPLE
  2571.        ReturnCode = AdeptInKey(LineNumber)
  2572.   
  2573.      RELATED FUNCTIONS
  2574.        AdeptInKey       
  2575.  
  2576. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2577.  
  2578.      AdeptWrite()
  2579.  
  2580.      FUNCTION USAGE
  2581.        call AdeptWrite LineNumber, Type, Flags, Filename
  2582.        or
  2583.        Value = AdeptWrite(LineNumber, Type, Flags, Filename)
  2584.  
  2585.      ARGUMENTS
  2586.        LineNumber:
  2587.        Node number passed to REXX routine from Adept as first parameter.
  2588.  
  2589.        Type:
  2590.        1    Write a message  (Filename is unused)
  2591.        2    edit a file using editor (Flags are unused)
  2592.  
  2593.        Flags:
  2594.        1    Force message to force-to-name of current message area.
  2595.        2    Force private
  2596.        4    Force public
  2597.        8    Use MSGTMP.LineNumber file
  2598.  
  2599.        Filename:
  2600.        Name of text file to edit.
  2601.  
  2602.      RETURNED VALUE
  2603.  
  2604.      DESCRIPTION
  2605.        Write a message.
  2606.  
  2607.      EXAMPLE
  2608.        call AdeptWrite LineNumber, 1, 4,""
  2609.  
  2610.        This would prompt a user to write a public message in the current area.
  2611.  
  2612.      RELATED FUNCTIONS
  2613.  
  2614. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2615.  
  2616.      AfSysAddFile()
  2617.      FUNCTION USAGE
  2618.      ARGUMENTS
  2619.      RETURNED VALUE
  2620.      DESCRIPTION
  2621.      EXAMPLE
  2622.      RELATED FUNCTIONS
  2623.  
  2624. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2625.  
  2626.      AfSysAddIndexEntries()
  2627.  
  2628.      FUNCTION USAGE
  2629.        retcode = AfSysAddIndexEntries(handle)
  2630.      
  2631.      ARGUMENTS
  2632.        handle:
  2633.        Handle returned by AfSysOpen
  2634.  
  2635.      RETURNED VALUE
  2636.        0      No errors.
  2637.        92     FSYS_ERROR_SEM_TIMEOUT
  2638.        200    FSYS_ERROR_ADDING_DATED
  2639.        201    FSYS_ERROR_ADDING_ANAME
  2640.        202    FSYS_ERROR_ADDING_NAME
  2641.  
  2642.      DESCRIPTION
  2643.        Saves the Index data for a file record. The index data should be
  2644.        set using the AfSysSetIndexXXXXX functions before saving.
  2645.  
  2646.      EXAMPLE
  2647.        This EXAMPLE deletes the old index entries for a file, set 
  2648.        the new index data, then adds in the new index entries.
  2649.  
  2650.        AFSysDeleteIndexEntries(hFSys)
  2651.        /* set new index data */
  2652.        AfSysGetFileName(fSysHandle, 'Buffer')
  2653.        AfSysSetIndexFilename(fSysHandle, Buffer)
  2654.        AfSysGetFileDate(fSysHandle, 'Date')
  2655.        AfSysSetIndexEntryDate(fSysHandle, Date.1, Date.2, Date.3)
  2656.        AreaNum = FSysGetFileArea(fSysHandle)
  2657.        AfSysSetIndexAreaNumber(fSysHandle, AreaNum)
  2658.        /* add in new index entries */
  2659.        AFSysAddIndexEntries(fSysHandle);
  2660.  
  2661.      RELATED FUNCTIONS
  2662.               
  2663. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2664.  
  2665.      AfSysClose()
  2666.  
  2667.      FUNCTION USAGE     
  2668.        RetCode = AfSysClose(fSysHandle)
  2669.  
  2670.      ARGUMENTS
  2671.        fSysHandle:
  2672.        Handle to the currently open file system.
  2673.  
  2674.      RETURNED VALUE
  2675.        0      No errors
  2676.  
  2677.      DESCRIPTION
  2678.        AfSysClose close the file system.
  2679.  
  2680.      EXAMPLE
  2681.        This EXAMPLE calls AfSysOpen and creates new file system 
  2682.        files, then closes the file system.
  2683.        
  2684.        RetCode = AfSysOpen('.\Files', 'fSysHandle', 'FALSE')
  2685.                  .
  2686.                  .
  2687.        // use the file system.
  2688.                  .
  2689.                  .
  2690.        RetCode = AfSysClose(fSysHandle)
  2691.  
  2692.      RELATED FUNCTIONS
  2693.  
  2694. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2695.  
  2696.      AfSysDelFile()
  2697.      FUNCTION USAGE
  2698.      ARGUMENTS
  2699.      RETURNED VALUE
  2700.      DESCRIPTION
  2701.      EXAMPLE
  2702.      RELATED FUNCTIONS
  2703.  
  2704. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2705.  
  2706.      AfSysDeleteIndexEntries()
  2707.  
  2708.      FUNCTION USAGE
  2709.        RetCode = AfSysDeleteIndexEntries(fSysHandle)
  2710.  
  2711.      ARGUMENTS
  2712.        fSysHandle:
  2713.        Input Handle to the currently open file system.
  2714.  
  2715.      RETURNED VALUE
  2716.        0      No errors.
  2717.        92     FSYS_ERROR_SEM_TIMEOUT
  2718.        190    FSYS_ERROR_DELETING_DATED
  2719.        191    FSYS_ERROR_DELETING_ANAME
  2720.        192    FSYS_ERROR_DELETING_NAME
  2721.  
  2722.      DESCRIPTION
  2723.        AfSysDeleteIndexEntries deletes a file from all of the indexes.
  2724.        AfSysDeleteIndexEntries deletes all references to a certain file in the 
  2725.        indexes. It does NOT remove that files record from the data file.  To set 
  2726.        which file you wish to delete, you must either search for, and find the 
  2727.        file using the searching functions or you must use the AfSysSetIndexXXXXX 
  2728.        series of functions to set the correct filename, date, area name and file 
  2729.        record offset.  Obviously it is best to search for the file, find it and 
  2730.        confirm it is the file you wish to delete before you delete it.
  2731.  
  2732.      EXAMPLE
  2733.        Assuming you have already set the file index information this example 
  2734.        calls AfSysDeleteIndexEntries to delete the file from the indexes.
  2735.  
  2736.        RetCode = AfSysDeleteIndexEntries(fSysHandle)
  2737.  
  2738.      RELATED FUNCTIONS
  2739.  
  2740. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2741.  
  2742.      AfSysFindExact()
  2743.  
  2744.      FUNCTION USAGE
  2745.        Value = AfSysFindExact(handle,Name,Area)
  2746.  
  2747.      ARGUMENTS
  2748.        handle:
  2749.        The handle returned by AfSysOpen
  2750.  
  2751.        Name:
  2752.        Exact file name
  2753.  
  2754.        Area:
  2755.        Area #
  2756.  
  2757.      RETURNED VALUE
  2758.        0      No errors
  2759.        0>     Error
  2760.  
  2761.      DESCRIPTION
  2762.        Loads the file record of the file whos name matches Name and is in the 
  2763.        area given by Area.
  2764.  
  2765.      EXAMPLE
  2766.  
  2767.      RELATED FUNCTIONS
  2768.  
  2769. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2770.  
  2771.      AfSysFindFirstName()
  2772.  
  2773.      FUNCTION USAGE
  2774.       RetCode = AfSysFindFirstName (handle, Search)
  2775.  
  2776.      ARGUMENTS
  2777.        handle:
  2778.        The handle returned by AfSysOpen
  2779.  
  2780.        Search:
  2781.        File name mask
  2782.  
  2783.      RETURNED VALUE
  2784.        0      No errors
  2785.        0>     Error
  2786.  
  2787.      DESCRIPTION
  2788.        Loads the first file record that has a name that will match the search 
  2789.        string. A string of ABC will find a file called ABCDEF.ZIP
  2790.  
  2791.      EXAMPLE
  2792.  
  2793.      RELATED FUNCTIONS
  2794.  
  2795. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2796.  
  2797.      AfSysFindList()
  2798.  
  2799.      FUNCTION USAGE
  2800.        call AfSysFindList(handle)
  2801.  
  2802.      ARGUMENTS
  2803.        handle:
  2804.        Handle returned by AfSysOpen
  2805.  
  2806.      RETURNED VALUE
  2807.        0      No errors
  2808.        >0     Error
  2809.  
  2810.      DESCRIPTION
  2811.        Loads in the next file record according to the criteria given
  2812.        in AfSysListFist.
  2813.        Note: AfSysListNext does not stop when it reaches the next file area!
  2814.        You must check for that yourself.
  2815.    
  2816.      EXAMPLE
  2817.  
  2818.      RELATED FUNCTIONS
  2819.  
  2820. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2821.  
  2822.      AfSysFindNextName()
  2823.  
  2824.      FUNCTION USAGE
  2825.        RetCode = AfSysFindNextName(handle)
  2826.  
  2827.      ARGUMENTS
  2828.        handle:
  2829.        Handle returned by AfSysOpen
  2830.  
  2831.      RETURNED VALUE
  2832.        0      No errors
  2833.        >0     Error
  2834.  
  2835.      DESCRIPTION
  2836.        Finds the Next file matching the name mask given in AfSysFindFistName.
  2837.  
  2838.      EXAMPLE
  2839.  
  2840.      RELATED FUNCTIONS
  2841.  
  2842. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2843.  
  2844.      AfSysFirstName()
  2845.  
  2846.      FUNCTION USAGE
  2847.        call AfSysFirstName(handle)
  2848.  
  2849.      ARGUMENTS
  2850.        handle:
  2851.        Handle returned by AfSysOpen
  2852.  
  2853.      RETURNED VALUE
  2854.        0      No errors
  2855.        >0     Error finding the file
  2856.  
  2857.      DESCRIPTION
  2858.        Loads the file record of the first file. The first file is the file 
  2859.        whose name is alphabetically first.
  2860.  
  2861.      EXAMPLE
  2862.  
  2863.      RELATED FUNCTIONS
  2864.  
  2865. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2866.  
  2867.      AfSysGetAge()
  2868.  
  2869.      FUNCTION USAGE
  2870.        RetCode = AfSysGetAge(handle)
  2871.  
  2872.      ARGUMENTS
  2873.        handle:
  2874.        Handle returned by AfSysOpen
  2875.  
  2876.      RETURNED VALUE
  2877.        Age
  2878.  
  2879.      DESCRIPTION
  2880.        Returns the age needed to DL the last "active File". 
  2881.        The active File is set by one of the AfSysFindXXX functions
  2882.  
  2883.      EXAMPLE
  2884.  
  2885.      RELATED FUNCTIONS
  2886.  
  2887. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2888.          
  2889.      AfSysGetCopyFile()
  2890.  
  2891.      FUNCTION USAGE
  2892.        call AfSysGetCopyFile(handle)
  2893.  
  2894.      ARGUMENTS
  2895.        handle:
  2896.        Handle returned by AfSysOpen
  2897.  
  2898.      RETURNED VALUE
  2899.        0      Don't copy
  2900.        1      Copy file to temporary directory
  2901.  
  2902.      DESCRIPTION
  2903.        Returns the copy status of the last "active File". 
  2904.        The active File is set by one of the AfSysFindXXX functions
  2905.  
  2906.      EXAMPLE
  2907.  
  2908.      RELATED FUNCTIONS
  2909.  
  2910. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2911.  
  2912.      AfSysGetDLAble()
  2913.  
  2914.      FUNCTION USAGE
  2915.        RetCode = AfSysGetDLAble(handle)
  2916.  
  2917.      ARGUMENTS
  2918.        handle:
  2919.        Handle returned by AfSysOpen
  2920.  
  2921.      RETURNED VALUE
  2922.        0      Can't be downloaded
  2923.        1      Can be downloaded
  2924.  
  2925.      DESCRIPTION
  2926.        Returns the download status of the last "active File". 
  2927.        The active File is set by one of the AfSysFindXXX functions
  2928.  
  2929.      EXAMPLE
  2930.  
  2931.      RELATED FUNCTIONS
  2932.  
  2933. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2934.  
  2935.      AfSysGetFileArea()
  2936.  
  2937.      FUNCTION USAGE
  2938.        RetCode = AfSysGetFileArea(handle)
  2939.  
  2940.      ARGUMENTS
  2941.        handle:
  2942.        Handle returned by AfSysOpen
  2943.  
  2944.      RETURNED VALUE
  2945.        File Area number
  2946.  
  2947.      DESCRIPTION
  2948.        Returns the Area Number of the last "active File". The active File
  2949.        is set by one of the AfSysFindXXX functions
  2950.  
  2951.      EXAMPLE
  2952.  
  2953.      RELATED FUNCTIONS
  2954.  
  2955. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2956.  
  2957.      AfSysGetFileAreaList()
  2958.      FUNCTION USAGE
  2959.      ARGUMENTS
  2960.      RETURNED VALUE
  2961.      DESCRIPTION
  2962.      EXAMPLE
  2963.      RELATED FUNCTIONS
  2964.  
  2965. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2966.  
  2967.      AfSysGetFileDate()
  2968.  
  2969.      FUNCTION USAGE
  2970.        RetCode = AfSysSetGetFileDate(handle, stem)
  2971.  
  2972.      ARGUMENTS
  2973.        handle:
  2974.        Handle returned by AfSysOpen
  2975.        stem:
  2976.        The name of the stem variable to receive the date
  2977.  
  2978.      RETURNED VALUE
  2979.        0      No errors
  2980.        0>     Error
  2981.        STEM.1 Year
  2982.        STEM.2 Month
  2983.        STEM.3 Day
  2984.  
  2985.      DESCRIPTION
  2986.        Returns the date for the current file record in the names stem varaible.
  2987.  
  2988.      EXAMPLE
  2989.  
  2990.      RELATED FUNCTIONS
  2991.  
  2992. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2993.  
  2994.      AfSysGetFileDate()
  2995.      FUNCTION USAGE
  2996.      ARGUMENTS
  2997.      RETURNED VALUE
  2998.      DESCRIPTION
  2999.      EXAMPLE
  3000.      RELATED FUNCTIONS
  3001.  
  3002. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3003.  
  3004.      AfSysGetFileDESCRIPTION()
  3005.  
  3006.      FUNCTION USAGE
  3007.        AfSysGetFileDESCRIPTION(handle,var)
  3008.  
  3009.      ARGUMENTS
  3010.        handle:
  3011.        Handle returned by AfSysOpen
  3012.  
  3013.        var:
  3014.        Name of REXX variable to put the description in
  3015.  
  3016.      RETURNED VALUE
  3017.        0      No errors
  3018.        0>     Error
  3019.  
  3020.      DESCRIPTION
  3021.        Copies the DESCRIPTION for the currect file record into the variable 
  3022.        named by var.
  3023.  
  3024.      EXAMPLE
  3025.  
  3026.      RELATED FUNCTIONS 
  3027.  
  3028. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3029.  
  3030.      AfSysGetFilename()
  3031.  
  3032.      FUNCTION USAGE
  3033.        RetCode = AfSysGetFilename (handle)
  3034.  
  3035.      ARGUMENTS
  3036.        handle:
  3037.        Handle returned by AfSysOpen
  3038.  
  3039.      RETURNED VALUE
  3040.        0      No name
  3041.        name
  3042.  
  3043.      DESCRIPTION
  3044.        Returns the file name for the current file record.
  3045.  
  3046.      EXAMPLE
  3047.  
  3048.      RELATED FUNCTIONS
  3049.  
  3050. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3051.  
  3052.      AfSysGetFileSize()
  3053.  
  3054.      FUNCTION USAGE
  3055.        RetCode = AfSysGetFileSize(fSysHandle)
  3056.  
  3057.      ARGUMENTS
  3058.        handle:
  3059.        Handle returned by AfSysOpen
  3060.  
  3061.      RETURNED VALUE
  3062.        File Length
  3063.  
  3064.      DESCRIPTION
  3065.        Returns the length of the last "active File". The active file is set 
  3066.        by one of the AfSysFindXXX functions.
  3067.  
  3068.      EXAMPLE
  3069.  
  3070.      RELATED FUNCTIONS
  3071.  
  3072. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3073.  
  3074.      AfSysGetFreeBytes()
  3075.  
  3076.      FUNCTION USAGE
  3077.        RetCode = AfSysGetFreeBytes(handle)
  3078.  
  3079.      ARGUMENTS
  3080.        handle:
  3081.        Handle returned by AfSysOpen
  3082.  
  3083.      RETURNED VALUE
  3084.        0      File isn't "free"
  3085.        1      File is "free" -- bypasses normal byte limits or ratios.
  3086.  
  3087.      DESCRIPTION
  3088.        Returns the free status of the last "active File".  The active File is 
  3089.        set by one of the AfSysFindXXX functions.
  3090.  
  3091.      EXAMPLE
  3092.  
  3093.      RELATED FUNCTIONS
  3094.  
  3095. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3096.  
  3097.      AfSysGetFreeFile()
  3098.  
  3099.      FUNCTION USAGE
  3100.        RetCode = AfSysGetFreeFile(handle)
  3101.  
  3102.      ARGUMENTS       
  3103.        handle:
  3104.        Handle returned by AfSysOpen
  3105.  
  3106.      RETURNED VALUE
  3107.        0      File isn't "free"
  3108.        1      File is "free" -- bypasses normal byte/time limits or ratios.
  3109.  
  3110.      DESCRIPTION
  3111.        Returns the free status of the last "active File".  The active File is 
  3112.        set by one of the AfSysFindXXX functions.
  3113.  
  3114.      EXAMPLE
  3115.  
  3116.      RELATED FUNCTIONS
  3117.  
  3118. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3119.  
  3120.      AfSysGetFreeTime()
  3121.  
  3122.      FUNCTION USAGE
  3123.        AfSysGetFreeTime(handle)
  3124.  
  3125.      ARGUMENTS
  3126.        handle:
  3127.        Handle returned by AfSysOpen
  3128.  
  3129.      RETURNED VALUE
  3130.        0      File isn't "free"
  3131.        1      File is "free" -- bypasses normal time limits.
  3132.  
  3133.      DESCRIPTION
  3134.        Returns the free status of the last "active File".  The active File is 
  3135.        set by one of the AfSysFindXXX functions.
  3136.  
  3137.      EXAMPLE
  3138.  
  3139.      RELATED FUNCTIONS
  3140.  
  3141. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3142.      
  3143.      AfSysGetListable()
  3144.  
  3145.      FUNCTION USAGE
  3146.        RetCode = AfSysGetListable(handle)
  3147.  
  3148.      ARGUMENTS
  3149.        handle:
  3150.        Handle returned by AfSysOpen
  3151.  
  3152.      RETURNED VALUE
  3153.        0      File can't be listed
  3154.        1      File can be listed
  3155.  
  3156.      DESCRIPTION
  3157.        Returns the listablility (new word maybe?:>) of the last "active File". 
  3158.        The active File is set by one of the AfSysFindXXX functions.
  3159.  
  3160.      EXAMPLE
  3161.  
  3162.      RELATED FUNCTIONS
  3163.  
  3164. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3165.  
  3166.      AfSysGetPassword()
  3167.      FUNCTION USAGE
  3168.      ARGUMENTS
  3169.      RETURNED VALUE
  3170.      DESCRIPTION
  3171.      EXAMPLE
  3172.      RELATED FUNCTIONS
  3173.  
  3174. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3175.  
  3176.      AfSysGetPathName()
  3177.  
  3178.      FUNCTION USAGE
  3179.        RetCode = AfSysGetPathName (handle)
  3180.  
  3181.      ARGUMENTS
  3182.        handle:
  3183.        Handle returned by AfSysOpen
  3184.  
  3185.      RETURNED VALUE
  3186.        Path to file
  3187.  
  3188.      DESCRIPTION
  3189.        Returns the file path in text format.
  3190.  
  3191.      EXAMPLE
  3192.  
  3193.      RELATED FUNCTIONS
  3194.  
  3195. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3196.  
  3197.      AfSysSetReadDescFlag()
  3198.  
  3199.      FUNCTION USAGE  
  3200.        RetCode = AfSysSetReadDescFlag (handle, BOOL)
  3201.  
  3202.      ARGUMENTS
  3203.        handle:
  3204.        Handle returned by AfSysOpen
  3205.  
  3206.        BOOL:
  3207.        "TRUE"/"FALSE"
  3208.  
  3209.      RETURNED VALUE
  3210.        0      No errors
  3211.        0>     Error
  3212.  
  3213.      DESCRIPTION
  3214.        Sets whether of not we want to read in the DESCRIPTION whenever we read
  3215.        in the file data record. By default the DESCRIPTION is always read in.
  3216.        You can change that with this function.
  3217.  
  3218.      EXAMPLE
  3219.  
  3220.      RELATED FUNCTIONS
  3221.  
  3222. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3223.  
  3224.      AfSysGetSecLevel()
  3225.  
  3226.      FUNCTION USAGE
  3227.        RetCode = AfSysGetSecLevel(handle)
  3228.  
  3229.      ARGUMENTS
  3230.        handle:
  3231.        Handle returned by AfSysOpen
  3232.  
  3233.      RETURNED VALUE
  3234.        Security level 
  3235.  
  3236.      DESCRIPTION
  3237.        Returns the security level needed to DL the last "active File". 
  3238.        The active File is set by one of the AfSysFindXXX functions
  3239.        This function maybe obsolete in the future.
  3240.  
  3241.      EXAMPLE
  3242.  
  3243.      RELATED FUNCTIONS
  3244.  
  3245. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3246.  
  3247.      AfSysGetTimesDL()
  3248.  
  3249.      FUNCTION USAGE
  3250.        RetCode = AfSysGetTimesDL(handle)
  3251.  
  3252.      ARGUMENTS
  3253.        handle:
  3254.        Handle returned by AfSysOpen
  3255.  
  3256.      RETURNED VALUE
  3257.        Times Downloaded
  3258.  
  3259.      DESCRIPTION
  3260.        Returns the # of times the last "active File" has been downloaded. 
  3261.        The active File is set by one of the AfSysFindXXX functions.
  3262.  
  3263.      EXAMPLE
  3264.  
  3265.      RELATED FUNCTIONS
  3266.  
  3267. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3268.  
  3269.      AfSysGetUploader()
  3270.  
  3271.      FUNCTION USAGE
  3272.        RetCode = AfSysGetUploader(handle)
  3273.  
  3274.      ARGUMENTS
  3275.        handle:
  3276.        Handle returned by AfSysOpen
  3277.  
  3278.      RETURNED VALUE
  3279.        name
  3280.  
  3281.      DESCRIPTION
  3282.        Returns the uploader for the current file record.
  3283.  
  3284.      EXAMPLE
  3285.  
  3286.      RELATED FUNCTIONS
  3287.  
  3288. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3289.  
  3290.      AfSysListFirst()
  3291.  
  3292.      FUNCTION USAGE
  3293.        AfSysListFirst(handle,Area, Flags, Date)
  3294.  
  3295.      ARGUMENTS
  3296.        handle:
  3297.        Handle returned by AfSysOpen
  3298.  
  3299.        Area:
  3300.        Area #
  3301.  
  3302.        Flags:
  3303.        FS_DATE , FS_REV or FS_DATE+FS_REV
  3304.  
  3305.        Date:
  3306.        Date in "time_t" format
  3307.  
  3308.      RETURNED VALUE
  3309.        0      No errors
  3310.        0>     Error
  3311.  
  3312.      DESCRIPTION
  3313.        Loads the file record for the first file matching the area # and List 
  3314.        criteria. FS_DATE and FS_REV are rexx variables set by adept when a 
  3315.        rexx prgoram starts.  Only files newer than Date will be shown.
  3316.  
  3317.      EXAMPLE
  3318.  
  3319.      RELATED FUNCTIONS
  3320.  
  3321. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3322.  
  3323.      AfSysMoveFile()
  3324.  
  3325.      FUNCTION USAGE
  3326.        RetCode = AfSysMoveFile(handle, areafrom, areato, FileName)
  3327.  
  3328.      ARGUMENTS
  3329.        handle:
  3330.        Filesystem handle returned from afsysopen
  3331.  
  3332.        areafrom:
  3333.        Source area #
  3334.  
  3335.        areato:
  3336.        Destination area #
  3337.  
  3338.        FileName:
  3339.        Name of File to move
  3340.  
  3341.      RETURNED VALUE
  3342.        0      No errors.
  3343.        -1     REXX killed by BBS or Carrier lost
  3344.  
  3345.      DESCRIPTION
  3346.        Moves the named file from areafrom to areato. The physical file 
  3347.        IS NOT moved only the file area info is moved.
  3348.  
  3349.      EXAMPLE
  3350.  
  3351.      RELATED FUNCTIONS
  3352.  
  3353. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3354.  
  3355.      AfSysOpen()
  3356.  
  3357.      FUNCTION USAGE
  3358.        RetCode = AfSysOpen(Directory, fSysHandle, Create)
  3359.  
  3360.      ARGUMENTS
  3361.        Directory:
  3362.        This is the directory that the files system is located in.  Normally a 
  3363.        program which uses the Adept file system is started in the '\Adept' 
  3364.        directory and the files system would then be in '.\Files' or more 
  3365.        simply, 'Files'.   The directory name should NOT end with a backslash 
  3366.        or forward slash.
  3367.  
  3368.        fSysHandle:
  3369.        The rexx variable which will have the handle placed in it.
  3370.  
  3371.        Create:
  3372.        Tells the file system whether to open the current file system files or 
  3373.        to create new ones.
  3374.          FALSE - Open current files.
  3375.          TRUE  - Create/Open new files.
  3376.        
  3377.        *WARNING* bool MUST be "FALSE" or the file base will be destroyed
  3378.  
  3379.      RETURNED VALUE
  3380.        0      No errors
  3381.        90     FSYS_ERROR_ALLOC_MEM
  3382.        91     FSYS_ERROR_INIT_BIDX
  3383.        100    FSYS_ERROR_OPEN_DATA
  3384.        101    FSYS_ERROR_OPEN_DESC
  3385.        102    FSYS_ERROR_OPEN_PATH
  3386.        103    FSYS_ERROR_OPEN_NIDX
  3387.        104    FSYS_ERROR_OPEN_DIDX
  3388.        105    FSYS_ERROR_OPEN_AIDX
  3389.        180    FSYS_ERROR_CREATING_KEY
  3390.  
  3391.      DESCRIPTION
  3392.        Opens the File system for access by other REXX file functions.
  3393.        A successful AfSysOpen request returns a handle to the file
  3394.        system. All other calls to the file system functions require 
  3395.        this handle.
  3396.        Note: When you choose to create a new file system, the indexes 
  3397.        are destroyed if they exist. All other files are opened and NOT 
  3398.        destroyed.  If you wish to create all files from scratch, make 
  3399.        sure there are no files in the directory.
  3400.   
  3401.        You could call AfSysOpen twice with a different directory to 
  3402.        open two different files system to copy entries from one file 
  3403.        system to another.
  3404.  
  3405.      EXAMPLE
  3406.        This EXAMPLE calls AfSysOpen and uses the current file system files.
  3407.  
  3408.        RetCode = FSysOpen('.\Files', 'fSysHandle', 'FALSE')
  3409.  
  3410.      RELATED FUNCTIONS
  3411.  
  3412. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3413.  
  3414.      AfSysReadDESCRIPTIONLine()
  3415.  
  3416.      FUNCTION USAGE
  3417.        RetCode = AfSysReadDESCRIPTIONLine(handle, var)
  3418.  
  3419.      ARGUMENTS
  3420.        handle:
  3421.        Handle returned by AfSysOpen
  3422.  
  3423.        var:
  3424.        Name of REXX variable to put descrption in
  3425.  
  3426.      RETURNED VALUE
  3427.        The file offset of the line immediately following the line read in.
  3428.  
  3429.      DESCRIPTION
  3430.        Reads in the DESCRIPTION file line by line.
  3431.        Lines beginning with ':' are remarked lines, and are ignored by the
  3432.        file system. 
  3433.        Lines beginning with ';' indicate that a filename and file area are
  3434.        on the same line:  ';filename areanum'
  3435.        All other lines are assumed to be DESCRIPTION lines.
  3436.  
  3437.      EXAMPLE
  3438.  
  3439.      RELATED FUNCTIONS
  3440.  
  3441. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3442.  
  3443.      AfSysSetAge()
  3444.  
  3445.      FUNCTION USAGE
  3446.        RetCode = AfSysSetAge(handle, Age)
  3447.  
  3448.      ARGUMENTS
  3449.        handle:
  3450.        Handle returned by AfSysOpen
  3451.  
  3452.        Age:
  3453.        Age needed to DL the file
  3454.  
  3455.      RETURNED VALUE
  3456.        0      No errors
  3457.        0>     Error
  3458.  
  3459.      DESCRIPTION
  3460.        Sets the Age neede to DL the current file.
  3461.  
  3462.      EXAMPLE
  3463.  
  3464.      RELATED FUNCTIONS
  3465.  
  3466. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3467.  
  3468.      AfSysSetCopyFile()
  3469.      
  3470.      FUNCTION USAGE
  3471.        RetCode = AfSysSetCopyFile(handle, bool)
  3472.  
  3473.      ARGUMENTS
  3474.        handle:
  3475.        Handle returned by AfSysOpen
  3476.  
  3477.        bool:
  3478.        "TRUE" or "FALSE"
  3479.  
  3480.      RETURNED VALUE
  3481.        0      No errors
  3482.        0>     Error
  3483.  
  3484.      DESCRIPTION
  3485.        If bool is "TRUE" then the file is copied to a temp dir when DLed.
  3486.  
  3487.      EXAMPLE
  3488.  
  3489.      RELATED FUNCTIONS
  3490.  
  3491. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3492.  
  3493.      AfSysSetDescOffset()
  3494.  
  3495.      FUNCTION USAGE
  3496.        AfSysSetDescOffset(handle,var)
  3497.  
  3498.      ARGUMENTS
  3499.        handle:
  3500.        Handle returned by AfSysOpen
  3501.  
  3502.        offset:
  3503.        File offset
  3504.  
  3505.      RETURNED VALUE
  3506.        0      No errors
  3507.        0>     Error
  3508.  
  3509.      DESCRIPTION
  3510.        Sets the file offset in the DESCRIPTION file.
  3511.  
  3512.      EXAMPLE
  3513.  
  3514.      RELATED VALUE
  3515.  
  3516. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3517.  
  3518.      AfSysSetDLAble()
  3519.  
  3520.      FUNCTION USAGE
  3521.        RetCode = AfSysSetDLAble(handle, bool)
  3522.  
  3523.      ARGUMENTS
  3524.        handle:
  3525.        Handle returned by AfSysOpen
  3526.  
  3527.        bool:
  3528.        "TRUE" or "FALSE"
  3529.    
  3530.      RETURNED VALUE
  3531.        0      No errors
  3532.        0>     Error
  3533.  
  3534.      DESCRIPTION
  3535.        If bool is "TRUE" then the file can be downloaded.
  3536.  
  3537.      EXAMPLE
  3538.  
  3539.      RELATED FUNCTIONS
  3540.       
  3541. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3542.  
  3543.      AfSysSetFileArea()
  3544.  
  3545.      FUNCTION USAGE
  3546.        RetCode = AfSysSetFileArea(handle, Area)
  3547.  
  3548.      ARGUMENTS
  3549.        handle:
  3550.        Handle returned by AfSysOpen
  3551.  
  3552.        Area:
  3553.        The file area #
  3554.  
  3555.      RETURNED VALUE
  3556.        0      No errors
  3557.        0>     Error
  3558.  
  3559.      DESCRIPTION
  3560.        Set the file area # in the current file record.
  3561.  
  3562.      EXAMPLE
  3563.  
  3564.      RELATED FUNCTIONS
  3565.  
  3566. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3567.  
  3568.      AfSysSetFileDate()
  3569.  
  3570.      FUNCTION USAGE
  3571.        RetCode = AfSysSetFileDate(handle, year,month,day)
  3572.  
  3573.      ARGUMENTS
  3574.        handle:
  3575.        Handle returned by AfSysOpen
  3576.  
  3577.        year:
  3578.        Optional year
  3579.  
  3580.        month:
  3581.        Optional month
  3582.  
  3583.        day:
  3584.        Optional day
  3585.  
  3586.      RETURNED VALUE
  3587.        0      No errors
  3588.        0>     Error
  3589.  
  3590.      DESCRIPTION
  3591.        Sets the date for the current file record. Any missing optional
  3592.        arguments are filled with the current date.
  3593.  
  3594.      EXAMPLE
  3595.  
  3596.      RELATED FUNCTIONS
  3597.  
  3598. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3599.  
  3600.      AfSysSetFileDESCRIPTION()
  3601.  
  3602.      FUNCTION USAGE
  3603.        AfSysSetFileDESCRIPTION(handle,Desc)
  3604.  
  3605.      ARGUMENTS
  3606.        handle:
  3607.        Handle returned by AfSysOpen
  3608.  
  3609.        Desc:
  3610.        Description of the file
  3611.  
  3612.      RETURNED VALUE
  3613.        0      No errors
  3614.        0>     Error
  3615.  
  3616.      DESCRIPTION
  3617.        Sets the DESCRIPTION for the current file Record.
  3618.  
  3619.      EXAMPLE
  3620.  
  3621.      RELATED FUNCTIONS
  3622.    
  3623. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3624.  
  3625.      AfSysSetFileRecord()
  3626.  
  3627.      FUNCTION USAGE
  3628.        AfSysSetFileRecord(handle)
  3629.  
  3630.      ARGUMENTS
  3631.        handle:
  3632.        Handle returned by AfSysOpen
  3633.  
  3634.      RETURNED VALUE
  3635.        0      No errors
  3636.  
  3637.      DESCRIPTION
  3638.        Saves the active file record to disk.
  3639.  
  3640.      EXAMPLE
  3641.  
  3642.      RELATED FUNCTIONS
  3643.  
  3644. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3645.  
  3646.      AfSysSetFileSize()
  3647.  
  3648.      FUNCTION USAGE
  3649.        AfSysSetFileSize (handle, size)
  3650.  
  3651.      ARGUMENTS
  3652.        handle:
  3653.        Handle returned by AfSysOpen
  3654.  
  3655.        size:
  3656.        The length of the file
  3657.  
  3658.      RETURNED VALUE
  3659.        0      No errors
  3660.        >0     Error
  3661.  
  3662.      DESCRIPTION
  3663.        Set the file size in the current file record.
  3664.  
  3665.      EXAMPLE
  3666.  
  3667.      RELATED FUNCTIONS
  3668.  
  3669. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3670.  
  3671.      AfSysSetIndexEntryDate()
  3672.  
  3673.      FUNCTION USAGE
  3674.        RetCode = AfSysSetIndexEntryDate(handle, year,month,day)
  3675.  
  3676.      ARGUMENTS
  3677.        handle:
  3678.        Handle returned by AfSysOpen
  3679.  
  3680.        year:
  3681.        Optional year
  3682.  
  3683.        month:
  3684.        Optional month
  3685.  
  3686.        day:
  3687.        Optional day
  3688.  
  3689.      RETURNED VALUE
  3690.        0      No errors
  3691.        0>     Error
  3692.  
  3693.      DESCRIPTION
  3694.        Sets the date for the current file record in the date index. 
  3695.        Any missing optional arguements are filled with the current date.
  3696.  
  3697.      EXAMPLE
  3698.  
  3699.      RELATED FUNCTIONS
  3700.  
  3701. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3702.  
  3703.      AfSysSetListable()
  3704.  
  3705.      FUNCTION USAGE
  3706.        RetCode = AfSysSetListable(handle, bool)
  3707.  
  3708.      ARGUMENTS
  3709.        handle:
  3710.        Handle returned by AfSysOpen
  3711.  
  3712.        bool:
  3713.        "TRUE" or "FALSE"
  3714.  
  3715.      RETURNED VALUE
  3716.        0      No errors
  3717.        0>     Error
  3718.  
  3719.      DESCRIPTION
  3720.        If bool is "TRUE" then the file is listable.
  3721.  
  3722.      EXAMPLE
  3723.  
  3724.      RELATED FUNCTION
  3725.  
  3726. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3727.  
  3728.      AfSysRawReadFileRecord()
  3729.  
  3730.      FUNCTION USAGE
  3731.        RetCode = AfSysRawReadFileRecord(handle)
  3732.  
  3733.      ARGUMENTS
  3734.        handle:
  3735.        Handle returned by AfSysOpen
  3736.  
  3737.      RETURNED VALUE
  3738.        0      No errors
  3739.        152    FSYS_ERROR_READ
  3740.  
  3741.      DESCRIPTION
  3742.        This function tells FSys to read the current file record from the disk.
  3743.        It reads from the current file pointer to the end of the record. It does
  3744.        not set or check the file pointer before doing so.
  3745.        This function is used when reading the records from disk one by one to
  3746.        the end of the file. It returns FSYS_ERROR_READ if any errors occur,
  3747.        which normally means the end of the file.
  3748.        This function also sets the index filename, index entry date, index 
  3749.        area number, and index record offset.
  3750.  
  3751.      EXAMPLE
  3752.  
  3753.      RELATED FUNCTIONS
  3754.  
  3755. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3756.  
  3757.      AfSysResetDescFilePtr()
  3758.  
  3759.      FUNCTION USAGE
  3760.        RetCode = AfSysResetDescFilePtr(handle)
  3761.  
  3762.      ARGUMENTS
  3763.        handle:
  3764.        Handle returned by AfSysOpen
  3765.  
  3766.      RETURNED VALUE
  3767.        0      No errors
  3768.        >0     An Error occured
  3769.  
  3770.      DESCRIPTION
  3771.        Sets the file pointer to the beginning of the DESCRIPTION file. 
  3772.        This funcion is used in conjunction with AfSysReadDESCRIPTIONLine.
  3773.  
  3774.      EXAMPLE
  3775.  
  3776.      RELATED FUNCTIONS
  3777.  
  3778. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3779.  
  3780.      AfSysResetFilePtr()
  3781.  
  3782.      FUNCTION USAGE
  3783.        RetCode = AfSysResetFilePtr(handle)
  3784.  
  3785.      ARGUMENTS
  3786.        handle:
  3787.        Handle returned by AfSysOpen
  3788.  
  3789.      RETURNED VALUE
  3790.        0      No errors
  3791.        >0     An Error occured
  3792.  
  3793.      DESCRIPTION
  3794.        Sets the file pointer to the beginning of the file. This funcion
  3795.        is used in conjunction with AfSysRawReadFileRecord.
  3796.  
  3797.      EXAMPLE
  3798.  
  3799.      RELATED VALUE
  3800.  
  3801. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3802.  
  3803.      AfSysSetFilename()
  3804.  
  3805.      FUNCTION USAGE
  3806.        RetCode = AfSysSetFilename(handle, name)
  3807.  
  3808.      ARGUMENTS
  3809.        handle:
  3810.        Handle returned by AfSysOpen
  3811.  
  3812.        name:
  3813.        Filename
  3814.  
  3815.      RETURNED VALUE
  3816.        0      No errors
  3817.        >0     Error
  3818.  
  3819.      DESCRIPTION
  3820.        Sets the file name for the current file record.
  3821.  
  3822.      EXAMPLE
  3823.  
  3824.      RELATED FUNCTIONS
  3825.  
  3826. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3827.  
  3828.      AfSysSetIndexAreaNumber()
  3829.  
  3830.      FUNCTION USAGE
  3831.        RetCode = AfSysSetIndexAreaNumber(handle, area)
  3832.  
  3833.      ARGUMENTS
  3834.        handle:
  3835.        Handle returned by AfSysOpen
  3836.  
  3837.        area:
  3838.        New area number
  3839.  
  3840.      RETURNED VALUE
  3841.        0      No errors
  3842.  
  3843.      DESCRIPTION
  3844.        Sets the area number for the current file record in the index files.
  3845.  
  3846.      EXAMPLE
  3847.  
  3848.      RELATED FUNCTIONS
  3849.  
  3850. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3851.  
  3852.      AfSysSetIndexFileName()
  3853.  
  3854.      FUNCTION USAGE
  3855.        RetCode = AfSysSetIndexFileName(handle, name)
  3856.  
  3857.      ARGUMENTS
  3858.        handle:
  3859.        Handle returned by AfSysOpen
  3860.        name:
  3861.        File name for the current record
  3862.  
  3863.      RETURNED VALUE
  3864.        0      No errors
  3865.        >0     An Error occured
  3866.  
  3867.      DESCRIPTION
  3868.        Sets the file name used in the search indexes.
  3869.  
  3870.      EXAMPLE
  3871.  
  3872.      RELATED FUNCTIONS
  3873.  
  3874. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3875.  
  3876.      AfSysSetIndexRecordOffset()
  3877.  
  3878.      FUNCTION USAGE
  3879.        RetCode = AfSysSetIndexRecordOffset(handle, offset)
  3880.  
  3881.      ARGUMENTS
  3882.        handle:
  3883.        Handle returned by AfSysOpen
  3884.  
  3885.        offset:
  3886.        Offset in the data file of the file record
  3887.  
  3888.      RETURNED VALUE
  3889.        0      No errors
  3890.  
  3891.      DESCRIPTION
  3892.        This is normally set by fSys.Dll.
  3893.        You can also set the offset to -1 to indicate to fSys that this file 
  3894.        should be appended to the data file. This would be used when adding
  3895.        a file to the file system.  When a file is added, the index record
  3896.        offset is updated by fSys.Dll to show you what the new offset is.
  3897.  
  3898.      EXAMPLE
  3899.  
  3900.      RELATED FUNCTIONS
  3901.  
  3902. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3903.  
  3904.      AfSysSetPathIndex()
  3905.  
  3906.      FUNCTION USAGE
  3907.        RetCode = AfSysSetPathIndex(handle, path)
  3908.  
  3909.      ARGUMENTS
  3910.        handle:
  3911.        Handle returned by AfSysOpen
  3912.  
  3913.        path:
  3914.        New path index
  3915.  
  3916.      RETURNED VALUE
  3917.        0      No errors
  3918.  
  3919.      DESCRIPTION
  3920.        Each File area can have mulitple paths. The physical file is
  3921.        a combination of the filename and the path pointed to by the
  3922.        path index.
  3923.  
  3924.      EXAMPLE
  3925.  
  3926.      RELATED FUNCTIONS
  3927.  
  3928. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3929.  
  3930.      AfSysReadFilePath()
  3931.  
  3932.      FUNCTION USAGE
  3933.        RetCode = AfSysReadFilePath(handle, Index, var)
  3934.  
  3935.      ARGUMENTS
  3936.        handle:
  3937.        Handle returned by AfSysOpen
  3938.  
  3939.        Index:
  3940.        Path index
  3941.  
  3942.        var:
  3943.        Name of REXX variable to recieve path
  3944.  
  3945.      RETURNED VALUE
  3946.        0      No errors
  3947.        0>     Error
  3948.  
  3949.      DESCRIPTION
  3950.        Copies the physical path associated with Index into the
  3951.        REXX variable named by var.
  3952.  
  3953.      EXAMPLE
  3954.  
  3955.      RELATED FUNCTION
  3956.  
  3957. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3958.  
  3959.      AfSysSetSecLevel()
  3960.  
  3961.      FUNCTION USAGE
  3962.        RetCode = AfSysSetSecLevel(handle, Level)
  3963.  
  3964.      ARGUMENTS
  3965.        handle:
  3966.        Handle returned by AfSysOpen
  3967.        Level:
  3968.        Security level 
  3969.  
  3970.      RETURNED VALUE
  3971.        0      No errors
  3972.        0>     Error
  3973.  
  3974.      DESCRIPTION
  3975.        Sets the min. security level needed to DL the current file.
  3976.        May be obsolete in the future.
  3977.  
  3978.      EXAMPLE
  3979.  
  3980.      RELATED FUNCTIONS
  3981.  
  3982. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3983.  
  3984.      AfSysSetUploader()
  3985.  
  3986.      FUNCTION USAGE
  3987.        RetCode = AfSysSetUploader(handle, name)
  3988.  
  3989.      ARGUMENTS
  3990.        handle:
  3991.        Handle returned by AfSysOpen
  3992.        name:
  3993.        Filename
  3994.  
  3995.      RETURNED VALUE
  3996.        0      No errors
  3997.        >0     Error
  3998.  
  3999.      DESCRIPTION
  4000.        Sets the uploader for the current file record. 
  4001.  
  4002.      EXAMPLE
  4003.  
  4004.      RELATED FUNCTIONS
  4005.  
  4006. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4007.  
  4008.      AfSysWriteFilePath()
  4009.  
  4010.      FUNCTION USAGE
  4011.        AfSysWriteFilePath(handle, Index, path)
  4012.  
  4013.      ARGUMENTS
  4014.        handle:
  4015.        Handle returned by AfSysOpen
  4016.        Index:
  4017.        Path index
  4018.        path:
  4019.        Physical path   
  4020.  
  4021.      RETURNED VALUE
  4022.        0      No errors
  4023.        0>     Error
  4024.  
  4025.      DESCRIPTION
  4026.        Sets the path given by index to path, if Index == -1, then path is 
  4027.        added to the list of indexes for the area.
  4028.  
  4029.      EXAMPLE
  4030.  
  4031.      RELATED FUNCTIONS
  4032.  
  4033. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4034.  
  4035.      AfSysZeroFileRecord()
  4036.  
  4037.      FUNCTION USAGE
  4038.        RetCode = AfSysZeroFileRecord(handle)
  4039.  
  4040.      ARGUMENTS
  4041.        handle:
  4042.        Handle returned by AfSysOpen
  4043.  
  4044.      RETURNED VALUE
  4045.        0      No errors
  4046.  
  4047.      DESCRIPTION
  4048.        Wipes out the current file record.
  4049.  
  4050.      EXAMPLE
  4051.  
  4052.      RELATED FUNCTIONS
  4053.  
  4054. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4055.      Print()
  4056.  
  4057.      FUNCTION USAGE
  4058.        RetCode = Print(LineNumber, Arg1,  ....)
  4059.      ARGUMENTS
  4060.        LineNumber:
  4061.        Node number passed to REXX routine from Adept as first parameter.
  4062.  
  4063.        Arg1:
  4064.        1st arguement to be displayed 
  4065.  
  4066.      RETURNED VALUE
  4067.        0   No errors.
  4068.        -1  REXX killed by BBS or Carrier lost
  4069.  
  4070.      DESCRIPTION
  4071.        Displays the argument(s) on the given line.
  4072.  
  4073.      EXAMPLE
  4074.  
  4075.      RELATED FUNCTIONS
  4076.  
  4077. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4078.      Printf()
  4079.  
  4080.      FUNCTION USAGE
  4081.        Printf(arg)
  4082.  
  4083.      ARGUMENTS
  4084.        ARG:
  4085.        Argument to be displayed
  4086.  
  4087.      RETURNED VALUE
  4088.        0   No errors.
  4089.        -1  REXX killed by BBS or Carrier lost
  4090.  
  4091.      DESCRIPTION
  4092.        Sends the arguement to pmprintf. Useful ONLY to developers.
  4093.        and even then only of limited value.
  4094.  
  4095.      EXAMPLE
  4096.  
  4097.      RELATED FUNCTIONS
  4098.  
  4099. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4100.  
  4101.      ________________________________________________
  4102.      _ _ CTRL AND OTHER KEYS AND THEIR RETURN CODES _
  4103.      ________________________________________________
  4104.        CTRL_A = 1        CTRL_B = 2        CTRL_C = 3        CTRL_D = 4
  4105.        CTRL_E = 5        CTRL_F = 6        CTRL_G = 7        CTRL_H = 8
  4106.        CTRL_I = 9        CTRL_J = 10       CTRL_K = 11       CTRL_L = 12
  4107.        CTRL_N = 14       CTRL_O = 15       CTRL_P = 16       CTRL_Q = 17
  4108.        CTRL_R = 18       CTRL_S = 19       CTRL_T = 20       CTRL_U = 21
  4109.        CTRL_V = 22       CTRL_W = 23       CTRL_X = 24       CTRL_Y = 25
  4110.        CTRL_Z = 26
  4111.        HOME = 71+1024  UP   = 72+1024  PGUP   = 73+1024  BS     = 24
  4112.        FWD  = 77+1024  END  = 79+1024  DN     = 80+1024  PGDN   = 1+1024
  4113.        INS  = 82+1024  DEL  = 83+1024  LEFT   = 75+1024  RIGHT  = 77+1024
  4114.  
  4115.