For nearly two years, Hank T. tried his best to avoid the CEE system. He even made an effort to not know what CEE stood for (though he was pretty sure it was Customer something Engagement). But alas, the inevitable happened and he was finally tasked with fixing a bug in CEE.

Years ago, the CEE system was created by a developer who lived by The One Rule: there are no rules, not even The One Rule. And not surprisingly, his code showed for it. To investigate the bug he was assigned to fix -- Customer Versions aren't sorting properly -- Hank dove in to CustomerClass.vb, one of the thousands of VisualBasic.NET code files that made up the application.

Public Function Is_Customer_Version(ByVal Customer_Version_p As CV) As Boolean
    begin()
    Return Customer_Version = Customer_Version_p
End Function 'Is_Customer_Version


Public ReadOnly Property Customer_Version() As CV
    Get
        begin()
        Return My_Customer_Version.Customer_Version
    End Get
End Property 'Customer_Version

'-- OBSOLETE, use (Is_)Customer_Version
Public ReadOnly Property CustomerVersion() As CV 
    Get
        begin()
        Return Customer_Version
    End Get
End Property 'CustomerVersion

It didn't seem all that bad. The call to begin(), however, piqued his curiosity. Hank opened up the file that defined the method, syntax.vb:

Public Sub block()
End Sub

Public Sub begin()
End Sub

Public Sub end_block()
End Sub

Public Sub none()
End Sub

'---------------------------------------------------------------------
'---------------------------------------------------------------------
'-- Abort program
'---------------------------------------------------------------------
'---------------------------------------------------------------------
Public Sub exit_main()
    begin()
    End
End Sub

Public Function false_(ByVal ParameterName As String) As Boolean
    begin()
    Return False
End Function

Public Function true_(ByVal ParameterName As String) As Boolean
    begin()
    Return True
End Function

Public Function Boolean_Val(ByVal n As Integer) As Boolean
    begin()
    Return n <> 0
End Function

Public Function Array_Length(ByVal Length As Integer) As Integer
    begin()
    Return Length - 1
End Function 'Array_Length

Public Function abs(ByVal value As Long) As Long
    begin()
    Return Math.Abs(value)
End Function

Public Function abs(ByVal value As Integer) As Integer
    begin()
    Return Math.Abs(value)
End Function

Public Function abs(ByVal value As Single) As Single
    begin()
    Return Math.Abs(value)
End Function

Public Function abs(ByVal value As Double) As Double
    begin()
    Return Math.Abs(value)
End Function

Public Function abs(ByVal value As Decimal) As Decimal
    begin()
    Return Math.Abs(value)
End Function

Public Function remainder(ByVal a As Long, ByVal b As Long) As Long
    begin()
    Return a Mod b
End Function

Public Function remainder(ByVal a As Integer, ByVal b As Integer) As Integer
    begin()
    Return a Mod b
End Function

Public Function remainder(ByVal a As Single, ByVal b As Single) As Single
    begin()
    Return a Mod b
End Function

The insanity continued, redefining much of Math and the basic arithmetic operators. Further down in the file, Hank spotted the in_() set of methods...

Public Function in_(ByVal v As Long, ByVal p1 As Long) As Boolean
    begin()
    Return v = p1
End Function 'in_(1)

Public Function in_(ByVal v As Long, ByVal p1 As Long, ByVal p2 As Long) As Boolean
    begin()
    Return v = p1 OrElse v = p2
End Function 'in_(2)

Public Function in_(ByVal v As Long, ByVal p1 As Long, ByVal p2 As Long, _
                    ByVal p3 As Long) As Boolean
    begin()
    Return v = p1 OrElse v = p2 OrElse v = p3
End Function 'in_(3)

Public Function in_(ByVal v As Long, ByVal p1 As Long, ByVal p2 As Long, _
                    ByVal p3 As Long, ByVal p4 As Long) As Boolean
    begin()
    Return v = p1 OrElse v = p2 OrElse v = p3 OrElse v = p4
End Function 'in_(4)


-- snip --

Public Function in_(ByVal v As Long, ByVal p1 As Long, ByVal p2 As Long, _
                    ByVal p3 As Long, ByVal p4 As Long, ByVal p5 As Long, _ 
                    ...
                    ByVal p18 As Long, ByVal p19 As Long, ByVal p20 As Long _
                    ) As Boolean
    begin()
    Return v = p1 OrElse v = p2 OrElse v = p3 ... OrElse v = p20
End Function 'in_(20)

More accurately, they were the Long set of _in() methods. There were twenty overloads each for String, Double, Char, and Decimal.

Although this was just the beginning of syntax.vb, Hank decided it best for his sanity to just fix the bug. Though he suspected that the ECC system was yet another tentacle of the great Codethulhu, he knew that, by the time he'd verify that, he would already be insane.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!