File: examples_languages.html

package info (click to toggle)
funnelweb-doc 3.2d-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,740 kB
  • sloc: perl: 241; makefile: 23
file content (223 lines) | stat: -rw-r--r-- 8,246 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223

<HTML>
<!--
***********************************************************************
FUNNELWEB MANUAL WEB PAGE
=========================
Copyright (c) Ross N. Williams 1992,1999. All rights reserved.

Permission is granted to redistribute and use this manual in
any medium, with or without modification, provided that all
notices (including, without limitation, the copyright
notice, this permission notice, any record of modification,
and all legal notices) are preserved on all copies, that all
modifications are clearly marked, and that modified versions
are not represented as the original version unless all the
modifications since the manual's original release by Ross N.
Williams (www.ross.net) consist of translations or other
transformations that alter only the manual's form, not its
content. THIS MANUAL IS PROVIDED "AS IS" AND WITHOUT ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
FITNESS FOR A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY
LAW THERE IS ABSOLUTELY NO WARRANTY.

***********************************************************************
-->

<HEAD>
<TITLE>6.3 Multiple Language Systems</TITLE>
<STYLE TYPE="text/css"> <!-- A {text-decoration: none} // --> </STYLE>
</HEAD>
<BODY BACKGROUND="binary/background.gif"
      BGCOLOR="#FFFFFF"
      TEXT="#000000"
      VLINK="#660000"
      LINK="#FF0000"
      ALINK="#CC0000">

<TABLE WIDTH="490">
<TR>
<TD WIDTH="130" VALIGN="top">
<IMG SRC="binary/d_clear.gif" ALT="" WIDTH="130" HEIGHT="1"><BR>

<FONT SIZE="2">
<BR>

<A HREF="http://www.ross.net/"
 TARGET="rosshome"
 onClick="window.open('','rosshome','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
>
 <IMG SRC="binary/rossnet_logo.gif"
  WIDTH="64" HEIGHT="32"
  BORDER="0" ALT="RossNet"
  HSPACE="0" VSPACE="1"></A><BR>
<BR>

<A HREF="../index.shtml"
 TARGET="funnelweb"
 onClick="window.open('','funnelweb','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
>
 <IMG SRC="binary/linklogo.gif"
  WIDTH="64" HEIGHT="32"
  BORDER="0" ALT="FunnelWeb"
  HSPACE="0" VSPACE="1"></A><BR>
<BR>
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR="#000000">
<A HREF="../reference/index.html"
 TARGET="funnelwebreference"
 onClick="window.open('','funnelwebreference','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
><FONT COLOR="#FFFFFF"><B>Reference</B></FONT></A><BR>
<BR>
<A HREF="../developer/index.html"
 TARGET="funnelwebdeveloper"
 onClick="window.open('','funnelwebdeveloper','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
><FONT COLOR="#FFFFFF"><B>Developer</B></FONT></A><BR>
<BR>
<A HREF="index.html"><FONT COLOR="#FFFFFF"><B>Tutorial</B></FONT></A><BR>
<A HREF="intro.html"><FONT COLOR="#FFFFFF">1 Introduction</FONT></A><BR>
<A HREF="macro.html"><FONT COLOR="#FFFFFF">2 Macros</FONT></A><BR>
<A HREF="type.html"><FONT COLOR="#FFFFFF">3 Typesetting</FONT></A><BR>
<A HREF="example.html"><FONT COLOR="#FFFFFF">4 Example</FONT></A><BR>
<A HREF="hints.html"><FONT COLOR="#FFFFFF">5 Hints</FONT></A><BR>
<A HREF="examples.html"><FONT COLOR="#FFFFFF">6 Examples</FONT></A><BR>
<A HREF="web.html"><FONT COLOR="#FFFFFF">7 Webmaking</FONT></A><BR>

<BR>
<A HREF="search.html"><FONT COLOR="#FFFFFF"><B>SEARCH</B></FONT></A><BR>
</FONT>
</TD></TR></TABLE>


</TD>
<TD WIDTH="360" VALIGN="top">
<FONT SIZE="3">


<A HREF="../reference/index.html"><IMG SRC="binary/title.gif"
 WIDTH="302" HEIGHT="24"
 BORDER="0" ALT="FunnelWeb Tutorial Manual"
 HSPACE="0" VSPACE="0"></A>
<P><FONT SIZE="5">6.3 Multiple Language Systems</FONT><BR>



<P>With the prevalence of open systems and multi-vendor computing, it is often necessary
to construct systems consisting of programs written in a
number of different programming languages for a number of
different systems. For example, a particular functionality
might be implemented by a shellscript (invoked by the user)
that calls a C&nbsp;program that makes a network connection to a
Pascal program that queries a database. Quite often all
these programs must conspire closely to execute their
function. In the normal case, they must be written
separately. FunnelWeb allows them to be written as a whole.

<P>By creating a single FunnelWeb file that creates many
product files in different languages, the programmer can
describe the interaction between the different programs in
any manner desired. Furthermore, because the different
product files  are all created in the same "text
                                            space" (i.e. in a single FunnelWeb file), it is easy for
them to share information.

<P>For example, in one real application FunnelWeb was used
to create a system for printing
files on a laser
printer connected to a remote Vax
Unix machine from a local Vax VMS machine. The system
consisted of two files: a VMS DCL command procedure to run
on the local node, and a Unix shellscript to run on the
remote node. The user, by giving the print command, invoked
the local VMS command procedure, which in turn fired up the
remote Unix shellscript. The two scripts then cooperated to
transfer the files to be printed and print them.

<P>In addition to its usual documentation powers,
FunnelWeb assisted in the creation of this system in two
special ways. First, it allowed pieces of code from the two
different command procedures to be partially interwoven in a
description of their interaction. This is just not possible
with comments. Second, it facilitated the use of shared
information. For example, under some conditions, each file
to be printed would be renamed and copied to the remote
system using a particular constant filename
(e.g. "<TT>printfile.tmp</TT>"). FunnelWeb allowed this
constant filename to be included in a single macro
definition which was invoked in the definition of each of
the scripts. This ensured that the two scripts used the same
name.

<P>
<PRE>
@A The following macro contains the temporary
file name used to allow the two shellscripts to
transfer each file to be printed.

@$@&lt;printfile@&gt;@M==@{printme.txt@}

@A Here are the scripts for the local VMS node
and the remote UNIX node.

@O@&lt;vmscommandprocedure.com@&gt;==@{@-
DCL commands
copy @&lt;printfile@&gt; unixnode::
DCL commands
@}

@O@&lt;unixshellscript@&gt;==@{@-
unix commands
print @&lt;printfile@&gt;
unix commands
@}
</PRE>

<P>In the case of the printing system, the entire system
was described and defined in a single FunnelWeb
<SAMP>.fw</SAMP> file. In larger systems containing many
FunnelWeb <SAMP>.fw</SAMP> files for many different modules in
many different languages, the same trick can be pulled by
placing FunnelWeb macro definitions for shared values into
FunnelWeb include files. For example, a suite of
implementations of network nodes, with each implementation
being in a different programming language for a different
target machine, could all share a table of configuration
constants defined in macros in a FunnelWeb include file.

<P>In summary, FunnelWeb's macro and include file
mechanisms provide a simple way for programs written in
different languages to share information. This reduces
redundancy between the systems and hence the chance of
inconsistencies arising.


<P>
<TABLE WIDTH="100%">
<TR>
<TD ALIGN="left"   VALIGN="bottom"><A HREF="examples_adt.html"><IMG SRC="binary/fw_left.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Prev"></A></TD>
<TD ALIGN="center" VALIGN="bottom"><A HREF="examples.html"><IMG SRC="binary/fw_up.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Up"></A></TD>
<TD ALIGN="right"  VALIGN="bottom"><A HREF="examples_function.html"><IMG SRC="binary/fw_right.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Next"></A></TD>
</TR>
</TABLE>



<HR>
<FONT SIZE="2">
<A HREF="mailto:webmaster@ross.net">Webmaster</A>&nbsp;&nbsp;&nbsp;
<A HREF="copyright.html">Copyright &copy; Ross N. Williams 1992,1999. All rights reserved.</A><BR>
</FONT>

</FONT>
</TD>
</TR>
</TABLE>


</BODY>

<!-- *********************************************************************** -->
<!--      End Of A FunnelWeb Manual Web Page (www.ross.net/funnelweb/)       -->
<!-- *********************************************************************** -->

</HTML>