Frequently Asked Questions


Where languages such as C and C++ were designed to develop compilers, device drivers, operating systems, etc. Sheerpower was specifically designed to develop business applications.

Sheerpower is not for everyone. It is for those who must design, build, and maintain “mission critical” business applications.

Sheerpower runs on Windows Windows 10 and Windows Server 2016 and above.  Download Sheerpower here.

We give Sheerpower out for free. In exchange we want your feedback. We would love for Sheerpower to be used by all business programmers (novices, hobbyists and professionals alike). Please send any feedback to touchtechsupport@gmail.com.

Every new download of SheerPower contains the free license information in it as shown below. This license information never expires:
          Key: 6929-B65F-AC8D-3234-3132-3331-3939-0003-AE4F-000A
          Name:  unlimited-use
          Email:  unlimited-use
        

Yes.

Yes, there's a procedure for this.

The primary reason to deploy your source code into an .SPRUN file is to hide it from end users. No such tool exists and none is planned because in the wrong hands this would allow people to illegally reverse-engineer deployed applications.
You have the option to provide end-users with the source code if you want to. SheerPower runs source code just fine -- it starts by internally compiling it at a rate in excess of 200,000 lines of code per second -- and then runs the internally compiled code at the same speed as deployed code.

Sheerpower has full access to any graphics library that includes a DLL to access it.

SheerPower comes bundled with our own proprietary database engine called ARS (Advanced Record System).
In addition, Sheerpower supports all ODBC compatible database engines such as Microsoft ACCESS and Oracle. ODBC stands for "Open Database Connectivity". ODBC is a universal database interface used to access a wide range of databases. For more information and setup instructions see the Sheerpower and ODBC chapter in the documentation.

Sheerpower programs cannot be run from any "Windows Temporary Folder". If you get an email with a Sheerpower program attached, it cannot automatically run. You must first copy the program to another folder before you can run it. We intentionally designed this feature in to uphold our very high security standards.

Yes, Sheerpower can run under Linux using the WIN64 library.

The GOLD key is a specially mapped key used to create many of the special keystrokes available in the Sheerpower Rapid Development Environment (SPDEV). The [Esc] (escape) and the [NumLk] (numbers lock) keys on your physical keyboard are GOLD keys. See Appendix F - Keystrokes for SheerPower Rapid Development Environment for complete details on how to use the GOLD key and other special keystrokes in SPDEV.

Yes. In SPDEV, click on Options in the toolbar, then choose Keystroke Function Mappings. The keyboard mapping tool will open where you can select the keystrokes and define function to associate with them. See Appendix H in the documentation for more information.

No, Sheerpower does not see any difference from a variable named x$ and X$.

Yes, Sheerpower has COM port support. Please see the chapter in our documentation on Writing Network Applications and Accessing Devices. The end of that chapter contains the section on Communication Port Support. Once the COM port has been opened, you just PRINT or INPUT to/from the COM port. When inputting, if there is no data you will get back a zero-length string.

Yes. We devoted a huge amount of time in developing our own patented math package. The math package (called Perfect Precision) avoids all of the "floating point math" precision problems that one always encounters. Details on Sheerpower's "Perfect Precision" math package can be seen here.

One caveat of our "Perfect Precision" math package is that it does not support numbers greater than ten-to-the-18th-power. So, this limits its use when large magnitude numbers are required.
Re: The zero denominator error: By default, Sheerpower returns a "division by zero" error. However, we do provide a DIV0() function for dealing with "division by zero" without giving an error.

Sheerpower supports BCC and also "friendly name". We do not support priority flags.

You cannot do Javascript rollovers in INPUT DIALOGBOX, but you can make a fancy user-interface with all of the browser features by writing a HANDLER, then use the browser for your user-interface.
Check out the CGI Interface section in the Writing Network Applications and Accessing Devices chapter of the documentation.

You would use the following code:
open file myfile: name 'somefile.xxx', unformatted
line input #myfile: rec$// read a "chunk" of binary data first
bytes$ = left(rec$, 121)// Just the first 121 bytes
Where 'somefile.xxx' is the name of your binary file.

Try the following code:
//Create your output text file:
outfile$ = 'myfile.txt'
open file out_ch: name outfile$, access output
for i=1 to 100
  print #out_ch: i, sqr(i)
next i
close #out_ch
// Now print it out to the default printer
pass print: outfile$
end
The other way to do this is to output HTML code instead. Then invoke the browser to display and print it:
//Create your output html file
outfile$ = 'myfile.html'
open file out_ch: name outfile$, access output
print #out_ch: '<html><body>'
print #out_ch: '<table border=3 bgcolor=lightblue>'
for i=1 to 100
  print #out_ch: '<tr>'
  print #out_ch: '<td>'; i; '<td>'; sqr(i)
  print #out_ch: '</tr>'
next i
print #out_ch: '</table>'
print #out_ch: '</body></html>'
close #out_ch
// Now have the browser handle it
pass url: outfile$
end
You can create high-performance dynamic web applications now in Sheerpower with the new web scripting feature. See the Sheerpower Web Scripting chapter in the documentation. It's simple to use, powerful and very secure!

The following code example illustrates this task:
login_url$ = 'http://some_url.com/'
user$= 'username'
pass$= 'password'
open_url$= 'http://some_url.com/newpage.html'
// log them in
open file http_ch: name 'http-post://' + quote$(login_url$),
                                     data 'ulogin='+user$ +
                                            '&uhaslo=' + pass$
close #http_ch
// grab data from webpage
open file http_ch: name open_url$
// Now display all of the html that we get back
do
  line input #http_ch, eof eof?: rec$
  if eof? then exit do
  print rec$
loop
end

Currently you can not eliminate all submit buttons. You must have at least one.

The way to do this is to regenerate the DIALOGBOX string placing the default where it needs to be:
form_menu$ = '<form>'
form_menu$ = form_menu$ + 'Age: <select name=age>'
form_menu$ = form_menu$ + '<option value="_age_">_age_'
form_menu$ = form_menu$ + '<option value="21">21'
form_menu$ = form_menu$ + '<option value="22">22'
form_menu$ = form_menu$ + '<option value="23">23'
form_menu$ = form_menu$ + '</select>'
form_menu$ = form_menu$ + '</form>' 
last_age$ = "23"
do
  default_age$ = last_age$
  default_form$ = replace$(form_menu$,'_age_='+default_age$)
  input dialogbox default_form$: choice$
  if _exit then exit do
  for item = 1 to pieces(choice$, chr$(26))
    z0$ = piece$(choice$, item, chr$(26))
    varname$ = element$(z0$, 1, '=')
    value$ = element$(z0$, 2, '=')
    select case varname$
      case 'age'
        last_age$ = value$
      case else
    end select
  next item
loop
end

We compile the above example in less than 1/1000th of a second. But, to then do the 100 million perfect-precision calculations does take some time. All of the math is done in software (no hardware machine instructions because they lose precision instantly). With Sheerpower you will never have penny rounding errors and incorrect answers. The hardware math is much faster but always wrong when dealing with dollars and cents.

They are both tools for use with ARS (Advanced Record System). See Appendix N Advanced Record Systems (ARS) Utilities for more details.
ARSBACKUP backs up .ARS files while they are in use, with no data loss. When backing up multiple ARS files, they are all synced before the backup begins. This way all data is self-consistent between .ARS files.
ARSRESTORE restores .ARS_BACKUP files back to the original .ARS file.
Their syntax is just like COPY. But the behavior is different in these ways:
    The OUTPUT SPEC must be a PATH (no file names or file types)

  • The INPUT PATH and OUTPUT PATH must be DIFFERENT (prevents files from accidentally being overwritten)

  • For ARSBACKUP, any .ARS files are copied as .ARS_BACKUP files

  • For ARSRESTORE, any .ARS_BACKUP files are copied as .ARS files

For example, inside the Command Prompt program window:
        // backup everything
        c:\sheerpower\ars\arsbackup *.*  d:\backups\payroll\
        // backup just the ARS files
        c:\sheerpower\ars\arsbackup d:\payroll\*.ars  d:\newpayroll\
      
For advanced backups and restores, you can specify a COMMAND FILE:
  ARSBACKUP - include backupfile.ars_cmd
This text file consists of one or more text lines. Each line has the format of:
  INPUTSPEC OUTPUTSPEC

Currently we don't support anything over 10^18th. We are definitely looking into extending into the higher realms. Our current focus is for precision and not for magnitude. So, we did the trade-off of 34 digits of precision for our first cut. We do however understand the requirement in scientific fields for the high magnitude numbers.

For advanced editing features, Sheerpower now supports being edited with Visual Studio Code. Visual Studio Code supports line numbers and also a Sheerpower debugging environment.

For finding EXCEPTIONS at runtime, you can PULL DOWN on the "---Routine Definitions ---" menu in the SPDEV toolbar. Choose the routine that has the error. SPDEV will automatically place your cursor at the start of the routine.
Then you can use the ALT/DOWN keystroke (Alt key + Down Arrow key) and move down the file to the line in the routine that the exception occurred. The "How many lines" dialog box will open.
Just enter the line# offset from the exception. For example, if the exception error was:
          Division by zero at DO_TOTALS.0005
      
This means a division by zero error is in the routine named "DO_TOTALS", the 5th line down. You would then choose "DO_TOTALS" from the Routine Definitions list, press Alt/Down arrow and enter in a 5. SPDEV will then place your cursor in the 5th line down from the start of that routine.

Although Sheerpower doesn't have its own GUI editor, you can send HTML code directly to the browser using the new web scripting functionality in Sheerpower. See the Sheerpower Web Scripting chapter in our documentation. It's simple to use, powerful and very secure!
Or, you can use any HTML GUI editor to make your forms. Then you can use the Input Dialogbox statement to use the form you created with the HTML GUI editor.
        INPUT DIALOGBOX '<sheerpower src="location of your HTML form">': resp$
      

In the very rare case that recursion is required in a business application, local values can be stored in a simple array or cluster array and then indexed by the recursion level. This method is called “memoization” and is the preferred way to avoid costly recursions in all programming languages.

The following example shows how you can append data to a file using Sheerpower:
        open file myfile_ch: name 'myfile.txt', access outin
        do
          line input #myfile_ch, eof eof?: z0$ 
          if eof? then exit do
        loop
        print #myfile_ch: 'This is a new line added to the file' 
        close #myfile_ch

Currently, the way to precompile an .SPINC file is:
    Rename your .SPINC file to a .SPSRC file.

  • DEPLOY the .SPSRC file -- this might require DECLARING variables and such right now to avoid various error messages. An .SPRUN file will be created.

  • Rename the .SPRUN file to a .SPLIB file

  • Rename the .SPSRC file back to a .SPINC file

Now you can call the SPLIB file in your program as follows:
  %include library 'filename.splib'
Creating the SPLIB file allows you to have routines used by applications that cannot be seen by anyone (i.e. if passwords are hard-coded in a routine). This functionality will be more fully integrated at a later date.

You can change the default appearance of a MENU by opening the console window by clicking on its icon in the SPDEV toolbar (the blue square with a lightning bolt through it) and choose:
  Options --> Colors or Fonts
The "Menus..." and "Menu Headings..." options allow you to make changes to the default font settings for menus.
Alternatively, you can use "input dialogbox" and create a drop down SELECT menu in a dialogbox window, where you can put in your own background image, colors and different fonts. See Chapter 9 in the SheerPower documentation.
To change the default appearance of a DIALOGBOX, open the console window by clicking on its icon in the SPDEV toolbar (the blue square with a lightning bolt through it) and choose:
  Options --> Colors or Fonts
The "Dialog Box Input..." and "Dialog Box Display..." options allow you to make changes to the default font settings for dialogboxes.

No, you have to include the following .INI file and install it on the other computers in order for your color and font changes to remain:
  sp4gl_xxxx.ini
Where "xxxx" is the name of user's LOGIN name.
This .INI file can be found in your SheerPower folder--the default installation location is:
  c:\sheerpower

To uninstall Sheerpower:
    Get into your computer's "Control Panel"

  • Double-click on "Programs and Features"

  • Select "Sheerpower" from the program list

  • Click on "Uninstall"

This will only uninstall the Sheerpower files that the original installation placed on your hard drive. Any files and programs that you have created will remain intact inside the Sheerpower folder. You can also uninstall Sheerpower by double-clicking on the Uninstall program file inside the Sheerpower folder on your hard drive.

Yes.