BCX Console Demonstration Program s154.bas

'======================================================================= 
'          Semi-OOP implementation for BCX by Kevin Diggins  
'======================================================================= 

TYPE FOO
   MyVar
   FUNCTION Squared (MyClass AS FOO_CLASS) AS INTEGER
   FUNCTION Cubed   (MyClass AS FOO_CLASS) AS INTEGER
   FUNCTION TimesX  (MyClass AS FOO_CLASS, X AS INTEGER) AS INTEGER
 END TYPE

 DIM IAm AS FOO : Initialize(&IAm, 3)
 DIM You AS FOO : Initialize(&You, 4)

 CLS

 PRINT "================="
 PRINT "IAm.Squared " , IAm.Squared(&IAm)
 PRINT "IAm.Cubed " , IAm.Cubed(&IAm)
 PRINT "IAm.TimesX " , IAm.TimesX(&IAm, 100)
 PRINT "================="
 PRINT "You.Squared " , You.Squared(&You)
 PRINT "You.Cubed " , You.Cubed(&You)
 PRINT "You.TimesX " , You.TimesX(&You, 100)
 PRINT "================="

 PRINT "Changing .MyVar in IAm and You"

 IAm.MyVar = 6
 You.MyVar = 7

 PRINT "================="
 PRINT "IAm.Squared " , IAm.Squared(&IAm)
 PRINT "IAm.Cubed " , IAm.Cubed(&IAm)
 PRINT "IAm.TimesX " , IAm.TimesX(&IAm, 100)
 PRINT "================="
 PRINT "You.Squared " , You.Squared(&You)
 PRINT "You.Cubed " , You.Cubed(&You)
 PRINT "You.TimesX " , You.TimesX(&You, 100)
 PRINT "================="


 SUB Initialize (ME AS FOO_CLASS, b AS INTEGER)
   WITH ME
     .MyVar = b
     .Squared = Squared
     .Cubed = Cubed
     .TimesX = TimesX
   END WITH
 END SUB


 FUNCTION Squared (ME AS FOO_CLASS)
   FUNCTION = ME.MyVar * ME.MyVar
 END FUNCTION


FUNCTION Cubed (ME AS FOO_CLASS)
   FUNCTION = ME.MyVar * ME.MyVar * ME.MyVar
 END FUNCTION


FUNCTION TimesX (ME AS FOO_CLASS, X)
   FUNCTION = ME.MyVar * X
 END FUNCTION

Result:

=================
IAm.Squared  9
IAm.Cubed  27
IAm.TimesX  300
=================
You.Squared  16
You.Cubed  64
You.TimesX  400
=================
Changing .MyVar in IAm and You
=================
IAm.Squared  36
IAm.Cubed  216
IAm.TimesX  600
=================
You.Squared  49
You.Cubed  343
You.TimesX  700
=================