Deutsch   English   Français   Italiano  
<679d7b49$0$713$14726298@news.sunsite.dk>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!2.eu.feeder.erje.net!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!usenet.goja.nl.eu.org!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail
Date: Fri, 31 Jan 2025 20:39:22 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: basic BASIC question
Newsgroups: comp.os.vms
References: <vnipj8$3i2i9$1@dont-email.me>
 <679d001e$0$713$14726298@news.sunsite.dk> <vnj81l$ga7$4@reader2.panix.com>
 <679d26bd$0$713$14726298@news.sunsite.dk> <vnjhfb$gk1$1@reader2.panix.com>
 <679d7b05$0$713$14726298@news.sunsite.dk>
Content-Language: en-US
From: =?UTF-8?Q?Arne_Vajh=C3=B8j?= <arne@vajhoej.dk>
In-Reply-To: <679d7b05$0$713$14726298@news.sunsite.dk>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 113
Message-ID: <679d7b49$0$713$14726298@news.sunsite.dk>
Organization: SunSITE.dk - Supporting Open source
NNTP-Posting-Host: 003414ff.news.sunsite.dk
X-Trace: 1738373962 news.sunsite.dk 713 arne@vajhoej.dk/68.14.27.188:53768
X-Complaints-To: staff@sunsite.dk
Bytes: 3562

On 1/31/2025 8:38 PM, Arne Vajhøj wrote:
> On 1/31/2025 5:05 PM, Dan Cross wrote:
>> In article <679d26bd$0$713$14726298@news.sunsite.dk>,
>> Arne Vajhøj  <arne@vajhoej.dk> wrote:
>>> But there is no consistency between languages.
>>>
>>> $ type dump.for
>>> [snip]
>>
>> I don't know why this should be surprising?
> 
> I don't know if it is surprising, but it is inconsistent.
> 
>                   Fortran       Pascal        C          Basic
> true literal       -1             1      usually 1    usually -1
> false literal       0             0          0            0
> test            low bit set  low bit set   not 0        not 0
> 
> 4 languages - 4 ways of doing it.

Regarding the test:

$ type m.pas
program m(input,output);

type
    ia5 = array [1..5] of integer;

[external]
procedure b(%ref v : ia5); external;

var
    v : ia5;

begin
    v[1] := -2;
    v[2] := -1;
    v[3] := 0;
    v[4] := 1;
    v[5] := 2;
    b(v);
end.
$ type b.bas
sub b(integer v() by ref)
     external string function s(integer)
     external sub f(integer dim() by ref)
     print using "Basic   : 'E 'E 'E 'E 'E", s(v(0)), s(v(1)), s(v(2)), 
s(v(3)), s(v(4))
     call f(v())
end sub
!
function string s(integer v1)
     if v1 then
         s = "TRUE "
     else
         s = "FALSE"
     end if
end function
$ type f.for
       subroutine f(v)
       logical*4 v(5)
       write(*,'(1x,a,5(l,4x))') 'Fortran :',v(1),v(2),v(3),v(4),v(5)
       call c(v)
       end
$ type c.c
#include <stdio.h>

void p(int *v);

void c(int *v)
{
     printf("C       :");
     for(int i = 0; i < 5; i++) {
         if(v[i]) {
             printf(" TRUE ");
         } else {
             printf(" FALSE");
         }
     }
     printf("\n");
     p(v);
}
$ type p.pas
module p(input, output);

type
    ia5 = array [1..5] of boolean;

[global]
procedure p(v : ia5);

begin
    writeln('Pascal  : ', v[1]:1, '     ', v[2]:1, '     ', v[3]:1, ' 
  ', v[4]:1, '     ', v[5]:1);
end;

end.
$ pas m
$ bas b
$ for f
$ cc c
$ pas p
$ link m + b + f + c + p
$ run m
Basic   : TRUE  TRUE  FALSE TRUE  TRUE
Fortran : F     T     F     T     F
C       : TRUE  TRUE  FALSE TRUE  TRUE
Pascal  : F     T     F     T     F

Arne