[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256]
[0257]
[0258]
[0259]
[0260]
[0261]
[0262]
[0263]
[0264]
[0265]
[0266]
[0267]
[0268]
[0269]
[0270]
[0271]
[0272]
[0273]
[0274]
[0275]
[0276]
[0277]
[0278]
[0279]
[0280]
[0281]
[0282]
[0283]
[0284]
[0285]
[0286]
[0287]
[0288]
[0289]
[0290]
[0291]
[0292]
[0293]
[0294]
[0295]
[0296]
[0297]
[0298]
[0299]
[0300]
[0301]
[0302]
[0303]
[0304]
[0305]
[0306]
[0307]
[0308]
[0309]
[0310]
[0311]
[0312]
[0313]
[0314]
[0315]
[0316]
[0317]
[0318]
[0319]
[0320]
[0321]
[0322]
[0323]
[0324]
[0325]
[0326]
[0327]
[0328]
[0329]
[0330]
[0331]
[0332]
[0333]
[0334]
[0335]
[0336]
[0337]
[0338]
[0339]
[0340]
[0341]
[0342]
[0343]
[0344]
[0345]
[0346]
[0347]
[0348]
[0349]
[0350]
[0351]
[0352]
[0353]
[0354]
[0355]
[0356]
[0357]
[0358]
[0359]
[0360]
[0361]
[0362]
[0363]
[0364]
[0365]
[0366]
[0367]
[0368]
[0369]
[0370]
[0371]
[0372]
[0373]
[0374]
[0375]
[0376]
[0377]
[0378]
[0379]
[0380]
[0381]
[0382]
[0383]
[0384]
[0385]
[0386]
[0387]
[0388]
[0389]
[0390]
[0391]
[0392]
[0393]
[0394]
[0395]
[0396]
[0397]
[0398]
[0399]
[0400]
[0401]
[0402]
[0403]
[0404]
[0405]
[0406]
[0407]
[0408]
[0409]
[0410]
[0411]
[0412]
[0413]
[0414]
[0415]
[0416]
[0417]
[0418]
[0419]
[0420]
[0421]
[0422]
[0423]
[0424]
[0425]
[0426]
[0427]
[0428]
[0429]
[0430]
[0431]
[0432]
[0433]
[0434]
[0435]
[0436]
[0437]
[0438]
[0439]
[0440]
[0441]
[0442]
[0443]
[0444]
[0445]
[0446]
[0447]
[0448]
[0449]
[0450]
[0451]
[0452]
[0453]
[0454]
[0455]
[0456]
[0457]
[0458]
[0459]
[0460]
[0461]
[0462]
[0463]
[0464]
<!DOCTYPE html>
<!-- WASDOC AXP-2.0.0 (CGILIB AXP-1.9.9) -->
<!-- wasDOC Copyright (C) 2019,2020 Mark G.Daniel - Apache-2.0 licenced -->
<!--  3-NOV-2021 02:57 -->
<noscript>NOTE: SOME FUNCTIONALITY EMPLOYS JAVASCRIPT</noscript>
<div id="erreport1" style="display:none;"></div>
<script>
function errorReport(string) {
   for (var cnt = 1; cnt <= 2; cnt++) {
      var err = document.getElementById('erreport'+cnt);
      err.style.display = 'block';
      err.innerHTML += string;
   }
}
</script>
<style type="text/css">
html { font-family: arial, verdana, sans-serif; font-size:12pt; margin:1em; }
h1 { font-size:124%; font-style:bold;
     margin-top:1em; margin-bottom:0.5em; }
h2 { font-size:120%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.4em; }
h3 { font-size:116%; font-style:bold;
     margin-top:1.0em; margin-bottom:0.3em; }
h4 { font-size:112%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.3em; }
h5 { font-size:112%; font-style:bold; 
     margin-top:1.1em; margin-bottom:0.3em; }
h6 { font-size:112%; font-style:bold; padding:0; margin:0; }

h1 .text { text-decoration:underline; }
h1 .numb { padding-right:0.8em; }
h1 .numb:empty { display:none; padding-right:0; }
h2 .numb { padding-right:0.8em; }
h2 .numb:empty { display:none; padding-right:0; }
h3 .numb { padding-right:0.8em; }
h3 .numb:empty { display:none; padding-right:0; }
h4 .numb { padding-right:0.8em; }
h4 .numb:empty { display:none; padding-right:0; }
h5 .numb { display:none; padding-right:0; }
h6 .numb { display:none; padding-right:0; }

kbd { font-family:monospace; }

noscript { font-size:1.2em; }

p { line-height:1.1em; margin-top:1em; margin-bottom:1em; }

.chunk { font-size:130%; text-decoration:underline; }
.head {}
.high {}
.bold { font-weight:bold; }
.center { text-align:center; }
.italic { font-style:italic; }
.left { text-align:left; }
.nowrap { white-space:nowrap; }
.prewrap { white-space:pre; }
.right { text-align:right; }
.strike { text-decoration:line-through; }
.under { text-decoration:underline; }

.backlight { background-color:#f2f2f2; }
.display0 { display:none; }

img { max-width:100%; }
.imglink { }

.link { }
.blank { }

.list { margin-bottom:1em; }
.list li { margin-top:0.5em; }
.list0 li { margin-top:0; }
.item {}

.tabl { border-collapse:collapse; text-align:left; margin:0.4em 2em 0.5em 2em; }
.tabu { border-collapse:collapse; text-align:right; margin:0.4em 2em 0.5em 2em; }

.tabr { vertical-align:top; }
.tabh { padding:0.2em 0 0 2em; margin:0; }
.tabd { padding:0.1em 0 0 2em; margin:0; }
.tabh:first-of-type, td:first-of-type { padding-left:0; }

.tabu .tabh,
.tabu .tabd { border:1px solid gray; padding:0.2em 0.3em 0.2em 0.3em; }
.tab0 { border:none; visibility:hidden; max-width:1em; 
        white-space:nowrap; overflow:hidden; }

.tabauto { margin-left:auto; margin-right:auto; }

.tabr:empty { height:0.2em; }
.tabu .tabh:empty, .tabu .tabd:empty { border:none; visibility:hidden; }

.error { font-size:110%; color:black; background-color:yellow;
         font-family:sans-serif; font-weight:bold; font-style:normal;
         width:95%; border:solid 1px gray; padding:0.5em 1em 0.5em 1em; }
.error::before { content:'\026a0\00a0'; }
.image { }
.page { width:98%; border:1px dashed gray; margin:1.5em 0 1.8em 0; }
.epage { width:98%; border:1px dashed black; margin:1.5em 0 1.8em 0; }
.monosp { font-family:monospace; }
.ppage { display:none; }
.simple { list-style-type:none; }
.valtop { vertical-align:top; }
.valmid { vertical-align:middle; }
.valbot { vertical-align:bottom; }

.code { border-style:solid; border-width:0 0 0 1px; padding-left:1em;
        font-family:monospace; white-space:pre; }
.block { }
.blockof { margin:0.4em 2em 0.5em 2em; }
.example { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
           margin-top:0.5em; margin-bottom:0.5em; white-space:pre; }
.indent { margin-left:2em; margin-right:2em; }
.noindent { margin-left:0; margin-right:0; }
.inblock { display:inline-block; }
.mono { white-space:pre; font-family:monospace; }
.note { margin:0.4em 2em 0.5em 2em; page-break-inside:avoid; }
.note h5 { margin-top:0 }
.note_hr { width:80%; border:1px solid gray; }
.prop { padding-left:1em; margin-top:0.5em; margin-bottom:0.5em; }
.quote { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
         margin-top:0.5em; margin-bottom:0.5em; }
.this { display:none; }

a:link,a:visited { color:black; text-decoration:none; }
a:hover,a:active { text-decoration:underline; }
a:focus { outline:0; } 

:target:before { content:''; display:block; height:0.1em; margin:-0.1em; }
a.link:link, a.link:visited,a.link:active 
{ color:midnightBlue; text-decoration:underline; text-decoration-style:solid; }

.TOC1cols1 { width:80%; max-width:80%; }
.TOC1cols2 { column-count:2; width:80%; max-width:80%; }
.TOC1cols3 { column-count:3; max-width:90%; max-width:90%; }
.TOC1cols4 { column-count:4; max-width:100%; max-width:100%; }
.TOC1table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC1table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC1table td+td { padding:0 0 0 0.5em; }
.TOC1table .numb { width:3em; max-width:3em; }
.TOC1table .sepr { width:5em; max-width:6em; overflow:hidden; }
.TOC1table .majr { font-weight:bold; }
.TOC1table .text { white-space:normal; }

/* These are due to Firefox (at least <= 76) recalcitrant multi-column handling.
   Web search "Split table into css columns, issue in Firefox" (stackoverflow).
   "Good grief, Charlie Brown!" */
 
.TOC1cols2 table,
.TOC1cols2 tbody,
.TOC1cols2 tr,
.TOC1cols3 table,
.TOC1cols3 tbody,
.TOC1cols3 tr,
.TOC1cols4 table,
.TOC1cols4 tbody,
.TOC1cols4 tr { display:block; padding:0; }

.TOC2cols1 { width:60%; max-width:60%; }
.TOC2cols2 { column-count:2; width:70%; max-width:70%; }
.TOC2cols3 { column-count:3; width:80%; max-width:80%; }
.TOC2cols4 { column-count:4; width:90%; max-width:90%; }
.TOC2table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC2table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC2table .numb { font-weight:bold; padding-right:0.5em; }
.TOC2table .text { width:100%; white-space:normal; }

/* see "recalcitrant" above */
.TOC2cols2 table,
.TOC2cols2 tbody,
.TOC2cols2 tr,
.TOC2cols3 table,
.TOC2cols3 tbody,
.TOC2cols3 tr,
.TOC2cols4 table,
.TOC2cols4 tbody,
.TOC2cols4 tr { display:block; padding:0; }

.NAVtable { margin:0.1em 0 0 2em; }
.NAVtable td { font-size:110%; font-weight:bold; padding:0; margin:0; }
.NAVtable a { padding:0 0.5em 0 0.5em; text-decoration:none; }

.IDXcols1 { width:80%; max-width:80%; }
.IDXcols2 { column-count:2; width:90%; max-width:90%; }
.IDXcols3 { column-count:3; width:95%; max-width:95%;  }
.IDXcols4 { column-count:4; width:100%; max-width:100%;  }
.IDXtable { margin:1em 0 1em 2em; white-space:nowrap; break-inside:auto; }
.IDXtable tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.IDXtable .alpha { font-weight:bold; min-width:2em; }
.IDXtable .text  { width:100%; white-space:normal; }
.IDXtable .para:before { content:'\00b6\00a0'; }

/* see "recalcitrant" above */
.IDXcols2 table,
.IDXcols2 tbody,
.IDXcols2 tr,
.IDXcols3 table,
.IDXcols3 tbody,
.IDXcols3 tr,
.IDXcols4 table,
.IDXcols4 tbody,
.IDXcols4 tr { display:block; padding:0; }

.insight { background-color:cyan; font-family:monospace;
           padding:0 0.2em 0 0.2em; margin:0 0.2em 0 0.2em;
           font-size:100%; font-style:normal; font-weight:normal;
           text-decoration:none; }

.wasdoc { font-family: "Lucida Console", Monaco, monospace; 
          letter-spacing:-0.07em; }

@media screen { .blank::after { content:"\2924"; } 
                .print { display:none; }
}

@media print {
   table { page-break-inside:avoid; }
   .noprint { display:none; }
   .page { border:none; page-break-after: always; }
   .epage { display:none; }
   .ppage { page-break-after:always; }
   .NAVtable { display:none; }
   .NAVprint { display:block!important; }
}

@page { margin:2cm 1cm 2cm 1cm;  }
</style>
<!-- source:0000_SCRIPTING.WASDOC -->

<style type="text/css">._smiley::after { font-size:150%; vertical-align:middle; content:'\263a' }</style>
<style type="text/css">._frowny::after { font-size:150%; vertical-align:middle; content:'\2639' }</style>

<a id="0." href="#"></a>
<title>WASD Scripting Environment &ndash; Run-Time Environments</title>
<a id="4." href="#"></a>
<a id="4.runtimeenvironments" href="#"></a>
<a id="runtimeenvironments" href="#"></a>
<h1 class="head chunk">WASD Scripting Environment</h1>
<h1 class="head"><span class="numb">4.</span><span class="text">Run-Time Environments</span></h1>

<table class="TOC2table">
<tr><td><a href="scripting004.html#4.1.rteprogramming"><span class="numb">4.1</span><span class="text">RTE Programming</span></a>
<tr><td><a href="scripting004.html#4.2.serverconfiguration"><span class="numb">4.2</span><span class="text">Server Configuration</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="scripting003.html#3.">&#8598;&#xFE0E;</a>
<td><a href="scripting000.html#0.">&#8593;&#xFE0E;</a>
<td><a href="scripting005.html#5.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> A Run-Time Environment (RTE) is a persistant scripting environment with
similar objectives to CGIplus &hellip; reducing script response time, increasing
server throughput and reducing system impact.  In fact the RTE environment is
implemented using CGIplus!  There is very little difference in the behaviour of
CGIplus scripts and RTEs.  Both are activated by the server, process multiple
requests (reading the request CGI environment from a data stream supplied by
the server), persist between requests in a quiescent state, and may be removed
by the server if idle for a specified period or when it wishes to use the
process for some other purpose. <span class="high bold">Like CGIplus an RTE must be purpose-written
for the environment!</span>  What is the difference then?

<p> With CGIplus the script itself persists between uses, retaining all of its
state.  With an RTE the script does not persist or retain state, only the RTE
itself.

<p> A RTE is intended as an environment in which a script source is interpreted
or otherwise processed, that is for scripting engines, although it is not
limited to that.  The essential  difference between an RTE and a CGIplus script
is this script source.  In CGIplus the SCRIPT_NAME and SCRIPT_FILENAME CGI
variables reflect the script itself, and remain constant for each activation of
the script, with PATH_INFO and PATH_TRANSLATED providing the additional
&quot;location&quot; information for the script processing.  With an RTE the SCRIPT_NAME
and SCRIPT_FILENAME can vary with each activation.  This allows the RTE to
process multiple, successive different (or the same) scripts, each with its own
PATH_INFO and PATH_TRANSLATED.  Hence, it is not unreasonable to consider the
two environments to be the same, with a slight difference in the mapping of
resources passed to them.

<p> This might be best illustrated with examples.

<a id="4.0.0.0.1" href="#"></a>
<a id="4.cgiplusexample" href="#"></a>
<a id="cgiplusexample" href="#"></a>
<h5 class="head"><span class="text">CGIplus Example</span></h5>

<p> Consider the mapping rule

<div class="blockof code">exec+ /cgiplus-bin/* /cgi-bin/*
</div>
 applied to the following CGIplus request

<div class="blockof code">/cgiplus-bin/xyz/the/path/information?and=a&amp;query=string
</div>

<p> If the script was an executable it would be activated as

<div class="blockof code">CGI-BIN:[000000]XYZ.EXE
</div>

with script CGI information

<div class="blockof code">/cgiplus-bin/xyz
CGI-BIN:[000000]XYZ.EXE
</div>

and the request path information and query string supplied as

<div class="blockof code">/the/path/information
THE:[PATH]INFORMATION
and=a&amp;query=string
</div>

<a id="4.0.0.0.2" href="#"></a>
<a id="4.rteexample" href="#"></a>
<a id="rteexample" href="#"></a>
<h5 class="head"><span class="text">RTE Example</span></h5>

<p> By contrast with a request to activate an RTE the following mapping rule

<div class="blockof code">exec+ /xyz-bin/* (CGI-BIN:[000000]XYZ.EXE)/wasd_root/src/xyz/*
</div>

(note the RTE executable specified inside parentheses) and request

<div class="blockof code">/xyz-bin/an_example/the/path/information?and=a&amp;query=string
</div>

would activate the scripting environment (perhaps interpreter)

<div class="blockof code">CGI-BIN:[000000]XYZ.EXE
</div>

supplying it with per-request script name and file information 

<div class="blockof code">/xyz-bin/an_example.xyz
WASD_ROOT:[SRC.XYZ]AN_EXAMPLE.XYZ
</div>

and path and query string information

<div class="blockof code">/the/path/information
THE:[PATH]INFORMATION
and=a&amp;query=string
</div>

<a id="4.0.0.0.3" href="#"></a>
<a id="4.summary" href="#"></a>
<a id="summary" href="#"></a>
<h5 class="head"><span class="text">Summary</span></h5>

<p> As can be seen the script information is constant for each request to a
CGIplus script, while with RTE the script information could vary with each
request (although of course it would be the same if the same script is
requested).  In the case of CGIplus the <span class="high italic">process what?</span> request information is
provided only by path information, however with RTE both script and path
information are used.

<a id="4.1" href="#"></a>
<a id="4.1.rteprogramming" href="#"></a>
<a id="rteprogramming" href="#"></a>
<h2 class="head"><span class="numb">4.1</span><span class="text">RTE Programming</span></h2>

<p> <span class="high bold">The RTE interface is still CGI</span>, with all the usual environment variables
and input/output streams available, just in a CGIplus environment!  Hence when
coding a Run-Time Environment the same considerations involved in CGIplus
programming apply (<a class="link" href="scripting003.html#3.cgiplus">3. CGIplus</a>).

<p> In particular it is important a RTE should explicitly close files, free
allocated memory, etc., after processing a request (of course it cannot rely on
image  run-down to clean-up after itself). It is particularly important that
all traces of each script's processing are removed after it concludes.  This
does not mean for example that databases need to be completely closed, etc.,
which might defeat the purpose of using a persistant environment, just that
great care must be exercised by the programmer to prevent one script
interfering with another!

<p> An example RTE,
<a class="link blank monosp" target="_blank" href="/wasd_root/src/CGIplus/RTE_example.c">WASD_ROOT:[SRC.CGIPLUS]RTE_EXAMPLE.C</a>
provides the basics of the environment.

<p> A source code collection of C language functions useful for processing the
more vexing aspects of CGI/CGIplus/RTE programming ().  The example RTE implementation uses this library.

<a id="4.2" href="#"></a>
<a id="4.2.serverconfiguration" href="#"></a>
<a id="serverconfiguration" href="#"></a>
<h2 class="head"><span class="numb">4.2</span><span class="text">Server Configuration</span></h2>

<p> The following configuration information uses the supplied Perl RTE as the
example.  Note that RTE scripting engines must always be mapped using the EXEC+
rules.  The SCRIPT+ rule does not apply.

<p> The following rule in WASD_CONFIG_MAP maps the /pl-bin/ location to where the
site wishes to locate its CGI Perl scripts (not necessarily the same as in the
example).

<div class="blockof code">exec+ /pl-bin/* (CGI-BIN:[000000]PERLRTE.EXE)/wasd_root/src/perl/*
</div>

<p> With this rule Perl scripts may be accessed using 

<div class="blockof code">http://host.name.domain/pl-bin/an_example
</div>

<p> This WASD_CONFIG_GLOBAL rule ensures Perl scripts could be activated via
the Perl RTE even if the WASD_CONFIG_MAP rule did not exist (<a class="link" href="scripting001.html#1.7.scriptruntime">1.7 Script Run-Time</a>).

<div class="blockof code">[DclScriptRunTime]
.PL  (CGI-BIN:[000000]PERLRTE.EXE)
</div>

<div class="note"><a id="4.2.0.0.0.1" href="#"></a>
<a id="4.2.note" href="#"></a>
<a id="note" href="#"></a>
<h5 class="head center"><span class="text">Note</span></h5>
<hr class="note_hr">

The server makes no check of the RTE executable (or procedure) before
attempting to activate  it using DCL for processing the script.  If it does not
exist or is not accessible due to incorrent file protections the DCL of the
scripting process will report the problem.
<hr class="note_hr">
</div>

<p> It does by default however, check that the file used as the script source
exists as with other scripting environments.  If it does not this is reported
as a &quot;script not found&quot;.  For RTEs that wish to report on this themselves, or
that possibly construct their own script specification via some internal
processing, this server behaviour may be suppressed for the script activation
path using the WASD_CONFIG_MAP path SETting &quot;script=nofind&quot; as in the following
example.

<div class="blockof code">set /xyz-bin/* script=nofind
exec+ /xyz-bin/* (CGI-BIN:[000000]XYZ.EXE)/wasd_root/src/xyz/*
</div>

<p> CGI environment variables SCRIPT_FILENAME and PATH_TRANSLATED can be
provided to any RTE script in Unix file-system syntax should that script
require or prefer it using this format.  See <a class="link" href="scripting001.html#1.8.unixsyntax">1.8 Unix Syntax</a>.

<a id="4.2.0.0.1" href="#"></a>
<a id="4.2.dclprocedure" href="#"></a>
<a id="dclprocedure" href="#"></a>
<h5 class="head"><span class="text">DCL procedure</span></h5>

<p> If the RTE executable requires <span class="high italic">wrapping</span> in a DCL procedure (perhaps to
provide some command-line specific parameter or define a C-RTL logical name)
this can be specified in place of an executable.  Merely prefix the
specification with a &quot;@&quot;.  The default is to run an executable (this can
explicitly be specified using a leading &quot;&dollar;&quot;) while the leading &quot;@&quot; provides a
DCL procedure activation.
<!-- source:0500_WEBSOCKET.WASDOC -->

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="scripting003.html#3.">&#8598;&#xFE0E;</a>
<td><a href="scripting000.html#0.">&#8593;&#xFE0E;</a>
<td><a href="scripting005.html#5.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>