handle output redirection in OpenMaple - Maple Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Programming : OpenMaple : VB Application Programming Interface : Session State and Input-Output Functions : OpenMaple/VB/redirectCallBack

redirectCallBack - handle output redirection in OpenMaple

Calling Sequence

redirectCallBack(data, name, mode)




user_data pointer passed to StartMaple (Long)



name of the file stream to redirect to (byte array pointer)



file mode to distinguish between writing and appending (byte array pointer)



This OpenMaple function is part of the MapleCallBack structure passed as an argument to StartMaple.


The redirectCallBack function is called when the kernel executes the Maple writeto or appendto function. The intent is to redirect subsequent output.


The prototype for the function that you can assign to the entry in the MapleCallBack must look like the following.

Function RedirectCallBack(ByVal data As Long,

     ByVal name as Long,

     ByVal mode As Long) as Long


The name parameter specifies the name of the file to which output is appended.  The mode parameter specifies the file access mode to use. The mode is "wt" for write or "at" for append. The name and mode parameters are compatible with the C library function fopen.


If the name parameter is 0, Maple is signaling that redirection is terminated. Subsequent output is sent, for example, to the main output stream.


If no redirectCallBack function is provided, any attempt to execute the Maple writeto function or appendto function produces an error (reported using the errorCallBack function or textCallBack function).


The data parameter contains the same data as passed to StartMaple in the user_data parameter.


 dim useredirct as boolean

 Function RedirectCallBack(ByVal data As Long, ByVal name As Long, _

     ByVal mode As Long) As Long

    Dim iomode As String

    If name = 0 Then

        Close #2

        useredirect = False


        iomode = MaplePointerToString(mode)

        If iomode = "wt" Then

            Open MaplePointerToString(name) For Output As #2

            useredirect = True

        End If

    End If

    RedirectCallBack = True

 End Function

 Sub TextCallBack(ByVal data As Long, ByVal tag As Integer, _

     ByVal Output As Long)

     Dim OutputString As String

     OutputString = MaplePointerToString(Output)

     If useredirect Then

         Write #2, "BEGIN TextCallBack", tag

         Write #2, OutputString

         Write #2, "END TextCallBack"

     End If

 End Sub

 ' assignment to MapleCallback entry

 cb.lpRedirectCallBack = GetProc(AddressOf RedirectCallBack)

 ' test statement that will invoke the CallBackCallBack

 EvalMapleStatement kv, "writeto(""somefile"");"

 EvalMapleStatement kv, "x+y;"

 EvalMapleStatement kv, "writeto(terminal);"

See Also

callBackCallBack, errorCallBack, OpenMaple, OpenMaple/VB/API, OpenMaple/VB/Examples, queryInterrupt, readLineCallBack, StartMaple, statusCallBack, streamCallBack, textCallBack

Download Help Document

Was this information helpful?

Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam