home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / adept107.zip / ADPREXX.DOC < prev    next >
Text File  |  1996-02-27  |  69KB  |  2,247 lines

  1.   
  2.  
  3.  
  4.   ----------------------------------------------------------------------
  5.   
  6.      AdeptXBBS REXX INTERFACE
  7.   
  8.                      Copyright (c) 1993 - 1996 by AdeptSoft
  9.                    portions Copyright (c)  1991-1994 M. Kimes
  10.                               All Rights Reserved
  11.   
  12.                        AdeptSoft, AdeptXBBS, GateKeeper,
  13.                            are trademarks of AdeptSoft.
  14.   
  15.     "XBBS"  Copyright (c) 1988 - 1994 by M. Kimes. The "XBBS" name is a 
  16.                            Trademark of M. Kimes.
  17.                                                        
  18.   
  19.   ----------------------------------------------------------------------
  20.   
  21.                       
  22.                                       
  23.                                       
  24.                                       
  25.                                     
  26.   
  27.   
  28.  
  29.  
  30.                                Table Of Contents
  31.   CONTACTING AdeptSoft                                                    1
  32.   
  33.   
  34.   ************************************************************************
  35.   Table of Contents is being revised
  36.   ************************************************************************
  37.   
  38.   
  39.   
  40.   
  41.   The REXX Doc is currently being revised.  Please bare with us as we 
  42.   continue to rework this document as it is badly needed.  If you have 
  43.   comments or suggestions, please EMail me at phy10006@frank.mtsu.edu. 
  44.   THIS IS NOT FOR REPORTING BUGS!  ALL BUG REPORTS MUST CONTINUE TO GO TO 
  45.   julies@adeptsoft.com.
  46.   
  47.    
  48.   With AdeptXBBS 1.07 being released we have formed an Adept Toolkit.  You 
  49.   will find it on adeptsoft.com as AdeptProg.Rar.  Both updates to the kit 
  50.   and the Adept REXX Document will be found in the toolkit.
  51.   
  52.   
  53.   
  54.   
  55.   
  56.   
  57.   
  58.   
  59.  
  60.   
  61.  
  62.  
  63.   ┌────────────────────────┐
  64.   │ ■ CONTACTING AdeptSoft │
  65.   └────────────────────────┘
  66.   
  67.   AdeptSoft is located in Boca Raton, Florida.  Our current mailing 
  68.   address is:
  69.                      AdeptSoft
  70.                      3465 NW 27th Avenue
  71.                      Boca Raton, FL 33434
  72.   
  73.   AdeptSoft can be reached via the following methods:
  74.   Telnet:     bbs.adeptsoft.com
  75.   FTP   :     ftp.adeptsoft.com
  76.   WWW   :     WWW.adeptsoft.com
  77.   FidoNet:    1:18/210.0@Fidonet
  78.   
  79.   You may also contact us at our support BBS at the number:
  80.   
  81.   (812) 342-6546, 28.8K
  82.   
  83.   
  84.  
  85.   
  86.  
  87.  
  88.   ┌────────────────────────┐
  89.   │ ■ ADEPT REXX INTERFACE │
  90.   └────────────────────────┘
  91.   
  92.   AdeptXBBS comes with two 'menu' systems, the standard text, ASCII
  93.   based menu system and a REXX sub-system.  The REXX sub-system included 
  94.   with the BBS software allows all basic menu functions with additional 
  95.   power and flexibility.
  96.   
  97.   We also offer, still in development, a complete REXX API sub-system that 
  98.   gives even the novice programmer total control over the BBS software.
  99.   
  100.   With the AdeptXBBS REXX API Programming module you get access to all
  101.   available memory variables,  all internal functions,  and complete
  102.   unrestricted access to all running nodes at one time.
  103.   
  104.   This is an extremely powerful module, giving total control over the
  105.   entire BBS.  For programmers wishing to write their own programs in a 
  106.   simple language, yet maintain the speed and flexibility of AdeptXBBS
  107.   this is for you.  We also have utilities that allow you to ship your
  108.   programs without making the source code available to the end user.
  109.   
  110.   For more information about the REXX Programming module contact 
  111.   AdeptSoft.
  112.   
  113.   Adept contains a REXX interface to the BBS functions.  This allows you
  114.   to create your own scripts to execute from Adept.  By using REXX
  115.   functions alone you can completely customize Adept.
  116.   
  117.   Two types of REXX commands can be automatically executed by Adept. To
  118.   be executed they need only exist in the .\Menus directory.
  119.   
  120.   Main.Cmd or Main?.Cmd
  121.   This REXX script is executed INSTEAD OF the default menu system.
  122.   
  123.   AtEnd.Cmd or AtEnd?.Cmd
  124.   This REXX script is executed after the user logs off (or the default 
  125.   script has ended) The BPS rate will be zero and the time left will be 
  126.   five minutes. This script is executed before the user info is saved to 
  127.   the user data base.
  128.   
  129.   AtStart.Cmd or AtStart?.Cmd
  130.   This REXX script is executed at logon. The filename with the line number 
  131.   is executed in place of 'AtStart.Cmd' if it exists.
  132.   
  133.   Exception.Cmd           
  134.   This REXX script is executed if a exception violation occurs.  You can 
  135.   use this script to notify the user of what just happened.  And to help 
  136.   assist us by asking the user what they where doing when the exception 
  137.   happened.
  138.   
  139.   ConvertXXX.Cmd
  140.   Where `XXX' is a file extension of a type of file you wish to convert to 
  141.   another format.  For instance, if you want to convert ARC files to ZIP, 
  142.   you would create a ConvertARC.CMD ConvertARC.Cmd would then convert the 
  143.   file, if the file is converted it creates a file called "xxxxx.NewName"  
  144.   where `xxxxx' is the file name (without the extension)  This file 
  145.   contains 1 line, the line has the new filename of the file after it was 
  146.   converted.  Adept will use this filename when it puts the file info into 
  147.   the file system.
  148.  
  149.   
  150.  
  151.  
  152.   
  153.   ChatReq.Cmd or ChatReq?.Cmd  
  154.   Where `?' is the line number. 
  155.   
  156.   Fax.Cmd or Fax?.Cmd  
  157.   Where `?' is the line number. Executed when modem returns a fax result 
  158.   code.
  159.   
  160.   
  161.   
  162.   Standard and Extended REXX Programs:
  163.   Adept supports several naming conventions.  .SRX files are the 
  164.   unprocessed Standard Rexx Files. (The same as .CMD) .ERX files are 
  165.   preprocessed REXX files for use with Adept.  Adept will still execute 
  166.   .CMD files just the same as it does with .SRX.
  167.   
  168.   
  169.   
  170.   Why ERX files?
  171.   ERX files are REXX files that have been preprocessed with the
  172.   AdeptREXX Processor (SrToErx).  ERX files are typically 50% smaller.  
  173.   .ERX files are also by default cached into memory when first ran.  This 
  174.   provides a significant speed increase in execution times.
  175.   
  176.   We are asking that people who write rexx scripts for Adept that are not 
  177.   pre-processed please use the extension .SRX.  The preprocessor will ONLY 
  178.   process files with the .SRX extension.
  179.   
  180.   SrxToErx.Exe FileNameWithoutExtention will yield a file with the same 
  181.   name, but the .ERX extension.  If you are a commercial developer is 
  182.   recommended that you preprocess your rexx .SRX files before distributing 
  183.   them.  Also it recommended that you DO NOT preprocess the following!
  184.   
  185.   Atstart.Cmd - This MUST remain a .CMD file.  So that others may modify 
  186.   it and chain needed rexx scripts (preprocessed or not) from it.
  187.   
  188.   The BBS software will only look for .ERX versions of files that we feel 
  189.   are ok to pre-process.  In fact if you are running a .SRX file (i.e. 
  190.   .cmd) file in cached mode (as we default to) it is treated as a .ERX 
  191.   file after we preprocess it internally.  So it is honestly recommended 
  192.   that you do not preprocess anything that you are NOT going to be 
  193.   distributing.
  194.                                    
  195.   
  196.   
  197.   
  198.   Proper REXX Programming Syntax:
  199.   ALL REXX functions in the software unless you are looking for a value
  200.   should be called with the CALL function NOT with the () method.
  201.   
  202.   i.e.
  203.   Call AdeptChainRexx "d:\adept\Doors\Reg2Vote.erx",line
  204.   
  205.   NOT - AdeptChainRexx("RexxCmdFile.Cmd", line)
  206.                                                                  
  207.   
  208.   The call method is always preferred but sometimes the API set does not 
  209.   all for it.  Those functions must be set equal to some variable as they 
  210.   return a value to the calling Script.(Those marked with a {+}) 
  211.   
  212.  
  213.   
  214.  
  215.  
  216.   The second one will usually work correctly but not always.  It is always 
  217.   preferred better to use the first method.
  218.   
  219.   
  220.  
  221.   
  222.  
  223.  
  224.   ┌──────────────────────────────┐
  225.   │ ■ ADEPT REXX INTERFACE CALLS │
  226.   └──────────────────────────────┘
  227.   
  228.   Adept registers functions which can be called from the REXX interpreter.
  229.   These calls are used to interface a REXX script to Adept.  When Adept 
  230.   starts a REXX script, it passes along the line number as the first 
  231.   argument to the function.  The REXX script should store that line number 
  232.   because it must be passed back to the AdeptREXX functions as the first 
  233.   parameter.
  234.   
  235.   Remember to Start every REXX script with /* <text if any> */ then on
  236.   the next line (or the one after) Do the following ..
  237.   
  238.       ARG Line
  239.       *OR*
  240.       ARG LineNumber
  241.   
  242.   Remember, if you use "Line", then all your REXX Function must have the
  243.   first parameter as "Line". If you use "LineNumber" then all your REXX
  244.   functions must have the first parameter as "LineNumber".  If you have 
  245.   used ARG Line and in a function you have put "LineNumber" (where it's 
  246.   supposed to be) then nothing will happen :), so you must remember to 
  247.   always use the same argument that you started with.
  248.   
  249.       ** Example **
  250.   
  251.       You used ARG Line so all your Functions (AdeptPrint, AdeptCall,
  252.       AdeptInput, etc..) will have to be passed like so ..
  253.   
  254.       Call AdeptPrint Line,"String"
  255.   
  256.       and NOT
  257.   
  258.       Call AdeptPrint LineNumber,"String"
  259.   
  260.   It is the same if you have the two reversed. So really, where ever you
  261.   see "LineNumber" in this file, you replace it With the Argument you
  262.   stated at the beginning of the REXX Script.
  263.   
  264.   
  265.   
  266.   *A few notes
  267.   
  268.   Strings:
  269.      Strings in REXX are denoted by the double quote mark.  Characters are 
  270.   marked by singe quotes. "String"  `A'
  271.     
  272.   
  273.   Empty Parameters
  274.      If the function you wish to use does not require all the parameters 
  275.   filled in do not simple terminate the function call when you have put 
  276.   all the parameters in that you need.  Continue to complete the function 
  277.   definition with commas with no intervening spaces. 
  278.   
  279.            Example:
  280.   
  281.                 Call AdeptCall Linenumber,1,,'cmd.exe /c twar.bat'
  282.    
  283.               Notice that the flags field is empty and that there is no
  284.  
  285.   
  286.  
  287.  
  288.            intervening spaces.
  289.   
  290.   
  291.   Debugging Scripts:
  292.   
  293.       When your script has terminated abnormally you will notce an integer 
  294.   value in the Recent Events Screen.  To find out what the error was 
  295.   record that integer value down and open an OS/2 window and type 
  296.   
  297.   help rex(ReturnNumber)
  298.   
  299.   So if you have an error and the value in the Recent Events window is 
  300.   (-6), Open up an OS/2 window and type help rex6
  301.   
  302.   
  303.          
  304.   
  305.   
  306.   
  307.   
  308.   
  309.   
  310.   
  311.   
  312.   
  313.   
  314.   
  315.   
  316.   
  317.   
  318.   
  319.   
  320.   
  321.   
  322.   
  323.   
  324.   
  325.   
  326.   
  327.   
  328.   
  329.   
  330.   
  331.   
  332.   
  333.   
  334.   AdeptCall
  335.   call AdeptCall LineNumber, Type, Flags, String1, ..., StringN
  336.   or
  337.   value = AdeptCall(LineNumber, Type, Flags, String1, ..., StringN)
  338.   
  339.   Runs an external program.
  340.   
  341.       LineNumber:
  342.       Line number. Passed to REXX routine from Adept as first parameter.
  343.       Type:
  344.              1   Same as menu item 801. Spawn a separate session. Strings
  345.                  are concatenated to form one string which is used as the
  346.                  spawn string. Can be used for a door program that 
  347.                  accesses the com port in a more traditional (and 
  348.  
  349.   
  350.  
  351.  
  352.                  complicated) fashion.
  353.                  You can run DOS doors here also.
  354.              Flags:
  355.              1  Start session in background.
  356.   
  357.              2   Same as menu item 802. Run OS/2 type door.
  358.                  (same as menu item 800 but assumes a program which is 
  359.                  more friendly to having its I/O redirected thru pipes to 
  360.                  the com port.)  Program must allow itself to be killed.
  361.                  Flags:
  362.                        Not Used.
  363.              3   Same as menu item 800. Run OS/2 type door. Program must 
  364.                  allow itself to be killed.
  365.                  Flags:
  366.                        Not Used.
  367.       Flags:
  368.              Only used for Type 1 call.  If flag is 1, then the program is
  369.              started in the background.
  370.       String1..N:
  371.              Strings are added together to form one string which is used 
  372.              to spawn the session.
  373.   
  374.       Returns:
  375.              Return code from the spawning function.  0 usually indicates
  376.              success.
  377.   
  378.       All sessions inherit Adepts environment.
  379.   
  380.       ** Example **
  381.   
  382.       call AdeptCall Linenumber,1,,'cmd.exe /c twar.bat'
  383.   
  384.   
  385.       This would call the batch file twar.bat and run TradeWars in the
  386.       Foreground.
  387.   
  388.      
  389.   
  390.   
  391.       AdeptChainRexx
  392.       Call AdeptChainRexx "RexxScriptName",LineNumber
  393.   
  394.       Chains REXX files within REXX files.  Runs the rexx script in 
  395.       cached mode. (Notice: Once a script is cached by Adept into Memory   
  396.       will remain there until you shut down Adept.  So if you modify a
  397.       script, the changes will not take effect until you shutdown Adept.)
  398.   
  399.       LineNumber:
  400.               Line number. Passed to REXX routine from Adept as first
  401.               parameter.
  402.       RexxScriptName:
  403.               Name and path of file you want to run.
  404.   
  405.   
  406.       ** Example **
  407.   
  408.       Call AdeptChainREXX "D:\Adept\Batch\Pager.Erx",LineNumber
  409.   
  410.       This would chain the REXX file Pager.ERX from another REXX script.
  411.   
  412.  
  413.   
  414.  
  415.  
  416.   
  417.   
  418.       AdeptChainRexxNc
  419.       call AdeptChainRexxNc "RexxScriptName", LineNumber
  420.       or
  421.       Value = AdeptChainRexxNc("RexxScriptName", LineNumber)
  422.   
  423.       Chains REXX files within REXX files.  Runs the rexx script in 
  424.       Non-cached mode. Once the script is cached, it is cached (in 
  425.       memory until you shut down your copy of Adept.)
  426.   
  427.       LineNumber:
  428.               Line number. Passed to REXX routine from Adept as first
  429.               parameter.
  430.       RexxScriptName:
  431.               Name and path of file you want to run.
  432.   
  433.       ** Example **
  434.   
  435.       Call AdeptChainREXXNC "D:\BBS\UTILS\Scanner.Erx",LineNumber
  436.   
  437.       This would chain the REXX file Pager.ERX from another REXX script
  438.       and not cache the script into memory.
  439.   
  440.    
  441.   
  442.   
  443.   
  444.   
  445.   
  446.   
  447.   
  448.       AdeptChangeGroup
  449.       call AdeptChangeGroup LineNumber, group_num
  450.       or
  451.       Value = AdeptChangeGroup(LineNumber, group_num)
  452.   
  453.       The AdeptChangeGroup function will return '0' if the users
  454.       group was not upgraded or not found.  It will return '1' if the                     
  455.       users group was upgraded.  This works just like upgrading a users 
  456.       group in the local user editor.  The user will take on the changes 
  457.       specified for the specific group that they have joined/are in.
  458.   
  459.       LineNumber:
  460.               Line number. Passed to REXX routine from Adept as first
  461.               parameter.
  462.       group_num:
  463.               Number of group you want to change the user to.
  464.   
  465.       ** Example **
  466.   
  467.       Call AdeptChangeGroup LineNumber, 10
  468.   
  469.   
  470.       AdeptCheckBit
  471.       call AdeptCheckBit Linenumber, BIT NUMBER, Numeric Long
  472.       or
  473.       Value = AdeptCheckBit(Linenumber, BIT NUMBER, Numeric Long)
  474.   
  475.       This can be used to test if a users bit is turned on for any of the
  476.  
  477.   
  478.  
  479.  
  480.       LONG bitmap'd flags.
  481.   
  482.       Returns '1' if the BIT is set, '0' if it is not.
  483.   
  484.       ** Example **
  485.   
  486.       UserFlag = AdeptGetVar(LineNumber, 42) /* 42 - User Flags */
  487.       IsOn = AdeptCheckBit(LineNumber, 10, UserFlag)
  488.       if IsOn = '1' then
  489.       call AdeptPrint LineNumber, "Flag 10 is on!\r\n"
  490.   
  491.   
  492.     
  493.   
  494.   
  495.   
  496.   
  497.   
  498.   
  499.   
  500.   
  501.   
  502.   
  503.   
  504.   
  505.       AdeptCls
  506.       call AdeptCls LineNumber
  507.   
  508.       Clears local and remote screen.
  509.   
  510.       LineNumber:
  511.               Line number. Passed to REXX routine from Adept as first
  512.               parameter.
  513.   
  514.       ** Example **
  515.   
  516.       call AdeptCls LineNumber
  517.   
  518.   
  519.   
  520.       AdeptComFlush
  521.       call AdeptComFlush LineNumber
  522.   
  523.       AdeptComFlush will flush the output stream of the current com port.
  524.       ** BE CAREFUL **
  525.       This is a RAW com function.  This is only to be used by
  526.       professionals or people experienced with programming serial based
  527.       products.
  528.   
  529.       ** Example **
  530.   
  531.       call AdeptComFlush LineNumber
  532.   
  533.   
  534.   
  535.       AdeptComWrite
  536.       call AdeptComWrite LineNumber, string
  537.       or
  538.       Value = AdeptComWrite(LineNumber, string)
  539.   
  540.  
  541.   
  542.  
  543.  
  544.       AdeptComWrite will place a string into the com ports output stream.
  545.       This is a raw com function.  It will return -1 for carrier drop.
  546.       ** BE CAREFUL **
  547.       This is a RAW com function.  This is only to be used by   
  548.       professionals or people experienced with programming serial based
  549.       products.
  550.   
  551.       ** Example **
  552.   
  553.       rc=AdeptComWrite(LineNumber,"Hello!")
  554.       if rc='-1' then signal NoCarrier
  555.       NoCarrier:
  556.       End
  557.   
  558.       Would be used to Display "Hello" to the output stream, if the
  559.       carrier is dropped, it would signal NoCarrier and the Script
  560.       would be terminated.
  561.   
  562.   
  563.   
  564.       AdeptConvert
  565.       Value = AdeptConvert(LineNumber, String)
  566.   
  567.       Converts META variables passed in String.
  568.   
  569.       LineNumber:
  570.          Line number. Passed to REXX routine from Adept as first
  571.          parameter.
  572.       String:
  573.          String which contains META variables which need to be converted.
  574.       Returns:
  575.          Converted string.
  576.   
  577.       ** Example **
  578.   
  579.       DarkRed=AdeptConvert(LineNumber,'{F5')
  580.   
  581.       The variable dred would now equal Dark Red. So where ever you use
  582.       dred it will put it in Dark Red since there are some Functions that
  583.       do not support Meta Codes (NOT just color, ALL Meta Codes)
  584.   
  585.   
  586.   
  587.       AdeptComDial
  588.       call AdeptComDial LineNumber, "STRING TO DIAL"
  589.   
  590.       AdeptComDial will parse a string to the modem through the dialing
  591.       translation.  I.E. "v~^ATDT555-1212|" will be translated to
  592.       LOWER DTR, PAUSE FOR A SECOND, RAISE DTR, SEND 'ATDT555-1212' then
  593.       a CR (Carriage Return to the modem'.
  594.   
  595.       ** Example **
  596.   
  597.       Call AdeptComDail LineNumber,"v~^~ATDT555-1212|"
  598.   
  599.   
  600.       AdeptComDoDTR
  601.       call AdeptComDoDTR LineNumber, Type
  602.   
  603.       LineNumber:
  604.  
  605.   
  606.  
  607.  
  608.          Line number. Passed to REXX routine from Adept as first
  609.          parameter.
  610.       Type:
  611.          0 - Drop DTR (Will leave it dropped)
  612.   
  613.          1 - Raise DTR (Will Leave it raised)
  614.   
  615.       ** Example **
  616.   
  617.       call AdeptComDoDTR LineNumber,'1'  /* This will Drop the DTR. */
  618.   
  619.   
  620.   
  621.       AdeptDropGlobalVar
  622.       
  623.       AdeptDropGlobalVar will free the memory space occupied by VarName, 
  624.       where VarName is a Global Variable made by AdeptSetGlobalVar.
  625.   
  626.   
  627.        ** Example **
  628.        AdeptDropGlobalVar('VarName')
  629.   
  630.   
  631.   
  632.       AdeptFile
  633.       call AdeptFile LineNumber, Type, StartAt, KeyName
  634.   
  635.       File area manipulation.
  636.   
  637.       LineNumber:
  638.          Line number. Passed to REXX routine from Adept as first
  639.          parameter.
  640.       Type:
  641.          1     Returns name of current file area.
  642.          2     Returns number of current file area.
  643.          3     Find file area (number of area to find in StartAt)
  644.                Returns file area number
  645.          4     Find file area (name of area to find in KeyName)
  646.                Returns name of current file area.
  647.          5     Go to next file area
  648.                Returns name of current file area.
  649.          6     Go to previous file area
  650.                Returns name of current file area.
  651.          7     Returns download path of current file area.
  652.          8     Returns upload path of current file area.
  653.       StartAt:
  654.          Number of area to look for. (see type 3)
  655.       Keyname:
  656.          Name of area to look for. (see type 4)
  657.   
  658.       ** Examples **
  659.   
  660.       call AdeptFile LineNumber,4,,"AdeptSoft" /* This would find the File
  661.                                                   area "AdeptSoft" as
  662.                                                   listed in File_Areas */
  663.       Call AdeptFile LineNumber,5,,""             /* Goto next area */
  664.       Call AdeptFile LineNumber,6,,""        /* Goto previous area */
  665.                                              
  666.   
  667.         
  668.  
  669.   
  670.  
  671.  
  672.   
  673.   
  674.   
  675.   
  676.       AdeptGetGlobalVar
  677.   
  678.       RetCode = AdeptGetGlobalVar('VarName')
  679.   
  680.       AdeptGetGlobalVar will pull a variable's value out of memory. 
  681.   
  682.   
  683.       ** Example **
  684.   
  685.       RetCode = AdeptGetGlobalVar('Games')
  686.   
  687.   
  688.   
  689.       AdeptGetVar and AdeptPutVar
  690.   
  691.       call AdeptGetVar LineNumber, varnumber
  692.       or
  693.       call AdeptPutVar LineNumber, varnumber, Data
  694.   
  695.       or
  696.   
  697.       Value = AdeptGetVar(LineNumber, varnumber)
  698.       or
  699.       Value = AdeptPutVar(LineNumber, varnumber, Data)
  700.   
  701.       This function duplicates some of the functions already in the
  702.       AdeptREXX language.  This returns almost every single variable adept
  703.       uses in the BBS software.  This will give a REXX programmer total
  704.       control over all of the BBS's users and mailers memory variables.
  705.       There will also be some new variables added that will be blank.
  706.       These variables will be usable in real time across nodes by multiple
  707.       REXX programs running at the same time.  The possibilities of such a
  708.       setup are limitless.
  709.   
  710.       The following are the variable numbers:
  711.   
  712.       User Info:
  713.          1 - Users Name
  714.          2 - Users Handle
  715.          3 - Users Address
  716.          4 - Users Address1
  717.          5 - Users Address2
  718.          6 - Users City
  719.          7 - Users State
  720.          8 - Users Zipcode
  721.          9 - Users Home Phone
  722.          10 - Users Data Phone
  723.          11 - Users Fax Phone
  724.          12 - Users Business Phone
  725.          13 - Users Interests
  726.          14 - Sysop Comment about User
  727.          15 - Users Bank Time
  728.          16 - Users Computer Type (Number)
  729.          17 - Users User ID
  730.          18 - Users Point ID
  731.          19 - Users BirthYear
  732.  
  733.   
  734.  
  735.  
  736.          20 - Users BirthMonth
  737.          21 - Users BirthDay
  738.          22 - Users Gender (Represented by 1 letter)
  739.          23 - Users NetMail Credit
  740.          25 - The Group the User belongs to
  741.          27 - Time Used Today
  742.          28 - Time Per Day
  743.          29 - Time Per Call
  744.          30 - Number of calls the user has made
  745.          31 - Upload Number
  746.          32 - Download Number
  747.          33 - Uploads in K
  748.          34 - Downloads in K
  749.          35 - Upload K today
  750.          36 - Download K today
  751.          37 - Upload K per day (Max Allowed)
  752.          38 - Download K per day (Max Allowed)
  753.          39 - Number of posts (Total)
  754.          40 - Security Level #1
  755.          41 - Security Level #2
  756.          42 - Flags represented as a 32-bit long
  757.          43 - Flags2 Represented as a 32-bit long
  758.          44 - User Attributes represented as a 32-bit long
  759.          45 - User Attributes #2 represented as a 32-bit long
  760.          46 - Users Screen Length
  761.          47 - Users Screen width
  762.          48 - Last Message Area number user was in
  763.          49 - Last File Area Number user was in
  764.          50 - Last Protocol Chosen (Returns the letter for the protocol)
  765.          51 - Last Archiver Chosen Returns Archive Letter
  766.          53 - Percentage of Upload/Download ratio to consider the user a
  767.               leech
  768.          54 - Maximum Bank time allowed for this user
  769.          55 - Password Represented as a 32-bit long (32-bit CRC)
  770.          56 - Password reversed represented as a 32-bit long (32-bit CRC)
  771.          57 - Max Messages to pack into a mail packet.
  772.          58 - Users Age
  773.          59 - User Bad Password Attempts
  774.          60 - MailStatus (I forget how we use this at the moment)
  775.          61 - Number of lines shown to the remote user since last reset
  776.               (clear screen or new screen shown, etc).  This is calculated
  777.               by the display sub-system and should always be correct.
  778.               This variable takes everything from ANSI and Avatar cursor
  779.               movement into account, to number of actual lines displayed.
  780.          62 - Did the user pick non-stop display after the last more
  781.               prompt or non-stop display choice.
  782.       BBS Info:
  783.          100 - Number of Calls to the BBS
  784.          101 - Last User ID Assigned by the BBS
  785.          102 - Last Point ID Assigned by the BBS
  786.          103 - Minimum Age Required to Log on
  787.          104 - Maximum Age Allows on the BBS
  788.          105 - Amount of NetMail Credit the user has
  789.          106 - Expire Users after x amount of days
  790.          107 - Expire Users after x amount of minutes
  791.          108 - Default User Time Per Day
  792.          109 - Default User Security Level #1
  793.          110 - Default User Security Level #2
  794.          111 - BBS User Default Flags #1 returned as a 32-bit long
  795.          112 - BBS User Default Flags #2 returned as a 32-bit long
  796.  
  797.   
  798.  
  799.  
  800.          113 - Default Upload K per day max
  801.          114 - Maximum download k per day
  802.          115 - BBS User Default Attribs returned as a 32-bit long
  803.          116 - BBS User Default Attribs #2 returned as 32-bit long
  804.          117 - The default group the user belongs to.  The user will                                                                                         
  805.                inherit the default settings for this group. 0 for none.
  806.          118 - Maximum Users to allow in the user file
  807.          119 - Default Origin Line for EchoMail Areas
  808.          120 - Maximum Password Attempts Allowed
  809.          125 - Default Cost to send a NetMail message
  810.          126 - Line number the BBS is on in the quote file
  811.          127 - Default Maximum Time Per Call
  812.          128 - I don't remember I will have to check this one
  813.          129 - Odds of getting a quote when called
  814.          130 - Mailer Incoming Password Protected Mail Path
  815.          131 - Mailer OkFile for Password Protected Nodes
  816.          132 - Mailer Incoming Public Mail Path
  817.          133 - Mailer OkFile for Public Mail
  818.          134 - Mailer Unlisted Node Mail Path
  819.          135 - Mailer OkFile for Unlisted Nodes
  820.          136 - Number of times a user can page the sysop
  821.          137 - The BBS's Name
  822.          138 - BBS UAttribs 32-bit long
  823.          139 - BBS UAttribs #2 32-bit long
  824.          140 - Sysops Name
  825.          141 - Is The Sysop In (0 or 1)
  826.          142 - Default Max Messages in Packet
  827.          143 - City/State info for BBS & .QWK Packet
  828.          144 - .QWK BBS ID
  829.          145 - BBS .QWK Phone Number
  830.          146 - Default Max Bank Time
  831.       Modem/Mailer Info:
  832.          200 - Modem Handle
  833.          201 - Node Number
  834.          202 - Port Name (COM1, \PIPE\ADEPT1, etc)
  835.          203 - Modem Init String
  836.          204 - Default Dialing Prefix
  837.          205 - Default Dialing Suffix
  838.          206 - Optional Dialing Prefix #1
  839.          207 - Optional Dialing Suffix #1
  840.          208 - Optional Dialing Prefix #2
  841.          209 - Optional Dialing Suffix #2
  842.          210 - Optional Dialing Prefix #3
  843.          211 - Optional Dialing Suffix #3
  844.          212 - Optional Dialing Prefix #4
  845.          213 - Optional Dialing Suffix #4
  846.          214 - Optional Dialing Prefix #5
  847.          215 - Optional Dialing Suffix #5
  848.          216 - Optional Dialing Prefix #6
  849.          217 - Optional Dialing Suffix #6
  850.          218 - Optional Dialing Prefix #7
  851.          219 - Optional Dialing Suffix #7
  852.          220 - Optional Dialing Prefix #8
  853.          221 - Optional Dialing Suffix #8
  854.          222 - Modem Answer String
  855.          223 - Obsolete
  856.          224 - Obsolete
  857.          225 - Mail Only Event Text
  858.          226 - Text if User is too slow
  859.          228 - Baud Rate to Init Modem at
  860.  
  861.   
  862.  
  863.  
  864.          229 - Minimum Baud rate Allowed on BBS
  865.          230 - Minimum Incoming Baud Rate for Mail
  866.          231 - Minimum Baud Rate to Call Out for Mail
  867.          232 - Maximum Baud Rate for Outbound Mail
  868.          233 - Current Baud Rate of Modem
  869.          234 - Minimum Cost of Mail for This Event (Dialout)
  870.          235 - Maximum Cost of Mail for This Event (Dialout)
  871.          236 - Maximum Mail in K to send in a mail session
  872.          237 - Maximum Time Limit for a mail session
  873.          239 - Maximum Bad Mail Calls before no more are made
  874.          240 - Maximum Times to call a node to send mail
  875.          241 - If Port Locked (0 / 1)
  876.          242 - Allow Human Callers or Users on the BBS? (0/1)
  877.          243 - Allow File Requests (0/1)
  878.          244 - Accept File Request (0/1)
  879.          245 - Dialing Out OK?
  880.          246 - OK To Answer the Phone?
  881.          248 - Force FTS-0001 Mail Sessions (0/1)
  882.          249 - Receive Mail From Unlisted Nodes? (0/1)
  883.          250 - Send Mail to Unlisted Nodes? (0/1)
  884.          251 - Was the last incoming call to the BBS or Mail (1 for BBS, 0
  885.                for mailer)
  886.          252 - Sealink Overdrive Off (0/1) 1 = off
  887.          253 - Sealink Mail On/Off (1 = on)
  888.          254 - 1k Sealink On/Off (1 = off)
  889.          255 - Allow DietINFA (1 = on (TBBS & XBBS use dietINFA))
  890.          256 - In Chat with Sysop (0/1)
  891.          257 - Debug Transfers (0/1) Extra Log Info
  892.          258 - Allow Hydra Mail Transfers (0/1) (Currently Disabled)
  893.          259 - Allow ZedZip for Mail Transfers (0/1)
  894.          260 - Allow ZedZap for Mail Transfer (0/1)
  895.          261 - Turn the mailer off? (0/1) 1 = off
  896.          262 - Key to represent Yes (Y) for USA
  897.          263 - Key to represent No (N) for USA
  898.          264 - Key to represent Stop (S) for USA
  899.          264 - Key to represent Pause (P) for USA
  900.          264 - Key to represent Quit (Q) for USA
  901.          268 - Maximum # of resyncs to abort transfers
  902.          269 - Maximum # of transfer errors to abort on
  903.          270 - Last Users on this lines name
  904.          271 - Last Mailer to call this node
  905.          272 - Last Long Entry Written
  906.          276 - Check Carrier Detect (0/1) 1 = on
  907.          277 - Video Display Handle
  908.          278 - Number of ring to wait for answer on this node
  909.   
  910.   
  911.   
  912.   
  913.       ** Examples **
  914.   
  915.       BBSName=AdeptGetVar(LineNumber,137)
  916.       SYSOPName=AdeptGetVar(Linenumber,140)
  917.   
  918.       AdeptPrint(line,"\r\nWelcome to"bbsname"!" Greetings from
  919.       "SYSOPName"\r\n")
  920.   
  921.       This would come out like "Welcome to AdeptSoft! You are welcomed
  922.       by The Sysop". (Except AdeptSoft would be your BBS name :)
  923.   
  924.  
  925.   
  926.  
  927.  
  928.   
  929.      
  930.   
  931.   
  932.       AdeptHitReturn
  933.       call AdeptHitReturn LineNumber
  934.   
  935.       AdeptHitReturn will wait for the user to press enter.  This will
  936.       use the Press Enter to continue in the English.Text or other
  937.       language file.
  938.   
  939.       ** Example **
  940.   
  941.       call AdeptHitReturn LineNumber
  942.   
  943.       This would prompt the user to press Enter (return) to continue.
  944.          
  945.   
  946.   
  947.   
  948.   
  949.   
  950.   
  951.   
  952.   
  953.   
  954.   
  955.   
  956.       
  957.       AdeptInKey
  958.       call AdeptInKey LineNumber
  959.       or
  960.       Value = AdeptInKey(LineNumber)
  961.       
  962.       AdeptInKey will return the ASCII code for a incoming key sequence.
  963.       AdeptInKey will not wait for a key, it will return 0 if there are no
  964.       keys waiting.  If you use this in a loop, please offset the amount
  965.       of CPU time a loop uses with a AdeptSleep command.
  966.   
  967.       ** Example **
  968.    
  969.       ReturnCode = AdeptInKey(LineNumber)
  970.   
  971.   
  972.   
  973.       AdeptInput
  974.       call AdeptInput LineNumber, MinLen, MaxLen, Type, Flags, Prompt,  
  975.       Help,HelpFile, Default
  976.       or
  977.       Value = AdeptInput(LineNumber, MinLen, MaxLen, Type, Flags, Prompt,
  978.       Help, HelpFile, Default)
  979.   
  980.       Get a string from the user.
  981.   
  982.       LineNumber:
  983.          Line number. Passed to REXX routine from Adept as first
  984.          parameter.
  985.       MinLen:
  986.         Minimum length of input string.
  987.       MaxLen:
  988.  
  989.   
  990.  
  991.  
  992.         Maximum length of input string.(Current max is 500)
  993.       Type:
  994.         Type of input (will define later)
  995.       Flags:
  996.         <undefined>
  997.       Prompt:
  998.         Prompt to display when asking for input.
  999.       Help:
  1000.         Name of subject to look for in HelpFile when user asks for help.
  1001.       HelpFile:
  1002.         Contains help on subjects pertaining to this input prompt.
  1003.       Default:
  1004.         Default keystroke.
  1005.   
  1006.       ** Example **
  1007.   
  1008.       answer=AdeptInput(LineNumber,1,50,,,'What Is your Name : ',,,) 
  1009.       call AdeptPrint LineNumber,'\r\n Your name is' answer
  1010.   
  1011.       This would ask the User for his or her name with a MinLen of 1
  1012.       Character and a MaxLen of 50 Characters, with a prompt of "What
  1013.       is your Name". When this is printed, it will print to the local
  1014.       and remote screen "Your Name is Jean-Ray" (Jean-Ray being the
  1015.       name entered).
  1016.   
  1017.   
  1018.   
  1019.       AdeptLibrary
  1020.       call AdeptLibraryLineNumber, Type, StartAt, KeyName
  1021.    
  1022.       Library area manipulation.
  1023.       LineNumber:
  1024.          Line number. Passed to REXX routine from Adept as first
  1025.          parameter.
  1026.       Type:
  1027.         1     Returns name of current library area.
  1028.         2     Returns number of current library area.
  1029.         3     Find library area (number of area to find in StartAt)
  1030.               Returns library area number
  1031.         4     Find library area (name of area to find in KeyName)
  1032.               Returns name of current library area.
  1033.         5     Go to next library area
  1034.               Returns name of current library area.
  1035.         6     Go to previous library area
  1036.               Returns name of current library area.
  1037.         7     Returns path of current library area.
  1038.       StartAt:
  1039.         Number of area to look for. (see type 3)
  1040.       Keyname:
  1041.         Name of area to look for. (see type 4)
  1042.   
  1043.       ** NOTE: The Adept Library Functions are not yet finished.
  1044.   
  1045.   
  1046.   
  1047.       AdeptLocation
  1048.       call AdeptLocation LineNumber, "User Location on the BBS"
  1049.       or
  1050.       Value = AdeptLocation(LineNumber, "User Location on the BBS")
  1051.   
  1052.  
  1053.   
  1054.  
  1055.  
  1056.       Will display where the User is on the BBS (Sysop defined)
  1057.   
  1058.       ** NOTE: Remember, Once the script ends, the location will go back               
  1059.       to what it was before the function was executed. This function 
  1060.       however is great for Doors and Chat Mode with the Sysop if you Use a 
  1061.       Main.Cmd or a .Cmd file for your Door Menu. It can let other users 
  1062.       know what Door the other node(s) are in if any.
  1063.   
  1064.       ** Example **
  1065.   
  1066.       call AdeptLocation LineNumber,"In Door - Barren Realms Elite"
  1067.   
  1068.       This would display the user on that particular line in a Door of
  1069.       Barren Realms Elite.
  1070.   
  1071.   
  1072.   
  1073.   
  1074.       AdeptLog
  1075.       call AdeptLog LineNumber, Flags, String1, ..., StringN
  1076.       or
  1077.       Value = AdeptLog(LineNumber, Flags, String1, ..., StringN)
  1078.   
  1079.       Log an action.
  1080.       LineNumber:
  1081.          Line number. Passed to REXX routine from Adept as first
  1082.          parameter.
  1083.       Flags:
  1084.          1    Output to log and listbox
  1085.          2    Output to log only
  1086.          3    Output to listbox only
  1087.       String1..N:
  1088.                                                                                       
  1089.          Strings are added together to form one string which is used to
  1090.          spawn the session.
  1091.   
  1092.   
  1093.   
  1094.       ** Examples **
  1095.       Call AdeptLog Line, 1,1,"MainMenu Started"  
  1096.       call AdeptLog LineNumber,2,"Mylog"
  1097.   
  1098.   
  1099.   
  1100.       AdeptMenu
  1101.       call AdeptMenu LineNumber, Flags, MenuName
  1102.       or
  1103.       Value = AdeptMenu(LineNumber, Flags, MenuName)
  1104.   
  1105.       Executes a menu contain in the file MenuName.
  1106.   
  1107.       LineNumber:
  1108.          Line number. Passed to REXX routine from Adept as first
  1109.          parameter.
  1110.       Flags:
  1111.          1    Return after user chooses a command from the menu.
  1112.          2    Return after executing all commands contained in menu.
  1113.       MenuName:
  1114.          File name of the menu to use.
  1115.   
  1116.  
  1117.   
  1118.  
  1119.  
  1120.       ** Example **
  1121.   
  1122.       call AdeptMenu LineNumber,2,"Test.Menu"
  1123.       Call AdeptMenu(LineNumber,0, "Message.Menu")
  1124.   
  1125.      
  1126.   
  1127.   
  1128.       AdeptMenuType
  1129.       call AdeptMenuType LineNumber, menutype, menudata
  1130.       or
  1131.       Value = AdeptMenuType(LineNumber, menutype, menudata)
  1132.   
  1133.       This command allows you to execute a menu options 10 - 998.  Just
  1134.       pass the standard menudata.
  1135.   
  1136.       ** Example **
  1137.   
  1138.       call AdeptMenuType LineNumber,42,,,0 /* This would display The Users
  1139.                                             online at the current time. */
  1140.       Call AdeptMenuType LineNumber,900,""  /* Your Mailbox */
  1141.       Call AdeptMenuType LineNumber,15,""   /* New mail read */
  1142.       Call AdeptMenuType LineNumber,16,,""  /* Quickscan messages */
  1143.       Call AdeptMenuType LineNumber,78,""   /* List files in area */
  1144.       Call AdeptMenuType LineNumber,76,""   /* KeyWord Search */
  1145.       Call AdeptMenuType LineNumber,74,""   /* New files */
  1146.       Call AdeptMenuType LineNumber,85,""   /* Download */
  1147.       Call AdeptMenuType LineNumber,90,""   /* Upload a file */
  1148.       Call AdeptMenuType LineNumber,146,""  /* Select Default Protocol */
  1149.   
  1150.   
  1151.       AdeptMessage
  1152.       call AdeptMessage LineNumber, Type, StartAt, KeyName
  1153.   
  1154.       Message area manipulation.
  1155.   
  1156.       LineNumber:
  1157.          Line number. Passed to REXX routine from Adept as first
  1158.          parameter.
  1159.       Type:
  1160.         1     Returns name of current message area.
  1161.         2     Returns number of current message area.
  1162.         3     Find message area (number of area to find in StartAt)
  1163.               Returns message area number
  1164.         4     Find message area (name of area to find in KeyName)
  1165.               Returns name of current message area.
  1166.         5     Go to next message area
  1167.               Returns name of current message area.
  1168.         6     Go to previous message area
  1169.               Returns name of current message area.
  1170.         7     Returns number of messages in current message area.
  1171.       StartAt:
  1172.         Number of area to look for. (see type 3)
  1173.       Keyname:
  1174.         Name of area to look for. (see type 4)
  1175.   
  1176.       ** Example **
  1177.   
  1178.       call AdeptMessage LineNumber,3,'1',
  1179.   
  1180.  
  1181.   
  1182.  
  1183.  
  1184.       Would find message area Number 1 as listed in the
  1185.       Adept\System\Message_Areas file.
  1186.       
  1187.       Notice: Types 5 and 6 have pecularities.  Do not use the Call method
  1188.       on them
  1189.             AdeptMessage(LineNumber,5,,"")       /* Goto next area */
  1190.             AdeptMessage(LineNumber,6,,"")       /* Goto previous area */
  1191.   
  1192.   
  1193.   
  1194.   
  1195.       AdeptMore
  1196.       call AdeptMore LineNumber
  1197.      
  1198.       AdeptMore will execute a standard more prompt.  This will use the
  1199.       More prompt in the English.Text or other language file.  This will
  1200.       also use the International Y/N/Q/A info.
  1201.   
  1202.       ** Example **
  1203.       Call AdeptMore LineNumber
  1204.      
  1205.   
  1206.   
  1207.       AdeptPause
  1208.       call AdeptPause LineNumber
  1209.       or
  1210.       Value = AdeptPause(LineNumber)
  1211.   
  1212.       AdeptPause will wait for any key.  This does not display any text.
  1213.   
  1214.       ** Example **
  1215.   
  1216.       call AdeptPause LineNumber
  1217.   
  1218.       Will wait for any key to be pressed on current node.
  1219.   
  1220.   
  1221.   
  1222.       AdeptPeekByte
  1223.       call AdeptPeekByteLineNumber, length
  1224.       or
  1225.       Value = AdeptPeekByte(LineNumber, length)
  1226.   
  1227.       Will place the next char in the incoming stream that is waiting.
  1228.       It will NOT remove it from the incoming data steam.
  1229.       Length is the amount of time to wait for the next char to enter the 
  1230.       data stream.  (This is a RAW comm function).
  1231.   
  1232.       The software will return TIMEOUT or LOSTCARRIER.
  1233.   
  1234.       ** Example **
  1235.   
  1236.       call AdeptPeekByte LineNumber,6000
  1237.   
  1238.       Will Wait 6 seconds for the next char to enter the data stream.
  1239.   
  1240.   
  1241.       
  1242.       AdeptPrint
  1243.       call AdeptPrint LineNumber, String1, ..., StringN
  1244.  
  1245.   
  1246.  
  1247.  
  1248.   
  1249.       Prints a string to the local and remote screen. The string may
  1250.       contain Adept META variables.  You may pass more than one or more
  1251.       strings to this function.
  1252.       String1..N:
  1253.          Strings are printed in the order that they were passed.
  1254.   
  1255.       ** Example **
  1256.   
  1257.       call AdeptPrint LineNumber,"Hello! Welcome to The BBS"
  1258.   
  1259.       This Would print "Hello! Welcome to The BBS" to the User online.
  1260.   
  1261.   
  1262.   
  1263.       AdeptPrintL
  1264.       call AdeptPrintL LineNumber, "Text to print locally ONLY"
  1265.       or
  1266.       Value = AdeptPrintL(LineNumber, "Text to print locally ONLY")
  1267.   
  1268.       AdeptPrintL works exactly like AdeptPrint except it prints to the
  1269.       LOCAL screen only.
  1270.   
  1271.   
  1272.   
  1273.       AdeptPutC
  1274.       call AdeptPutC LineNumber, char
  1275.       or
  1276.       Value = AdeptPutC(LineNumber, char)
  1277.   
  1278.       AdeptPutC will put a char into the Com port output stream.  This is
  1279.       a raw com function.  It will return -1 for carrier drop.
  1280.       ** BE CAREFUL**
  1281.   
  1282.       This is a RAW com function.  This is only to be used by
  1283.       professionals or people experienced with programming serial based
  1284.       products.
  1285.   
  1286.       ** Example **
  1287.   
  1288.       call AdeptPutC LineNumber,'A'
  1289.   
  1290.       This would put the letter 'A' in the Com Port's output stream.
  1291.   
  1292.             
  1293.   
  1294.   
  1295.       AdeptPutKey
  1296.       call AdeptPutKey LineNumber, char
  1297.       or
  1298.       Value = AdeptPutKey(LineNumber, char)
  1299.   
  1300.       AdeptPutKey will place a character into keyboard input stream.  Char
  1301.       can be a character i.e. 'A' or a ASCII character code.
  1302.   
  1303.       ** Example **
  1304.   
  1305.       call AdeptPutKey LineNumber,'A'
  1306.   
  1307.       Will put the Character 'A' in the Keyboard's input stream.
  1308.  
  1309.   
  1310.  
  1311.  
  1312.                                 
  1313.   
  1314.   
  1315.   
  1316.       AdeptRead
  1317.       call AdeptRead LineNumber, Type, Flags, StartAt
  1318.       or
  1319.       Value = AdeptRead(LineNumber, Type, Flags, StartAt)
  1320.   
  1321.       Read messages.
  1322.   
  1323.       LineNumber:
  1324.          Line number. Passed to REXX routine from Adept as first
  1325.          parameter.
  1326.       Type:
  1327.          1    Read messages in current area.
  1328.          2    Globally read messages.
  1329.       Flags:                                                                                       
  1330.          <undefined so far>
  1331.       StartAt:
  1332.          Number of message at which Adept should start reading.
  1333.   
  1334.       ** Examples **
  1335.   
  1336.       call AdeptRead LineNumber,2,,4   /* This would start the user
  1337.                                           currently online reading the
  1338.                                           messages globally starting from
  1339.                                           Message Area #4 (as defined in
  1340.                                           Adept\System\Message_Areas
  1341.                                           file). */
  1342.       Call AdeptRead line,1,,1        /* This will start reading messages
  1343.                                          in the current area */
  1344.                                                                
  1345.   
  1346.          
  1347.   
  1348.   
  1349.   
  1350.   
  1351.   
  1352.       AdeptRecv
  1353.       call AdeptRecv LineNumber, Flags, Path, Area, File1, ..., FileN
  1354.       or
  1355.       Value = AdeptRecv(LineNumber, Flags, Path, Area, File1, ..., FileN)
  1356.   
  1357.       Upload files
  1358.   
  1359.       LineNumber:
  1360.          Line number. Passed to REXX routine from Adept as first
  1361.          parameter.
  1362.       Flags:
  1363.          1    No time verification
  1364.          4    Silence
  1365.          8    Never be silent
  1366.          16   Don't ask for description
  1367.          64   Don't credit upload (does not return files size)
  1368.          128  Accept as private file.
  1369.       Path:
  1370.          Path to put files in.
  1371.       Area:
  1372.  
  1373.   
  1374.  
  1375.  
  1376.          Name of area to put files in.
  1377.       File1..N:
  1378.          Names of files to be received.
  1379.       Returns:
  1380.          String containing number of bytes downloaded, a space and the
  1381.          number of files downloaded.
  1382.      
  1383.       NOTE: This function will change in the future.
  1384.                                                                          
  1385.       ** Example **
  1386.   
  1387.       call AdeptRecv line,128,'D:\ADEPT','AdeptSoft','Adept97b.Zip'
  1388.   
  1389.       This will send the File Adept97b.Zip from the AdeptSoft area and
  1390.       the directory of D:\ADEPT
  1391.   
  1392.   
  1393.   
  1394.       AdeptRexxKillThread
  1395.   
  1396.       AdeptRexxStartThread
  1397.       RetCode = AdeptRexxStartThread(FileName, [var1 var2 var3 var4])
  1398.   
  1399.       PARAMETERS
  1400.   
  1401.           FileName - Name of AdeptREXX program to execute as a background
  1402.                      thread.
  1403.   
  1404.           Var1 - Variable to pass to the rexx program, you can pass as
  1405.                  many variables you want.  They are not shared once they
  1406.                  are passed. See - AdeptSetGlobalVar and
  1407.                  AdeptGetGlobalVar
  1408.   
  1409.       RETURNS
  1410.   
  1411.           REXX Error Codes
  1412.   
  1413.       EXAMPLE
  1414.   
  1415.           rc = AdeptRexxStart('Thread.Cmd', line)
  1416.   
  1417.       DESCRIPTION
  1418.   
  1419.           This will cause the program Thread.Cmd to be run in the
  1420.           background with the rexx programming calling it as the parent.
  1421.           When the parent ends, all children and grandchildren are killed
  1422.           with it.
  1423.   
  1424.   
  1425.       RELATED FUNCTIONS
  1426.           AdeptKillRexxThread, AdeptSetGlobalVar, AdeptGetGlobalVar,
  1427.           AdeptDropGlobalVar
  1428.      
  1429.   
  1430.   
  1431.       
  1432.       AdeptSend
  1433.       call AdeptSend LineNumber, Flags, Path, File1, ..., FileN
  1434.       call AdeptSent LineNumber,,,''@file''
  1435.       or
  1436.  
  1437.   
  1438.  
  1439.  
  1440.       Value = AdeptSend(LineNumber, Flags, Path, File1, ..., FileN)
  1441.       Value = AdeptSent(LineNumber,,,''@file'')
  1442.       
  1443.       Download Files.
  1444.      
  1445.       LineNumber:
  1446.          Line number. Passed to REXX routine from Adept as first
  1447.          parameter.
  1448.       Flags:
  1449.          1    No time verification
  1450.          2    No leech checking
  1451.          4    Silence
  1452.          8    Never be silent
  1453.          16   Don't check all download paths
  1454.          64   Don't return files length (free file/bytes)
  1455.       Path:
  1456.          Path to files.  If blank, use current file area path.
  1457.       File1..N:
  1458.          Names of files to be sent.
  1459.          NOTE: Currently the files are sent one at a time.
  1460.       @File:
  1461.          Text file with the filenames and paths (one per line) of
  1462.          the files to send.
  1463.       Returns:
  1464.          String containing number of bytes downloaded, a space and the
  1465.          number of files downloaded.
  1466.   
  1467.   
  1468.       ** Example **
  1469.   
  1470.       call AdeptSend LineNumber,,,"@c:\list")
  1471.   
  1472.       Will send the File that is in the file called list.
  1473.   
  1474.   
  1475.   
  1476.       AdeptSetBit
  1477.       call AdeptSetBit LineNumber, BIT NUMBER, Numeric Long
  1478.       or
  1479.       Value = AdeptSetBit(LineNumber, BIT NUMBER, Numeric Long)
  1480.   
  1481.       Will set BIT Number 1 - 32 to ON.
  1482.       The changes are not saved until you put the changes back into
  1483.       active memory with the AdeptPutVar option.
  1484.   
  1485.   
  1486.   
  1487.   
  1488.       ** Example **
  1489.       SetBit= AdeptGetVar(LineNumber,42)
  1490.       call AdeptSetBit LineNumber,30,SetBit
  1491.   
  1492.   
  1493.   
  1494.       AdeptSetGlobalVar(`VarName',VarValue)
  1495.   
  1496.       AdeptSetGlobalVar will set a global variable named VarName in
  1497.       memory with a value of VarValue.
  1498.   
  1499.       ** Example **                
  1500.  
  1501.   
  1502.  
  1503.  
  1504.       Value = 6
  1505.       RetCode = AdeptSetGlobalVar(`VarName', Value)
  1506.   
  1507.   
  1508.   
  1509.       AdeptSetTimer
  1510.       call AdeptSetTimer LineNumber, Timer
  1511.       or
  1512.       Value = AdeptSetTimer(LineNumber, Timer)
  1513.                
  1514.       AdeptSetTimer will set a timer for the current node of Milliseconds
  1515.       Timer.
  1516.   
  1517.       LineNumber:
  1518.          Passed to REXX routine from Adept as First Parameter.
  1519.       Timer: 
  1520.          Time In Milliseconds
  1521.   
  1522.       ** Example **
  1523.   
  1524.       call AdeptSetTimer LineNumber,10000  /* 10 seconds */
  1525.   
  1526.   
  1527.   
  1528.       AdeptShow
  1529.       call AdeptShow LineNumber, Type, Flags, StartAt, KeyName
  1530.   
  1531.       Display text files.
  1532.   
  1533.       LineNumber:
  1534.          Line number. Passed to REXX routine from Adept as first
  1535.          parameter.
  1536.       Type:
  1537.         1     Show a text file (StartAt=filename, KeyName=keys to abort
  1538.               on)
  1539.         2     Page-read text file (Keyname=filename)
  1540.         3     Show new text files (Keyname=directory to look in)
  1541.         4     Show any text file (Keyname=directory to look in)
  1542.       Flags:
  1543.         <undefined> (for now)
  1544.       StartAt:
  1545.         (see type 1)
  1546.       KeyName:
  1547.         Keys on which to abort showing of the text file. (see type 1)
  1548.         -or-
  1549.         Name of file or directory to look for. (see types 2-4)
  1550.   
  1551.       ** Examples **
  1552.   
  1553.       call AdeptShow LineNumber,1,,'C:\Adept\Text\Bullet.Ans,Q
  1554.   
  1555.       This would display the Bullet.Ans file in the Adept\Text directory
  1556.       and if the User presses the letter 'Q' it will abort viewing of the
  1557.       file.
  1558.   
  1559.   
  1560.   
  1561.       AdeptSleep
  1562.       call AdeptSleep LineNumber, time_to_sleep_in_milliseconds
  1563.       or
  1564.  
  1565.   
  1566.  
  1567.  
  1568.       Value = AdeptSleep(LineNumber, time_to_sleep_in_milliseconds)
  1569.   
  1570.       AdeptSleep will cause the current node to sleep for x amount of
  1571.       milli-seconds.  This is very helpful in making your REXX scripts CPU
  1572.       friendly. When you use this command it will release the current time
  1573.       slice to the next node or program waiting in line.  A decent sleep
  1574.       amount is AdeptSleep(85), 85 milliseconds, 1000 milliseconds = 1
  1575.       second.
  1576.       The smallest timeslice OS/2 can sleep is 32ms.
  1577.   
  1578.       ** Examples **
  1579.   
  1580.       call AdeptSleep LineNumber,1000    /* 1 Second   */
  1581.       call AdeptSleep LineNumber,10000   /* 10 Seconds */
  1582.       call AdeptSleep LineNumber,60000   /* 1 Minute   */
  1583.       call AdeptSleep LineNumber,600000  /* 10 Minutes */
  1584.   
  1585.   
  1586.   
  1587.   
  1588.       AdeptTimedInKey
  1589.       call AdeptTimedInKey LineNumber,timeout
  1590.       or
  1591.       Value = AdeptTimedInKey(LineNumber,timeout)
  1592.   
  1593.       Returns the value for the key imputed, watched the port for a
  1594.       period of time in milliseconds.
  1595.   
  1596.       ** Example **
  1597.   
  1598.       KeyIn=AdeptTimedInKey(LineNumber,5000)    /* 5 seconds */
  1599.                                                                   
  1600.   
  1601.   
  1602.   
  1603.       ** NOTE: KeyIn contains the following values. 
  1604.                 If not key is pressed with in the timeout value a -1 or 0
  1605.                     for timeout.
  1606.                 If the Carrier is lost a value of -2 is returned.
  1607.                 If the SysOp presses F3 on the local BBS Window -3 is
  1608.                     returned.
  1609.                 If the SysOp presses F4 on the local BBS Window -4 is 
  1610.                     returned.
  1611.   
  1612.   
  1613.   
  1614.       AdeptTimeLeft
  1615.       call AdeptTimeLeft LineNumber[, SecsLeftInSession]
  1616.       or
  1617.       Value = AdeptTimeLeft(LineNumber[, SecsLeftInSession])
  1618.   
  1619.       Optionally sets time left in current session. Always returns time
  1620.       left in current session.
  1621.   
  1622.       LineNumber:
  1623.          Line number. Passed to REXX routine from Adept as first
  1624.          parameter.
  1625.       SecsLeftInSession:
  1626.          Optional.  Set seconds left in current session.
  1627.       Returns:
  1628.  
  1629.   
  1630.  
  1631.  
  1632.          Time left in session in seconds.
  1633.       
  1634.       ** Example **
  1635.       call AdeptTimeLeft LineNumber, 60000
  1636.       
  1637.       This will give the user online 1 minute left in his/her session.
  1638.     
  1639.   
  1640.   
  1641.       AdeptTimerUp
  1642.       call AdeptTimerUp LineNumber, Timer
  1643.       or
  1644.       Value = AdeptTimerUp(LineNumber, Timer)
  1645.   
  1646.       AdeptTimerUp will return 0 if timer is Up or 1 if it is Not
  1647.   
  1648.       ** Example with the TWO PREVIOUS rexx Functions **
  1649.       Timer=AdeptSetTimer(LineNumber,10000)  /* 10 Seconds */
  1650.       MyRet=AdeptTimerUp(LineNumber,timer)
  1651.       MyRet = 0 if timer is up or 1 if it is not.
  1652.   
  1653.   
  1654.   
  1655.       AdeptUnsetBit
  1656.       call AdeptUnsetBit LineNumber, BIT NUMBER, Numeric Long
  1657.       or
  1658.       Value = AdeptUnsetBit(LineNumber, BIT NUMBER, Numeric Long)
  1659.   
  1660.       Will set BIT Number 1 - 32 to OFF.
  1661.       The changes are not saved until you put the changes back into active
  1662.       memory with the AdeptPutVar option.
  1663.   
  1664.       ** Example **
  1665.   
  1666.       call AdeptUnsetBit LineNumber, 30, SetBit
  1667.   
  1668.       Will turn bit number 30 OFF.
  1669.   
  1670.       ***NOTE : The changes are not saved until you put the changes back
  1671.                 into active memory with the AdeptPutVar option.
  1672.   
  1673.   
  1674.   
  1675.       AdeptComWaitConnect
  1676.       call AdeptComWaitConnect LineNumber, Time
  1677.       or
  1678.       Value = AdeptComWaitConnect(LineNumber, Time)
  1679.   
  1680.       AdeptComWaitConnect will wait for a modem connect or error code.  It
  1681.       will return 0 if it time outs if it doesn't timeout it will
  1682.       then return the return code from the modem i.e. 'CONNECT 28800'
  1683.       'ERROR', 'OK', 'NO CARRIER'.
  1684.   
  1685.       The time is in the format of milliseconds.
  1686.   
  1687.   
  1688.   
  1689.       AdeptWaitKey
  1690.       call AdeptWaitKey LineNumber
  1691.       or
  1692.  
  1693.   
  1694.  
  1695.  
  1696.       Value = AdeptWaitKey(LineNumber)
  1697.   
  1698.       AdeptWaitKey will return the ASCII code for a incoming key sequence.
  1699.       Unlike AdeptInKey, AdeptWaitKey will actually wait for a key
  1700.       sequence. If the user times out, it will log the user off.
  1701.   
  1702.       ** Example **
  1703.   
  1704.       ReturnCode = AdeptInKey(LineNumber)
  1705.       
  1706.   
  1707.   
  1708.       AdeptWrite
  1709.       call AdeptWrite LineNumber, Type, Flags, Filename
  1710.       or
  1711.       Value = AdeptWrite(LineNumber, Type, Flags, Filename)
  1712.   
  1713.       Write a message.
  1714.   
  1715.       LineNumber:
  1716.          Line number. Passed to REXX routine from Adept as first
  1717.          parameter.
  1718.       Type:
  1719.          1    Write a message  (Filename is unused)
  1720.          2    edit file using editor (Flags are unused)
  1721.       Flags:
  1722.          1    Force message to force-to-name of current message area.
  1723.          2    Force private
  1724.          4    Force public
  1725.          8    Use MSGTMP.LineNumber file
  1726.       Filename:
  1727.          Name of text file to edit.
  1728.   
  1729.       ** Example **
  1730.   
  1731.       Call AdeptWrite LineNumber,1,4,""            /* Enter a msg */
  1732.       This would write a public message in the current area.
  1733.   
  1734.   
  1735.   
  1736.   
  1737.   
  1738.   
  1739.   
  1740.   
  1741.   
  1742.   
  1743.   
  1744.   
  1745.   
  1746.   
  1747.       AfSysAddIndexEntries
  1748.       RetCode = AfSysAddIndexEntries(fSysHandle)
  1749.   
  1750.       AfSysAddIndexEntries adds entries in the indexes for a file.
  1751.   
  1752.            PARAMETERS
  1753.            fSysHandle- input
  1754.                Handle to the currently open file system.
  1755.   
  1756.  
  1757.   
  1758.  
  1759.  
  1760.            RETURNS
  1761.            Return Code.
  1762.   
  1763.   
  1764.       
  1765.            AfSysAddIndexEntries may return the following values:
  1766.   
  1767.            0           No errors.
  1768.            92          FSYS_ERROR_SEM_TIMEOUT
  1769.            200         FSYS_ERROR_ADDING_DATED
  1770.            201         FSYS_ERROR_ADDING_ANAME
  1771.            202         FSYS_ERROR_ADDING_NAME
  1772.   
  1773.            REMARKS
  1774.            Index data should be set using the AfSysSetIndexXXXX series of
  1775.            functions before adding a file to the indexes.
  1776.   
  1777.            EXAMPLE CODE
  1778.            This example deletes the old index entries for a file, set the 
  1779.            new index data, then adds in the new index entries.
  1780.   
  1781.            FSysDeleteIndexEntries(hFSys)
  1782.            /* set new index data */
  1783.            AfSysGetFileName(fSysHandle, 'Buffer')
  1784.            AfSysSetIndexFilename(fSysHandle, Buffer)
  1785.            AfSysGetFileDate(fSysHandle, 'Date')
  1786.            AfSysSetIndexEntryDate(fSysHandle, Date.1, Date.2, Date.3)
  1787.            AreaNum = FSysGetFileArea(fSysHandle)
  1788.            AfSysSetIndexAreaNumber(fSysHandle, AreaNum)
  1789.            /* add in new index entries */
  1790.            FSysAddIndexEntries(fSysHandle);
  1791.            
  1792.   
  1793.   
  1794.       AfSysClose
  1795.       RetCode = AfSysClose(fSysHandle)
  1796.   
  1797.       AfSysClose close the file system.
  1798.   
  1799.            PARAMETERS
  1800.            fSysHandle - input
  1801.                  Handle to the currently open file system.
  1802.   
  1803.            RETURNS
  1804.            Return Code.
  1805.   
  1806.            AfSysClose may return the following values:
  1807.   
  1808.              0           No errors.
  1809.   
  1810.            EXAMPLE CODE
  1811.            This example calls AfSysOpen and creates new file system 
  1812.            files, then closes the file system.
  1813.   
  1814.            RetCode = AfSysOpen('.\Files', 'fSysHandle', 'FALSE')
  1815.               .
  1816.               .
  1817.            // use the file system.
  1818.               .
  1819.               .
  1820.  
  1821.   
  1822.  
  1823.  
  1824.            RetCode = fSysClose(fSysHandle)
  1825.   
  1826.   
  1827.   
  1828.       AfSysDeleteIndexEntries
  1829.       RetCode = AfSysDeleteIndexEntries(fSysHandle)
  1830.   
  1831.       AfSysDeleteIndexEntries deletes a file from all of the indexes.
  1832.   
  1833.            PARAMETERS
  1834.            fSysHandle - input Handle to the currently open file system.
  1835.   
  1836.            RETURNS
  1837.            Return Code.
  1838.   
  1839.            AfSysDeleteIndexEntries may return the following values:
  1840.   
  1841.            0           No errors.
  1842.            92          FSYS_ERROR_SEM_TIMEOUT
  1843.            190         FSYS_ERROR_DELETING_DATED
  1844.            191         FSYS_ERROR_DELETING_ANAME
  1845.            192         FSYS_ERROR_DELETING_NAME
  1846.   
  1847.            REMARKS
  1848.            AfSysDeleteIndexEntries deletes all refrences to a certain file 
  1849.            in the indexes. It does NOT remove that files record from the 
  1850.            data file.
  1851.   
  1852.            To set which file you wish to delete, you must either search 
  1853.            for, and find the file using the searching functions or you 
  1854.            must use the AfSysSetIndexXXXXX series of functions to set the 
  1855.            correct filename, date, area name and file record offset.  
  1856.            Obviously it is best to search for the file, find it and 
  1857.            confirm it is the file you wish to delete before you delete it.
  1858.   
  1859.            EXAMPLE CODE
  1860.            Assuming you have already set the file index information this
  1861.            example calls AfSysDeleteIndexEntries to delete the file from 
  1862.            the indexes.
  1863.   
  1864.            RetCode = AfSysDeleteIndexEntries(fSysHandle)
  1865.   
  1866.   
  1867.   
  1868.       AfSysOpen
  1869.       RetCode = AfSysOpen(Directory, fSysHandle, Create)
  1870.   
  1871.       FSysOpen should be called by each program in the process which wants
  1872.       to use the file system.
  1873.   
  1874.            PARAMETERS
  1875.   
  1876.            Directory -
  1877.                This is the directory that the files system is located in.
  1878.                Normally a program which uses the Adept file system is 
  1879.                started in the '\Adept' directory and the files system 
  1880.                would then be in '.\Files' or more simply, 'Files'.   The 
  1881.                directory name should NOT end with a backslash or forward 
  1882.                slash.
  1883.   
  1884.  
  1885.   
  1886.  
  1887.  
  1888.            FSysHandle - output
  1889.                This contains the handle to the file system.
  1890.   
  1891.            Create - input
  1892.                Tells the file system whether to open the current file 
  1893.                system files or to create new ones.
  1894.   
  1895.                FALSE - Open current files.
  1896.   
  1897.                TRUE  - Create/Open new files.
  1898.   
  1899.            RETURNS
  1900.            Return Code.
  1901.   
  1902.            AFSysOpen may return the following values:
  1903.   
  1904.              0           No errors.
  1905.              90          FSYS_ERROR_ALLOC_MEM
  1906.              91          FSYS_ERROR_INIT_BIDX
  1907.              100         FSYS_ERROR_OPEN_DATA
  1908.              101         FSYS_ERROR_OPEN_DESC
  1909.              102         FSYS_ERROR_OPEN_PATH
  1910.              103         FSYS_ERROR_OPEN_NIDX
  1911.              104         FSYS_ERROR_OPEN_DIDX
  1912.              105         FSYS_ERROR_OPEN_AIDX
  1913.              180         FSYS_ERROR_CREATING_KEY
  1914.   
  1915.            REMARKS
  1916.            A successful AfSysOpen request returns a handle to the file
  1917.            system. All other calls to the file system functions require 
  1918.            this handle.
  1919.   
  1920.            Note: When you choose to create a new file system, the indexes 
  1921.            are destroyed if they exist. All other files are opened and NOT
  1922.            destroyed.
  1923.            If you wish to create all files from scratch, make sure there 
  1924.            are no files in the directory.
  1925.   
  1926.            You could call AfSysOpen twice with a different directory to 
  1927.            open two different files system to copy entries from one file 
  1928.            system to another.
  1929.   
  1930.            EXAMPLE CODE
  1931.            This example calls AfSysOpen and uses the current file system
  1932.            files.
  1933.   
  1934.            RetCode = FSysOpen('.\Files', 'FSysHandle', 'FALSE')
  1935.   
  1936.       
  1937.   
  1938.   
  1939.   
  1940.   
  1941.   
  1942.   
  1943.   
  1944.   
  1945.   
  1946.   
  1947.   
  1948.  
  1949.   
  1950.  
  1951.  
  1952.   
  1953.   
  1954.   
  1955.   
  1956.   
  1957.   
  1958.   
  1959.   
  1960.   
  1961.   
  1962.   
  1963.   
  1964.   
  1965.   
  1966.   
  1967.   
  1968.   
  1969.   
  1970.   
  1971.   
  1972.   
  1973.   
  1974.   
  1975.   
  1976.   /* Most of these functions are documented above but for those that are 
  1977.   not they soon will be. Continue to look for updates in the AdeptProg.Rar 
  1978.   kit. */
  1979.   
  1980.   
  1981.   
  1982.       AfSysSetIndexAreaNumber
  1983.       AfSysSetIndexEntryDate
  1984.       AfSysSetIndexFileName
  1985.       AfSysSetIndexRecordOffset
  1986.       AfSysSetFileName
  1987.       AfSysGetFileName
  1988.       AfSysSetUploader
  1989.       AfSysGetUploader
  1990.       AfSysSetFileSize
  1991.       AfSysGetFileSize
  1992.       AfSysSetFileArea
  1993.       AfSysGetFileArea
  1994.       AfSysSetFileDate
  1995.       AfSysGetFileDate
  1996.       AfSysGetFileDescription
  1997.       AfSysSetFileDescription
  1998.       AfSysSetListable
  1999.       AfSysGetListable
  2000.       AfSysGetFreeFile
  2001.       AfSysGetFreeTime
  2002.       AfSysGetFreeBytes
  2003.       AfSysgetSecLevel
  2004.       AfSysGetCopyFile
  2005.       AfSysGetAge
  2006.       AfSysGetDlAble
  2007.       AfSysGetPathName
  2008.       AfSysGetTimesDl
  2009.       AfSysSetPathIndex
  2010.       AfSysSetAge
  2011.       AfSysSetDlAble
  2012.  
  2013.   
  2014.  
  2015.  
  2016.       AfSysSetSecLevel
  2017.       AfSysSetReadDescFlag
  2018.       AfSysSetCopyFile
  2019.       AfSysSetFileRecord
  2020.       AfSysSetDescOffset
  2021.       AfSysReadFilePath
  2022.       AfSysWriteFilePath
  2023.       AfSysFindFirstName
  2024.       AfSysFindNextName
  2025.       AfSysFindExact
  2026.       AfSysListFirst
  2027.       AfSysListNext
  2028.       AfSysZeroFileRecord
  2029.       AfSysFirstName
  2030.       AfSysAddIndexEntries
  2031.       AfSysResetFilePtr
  2032.       AfSysResetDescFilePtr
  2033.       AfSysReadDescriptionLine
  2034.       AfSysRawReadFileRecord
  2035.   
  2036.       AdeptComPutC
  2037.       AdeptComWrite
  2038.       AdeptComPeekByte
  2039.       AdeptComGetByte
  2040.       AdeptComDoDTR
  2041.       AdeptComFlush
  2042.       AdeptComGetString
  2043.       AdeptComGetBlock
  2044.       AdeptComWaitConnect
  2045.       AdeptComDial
  2046.       AdeptRawOpenSocket
  2047.       AdeptRawComOpen
  2048.       AdeptRawComClose
  2049.       AdeptRawComGetBlock
  2050.       AdeptRawComGetString
  2051.       AdeptRawComWrite
  2052.       AdeptRawSetBPS
  2053.       AdeptRawComLink
  2054.       ReturnComPort
  2055.   
  2056.       AdeptTimeLeft
  2057.       AdeptCurPos
  2058.       AdeptSayGen
  2059.       AdeptPlayMM
  2060.       Adept16BitCRC
  2061.       Adept32BitCRC
  2062.       AdeptCheckForMail
  2063.       AdeptChangeGroup
  2064.       AdeptSetBit
  2065.       AdeptUnsetBit
  2066.       AdeptCheckBit
  2067.       AdeptGetVar
  2068.       AdeptPutVar
  2069.       AdeptPrint
  2070.       Print
  2071.       AdeptPrintL
  2072.       Printf
  2073.       AdeptCall
  2074.       AdeptInput
  2075.       AdeptSend
  2076.  
  2077.   
  2078.  
  2079.  
  2080.       AdeptRecv
  2081.       AdeptMenu
  2082.       AdeptConvert
  2083.       AdeptCls
  2084.       AdeptWrite
  2085.       AdeptRead
  2086.       AdeptFile
  2087.       AdeptMessage
  2088.       AdeptShow
  2089.       AdeptSleep
  2090.       AdeptInKey
  2091.       AdeptWaitKey
  2092.       AdeptPutKey
  2093.       AdeptCheckCard
  2094.       AdeptSetTimer
  2095.       AdeptTimedInkey
  2096.       AdeptTimerUp
  2097.       AdeptLocation
  2098.       AdeptHitReturn
  2099.       AdeptMore
  2100.       AdeptPause
  2101.   
  2102.       AChatSendMsg     - Multi-node chat
  2103.       AChatGetMsg      - Multi-node chat
  2104.       AChatDeleteAll   - Multi-node chat
  2105.       AChatUnavailable - Multi-node chat
  2106.   
  2107.       AdeptCheckCard   - Validate credit card
  2108.   
  2109.       -- Userbase minipulation functions --
  2110.   
  2111.       AdeptGetUser     - Get a user and pull their record into a temp var
  2112.       AdeptNextUser    - Get next user in the file and pull into a temp
  2113.                          var
  2114.       AdeptPrevUser    - Get prev user in the file and pull into a temp
  2115.                          var
  2116.       AdeptGetUserVar  - Get functions for temp user in memory
  2117.       AdeptPutUserVar  - Put functions for temp user in memory
  2118.       AdeptSaveUser    - Saved the temp memory vars to users record
  2119.   
  2120.  
  2121.   
  2122.  
  2123.  
  2124.   ┌──────────────────────────────────────────────┐
  2125.   │ ■ CTRL AND OTHER KEYS AND THEIR RETURN CODES │
  2126.   └──────────────────────────────────────────────┘
  2127.   
  2128.     CTRL_A = 1        CTRL_B = 2        CTRL_C = 3        CTRL_D = 4
  2129.     CTRL_E = 5        CTRL_F = 6        CTRL_G = 7        CTRL_H = 8
  2130.     CTRL_I = 9        CTRL_J = 10       CTRL_K = 11       CTRL_L = 12
  2131.     CTRL_N = 14       CTRL_O = 15       CTRL_P = 16       CTRL_Q = 17
  2132.     CTRL_R = 18       CTRL_S = 19       CTRL_T = 20       CTRL_U = 21
  2133.     CTRL_V = 22       CTRL_W = 23       CTRL_X = 24       CTRL_Y = 25
  2134.     CTRL_Z = 26
  2135.     HOME   = 71+1024  UP     = 72+1024  PGUP   = 73+1024  BS     = 24
  2136.     FWD    = 77+1024  END    = 79+1024  DN     = 80+1024  PGDN 1+1024
  2137.     INS    = 82+1024  DEL    = 83+1024  LEFT   = 75+1024  RIGHT  = 77+1024
  2138.   
  2139.   
  2140.  
  2141.   
  2142.  
  2143.  
  2144.   ┌──────────────────┐
  2145.   │ ■ REPORTING BUGS │
  2146.   └──────────────────┘
  2147.   
  2148.   If you are reporting a bug, please, try to be as specific as possible.
  2149.   I.E. - "The mailer is broken" doesn't give us any idea as to what is
  2150.          broken in the mailer.  Also please to not get discouraged if
  2151.          you are having problems.  Many times it's something simple
  2152.          that can be fixed with a quick phone call.  So please leave
  2153.          a phone number you may be reached at.                 
  2154.   
  2155.   
  2156.   Use the form below to report bugs that you find in the software. This is
  2157.   the ONLY accepted way to report a bug.
  2158.   
  2159.   === AdeptXBBS Bug Report Form ==========================================
  2160.   =                                                                      =
  2161.   = This form has been created to allow a more organized approach to bug =
  2162.   = reporting. Please fill it out and send it to julies@adeptsoft.com,   =
  2163.   = netmail it to 1:231/1320.0@FidoNet, or FTP to adeptsoft.com.         =
  2164.   =                                                                      =
  2165.   = The current bug list can be found on the support bbs FTP site in the =
  2166.   = BUG_REPORTS directory or by FREQing it from 1:231/1320.0@FidoNet     =
  2167.   = using the magic name of BUGLIST                                      =
  2168.   =                                                                      =
  2169.   = Only report one bug/problem per form please. This will allow better  =
  2170.   = tracking.                                                            =
  2171.   =                                                                      =
  2172.   = *Do Not Use This Form To Ask For New Features*                       =
  2173.   ========================================================================
  2174.   
  2175.   ---8<----cut here----8<---
  2176.   
  2177.   Date          : ________
  2178.   Sysop Name    : _____________________________________
  2179.   E-Mail Address: _____________________________________
  2180.   Fido Address  : _____________________________________
  2181.   BBS Number    : _____________________________________
  2182.   Voice Number  : _____________________________________
  2183.   
  2184.   
  2185.   What version of AdeptXBBS are you running?   : ___________
  2186.   What version of Gatekpr.Exe are you running? : ___________
  2187.   
  2188.   Put an `X' for which area this bug report is in reference to:
  2189.   
  2190.   _ File Area
  2191.   _ NNTP
  2192.   _ Telnet
  2193.   _ IRC
  2194.   _ Mailer (FidoNet)
  2195.   _ Menu System (.menu files and commands)
  2196.   _ Message Area
  2197.   _ Offline Mail
  2198.   _ Meta Variables
  2199.   _ REXX
  2200.   _ Documentation
  2201.   _ Interface
  2202.   _ Gatekpr (* MUST include your GateKpr.Ctl, AREA.CONTROL, FILE.CONTROL,
  2203.                Message_Areas and the packet that is causing problems *)
  2204.  
  2205.   
  2206.  
  2207.  
  2208.   
  2209.   Has this problem occurred more than once?  ____________________________
  2210.   Can you reproduce it? ________________________________________________
  2211.   
  2212.   What problem are you having? (Be as detailed and specific as possible,
  2213.   if you can repeat the problem please try to explain as best as possible
  2214.   how to exactly make it occur):
  2215.   ______________________________________________________________________
  2216.   ______________________________________________________________________
  2217.   ______________________________________________________________________
  2218.   ______________________________________________________________________
  2219.   ______________________________________________________________________
  2220.   ______________________________________________________________________
  2221.   ______________________________________________________________________
  2222.   ______________________________________________________________________
  2223.   ______________________________________________________________________
  2224.   ______________________________________________________________________
  2225.   ______________________________________________________________________
  2226.   ______________________________________________________________________
  2227.   
  2228.   Is there a good time we can call you if we need some more verbal
  2229.   information relating to this problem report? _________________________
  2230.   
  2231.   ---8<----cut here----8<---
  2232.   
  2233.   *** If error is with GateKeeper, did you include your control files and
  2234.   any packets which cause Gatekeeper to run erratically? (Control files 
  2235.   include GateKpr.Ctl, AREA.CONTROL, FILE.CONTROL, Message_Areas)
  2236.   Inclusion of these files will greatly aid in the resolution of your
  2237.   problem.
  2238.   
  2239.   "Gather enough information, and the solution will be obvious"
  2240.   
  2241.   
  2242.  
  2243.   
  2244.  
  2245.  
  2246.   
  2247.