RE: [MI-L] logical to numeric

2006-05-01 Thread Peter Horsbøll Møller



Jacques,

I would recommend using the Int() function to convert your logical 
_expression_ to a number. The number returned by Int() will either be 1 (TRUE) or 
0 (FALSE).

I have used this a lot for labeling
Peter Horsbøll Møller GIS Developer, MTM Geographical 
Information  IT  COWI A/S Odensevej 
95 DK-5260 Odense S. Denmark  Tel +45 6311 4900 Direct +45 6311 4908 Mob +45 5156 1045 Fax +45 6311 4949 E-mail [EMAIL PROTECTED] http://www.cowi.dk/gis 



From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED] On Behalf Of Jacques 
ParisSent: Monday, May 01, 2006 9:04 PMTo: 
MapInfo-L@lists.directionsmag.comSubject: [MI-L] logical to 
numeric


I have not seen much written on the 
subject but I was faced with it: how to use logical variables in operations 
without using if statements.

I was not able to pinpoint such a 
function and may be I am on an entirely wrong track but to solve my “problem” I 
have devised a possible conversion and I would like to know if it is acceptable 
or how could it be improved. Here it is, with its 
justification

num_logic = ASC(STR$(logic))\73 

STR$() will return F or T, their 
ascii codes (ASC) are 70 and 84. The integer division by any value from 71 to 83 
will return 0 or 1.

This conversion to numeric finds its 
place in conditional operations (ex. inclusion in a summation when a condition 
must be respected sum(numeric(i)*num_logic(i)) ) or condition summaries (ex1: 
how many true conditions apply to the case sum(num_logic(i)) – ex2. if one 
condition is false all is false num_logic(1)*num_logic(2)*…

I would appreciate any comment on 
that issue and proposed solution. TIA

Jacques 
Paris
___
MapInfo-L mailing list
MapInfo-L@lists.directionsmag.com
http://www.directionsmag.com/mailman/listinfo/mapinfo-l


RE: [MI-L] logical to numeric

2006-05-01 Thread Jacques Paris








The answer is to use INT()  (Peter Horsbøll
Møller, Spencer Simpson, Lars Nielsen thank you).



It is strange because the users
guide specifies that the argument should be a numeric _expression_ and that threw
me off because if one multiplies two logical variables it fails, requiring
numeric values (but these can be contained in variables). Nice to get the
explanation that logical variables are treated as special numeric
ones (a one byte numeric with values 0 or 1). That applies to some contexts,
for ex. in functions like Maximum(), Cos(), Log() but it fails in arithmetic operations (I
guess because the variable types are checked before the operation is carried
out and that nobody allowed for the logical type to be treated numerically)



It is one more example of the niceties
MapBasic contains that can documented only by experience.



Jacques Paris

-Original Message-
From:
[EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Jacques Paris
Sent: 1 mai 2006 15:04
To:
MapInfo-L@lists.directionsmag.com
Subject: [MI-L] logical to numeric



I have not seen much
written on the subject but I was faced with it: how to use logical variables in
operations without using if statements.



I was not able to
pinpoint such a function and may be I am on an entirely wrong track but to
solve my problem I have devised a possible conversion and I would
like to know if it is acceptable or how could it be improved. Here it is, with
its justification



num_logic =
ASC(STR$(logic))\73 

STR$() will return F or
T, their ascii codes (ASC) are 70 and 84. The integer division by any value
from 71 to 83 will return 0 or 1.



This conversion to
numeric finds its place in conditional operations (ex. inclusion in a summation
when a condition must be respected sum(numeric(i)*num_logic(i)) ) or condition
summaries (ex1: how many true conditions apply to the case sum(num_logic(i))
 ex2. if one condition is false all is false
num_logic(1)*num_logic(2)*



I would appreciate any
comment on that issue and proposed solution. TIA



Jacques Paris






___
MapInfo-L mailing list
MapInfo-L@lists.directionsmag.com
http://www.directionsmag.com/mailman/listinfo/mapinfo-l