HP Forums
Sharp BASIC anomaly - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: Not HP Calculators (/forum-7.html)
+--- Forum: Not remotely HP Calculators (/forum-9.html)
+--- Thread: Sharp BASIC anomaly (/thread-19448.html)



Sharp BASIC anomaly - polbit - 01-19-2023 12:53 AM

I stumbled upon something a bit strange playing around with few of my Sharp pockets.

The following code:

Code:
10 P$ = "PASSWORD"
20 IF P$ = "PASSWORD" THEN PRINT "CORRECT"

Executes correctly on PC-1500, however it fails on both EL-5500II and PC-G850VS. It appears the later two only recognize first seven characters in a string, despite being newer, so only the following works:

Code:
10 P$ = "PASSWORD"
20 IF P$ = "PASSWOR" THEN PRINT "CORRECT"

This might be a well-known fact, but figured I'd share as I found it interesting...


RE: Sharp BASIC anomaly - Dave Britten - 01-19-2023 06:45 PM

Correct, in most Sharps, the variables A-Z share the same (fixed) memory locations as A$-Z$, and thus the space for a float/numeric variable ends up being big enough to hold strings of 7 characters. (8 bytes each in most models, I believe.)

Later models (I think this includes your EL-5500II and PC-G850) can DIM larger strings, but they have to be declared as arrays (which can have just a single element if you wish).

e.g. DIM R$(0)*26 gives you an array R$ with one element (subscript 0) that will hold a string up to 26 characters in length. DIM NM$(10)*10 gives you an array with 11 elements (subscripts 0-10) that hold 10 characters each.

EDIT: And if you use "simple variables" (i.e. two-character variable names that are allocated dynamically upon use), those hold strings up to 16 characters in length. AA$="PASSWORD12345678" should work as expected.

The PC-1500 has a more traditional BASIC that dynamically allocates space for strings depending on length.


RE: Sharp BASIC anomaly - polbit - 01-19-2023 07:43 PM

Thanks for a great explanation Dave, makes sense now!