|
MBA 683 E-Business Technology --
Syllabus Classes References Examples Student Info Guest Info
|
TCL ReferencesThe TCL (pronounced 'tickle') programming language is supported by the AOL server environment that we are using for this course. TCL programs can be embedded into Web pages and will be executed automatically when the page is accessed. This is an extremely convenient way to develop programs that avoids all the software tools and compiling steps required for other programming languages. This page provides a short guide to the subset of TCL you will need for this course. See also additional references. TCL code can be executed four ways, we primarily use the first alternative:
TCL variables:
TCL SyntaxCommands are terminated by the end of a line (called a newline) or a semicolon. Whitespace (space or tab) is used to separate commands and arguments. # indicated that rest of the line is a comment. A backslash continues a comment to another line. Use ;# to put a comment on the same line as a command. Note that comments should only appear between TCL commands. Comments embedded inside TCL commands may cause problems. $ dollar sign returns the value of a variable. [ ] brackets are used to nest commands. Double quotes " " or curly braces { } are used to group words together into one argument. Quotes allow substitution (evaluation) of the contents, curly braces prevent substitution. \ backslash is used to allow substituting characters that would otherwise have special meaning to TCL such as newline (\n). Use \ to quote TCL special characters:
TCL Commandsset variable [exp]. For example the TCL equivalent of a=b is
expr evaluate an arithmetic expression (see Arithmetic Operators below). The TCL equivalent of a=b+2 is:
incr var, increment command adds one to a variable. The equivalent of c=c+1 or c++ in C or Java is:
ns_adp_puts writes a string to the client. In ADP pages, use ns_adp_puts instead puts or ns_write.
format forms values according to a formatting specification and value like this:
Format may be used inside the string for ns_adp_puts like this:
If $pure equals 99.98765 the result will be:
Format specifications are enclosed in quotes, begin with % followed by the formatting flags and ends with the format type. Format flags include the number of characters as well as the following values:
Format types include:
If then, if then else conditional commands (comparison operators are defined below) are shown below. The then command is optional.
Compound conditional statements may be created using elseif.
While loop with test clause and body. Note that the condition ($x<=10) must be enclosed in braces ({$x<=10}) or an infinite loop will result.
Info exists, test if a TCL variable has been defined. Note that HTML Form variables will not be defined if the field is omitted. Use info exists to check and provide an error message or a default value.
TCL String Operations
For example:
TCL Operators! is logical Not * Multiply, / Divide, % Remainder + Add, - Subtract < Less Than, <= Less Than or Equal > Greater Than, >= Greater Than or Equal == test for Equal != test for Not Equal && is logical And || is logical Or Note: logical operators treat 1 as true and 0 as false. TCL Library Routines and AOL Server API Callsns_adp_puts writes output to the user's browser window from .adp pages.
Displays the results of a TCL expression. Use $name to display TCL variable values. Examples:
db_foreach executes a SQL query and then executes some TCL code for each row returned by the database. The unconditional form is:
Example:
Notes:
The conditional form executes code-block-2 if no rows are returned.
Example:
db_dml executes a SQL Data Manipulation Language command such as Insert, Update or Delete. Basic pattern is:
Example:
db_resultrows returns the number of rows affected by the previous db_dml statement. For example:
db_1row performs an SQL query and sets values equal to column names. Results in an error if the query does not return exactly one row. For example:
db_0or1row performs an SQL query and returns these possible results:
db_nextval returns the next value of an Oracle Sequence. Multiple calls within the same logical database row will return the same value. For example:
ns_dbquotevalue prepares a string value for inclusion in an SQL statement by adding quotes and doubling any single quotes included in the string. Empty strings ("") are translated to NULL.
ad_set_cookie will create a browser cookie with the specified name and value. The simple form is:
There are also these optional arguments that may specified after ad_set_cookie and before the name and value:
Notes:
ad_get_cookie returns the value of the browser cookie with the specified name or the default value if there is no cookie with that name.
For example, this statement sets c_val to the cookie value or "n/a":
ns_time returns the current system date and time as the number of seconds since 00:00:00 UTC, January 1, 1970. Use ns_fmttime (below) to format the results. ns_fmttime formats server time (ns_time) values. For example:
Options include: Weekday short (%a) or long (%A), Month name short (%b) or long (%B), Day of month (%e), Year short (%y) or long (%Y), Time hh:mm:ss xM (%r), 24 hour time hh:mm:ss (%T), or hh:mm (%R), time zone (%Z), etc. ad_returnredirect switches the user to a different page by sending an HTTP redirect message. Used in a helper page to send the user back to the main page (which will be refreshed) if the operation is successful and there are no error messages to show the user. TCL commands following the call to ad_returnredirect will be executed (this command only sends the redirect message), either design your code to handle this or call ns_adp_abort as shown in the example below. For example:
set_form_variables creates TCL variables with the same names as form fields. Use set_the_usual_form_variables (below) instead so you have the QQ quoted versions of strings. set_the_usual_form_variables is like set_form_variables but also makes QQ versions of fields names for handling quoted strings correctly. It is a good idea to include a comment listing the variables that you expect this routine to create.
Note that HTML form fields that are not filled in, checked or selected do not pass any value, consequently variables will not be created for these fields. If no values are passed the user may get a HTTP 500 Server Error message. To avoid having the user get this errors, specify a 0 for the error predicate as shown below and test for the existence of each variable.
You can use info exists to test for a value and give return a message as shown above. An alternative is to use the function export_var to provide a default value like this:
Other TCL ExamplesSee http://usf-acs.rho.net/tech/ Greenspun pages 378, 442, 467, 510, and 515. Note that the book uses the old TCL API. Additional ReferencesFor more information on TCL see:
Note: we are not using Tk, a toolkit for building graphical user interfaces. |
|
© 2001 by Chuck Ehrlich, all rights reserved. Comments to webmaster. Updated on April 18, 2001. |