DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T p

⟦5a3942f6a⟧ TextFile

    Length: 63928 (0xf9b8)
    Types: TextFile
    Names: »pltotf.c«

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦af5ba6c8e⟧ »unix3.0/DVIWARE.tar.Z« 
        └─⟦ca79c7339⟧ 
            └─⟦this⟧ »DVIware/laser-setters/dvi-to-ps/TeXPS/pltotf/pltotf.c« 

TextFile

#include "web2c.h"
#define bufsize 60 
#define maxheaderbytes 100 
#define maxparamwords 30 
typedef unsigned char byte  ; 
typedef schar ASCIIcode  ; 
typedef struct {
    byte b0 ; 
  byte b1 ; 
  byte b2 ; 
  byte b3 ; 
} fourbytes  ; 
typedef integer fixword  ; 
typedef integer headerindex  ; 
typedef short pointer  ; 
text plfile  ; 
file_ptr /* of  unsigned char */ tfmfile  ; 
char tfmname[101], plname[101]  ; 
ASCIIcode xord[128]  ; 
integer line  ; 
integer goodindent  ; 
integer indent  ; 
integer level  ; 
boolean leftln, rightln  ; 
integer limit  ; 
integer loc  ; 
char buffer[bufsize + 1]  ; 
boolean inputhasended  ; 
schar charsonline  ; 
ASCIIcode curchar  ; 
short start[67]  ; 
ASCIIcode dictionary[501]  ; 
schar startptr  ; 
short dictptr  ; 
ASCIIcode curname[21]  ; 
schar namelength  ; 
schar nameptr  ; 
schar hash[101]  ; 
schar curhash  ; 
byte equiv[67]  ; 
byte curcode  ; 
fourbytes curbytes  ; 
integer fractiondigits[8]  ; 
byte headerbytes[maxheaderbytes + 1]  ; 
headerindex headerptr  ; 
fixword designsize  ; 
fixword designunits  ; 
boolean sevenbitsafeflag  ; 
fourbytes ligkern[512]  ; 
short nl  ; 
boolean unusedlabel  ; 
fixword kern[257]  ; 
short nk  ; 
fourbytes exten[256]  ; 
short ne  ; 
fixword param[maxparamwords + 1]  ; 
integer np  ; 
boolean checksumspecified  ; 
fixword memory[1033]  ; 
pointer memptr  ; 
pointer link[1033]  ; 
pointer charwd[256]  ; 
pointer charht[256]  ; 
pointer chardp[256]  ; 
pointer charic[256]  ; 
schar chartag[256]  ; 
unsigned char charremainder[256]  ; 
fixword nextd  ; 
byte index[1033]  ; 
byte c  ; 
short krnptr  ; 
boolean sevenunsafe  ; 
short ligptr  ; 
fixword delta  ; 
byte bc  ; 
byte ec  ; 
byte lh  ; 
short lf  ; 
boolean notfound  ; 
fixword tempwidth  ; 
integer j  ; 
pointer p  ; 
schar q  ; 
integer parptr  ; 

#include "pltotf.h"
initialize () {
    schar k  ; 
  schar h  ; 
  headerindex d  ; 
  byte c  ; 
  (void) fprintf(stdout, "%s\n", "This is PLtoTF, C Version 2.3" ) ; 
  if ( argc < 3 ) 
  {
    (void) fprintf(stdout, "%s\n", "Usage: pltotf <pl-file> <tfm-file>" ) ; 
    uexit ( 1 ) ; 
  } 
  argv ( 1 , plname ) ; 
  reset ( plfile , plname ) ; 
  argv ( 2 , tfmname ) ; 
  rewrite ( tfmfile , tfmname ) ; 
  {register integer for_end; k = 0 ; for_end = 127 ; if ( k <= for_end) do 
    xord [ chr ( k ) ] = 127 ; 
  while ( k++ < for_end ) ; } 
  xord [ ' ' ] = 32 ; 
  xord [ '!' ] = 33 ; 
  xord [ '"' ] = 34 ; 
  xord [ '#' ] = 35 ; 
  xord [ '$' ] = 36 ; 
  xord [ '%' ] = 37 ; 
  xord [ '&' ] = 38 ; 
  xord [ '\'' ] = 39 ; 
  xord [ '(' ] = 40 ; 
  xord [ ')' ] = 41 ; 
  xord [ '*' ] = 42 ; 
  xord [ '+' ] = 43 ; 
  xord [ ',' ] = 44 ; 
  xord [ '-' ] = 45 ; 
  xord [ '.' ] = 46 ; 
  xord [ '/' ] = 47 ; 
  xord [ '0' ] = 48 ; 
  xord [ '1' ] = 49 ; 
  xord [ '2' ] = 50 ; 
  xord [ '3' ] = 51 ; 
  xord [ '4' ] = 52 ; 
  xord [ '5' ] = 53 ; 
  xord [ '6' ] = 54 ; 
  xord [ '7' ] = 55 ; 
  xord [ '8' ] = 56 ; 
  xord [ '9' ] = 57 ; 
  xord [ ':' ] = 58 ; 
  xord [ ';' ] = 59 ; 
  xord [ '<' ] = 60 ; 
  xord [ '=' ] = 61 ; 
  xord [ '>' ] = 62 ; 
  xord [ '?' ] = 63 ; 
  xord [ '@' ] = 64 ; 
  xord [ 'A' ] = 65 ; 
  xord [ 'B' ] = 66 ; 
  xord [ 'C' ] = 67 ; 
  xord [ 'D' ] = 68 ; 
  xord [ 'E' ] = 69 ; 
  xord [ 'F' ] = 70 ; 
  xord [ 'G' ] = 71 ; 
  xord [ 'H' ] = 72 ; 
  xord [ 'I' ] = 73 ; 
  xord [ 'J' ] = 74 ; 
  xord [ 'K' ] = 75 ; 
  xord [ 'L' ] = 76 ; 
  xord [ 'M' ] = 77 ; 
  xord [ 'N' ] = 78 ; 
  xord [ 'O' ] = 79 ; 
  xord [ 'P' ] = 80 ; 
  xord [ 'Q' ] = 81 ; 
  xord [ 'R' ] = 82 ; 
  xord [ 'S' ] = 83 ; 
  xord [ 'T' ] = 84 ; 
  xord [ 'U' ] = 85 ; 
  xord [ 'V' ] = 86 ; 
  xord [ 'W' ] = 87 ; 
  xord [ 'X' ] = 88 ; 
  xord [ 'Y' ] = 89 ; 
  xord [ 'Z' ] = 90 ; 
  xord [ '[' ] = 91 ; 
  xord [ '\\' ] = 92 ; 
  xord [ ']' ] = 93 ; 
  xord [ '^' ] = 94 ; 
  xord [ '_' ] = 95 ; 
  xord [ '`' ] = 96 ; 
  xord [ 'a' ] = 97 ; 
  xord [ 'b' ] = 98 ; 
  xord [ 'c' ] = 99 ; 
  xord [ 'd' ] = 100 ; 
  xord [ 'e' ] = 101 ; 
  xord [ 'f' ] = 102 ; 
  xord [ 'g' ] = 103 ; 
  xord [ 'h' ] = 104 ; 
  xord [ 'i' ] = 105 ; 
  xord [ 'j' ] = 106 ; 
  xord [ 'k' ] = 107 ; 
  xord [ 'l' ] = 108 ; 
  xord [ 'm' ] = 109 ; 
  xord [ 'n' ] = 110 ; 
  xord [ 'o' ] = 111 ; 
  xord [ 'p' ] = 112 ; 
  xord [ 'q' ] = 113 ; 
  xord [ 'r' ] = 114 ; 
  xord [ 's' ] = 115 ; 
  xord [ 't' ] = 116 ; 
  xord [ 'u' ] = 117 ; 
  xord [ 'v' ] = 118 ; 
  xord [ 'w' ] = 119 ; 
  xord [ 'x' ] = 120 ; 
  xord [ 'y' ] = 121 ; 
  xord [ 'z' ] = 122 ; 
  xord [ '{' ] = 123 ; 
  xord [ '|' ] = 124 ; 
  xord [ '}' ] = 125 ; 
  xord [ '~' ] = 126 ; 
  line = 0 ; 
  goodindent = 0 ; 
  indent = 0 ; 
  level = 0 ; 
  limit = 0 ; 
  loc = 0 ; 
  leftln = true ; 
  rightln = true ; 
  inputhasended = false ; 
  charsonline = 0 ; 
  startptr = 1 ; 
  start [ 1 ] = 0 ; 
  dictptr = 0 ; 
  {register integer for_end; h = 0 ; for_end = 100 ; if ( h <= for_end) do 
    hash [ h ] = 0 ; 
  while ( h++ < for_end ) ; } 
  checksumspecified = false ; 
  {register integer for_end; d = 0 ; for_end = 18 * 4 - 1 ; if ( d <= 
  for_end) do 
    headerbytes [ d ] = 0 ; 
  while ( d++ < for_end ) ; } 
  headerbytes [ 8 ] = 11 ; 
  headerbytes [ 9 ] = 85 ; 
  headerbytes [ 10 ] = 78 ; 
  headerbytes [ 11 ] = 83 ; 
  headerbytes [ 12 ] = 80 ; 
  headerbytes [ 13 ] = 69 ; 
  headerbytes [ 14 ] = 67 ; 
  headerbytes [ 15 ] = 73 ; 
  headerbytes [ 16 ] = 70 ; 
  headerbytes [ 17 ] = 73 ; 
  headerbytes [ 18 ] = 69 ; 
  headerbytes [ 19 ] = 68 ; 
  {register integer for_end; d = 48 ; for_end = 59 ; if ( d <= for_end) do 
    headerbytes [ d ] = headerbytes [ d - 40 ] ; 
  while ( d++ < for_end ) ; } 
  designsize = 10 * 1048576L ; 
  designunits = 1048576L ; 
  sevenbitsafeflag = false ; 
  headerptr = 18 * 4 ; 
  nl = 0 ; 
  unusedlabel = false ; 
  nk = 0 ; 
  ne = 0 ; 
  np = 0 ; 
  {register integer for_end; c = 0 ; for_end = 255 ; if ( c <= for_end) do 
    {
      charwd [ c ] = 0 ; 
      charht [ c ] = 0 ; 
      chardp [ c ] = 0 ; 
      charic [ c ] = 0 ; 
      chartag [ c ] = 0 ; 
      charremainder [ c ] = 0 ; 
    } 
  while ( c++ < for_end ) ; } 
  memory [ 0 ] = 2147483647L ; 
  memory [ 1 ] = 0 ; 
  link [ 1 ] = 0 ; 
  memory [ 2 ] = 0 ; 
  link [ 2 ] = 0 ; 
  memory [ 3 ] = 0 ; 
  link [ 3 ] = 0 ; 
  memory [ 4 ] = 0 ; 
  link [ 4 ] = 0 ; 
  memptr = 4 ; 
} 
showerrorcontext () {
    integer k  ; 
  (void) fprintf(stdout, "%s%ld%s\n", " (line " , (long)line , ")." ) ; 
  if ( ! leftln ) 
  (void) Fputs(stdout, "..." ) ; 
  {register integer for_end; k = 1 ; for_end = loc ; if ( k <= for_end) do 
    (void) fprintf(stdout, "%ld", (long)buffer [ k ] ) ; 
  while ( k++ < for_end ) ; } 
  (void) fprintf(stdout, "%c\n", ' ' ) ; 
  if ( ! leftln ) 
  (void) Fputs(stdout, "   " ) ; 
  {register integer for_end; k = 1 ; for_end = loc ; if ( k <= for_end) do 
    (void) putc(' ' , stdout);
  while ( k++ < for_end ) ; } 
  {register integer for_end; k = loc + 1 ; for_end = limit ; if ( k <= 
  for_end) do 
    (void) fprintf(stdout, "%ld", (long)buffer [ k ] ) ; 
  while ( k++ < for_end ) ; } 
  if ( rightln ) 
  (void) fprintf(stdout, "%c\n", ' ' ) ; 
  else
  (void) fprintf(stdout, "%s\n", "..." ) ; 
  charsonline = 0 ; 
} 
fillbuffer () {
    leftln = rightln ; 
  limit = 0 ; 
  loc = 0 ; 
  if ( leftln ) 
  {
    if ( line > 0 ) 
    readln ( plfile ) ; 
    line = line + 1 ; 
  } 
  if ( eof ( plfile ) ) 
  {
    limit = 1 ; 
    buffer [ 1 ] = ')' ; 
    rightln = false ; 
    inputhasended = true ; 
  } 
  else {
      
    while ( ( limit < bufsize - 1 ) && ( ! eoln ( plfile ) ) ) {
	
      limit = limit + 1 ; 
      read ( plfile , buffer [ limit ] ) ; 
    } 
    buffer [ limit + 1 ] = ' ' ; 
    rightln = eoln ( plfile ) ; 
    if ( leftln ) 
    {
      while ( ( loc < limit ) && ( buffer [ loc + 1 ] == ' ' ) ) loc = loc + 1 
      ; 
      if ( loc < limit ) 
      {
	if ( level == 0 ) 
	if ( loc == 0 ) 
	goodindent = goodindent + 1 ; 
	else {
	    
	  if ( goodindent >= 10 ) 
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "Warning: Indented line occurred at level zero" ) ; 
	    showerrorcontext () ; 
	  } 
	  goodindent = 0 ; 
	  indent = 0 ; 
	} 
	else if ( indent == 0 ) 
	if ( ( loc / level ) * level == loc ) 
	{
	  indent = loc / level ; 
	  goodindent = 1 ; 
	} 
	else goodindent = 0 ; 
	else if ( indent * level == loc ) 
	goodindent = goodindent + 1 ; 
	else {
	    
	  if ( goodindent >= 10 ) 
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) fprintf(stdout, "%s%s%ld", "Warning: Inconsistent indentation; " ,             "you are at parenthesis level " , (long)level ) ; 
	    showerrorcontext () ; 
	  } 
	  goodindent = 0 ; 
	  indent = 0 ; 
	} 
      } 
    } 
  } 
} 
getletterordigit () {
    while ( ( loc == limit ) && ( ! rightln ) ) fillbuffer 
  () ; 
  if ( loc == limit ) 
  curchar = 32 ; 
  else {
      
    curchar = xord [ buffer [ loc + 1 ] ] ; 
    if ( curchar >= 97 ) 
    curchar = curchar - 32 ; 
    if ( ( ( curchar >= 48 ) && ( curchar <= 57 ) ) || ( ( curchar >= 65 ) && 
    ( curchar <= 90 ) ) ) 
    loc = loc + 1 ; 
    else curchar = 32 ; 
  } 
} 
getnext () {
    while ( loc == limit ) fillbuffer () ; 
  loc = loc + 1 ; 
  curchar = xord [ buffer [ loc ] ] ; 
  if ( curchar >= 97 ) 
  if ( curchar <= 122 ) 
  curchar = curchar - 32 ; 
  else {
      
    if ( curchar == 127 ) 
    {
      {
	if ( charsonline > 0 ) 
	(void) fprintf(stdout, "%c\n", ' ' ) ; 
	(void) Fputs(stdout, "Illegal character in the file" ) ; 
	showerrorcontext () ; 
      } 
      curchar = 63 ; 
    } 
  } 
  else if ( ( curchar <= 41 ) && ( curchar >= 40 ) ) 
  loc = loc - 1 ; 
} 
skiptoendofitem () {
    integer l  ; 
  l = level ; 
  while ( level >= l ) {
      
    while ( loc == limit ) fillbuffer () ; 
    loc = loc + 1 ; 
    if ( buffer [ loc ] == ')' ) 
    level = level - 1 ; 
    else if ( buffer [ loc ] == '(' ) 
    level = level + 1 ; 
  } 
  if ( inputhasended ) 
  {
    if ( charsonline > 0 ) 
    (void) fprintf(stdout, "%c\n", ' ' ) ; 
    (void) Fputs(stdout, "File ended unexpectedly: No closing \")\"" ) ; 
    showerrorcontext () ; 
  } 
  curchar = 32 ; 
} 
finishtheproperty () {
    while ( curchar == 32 ) getnext () ; 
  if ( curchar != 41 ) 
  {
    if ( charsonline > 0 ) 
    (void) fprintf(stdout, "%c\n", ' ' ) ; 
    (void) Fputs(stdout, "Junk after property value will be ignored" ) ; 
    showerrorcontext () ; 
  } 
  skiptoendofitem () ; 
} 
lookup () {
    schar k  ; 
  short j  ; 
  boolean notfound  ; 
  curhash = curname [ 1 ] ; 
  {register integer for_end; k = 2 ; for_end = namelength ; if ( k <= 
  for_end) do 
    curhash = ( curhash + curhash + curname [ k ] ) % 101 ; 
  while ( k++ < for_end ) ; } 
  notfound = true ; 
  while ( notfound ) {
      
    if ( curhash == 0 ) 
    curhash = 100 ; 
    else curhash = curhash - 1 ; 
    if ( hash [ curhash ] == 0 ) 
    notfound = false ; 
    else {
	
      j = start [ hash [ curhash ] ] ; 
      if ( start [ hash [ curhash ] + 1 ] == j + namelength ) 
      {
	notfound = false ; 
	{register integer for_end; k = 1 ; for_end = namelength ; if ( k <= 
	for_end) do 
	  if ( dictionary [ j + k - 1 ] != curname [ k ] ) 
	  notfound = true ; 
	while ( k++ < for_end ) ; } 
      } 
    } 
  } 
  nameptr = hash [ curhash ] ; 
} 
zentername ( v ) 
byte v ; 
{schar k  ; 
  {register integer for_end; k = 1 ; for_end = namelength ; if ( k <= 
  for_end) do 
    curname [ k ] = curname [ k + 20 - namelength ] ; 
  while ( k++ < for_end ) ; } 
  lookup () ; 
  hash [ curhash ] = startptr ; 
  equiv [ startptr ] = v ; 
  {register integer for_end; k = 1 ; for_end = namelength ; if ( k <= 
  for_end) do 
    {
      dictionary [ dictptr ] = curname [ k ] ; 
      dictptr = dictptr + 1 ; 
    } 
  while ( k++ < for_end ) ; } 
  startptr = startptr + 1 ; 
  start [ startptr ] = dictptr ; 
} 
getname () {
    loc = loc + 1 ; 
  level = level + 1 ; 
  curchar = 32 ; 
  while ( curchar == 32 ) getnext () ; 
  if ( ( curchar > 41 ) || ( curchar < 40 ) ) 
  loc = loc - 1 ; 
  namelength = 0 ; 
  getletterordigit () ; 
  while ( curchar != 32 ) {
      
    if ( namelength == 20 ) 
    curname [ 1 ] = 88 ; 
    else namelength = namelength + 1 ; 
    curname [ namelength ] = curchar ; 
    getletterordigit () ; 
  } 
  lookup () ; 
  if ( nameptr == 0 ) 
  {
    if ( charsonline > 0 ) 
    (void) fprintf(stdout, "%c\n", ' ' ) ; 
    (void) Fputs(stdout, "Sorry, I don't know that property name" ) ; 
    showerrorcontext () ; 
  } 
  curcode = equiv [ nameptr ] ; 
} 
byte getbyte () {
    register byte Result; integer acc  ; 
  ASCIIcode t  ; 
  do {
      getnext () ; 
  } while ( ! ( curchar != 32 ) ) ; 
  t = curchar ; 
  acc = 0 ; 
  do {
      getnext () ; 
  } while ( ! ( curchar != 32 ) ) ; 
  if ( t == 67 ) 
  if ( ( curchar >= 33 ) && ( curchar <= 126 ) && ( ( curchar < 40 ) || ( 
  curchar > 41 ) ) ) 
  acc = xord [ buffer [ loc ] ] ; 
  else {
      
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "\"C\" value must be standard ASCII and not a paren" ) ; 
      showerrorcontext () ; 
    } 
    do {
	getnext () ; 
    } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
  } 
  else if ( t == 68 ) 
  {
    while ( ( curchar >= 48 ) && ( curchar <= 57 ) ) {
	
      acc = acc * 10 + curchar - 48 ; 
      if ( acc > 255 ) 
      {
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "This value shouldn't exceed 255" ) ; 
	    showerrorcontext () ; 
	  } 
	  do {
	      getnext () ; 
	  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	} 
	acc = 0 ; 
	curchar = 32 ; 
      } 
      else getnext () ; 
    } 
    {
      if ( ( curchar > 41 ) || ( curchar < 40 ) ) 
      loc = loc - 1 ; 
    } 
  } 
  else if ( t == 79 ) 
  {
    while ( ( curchar >= 48 ) && ( curchar <= 55 ) ) {
	
      acc = acc * 8 + curchar - 48 ; 
      if ( acc > 255 ) 
      {
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "This value shouldn't exceed '377" ) ; 
	    showerrorcontext () ; 
	  } 
	  do {
	      getnext () ; 
	  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	} 
	acc = 0 ; 
	curchar = 32 ; 
      } 
      else getnext () ; 
    } 
    {
      if ( ( curchar > 41 ) || ( curchar < 40 ) ) 
      loc = loc - 1 ; 
    } 
  } 
  else if ( t == 72 ) 
  {
    while ( ( ( curchar >= 48 ) && ( curchar <= 57 ) ) || ( ( curchar >= 65 ) 
    && ( curchar <= 70 ) ) ) {
	
      if ( curchar >= 65 ) 
      curchar = curchar - 7 ; 
      acc = acc * 16 + curchar - 48 ; 
      if ( acc > 255 ) 
      {
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "This value shouldn't exceed \"FF" ) ; 
	    showerrorcontext () ; 
	  } 
	  do {
	      getnext () ; 
	  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	} 
	acc = 0 ; 
	curchar = 32 ; 
      } 
      else getnext () ; 
    } 
    {
      if ( ( curchar > 41 ) || ( curchar < 40 ) ) 
      loc = loc - 1 ; 
    } 
  } 
  else if ( t == 70 ) 
  {
    if ( curchar == 66 ) 
    acc = 2 ; 
    else if ( curchar == 76 ) 
    acc = 4 ; 
    else if ( curchar != 77 ) 
    acc = 18 ; 
    getnext () ; 
    if ( curchar == 73 ) 
    acc = acc + 1 ; 
    else if ( curchar != 82 ) 
    acc = 18 ; 
    getnext () ; 
    if ( curchar == 67 ) 
    acc = acc + 6 ; 
    else if ( curchar == 69 ) 
    acc = acc + 12 ; 
    else if ( curchar != 82 ) 
    acc = 18 ; 
    if ( acc >= 18 ) 
    {
      {
	{
	  if ( charsonline > 0 ) 
	  (void) fprintf(stdout, "%c\n", ' ' ) ; 
	  (void) Fputs(stdout, "Illegal face code, I changed it to MRR" ) ; 
	  showerrorcontext () ; 
	} 
	do {
	    getnext () ; 
	} while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
      } 
      acc = 0 ; 
    } 
  } 
  else {
      
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "You need \"C\" or \"D\" or \"O\" or \"H\" or \"F\" here" ) ; 
      showerrorcontext () ; 
    } 
    do {
	getnext () ; 
    } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
  } 
  curchar = 32 ; 
  Result = acc ; 
  return(Result) ; 
} 
getfourbytes () {
    integer c  ; 
  integer r  ; 
  integer q  ; 
  do {
      getnext () ; 
  } while ( ! ( curchar != 32 ) ) ; 
  r = 0 ; 
  curbytes .b0 = 0 ; 
  curbytes .b1 = 0 ; 
  curbytes .b2 = 0 ; 
  curbytes .b3 = 0 ; 
  if ( curchar == 72 ) 
  r = 16 ; 
  else if ( curchar == 79 ) 
  r = 8 ; 
  else {
      
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "An octal (\"O\") or hex (\"H\") value is needed here" ) ; 
      showerrorcontext () ; 
    } 
    do {
	getnext () ; 
    } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
  } 
  if ( r > 0 ) 
  {
    q = 256 / r ; 
    do {
	getnext () ; 
    } while ( ! ( curchar != 32 ) ) ; 
    while ( ( ( curchar >= 48 ) && ( curchar <= 57 ) ) || ( ( curchar >= 65 ) 
    && ( curchar <= 70 ) ) ) {
	
      if ( curchar >= 65 ) 
      curchar = curchar - 7 ; 
      c = ( r * curbytes .b0 ) + ( curbytes .b1 / q ) ; 
      if ( c > 255 ) 
      {
	curbytes .b0 = 0 ; 
	curbytes .b1 = 0 ; 
	curbytes .b2 = 0 ; 
	curbytes .b3 = 0 ; 
	if ( r == 8 ) 
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "Sorry, the maximum octal value is O 37777777777" ) ; 
	    showerrorcontext () ; 
	  } 
	  do {
	      getnext () ; 
	  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	} 
	else {
	    
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "Sorry, the maximum hex value is H FFFFFFFF" ) ; 
	    showerrorcontext () ; 
	  } 
	  do {
	      getnext () ; 
	  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	} 
      } 
      else if ( curchar >= 48 + r ) 
      {
	{
	  if ( charsonline > 0 ) 
	  (void) fprintf(stdout, "%c\n", ' ' ) ; 
	  (void) Fputs(stdout, "Illegal digit" ) ; 
	  showerrorcontext () ; 
	} 
	do {
	    getnext () ; 
	} while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
      } 
      else {
	  
	curbytes .b0 = c ; 
	curbytes .b1 = ( r * ( curbytes .b1 % q ) ) + ( curbytes .b2 / q ) ; 
	curbytes .b2 = ( r * ( curbytes .b2 % q ) ) + ( curbytes .b3 / q ) ; 
	curbytes .b3 = ( r * ( curbytes .b3 % q ) ) + curchar - 48 ; 
	getnext () ; 
      } 
    } 
  } 
} 
fixword getfix () {
    register fixword Result; boolean negative  ; 
  integer acc  ; 
  integer intpart  ; 
  schar j  ; 
  do {
      getnext () ; 
  } while ( ! ( curchar != 32 ) ) ; 
  negative = false ; 
  acc = 0 ; 
  if ( ( curchar != 82 ) && ( curchar != 68 ) ) 
  {
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "An \"R\" or \"D\" value is needed here" ) ; 
      showerrorcontext () ; 
    } 
    do {
	getnext () ; 
    } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
  } 
  else {
      
    do {
	getnext () ; 
      if ( curchar == 45 ) 
      {
	curchar = 32 ; 
	negative = true ; 
      } 
      else if ( curchar == 43 ) 
      curchar = 32 ; 
    } while ( ! ( curchar != 32 ) ) ; 
    while ( ( curchar >= 48 ) && ( curchar <= 57 ) ) {
	
      acc = acc * 10 + curchar - 48 ; 
      if ( acc >= 1024 ) 
      {
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "Real constants must be less than 1024" ) ; 
	    showerrorcontext () ; 
	  } 
	  do {
	      getnext () ; 
	  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	} 
	acc = 0 ; 
	curchar = 32 ; 
      } 
      else getnext () ; 
    } 
    intpart = acc ; 
    acc = 0 ; 
    if ( curchar == 46 ) 
    {
      j = 0 ; 
      getnext () ; 
      while ( ( curchar >= 48 ) && ( curchar <= 57 ) ) {
	  
	if ( j < 7 ) 
	{
	  j = j + 1 ; 
	  fractiondigits [ j ] = 2097152L * ( curchar - 48 ) ; 
	} 
	getnext () ; 
      } 
      acc = 0 ; 
      while ( j > 0 ) {
	  
	acc = fractiondigits [ j ] + ( acc / 10 ) ; 
	j = j - 1 ; 
      } 
      acc = ( acc + 10 ) / 20 ; 
    } 
    if ( ( acc >= 1048576L ) && ( intpart == 1023 ) ) 
    {
      {
	if ( charsonline > 0 ) 
	(void) fprintf(stdout, "%c\n", ' ' ) ; 
	(void) Fputs(stdout, "Real constants must be less than 1024" ) ; 
	showerrorcontext () ; 
      } 
      do {
	  getnext () ; 
      } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
    } 
    else acc = intpart * 1048576L + acc ; 
  } 
  if ( negative ) 
  Result = - (integer) acc ; 
  else Result = acc ; 
  return(Result) ; 
} 
pointer zsortin ( h , d ) 
pointer h ; 
fixword d ; 
{register pointer Result; pointer p  ; 
  if ( ( d == 0 ) && ( h != 1 ) ) 
  Result = 0 ; 
  else {
      
    p = h ; 
    while ( d >= memory [ link [ p ] ] ) p = link [ p ] ; 
    if ( ( d == memory [ p ] ) && ( p != h ) ) 
    Result = p ; 
    else if ( memptr == 1032 ) 
    {
      {
	if ( charsonline > 0 ) 
	(void) fprintf(stdout, "%c\n", ' ' ) ; 
	(void) Fputs(stdout, "Memory overflow: more than 1028 widths, etc" ) ; 
	showerrorcontext () ; 
      } 
      (void) fprintf(stdout, "%s\n", "Congratulations! It's hard to make this error." ) ; 
      Result = p ; 
    } 
    else {
	
      memptr = memptr + 1 ; 
      memory [ memptr ] = d ; 
      link [ memptr ] = link [ p ] ; 
      link [ p ] = memptr ; 
      memory [ h ] = memory [ h ] + 1 ; 
      Result = memptr ; 
    } 
  } 
  return(Result) ; 
} 
integer zmincover ( h , d ) 
pointer h ; 
fixword d ; 
{register integer Result; pointer p  ; 
  fixword l  ; 
  integer m  ; 
  m = 0 ; 
  p = link [ h ] ; 
  nextd = memory [ 0 ] ; 
  while ( p != 0 ) {
      
    m = m + 1 ; 
    l = memory [ p ] ; 
    while ( memory [ link [ p ] ] <= l + d ) p = link [ p ] ; 
    p = link [ p ] ; 
    if ( memory [ p ] - l < nextd ) 
    nextd = memory [ p ] - l ; 
  } 
  Result = m ; 
  return(Result) ; 
} 
fixword zshorten ( h , m ) 
pointer h ; 
integer m ; 
{register fixword Result; fixword d  ; 
  integer k  ; 
  if ( memory [ h ] > m ) 
  {
    k = mincover ( h , 0 ) ; 
    d = nextd ; 
    do {
	d = d + d ; 
      k = mincover ( h , d ) ; 
    } while ( ! ( k <= m ) ) ; 
    d = d / 2 ; 
    k = mincover ( h , d ) ; 
    while ( k > m ) {
	
      d = nextd ; 
      k = mincover ( h , d ) ; 
    } 
    Result = d ; 
  } 
  else Result = 0 ; 
  return(Result) ; 
} 
zsetindices ( h , d ) 
pointer h ; 
fixword d ; 
{pointer p  ; 
  pointer q  ; 
  byte m  ; 
  fixword l  ; 
  q = h ; 
  p = link [ q ] ; 
  m = 0 ; 
  while ( p != 0 ) {
      
    m = m + 1 ; 
    l = memory [ p ] ; 
    index [ p ] = m ; 
    while ( memory [ link [ p ] ] <= l + d ) {
	
      p = link [ p ] ; 
      index [ p ] = m ; 
    } 
    link [ q ] = p ; 
    memory [ p ] = ( l + memory [ p ] ) / 2 ; 
    q = p ; 
    p = link [ p ] ; 
  } 
  memory [ h ] = m ; 
} 
junkerror () {
    { 
    if ( charsonline > 0 ) 
    (void) fprintf(stdout, "%c\n", ' ' ) ; 
    (void) Fputs(stdout, "There's junk here that is not in parentheses" ) ; 
    showerrorcontext () ; 
  } 
  do {
      getnext () ; 
  } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
} 
zreadfourbytes ( l ) 
headerindex l ; 
{getfourbytes () ; 
  headerbytes [ l ] = curbytes .b0 ; 
  headerbytes [ l + 1 ] = curbytes .b1 ; 
  headerbytes [ l + 2 ] = curbytes .b2 ; 
  headerbytes [ l + 3 ] = curbytes .b3 ; 
} 
zreadBCPL ( l , n ) 
headerindex l ; 
byte n ; 
{headerindex k  ; 
  k = l ; 
  while ( curchar == 32 ) getnext () ; 
  while ( ( curchar != 40 ) && ( curchar != 41 ) ) {
      
    if ( k < l + n ) 
    k = k + 1 ; 
    if ( k < l + n ) 
    headerbytes [ k ] = curchar ; 
    getnext () ; 
  } 
  if ( k == l + n ) 
  {
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) fprintf(stdout, "%s%ld%s", "String is too long; its first " , (long)n - 1 ,       " characters will be kept" ) ; 
      showerrorcontext () ; 
    } 
    k = k - 1 ; 
  } 
  headerbytes [ l ] = k - l ; 
  while ( k < l + n - 1 ) {
      
    k = k + 1 ; 
    headerbytes [ k ] = 0 ; 
  } 
} 
zchecktag ( c ) 
byte c ; 
{switch ( chartag [ c ] ) 
  {case 0 : 
    ; 
    break ; 
  case 1 : 
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "This character already appeared in a LIGTABLE LABEL" ) ; 
      showerrorcontext () ; 
    } 
    break ; 
  case 2 : 
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "This character already has a NEXTLARGER spec" ) ; 
      showerrorcontext () ; 
    } 
    break ; 
  case 3 : 
    {
      if ( charsonline > 0 ) 
      (void) fprintf(stdout, "%c\n", ' ' ) ; 
      (void) Fputs(stdout, "This character already has a VARCHAR spec" ) ; 
      showerrorcontext () ; 
    } 
    break ; 
  } 
} 
zprintoctal ( c ) 
byte c ; 
{(void) fprintf(stdout, "%c%ld%ld%ld", '\'' , (long)( c / 64 ) , (long)( ( c / 8 ) % 8 ) , (long)( c % 8 ) ) ; 
} 
zoutscaled ( x ) 
fixword x ; 
{real z  ; 
  byte n  ; 
  unsigned short m  ; 
  if ( fabs ( x / ((double) designunits ) ) >= 16.0 ) 
  {
    (void) Fputs(stdout, "The relative dimension" ) ; 
    printreal ( x / ((double) 1048576L ) , 1 , 3 ) ; 
    (void) fprintf(stdout, "%s\n", " is too large." ) ; 
    (void) Fputs(stdout, "  (Must be less than 16*designsize" ) ; 
    if ( designunits != 1048576L ) 
    {
      (void) Fputs(stdout, " =" ) ; 
      printreal ( designunits / ((double) 65536L ) , 1 , 3 ) ; 
      (void) Fputs(stdout, " designunits" ) ; 
    } 
    (void) fprintf(stdout, "%c\n", ')' ) ; 
    x = 0 ; 
  } 
  if ( x < 0 ) 
  putbyte ( 255 , tfmfile ) ; 
  else putbyte ( 0 , tfmfile ) ; 
  if ( designunits == 1048576L ) 
  {
    if ( x < 0 ) 
    x = x + 16777216L ; 
    n = x / 65536L ; 
    m = x % 65536L ; 
  } 
  else {
      
    z = ( x / ((double) designunits ) ) * 16.0 ; 
    if ( z < 0 ) 
    z = z + 256.0 ; 
    n = trunc ( z ) ; 
    m = trunc ( 65536.0 * ( z - n ) ) ; 
  } 
  putbyte ( n , tfmfile ) ; 
  putbyte ( m / 256 , tfmfile ) ; 
  putbyte ( m % 256 , tfmfile ) ; 
} 
paramenter () {
    namelength = 5 ; 
  curname [ 16 ] = 83 ; 
  curname [ 17 ] = 76 ; 
  curname [ 18 ] = 65 ; 
  curname [ 19 ] = 78 ; 
  curname [ 20 ] = 84 ; 
  entername ( 21 ) ; 
  namelength = 5 ; 
  curname [ 16 ] = 83 ; 
  curname [ 17 ] = 80 ; 
  curname [ 18 ] = 65 ; 
  curname [ 19 ] = 67 ; 
  curname [ 20 ] = 69 ; 
  entername ( 22 ) ; 
  namelength = 7 ; 
  curname [ 14 ] = 83 ; 
  curname [ 15 ] = 84 ; 
  curname [ 16 ] = 82 ; 
  curname [ 17 ] = 69 ; 
  curname [ 18 ] = 84 ; 
  curname [ 19 ] = 67 ; 
  curname [ 20 ] = 72 ; 
  entername ( 23 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 83 ; 
  curname [ 16 ] = 72 ; 
  curname [ 17 ] = 82 ; 
  curname [ 18 ] = 73 ; 
  curname [ 19 ] = 78 ; 
  curname [ 20 ] = 75 ; 
  entername ( 24 ) ; 
  namelength = 7 ; 
  curname [ 14 ] = 88 ; 
  curname [ 15 ] = 72 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 71 ; 
  curname [ 19 ] = 72 ; 
  curname [ 20 ] = 84 ; 
  entername ( 25 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 81 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 65 ; 
  curname [ 20 ] = 68 ; 
  entername ( 26 ) ; 
  namelength = 10 ; 
  curname [ 11 ] = 69 ; 
  curname [ 12 ] = 88 ; 
  curname [ 13 ] = 84 ; 
  curname [ 14 ] = 82 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 83 ; 
  curname [ 17 ] = 80 ; 
  curname [ 18 ] = 65 ; 
  curname [ 19 ] = 67 ; 
  curname [ 20 ] = 69 ; 
  entername ( 27 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 49 ; 
  entername ( 28 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 50 ; 
  entername ( 29 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 51 ; 
  entername ( 30 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 68 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 79 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 49 ; 
  entername ( 31 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 68 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 79 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 50 ; 
  entername ( 32 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 80 ; 
  curname [ 20 ] = 49 ; 
  entername ( 33 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 80 ; 
  curname [ 20 ] = 50 ; 
  entername ( 34 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 80 ; 
  curname [ 20 ] = 51 ; 
  entername ( 35 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 66 ; 
  curname [ 20 ] = 49 ; 
  entername ( 36 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 85 ; 
  curname [ 19 ] = 66 ; 
  curname [ 20 ] = 50 ; 
  entername ( 37 ) ; 
  namelength = 7 ; 
  curname [ 14 ] = 83 ; 
  curname [ 15 ] = 85 ; 
  curname [ 16 ] = 80 ; 
  curname [ 17 ] = 68 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 79 ; 
  curname [ 20 ] = 80 ; 
  entername ( 38 ) ; 
  namelength = 7 ; 
  curname [ 14 ] = 83 ; 
  curname [ 15 ] = 85 ; 
  curname [ 16 ] = 66 ; 
  curname [ 17 ] = 68 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 79 ; 
  curname [ 20 ] = 80 ; 
  entername ( 39 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 68 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 76 ; 
  curname [ 18 ] = 73 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 49 ; 
  entername ( 40 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 68 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 76 ; 
  curname [ 18 ] = 73 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 50 ; 
  entername ( 41 ) ; 
  namelength = 10 ; 
  curname [ 11 ] = 65 ; 
  curname [ 12 ] = 88 ; 
  curname [ 13 ] = 73 ; 
  curname [ 14 ] = 83 ; 
  curname [ 15 ] = 72 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 71 ; 
  curname [ 19 ] = 72 ; 
  curname [ 20 ] = 84 ; 
  entername ( 42 ) ; 
  namelength = 20 ; 
  curname [ 1 ] = 68 ; 
  curname [ 2 ] = 69 ; 
  curname [ 3 ] = 70 ; 
  curname [ 4 ] = 65 ; 
  curname [ 5 ] = 85 ; 
  curname [ 6 ] = 76 ; 
  curname [ 7 ] = 84 ; 
  curname [ 8 ] = 82 ; 
  curname [ 9 ] = 85 ; 
  curname [ 10 ] = 76 ; 
  curname [ 11 ] = 69 ; 
  curname [ 12 ] = 84 ; 
  curname [ 13 ] = 72 ; 
  curname [ 14 ] = 73 ; 
  curname [ 15 ] = 67 ; 
  curname [ 16 ] = 75 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 69 ; 
  curname [ 19 ] = 83 ; 
  curname [ 20 ] = 83 ; 
  entername ( 28 ) ; 
  namelength = 13 ; 
  curname [ 8 ] = 66 ; 
  curname [ 9 ] = 73 ; 
  curname [ 10 ] = 71 ; 
  curname [ 11 ] = 79 ; 
  curname [ 12 ] = 80 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 80 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 78 ; 
  curname [ 19 ] = 71 ; 
  curname [ 20 ] = 49 ; 
  entername ( 29 ) ; 
  namelength = 13 ; 
  curname [ 8 ] = 66 ; 
  curname [ 9 ] = 73 ; 
  curname [ 10 ] = 71 ; 
  curname [ 11 ] = 79 ; 
  curname [ 12 ] = 80 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 80 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 78 ; 
  curname [ 19 ] = 71 ; 
  curname [ 20 ] = 50 ; 
  entername ( 30 ) ; 
  namelength = 13 ; 
  curname [ 8 ] = 66 ; 
  curname [ 9 ] = 73 ; 
  curname [ 10 ] = 71 ; 
  curname [ 11 ] = 79 ; 
  curname [ 12 ] = 80 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 80 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 78 ; 
  curname [ 19 ] = 71 ; 
  curname [ 20 ] = 51 ; 
  entername ( 31 ) ; 
  namelength = 13 ; 
  curname [ 8 ] = 66 ; 
  curname [ 9 ] = 73 ; 
  curname [ 10 ] = 71 ; 
  curname [ 11 ] = 79 ; 
  curname [ 12 ] = 80 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 80 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 78 ; 
  curname [ 19 ] = 71 ; 
  curname [ 20 ] = 52 ; 
  entername ( 32 ) ; 
  namelength = 13 ; 
  curname [ 8 ] = 66 ; 
  curname [ 9 ] = 73 ; 
  curname [ 10 ] = 71 ; 
  curname [ 11 ] = 79 ; 
  curname [ 12 ] = 80 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 80 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 78 ; 
  curname [ 19 ] = 71 ; 
  curname [ 20 ] = 53 ; 
  entername ( 33 ) ; 
} 
nameenter () {
    equiv [ 0 ] = 0 ; 
  namelength = 8 ; 
  curname [ 13 ] = 67 ; 
  curname [ 14 ] = 72 ; 
  curname [ 15 ] = 69 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 75 ; 
  curname [ 18 ] = 83 ; 
  curname [ 19 ] = 85 ; 
  curname [ 20 ] = 77 ; 
  entername ( 1 ) ; 
  namelength = 10 ; 
  curname [ 11 ] = 68 ; 
  curname [ 12 ] = 69 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 73 ; 
  curname [ 15 ] = 71 ; 
  curname [ 16 ] = 78 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 73 ; 
  curname [ 19 ] = 90 ; 
  curname [ 20 ] = 69 ; 
  entername ( 2 ) ; 
  namelength = 11 ; 
  curname [ 10 ] = 68 ; 
  curname [ 11 ] = 69 ; 
  curname [ 12 ] = 83 ; 
  curname [ 13 ] = 73 ; 
  curname [ 14 ] = 71 ; 
  curname [ 15 ] = 78 ; 
  curname [ 16 ] = 85 ; 
  curname [ 17 ] = 78 ; 
  curname [ 18 ] = 73 ; 
  curname [ 19 ] = 84 ; 
  curname [ 20 ] = 83 ; 
  entername ( 3 ) ; 
  namelength = 12 ; 
  curname [ 9 ] = 67 ; 
  curname [ 10 ] = 79 ; 
  curname [ 11 ] = 68 ; 
  curname [ 12 ] = 73 ; 
  curname [ 13 ] = 78 ; 
  curname [ 14 ] = 71 ; 
  curname [ 15 ] = 83 ; 
  curname [ 16 ] = 67 ; 
  curname [ 17 ] = 72 ; 
  curname [ 18 ] = 69 ; 
  curname [ 19 ] = 77 ; 
  curname [ 20 ] = 69 ; 
  entername ( 4 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 70 ; 
  curname [ 16 ] = 65 ; 
  curname [ 17 ] = 77 ; 
  curname [ 18 ] = 73 ; 
  curname [ 19 ] = 76 ; 
  curname [ 20 ] = 89 ; 
  entername ( 5 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 70 ; 
  curname [ 18 ] = 65 ; 
  curname [ 19 ] = 67 ; 
  curname [ 20 ] = 69 ; 
  entername ( 6 ) ; 
  namelength = 16 ; 
  curname [ 5 ] = 83 ; 
  curname [ 6 ] = 69 ; 
  curname [ 7 ] = 86 ; 
  curname [ 8 ] = 69 ; 
  curname [ 9 ] = 78 ; 
  curname [ 10 ] = 66 ; 
  curname [ 11 ] = 73 ; 
  curname [ 12 ] = 84 ; 
  curname [ 13 ] = 83 ; 
  curname [ 14 ] = 65 ; 
  curname [ 15 ] = 70 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 70 ; 
  curname [ 18 ] = 76 ; 
  curname [ 19 ] = 65 ; 
  curname [ 20 ] = 71 ; 
  entername ( 7 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 72 ; 
  curname [ 16 ] = 69 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 68 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 82 ; 
  entername ( 8 ) ; 
  namelength = 9 ; 
  curname [ 12 ] = 70 ; 
  curname [ 13 ] = 79 ; 
  curname [ 14 ] = 78 ; 
  curname [ 15 ] = 84 ; 
  curname [ 16 ] = 68 ; 
  curname [ 17 ] = 73 ; 
  curname [ 18 ] = 77 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 78 ; 
  entername ( 9 ) ; 
  namelength = 8 ; 
  curname [ 13 ] = 76 ; 
  curname [ 14 ] = 73 ; 
  curname [ 15 ] = 71 ; 
  curname [ 16 ] = 84 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 66 ; 
  curname [ 19 ] = 76 ; 
  curname [ 20 ] = 69 ; 
  entername ( 10 ) ; 
  namelength = 9 ; 
  curname [ 12 ] = 67 ; 
  curname [ 13 ] = 72 ; 
  curname [ 14 ] = 65 ; 
  curname [ 15 ] = 82 ; 
  curname [ 16 ] = 65 ; 
  curname [ 17 ] = 67 ; 
  curname [ 18 ] = 84 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 82 ; 
  entername ( 11 ) ; 
  namelength = 9 ; 
  curname [ 12 ] = 80 ; 
  curname [ 13 ] = 65 ; 
  curname [ 14 ] = 82 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 77 ; 
  curname [ 17 ] = 69 ; 
  curname [ 18 ] = 84 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 82 ; 
  entername ( 20 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 67 ; 
  curname [ 16 ] = 72 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 87 ; 
  curname [ 20 ] = 68 ; 
  entername ( 51 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 67 ; 
  curname [ 16 ] = 72 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 72 ; 
  curname [ 20 ] = 84 ; 
  entername ( 52 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 67 ; 
  curname [ 16 ] = 72 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 68 ; 
  curname [ 20 ] = 80 ; 
  entername ( 53 ) ; 
  namelength = 6 ; 
  curname [ 15 ] = 67 ; 
  curname [ 16 ] = 72 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 73 ; 
  curname [ 20 ] = 67 ; 
  entername ( 54 ) ; 
  namelength = 10 ; 
  curname [ 11 ] = 78 ; 
  curname [ 12 ] = 69 ; 
  curname [ 13 ] = 88 ; 
  curname [ 14 ] = 84 ; 
  curname [ 15 ] = 76 ; 
  curname [ 16 ] = 65 ; 
  curname [ 17 ] = 82 ; 
  curname [ 18 ] = 71 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 82 ; 
  entername ( 55 ) ; 
  namelength = 7 ; 
  curname [ 14 ] = 86 ; 
  curname [ 15 ] = 65 ; 
  curname [ 16 ] = 82 ; 
  curname [ 17 ] = 67 ; 
  curname [ 18 ] = 72 ; 
  curname [ 19 ] = 65 ; 
  curname [ 20 ] = 82 ; 
  entername ( 56 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 84 ; 
  curname [ 19 ] = 79 ; 
  curname [ 20 ] = 80 ; 
  entername ( 57 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 77 ; 
  curname [ 19 ] = 73 ; 
  curname [ 20 ] = 68 ; 
  entername ( 58 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 66 ; 
  curname [ 19 ] = 79 ; 
  curname [ 20 ] = 84 ; 
  entername ( 59 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 82 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 80 ; 
  entername ( 60 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 69 ; 
  curname [ 19 ] = 88 ; 
  curname [ 20 ] = 84 ; 
  entername ( 60 ) ; 
  namelength = 7 ; 
  curname [ 14 ] = 67 ; 
  curname [ 15 ] = 79 ; 
  curname [ 16 ] = 77 ; 
  curname [ 17 ] = 77 ; 
  curname [ 18 ] = 69 ; 
  curname [ 19 ] = 78 ; 
  curname [ 20 ] = 84 ; 
  entername ( 0 ) ; 
  namelength = 5 ; 
  curname [ 16 ] = 76 ; 
  curname [ 17 ] = 65 ; 
  curname [ 18 ] = 66 ; 
  curname [ 19 ] = 69 ; 
  curname [ 20 ] = 76 ; 
  entername ( 70 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 76 ; 
  curname [ 19 ] = 73 ; 
  curname [ 20 ] = 71 ; 
  entername ( 71 ) ; 
  namelength = 3 ; 
  curname [ 18 ] = 75 ; 
  curname [ 19 ] = 82 ; 
  curname [ 20 ] = 78 ; 
  entername ( 72 ) ; 
  namelength = 4 ; 
  curname [ 17 ] = 83 ; 
  curname [ 18 ] = 84 ; 
  curname [ 19 ] = 79 ; 
  curname [ 20 ] = 80 ; 
  entername ( 73 ) ; 
  paramenter () ; 
} 
readligkern () {
    short krnptr  ; 
  byte c  ; 
  {
    while ( level == 1 ) {
	
      while ( curchar == 32 ) getnext () ; 
      if ( curchar == 40 ) 
      {
	getname () ; 
	if ( curcode == 0 ) 
	skiptoendofitem () ; 
	else if ( ( curcode < 70 ) || ( curcode > 73 ) ) 
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "This property name doesn't belong in a LIGTABLE list" ) ; 
	    showerrorcontext () ; 
	  } 
	  skiptoendofitem () ; 
	} 
	else {
	    
	  switch ( curcode ) 
	  {case 70 : 
	    {
	      c = getbyte () ; 
	      checktag ( c ) ; 
	      if ( nl > 255 ) 
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "LIGTABLE with more than 255 commands cannot have further labels"                 ) ; 
		showerrorcontext () ; 
	      } 
	      else {
		  
		chartag [ c ] = 1 ; 
		charremainder [ c ] = nl ; 
		unusedlabel = true ; 
	      } 
	    } 
	    break ; 
	  case 71 : 
	    {
	      ligkern [ nl ] .b0 = 0 ; 
	      ligkern [ nl ] .b1 = getbyte () ; 
	      ligkern [ nl ] .b2 = 0 ; 
	      ligkern [ nl ] .b3 = getbyte () ; 
	      if ( nl == 511 ) 
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "LIGTABLE should never exceed 511 LIG/KRN commands" ) 
		; 
		showerrorcontext () ; 
	      } 
	      else nl = nl + 1 ; 
	      unusedlabel = false ; 
	    } 
	    break ; 
	  case 72 : 
	    {
	      ligkern [ nl ] .b0 = 0 ; 
	      ligkern [ nl ] .b1 = getbyte () ; 
	      ligkern [ nl ] .b2 = 128 ; 
	      kern [ nk ] = getfix () ; 
	      krnptr = 0 ; 
	      while ( kern [ krnptr ] != kern [ nk ] ) krnptr = krnptr + 1 ; 
	      if ( krnptr == nk ) 
	      {
		if ( nk < 256 ) 
		nk = nk + 1 ; 
		else {
		    
		  {
		    if ( charsonline > 0 ) 
		    (void) fprintf(stdout, "%c\n", ' ' ) ; 
		    (void) Fputs(stdout, "At most 256 different kerns are allowed" ) ; 
		    showerrorcontext () ; 
		  } 
		  krnptr = 255 ; 
		} 
	      } 
	      ligkern [ nl ] .b3 = krnptr ; 
	      if ( nl == 511 ) 
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "LIGTABLE should never exceed 511 LIG/KRN commands" ) 
		; 
		showerrorcontext () ; 
	      } 
	      else nl = nl + 1 ; 
	      unusedlabel = false ; 
	    } 
	    break ; 
	  case 73 : 
	    {
	      if ( nl == 0 ) 
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "Why STOP? You haven't started" ) ; 
		showerrorcontext () ; 
	      } 
	      else {
		  
		if ( unusedlabel ) 
		{
		  {
		    if ( charsonline > 0 ) 
		    (void) fprintf(stdout, "%c\n", ' ' ) ; 
		    (void) Fputs(stdout, "STOP after LABEL invalidates the label" ) ; 
		    showerrorcontext () ; 
		  } 
		  {register integer for_end; c = 0 ; for_end = 255 ; if ( c 
		  <= for_end) do 
		    if ( ( chartag [ c ] == 1 ) && ( charremainder [ c ] == nl 
		    ) ) 
		    chartag [ c ] = 0 ; 
		  while ( c++ < for_end ) ; } 
		  unusedlabel = false ; 
		} 
		ligkern [ nl - 1 ] .b0 = 128 ; 
	      } 
	    } 
	    break ; 
	  } 
	  finishtheproperty () ; 
	} 
      } 
      else if ( curchar == 41 ) 
      skiptoendofitem () ; 
      else junkerror () ; 
    } 
    {
      loc = loc - 1 ; 
      level = level + 1 ; 
      curchar = 41 ; 
    } 
  } 
} 
readcharinfo () {
    { 
    c = getbyte () ; 
    {
      if ( charsonline == 8 ) 
      {
	(void) fprintf(stdout, "%c\n", ' ' ) ; 
	charsonline = 1 ; 
      } 
      else {
	  
	if ( charsonline > 0 ) 
	(void) putc(' ' , stdout);
	charsonline = charsonline + 1 ; 
      } 
      printoctal ( c ) ; 
    } 
    while ( level == 1 ) {
	
      while ( curchar == 32 ) getnext () ; 
      if ( curchar == 40 ) 
      {
	getname () ; 
	if ( curcode == 0 ) 
	skiptoendofitem () ; 
	else if ( ( curcode < 51 ) || ( curcode > 56 ) ) 
	{
	  {
	    if ( charsonline > 0 ) 
	    (void) fprintf(stdout, "%c\n", ' ' ) ; 
	    (void) Fputs(stdout, "This property name doesn't belong in a CHARACTER list" ) 
	    ; 
	    showerrorcontext () ; 
	  } 
	  skiptoendofitem () ; 
	} 
	else {
	    
	  switch ( curcode ) 
	  {case 51 : 
	    charwd [ c ] = sortin ( 1 , getfix () ) ; 
	    break ; 
	  case 52 : 
	    charht [ c ] = sortin ( 2 , getfix () ) ; 
	    break ; 
	  case 53 : 
	    chardp [ c ] = sortin ( 3 , getfix () ) ; 
	    break ; 
	  case 54 : 
	    charic [ c ] = sortin ( 4 , getfix () ) ; 
	    break ; 
	  case 55 : 
	    {
	      checktag ( c ) ; 
	      chartag [ c ] = 2 ; 
	      charremainder [ c ] = getbyte () ; 
	    } 
	    break ; 
	  case 56 : 
	    {
	      if ( ne == 256 ) 
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "At most 256 VARCHAR specs are allowed" ) ; 
		showerrorcontext () ; 
	      } 
	      else {
		  
		checktag ( c ) ; 
		chartag [ c ] = 3 ; 
		charremainder [ c ] = ne ; 
		exten [ ne ] .b0 = 0 ; 
		exten [ ne ] .b1 = 0 ; 
		exten [ ne ] .b2 = 0 ; 
		exten [ ne ] .b3 = 0 ; 
		while ( level == 2 ) {
		    
		  while ( curchar == 32 ) getnext () ; 
		  if ( curchar == 40 ) 
		  {
		    getname () ; 
		    if ( curcode == 0 ) 
		    skiptoendofitem () ; 
		    else if ( ( curcode < 57 ) || ( curcode > 60 ) ) 
		    {
		      {
			if ( charsonline > 0 ) 
			(void) fprintf(stdout, "%c\n", ' ' ) ; 
			(void) Fputs(stdout, "This property name doesn't belong in a VARCHAR list"                         ) ; 
			showerrorcontext () ; 
		      } 
		      skiptoendofitem () ; 
		    } 
		    else {
			
		      switch ( curcode - ( 57 ) ) 
		      {case 0 : 
			exten [ ne ] .b0 = getbyte () ; 
			break ; 
		      case 1 : 
			exten [ ne ] .b1 = getbyte () ; 
			break ; 
		      case 2 : 
			exten [ ne ] .b2 = getbyte () ; 
			break ; 
		      case 3 : 
			exten [ ne ] .b3 = getbyte () ; 
			break ; 
		      } 
		      finishtheproperty () ; 
		    } 
		  } 
		  else if ( curchar == 41 ) 
		  skiptoendofitem () ; 
		  else junkerror () ; 
		} 
		ne = ne + 1 ; 
		{
		  loc = loc - 1 ; 
		  level = level + 1 ; 
		  curchar = 41 ; 
		} 
	      } 
	    } 
	    break ; 
	  } 
	  finishtheproperty () ; 
	} 
      } 
      else if ( curchar == 41 ) 
      skiptoendofitem () ; 
      else junkerror () ; 
    } 
    if ( charwd [ c ] == 0 ) 
    charwd [ c ] = sortin ( 1 , 0 ) ; 
    {
      loc = loc - 1 ; 
      level = level + 1 ; 
      curchar = 41 ; 
    } 
  } 
} 
readinput () {
    curchar = 32 ; 
  do {
      while ( curchar == 32 ) getnext () ; 
    if ( curchar == 40 ) 
    {
      getname () ; 
      if ( curcode == 0 ) 
      skiptoendofitem () ; 
      else if ( curcode > 11 ) 
      {
	{
	  if ( charsonline > 0 ) 
	  (void) fprintf(stdout, "%c\n", ' ' ) ; 
	  (void) Fputs(stdout, "This property name doesn't belong on the outer level" ) ; 
	  showerrorcontext () ; 
	} 
	skiptoendofitem () ; 
      } 
      else {
	  
	switch ( curcode ) 
	{case 1 : 
	  {
	    checksumspecified = true ; 
	    readfourbytes ( 0 ) ; 
	  } 
	  break ; 
	case 2 : 
	  {
	    nextd = getfix () ; 
	    if ( ( nextd < 1048576L ) || ( nextd >= 1073741824L ) ) 
	    {
	      if ( charsonline > 0 ) 
	      (void) fprintf(stdout, "%c\n", ' ' ) ; 
	      (void) Fputs(stdout, "The design size must be between 1 and 1024" ) ; 
	      showerrorcontext () ; 
	    } 
	    else designsize = nextd ; 
	  } 
	  break ; 
	case 3 : 
	  {
	    nextd = getfix () ; 
	    if ( nextd <= 0 ) 
	    {
	      if ( charsonline > 0 ) 
	      (void) fprintf(stdout, "%c\n", ' ' ) ; 
	      (void) Fputs(stdout, "The number of units per design size must be positive" ) 
	      ; 
	      showerrorcontext () ; 
	    } 
	    else designunits = nextd ; 
	  } 
	  break ; 
	case 4 : 
	  readBCPL ( 8 , 40 ) ; 
	  break ; 
	case 5 : 
	  readBCPL ( 48 , 20 ) ; 
	  break ; 
	case 6 : 
	  headerbytes [ 71 ] = getbyte () ; 
	  break ; 
	case 7 : 
	  {
	    while ( curchar == 32 ) getnext () ; 
	    if ( curchar == 84 ) 
	    sevenbitsafeflag = true ; 
	    else if ( curchar == 70 ) 
	    sevenbitsafeflag = false ; 
	    else {
		
	      if ( charsonline > 0 ) 
	      (void) fprintf(stdout, "%c\n", ' ' ) ; 
	      (void) Fputs(stdout, "The flag value should be \"TRUE\" or \"FALSE\"" ) ; 
	      showerrorcontext () ; 
	    } 
	    do {
		getnext () ; 
	    } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	  } 
	  break ; 
	case 8 : 
	  {
	    c = getbyte () ; 
	    if ( c < 18 ) 
	    {
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "HEADER indices should be 18 or more" ) ; 
		showerrorcontext () ; 
	      } 
	      do {
		  getnext () ; 
	      } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	    } 
	    else if ( 4 * c + 4 > maxheaderbytes ) 
	    {
	      {
		if ( charsonline > 0 ) 
		(void) fprintf(stdout, "%c\n", ' ' ) ; 
		(void) Fputs(stdout, "This HEADER index is too big for my present table size" ) ; 
		showerrorcontext () ; 
	      } 
	      do {
		  getnext () ; 
	      } while ( ! ( ( curchar == 40 ) || ( curchar == 41 ) ) ) ; 
	    } 
	    else {
		
	      while ( headerptr < 4 * c ) {
		  
		headerbytes [ headerptr ] = 0 ; 
		headerptr = headerptr + 1 ; 
	      } 
	      readfourbytes ( 4 * c ) ; 
	      headerptr = 4 * c + 4 ; 
	    } 
	  } 
	  break ; 
	case 9 : 
	  {
	    while ( level == 1 ) {
		
	      while ( curchar == 32 ) getnext () ; 
	      if ( curchar == 40 ) 
	      {
		getname () ; 
		if ( curcode == 0 ) 
		skiptoendofitem () ; 
		else if ( ( curcode < 20 ) || ( curcode >= 51 ) ) 
		{
		  {
		    if ( charsonline > 0 ) 
		    (void) fprintf(stdout, "%c\n", ' ' ) ; 
		    (void) Fputs(stdout, "This property name doesn't belong in a FONTDIMEN list" ) 
		    ; 
		    showerrorcontext () ; 
		  } 
		  skiptoendofitem () ; 
		} 
		else {
		    
		  if ( curcode == 20 ) 
		  c = getbyte () ; 
		  else c = curcode - 20 ; 
		  if ( c == 0 ) 
		  {
		    {
		      if ( charsonline > 0 ) 
		      (void) fprintf(stdout, "%c\n", ' ' ) ; 
		      (void) Fputs(stdout, "PARAMETER index must not be zero" ) ; 
		      showerrorcontext () ; 
		    } 
		    skiptoendofitem () ; 
		  } 
		  else if ( c > maxparamwords ) 
		  {
		    {
		      if ( charsonline > 0 ) 
		      (void) fprintf(stdout, "%c\n", ' ' ) ; 
		      (void) Fputs(stdout, "This PARAMETER index is too big for my present table size"                       ) ; 
		      showerrorcontext () ; 
		    } 
		    skiptoendofitem () ; 
		  } 
		  else {
		      
		    while ( np < c ) {
			
		      np = np + 1 ; 
		      param [ np ] = 0 ; 
		    } 
		    param [ c ] = getfix () ; 
		    finishtheproperty () ; 
		  } 
		} 
	      } 
	      else if ( curchar == 41 ) 
	      skiptoendofitem () ; 
	      else junkerror () ; 
	    } 
	    {
	      loc = loc - 1 ; 
	      level = level + 1 ; 
	      curchar = 41 ; 
	    } 
	  } 
	  break ; 
	case 10 : 
	  readligkern () ; 
	  break ; 
	case 11 : 
	  readcharinfo () ; 
	  break ; 
	} 
	finishtheproperty () ; 
      } 
    } 
    else if ( ( curchar == 41 ) && ! inputhasended ) 
    {
      {
	if ( charsonline > 0 ) 
	(void) fprintf(stdout, "%c\n", ' ' ) ; 
	(void) Fputs(stdout, "Extra right parenthesis" ) ; 
	showerrorcontext () ; 
      } 
      loc = loc + 1 ; 
      curchar = 32 ; 
    } 
    else if ( ! inputhasended ) 
    junkerror () ; 
  } while ( ! ( inputhasended ) ) ; 
} 
corrandcheck () {
    byte c  ; 
  short ligptr  ; 
  byte g  ; 
  if ( unusedlabel ) 
  {
    {register integer for_end; c = 0 ; for_end = 255 ; if ( c <= for_end) do 
      if ( ( chartag [ c ] == 1 ) && ( charremainder [ c ] == nl ) ) 
      chartag [ c ] = 0 ; 
    while ( c++ < for_end ) ; } 
    (void) fprintf(stdout, "%s\n", "Last LIGTABLE LABEL was not used." ) ; 
  } 
  if ( nl > 0 ) 
  ligkern [ nl - 1 ] .b0 = 128 ; 
  sevenunsafe = false ; 
  {register integer for_end; c = 0 ; for_end = 255 ; if ( c <= for_end) do 
    if ( charwd [ c ] != 0 ) 
    switch ( chartag [ c ] ) 
    {case 0 : 
      ; 
      break ; 
    case 1 : 
      {
	if ( charwd [ c ] == 0 ) 
	{
	  (void) Fputs(stdout, "There's a LABEL but no CHARACTER spec for " ) ; 
	  printoctal ( c ) ; 
	  (void) fprintf(stdout, "%c\n", '.' ) ; 
	  charwd [ c ] = sortin ( 1 , 0 ) ; 
	} 
	ligptr = charremainder [ c ] ; 
	do {
	    if ( ligkern [ ligptr ] .b2 < 128 ) 
	  {
	    {
	      g = ligkern [ ligptr ] .b1 ; 
	      if ( ( g >= 128 ) && ( c < 128 ) ) 
	      sevenunsafe = true ; 
	      if ( charwd [ g ] == 0 ) 
	      {
		charwd [ g ] = sortin ( 1 , 0 ) ; 
		(void) fprintf(stdout, "%s%c", "LIG character generated by" , ' ' ) ; 
		printoctal ( c ) ; 
		(void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	      } 
	    } 
	    {
	      g = ligkern [ ligptr ] .b3 ; 
	      if ( ( g >= 128 ) && ( c < 128 ) ) 
	      sevenunsafe = true ; 
	      if ( charwd [ g ] == 0 ) 
	      {
		charwd [ g ] = sortin ( 1 , 0 ) ; 
		(void) fprintf(stdout, "%s%c", "LIG character generated by" , ' ' ) ; 
		printoctal ( c ) ; 
		(void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	      } 
	    } 
	  } 
	  else {
	      
	    g = ligkern [ ligptr ] .b1 ; 
	    if ( ( g >= 128 ) && ( c < 128 ) ) 
	    sevenunsafe = true ; 
	    if ( charwd [ g ] == 0 ) 
	    {
	      charwd [ g ] = sortin ( 1 , 0 ) ; 
	      (void) fprintf(stdout, "%s%c", "KRN character generated by" , ' ' ) ; 
	      printoctal ( c ) ; 
	      (void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	    } 
	  } 
	  ligptr = ligptr + 1 ; 
	} while ( ! ( ligkern [ ligptr - 1 ] .b0 == 128 ) ) ; 
      } 
      break ; 
    case 2 : 
      {
	g = charremainder [ c ] ; 
	if ( ( g >= 128 ) && ( c < 128 ) ) 
	sevenunsafe = true ; 
	if ( charwd [ g ] == 0 ) 
	{
	  charwd [ g ] = sortin ( 1 , 0 ) ; 
	  (void) fprintf(stdout, "%s%c", "The character NEXTLARGER than" , ' ' ) ; 
	  printoctal ( c ) ; 
	  (void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	} 
      } 
      break ; 
    case 3 : 
      {
	if ( exten [ charremainder [ c ] ] .b0 > 0 ) 
	{
	  g = exten [ charremainder [ c ] ] .b0 ; 
	  if ( ( g >= 128 ) && ( c < 128 ) ) 
	  sevenunsafe = true ; 
	  if ( charwd [ g ] == 0 ) 
	  {
	    charwd [ g ] = sortin ( 1 , 0 ) ; 
	    (void) fprintf(stdout, "%s%c", "TOP piece of character" , ' ' ) ; 
	    printoctal ( c ) ; 
	    (void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	  } 
	} 
	if ( exten [ charremainder [ c ] ] .b1 > 0 ) 
	{
	  g = exten [ charremainder [ c ] ] .b1 ; 
	  if ( ( g >= 128 ) && ( c < 128 ) ) 
	  sevenunsafe = true ; 
	  if ( charwd [ g ] == 0 ) 
	  {
	    charwd [ g ] = sortin ( 1 , 0 ) ; 
	    (void) fprintf(stdout, "%s%c", "MID piece of character" , ' ' ) ; 
	    printoctal ( c ) ; 
	    (void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	  } 
	} 
	if ( exten [ charremainder [ c ] ] .b2 > 0 ) 
	{
	  g = exten [ charremainder [ c ] ] .b2 ; 
	  if ( ( g >= 128 ) && ( c < 128 ) ) 
	  sevenunsafe = true ; 
	  if ( charwd [ g ] == 0 ) 
	  {
	    charwd [ g ] = sortin ( 1 , 0 ) ; 
	    (void) fprintf(stdout, "%s%c", "BOT piece of character" , ' ' ) ; 
	    printoctal ( c ) ; 
	    (void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	  } 
	} 
	{
	  g = exten [ charremainder [ c ] ] .b3 ; 
	  if ( ( g >= 128 ) && ( c < 128 ) ) 
	  sevenunsafe = true ; 
	  if ( charwd [ g ] == 0 ) 
	  {
	    charwd [ g ] = sortin ( 1 , 0 ) ; 
	    (void) fprintf(stdout, "%s%c", "REP piece of character" , ' ' ) ; 
	    printoctal ( c ) ; 
	    (void) fprintf(stdout, "%s\n", " had no CHARACTER spec." ) ; 
	  } 
	} 
      } 
      break ; 
    } 
  while ( c++ < for_end ) ; } 
  if ( sevenbitsafeflag && sevenunsafe ) 
  (void) fprintf(stdout, "%s\n", "The font is not really seven-bit-safe!" ) ; 
  if ( nl > 0 ) 
  {register integer for_end; ligptr = 0 ; for_end = nl - 1 ; if ( ligptr <= 
  for_end) do 
    if ( ligkern [ ligptr ] .b2 < 128 ) 
    {
      c = ligkern [ ligptr ] .b3 ; 
      if ( charwd [ c ] == 0 ) 
      {
	ligkern [ ligptr ] .b3 = 0 ; 
	if ( charwd [ 0 ] == 0 ) 
	charwd [ 0 ] = sortin ( 1 , 0 ) ; 
	(void) fprintf(stdout, "%s%s%s", "Unused " , "LIG step" , " refers to nonexistent character " ) 
	; 
	printoctal ( c ) ; 
	(void) fprintf(stdout, "%c\n", '!' ) ; 
      } 
    } 
    else {
	
      c = ligkern [ ligptr ] .b1 ; 
      if ( charwd [ c ] == 0 ) 
      {
	ligkern [ ligptr ] .b1 = 0 ; 
	if ( charwd [ 0 ] == 0 ) 
	charwd [ 0 ] = sortin ( 1 , 0 ) ; 
	(void) fprintf(stdout, "%s%s%s", "Unused " , "KRN step" , " refers to nonexistent character " ) 
	; 
	printoctal ( c ) ; 
	(void) fprintf(stdout, "%c\n", '!' ) ; 
      } 
    } 
  while ( ligptr++ < for_end ) ; } 
  if ( ne > 0 ) 
  {register integer for_end; g = 0 ; for_end = ne - 1 ; if ( g <= for_end) do 
    {
      {
	c = exten [ g ] .b0 ; 
	if ( c > 0 ) 
	if ( charwd [ c ] == 0 ) 
	{
	  exten [ g ] .b0 = 0 ; 
	  if ( charwd [ 0 ] == 0 ) 
	  charwd [ 0 ] = sortin ( 1 , 0 ) ; 
	  (void) fprintf(stdout, "%s%s%s", "Unused " , "VARCHAR TOP" ,           " refers to nonexistent character " ) ; 
	  printoctal ( c ) ; 
	  (void) fprintf(stdout, "%c\n", '!' ) ; 
	} 
      } 
      {
	c = exten [ g ] .b1 ; 
	if ( c > 0 ) 
	if ( charwd [ c ] == 0 ) 
	{
	  exten [ g ] .b1 = 0 ; 
	  if ( charwd [ 0 ] == 0 ) 
	  charwd [ 0 ] = sortin ( 1 , 0 ) ; 
	  (void) fprintf(stdout, "%s%s%s", "Unused " , "VARCHAR MID" ,           " refers to nonexistent character " ) ; 
	  printoctal ( c ) ; 
	  (void) fprintf(stdout, "%c\n", '!' ) ; 
	} 
      } 
      {
	c = exten [ g ] .b2 ; 
	if ( c > 0 ) 
	if ( charwd [ c ] == 0 ) 
	{
	  exten [ g ] .b2 = 0 ; 
	  if ( charwd [ 0 ] == 0 ) 
	  charwd [ 0 ] = sortin ( 1 , 0 ) ; 
	  (void) fprintf(stdout, "%s%s%s", "Unused " , "VARCHAR BOT" ,           " refers to nonexistent character " ) ; 
	  printoctal ( c ) ; 
	  (void) fprintf(stdout, "%c\n", '!' ) ; 
	} 
      } 
      {
	c = exten [ g ] .b3 ; 
	if ( charwd [ c ] == 0 ) 
	{
	  exten [ g ] .b3 = 0 ; 
	  if ( charwd [ 0 ] == 0 ) 
	  charwd [ 0 ] = sortin ( 1 , 0 ) ; 
	  (void) fprintf(stdout, "%s%s%s", "Unused " , "VARCHAR REP" ,           " refers to nonexistent character " ) ; 
	  printoctal ( c ) ; 
	  (void) fprintf(stdout, "%c\n", '!' ) ; 
	} 
      } 
    } 
  while ( g++ < for_end ) ; } 
  {register integer for_end; c = 0 ; for_end = 255 ; if ( c <= for_end) do 
    if ( chartag [ c ] == 2 ) 
    {
      g = charremainder [ c ] ; 
      while ( ( g < c ) && ( chartag [ g ] == 2 ) ) g = charremainder [ g ] ; 
      if ( g == c ) 
      {
	chartag [ c ] = 0 ; 
	(void) Fputs(stdout, "A cycle of NEXTLARGER characters has been broken at " ) ; 
	printoctal ( c ) ; 
	(void) fprintf(stdout, "%c\n", '.' ) ; 
      } 
    } 
  while ( c++ < for_end ) ; } 
  delta = shorten ( 1 , 255 ) ; 
  setindices ( 1 , delta ) ; 
  if ( delta > 0 ) 
  {
    (void) fprintf(stdout, "%s%s%s", "I had to round some " , "width" , "s by" ) ; 
    printreal ( ( ( ( delta + 1 ) / 2 ) / ((double) 1048576L ) ) , 1 , 7 ) ; 
    (void) fprintf(stdout, "%s\n", " units." ) ; 
  } 
  delta = shorten ( 2 , 15 ) ; 
  setindices ( 2 , delta ) ; 
  if ( delta > 0 ) 
  {
    (void) fprintf(stdout, "%s%s%s", "I had to round some " , "height" , "s by" ) ; 
    printreal ( ( ( ( delta + 1 ) / 2 ) / ((double) 1048576L ) ) , 1 , 7 ) ; 
    (void) fprintf(stdout, "%s\n", " units." ) ; 
  } 
  delta = shorten ( 3 , 15 ) ; 
  setindices ( 3 , delta ) ; 
  if ( delta > 0 ) 
  {
    (void) fprintf(stdout, "%s%s%s", "I had to round some " , "depth" , "s by" ) ; 
    printreal ( ( ( ( delta + 1 ) / 2 ) / ((double) 1048576L ) ) , 1 , 7 ) ; 
    (void) fprintf(stdout, "%s\n", " units." ) ; 
  } 
  delta = shorten ( 4 , 63 ) ; 
  setindices ( 4 , delta ) ; 
  if ( delta > 0 ) 
  {
    (void) fprintf(stdout, "%s%s%s", "I had to round some " , "italic correction" , "s by" ) ; 
    printreal ( ( ( ( delta + 1 ) / 2 ) / ((double) 1048576L ) ) , 1 , 7 ) ; 
    (void) fprintf(stdout, "%s\n", " units." ) ; 
  } 
} 
main_body() {
    
  initialize () ; 
  nameenter () ; 
  readinput () ; 
  (void) fprintf(stdout, "%c\n", '.' ) ; 
  corrandcheck () ; 
  lh = headerptr / 4 ; 
  notfound = true ; 
  bc = 0 ; 
  while ( notfound ) if ( ( charwd [ bc ] > 0 ) || ( bc == 255 ) ) 
  notfound = false ; 
  else bc = bc + 1 ; 
  notfound = true ; 
  ec = 255 ; 
  while ( notfound ) if ( ( charwd [ ec ] > 0 ) || ( ec == 0 ) ) 
  notfound = false ; 
  else ec = ec - 1 ; 
  if ( bc > ec ) 
  bc = 1 ; 
  memory [ 1 ] = memory [ 1 ] + 1 ; 
  memory [ 2 ] = memory [ 2 ] + 1 ; 
  memory [ 3 ] = memory [ 3 ] + 1 ; 
  memory [ 4 ] = memory [ 4 ] + 1 ; 
  lf = 6 + lh + ( ec - bc + 1 ) + memory [ 1 ] + memory [ 2 ] + memory [ 3 ] + 
  memory [ 4 ] + nl + nk + ne + np ; 
  putbyte ( ( lf ) / 256 , tfmfile ) ; 
  putbyte ( ( lf ) % 256 , tfmfile ) ; 
  putbyte ( ( lh ) / 256 , tfmfile ) ; 
  putbyte ( ( lh ) % 256 , tfmfile ) ; 
  putbyte ( ( bc ) / 256 , tfmfile ) ; 
  putbyte ( ( bc ) % 256 , tfmfile ) ; 
  putbyte ( ( ec ) / 256 , tfmfile ) ; 
  putbyte ( ( ec ) % 256 , tfmfile ) ; 
  putbyte ( ( memory [ 1 ] ) / 256 , tfmfile ) ; 
  putbyte ( ( memory [ 1 ] ) % 256 , tfmfile ) ; 
  putbyte ( ( memory [ 2 ] ) / 256 , tfmfile ) ; 
  putbyte ( ( memory [ 2 ] ) % 256 , tfmfile ) ; 
  putbyte ( ( memory [ 3 ] ) / 256 , tfmfile ) ; 
  putbyte ( ( memory [ 3 ] ) % 256 , tfmfile ) ; 
  putbyte ( ( memory [ 4 ] ) / 256 , tfmfile ) ; 
  putbyte ( ( memory [ 4 ] ) % 256 , tfmfile ) ; 
  putbyte ( ( nl ) / 256 , tfmfile ) ; 
  putbyte ( ( nl ) % 256 , tfmfile ) ; 
  putbyte ( ( nk ) / 256 , tfmfile ) ; 
  putbyte ( ( nk ) % 256 , tfmfile ) ; 
  putbyte ( ( ne ) / 256 , tfmfile ) ; 
  putbyte ( ( ne ) % 256 , tfmfile ) ; 
  putbyte ( ( np ) / 256 , tfmfile ) ; 
  putbyte ( ( np ) % 256 , tfmfile ) ; 
  if ( ! checksumspecified ) 
  {
    curbytes .b0 = bc ; 
    curbytes .b1 = ec ; 
    curbytes .b2 = bc ; 
    curbytes .b3 = ec ; 
    {register integer for_end; c = bc ; for_end = ec ; if ( c <= for_end) do 
      if ( charwd [ c ] > 0 ) 
      {
	tempwidth = memory [ charwd [ c ] ] ; 
	if ( designunits != 1048576L ) 
	tempwidth = trunc ( ( tempwidth / ((double) designunits ) ) * 
	1048576.0 ) ; 
	tempwidth = tempwidth + ( c + 4 ) * 4194304L ; 
	curbytes .b0 = ( curbytes .b0 + curbytes .b0 + tempwidth ) % 255 ; 
	curbytes .b1 = ( curbytes .b1 + curbytes .b1 + tempwidth ) % 253 ; 
	curbytes .b2 = ( curbytes .b2 + curbytes .b2 + tempwidth ) % 251 ; 
	curbytes .b3 = ( curbytes .b3 + curbytes .b3 + tempwidth ) % 247 ; 
      } 
    while ( c++ < for_end ) ; } 
    headerbytes [ 0 ] = curbytes .b0 ; 
    headerbytes [ 1 ] = curbytes .b1 ; 
    headerbytes [ 2 ] = curbytes .b2 ; 
    headerbytes [ 3 ] = curbytes .b3 ; 
  } 
  headerbytes [ 4 ] = designsize / 16777216L ; 
  headerbytes [ 5 ] = ( designsize / 65536L ) % 256 ; 
  headerbytes [ 6 ] = ( designsize / 256 ) % 256 ; 
  headerbytes [ 7 ] = designsize % 256 ; 
  if ( ! sevenunsafe ) 
  headerbytes [ 68 ] = 128 ; 
  {register integer for_end; j = 0 ; for_end = headerptr - 1 ; if ( j <= 
  for_end) do 
    putbyte ( headerbytes [ j ] , tfmfile ) ; 
  while ( j++ < for_end ) ; } 
  index [ 0 ] = 0 ; 
  {register integer for_end; c = bc ; for_end = ec ; if ( c <= for_end) do 
    {
      putbyte ( index [ charwd [ c ] ] , tfmfile ) ; 
      putbyte ( index [ charht [ c ] ] * 16 + index [ chardp [ c ] ] , tfmfile 
      ) ; 
      putbyte ( index [ charic [ c ] ] * 4 + chartag [ c ] , tfmfile ) ; 
      putbyte ( charremainder [ c ] , tfmfile ) ; 
    } 
  while ( c++ < for_end ) ; } 
  {register integer for_end; q = 1 ; for_end = 4 ; if ( q <= for_end) do 
    {
      putbyte ( 0 , tfmfile ) ; 
      putbyte ( 0 , tfmfile ) ; 
      putbyte ( 0 , tfmfile ) ; 
      putbyte ( 0 , tfmfile ) ; 
      p = link [ q ] ; 
      while ( p > 0 ) {
	  
	outscaled ( memory [ p ] ) ; 
	p = link [ p ] ; 
      } 
    } 
  while ( q++ < for_end ) ; } 
  if ( nl > 0 ) 
  {register integer for_end; ligptr = 0 ; for_end = nl - 1 ; if ( ligptr <= 
  for_end) do 
    {
      putbyte ( ligkern [ ligptr ] .b0 , tfmfile ) ; 
      putbyte ( ligkern [ ligptr ] .b1 , tfmfile ) ; 
      putbyte ( ligkern [ ligptr ] .b2 , tfmfile ) ; 
      putbyte ( ligkern [ ligptr ] .b3 , tfmfile ) ; 
    } 
  while ( ligptr++ < for_end ) ; } 
  if ( nk > 0 ) 
  {register integer for_end; krnptr = 0 ; for_end = nk - 1 ; if ( krnptr <= 
  for_end) do 
    outscaled ( kern [ krnptr ] ) ; 
  while ( krnptr++ < for_end ) ; } 
  if ( ne > 0 ) 
  {register integer for_end; c = 0 ; for_end = ne - 1 ; if ( c <= for_end) do 
    {
      putbyte ( exten [ c ] .b0 , tfmfile ) ; 
      putbyte ( exten [ c ] .b1 , tfmfile ) ; 
      putbyte ( exten [ c ] .b2 , tfmfile ) ; 
      putbyte ( exten [ c ] .b3 , tfmfile ) ; 
    } 
  while ( c++ < for_end ) ; } 
  {register integer for_end; parptr = 1 ; for_end = np ; if ( parptr <= 
  for_end) do 
    {
      if ( parptr == 1 ) 
      {
	if ( param [ 1 ] < 0 ) 
	{
	  param [ 1 ] = param [ 1 ] + 1073741824L ; 
	  putbyte ( ( param [ 1 ] / 16777216L ) + 192 , tfmfile ) ; 
	} 
	else putbyte ( param [ 1 ] / 16777216L , tfmfile ) ; 
	putbyte ( ( param [ 1 ] / 65536L ) % 256 , tfmfile ) ; 
	putbyte ( ( param [ 1 ] / 256 ) % 256 , tfmfile ) ; 
	putbyte ( param [ 1 ] % 256 , tfmfile ) ; 
      } 
      else outscaled ( param [ parptr ] ) ; 
    } 
  while ( parptr++ < for_end ) ; } 
  (void) fprintf(stdout, "%c\n", ' ' ) ; 
}