phil99
 Guru
 Joined: 11/02/2018 Location: AustraliaPosts: 3409 |
| Posted: 12:48am 12 Jul 2025 |
|
|
|
As reported by Mixtel90 in the other thread CHAIN still isn't quite right. Mick's test with some extra Prints.
> option list PicoMite MMBasic RP2040 Edition V6.00.03 OPTION FLASH SIZE 16777216 OPTION COLOURCODE ON OPTION CPUSPEED (KHz) 200000 > > list "q1.bas" Print Print "This is the Main program (q1.bas)" Print "MM.CMDLINE$ = ";MM.CMDLINE$ If MM.CMDLINE$<>"chainret" Then Print "Array and Vars prepared in Main (q1.bas):" Dim integer d(5)=(1,2,3,4,5,6),z1=1,z2=2,z3=3,z4=4 Print "d() = "; :Math V_Print d() Print "z1,z2,z3,z4= ";z1;z2;z3;z4 Print "Passing array & Vars to q2.bas:" Print Chain "a:/q2.bas" EndIf If MM.CMDLINE$="chainret" Then Print Print "Array & Vars returned from q2.bas:" Print "d() = "; :Math V_Print d() Print "z1,z2,z3,z4= ";z1;z2;z3;z4 Print EndIf Print "The End" End > > > list "q2.bas" Print "This program (q2.bas) is chained from Main (q1.bas)" Print "Array & Vars received from q1.bas" print "d() = "; : math v_print d() Print "z1,z2,z3,z4= ";z1;z2;z3;z4 For i=1 To 6 d(6-i) = i Next z1=5 : z2=6 : z3=7 : z4=8 Print Print "Array & Vars about to be returned to Main (q1.bas)" print "d() = "; :math v_print d() Print "z1,z2,z3,z4= ";z1;z2;z3;z4 print Chain "q1.bas","chainret" > > > RUN
This is the Main program (q1.bas) MM.CMDLINE$ = Array and Vars prepared in Main (q1.bas): d() = 1, 2, 3, 4, 5, 6 z1,z2,z3,z4= 1 2 3 4 Passing array & Vars to q2.bas:
This program (q2.bas) is chained from Main (q1.bas) Array & Vars received from q1.bas d() = 0, 0, 0, 0, 0, 0 z1,z2,z3,z4= 1 2 3 4
Array & Vars about to be returned to Main (q1.bas) d() = 6, 5, 4, 3, 2, 1 z1,z2,z3,z4= 5 6 7 8
This is the Main program (q1.bas) MM.CMDLINE$ = chainret
Array & Vars returned from q2.bas: d() = 0, 0, 0, 0, 0, 0 z1,z2,z3,z4= 5 6 7 8
The End > Same result if d(5) integer or float. Edited 2025-07-12 15:25 by phil99 |