[Info-vax] VAX BASIC global variables.

Arne Vajhøj arne at vajhoej.dk
Thu Oct 14 20:40:26 EDT 2021


On 10/14/2021 8:36 PM, Arne Vajhøj wrote:
> On 10/14/2021 8:23 PM, E Thump wrote:
>> I come from BBC Basic where all variables are global unless
>> explicitly defined as local to a sub/proc.
>>
>> VAX BASIC seems to operate the opposite way; IE variables by default
>> are local. QB64 also seems to operate this way however in QB64, I am
>> able to DIM SHARED [var_name] which makes a variable accessible
>> globally.
>>
>> How do I accomplish the same in VAX BASIC? I want a variable declared
>> at the top to be common throughout all the code, SUBs and all. At
>> this time, I'm working with a single source file.
>>
>> I'm looking at the COMMON keyword but I can't see how that works for
>> what I want, if at all it does!
> 
> This program print 3:
> 
> program comdemo
> common (myarea) integer v
> v = 1
> call s1
> end program
> 
> sub s1
> common (myarea) integer v
> v = v + 1
> call s2
> end sub
> 
> sub s2
> common (myarea) integer v
> v = v + 1
> print v
> end sub

And no - I don't know Basic, but I know Fortran, so I just
coded Fortran in Basic.

:-)

       program comdemo
       integer*4 v
       common /myarea/v
       v = 1
       call s1
       end
c
       subroutine s1
       integer*4 v
       common /myarea/v
       v = v + 1
       call s2
       return
       end
c
       subroutine s2
       integer*4 v
       common /myarea/v
       v = v + 1
       write(*,*) v
       return
       end

Arne




More information about the Info-vax mailing list