Index: trunk/ab5.0/ablib/src/basic/function.sbp
===================================================================
--- trunk/ab5.0/ablib/src/basic/function.sbp	(revision 513)
+++ trunk/ab5.0/ablib/src/basic/function.sbp	(revision 514)
@@ -314,16 +314,18 @@
 	Dim i As Long, i2 As Long, i3 As Long
 
-	Dim len1 = buf1.Length
-	Dim len2 = buf2.Length
-
-	If len2=0 Then
-		InStr=StartPos
+	Dim len1 = 0 As Long
+	Dim len2 = 0 As Long
+	If Not ActiveBasic.IsNothing(buf1) Then len1 = buf1.Length
+	If Not ActiveBasic.IsNothing(buf2) Then len2 = buf2.Length
+
+	If len2 = 0 Then
+		InStr = StartPos
 		Exit Function
 	End If
 
 	StartPos--
-	If StartPos<0 Then
+	If StartPos < 0 Then
 		'error
-		InStr=0
+		InStr = 0
 		Exit Function
 	End If
@@ -348,16 +350,28 @@
 
 Function Left$(s As String, length As Long) As String
-	Left$ = s.Substring(0, System.Math.Min(s.Length, length))
+	If Not ActiveBasic.IsNothing(s) Then
+		Left$ = s.Substring(0, System.Math.Min(s.Length, length))
+	Else
+		Left$ = ""
+	End If
 End Function
 
 Function Mid$(s As String, startPos As Long) As String
-	startPos--
-	Mid$ = s.Substring(startPos)
+	If Not ActiveBasic.IsNothing(s) Then
+		startPos--
+		Mid$ = s.Substring(startPos)
+	Else
+		Mid$ = ""
+	End If
 End Function
 
 Function Mid$(s As String, startPos As Long, readLength = 0 As Long) As String
-	startPos--
-	Dim length = s.Length
-	Mid$ = s.Substring(System.Math.Min(startPos, length), System.Math.Min(readLength, length - startPos))
+	If Not ActiveBasic.IsNothing(s) Then
+		startPos--
+		Dim length = s.Length
+		Mid$ = s.Substring(System.Math.Min(startPos, length), System.Math.Min(readLength, length - startPos))
+	Else
+		Mid$ = ""
+	End If
 End Function
 
@@ -373,5 +387,9 @@
 
 Function Right$(s As String, length As Long) As String
-	Right$ = s.Substring(System.Math.Max(0, s.Length - length), s.Length)
+	If Not ActiveBasic.IsNothing(s) Then
+		Right$ = s.Substring(System.Math.Max(0, s.Length - length), s.Length)
+	Else
+		Right$ = ""
+	End If
 End Function
 
@@ -627,4 +645,8 @@
 
 Function Val(buf As *Char) As Double
+	If buf = 0 Then
+		Exit Function
+	End If
+
 	Dim i As Long, i2 As Long, i3 As Long, i4 As Long
 	Dim temporary As String
