Code: Select all
#lang "fblite"
Declare Sub nano(addrX As double Pointer ,addrY As Double Pointer ,addrZ As double Pointer )
Dim c(1 To 3+3+3) as Double
Print "X addr ptr c(1)=",@c(1)
Print "Y addr ptr c(4)=",@c(4)
Print "Z addr ptr c(7)=",@c(7)
Print ""
Call nano @c(1),@c(4),@c(7)
Print ""
Dim addr As Double Pointer
For i=1 To 9
addr=@c(i)
Select Case i
Case Is <=3
Print "verifica X c(i)=",i,addr,*addr,c(i)
Case Is <=6
Print "verifica Y c(i)=",i,addr,*addr,c(i)
Case Is <=9
Print "verifica Z c(i)=",i,addr,*addr,c(i)
End Select
Next i
End
Sub nano(addrX As Double Pointer ,addrY As Double Pointer ,addrZ As Double Pointer )
Dim addr As Double Pointer
addr=addrX
Dim i As Integer
For i= 1 To 3
*addrX=10.
Print "verifica addrX=10.", i,addrX,*addrX
addrX=addrX+i
Next i
For i= 1 To 3
*addrY=20.
Print "verifica addrY=20.", i,addrY,*addrY
addrY=addrY+i
Next i
For i= 1 To 3
*addrZ=30.
Print "verifica addrZ=30.", i,addrZ,*addrZ
addrZ=addrZ+i
Next i
Print ""
For i=1 To 9
Select Case i
Case Is <=3
Print "verifica addrX=10.",i,addr,*addr
Case Is <=6
Print "verifica addrY=20.",i,addr,*addr
Case Is <=9
Print "verifica addrZ=30.",i,addr,*addr
End Select
addr=addr+1
Next i
End sub