<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to page</title><link>https://sourceforge.net/p/nsdci/wiki/page/</link><description>Recent changes to page</description><atom:link href="https://sourceforge.net/p/nsdci/wiki/page/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 01 Apr 2015 22:47:01 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/nsdci/wiki/page/feed" rel="self" type="application/rss+xml"/><item><title>page modified by Anonymous</title><link>https://sourceforge.net/p/nsdci/wiki/page/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="page-value-page"&gt;Page Value (page)&lt;/h1&gt;
&lt;p&gt;nsdci/dcicommon/page.c &lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The Page Value api (page) is used as a "global array". It is available to all adp call frames within a connection. It can be used to create data structures at the beginning of a connection to make available later in the connection, keep state during a connection, or pass values between call frames. It does not keep state between connections. &lt;/p&gt;
&lt;h2 id="tcl-api"&gt;TCL API&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;--------------------------------------------------------------------------------&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="pagegetvalue"&gt;page.getValue&lt;/h3&gt;
&lt;p&gt;Used to get the value of &lt;em&gt;key&lt;/em&gt;. If &lt;em&gt;key&lt;/em&gt; does not exist, an empty string is returned. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;page.getValue&lt;/strong&gt; &lt;em&gt;key&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Argument&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;key&lt;/em&gt;&lt;br /&gt;
String. The key to be read. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Result&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;String&lt;/code&gt;&lt;br /&gt;
Success. The value of &lt;em&gt;key&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TCL_ERROR&lt;/code&gt;&lt;br /&gt;
Failure. An error occurred. See the server log for more information. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;--------------------------------------------------------------------------------&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="pageappendvalue"&gt;page.appendValue&lt;/h3&gt;
&lt;p&gt;Used to append &lt;em&gt;value&lt;/em&gt; to &lt;em&gt;key&lt;/em&gt;. If &lt;em&gt;key is not set, it will set _key&lt;/em&gt; to &lt;em&gt;value&lt;/em&gt;. _&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;page.appendValue&lt;/strong&gt; &lt;em&gt;key value&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Argument&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;key&lt;/em&gt;&lt;br /&gt;
String. The key to append. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;value&lt;/em&gt;&lt;br /&gt;
String. The value to append to &lt;em&gt;key&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Result&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;NULL&lt;/code&gt;&lt;br /&gt;
Success. The key was appened. &lt;/p&gt;
&lt;p&gt;&lt;code&gt;TCL_ERROR&lt;/code&gt;&lt;br /&gt;
Failure. An error occurred. See the server log for more information. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;--------------------------------------------------------------------------------&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="pagesetvalue"&gt;page.setValue&lt;/h3&gt;
&lt;p&gt;Used to set &lt;em&gt;key&lt;/em&gt; to &lt;em&gt;value&lt;/em&gt;. If &lt;em&gt;key&lt;/em&gt; exists it will overwrite the value of &lt;em&gt;key&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;page.setValue&lt;/strong&gt; &lt;em&gt;key value&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Argument&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;key&lt;/em&gt;&lt;br /&gt;
String. The key to set. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;value&lt;/em&gt;&lt;br /&gt;
String. The value to set. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Result&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;NULL&lt;/code&gt;&lt;br /&gt;
Success. The key was set. &lt;/p&gt;
&lt;p&gt;&lt;code&gt;TCL_ERROR&lt;/code&gt;&lt;br /&gt;
Failure. An error occurred. See the server log for more information. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;--------------------------------------------------------------------------------&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;p&gt;The following example shows a page value being set by 2 adp call frames: &lt;/p&gt;
&lt;h4 id="mainadp"&gt;main.adp&lt;/h4&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;    &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt;
        &lt;span class="n"&gt;ns_adp_puts&lt;/span&gt; &lt;span class="s2"&gt;"Setting page value &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;foo&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; to 1..."&lt;/span&gt;
        &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setValue&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;ns_adp_include&lt;/span&gt; &lt;span class="kp"&gt;include&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inc&lt;/span&gt;
        &lt;span class="n"&gt;ns_adp_puts&lt;/span&gt; &lt;span class="s2"&gt;"The value of &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;foo&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; is now: [page.getValue foo]"&lt;/span&gt;
    &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id="includeinc"&gt;include.inc&lt;/h4&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="x"&gt;    &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt;
        &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setValue&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The output of main.adp would be: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Setting page value "foo" to 1... The value of "foo" is now: 2 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="best-practices"&gt;Best Practices&lt;/h2&gt;
&lt;p&gt;The page value api should only be used in adp pages. Writing TCL procedures that expect page values to be set is bad practice. Always explicitly pass values to procedures as arguments, use TCL upvar, or use a TCL global. &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 01 Apr 2015 22:47:01 -0000</pubDate><guid>https://sourceforge.netc79eb3958b0773711d02cf35ce6d4373bcf540b2</guid></item></channel></rss>