Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.os.vms    |    DEC's VAX* line of computers & VMS.    |    264,096 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 262,317 of 264,096    |
|    =?UTF-8?Q?Arne_Vajh=C3=B8j?= to All    |
|    Re: basic BASIC question    |
|    01 Feb 25 16:00:19    |
   
   From: arne@vajhoej.dk   
      
   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
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca