' 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
