/* *** data here. See below for comments. nbsp/required space/non-break space iexcl/inverted exclamation/ cent/cent sign/ pound/pound sign/Sterling curren/currency sign/ yen/yen sign/ brvbar/broken bar/*M sect/section sign/ uml/umlaut/umlaut or diaeresis copy/copyright sign/ ordf/feminine ordinal/ laquo/left angle quotes/guillemet L not/logical not sign/ shy/soft hyphen/(see intro notes) reg/registered trademark/(this is not "TM"!) macr/spacing macron/overbar deg/degree sign/ plusmn/plus-minus sign sup2/superscript 2/*M sup3/superscript 3/*M acute/spacing acute/ micro/micro sign/ para/pilcrow/paragraph sign middot/middle dot/ cedil/spacing cedilla/ sup1/superscript 1/*M ordm/masculine ordinal/ raquo/right angle quotes/guillemet R frac14/one quarter/*M frac12/one half/*M frac34/three quarters/*M iquest/inverted question mark/ Agrave/A grave/ Aacute/A acute/ Acirc/A circumflex/ Atilde/A tilde/ Auml/A diaeresis/ Aring/A ring/ AElig/AE ligature/ Ccedil/C cedilla/ Egrave/E grave/ Eacute/E acute/ Ecirc/E circumflex/ Euml/E diaeresis/ Igrave/I grave/ Iacute/I acute/ Icirc/I circumflex/ Iuml/I diaeresis/ ETH/ETH/*M Ntilde/N tilde/ Ograve/O grave/ Oacute/O acute/ Ocirc/O circumflex/ Otilde/O tilde/ Ouml/O diaeresis/ times/multiplication sign/*M Oslash/O slash/ Ugrave/U grave/ Uacute/U acute/ Ucirc/U circumflex/ Uuml/U diaeresis/ Yacute/Y acute/*M THORN/THORN/*M szlig/sharp s/ agrave/a grave/ aacute/a acute/ acirc/a circumflex/ atilde/a tilde/ auml/a diaeresis/ aring/a ring/ aelig/ae ligature/ ccedil/c cedilla/ egrave/e grave/ eacute/e acute/ ecirc/e circumflex/ euml/e diaeresis/ igrave/i grave/ iacute/i acute/ icirc/i circumflex iuml/i diaeresis/ eth/eth/*M ntilde/n tilde/ ograve/o grave/ oacute/o acute/ ocirc/o circumflex/ otilde/o tilde/ ouml/o diaeresis/ divide/division sign/ oslash/o slash/ ugrave/u grave/ uacute/u acute/ ucirc/u circumflex/ uuml/u diaeresis/ yacute/y acute/*M thorn/thorn/*M yuml/y diaeresis/ */ /* End of data. Comments follow *** This is a rexx program to write a table of ISO8859-1 characters (from 160 to 255, which is the interesting part). For convenience, the data is included within the file. Invoking this without an argument will produce an HTML3 TABLE; invoking it with any non-null argument will produce preformatted text. Results will be written to standard output (typically will be redirected to an output file). *** */ trace o Parse arg thing . /* non null argument means we want
 */

Parse source . . infile .  /* get our own file name */

say '

This table lists the iso8859-1 character code,
' say 'and illustrates how your own browser displays it.

' say '

Only the positions 160 and above are shown; below 128, the
' say 'well-known US-ASCII code applies, and 128-159 are "reserved".

' line = linein(infile) /* ignore first line */ If thing = '' then do say '' say '
1 2 3 4 5 6 '||, ' 7 8 9
' say '
hex dec oct entity '||, ' description '||, ' 8-bit char &#num; &entity; comment
' end Else do say '
' 
  say ' 1   2   3    4             5            6    7    8               9'
  say 'hex dec oct entity      description     char &#n; &entity;      comment'
  say ' '
  end

do i = 160 to 255

  line = linein(infile)
  Parse var line entity '/' descrip '/' comment

  If entity = '*' then leave   /* we have reached the end */

  ent = entity
  if ent <> '' Then ent = '&'ent';'

If thing = '' then ,
  say '
'd2x(i)' 'i' 'd2o(i)' 'entity||, ' 'descrip' 'd2c(i)' &#'i'; 'ent' 'comment'
' else , say ' 'd2x(i) i d2o(i)||center(entity,8)||center(descrip,22)||, d2c(i) ' &#'i'; 'ent' 'center(comment,19) end If thing='' then say '
' else say '
' say '


' say 'Up - to topic contents' say '


' Exit 0 d2o: procedure parse arg n . s = '' do until n=0 s = (n//8)||s n = n%8 end return s