home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dscalc.zip / DSGO.SC < prev    next >
Text File  |  1990-01-23  |  7KB  |  156 lines

  1. ;───────────────────────────────────────────────────────────────────────────────
  2. ; DSCalc by Dave Schlieder.             CopyRight Dave Schlieder 1989, 1990
  3. ; Shared Logic, Inc.                    All rights reserved
  4. ; 1016 Second Street
  5. ; Encinitas, Ca 92024
  6. ; (619)943-1086
  7. ; Version 1.10
  8. ;
  9. ;───────────────────────────────────────────────────────────────────────────────
  10. ;
  11. ; Everything you could want in a calculator and more!
  12. ; DSCalc is a full function calculator designed to run in Paradox.
  13. ;
  14. ; DSCalc was designed so that it can be added into any Paradox application
  15. ; and called upon no matter what the SysMode() of the current session is.
  16. ; All of the Variables used in DSCalc are declared as private and will not
  17. ; alter the state of any existing Variables.
  18. ; All of the Procedure names start with "DS." and can be reviewed using
  19. ; InfoLib(LIBNAME).
  20. ;
  21. ;
  22. ; DSCalc will return the last entry via retval if so chosen by the operator
  23. ; and can be evaluated to accept or reject it as required by the programmer.
  24. ; Return values are either numeric, False or Error.
  25. ;
  26. ; Of course DSCalc can be run by itself and perform all of the functions
  27. ; listed below:
  28. ;
  29. ; What can DSCalc do?
  30. ;
  31. ;        1) Basic four function math.
  32. ;        2) Display and print a running Tape (Up to 500 Entries).
  33. ;        3) Remember nineteen memory values (and save them for future use).
  34. ;        4) Trigonometry functions
  35. ;        5) Financial Calculations
  36. ;        6) On line Help
  37. ;        7) Custom setup
  38. ;        8) Add-on Custom Calculations
  39. ;
  40. ;───────────────────────────────────────────────────────────────────────────────
  41. ;
  42. ;  How to call and start DSCalc.
  43. ;  The call to DSCalc is:
  44. ;
  45. ; 1)   DS.ApLib.a = Variable Name
  46. ;
  47. ; 2)   ReadLib DS.ApLib.a DS.Calc.v
  48. ;
  49. ; 3)   DS.Calc.v( Parameter List )
  50. ;
  51. ; 4)   Return Retval
  52. ;
  53. ;
  54. ;     EXPLANATIONS:
  55. ;
  56. ;       Command 1)  Assign to the variable DS.ApLib.a the name of the library
  57. ;                   that contains the procedures for DSCalc. This also defines
  58. ;                   to DSCalc a PRIVATE AutoLib for the rest of the procedures
  59. ;                   used by DSCalc. (This is supplied so that the full path
  60. ;                   name that contains the library may be included. Don't
  61. ;                   forget to use the double backslash when setting a path
  62. ;                   other than the current directory. ie "c:\\paradox3\\dscalc")
  63. ;
  64. ;       Command 2)  Read from the Library defined by the variable DS.ApLib.a the
  65. ;                   calling procedure for DSCalc.
  66. ;
  67. ;       Command 3)  Execute the procedure passing a parameter list.
  68. ;
  69. ;       Command 4)  Return the value returned by DSCalc.
  70. ;
  71. ;
  72. ;    Parameter list:
  73. ;
  74. ;          1)
  75. ;             DS.Calc.v(DS.ApLib.a,...,...,...,...,...)
  76. ;             This is the name of the library that contains the procedures
  77. ;             for DSCalc. It sets the PRIVATE AutoLib for DSCalc.
  78. ;
  79. ;          2)
  80. ;             DS.Calc.v(...,Tape Length,...,...,...,...)
  81. ;             A number that sets the tape length for DSCalc.
  82. ;             A minimum length of 20 entries in the tape to a maximum of
  83. ;             500 entries. If no value is entered or an invalid entry is
  84. ;             made, DSCalc defaults to 50. This number sets up four arrays
  85. ;             in DSCalc so if memory may pose a problem, use the MINIMUM
  86. ;             amount of tape entries that will be required.
  87. ;
  88. ;          3)
  89. ;             DS.Calc.v(...,...,SetSwap Number,...,...,...)
  90. ;             A number that sets SetSwap for DSCalc.
  91. ;             The minimum SetSwap is 35000 and a maximum of MemLeft() is
  92. ;             accepted. If no value is entered or an invalid entry is made,
  93. ;             DSCalc defaults to 35000. The higher the SetSwap is set, the
  94. ;             slower DSCalc will run as it swaps Procedures and Variables
  95. ;             in and out of memory.
  96. ;
  97. ;          4)
  98. ;            DS.Calc.v(...,...,...,Save Memory,...,...)
  99. ;            Legal entries are either True or False. If no entry is made or
  100. ;            an invalid entry is made, DSCalc defaults to False.
  101. ;            When set to True, DSCalc will play a script called DSSvMem to
  102. ;            re-assign to memory any Variables saved by an earlier use of
  103. ;            DSCalc (if it exists) and upon exiting, it will re-save the memory
  104. ;            variables.  To save the memory arrays, DSCalc uses print file
  105. ;            to create the script in the private directory.  If that script
  106. ;            already exists, the application uses the RUN command to delete
  107. ;            the existing file.
  108. ;
  109. ;          5)
  110. ;            DS.Calc.v(...,...,...,...,Set Custom AutoLib,...)
  111. ;            Any string entry here sets an Autolib for any custom menus and/or
  112. ;            formulas defined by the programmer.  See the script "DSCustom"
  113. ;            for an example of how to add in a custom formula to the calculator.
  114. ;            Must be a valid library for the custom functions to work within
  115. ;            the calculator.
  116. ;
  117. ;          6)
  118. ;            DS.Calc.v(...,...,...,...,...,Printer On/Off)
  119. ;            The only accepted value for this parameter is "On" (Any Case i.e.
  120. ;            "ON", "oN", "On", and "on" are all acceptable). When the parameter
  121. ;            is set to "On", then when requested by the user, DSCalc will send
  122. ;            the current contents of the tape to the current ONLINE printer
  123. ;            at the time of the request whether it be LPT1, LPT2, etc. DSCalc
  124. ;            simply checks printer status with PrinterStatus().
  125. ;            Beware: PrinterStatus() always returns True if the printer port
  126. ;            has been set to LPT2 or any port other than LPT1 and the printer
  127. ;            is off, offline, or even non-existent. On some fast machines such
  128. ;            as a 386, PrinterStatus() may return True no matter what the status
  129. ;            really is on the first check of PrinterStatus(), therefore
  130. ;            DSCalc checks the PrinterStatus() twice.
  131. ;───────────────────────────────────────────────────────────────────────────────
  132.  
  133.  
  134. ds.aplib.a = sdir() + "dscalc"
  135.    ; assignment may be modified by user if the library has
  136.    ; been renamed or resides in a different directory.
  137.  
  138. if not isfile( ds.aplib.a + ".lib" ) then
  139.    if not isfile( sdir() + "dscalc.sc" ) then
  140.       beep
  141.       sleep 250
  142.       beep
  143.       message "The library and the main scripts for DSCalc do" +
  144.               " not exist! Press a key."
  145.       ds.aplib.a = getchar()
  146.       return
  147.    endif
  148.    play sdir() + "dscalc"
  149. endif
  150.  
  151.  
  152. readlib ds.aplib.a ds.calc.v
  153.  
  154. ds.calc.v(ds.aplib.a,"","","","","")
  155.  
  156. return retval