VERSION 5.00 Begin VB.Form AwkForm Caption = "ASE COM AWK" ClientHeight = 7635 ClientLeft = 60 ClientTop = 345 ClientWidth = 10335 LinkTopic = "AwkForm" ScaleHeight = 7635 ScaleWidth = 10335 StartUpPosition = 3 'Windows Default Begin VB.ComboBox EntryPoint Height = 315 ItemData = "AwkForm.frx":0000 Left = 1080 List = "AwkForm.frx":0007 TabIndex = 9 Top = 120 Width = 3495 End Begin VB.TextBox ConsoleIn BeginProperty Font Name = "Courier New" Size = 9 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 2895 Left = 120 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 2 Top = 3960 Width = 5055 End Begin VB.TextBox SourceIn BeginProperty Font Name = "Courier New" Size = 9 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 2775 Left = 120 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 0 Top = 840 Width = 5055 End Begin VB.TextBox SourceOut BeginProperty Font Name = "Courier New" Size = 9 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 2775 Left = 5280 Locked = -1 'True MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 1 Top = 840 Width = 4935 End Begin VB.CommandButton Execute Caption = "Execute" Height = 375 Left = 9000 TabIndex = 5 Top = 7080 Width = 1215 End Begin VB.TextBox ConsoleOut BeginProperty Font Name = "Courier New" Size = 9 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 2895 Left = 5280 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 3 Top = 3960 Width = 4935 End Begin VB.Label Label5 Caption = "Entry Point:" Height = 255 Left = 120 TabIndex = 10 Top = 120 Width = 1455 End Begin VB.Label Label4 Caption = "Console Out" Height = 255 Left = 5280 TabIndex = 8 Top = 3720 Width = 3735 End Begin VB.Label Label3 Caption = "Console In" Height = 255 Left = 120 TabIndex = 7 Top = 3720 Width = 3735 End Begin VB.Label Label2 Caption = "Source Out" Height = 255 Left = 5280 TabIndex = 6 Top = 600 Width = 3735 End Begin VB.Label Label1 Caption = "Source In" Height = 255 Left = 120 TabIndex = 4 Top = 600 Width = 2415 End End Attribute VB_Name = "AwkForm" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Dim source_first As Boolean Public WithEvents Awk As ASELib.Awk Attribute Awk.VB_VarHelpID = -1 Private Sub Execute_Click() source_first = True ConsoleOut.Text = "" SourceOut.Text = "" Set Awk = New ASELib.Awk Awk.ExplicitVariable = True Awk.ImplicitVariable = True Awk.UseCrlf = True Awk.IdivOperator = True Awk.ShiftOperators = True Awk.MaxDepthForBlockParse = 20 Awk.MaxDepthForBlockRun = 30 Awk.MaxDepthForExprParse = 20 Awk.MaxDepthForExprRun = 30 'Awk.MaxDepthForRexBuild = 10 'Awk.MaxDepthForRexMatch = 10 Awk.UseLongLong = False Awk.Debug = True If Awk.AddBuiltinFunction("sin", 1, 1) = -1 Then MsgBox "Cannot add builtin function - " + Awk.ErrorMessage Exit Sub End If If Awk.AddBuiltinFunction("cos", 1, 1) = -1 Then MsgBox "Cannot add builtin function - " + Awk.ErrorMessage Exit Sub End If Call Awk.AddBuiltinFunction("tan", 1, 1) Call Awk.AddBuiltinFunction("sqr", 1, 1) Call Awk.AddBuiltinFunction("trim", 1, 1) 'Call Awk.DeleteBuiltinFunction("tan") If Awk.Parse() = -1 Then MsgBox "PARSE ERROR [" + Str(Awk.ErrorLine) + "]" + Awk.ErrorMessage Else Awk.EntryPoint = Trim(EntryPoint.Text) If Awk.Run() = -1 Then MsgBox "RUN ERROR [" + Str(Awk.ErrorLine) + "]" + Awk.ErrorMessage End If End If Set Awk = Nothing End Sub Function Awk_OpenSource(ByVal mode As Long) As Long Awk_OpenSource = 1 End Function Function Awk_CloseSource(ByVal mode As Long) As Long Awk_CloseSource = 0 End Function Function Awk_ReadSource(ByVal buf As ASELib.Buffer) As Long If source_first Then buf.value = SourceIn.Text Awk_ReadSource = Len(buf.value) source_first = False Else Awk_ReadSource = 0 End If End Function Function Awk_WriteSource(ByVal buf As ASELib.Buffer) As Long Dim value As String Dim l As Integer value = buf.value l = Len(value) SourceOut.Text = SourceOut.Text + value Awk_WriteSource = Len(value) End Function Function Awk_OpenExtio(ByVal extio As ASELib.AwkExtio) As Long Awk_OpenExtio = -1 Select Case extio.Type Case ASELib.AWK_EXTIO_CONSOLE If extio.mode = ASELib.AWK_EXTIO_CONSOLE_READ Then extio.Handle = New AwkExtioConsole With extio.Handle .EOF = False End With Awk_OpenExtio = 1 ElseIf extio.mode = ASELib.AWK_EXTIO_CONSOLE_WRITE Then extio.Handle = New AwkExtioConsole With extio.Handle .EOF = False End With Awk_OpenExtio = 1 End If Case ASELib.AWK_EXTIO_FILE If extio.mode = ASELib.AWK_EXTIO_FILE_READ Then extio.Handle = FreeFile On Error GoTo ErrorTrap Open extio.name For Input As #extio.Handle On Error GoTo 0 Awk_OpenExtio = 1 ElseIf extio.mode = ASELib.AWK_EXTIO_FILE_WRITE Then extio.Handle = FreeFile On Error GoTo ErrorTrap Open extio.name For Output As #extio.Handle On Error GoTo 0 Awk_OpenExtio = 1 ElseIf extio.mode = ASELib.AWK_EXTIO_FILE_APPEND Then extio.Handle = FreeFile On Error GoTo ErrorTrap Open extio.name For Append As #extio.Handle On Error GoTo 0 Awk_OpenExtio = 1 End If Case ASELib.AWK_EXTIO_PIPE Awk_OpenExtio = -1 Case ASELib.AWK_EXTIO_COPROC Awk_OpenExtio = -1 End Select Exit Function ErrorTrap: Exit Function End Function Function Awk_CloseExtio(ByVal extio As ASELib.AwkExtio) As Long Awk_CloseExtio = -1 Select Case extio.Type Case ASELib.AWK_EXTIO_CONSOLE If extio.mode = ASELib.AWK_EXTIO_CONSOLE_READ Or _ extio.mode = ASELib.AWK_EXTIO_CONSOLE_WRITE Then extio.Handle = Nothing Awk_CloseExtio = 0 End If Case ASELib.AWK_EXTIO_FILE If extio.mode = ASELib.AWK_EXTIO_FILE_READ Or _ extio.mode = ASELib.AWK_EXTIO_FILE_WRITE Or _ extio.mode = ASELib.AWK_EXTIO_FILE_APPEND Then Close #extio.Handle Awk_CloseExtio = 0 End If Case ASELib.AWK_EXTIO_PIPE Awk_CloseExtio = -1 Case ASELib.AWK_EXTIO_COPROC Awk_CloseExtio = -1 End Select End Function Function Awk_ReadExtio(ByVal extio As ASELib.AwkExtio, ByVal buf As ASELib.Buffer) As Long Awk_ReadExtio = -1 Select Case extio.Type Case ASELib.AWK_EXTIO_CONSOLE If extio.mode = ASELib.AWK_EXTIO_CONSOLE_READ Then Awk_ReadExtio = ReadExtioConsole(extio, buf) End If Case ASELib.AWK_EXTIO_FILE If extio.mode = ASELib.AWK_EXTIO_FILE_READ Then Awk_ReadExtio = ReadExtioFile(extio, buf) End If Case ASELib.AWK_EXTIO_PIPE Awk_ReadExtio = -1 Case ASELib.AWK_EXTIO_COPROC Awk_ReadExtio = -1 End Select End Function Function Awk_WriteExtio(ByVal extio As ASELib.AwkExtio, ByVal buf As ASELib.Buffer) As Long Awk_WriteExtio = -1 Select Case extio.Type Case ASELib.AWK_EXTIO_CONSOLE If extio.mode = ASELib.AWK_EXTIO_CONSOLE_WRITE Then Awk_WriteExtio = WriteExtioConsole(extio, buf) End If Case ASELib.AWK_EXTIO_FILE If extio.mode = ASELib.AWK_EXTIO_FILE_WRITE Or _ extio.mode = ASELib.AWK_EXTIO_FILE_APPEND Then Awk_WriteExtio = WriteExtioFile(extio, buf) End If Case ASELib.AWK_EXTIO_PIPE Awk_WriteExtio = -1 Case ASELib.AWK_EXTIO_COPROC Awk_WriteExtio = -1 End Select End Function Function ReadExtioConsole(ByVal extio As ASELib.AwkExtio, ByVal buf As ASELib.Buffer) As Long Dim value As String If Not extio.Handle.EOF Then value = ConsoleIn.Text extio.Handle.EOF = True buf.value = value ReadExtioConsole = Len(value) Else ReadExtioConsole = 0 End If End Function Function ReadExtioFile(ByVal extio As ASELib.AwkExtio, ByVal buf As ASELib.Buffer) As Long Dim value As String If EOF(extio.Handle) Then ReadExtioFile = 0 Exit Function End If On Error GoTo ErrorTrap Line Input #extio.Handle, value On Error GoTo 0 value = value + vbCrLf buf.value = value ReadExtioFile = Len(buf.value) Exit Function ErrorTrap: ReadExtioFile = -1 Exit Function End Function Function WriteExtioConsole(ByVal extio As ASELib.AwkExtio, ByVal buf As ASELib.Buffer) As Long Dim value As String value = buf.value ConsoleOut.Text = ConsoleOut.Text + value WriteExtioConsole = Len(value) End Function Function WriteExtioFile(ByVal extio As ASELib.AwkExtio, ByVal buf As ASELib.Buffer) As Long Dim value As String WriteExtioFile = -1 value = buf.value On Error GoTo ErrorTrap Print #extio.Handle, value; On Error GoTo 0 WriteExtioFile = Len(value) Exit Function ErrorTrap: Exit Function End Function Function Awk_HandleBuiltinFunction(ByVal name As String, ByVal args As Variant) As Variant If name = "sin" Then If IsNull(args(0)) Then Awk_HandleBuiltinFunction = Sin(0) ElseIf IsNumeric(args(0)) Then Awk_HandleBuiltinFunction = Sin(args(0)) Else Awk_HandleBuiltinFunction = Sin(Val(args(0))) End If ElseIf name = "cos" Then If TypeName(args(0)) = "Long" Or TypeName(args(0)) = "Double" Then Awk_HandleBuiltinFunction = Cos(args(0)) ElseIf TypeName(args(0)) = "String" Then Awk_HandleBuiltinFunction = Cos(Val(args(0))) ElseIf TypeName(args(0)) = "Null" Then Awk_HandleBuiltinFunction = Cos(0) End If ElseIf name = "tan" Then If TypeName(args(0)) = "Long" Or TypeName(args(0)) = "Double" Then Awk_HandleBuiltinFunction = Tan(args(0)) ElseIf TypeName(args(0)) = "String" Then Awk_HandleBuiltinFunction = Tan(Val(args(0))) ElseIf TypeName(args(0)) = "Null" Then Awk_HandleBuiltinFunction = Tan(0) End If ElseIf name = "sqr" Then If IsNull(args(0)) Then Awk_HandleBuiltinFunction = Sqr(0) ElseIf IsNumeric(args(0)) Then Awk_HandleBuiltinFunction = Sqr(args(0)) Else Awk_HandleBuiltinFunction = Sqr(Val(args(0))) End If ElseIf name = "trim" Then Awk_HandleBuiltinFunction = Trim(args(0)) End If 'Dim i As Integer 'Dim xxx As String 'MsgBox name 'For i = LBound(args) To UBound(args) ' xxx = xxx & "," & args(i) 'Next i 'MsgBox xxx End Function Private Sub Form_Load() SourceIn.Text = "" SourceOut.Text = "" ConsoleIn.Text = "" ConsoleOut.Text = "" End Sub