Re: basic BASIC question

Liste des GroupesRevenir à co vms 
Sujet : Re: basic BASIC question
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vms
Date : 01. Feb 2025, 22:00:19
Autres entêtes
Organisation : SunSITE.dk - Supporting Open source
Message-ID : <679e8b61$0$708$14726298@news.sunsite.dk>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
On 1/31/2025 8:39 PM, Arne Vajhøj wrote:
Regarding the test:

Basic   : TRUE  TRUE  FALSE TRUE  TRUE
Fortran : F     T     F     T     F
C       : TRUE  TRUE  FALSE TRUE  TRUE
Pascal  : F     T     F     T     F
Improved version:
* more values
* also pass individual values instead of array
* dump addresses for verification
* also try C bool for individual values (we are
   past 1999)
$ type m.pas
program m(input,output);
type
    ia9 = array [1..9] of integer;
[external]
procedure b1(%ref v : ia9); external;
[external]
procedure b2(%ref v1, v2, v3, v4, v5, v6, v7, v8, v9 : integer); external;
var
    v : ia9;
    i : integer;
begin
    v[1] := -257;
    v[2] := -256;
    v[3] := -2;
    v[4] := -1;
    v[5] := 0;
    v[6] := 1;
    v[7] := 2;
    v[8] := 256;
    v[9] := 257;
    write('                      ');
    for i := 1 to 9 do begin
       write(v[i]:4, '  ');
    end;
    writeln;
    b1(v);
    b2(v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9]);
end.
$ type b.bas
sub b1(integer v() by ref)
     external string function s(integer)
     external sub f1(integer dim() by ref)
     print using "Basic (array arg)   : 'E 'E 'E 'E 'E 'E 'E 'E 'E (##########-##########)", &
                 s(v(0)), s(v(1)), s(v(2)), &
                 s(v(3)), s(v(4)), s(v(5)), &
                 s(v(6)), s(v(7)), s(v(8)), &
                 loc(v(0)), loc(v(8))
     call f1(v())
end sub
!
sub b2(integer v1 by ref, integer v2 by ref, integer v3 by ref, &
        integer v4 by ref, integer v5 by ref, integer v6 by ref, &
        integer v7 by ref, integer v8 by ref, integer v9 by ref)
     external string function s(integer)
     external sub f2(integer by ref, integer by ref, integer by ref, &
                     integer by ref, integer by ref, integer by ref, &
                     integer by ref, integer by ref, integer by ref)
     print using "Basic (multi arg)   : 'E 'E 'E 'E 'E 'E 'E 'E 'E (##########-##########)", &
                 s(v1), s(v2), s(v3), &
                 s(v4), s(v5), s(v6), &
                 s(v7), s(v8), s(v9), &
                 loc(v1), loc(v9)
     call f2(v1, v2, v3, v4, v5, v6, v7, v8, v9)
end sub
!
function string s(integer v1)
     if v1 then
         s = "TRUE "
     else
         s = "FALSE"
     end if
end function
$ type f.for
       subroutine f1(v)
       logical*4 v(9)
       integer*4 i
       write(*,'(1x,a,9(l,4x),1x,1h(,i10,1h-,i10,1h))')
      +        'Fortran (array arg) :',
      +        (v(i),i=1,9),
      +        loc(v(1)),loc(v(9))
       call c1(v)
       end
c
       subroutine f2(v1,v2,v3,v4,v5,v6,v7,v8,v9)
       logical*4 v1,v2,v3,v4,v5,v6,v7,v8,v9
       write(*,'(1x,a,9(l,4x),1x,1h(,i10,1h-,i10,1h))')
      +        'Fortran (multi arg) :',
      +        v1,v2,v3,v4,v5,v6,v7,v8,v9,
      +        loc(v1),loc(v9)
       call c2a(v1,v2,v3,v4,v5,v6,v7,v8,v9)
       call c2b(v1,v2,v3,v4,v5,v6,v7,v8,v9)
       end
$ type c.c
#include <stdio.h>
#include <stdbool.h>
void p1(int *v);
void p2(int *v1, int *v2, int *v3, int *v4, int *v5, int *v6, int *v7, int *v8, int *v9);
#define PTF(v) if(v) printf(" TRUE "); else printf(" FALSE");
void c1(int *v)
{
     printf("C (array arg, int)  :");
     for(int i = 0; i < 9; i++)
     {
         PTF(v[i])
     }
     printf(" (%d-%d)\n", (int)&v[0], (int)&v[8]);
     p1(v);
}
void c2a(int *v1, int *v2, int *v3, int *v4, int *v5, int *v6, int *v7, int *v8, int *v9)
{
     printf("C (multi arg, int)  :");
     PTF(*v1)
     PTF(*v2)
     PTF(*v3)
     PTF(*v4)
     PTF(*v5)
     PTF(*v6)
     PTF(*v7)
     PTF(*v8)
     PTF(*v9)
     printf(" (%d-%d)\n", (int)v1, (int)v9);
     p2(v1, v2, v3, v4, v5, v6, v7, v8, v9);
}
void c2b(bool *v1, bool *v2, bool *v3, bool *v4, bool *v5, bool *v6, bool *v7, bool *v8, bool *v9)
{
     printf("C (multi arg, bool) :");
     PTF(*v1)
     PTF(*v2)
     PTF(*v3)
     PTF(*v4)
     PTF(*v5)
     PTF(*v6)
     PTF(*v7)
     PTF(*v8)
     PTF(*v9)
     printf(" (%d-%d)\n", (int)v1, (int)v9);
}
$ type p.pas
module p(input, output);
type
    ba9 = array [1..9] of boolean;
[global]
procedure p1(var v : ba9);
begin
    writeln('Pascal (array arg)  : ', v[1]:1, '     ', v[2]:1, '     ', v[3]:1, '     ',
                                      v[4]:1, '     ', v[5]:1, '     ', v[6]:1, '     ',
                                      v[7]:1, '     ', v[8]:1, '     ', v[9]:1,
                                      '     (', iaddress(v[1]):1, '-', iaddress(v[9]):1, ')');
end;
[global]
procedure p2(var v1, v2, v3, v4, v5, v6, v7, v8, v9 : boolean);
begin
    writeln('Pascal (multi arg)  : ', v1:1, '     ', v2:1, '     ', v3:1, '     ',
                                      v4:1, '     ', v5:1, '     ', v6:1, '     ',
                                      v7:1, '     ', v8:1, '     ', v9:1,
                                      '     (', iaddress(v1):1, '-', iaddress(v9):1, ')');
end;
end.
$ pas m
$ bas b
$ for f
$ cc c
$ pas p
$ link m + b + f + c + p
$ run m
                       -257  -256    -2    -1     0     1     2   256   257
Basic (array arg)   : TRUE  TRUE  TRUE  TRUE  FALSE TRUE  TRUE  TRUE TRUE  (2060040448 2060040480)
Fortran (array arg) : T     F     F     T     F     T     F     F     T     (2060040448-2060040480)
C (array arg, int)  : TRUE  TRUE  TRUE  TRUE  FALSE TRUE  TRUE  TRUE TRUE  (2060040448-2060040480)
Pascal (array arg)  : T     F     F     T     F     T     F     F     T     (2060040448-2060040480)
Basic (multi arg)   : TRUE  TRUE  TRUE  TRUE  FALSE TRUE  TRUE  TRUE TRUE  (2060040448 2060040480)
Fortran (multi arg) : T     F     F     T     F     T     F     F     T     (2060040448-2060040480)
C (multi arg, int)  : TRUE  TRUE  TRUE  TRUE  FALSE TRUE  TRUE  TRUE TRUE  (2060040448-2060040480)
Pascal (multi arg)  : T     F     F     T     F     T     F     F     T     (2060040448-2060040480)
C (multi arg, bool) : TRUE  FALSE TRUE  TRUE  FALSE TRUE  TRUE  FALSE TRUE  (2060040448-2060040480)
(in case someone wonder about C bool, then it is 8 bit!)
Arne

Date Sujet#  Auteur
31 Jan 25 * basic BASIC question62Arne Vajhøj
31 Jan 25 +* Re: basic BASIC question3Robert A. Brooks
31 Jan 25 i`* Re: basic BASIC question2Arne Vajhøj
31 Jan 25 i `- Re: basic BASIC question1Chris Townley
31 Jan 25 +- Re: basic BASIC question1jeffrey_dsi
31 Jan 25 +* Re: basic BASIC question35Dave Froble
31 Jan 25 i+* Re: basic BASIC question33Arne Vajhøj
31 Jan 25 ii+* Re: basic BASIC question30Dan Cross
31 Jan 25 iii+* Re: basic BASIC question27Arne Vajhøj
31 Jan 25 iiii+* Re: basic BASIC question11Dan Cross
1 Feb 25 iiiii+* Re: basic BASIC question2Craig A. Berry
1 Feb 25 iiiiii`- Re: basic BASIC question1Arne Vajhøj
1 Feb 25 iiiii`* Re: basic BASIC question8Arne Vajhøj
1 Feb 25 iiiii +* Re: basic BASIC question6Arne Vajhøj
1 Feb 25 iiiii i`* Re: basic BASIC question5Arne Vajhøj
1 Feb 25 iiiii i +- Re: basic BASIC question1Dan Cross
2 Feb 25 iiiii i `* Re: basic BASIC question3Craig A. Berry
2 Feb 25 iiiii i  `* Re: basic BASIC question2Arne Vajhøj
2 Feb 25 iiiii i   `- Re: basic BASIC question1Dan Cross
1 Feb 25 iiiii `- Re: basic BASIC question1Dan Cross
31 Jan 25 iiii`* Re: basic BASIC question15Arne Vajhøj
2 Feb 25 iiii +- Re: basic BASIC question1Lawrence D'Oliveiro
3 Feb 25 iiii `* Re: basic BASIC question13Simon Clubley
3 Feb 25 iiii  `* Re: basic BASIC question12Arne Vajhøj
3 Feb 25 iiii   +* Re: basic BASIC question10Lawrence D'Oliveiro
4 Feb 25 iiii   i`* Re: basic BASIC question9Arne Vajhøj
4 Feb 25 iiii   i +* Re: basic BASIC question7Lawrence D'Oliveiro
4 Feb 25 iiii   i i`* Re: basic BASIC question6Arne Vajhøj
4 Feb 25 iiii   i i +* Re: basic BASIC question2Lawrence D'Oliveiro
5 Feb 25 iiii   i i i`- Re: basic BASIC question1Arne Vajhøj
5 Feb 25 iiii   i i `* Re: basic BASIC question3Lawrence D'Oliveiro
5 Feb 25 iiii   i i  `* Re: basic BASIC question2Arne Vajhøj
5 Feb 25 iiii   i i   `- Re: basic BASIC question1Lawrence D'Oliveiro
4 Feb 25 iiii   i `- Re: basic BASIC question1Dan Cross
5 Feb 25 iiii   `- Re: basic BASIC question1Arne Vajhøj
31 Jan 25 iii`* Re: basic BASIC question2Chris Townley
31 Jan 25 iii `- Re: basic BASIC question1Dan Cross
1 Feb 25 ii`* Re: basic BASIC question2Dave Froble
1 Feb 25 ii `- Re: basic BASIC question1Arne Vajhøj
31 Jan 25 i`- Re: basic BASIC question1Chris Townley
31 Jan 25 +* Re: basic BASIC question20Simon Clubley
31 Jan 25 i+* Re: basic BASIC question17Arne Vajhøj
31 Jan 25 ii`* Re: basic BASIC question16Arne Vajhøj
31 Jan 25 ii +* Re: basic BASIC question14Dan Cross
3 Feb 25 ii i`* Re: basic BASIC question13Simon Clubley
3 Feb 25 ii i +* Re: basic BASIC question2John Dallman
3 Feb 25 ii i i`- Re: basic BASIC question1Lawrence D'Oliveiro
3 Feb 25 ii i +- Re: basic BASIC question1Dan Cross
6 Feb 25 ii i `* Re: basic BASIC question9Arne Vajhøj
6 Feb 25 ii i  +- Re: basic BASIC question1Arne Vajhøj
6 Feb 25 ii i  +* Re: basic BASIC question5Dan Cross
6 Feb 25 ii i  i`* Re: basic BASIC question4Arne Vajhøj
6 Feb 25 ii i  i +- Re: basic BASIC question1Dan Cross
6 Feb 25 ii i  i `* Re: basic BASIC question2Lawrence D'Oliveiro
7 Feb 25 ii i  i  `- Re: basic BASIC question1Arne Vajhøj
6 Feb 25 ii i  `* Re: basic BASIC question2Lawrence D'Oliveiro
7 Feb 25 ii i   `- Re: basic BASIC question1Arne Vajhøj
31 Jan 25 ii `- Re: basic BASIC question1Lawrence D'Oliveiro
1 Feb 25 i`* Re: basic BASIC question2Dave Froble
3 Feb 25 i `- Re: basic BASIC question1Simon Clubley
2 Feb 25 +- Re: basic BASIC question1Lawrence D'Oliveiro
2 Apr 25 `- Re: basic BASIC question1Johnny Billquist

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal