Short:        Literate programming discipline for C/C++.
Author:       levy@geom.umn.edu (Silvio Levy and Donald E. Knuth)
Uploader:     scherer genesis informatik rwth-aachen de (Andreas Scherer)
Type:         dev/c
Architecture: m68k-amigaos
Files:        cweb33p11a.lha, cweb33p11a.readme

This  is  the  portability implementation of Silvio Levy's and Donald Ervin
Knuth's CWEB system, version 3.3 of December 7, 1994, compiled and provided
with  changefiles  for  ANSI-C,  TURBO-C,  and  SAS/C 6.x and makefiles for
UNIX-make,  Borland-make  and  SAS-make by Andreas Scherer.  It is based on
the  CWEB 3.1 port by Tomas Charles Willis and the CWEB 2.8 port by Carsten
Steger  and  the  CWEB-p  3.0  distribution  by Hans-Hermann Bode and Klaus
Guntermann, including all features of the original UNIX implementation like
ANSI-C  and  C++  support,  full ASCII input capability, and more, plus all
enhancements  made  in these AMIGA, MSDOS, and UNIX ports plus some special
features like:

   - The complete source code is capable of being recompiled with SAS/C for
     AmigaOS, with Borland C/C++ 3.1 for MSDOS, and with  CC, C89, and  GCC
     for  UNIX without the need for further changes.  The Amiga versions of
     all three system programs are compiled and linked in genuine C++ mode.
     For compilation in  ANSI-C mode rename the .cc files to their .c form,
     and modify the EXTENSION field in the makefile accordingly.

   - The `+l' option with its  argument `X' causes CWEAVE to prepend `X' to
     `cwebmac.tex' in  the first line of the output file.  `X'  may  be any
     string of characters (case dependent and possibly empty), e.g., if you
     called  CWEAVE  with  the  option  `+ldansk',  the  danish  macro file
     `danskcwebmac.tex'  would  be  included instead of `cwebmac.tex'.  The
     macro  file  `Xcwebmac.tex' itself contains some  modifications to the
     original `cwebmac.tex' file as described in the documentation.   There
     are macro packages `dcwebmac.tex' by Andreas Scherer for German users,
     `icwebmac.tex'  by  Giuseppe Ghibò  for Italian users, and lately even
     `fcwebmac.tex' by  Denis B. Roegel for French CWEB programmers.  These
     macro  files  translate all captions used by the CWEAVE processor into
     the   respective  languages  and  also  include  support  for  special
     characters  like umlauts  (diacritics)  and some other frequently used
     specials according to ISO Latin-1, IBM  PC International Codepage 850,
     Macintosh 8-bit font table and HP Roman 8.  Similar packages for other
     languages  can  easily  be added to this scheme.  To date there are no
     conflicting languages, so single-character strings are used.

   - There  are  TeX macro  files `ecma94.sty', `hp8.sty', `mac8.sty',  and
     `pc850.sty' for  support  of  extended  code  tables.  These have been
     set up to work as `packages' for LaTeX2e too.  Also  included  are the
     files `ecma94.w', `hp8.w',  `mac8.w',  and  `pc850.w' with appropriate
     transliteration  tables.   The option  `+a'  of former versions of the
     AMIGA installation is now replaced by the file  `amiga_types.w', which
     can be `@i'ncluded in the source files where needed.

   - Two  AREXX  scripts for use with the CygnusEd Professional Editor were
     added to this package, one for CTANGLE and CWEAVE, localized  with the
     help of language catalogs under  AmigaOS version 2.1 or 3.0, the other
     for use with the SAS/C 6.x compiler in connection with CED V3.5.

   - Both CTANGLE and CWEAVE are fully localized with  the help of language
     catalogs and the `locale.library' of  AmigaOS 2.1/3.0.  Default is (of
     course)  English;  catalogs  for  German  and Italian are provided and
     other language catalogs  can easily be added.  #include files with the
     English,  German,  and  Italian strings are provided for non-localized
     operating systems.

   - An algorithm for recursive `@i'nclude file search was adapted from the
     TeX  and  METAFONT  implementation.  The current directory is searched
     first,  then the contents of the (possibly empty) environment variable
     CWEBINPUTS, and then the (system dependent) internal defaults given in
     the compile-time constants CWEBINPUTS in the respective makefiles.

   - The `-o' option was added in connection with `-i' by Carsten Steger.

   - Five additional CWEB example programs are included as examples for the
     portability between PASCAL-WEB and C-CWEB and for the usage of the C++
     features of version 3.1.  The  fifth  example program is a simple text
     converter  for  files  with  extended  character codes of ISO-Latin-1,
     PC-850, MAC 8-bit font, and HP 8-bit font.

   - All three system programs support the `version' information command.

   - All  three  system  programs are compiled in the NEAR data segment and
     can be made resident.

   - The `+m' option enables ARexx communication between CWEB and the SAS/C
     message browser SCMSG.  Any warnings or error messages are transferred
     to its list  window.  The behaviour of  this feature can be controlled
     via  the  external  environment variable SCMSGOPT, which may be set to
     any legal option string as described in the documentation of the SAS/C
     development system by SAS Institute.

   - The  output  files are only written when there are significant changes
     to  their  contents, i.e., when  a CWEB source creates multiple output
     files,  only  those  modules effected by changes will be recompiled in
     the  `make'  process.  This mechanism was taken from  Preston Briggs's
     NUWEB program, to whom credit is due.

Major  parts  of this Amiga port were done and completely tested with SAS/C
version  6.3  and  SAS/C++ version 6.51 on the AMIGA.  After completion the
official version [p10] of the package was re-ported to various UNIX systems
(HP  9000, HP-PA, Sun, SGI) with CC, C89, and GCC, and ported to MSDOS with
Borland  C/C++  3.1.  Provided that all these ports work successfully, I am
quite sure that all bugs have been found and fixed.

New  and  modified  features  were tested on the AMIGA with SAS/C++ 6.51 in
both  ANSI-C  and C++ mode and on a DEC station running Ultrix 4.4 with the
DEC  CC compiler.  Again the resulting system was then ported to MSDOS with
Borland  C/C++  3.1,  now  in  the form of three C++ projects (there wasn't
enough  free  memory  to  start  Borland-make  from  within the development
environment, so Makefile.pc actually wasn't tested).

As Levy and Knuth seem to have changed their update policy, this is the
second version of CWEB 3.3 in December 1994.  Right after patch level 11
was installed in the AmiNet, Stanford provided a new distribution.  To
keep you up to date, the changes are made in this updated version too.

Enjoy, Andreas.

December 13, 1994.