Post Reply 
Usage of MID()
04-15-2022, 09:41 PM
Post: #1
Usage of MID()
If I set up a string STR1:="123";

Then I use MID(STR1,9), it will return the last digit "3", even though it is the 3rd position of the string, I would thought it would have returned "" given that there is nothing in the 9th position.

Using PUREBASIC for example, I get nothing output to terminal.

MID("123",6) on the Prime, returns 3.

Is that normal?
Find all posts by this user
Quote this message in a reply
04-16-2022, 12:18 PM
Post: #2
RE: Usage of MID()
(04-15-2022 09:41 PM)matalog Wrote:  If I set up a string STR1:="123";

Then I use MID(STR1,9), it will return the last digit "3", even though it is the 3rd position of the string, I would thought it would have returned "" given that there is nothing in the 9th position.

Using PUREBASIC for example, I get nothing output to terminal.

MID("123",6) on the Prime, returns 3.

Is that normal?

I don't like it but that's the way it works on mine, too.

Tom L
Cui bono?
Find all posts by this user
Quote this message in a reply
04-16-2022, 01:30 PM
Post: #3
RE: Usage of MID()
It doesn't work like that on the 50g, SUB(4,4,"123") doesn't return anything.

Casio CG50 StrMid("123",5,5) doesn't return anything.

I don't know of another language where MID will return something outside of the set range.
Find all posts by this user
Quote this message in a reply
04-16-2022, 01:56 PM
Post: #4
RE: Usage of MID()
(04-15-2022 09:41 PM)matalog Wrote:  MID("123",6) on the Prime, returns 3.

With lower-cased mid, bug is gone (at least on the emulator)

CAS> mid("123",6)      → ""
Find all posts by this user
Quote this message in a reply
04-16-2022, 03:30 PM (This post was last modified: 04-16-2022 03:35 PM by matalog.)
Post: #5
RE: Usage of MID()
(04-16-2022 01:56 PM)Albert Chan Wrote:  
(04-15-2022 09:41 PM)matalog Wrote:  MID("123",6) on the Prime, returns 3.

With lower-cased mid, bug is gone (at least on the emulator)

CAS> mid("123",6)      → ""

And confirmed on a G2.

Is there any way to ensure the CAS version of MID will be used from any program?

That should be enough to all it a bug. There is no reason to have MID behave differently in CAS than Home.
Find all posts by this user
Quote this message in a reply
04-16-2022, 05:06 PM (This post was last modified: 04-16-2022 06:40 PM by StephenG1CMZ.)
Post: #6
RE: Usage of MID()
This will work in PPL:
ST:="123";
CAS("mid(ST, 6) ");
It also works from CAS home screen - I haven't tried it within a CAS program.

Stephen Lewkowicz (G1CMZ)
https://my.numworks.com/python/steveg1cmz
Visit this user's website Find all posts by this user
Quote this message in a reply
04-16-2022, 07:10 PM
Post: #7
RE: Usage of MID()
(04-16-2022 05:06 PM)StephenG1CMZ Wrote:  This will work in PPL:
ST:="123";
CAS("mid(ST, 6) ");
It also works from CAS home screen - I haven't tried it within a CAS program.

That is the second time this week I have seen a suggestion to use CAS( something) as a work around.

What does that use of CAS do, as it usually contains more quotations that you would usually see?

Is it documented in the manual?
Find all posts by this user
Quote this message in a reply
04-16-2022, 07:35 PM
Post: #8
RE: Usage of MID()
The short answer:
The expression is parsed by CAS and more information is available in CAS help.
I have seen CAS(string) used, and also CAS.function (e.g. CAS.mid(...) ).
It's an alternative to just using mid within a CAS program.
Note that MID is normally the PPL version and mid the CAS version, though their are exceptions.

I am sure the experts can explain it much better.

Stephen Lewkowicz (G1CMZ)
https://my.numworks.com/python/steveg1cmz
Visit this user's website Find all posts by this user
Quote this message in a reply
01-12-2023, 01:54 AM
Post: #9
RE: Usage of MID()
matalog,

Thanks for posting. And thanks to the others for their comments and confirmation. I filed a bug report for this on the bug tracking site I’ve set up. … and the bug got fixed! Big Grin

(If anyone reading this would like an account on the bug tracker I’ve set up to help organize matters, just let me know by PM.)
Find all posts by this user
Quote this message in a reply
01-19-2023, 08:37 AM
Post: #10
RE: Usage of MID()
Unfortunately, the fix has broken at least one program; see https://www.hpmuseum.org/forum/thread-11...#pid168494. Luckly, there, a quick patch to the game’s source code (for loading “sayings”) seems to do the trick. (E.g., changing “DIM(str)==1” to “DIM(str)<2”.)
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: