Problem with @INT[ value] in V26

May 22, 2013
34
0
To test an upgrade fom v19 to v26, strange thing happened.
Wen starting TCC, it normaly displays a logo on top of the window, but under v26 it displays something started with "USAGE: DRAWBOX...
Aha.. something changed in V26? No, my code is absolutely right. Ok, lets start the debugger.
kidding? In the debugger, it works fine:

@echo off
set cols=160
set line=** %ostype *** TCC %_version%.%_build **
set left=%@int[%@eval[%cols/2 - %@len[%line]/2]]
set right=%@int[%@eval[%left+%@len[%line]+4]]
drawbox 0 %left 4 %right 2 BRIGHT WHITE ON BLUE FILL BLUE
Scrput 2 %@eval[%left+3] bright White on Blue %line
REM to show what happens
echo %left %right
pause

This is what happens. Under the debugger %left and %right show the correct integer value. But when start normally, the function @INT simply does nothing.

Even from the command prompt:
echo INT@[4,3] returns 4,3
 
Last edited:
Apr 18, 2014
250
8
That looks like a problem with the decimal separator. Type OPTION at the prompt, then select the advanced tab and check what is set for the decimal separator:

decimalsep.JPG
 
Apr 18, 2014
250
8
Thus it is a bug in the debugger? Or you just dit nor read my post..
Yes I did read your post, did you try my suggestion?

I've no idea if there's a bug in the debugger; I'm not associated with JP Software, I'm just another user trying to be helpful. You reported that @INT[4,3] isn't working at the prompt, and that looks like a decimal separator problem. If it is, and you fix it, does the problem go away? If it does, your immediate issue would seem to be solved to me. In slower time a possible issue with the debugger could be checked out.
 
May 22, 2013
34
0
No, I will not try that. If someone uses the symbol for digit grouping, the function would just ignore and remove it. The fact that under the debugger everthing is ok, and @INT worked perfect in at least the last 20 years, makes clear it is a bug.
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
4,233
78
Albuquerque, NM
prospero.unm.edu
Your batch file, and the @INT function, work fine here, debugger or no.

The contents of your 4START.BTM and TCMD.INI files may be relevant to figuring out why debugger vs. no debugger differs for you.
 
May 20, 2008
10,671
83
Syracuse, NY, USA
Code:
v:\> type dbdb.btm
option DecimalChar
echo %@int[4,3]

In the debugger or not, I get something that doesn't look right.

1597595247929.png
 
May 22, 2013
34
0
Here good old 4START.BTM is called tcstart.btm and I started trouble shooting by temporary remove both tcstart.btm and tcmd.ini.
Ok, the problem is gone.
Restore tcmd.ini
Ok, still no problem yet
thus tcstart should be the prime suspect? Impossible, as it is the same I used for TCC v11 and TCC v19 for years..
However, YES Found de buggy bug. ;-)

The bug is in SETDOS /G,.
=====================
When using that, both Decimal and Thousands are set to comma, while SETDOS /G., wil set both Decimal and Thousands to Period. Thus always the first character.

The instruction is no longer needed today, thus removing is not a problem. But o course, it still is a bug in TCC v26
 
May 20, 2008
10,671
83
Syracuse, NY, USA
[Post deleted] OK, I see what Ruud is saying. With OPTION setting the decimal and thousands chars, @INT is OK.

Code:
v:\> option //decimalchar=,

v:\> option //ThousandsChar=.

v:\> echo %@int[4,3]
4

v:\> option //decimalchar=.

v:\> option //ThousandsChar=,

v:\> echo %@int[4.3]
4

As Ruud said, SETDOS sets both to the same character.

Code:
v:\> setdos /G,.

v:\> option DecimalChar
DecimalChar=,

v:\> option ThousandsChar
ThousandsChar=,

v:\> setdos /G.,

v:\> option DecimalChar
DecimalChar=.

v:\> option ThousandsChar
ThousandsChar=.