gamshtm.gms : HTML generation of model library

Description

Generates HTM model library files.


Small Model of Type : GAMS


Category : GAMS Model library


Main file : gamshtm.gms   includes :  gamsmod.inc  gamsref.inc

$title Generates HTM Model Library Files (GAMSHTM,SEQ=215)

$onText
Generates HTM model library files.


GAMS Development Corporation, Modeling Tool Box.

Generates all .htm related files for a set of models
found in gamsmod.inc. Uses unpublished and
unsupported PUT_Utilities features.

The file gamsmod.inc is the master file for all other
derived files.

Files generated:

   seqindx.htm
   subindx.htm
   modlist.tex
   alfindx.htm
   *.htm  for all model and include files

All files $included, read and written have to be in the same
directory. This program can be execute from another location
by using the GAMS parameter U1, for example:

   >gams gamshtm.215 U1=c:\oldd\alex\gams\gamslib\ver008\test\

Keywords: GAMS language features, GAMS model library, generating htm files
$offText

$setglobal gamslib '%gams.u1%'

File
   htm     'HTML file handle'    / htm.htm /
   seqindx 'HTML sequence index' / '%gamslib%seqindx.htm' /
   subindx 'HTML subject index'  / '%gamslib%subindx.htm' /
   alfindx 'HTML alpha index'    / '%gamslib%alfindx.htm' /
   modlist 'TeX  subject index'  / '%gamslib%modlist.tex' /;

Scalar first;

$offListing
$include "%gamslib%gamsmod.inc"
$onListing

*
*  model htm files
*
put htm;
htm.pw    = 4096;
htm.lcase =    1;

loop(sm(s,m),
   put_utilities 'ren'/ '%gamslib%' m.tl:0 '.htm';
   put   '<html> <head> <title>' m.tl:0 '.gms</title>'
       / '<!--#include virtual="/header.html" -->'
       / '<h2>'m.tl:0 '.gms : ' m.te(m) '</h2>';
   put / '<hr>';
   put_utilities 'htm'/ '%gamslib%' m.tl:0 '.' s.tl:0;
   put / '<hr>';
   if(big(s), put 'Large '; else put 'Small ';);
   put 'Model of Type';
   put$(sum(ts(t,s),1)>1) 's';
   put ':';
   htm.lcase = 2;
   loop(tss(t,s), put ' ' t.tl;);
   htm.lcase = 1;
   loop(ts(t,s)$(not tss(t,s)), put ' ' t.tl;);
   first = 1;
   loop(incmap(inc,s),
      if(first,
         put '&nbsp;&nbsp;&nbsp;Includes:'; first = 0;);
      put$(not bininc(inc)) '&nbsp; <a href="' inc.tl:0 '.htm">' inc.tl:0 '</a>';
      put$bininc(inc)       '&nbsp; <a href="' inc.tl:0 '">' inc.tl:0 '</a>';
   );
   put   '<hr>'
       / '<plaintext>'
       / '<!--#include virtual="%gamslib%' m.tl:0 '.' s.tl:0 '" -->';
* Either we do the < > replacement or we use plaintext
*       / '</pre>'
*       / '<!--#include virtual="/footer.html" -->'
*       / '</html>'
);

*
*  include htm files
*
loop(inc$(not bininc(inc)),
   put_utilities 'ren'/ '%gamslib%' inc.tl:0 '.htm';
   put   '<html> <head> <title>' inc.tl:0 '</title>'
       / '<!--#include virtual="/header.html" -->'
       / '<h2>'inc.tl:0 ' : ' inc.te(inc) '</h2>'
       / '<hr> <p> Used by:';
   loop((incmap(inc,s),sm(s,m)),
      put '&nbsp; <a href="' m.tl:0 '.htm">' m.tl:0 '.gms</a>';);
   put / '</p> <hr>'
       / '<pre>'
       / '<!--#include virtual="%gamslib%' inc.tl:0 '" -->'
       / '</pre>'
       / '<!--#include virtual="/footer.html" -->'
       / '</html>';
);

*
*  seqindx
*
seqindx.lcase = 1;
put seqindx
    '<HTML> <HEAD> <TITLE> GAMS Model Library Chronological Index</TITLE></HEAD>'
          / '<!--#include virtual="/header.html" -->'
   /'<H1>Model Library Chronological Index</H1>'
   /'This is a listing of the model library in order of'
   /'submission date. The newest ones are at the top.'
   /'<P>'
   /'There is also an <A HREF="athindx.htm">author index</A>,'
   /'a <A HREF="subindx.htm">subject index</A>,'
   /'and an <A HREF="alfindx.htm">alphabetical index</A>.'
   /'<P>'
   / '<TABLE>'
   / '<TR>'
   / '    <TH ALIGN="LEFT">No</TH>'
   / '    <TH ALIGN="LEFT">Model</TH>'
   / '    <TH ALIGN="LEFT">Description</TH>'
   / '    <TH ALIGN="LEFT">Type</TH>'
   / '</TR>';

loop((srev(ss,s),sm(s,m))$(not deprecated(s)),
   put / '<TR>'
       / '    <TD>',s.tl:0,'</TD>'
       / '    <TD><A HREF="', m.tl:0,'.htm">', m.tl:0, '</A></TD>'
       / '    <TD>',m.te(m):0,'</TD>'
       / '    <TD>';
   seqindx.lcase = 2;
   loop(tss(t,s), put t.tl:0;);
   put   '</TD>'
       / '</TR>';
   seqindx.lcase = 1;
);

put / '</TABLE>'
    / '<!--#include virtual="/footer.html" -->'
    / '</html>';

*
*  subindx
*
subindx.lcase = 1;
put subindx
    '<HTML> <HEAD><TITLE> GAMS Model Library Subject Index</TITLE></HEAD>'
          / '<!--#include virtual="/header.html" -->'
   /'<H1>Model Library Subject Index</H1>'
   /'The following subject areas are covered:'
   /'<UL>';

loop(a, put /'<LI> <A HREF="#', a.tl:0, '">', a.te(a):0, '</A>';);
put /'</UL>'
    /'</UL>'
    /'<P>'
    /'There is also an <A HREF="alfindx.htm">alphabetical index</A>'
    /'an <A HREF="athindx.htm">author index</A>,'
    /'and a <A HREF="seqindx.htm">chronological index</A>.';

loop(a,
   put /'<H2> <A NAME="', a.tl:0,'">', a.te(a):0, '</A> </H2>'
       /'<TABLE WIDTH="100%">'
       /'<TR>'
       /'    <TH ALIGN="LEFT" WIDTH="20%">Model</TD>'
       /'    <TH ALIGN="LEFT" WIDTH="60%">Description</TD>'
       /'    <TH ALIGN="LEFT" WIDTH="20%">Type</TD>'
       /'</TR>';
   loop((m,as(a,s),sm(s,m))$(not deprecated(s)),
      put / '<TR>'
       / '    <TD><A HREF="', m.tl:0, '.htm">', m.tl:0, '</A></TD>'
       / '    <TD>',m.te(m):0,'</TD>'
       / '    <TD>';
      subindx.lcase = 2;
      loop(tss(t,s), put t.tl:0;);
      put   '</TD>'
          / '</TR>';
      subindx.lcase = 1;
   );
   put / '</TABLE>';
);
put / '<!--#include virtual="/footer.html" -->'
    / '</html>';

*
*  modlist
*
modlist.lcase = 1;
put modlist
   '% Model library listed by application area' /
loop(a,
   put /
   /'\subsubsection*{' a.te(a):0 '}' /
   /'\begin{modellist}'
   /'\Mname{\normalfont\textbf{Name}}'
    '\Mdesc{\textbf{Description}}'
    '\Mtype{\textbf{Type}}'
    '\Mnumber{\textbf{No.}}'
   loop((m,as(a,s),sm(s,m))$(not deprecated(s)),
      put /  '\Mname{\textbf{' m.tl:0 '}}'
             '\Mdesc{' m.te(m):0 '}';
      modlist.lcase = 2;
      loop(tss(t,s), put '\Mtype{' t.tl:0 '}';);
      put '\Mnumber{' s.tl:0 '}' /;
      modlist.lcase = 1;
   );
   put / '\end{modellist}';
);

*
*  alfindx
*
alfindx.lcase = 1;
put alfindx
    '<HTML> <HEAD><TITLE> GAMS Model Library Alphabetical Index</TITLE></HEAD>'
   / '<!--#include virtual="/header.html" -->'
   /'<H1>Model Library Alphabetical Index</H1>'
   /'This is an alphabetical listing of the models available'
   /'in the on-line model library.'
   /'There is also an <A HREF="athindx.htm">author index</A>,'
   /'a <A HREF="subindx.htm">subject index</A>, and'
   /'a <A HREF="seqindx.htm">chronological index</A>.'
   /'<P><b>Shortcuts:</b> ';
alfindx.lcase = 2;
loop(letters, put alfindx '<A HREF="#' letters.tl:0 '"> ' letters.tl:0   '</A>' /;);
alfindx.lcase = 1;
put alfindx
   /'<P><TABLE>'
   /'<TR>'
   /'    <TD></TD>'
   /'    <TH ALIGN="LEFT">Model</TH>'
   /'    <TH ALIGN="LEFT">Description</TH>'
   /'    <TH ALIGN="LEFT">Type</TH>'
   / '</TR>';

loop(m,
   if(letters(m),
      alfindx.lcase = 2;
      put /'<TR>'
          /' <TD></TD>'
          /'<TH COLSPAN=3 ALIGN="LEFT"><A NAME="'m.tl:0'">', m.tl:0, '</TH>'
          /'</TR>';
      alfindx.lcase = 1;
   else
      if(not sum(sm(deprecated(s),m),1),
         put / '<TR>'
*                   <TD><IMG SRC="/pics/new.gif"></TD>
             / '    <TD></TD>'
             / '    <TD><A HREF="', m.tl:0,'.htm">', m.tl:0, '</A></TD>'
             / '    <TD>', m.te(m):0, '</TD>'
             / '    <TD>';
         alfindx.lcase = 2;
         loop(sm(s,m),
            loop(tss(t,s), put t.tl:0;);
            put   '</TD>'
                / '</TR>';
            alfindx.lcase = 1;
         );
      );
   );
);
put / '</TABLE>'
    / '<!--#include virtual="/footer.html" -->'
    / '</html>';

$exit