Jump to: navigation, search
KBasic is still under development.

KBasic is a programming language, which is simply intuitive and easy to learn and is related to VB.NET™, Visual Basic®, Visual Basic for Application® and Java™. It combines the best features of those tools and comes with built-in backward support for those tools and QBasic® as it is 100% syntax compatible to VB6, VBA and QBasic®. Additionally, it comes with support for VB.NET™ syntax, functions and similar objects and classes.

The purpose of KBasic enabling BASIC developers to write desktop applications using the powerful technologies provided by Qt, KDE and related frameworks. For now the Qt API is covered.

  Class Walzer
    Public var As integer
  End Class 
  Const globalConst = 1
  Const globalConst2 As Integer = 2
  Dim globalVar As Integer = 4
  Dim globalVar2 As test
  globalVar2 = test.Entry
  ' global scope 
  Enum test
    Entry = 666
    Security = Entry
  End Enum
  Type book  
    bkname As String * 100
    isbn(1000) As Integer   
  End Type
  Type address
    books(50) As book   
    age As book   
    Name[9] As Integer   
  End Type 
  Sub globalSub()
    Dim localVar = 99    
  End Sub
  ' module scope
  Module module1 
    Public Type address2    
      age As Integer     
    End Type 
    Public Type module_type    
      element AS integer
    End Type   
    Public Enum module_enum    
       Security = Entry
    End Enum 
    Const moduleConst = 7  
    Public publicModuleVar As Integer  
    Private privateModuleVar As Integer  
    Sub moduleExplicit()
      Dim localVar = module1.publicModuleVar  
      Dim localVar2 = module1.moduleConst
   '   Dim localVar3 As module1.module_enum '  full type name not allowed after AS
      Dim localVar3 As module_enum
      localVar3 = module1.module_enum.Entry
      'Dim localVar4 As module1.module_type     '  full type name not allowed after AS
      Dim localVar5 As module_type     '  full type name not allowed after AS
    End Sub 
    Sub moduleImplicit()
      dim localVar = publicModuleVar
      dim localVar2 = moduleConst 
      dim localVar3 as module_enum
      localVar3 = module_enum.Entry
      Dim localVar4 As module_type
      Dim localVar5 As module_type
      Dim localVar6 = module1.publicModuleVar
    End Sub 
    Sub moduleSubWithDefaultArgument(ko as integer = 6)
      Dim localVar = ko
    End Sub 
    Sub moduleSubWithOptionalArgument(Optional ko As Integer)
      If Not IsMissing(ko) Then
        dim localVar = ko      
      End If
    End Sub
    Sub moduleSub()
      Const localConst = 6 
      dim n = localConst
    End Sub 
    Sub moduleSubWithArgument(i as integer)
      dim localVar = i
    End Sub 
    Sub moduleSubWithArgumentShadowing(i2 as integer)
      Dim localVar = i2
      Dim i2 = localVar + 99
      dim i3 = i2
    End Sub 
    Sub subOverloading ( )
      print "sub1"
    End Sub 
    Sub subOverloading ( i as integer = 1)
      print "sub2"    
    End Sub
    Function moduleFunction() As String
      return "hello"
    End function 
    function moduleFunctionRecursive(byref i as integer) as integer
      if i > 6 then return 1''i
      ''i = i + 1
      return moduleFunctionRecursive(1)''i)
    End function 
  End Module
  Class Salsa inherits Walzer
    public Enum class_enum
       Security = Entry
    End Enum 
    public type class_type
      element AS integer
    End Type 
    const classConst = 4
    public publicInstanceVar as integer
    Private privateInstanceVar As Integer 
    'Protected protectedInstanceVar As Integer 
    Static Public publicClassVar As Integer' = 8 
    'dim publicModuleType as module1.module_type
    dim publicModuleType2 as module_type
    ' parent constructor call inside constructor
    Sub meExplicit()
      dim localVar = Me.publicInstanceVar '  it is the same with Parent
      dim localVar2 = Me.publicClassVar  
      dim localVar3 = Salsa.publicClassVar 
      dim localVar4 = Salsa.classConst 
      Dim localVar5 = classConst
      'Dim localVar5b = Me.classConst 
  '    left
      Dim localVar6 As class_enum 
      localVar6 = Salsa.class_enum.Entry 
  '    Dim localVar7 As Me.class_enum   '  full type name not allowed after AS
      dim localVar8 as class_type 
    End Sub 
    Sub meImplicit()
      dim localVar = publicInstanceVar
      dim localVar2 = publicClassVar 
      dim localVar3 = classConst 
      Dim localVar4 As class_enum 
      dim localVar5 as class_type
    End Sub 
    Sub classSub()
      const localConst = 6
      dim n = localConst
    End Sub 
    Sub classSubWithArgument(i as integer)
      dim localVar = i
    End Sub 
    Function classFunction() As String       
      return "hello"
    End Function 
  End Class
  CLASS rumba
    Public latein AS INTEGER
    PUBLIC SUB dance_rumba()
      Print "rumba!!!" 
      'print mySalsa.var
    End Sub 
    ' default constructor 
    Constructor rumba ()
      print "constructor"
    End Constructor
    Constructor rumba ( _latein as integer)
      Print "constructor2" 
      latein = _latein
    End Constructor
    Destructor rumba ( ) 
      print "destructor"
    End Destructor
    Static Sub myMsgBox(ByRef m As Double)  
     '' m = m + 1  
    End Sub 
    Static Sub myMsgbox2(Optional m As Integer)
      If IsMissing(m) Then
       '' m = m + 1  
        Print "do nothing"       
      End If
    End Sub 
    Static Function monique(ByRef i As Integer, ByVal h As Double, ParamArray b() As Variant) As Integer  
      For i = LBound(b) To UBound(b)
        Print b(i)     
      Next i  
      Return i
    End Function  
    static SUB structByReference(byref m AS address)
      ''[2] = 71  
    End Sub 
  DIM j(5 TO 10) AS address
  ''j(3).namer(6) = 123
  ''j(1).age.isbn(10) = 1000
  ''j[2].namer[1] = j(3).namer(6) + j(1).age.isbn(10)
  'Dim Emp As rumba = New rumba
  DIM r AS NEW rumba
  'With r
  '  .dance_rumba()
  'End With
  Print globalVar ' accessable from everywhere 
  Print globalVar2 ' accessable from everywhere 
  Print globalConst ' accessable from everywhere 
  publicModuleVar = 99
  module1.publicModuleVar = 99
 ' module1.moduleFunctionRecursive(1)
  Print publicModuleVar
  Salsa.publicClassVar = 111
  Print Salsa.publicClassVar
  print moduleConst 
== More information ==

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal