' vim: filetype=vb shiftwidth=4 expandtab
'
' START_INDENT
#Const Debug = False

#If Win64 Then
' Win64=true, Win32=true, Win16=false
#ElseIf Win32 Then
' Win32=true, Win16=false
#Else
' Win16=true
#End If

Public Type GEmployeeRecord     ' Create user-defined type. 
    ID As Integer               ' Define elements of data type. 
    Name As String * 20 
    Address As String * 30 
    Phone As Long 
    HireDate As Date 
End Type 

Public Enum InterfaceColors 
    icMistyRose = &HE1E4FF& 
    icSlateGray = &H908070& 
    icDodgerBlue = &HFF901E& 
    icDeepSkyBlue = &HFFBF00& 
    icSpringGreen = &H7FFF00& 
    icForestGreen = &H228B22& 
    icGoldenrod = &H20A5DA& 
    icFirebrick = &H2222B2& 
End Enum

Enum SecurityLevel 
    IllegalEntry = -1 
    SecurityLevel1 = 0 
    SecurityLevel2 = 1 
End Enum 

Public Function TestConditional (number As Integer, ext As String) As Boolean
    Dim inRange As Boolean

    Select Case number
        Case <= 0
            inRange = False
        Case > 10
            inRange = False
        Case Else
            inRange = True
    End Select

    ' This is a special case identified in the indent script.
    Select Case number
    End Select

    If ext = ".xlm" Then
        If inRange Then
            TestConditional = True
        Else
            TestConditional = False
        End If
    ElseIf ext = ".xlsx" Then
        If inRange Then
            TestConditional = False
        Else
            TestConditional = True
        End If
    Else
        TestConditional = False
    End If
End Function

Private Sub TestIterators (lLimit As Integer, uLimit As Integer)
    Dim a() As Variant
    Dim elmt As Variant
    Dim found As Boolean
    Dim indx As Integer
    Const specialValue As Integer = 5

    If uLimit < lLimit Then
        Exit Sub
    End If

    ReDim a(lLimit To uLimit)
    For indx=lLimit To Ulimit
        a(indx) = 2 * indx
    Next indx

    found = False
    For Each elmt in a
        If elmt = specialValue Then
            found = True
        End If
    Next elmt

    If found then
        indx = uLimit
        Do While indx >= lLimit
            indx = indx - 1
        Loop
    End If

End Sub

Public Sub TestMultiline (cellAddr As String, rowNbr As Long)
    Dim rng As Range

    Set rng = Range(cellAddr)

    ' Line continuation is implemented as a two-character sequence-
    ' whitespace followed by underscore.
    With rng
        .Cells(1,1).Value = _
            "Line 1 of multiline string; " & _
            "Line 2 of multiline string; " & _
            "Line 3 of multiline string"
    End With

    ' This code block omits the leading whitespace character and so 
    ' the trailing underscore will not be treated as line continuation.
    With rng
        .Cells(1,1).Value =_
        "Line 1 of multiline string; " &_
        "Line 2 of multiline string; " &_
        "Line 3 of multiline string"
    End With

    ' The following lines have whitespace after the underscore character.
    ' This is contrary to Microsoft documentation but it is reported that
    ' some Microsoft editors allow it and will still treat the statement
    ' as line-continued.  
    With rng
        rng.Cells(1,1).Value = _ 
            "Line 1 of multiline string; " & _ 
            "Line 2 of multiline string; " & _ 
            "Line 3 of multiline string"
    End With

End Sub

Private Sub TestStmtLabel()
    GoTo stmtLabel

    ' Statement labels are never indented
stmtLabel:

End Sub

Public Static Function TestStatic(addend As Integer)
    Dim Integer accumulator
    accumulator = accumulator + addend
    TestStatic = accumulator
End Function

Friend Function TestFriend(addend As Integer)
    Static Integer accumulator
    accumulator = accumulator + addend
    TestFriend = accumulator
End Function

Sub TestTypeKeyword()
    Type EmployeeRecord         ' Create user-defined type. 
        ID As Integer           ' Define elements of data type. 
        Name As String * 20 
        Address As String * 30 
        Phone As Long 
        HireDate As Date 
    End Type 
    Dim varType As EmployeeRecord
End Sub

Sub TestDateLiteralAfterLineContinuation
    Dim birthday as Date
    birthday = _
        #January 1, 1901#
End Sub
' END_INDENT
