iASP Precompiler: Known Issues

This document contains information crucial for running the iASP pre-Compiler. We strongly recommend you spend a few minutes and read this file in its entirety. 

  • Some error messages will be different from ASP, for example: Referencing the Session, Request, or Response objects in the Application_OnStart event script causes an error, but the error description in Pre-Compiler will be different from ASP.

  • The servlets generated by the iASP pre-compiler can run as the standalone servlets, but if the ASP page links some other files, such as an image file, and if the servlet isn't generated in the same directory with the ASP, the servlet won't find the linked file.

  • If the size of the ASP code is too large, the Service method can not be compiled by Javac,  because the method size can not exceed 64K in JDK1.2 virtual machine.

  • The iASP pre-compiler can run ONLY with JSDK2.1.

  • The IIS ASP engine can pass strange syntax, but the iASP pre-compiler will report an error:
    int i = 987

  • The IIS ASP engine declares variables at run-time, while the iASP pre-compiler declares variables at compile-time. This difference will cause some codes that can run with IIS, to not run with the iASP pre-compiler.
    For example, if an undefined variable is used in codes that never execute, the IIS ASP engine won't report an error but the iASP pre-compiler will as the following sample code shows: 

    <%option explicit %>
    <%if false then 
         a = 888 ' this will generate an error in the iASP pre-compiler,
                 ' but works with IIS.

         else
            dim b = 90
         end if         
    %>


  • Because the IIS ASP engine declares variable at run-time, the 'twoscope' variable  will have two scopes (local and global) in IIS, but the iASP pre-compiler has only one scope (global) as the following sample code shows:

    <%
       test
       Response.Write("after call 1 = " & towscope)
       'this will output nothing to client in IIS,
       'but the iASP pre-compiler will output 888.


       sub test()
          towscope = 888
       end sub
       towscope = 999
       test 
       Response.Write(towscope)  'this will output 888 to client in IIS.
    %>

  • The IIS ASP engine has a computation bug ( "-2^2" is "4") that the iASP pre-compiler fixes.

  • The iASP pre-compiler does not support the getObject function.
  • The iASP pre-compiler handles the option explicit error at compilation time, but IIS handles the option explicit error at runtime. The following codes can work well with IIS , but do not work with iASP pre-compiler.

    <%
       option explicit
       on error resume next
       response.write typename(var1)
    %>


  • The IIS ASP engine incorrectly allows strings such as "[22]" to be used as the name of a variable. The iASP pre-compiler does not.

  • With "On Error resume next" code, if an error occurs in a condition statement (e.g.: if 3/0 then, while(3/0) ...), IIS will jump to the next statement, but the iASP pre-compiler cannot. 
    For example:

    <% On Error resume next
    if 3/0 then
       Response.write("execute here ")
    else
       Response.write("doesn't execute here ")
    end if  %>


  • The iASP pre-compiler doesn't support the execution of Jscript codes dynamically. 
    The following codes cannot be executed in the pre-compiler :

    <%
       var b = new Function("Response.Write(\"new Function\");");
       c = new b.constructor("Response.Write(\"new constructor\");");
       b();
       c();
       eval("Response.Write(\"invoked by eval statement\")");
    %>


  • The iASP pre-compiler doesn't support Eval.

  • Expression of JScript cannot be used as a statement in the iASP pre-compiler.

  • The iASP pre-compiler's ASP2JSP does not support the BinaryWrite method.

NOTE: If you require immediate support for an unsupported function, please email support@halcyonsoft.com.


Copyright © 1998-2002, Halcyon Software Inc. All rights reserved.