From: Alan W. I. <ai...@us...> - 2006-05-20 18:41:27
|
Update of /cvsroot/plplot/plplot/doc/docbook/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15114 Modified Files: Makefile.am plplotdoc.xml.in Added Files: api-fortran95.xml fortran95.xml Log Message: Initial commit of Fortran 95 documentation. This starting effort is essentially just copied from the Fortran 77 documentation, although I added a few remarks about plcont, plshade, plshades, and plvect. This result validates. --- NEW FILE: api-fortran95.xml --- <!-- api-fortran95.xml: "The Specialized Fortran 95 API for PLplot" chapter Copyright (C) 1994 Geoffrey Furnish and Maurice LeBrun Copyright (C) 1999, 2000, 2001, 2002, 2003 Rafael Laboissiere Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Alan W. Irwin Copyright (C) 2003 Joao Cardoso Copyright (C) 2004 Andrew Ross Redistribution and use in source (XML DocBook) and "compiled" forms (HTML, PDF, PostScript, DVI, TeXinfo and so forth) with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code (XML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in compiled form (transformed to other DTDs, converted to HTML, PDF, PostScript, and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Important: THIS DOCUMENTATION IS PROVIDED BY THE PLPLOT PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PLPLOT PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> <chapter id="API-FORTRAN-95"> <title>The Specialized Fortran 95 API for PLplot</title> <para> The purpose of this Chapter is to document the API for each Fortran 95 function in PLplot that differs substantially (usually in argument lists) from the common API that has already been documented in <xref linkend="API"/>. </para> <para> Normally, the common API is wrapped in such a way for Fortran 95 that there is and one-to-one correspondence between each Fortran 95 and C argument (see <xref linkend="fortran95"/> for discussion). However, for certain routines documented in this chapter the Fortran 95 argument lists necessarily differ substantially from the C versions. </para> <para> This chapter is incomplete and NEEDS DOCUMENTATION. </para> <sect1 id="plcontfortran95" renderas="sect3"> <title> <function>plcont</function>: Contour plot for Fortran 95 </title> <para> This is an overloaded function with a variety of argument lists which NEED DOCUMENTATION. </para> <para> When called from Fortran 95, this overloaded routine has the same effect as when invoked from C. See <filename>examples/f95/x??f.f90</filename> for various ways to call plcont from Fortran 95. </para> </sect1> <sect1 id="plshadefortran95" renderas="sect3"> <title> <function>plshade</function>: Shaded plot for Fortran 95 </title> <para> This is an overloaded function with a variety of argument lists which NEED DOCUMENTATION. </para> <para> When called from Fortran 95, this overloaded routine has the same effect as when invoked from C. See <filename>examples/f95/x??f.f90</filename> for various ways to call plshade from Fortran 95. </para> </sect1> <sect1 id="plshadesfortran95" renderas="sect3"> <title> <function>plshades</function>: Continuously shaded plot for Fortran 95 </title> <para> This is an overloaded function with a variety of argument lists which NEED DOCUMENTATION. </para> <para> When called from Fortran 95, this overloaded routine has the same effect as when invoked from C. See <filename>examples/f95/x??f.f90</filename> for various ways to call plshades from Fortran 95. </para> </sect1> <sect1 id="plvectfortran95" renderas="sect3"> <title> <function>plvect</function>: Vector plot for Fortran 95 </title> <para> This is an overloaded function with a variety of argument lists which NEED DOCUMENTATION. </para> <para> When called from Fortran 95, this overloaded routine has the same effect as when invoked from C. See <filename>examples/f95/x??f.f90</filename> for various ways to call plvect from Fortran 95. </para> </sect1> <sect1 id="plmeshfortran95" renderas="sect3"> <title> <function>plmesh</function>: Plot surface mesh for Fortran 95 </title> <para> <funcsynopsis> <funcprototype> <funcdef> <function>plmesh</function> </funcdef> <paramdef><parameter>x</parameter></paramdef> <paramdef><parameter>y</parameter></paramdef> <paramdef><parameter>z</parameter></paramdef> <paramdef><parameter>nx</parameter></paramdef> <paramdef><parameter>ny</parameter></paramdef> <paramdef><parameter>opt</parameter></paramdef> <paramdef><parameter>mx</parameter></paramdef> </funcprototype> </funcsynopsis> </para> <para> When called from Fortran 95, this routine has the same effect as when invoked from C. The interpretation of all parameters (see &plmesh;) is also the same except there is an additional parameter given by: </para> <variablelist> <varlistentry> <term> <parameter>mx</parameter> (<literal>PLINT</literal>, input) </term> <listitem> <para> Length of array in x direction, for plotting subarrays. </para> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="plot3dfortran95" renderas="sect3"> <title> <function>plot3d</function>: Plot 3-d surface plot for Fortran 95 </title> <para> <funcsynopsis> <funcprototype> <funcdef> <function>plot3d</function> </funcdef> <paramdef><parameter>x</parameter></paramdef> <paramdef><parameter>y</parameter></paramdef> <paramdef><parameter>z</parameter></paramdef> <paramdef><parameter>nx</parameter></paramdef> <paramdef><parameter>ny</parameter></paramdef> <paramdef><parameter>opt</parameter></paramdef> <paramdef><parameter>side</parameter></paramdef> <paramdef><parameter>mx</parameter></paramdef> </funcprototype> </funcsynopsis> </para> <para> When called from Fortran 95, this routine has the same effect as when invoked from C. The interpretation of all parameters (see &plot3d;) is also the same except there is an additional parameter given by: </para> <variablelist> <varlistentry> <term> <parameter>mx</parameter> (<literal>PLINT</literal>, input) </term> <listitem> <para> Length of array in x direction, for plotting subarrays. </para> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="plparseoptsfortran95" renderas="sect3"> <title> <function>plparseopts</function>: parse arguments for Fortran 95 </title> <para> <funcsynopsis> <funcprototype> <funcdef> <function>plparseopts</function> </funcdef> <paramdef><parameter>mode</parameter></paramdef> </funcprototype> </funcsynopsis> </para> <para> When called from Fortran 95, this routine has the same effect as when invoked from C (see &plparseopts;) except that the argument list just contains the parsing mode and the Fortran 95 system routines <function>iargc</function> and <function>getarg</function> are used internally to obtain the number of arguments and argument values. (Note, during configuration, the user's Fortran 95 compiler is checked to see whether it supports <function>iargc</function> and <function>getarg</function>. If it does not, the Fortran 95 plparseopts simply writes a warning message and returns. </para> <variablelist> <varlistentry> <term> <parameter>mode</parameter> (<literal>PLINT</literal>, input) </term> <listitem> <para> Parsing mode; see &plparseopts; for details. </para> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="plsescfortran95" renderas="sect3"> <title> <function>plsesc</function>: Set the escape character for text strings for Fortran 95 </title> <para> <funcsynopsis> <funcprototype> <funcdef> <function>plsesc</function> </funcdef> <paramdef><parameter>esc</parameter></paramdef> </funcprototype> </funcsynopsis> </para> <para> Set the escape character for text strings. From Fortran 95 it needs to be the decimal ASCII value. Only selected characters are allowed to prevent the user from shooting himself in the foot (For example, a <quote>\</quote> isn't allowed since it conflicts with C's use of backslash as a character escape). Here are the allowed escape characters and their corresponding decimal ASCII values: <itemizedlist> <listitem> <para> <quote>!</quote>, ASCII 33 </para> </listitem> <listitem> <para> <quote>#</quote>, ASCII 35 </para> </listitem> <listitem> <para> <quote>$</quote>, ASCII 36 </para> </listitem> <listitem> <para> <quote>%</quote>, ASCII 37 </para> </listitem> <listitem> <para> <quote>&</quote>, ASCII 38 </para> </listitem> <listitem> <para> <quote>*</quote>, ASCII 42 </para> </listitem> <listitem> <para> <quote>@</quote>, ASCII 64 </para> </listitem> <listitem> <para> <quote>^</quote>, ASCII 94 </para> </listitem> <listitem> <para> <quote>~</quote>, ASCII 126 </para> </listitem> </itemizedlist> </para> <variablelist> <varlistentry> <term> <parameter>esc</parameter> (<literal>char</literal>, input) </term> <listitem> <para> NEEDS DOCUMENTATION </para> </listitem> </varlistentry> </variablelist> </sect1> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:2 sgml-indent-data:t sgml-parent-document: ("plplotdoc.xml" "book" "chapter" "") sgml-default-dtd-file:nil sgml-exposed-tags:nil sgml-local-catalogs:("/usr/lib/sgml/catalog") sgml-local-ecat-files:nil End: --> --- NEW FILE: fortran95.xml --- <!-- fortran95.xml: "Fortran 95 Language" chapter Copyright (C) 1994 Geoffrey Furnish and Maurice LeBrun Copyright (C) 1999, 2000, 2001, 2002, 2003 Alan W. Irwin and Rafael Laboissiere Copyright (C) 2003 Joao Cardoso Redistribution and use in source (XML DocBook) and "compiled" forms (HTML, PDF, PostScript, DVI, TeXinfo and so forth) with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code (XML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in compiled form (transformed to other DTDs, converted to HTML, PDF, PostScript, and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Important: THIS DOCUMENTATION IS PROVIDED BY THE PLPLOT PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PLPLOT PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> <chapter id="fortran95"> <title>Fortran 95 Language</title> <para> As discussed in the preceding section, PLplot's integer representation is a PLINT and its floating point representation is a PLFLT. To the Fortran 95 user, this most commonly translates to a type <literal>integer</literal> and type <literal>real</literal>, respectively. This is somewhat system dependent (and up to the installer of the package) so you should check the release notes to be sure, or just try it and see what happens. </para> <para> Because the PLplot kernel is written in C, standard C syntax is used in the description of each PLplot function. Thus to understand this manual it is helpful to know a little about C, but fortunately the translation is very easy and can be summarized here. As an example, the routine &plline; call from C would look like: <programlisting> plline(n,x,y); </programlisting> while from Fortran 95 it would look like: <programlisting> call plline(n,x,y) </programlisting> typically with <literal>n</literal> declared as type <literal>integer</literal> and <literal>x</literal>, <literal>y</literal> declared as type <literal>real</literal> (arrays in this case). Each C language type used in the text translates roughly as follows: <informaltable frame="none" pgwide="0"> <tgroup align="center" cols="2"> <colspec colnum="1" align="center" colwidth="1*"/> <colspec colnum="2" align="center" colwidth="1*"/> <tbody> <row> <entry>PLFLT</entry><entry>real</entry> </row> <row> <entry>PLINT</entry><entry>integer</entry> </row> <row> <entry>char *</entry><entry>character</entry> </row> <row> <entry>PLFLT *</entry><entry>real or real array</entry> </row> <row> <entry>PLFLT **</entry><entry>real array</entry> </row> <row> <entry><literal>"string"</literal></entry><entry><literal>'string'</literal></entry> </row> <row> <entry>array[0]</entry><entry>array(1)</entry> </row> </tbody> </tgroup> </informaltable> In C there are two ways to pass a variable --- by value (the default) or by reference (pointer), whereas only the latter is used by Fortran 95. Therefore when you see references in the text to <emphasis>either</emphasis> an ordinary argument or a pointer argument (e.g. <literal>*data</literal>), you simply use an ordinary Fortran 95 variable or array name. </para> <para> The PLplot library comes with a set of Fortran 95 interface routines that allow the exact same call syntax (usually) regardless of whether calling from C or Fortran 95. In some cases, this means the subroutine name <emphasis> exceeds 8 characters in length</emphasis>. Nearly every Fortran 95 compiler available today allows subroutine names longer than 8 characters, so this should not be a problem (although if it ever is, in principle a truncated name could be defined for that platform). </para> <para> These <quote>stub</quote> routines handle transforming the data from the normal Fortran 95 representation to that typically used in C. This includes: <itemizedlist> <listitem><para> Variables passed by value instead of by reference. </para> <para> Fortran 95 passes all subroutine arguments by reference, i.e., a pointer to the argument value is pushed on the stack. In C all values, except for arrays (including char arrays), are passed by value, i.e., the argument value itself is pushed on the stack. The stub routine converts the Fortran 95 call by reference to a call by value. As an example, here is how the plpoin stub routine works. In your Fortran 95 program you might have a call to plpoin that looks something like <programlisting> call plpoin(6,x,y,9) </programlisting> where x and y are arrays with 6 elements and you want to plot symbol 9. As strange as it seems (at least to C programmers) the constants 6 and 9 are passed by reference. This will actually call the following C stub routine (included in entirety) <programlisting> #include "plplot/plstubs.h" void PLPOIN(n, x, y, code) PLINT *n, *code; PLFLT *x, *y; { c_plpoin(*n, x, y, *code); } </programlisting> All this stub routine does is convert the number of points (<literal>*n</literal> and the symbol <literal>*code</literal> to call by value (i.e. pushes their value on the stack) and then calls the C plpoin library routine. </para></listitem> <listitem><para> Get mapping between Fortran 95 and C namespace right (system dependent). </para> <para> The external symbols (i.e. function and subroutine names) as you see them in your program often appear differently to the linker. For example, the Fortran 95 routine names may be converted to uppercase or lowercase, and/or have an underscore appended or prepended. This translation is handled entirely via redefinition of the stub routine names, which are macros. There are several options for compiling PLplot that simplify getting the name translation right (NEEDS DOCUMENTATION IF THESE STILL EXIST). In any case, once the name translation is established during installation, name translation is completely transparent to the user. </para></listitem> <listitem><para> Translation of character string format from Fortran 95 to C. </para> <para> Fortran 95 character strings are passed differently than other quantities, in that a string descriptor is pushed on the stack along with the string address. C doesn't want the descriptor, it wants a NULL terminated string. For routines that handle strings two stub routines are necessary, one written in Fortran 95 and one written in C. Your Fortran 95 program calls the Fortran 95 stub routine first. This stub converts the character string to a null terminated integer array and then calls the C stub routine. The C stub routine converts the integer array (type <literal>long</literal>) to the usual C string representation (which may be different, depending on whether your machine uses a big endian or little endian byte ordering; in any case the way it is done in PLplot is portable). See the <literal>plmtex</literal> stubs for an example of this. </para> <para> Note that the portion of a Fortran 95 character string that exceeds 299 characters will not be plotted by the text routines (<literal>plmtex</literal> and <literal>plptex</literal>). </para></listitem> <listitem><para> Multidimensional array arguments are changed from row-dominant to column-dominant ordering through use of a temporary array. </para> <para> In Fortran 95, arrays are always stored so that the first index increases most rapidly as one steps through memory. This is called <quote>row-dominant</quote> storage. In C, on the other hand, the first index increases <emphasis>least</emphasis> rapidly, i.e. <quote>column-dominant</quote> ordering. Thus, two dimensional arrays (e.g. as passed to the contour or surface plotting routines) passed into PLplot must be transposed in order to get the proper two-dimensional relationship to the world coordinates. This is handled in the C stub routines by dynamic memory allocation of a temporary array. This is then set equal to the transpose of the passed in array and passed to the appropriate PLplot routine. The overhead associated with this is normally not important but could be a factor if you are using very large 2d arrays. </para></listitem> </itemizedlist> </para> <para> This all seems a little messy, but is very user friendly. Fortran 95 and C programmers can use the same basic interface to the library, which is a powerful plus for this method. The fact that stub routines are being used is completely transparent to the Fortran 95 programmer. </para> <para> For more information on calling PLplot from Fortran 95, please see the example Fortran 95 programs (<filename>/examples/f95/x??f.f</filename>) distributed with PLplot. </para> </chapter> Index: Makefile.am =================================================================== RCS file: /cvsroot/plplot/plplot/doc/docbook/src/Makefile.am,v retrieving revision 1.68 retrieving revision 1.69 diff -u -d -r1.68 -r1.69 --- Makefile.am 20 May 2006 17:53:24 -0000 1.68 +++ Makefile.am 20 May 2006 18:41:23 -0000 1.69 @@ -29,11 +29,13 @@ api-c.xml \ api-compat.xml \ api-fortran77.xml \ + api-fortran95.xml \ api-obsolete.xml \ bibliography.xml \ c.xml \ deploying.xml \ fortran77.xml \ + fortran95.xml \ cplus.xml \ drivers.xml \ gui.xml \ Index: plplotdoc.xml.in =================================================================== RCS file: /cvsroot/plplot/plplot/doc/docbook/src/plplotdoc.xml.in,v retrieving revision 1.48 retrieving revision 1.49 diff -u -d -r1.48 -r1.49 --- plplotdoc.xml.in 20 May 2006 17:53:24 -0000 1.48 +++ plplotdoc.xml.in 20 May 2006 18:41:23 -0000 1.49 @@ -51,6 +51,7 @@ <!ENTITY chap-deploying SYSTEM "deploying.xml"> <!ENTITY chap-drivers SYSTEM "drivers.xml"> <!ENTITY chap-c SYSTEM "c.xml"> +<!ENTITY chap-fortran95 SYSTEM "fortran95.xml"> <!ENTITY chap-fortran77 SYSTEM "fortran77.xml"> <!ENTITY chap-cplus SYSTEM "cplus.xml"> <!ENTITY chap-tcl SYSTEM "tcl.xml"> @@ -61,6 +62,7 @@ <!ENTITY chap-bibliography SYSTEM "bibliography.xml"> <!ENTITY chap-api SYSTEM "api.xml"> <!ENTITY chap-api-c SYSTEM "api-c.xml"> +<!ENTITY chap-api-fortran95 SYSTEM "api-fortran95.xml"> <!ENTITY chap-api-fortran77 SYSTEM "api-fortran77.xml"> <!ENTITY chap-api-compat SYSTEM "api-compat.xml"> <!ENTITY chap-api-obsolete SYSTEM "api-obsolete.xml"> @@ -87,6 +89,7 @@ <!ENTITY plcon2 '<link linkend="plcon2"><function>plcon2</function></link>'> <!ENTITY plconf '<link linkend="plconf"><function>plconf</function></link>'> <!ENTITY plcont '<link linkend="plcont"><function>plcont</function></link>'> +<!ENTITY plcontfortran95 '<link linkend="plcontfortran95"><function>plcontfortran95</function></link>'> <!ENTITY plcontfortran77 '<link linkend="plcontfortran77"><function>plcontfortran77</function></link>'> <!ENTITY plcpstrm '<link linkend="plcpstrm"><function>plcpstrm</function></link>'> <!ENTITY plend '<link linkend="plend"><function>plend</function></link>'> @@ -137,13 +140,16 @@ <!ENTITY pllsty '<link linkend="pllsty"><function>pllsty</function></link>'> <!ENTITY plmesh '<link linkend="plmesh"><function>plmesh</function></link>'> <!ENTITY plmeshc '<link linkend="plmeshc"><function>plmeshc</function></link>'> +<!ENTITY plmeshfortran95 '<link linkend="plmeshfortran95"><function>plmeshfortran95</function></link>'> <!ENTITY plmeshfortran77 '<link linkend="plmeshfortran77"><function>plmeshfortran77</function></link>'> <!ENTITY plmkstrm '<link linkend="plmkstrm"><function>plmkstrm</function></link>'> <!ENTITY plmtex '<link linkend="plmtex"><function>plmtex</function></link>'> <!ENTITY plot3d '<link linkend="plot3d"><function>plot3d</function></link>'> <!ENTITY plot3dc '<link linkend="plot3dc"><function>plot3dc</function></link>'> +<!ENTITY plot3dfortran95 '<link linkend="plot3dfortran95"><function>plot3dfortran95</function></link>'> <!ENTITY plot3dfortran77 '<link linkend="plot3dfortran77"><function>plot3dfortran77</function></link>'> <!ENTITY plparseopts '<link linkend="plparseopts"><function>plparseopts</function></link>'> +<!ENTITY plparseoptsfortran95 '<link linkend="plparseoptsfortran95"><function>plparseoptsfortran95</function></link>'> <!ENTITY plparseoptsfortran77 '<link linkend="plparseoptsfortran77"><function>plparseoptsfortran77</function></link>'> <!ENTITY plpat '<link linkend="plpat"><function>plpat</function></link>'> <!ENTITY plpoin '<link linkend="plpoin"><function>plpoin</function></link>'> @@ -172,6 +178,7 @@ <!ENTITY plsdiplt '<link linkend="plsdiplt"><function>plsdiplt</function></link>'> <!ENTITY plsdiplz '<link linkend="plsdiplz"><function>plsdiplz</function></link>'> <!ENTITY plsesc '<link linkend="plsesc"><function>plsesc</function></link>'> +<!ENTITY plsescfortran95 '<link linkend="plsescfortran95"><function>plsescfortran95</function></link>'> <!ENTITY plsescfortran77 '<link linkend="plsescfortran77"><function>plsescfortran77</function></link>'> <!ENTITY plsetopt '<link linkend="plsetopt"><function>plsetopt</function></link>'> <!ENTITY plsexit '<link linkend="plsexit"><function>plsexit</function></link>'> @@ -212,6 +219,7 @@ <!ENTITY plvec1 '<link linkend="plvec1"><function>plvec1</function></link>'> <!ENTITY plvec2 '<link linkend="plvec2"><function>plvec2</function></link>'> <!ENTITY plvect '<link linkend="plvect"><function>plvect</function></link>'> +<!ENTITY plvectfortran95 '<link linkend="plvectfortran95"><function>plvectfortran95</function></link>'> <!ENTITY plvectfortran77 '<link linkend="plvectfortran77"><function>plvectfortran77</function></link>'> <!ENTITY plvpas '<link linkend="plvpas"><function>plvpas</function></link>'> <!ENTITY plvpor '<link linkend="plvpor"><function>plvpor</function></link>'> @@ -356,6 +364,7 @@ <part> <title> Language Bindings </title> &chap-c; + &chap-fortran95; &chap-fortran77; &chap-cplus; &chap-tcl; @@ -370,6 +379,7 @@ &chap-bibliography; &chap-api; &chap-api-c; + &chap-api-fortran95; &chap-api-fortran77; &chap-api-compat; &chap-api-obsolete; |