eSP (or any other contributor),
Did you find an answer?
I've been searching the web like crazy and have found no real equivalent.
I suspect one has to look separately at the main uses of CFPARAM and find a functional equivalent (if any) for each. I think the 2 main uses of CFPARAM are:
* making sure you get all the Form / URL values needed to start processing a request.
* allowing you to use optional arguments for CF custom tags (or templates called by CFMODULE).
Form / URL values
-----------------
Form values in ASP are almost as easy as CFPARAM, because Request.Form returns a zero-length string (""

if there is no such form variable. So for example:
Response.Write("Dummy: |" & Request.Form("myVal"

& "|"

displays:
Dummy: ||
URL parameters are harder work in ASP because you have to parse Response.QueryString yourself and there's no built-in functionality which returns a zero-length string if the URL parameter was not supplied. But it's not hard to write a package of general-purpose functions which returns the actual value or a null string if none found. I'm working on one which uses a Scripting Dictionary object - created by
set myDict = New Server.CreateObject("Scripting.Dictionary"

The Scripting Dictionary object provides an associative array, which is how CF stores all variables any way.
Optional arguments for "sub-routines"
-------------------------------------
Depends whether you script in VBSCript or Javascript, but either way you can't treat all arguments as optional the way you can in CF.
VBScript does not allow optional arguments at all.
Javascript does in part, but with the restriction that, if any argument is present, all arguments to the left of it must be present. In Javascript you can code
if (typeof optional_arg == "undefined"

var optional_arg = "";
Or have you found anything better?