#define EXTERN extern #include "texd.h" void zpostlinebreak ( finalwidowpenalty ) integer finalwidowpenalty ; {/* 30 31 */ postlinebreak_regmem halfword q, r, s ; boolean discbreak ; boolean postdiscbreak ; scaled curwidth ; scaled curindent ; quarterword t ; integer pen ; halfword curline ; q = mem [ bestbet + 1 ] .hh .v.RH ; curp = 0 ; do { r = q ; q = mem [ q + 1 ] .hh .v.LH ; mem [ r + 1 ] .hh .v.LH = curp ; curp = r ; } while ( ! ( q == 0 ) ) ; curline = curlist .pgfield + 1 ; do { q = mem [ curp + 1 ] .hh .v.RH ; discbreak = false ; postdiscbreak = false ; if ( q != 0 ) if ( mem [ q ] .hh.b0 == 10 ) { deleteglueref ( mem [ q + 1 ] .hh .v.LH ) ; mem [ q + 1 ] .hh .v.LH = eqtb [ 10290 ] .hh .v.RH ; mem [ q ] .hh.b1 = 9 ; incr ( mem [ eqtb [ 10290 ] .hh .v.RH ] .hh .v.RH ) ; goto lab30 ; } else { if ( mem [ q ] .hh.b0 == 7 ) { t = mem [ q ] .hh.b1 ; if ( t == 0 ) r = mem [ q ] .hh .v.RH ; else { r = q ; while ( t > 1 ) { r = mem [ r ] .hh .v.RH ; decr ( t ) ; } s = mem [ r ] .hh .v.RH ; r = mem [ s ] .hh .v.RH ; mem [ s ] .hh .v.RH = 0 ; flushnodelist ( mem [ q ] .hh .v.RH ) ; mem [ q ] .hh.b1 = 0 ; } if ( mem [ q + 1 ] .hh .v.RH != 0 ) { s = mem [ q + 1 ] .hh .v.RH ; while ( mem [ s ] .hh .v.RH != 0 ) s = mem [ s ] .hh .v.RH ; mem [ s ] .hh .v.RH = r ; r = mem [ q + 1 ] .hh .v.RH ; mem [ q + 1 ] .hh .v.RH = 0 ; postdiscbreak = true ; } if ( mem [ q + 1 ] .hh .v.LH != 0 ) { s = mem [ q + 1 ] .hh .v.LH ; if ( mem [ s ] .hh.b0 == 12 ) { s = mem [ s ] .hh .v.RH ; mem [ mem [ q + 1 ] .hh .v.LH ] .hh .v.RH = 0 ; flushnodelist ( mem [ q + 1 ] .hh .v.LH ) ; } mem [ q ] .hh .v.RH = s ; while ( mem [ s ] .hh .v.RH != 0 ) s = mem [ s ] .hh .v.RH ; mem [ q + 1 ] .hh .v.LH = 0 ; q = s ; } mem [ q ] .hh .v.RH = r ; discbreak = true ; } else if ( ( mem [ q ] .hh.b0 == 9 ) || ( mem [ q ] .hh.b0 == 11 ) ) mem [ q + 1 ] .cint = 0 ; } else { q = memtop - 3 ; while ( mem [ q ] .hh .v.RH != 0 ) q = mem [ q ] .hh .v.RH ; } r = newparamglue ( 8 ) ; mem [ r ] .hh .v.RH = mem [ q ] .hh .v.RH ; mem [ q ] .hh .v.RH = r ; q = r ; lab30: ; r = mem [ q ] .hh .v.RH ; mem [ q ] .hh .v.RH = 0 ; q = mem [ memtop - 3 ] .hh .v.RH ; mem [ memtop - 3 ] .hh .v.RH = r ; if ( eqtb [ 10289 ] .hh .v.RH != 0 ) { r = newparamglue ( 7 ) ; mem [ r ] .hh .v.RH = q ; q = r ; } if ( curline > lastspecialline ) { curwidth = secondwidth ; curindent = secondindent ; } else if ( eqtb [ 10812 ] .hh .v.RH == 0 ) { curwidth = firstwidth ; curindent = firstindent ; } else { curwidth = mem [ eqtb [ 10812 ] .hh .v.RH + 2 * curline ] .cint ; curindent = mem [ eqtb [ 10812 ] .hh .v.RH + 2 * curline - 1 ] .cint ; } adjusttail = memtop - 5 ; justbox = hpack ( q , curwidth , 0 ) ; mem [ justbox + 4 ] .cint = curindent ; appendtovlist ( justbox ) ; if ( memtop - 5 != adjusttail ) { mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 5 ] .hh .v.RH ; curlist .tailfield = adjusttail ; } adjusttail = 0 ; if ( curline + 1 != bestline ) { pen = eqtb [ 12676 ] .cint ; if ( curline == curlist .pgfield + 1 ) pen = pen + eqtb [ 12668 ] .cint ; if ( curline + 2 == bestline ) pen = pen + finalwidowpenalty ; if ( discbreak ) pen = pen + eqtb [ 12671 ] .cint ; if ( pen != 0 ) { r = newpenalty ( pen ) ; mem [ curlist .tailfield ] .hh .v.RH = r ; curlist .tailfield = r ; } } incr ( curline ) ; curp = mem [ curp + 1 ] .hh .v.LH ; if ( curp != 0 ) if ( ! postdiscbreak ) { r = memtop - 3 ; while ( true ) { q = mem [ r ] .hh .v.RH ; if ( q == mem [ curp + 1 ] .hh .v.RH ) goto lab31 ; if ( ( q >= himemmin ) ) goto lab31 ; if ( ( mem [ q ] .hh.b0 < 9 ) ) goto lab31 ; if ( mem [ q ] .hh.b1 == 2 ) if ( mem [ q ] .hh.b0 == 11 ) goto lab31 ; r = q ; } lab31: if ( r != memtop - 3 ) { mem [ r ] .hh .v.RH = 0 ; flushnodelist ( mem [ memtop - 3 ] .hh .v.RH ) ; mem [ memtop - 3 ] .hh .v.RH = q ; } } } while ( ! ( curp == 0 ) ) ; if ( ( curline != bestline ) || ( mem [ memtop - 3 ] .hh .v.RH != 0 ) ) confusion ( 935 ) ; curlist .pgfield = bestline - 1 ; } smallnumber zreconstitute ( j , n , bchar , hchar ) smallnumber j ; smallnumber n ; halfword bchar ; halfword hchar ; {/* 22 30 */ register smallnumber Result; reconstitute_regmem halfword p ; halfword t ; fourquarters q ; halfword currh ; halfword testchar ; scaled w ; fontindex k ; smallnumber ii ; hyphenpassed = 0 ; t = memtop - 4 ; w = 0 ; mem [ memtop - 4 ] .hh .v.RH = 0 ; {register integer for_end; ii = n ; for_end = j ; if ( ii >= for_end) do if ( dirtyumlaut [ ii ] != 0 ) n = ii - 1 ; while ( ii-- > for_end ) ; } curl = hu [ j ] ; curq = t ; if ( j == 0 ) { ligaturepresent = initlig ; p = initlist ; if ( ligaturepresent ) lfthit = initlft ; while ( p > 0 ) { { mem [ t ] .hh .v.RH = getavail () ; t = mem [ t ] .hh .v.RH ; mem [ t ] .hh.b0 = hf ; mem [ t ] .hh.b1 = mem [ p ] .hh.b1 ; } p = mem [ p ] .hh .v.RH ; } } else if ( curl < 256 ) { mem [ t ] .hh .v.RH = getavail () ; t = mem [ t ] .hh .v.RH ; mem [ t ] .hh.b0 = hf ; mem [ t ] .hh.b1 = curl ; } ligstack = 0 ; { if ( j < n ) curr = hu [ j + 1 ] ; else curr = bchar ; if ( hyfpen [ j ] != 10000 ) currh = hchar ; else currh = 256 ; } lab22: if ( curl == 256 ) { k = bcharlabel [ hf ] ; if ( k == fontmemsize ) goto lab30 ; else q = fontinfo [ k ] .qqqq ; } else { q = fontinfo [ charbase [ hf ] + curl ] .qqqq ; if ( ( ( q .b2 ) % 4 ) != 1 ) goto lab30 ; k = ligkernbase [ hf ] + q .b3 ; q = fontinfo [ k ] .qqqq ; if ( q .b0 > 128 ) { k = ligkernbase [ hf ] + 256 * q .b2 + q .b3 + 32768L - 256 * ( 128 ) ; q = fontinfo [ k ] .qqqq ; } } if ( currh < 256 ) testchar = currh ; else testchar = curr ; while ( true ) { if ( q .b1 == testchar ) if ( q .b0 <= 128 ) if ( currh < 256 ) { hyphenpassed = j ; hchar = 256 ; currh = 256 ; goto lab22 ; } else { if ( hchar < 256 ) if ( hyfpen [ j ] != 10000 ) { hyphenpassed = j ; hchar = 256 ; } if ( q .b2 < 128 ) { if ( curl == 256 ) lfthit = true ; if ( j == n ) if ( ligstack == 0 ) rthit = true ; { if ( interrupt != 0 ) pauseforinstructions () ; } switch ( q .b2 ) {case 1 : case 5 : { curl = q .b3 ; ligaturepresent = true ; } break ; case 2 : case 6 : { curr = q .b3 ; if ( ligstack > 0 ) mem [ ligstack ] .hh.b1 = curr ; else { ligstack = newligitem ( curr ) ; if ( j == n ) bchar = 256 ; else { p = getavail () ; mem [ ligstack + 1 ] .hh .v.RH = p ; mem [ p ] .hh.b1 = hu [ j + 1 ] ; mem [ p ] .hh.b0 = hf ; } } } break ; case 3 : { curr = q .b3 ; p = ligstack ; ligstack = newligitem ( curr ) ; mem [ ligstack ] .hh .v.RH = p ; } break ; case 7 : case 11 : { if ( ligaturepresent ) { p = newligature ( hf , curl , mem [ curq ] .hh .v.RH ) ; if ( lfthit ) { mem [ p ] .hh.b1 = 2 ; lfthit = false ; } if ( false ) if ( ligstack == 0 ) { incr ( mem [ p ] .hh.b1 ) ; rthit = false ; } mem [ curq ] .hh .v.RH = p ; t = p ; ligaturepresent = false ; } curq = t ; curl = q .b3 ; ligaturepresent = true ; } break ; default: { curl = q .b3 ; ligaturepresent = true ; if ( ligstack > 0 ) { if ( mem [ ligstack + 1 ] .hh .v.RH > 0 ) { mem [ t ] .hh .v.RH = mem [ ligstack + 1 ] .hh .v.RH ; t = mem [ t ] .hh .v.RH ; incr ( j ) ; } p = ligstack ; ligstack = mem [ p ] .hh .v.RH ; freenode ( p , 2 ) ; if ( ligstack == 0 ) { if ( j < n ) curr = hu [ j + 1 ] ; else curr = bchar ; if ( hyfpen [ j ] != 10000 ) currh = hchar ; else currh = 256 ; } else curr = mem [ ligstack ] .hh.b1 ; } else if ( j == n ) goto lab30 ; else { { mem [ t ] .hh .v.RH = getavail () ; t = mem [ t ] .hh .v.RH ; mem [ t ] .hh.b0 = hf ; mem [ t ] .hh.b1 = curr ; } incr ( j ) ; { if ( j < n ) curr = hu [ j + 1 ] ; else curr = bchar ; if ( hyfpen [ j ] != 10000 ) currh = hchar ; else currh = 256 ; } } } break ; } if ( q .b2 > 4 ) if ( q .b2 != 7 ) goto lab30 ; goto lab22 ; } w = fontinfo [ kernbase [ hf ] + 256 * q .b2 + q .b3 ] .cint ; goto lab30 ; } if ( q .b0 >= 128 ) if ( currh == 256 ) goto lab30 ; else { currh = 256 ; goto lab22 ; } k = k + q .b0 + 1 ; q = fontinfo [ k ] .qqqq ; } lab30: ; if ( ligaturepresent ) { p = newligature ( hf , curl , mem [ curq ] .hh .v.RH ) ; if ( lfthit ) { mem [ p ] .hh.b1 = 2 ; lfthit = false ; } if ( rthit ) if ( ligstack == 0 ) { incr ( mem [ p ] .hh.b1 ) ; rthit = false ; } mem [ curq ] .hh .v.RH = p ; t = p ; ligaturepresent = false ; } if ( w != 0 ) { mem [ t ] .hh .v.RH = newkern ( w ) ; t = mem [ t ] .hh .v.RH ; w = 0 ; } if ( ligstack > 0 ) { curq = t ; curl = mem [ ligstack ] .hh.b1 ; ligaturepresent = true ; { if ( mem [ ligstack + 1 ] .hh .v.RH > 0 ) { mem [ t ] .hh .v.RH = mem [ ligstack + 1 ] .hh .v.RH ; t = mem [ t ] .hh .v.RH ; incr ( j ) ; } p = ligstack ; ligstack = mem [ p ] .hh .v.RH ; freenode ( p , 2 ) ; if ( ligstack == 0 ) { if ( j < n ) curr = hu [ j + 1 ] ; else curr = bchar ; if ( hyfpen [ j ] != 10000 ) currh = hchar ; else currh = 256 ; } else curr = mem [ ligstack ] .hh.b1 ; } goto lab22 ; } Result = j ; return(Result) ; } void zhashfunk ( w , anfang , ende , v , ind , k ) wort w ; integer anfang ; integer ende ; varr v ; intarr ind ; intarr k ; {hashfunk_regmem long vacc, indacc, kacc ; integer i ; vacc = 31415L ; indacc = 152L ; kacc = 271L ; {register integer for_end; i = anfang ; for_end = ende ; if ( i <= for_end) do { ; vacc = ( vacc * 31 + w [ i ] ) % 8388648L ; v [ i ] = vacc ; indacc = ( indacc * 33 + w [ i ] ) % ( tabsize + 1 ) ; ind [ i ] = indacc ; kacc = ( kacc * 15 + w [ i ] ) % ( ( tabsize + 1 ) / 2 ) ; k [ i ] = 2 * kacc + 1 ; } while ( i++ < for_end ) ; } } void zunpackinfo ( b , iausnahme , iuntrennbar , ierste , izweite , iendung , ivorsilbe , istamm , iehervor , istammallein ) infobyte b ; boolean * iausnahme ; boolean * iuntrennbar ; integer * ierste ; integer * izweite ; boolean * iendung ; boolean * ivorsilbe ; boolean * istamm ; boolean * iehervor ; boolean * istammallein ; {unpackinfo_regmem if ( odd ( b ) ) { * iausnahme = true ; b = b / 2 ; if ( odd ( b ) ) * iuntrennbar = true ; else *iuntrennbar = false ; b = b / 2 ; * ierste = b % 8 ; * izweite = b / 8 ; } else { * iausnahme = false ; b = b / 2 ; if ( odd ( b ) ) * iendung = true ; else *iendung = false ; b = b / 2 ; if ( odd ( b ) ) * ivorsilbe = true ; else *ivorsilbe = false ; b = b / 2 ; if ( odd ( b ) ) * istamm = true ; else *istamm = false ; b = b / 2 ; if ( odd ( b ) ) * iehervor = true ; else *iehervor = false ; b = b / 2 ; if ( odd ( b ) ) * istammallein = true ; else *istammallein = false ; } } void zunpackentry ( h , etabv , etabb , efrei , ewiederfrei ) hashelement h ; verdschlue * etabv ; infobyte * etabb ; boolean * efrei ; boolean * ewiederfrei ; {unpackentry_regmem ; * etabv = h [ 0 ] + h [ 1 ] * 256 + h [ 2 ] * 256 * 256 ; if ( odd ( h [ 3 ] ) ) { ; * etabb = h [ 3 ] ; * efrei = false ; * ewiederfrei = false ; } else { ; * etabb = h [ 3 ] % 64 ; if ( odd ( h [ 3 ] / 64 ) ) * efrei = true ; else *efrei = false ; if ( odd ( h [ 3 ] / 128 ) ) * ewiederfrei = true ; else *ewiederfrei = false ; } } void zhashsuch ( v , ind , k , iausnahme , iuntrennbar , ierste , izweite , iendung , ivorsilbe , istamm , iehervor , istammallein , g ) verdschlue v ; integer ind ; integer k ; boolean * iausnahme ; boolean * iuntrennbar ; integer * ierste ; integer * izweite ; boolean * iendung ; boolean * ivorsilbe ; boolean * istamm ; boolean * iehervor ; boolean * istammallein ; boolean * g ; {hashsuch_regmem boolean gef, ngef ; integer j ; tableentry entry ; gef = false ; ngef = false ; j = ind ; do { unpackentry ( htab [ j ] , entry .tabv , entry .tabb , entry .frei , entry .wiederfrei ) ; if ( entry .frei ) ngef = true ; else if ( ( v == entry .tabv ) && ! entry .wiederfrei ) { unpackinfo ( entry .tabb , *iausnahme , *iuntrennbar , *ierste , *izweite , * iendung , *ivorsilbe , *istamm , *iehervor , *istammallein ) ; gef = true ; } else j = ( j + k ) % ( tabsize + 1 ) ; } while ( ! ( gef || ngef ) ) ; * g = gef ; } void zhashload ( status ) integer * status ; {hashload_regmem integer i ; tableentry e ; {register integer for_end; i = 1 ; for_end = FILENAMESIZE ; if ( i <= for_end) do nameoffile [ i ] = ' ' ; while ( i++ < for_end ) ; } nameoffile [ 1 ] = 'h' ; nameoffile [ 2 ] = 'f' ; nameoffile [ 3 ] = '3' ; namelength = 3 ; anzahl = 0 ; if ( aopenin ( hashfile , TEXINPUTPATH ) ) { {register integer for_end; i = 0 ; for_end = tabsize ; if ( i <= for_end) do { int help; fscanf ( hashfile, "%d", &help ); htab [i][0] = (eightbits) help; fscanf ( hashfile, "%d", &help ); htab [i][1] = (eightbits) help; fscanf ( hashfile, "%d", &help ); htab [i][2] = (eightbits) help; fscanf ( hashfile, "%d", &help ); htab [i][3] = (eightbits) help; unpackentry ( htab [ i ] , e .tabv , e .tabb , e .frei , e .wiederfrei ) ; if ( ! e .frei && ! e .wiederfrei ) anzahl = anzahl + 1 ; } while ( i++ < for_end ) ; } * status = 0 ; aclose ( hashfile ) ; } else *status = 1 ; } void zpackinfo ( i , b ) infotype i ; infobyte * b ; {packinfo_regmem * b = 0 ; if ( i .ausnahme ) { ; if ( i .untrennbar ) ; else ; * b = 1 + 2 * ord ( i .untrennbar ) + 4 * i .erste + 32 * i .zweite ; } else { ; * b = 2 * ord ( i .endung ) + 4 * ord ( i .vorsilbe ) + 8 * ord ( i .stamm ) + 16 * ord ( i .ehervor ) + 32 * ord ( i .stammallein ) ; } } void zpackentry ( e , h ) tableentry e ; hashelement h ; {packentry_regmem ; h [ 0 ] = e .tabv % 256 ; e .tabv = e .tabv / 256 ; h [ 1 ] = e .tabv % 256 ; h [ 2 ] = e .tabv / 256 ; if ( odd ( e .tabb ) ) h [ 3 ] = e .tabb ; else { ; h [ 3 ] = e .tabb + 64 * ord ( e .frei ) + 128 * ord ( e .wiederfrei ) ; } } void zhashetr ( w , laenge , i , g ) wort w ; integer laenge ; infotype i ; boolean * g ; {hashetr_regmem varr v1 ; intarr ind1, k1 ; verdschlue v ; integer ind, k, j, e ; boolean gef, ngef ; tableentry entry ; hashelement helem ; if ( anzahl >= tabsize ) { ; * g = false ; } else { ; if ( ( anzahl < 10 ) || ( anzahl % 100 == 0 ) ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s%ld%s", " -Anzahl:" , (long)anzahl , ". " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s%ld%s", " -Anzahl:" , (long)anzahl , ". " ) ; } } hashfunk ( w , 1 , laenge , v1 , ind1 , k1 ) ; v = v1 [ laenge ] ; ind = ind1 [ laenge ] ; k = k1 [ laenge ] ; gef = false ; ngef = false ; do { ; unpackentry ( htab [ ind ] , entry .tabv , entry .tabb , entry .frei , entry .wiederfrei ) ; if ( entry .frei || entry .wiederfrei ) { anzahl = anzahl + 1 ; ngef = true ; entry .tabv = v ; packinfo ( i , entry .tabb ) ; entry .frei = false ; entry .wiederfrei = false ; packentry ( entry , helem ) ; memcpy((void *)htab [ ind ] , (void *)helem , sizeof(hashelement)); } else { ; gef = v == entry .tabv ; if ( ! gef ) ind = ( ind + k ) % ( tabsize + 1 ) ; } } while ( ! ( gef || ngef ) ) ; * g = ngef ; } } void hashempty ( ) {hashempty_regmem integer i ; tableentry elem ; hashelement he ; elem .tabv = 0 ; elem .tabb = 0 ; elem .frei = true ; elem .wiederfrei = false ; packentry ( elem , he ) ; {register integer for_end; i = 0 ; for_end = tabsize ; if ( i <= for_end) do memcpy((void *)htab [ i ] , (void *)he, sizeof(hashelement)); while ( i++ < for_end ) ; } anzahl = 0 ; } void zhashsave ( status ) integer * status ; {hashsave_regmem integer i ; {register integer for_end; i = 1 ; for_end = FILENAMESIZE ; if ( i <= for_end) do nameoffile [ i ] = ' ' ; while ( i++ < for_end ) ; } nameoffile [ 1 ] = 'h' ; nameoffile [ 2 ] = 'f' ; nameoffile [ 3 ] = '3' ; namelength = 3 ; if ( aopenout ( hashfile ) ) { {register integer for_end; i = 0 ; for_end = tabsize ; if ( i <= for_end) do { (void) fprintf( hashfile , "%4ld", (long)htab [ i ] [ 0 ] ) ; (void) fprintf( hashfile , "%4ld", (long)htab [ i ] [ 1 ] ) ; (void) fprintf( hashfile , "%4ld", (long)htab [ i ] [ 2 ] ) ; (void) fprintf( hashfile , "%4ld", (long)htab [ i ] [ 3 ] ) ; (void) putc('\n', hashfile ); } while ( i++ < for_end ) ; } * status = 0 ; aclose ( hashfile ) ; } else *status = 1 ; } integer hashsize ( ) {register integer Result; hashsize_regmem Result = anzahl ; return(Result) ; } void zzahl ( line , i , ende , j ) string80 line ; integer * i ; integer ende ; integer * j ; {zahl_regmem boolean aus ; * j = 0 ; do { if ( *i <= ende ) if ( ktab [ line [ *i ] ] == 46 ) * i = *i + 1 ; else aus = true ; else aus = true ; } while ( ! ( aus ) ) ; do { if ( *i <= ende ) { switch ( line [ *i ] ) {case 48 : case 49 : case 50 : case 51 : case 52 : case 53 : case 54 : case 55 : case 56 : case 57 : { * j = 10 * *j + line [ *i ] - 48 ; * i = *i + 1 ; } break ; } if ( ( line [ *i ] != 48 ) && ( line [ *i ] != 49 ) && ( line [ *i ] != 50 ) && ( line [ *i ] != 51 ) && ( line [ *i ] != 52 ) && ( line [ *i ] != 53 ) && ( line [ *i ] != 54 ) && ( line [ *i ] != 55 ) && ( line [ *i ] != 56 ) && ( line [ *i ] != 57 ) ) aus = true ; } else aus = true ; } while ( ! ( aus ) ) ; } void zinfobau ( line , anfang , ende , informausnahme , informuntrennbar , informerste , informzweite , informendung , informvorsilbe , informstamm , informehervor , informstammallein , g ) string80 line ; integer anfang ; integer ende ; boolean * informausnahme ; boolean * informuntrennbar ; integer * informerste ; integer * informzweite ; boolean * informendung ; boolean * informvorsilbe ; boolean * informstamm ; boolean * informehervor ; boolean * informstammallein ; boolean * g ; {infobau_regmem integer i, j ; boolean ok, fehler ; buchstabe b ; * g = false ; * informausnahme = false ; * informendung = false ; * informvorsilbe = false ; * informehervor = false ; * informstamm = false ; * informstammallein = false ; i = anfang ; ok = false ; fehler = false ; do { if ( i <= ende ) if ( line [ i ] == 46 ) i = i + 1 ; else ok = true ; else fehler = true ; } while ( ! ( ok || fehler ) ) ; if ( ! fehler ) { b = ktab [ line [ i ] ] ; if ( b == bsta ) { * informausnahme = true ; i = i + 1 ; if ( ktab [ line [ i ] ] == bstu ) { i = i + 1 ; * informuntrennbar = true ; } else *informuntrennbar = false ; zahl ( line , i , ende , j ) ; if ( j == 0 ) { * informerste = 7 ; * informzweite = 7 ; } else { j = j - 2 ; if ( ( j >= 0 ) && ( j <= 6 ) ) * informerste = j ; else fehler = true ; zahl ( line , i , ende , j ) ; if ( j == 0 ) * informzweite = 7 ; else { j = j - *informerste - 4 ; if ( ( j >= 0 ) && ( j <= 6 ) ) * informzweite = j ; else fehler = true ; } } if ( ! fehler ) * g = true ; } else { ok = false ; do { switch ( b ) {case 22 : * informvorsilbe = true ; break ; case 5 : * informendung = true ; break ; case 19 : * informstamm = true ; break ; case 2 : * informehervor = true ; break ; case 20 : * informstammallein = true ; break ; case 31 : ; break ; default: fehler = true ; break ; } if ( i == ende ) ok = true ; else { i = i + 1 ; b = ktab [ line [ i ] ] ; } } while ( ! ( ok || fehler ) ) ; if ( ! fehler ) * g = ( *informvorsilbe || *informendung || *informstamm ) && ( ! * informehervor || *informvorsilbe && *informendung ) && ( ! * informstammallein || *informstamm ) ; } } } void zeintragen ( line , l ) string80 line ; integer l ; {eintragen_regmem integer i, laenge ; infotype inform ; wort w ; boolean g ; laenge = 1 ; while ( line [ laenge ] != 46 ) laenge = laenge + 1 ; laenge = laenge - 1 ; if ( laenge >= 1 ) { if ( laenge <= maxwl ) { infobau ( line , laenge + 1 , l , inform .ausnahme , inform .untrennbar , inform .erste , inform .zweite , inform .endung , inform .vorsilbe , inform .stamm , inform .ehervor , inform .stammallein , g ) ; if ( ! g ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " Info falsch: " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " Info falsch: " ) ; } } else { {register integer for_end; i = 1 ; for_end = laenge ; if ( i <= for_end) do w [ i ] = ktab [ line [ i ] ] ; while ( i++ < for_end ) ; } hashetr ( w , laenge , inform , g ) ; if ( ! g ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " Tabellenfehler: " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " Tabellenfehler: " ) ; } } } if ( ! g ) { {register integer for_end; i = 1 ; for_end = l ; if ( i <= for_end) do { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( line [ i ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( line [ i ] ) , logfile ); } while ( i++ < for_end ) ; } println () ; } } else { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", " zu langes Wort: " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", " zu langes Wort: " ) ; } {register integer for_end; i = 1 ; for_end = l ; if ( i <= for_end) do { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( line [ i ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( line [ i ] ) , logfile ); } while ( i++ < for_end ) ; } println () ; } } else { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", " Falsche Zeile: " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", " Falsche Zeile: " ) ; } {register integer for_end; i = 1 ; for_end = l ; if ( i <= for_end) do { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( line [ i ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( line [ i ] ) , logfile ); } while ( i++ < for_end ) ; } println () ; } } void znaechsterbst ( i , tr , dudstop , b , w ) integer * i ; trennvektor tr ; sperrvektor dudstop ; buchstabe * b ; wort w ; {naechsterbst_regmem if ( ( *i > 0 ) && ( tr [ *i ] == keine ) && ! dudstop [ *i ] ) { * b = w [ *i ] ; * i = *i - 1 ; } else *b = trennzeichen ; } void zduden ( tr , w , tr1 , dudtr , dud , dudstop , laenge , ok , zerlegungen ) trennvektor tr ; wort w ; trennvektor tr1 ; trennvektor dudtr ; dudt dud ; sperrvektor dudstop ; integer laenge ; boolean * ok ; integer * zerlegungen ; {duden_regmem integer i ; integer j ; integer zust ; boolean aus ; integer tre ; integer letzte ; integer l, lalt ; buchstabe b ; i = laenge ; {register integer for_end; j = 0 ; for_end = laenge ; if ( j <= for_end) do dudtr [ j ] = tr [ j ] ; while ( j++ < for_end ) ; } while ( ( i > 0 ) && ! dud [ i ] ) i = i - 1 ; while ( i > 0 ) { zust = 1 ; aus = false ; letzte = 0 ; l = kons ; b = w [ i ] ; i = i - 1 ; do { { tre = i + 1 ; lalt = l ; switch ( b ) {case 1 : { l = voka ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 15 : { l = voko ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 29 : { l = vokue ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 28 : { l = vokoe ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 27 : { l = vokae ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 5 : { l = voke ; naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bsti ) { l = vokie ; naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bste ) { i = i + 1 ; l = voke ; b = bsti ; } } } break ; case 9 : { l = voki ; naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bste ) { l = vokei ; naechsterbst ( i , tr , dudstop , b , w ) ; } else if ( b == bsta ) { l = vokai ; naechsterbst ( i , tr , dudstop , b , w ) ; } } break ; case 21 : { l = voku ; naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bste ) { l = vokeu ; naechsterbst ( i , tr , dudstop , b , w ) ; } else if ( b == bsta ) { l = vokau ; naechsterbst ( i , tr , dudstop , b , w ) ; } else if ( b == bstae ) { l = vokaeu ; naechsterbst ( i , tr , dudstop , b , w ) ; } else if ( b == bstq ) { l = kons ; naechsterbst ( i , tr , dudstop , b , w ) ; } } break ; case 20 : { l = kons ; naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bsts ) naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 8 : { l = kons ; naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bstc ) { naechsterbst ( i , tr , dudstop , b , w ) ; if ( b == bsts ) naechsterbst ( i , tr , dudstop , b , w ) ; } else if ( b == bstp ) naechsterbst ( i , tr , dudstop , b , w ) ; else if ( b == bstt ) naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 2 : case 3 : case 4 : case 6 : case 7 : case 10 : case 11 : case 12 : case 13 : case 14 : case 16 : case 17 : case 18 : case 19 : case 22 : case 23 : case 24 : case 26 : case 30 : { l = kons ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 25 : { l = voky ; naechsterbst ( i , tr , dudstop , b , w ) ; } break ; case 31 : case 0 : aus = true ; break ; } } if ( ! aus ) switch ( zust ) {case 1 : if ( l == kons ) zust = 2 ; else zust = 4 ; break ; case 2 : if ( l != kons ) zust = 3 ; break ; case 3 : if ( l == kons ) zust = 6 ; else if ( l != lalt ) { zust = 4 ; letzte = tre ; dudtr [ letzte ] = neben ; } break ; case 4 : if ( l == kons ) zust = 6 ; else zust = 3 ; break ; case 6 : if ( l == kons ) { zust = 2 ; letzte = tre ; if ( ( w [ tre ] == bstc ) && ( w [ tre + 1 ] == bstk ) ) dudtr [ letzte ] = nebenck ; else dudtr [ letzte ] = neben ; } else { zust = 4 ; letzte = tre ; dudtr [ letzte ] = neben ; } break ; } } while ( ! ( aus ) ) ; if ( zust == 2 ) dudtr [ letzte ] = keine ; else if ( zust == 4 ) if ( ( lalt < vokie ) || ( lalt > vokeu ) ) dudtr [ letzte ] = keine ; while ( ( i > 0 ) && ! dud [ i ] ) i = i - 1 ; } } void ztrennen ( zustand , anfang , spv , ok1 , tr , dudtr , zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) integer zustand ; integer anfang ; sperrvektor spv ; boolean * ok1 ; trennvektor tr ; trennvektor dudtr ; integer * zerlegungen ; dudt dud ; varr v ; intarr ind ; intarr k ; sperrvektor dudstop ; wort w ; trennvektor tr1 ; integer laenge ; {trennen_regmem boolean gef, nichtok ; integer schnitt ; infotype inform ; integer i ; boolean okstamm, okvor, okend, okhelp ; integer tri ; integer i1, tre ; boolean ok ; integer stopptr ; sperrvektor spvtmp ; memcpy((void *)spvtmp, (void *)spv, sizeof(sperrvektor)) ; * ok1 = false ; if ( anfang == laenge + 1 ) if ( ( zustand == 2 ) || ( zustand == 4 ) ) { dud [ anfang - 1 ] = true ; duden ( tr , w , tr1 , dudtr , dud , dudstop , laenge , ok , *zerlegungen ) ; {register integer for_end; i = laenge ; for_end = 1 ; if ( i >= for_end) do { if ( dudtr [ i - 1 ] == haupt3 ) { dudtr [ i - 1 ] = keine ; tri = haupt3 ; } else tri = dudtr [ i ] ; if ( *zerlegungen == 0 ) tr1 [ i ] = tri ; else tr1 [ i ] = kombtab [ tr1 [ i ] ][ tri ] ; } while ( i-- > for_end ) ; } * zerlegungen = *zerlegungen + 1 ; * ok1 = true ; } else ; else { hashfunk ( w , anfang , laenge , v , ind , k ) ; schnitt = laenge ; nichtok = false ; do { do { if ( spv [ schnitt ] ) gef = false ; else { hashsuch ( v [ schnitt ] , ind [ schnitt ] , k [ schnitt ] , inform .ausnahme , inform .untrennbar , inform .erste , inform .zweite , inform .endung , inform .vorsilbe , inform .stamm , inform .ehervor , inform .stammallein , gef ) ; } if ( gef ) spv [ schnitt ] = true ; else schnitt = schnitt - 1 ; } while ( ! ( gef || ( schnitt == anfang - 1 ) ) ) ; if ( gef ) { if ( ! inform .ausnahme ) { if ( inform .endung && ( zustand == 2 ) ) { okend = false ; if ( ( w [ anfang ] == bstc ) || ( w [ anfang ] == bsth ) ) { dud [ anfang - 1 ] = true ; tr [ anfang - 1 ] = neben ; } if ( schnitt < laenge ) if ( ( w [ schnitt + 1 ] == bsts ) && ! spv [ schnitt + 1 ] ) { spv [ schnitt + 1 ] = true ; trennen ( 2 , schnitt + 2 , spv , okhelp , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okend = okhelp ; } trennen ( 2 , schnitt + 1 , spv , okhelp , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okend = okend || okhelp ; tr [ anfang - 1 ] = keine ; dud [ anfang - 1 ] = false ; * ok1 = *ok1 || okend ; } else okend = false ; if ( inform .vorsilbe ) { if ( zustand == 1 ) tr [ anfang - 1 ] = neben ; else { dud [ anfang - 1 ] = true ; if ( zustand == 5 ) tr [ anfang - 1 ] = haupt3 ; else tr [ anfang - 1 ] = haupt ; } dud [ schnitt ] = true ; trennen ( 1 , schnitt + 1 , spv , okvor , tr , dudtr , *zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; tr [ anfang - 1 ] = keine ; dud [ anfang - 1 ] = false ; dud [ schnitt ] = false ; * ok1 = *ok1 || okvor ; } else okvor = false ; if ( inform .stamm && ! okvor ) { if ( ! inform .stammallein ) { okstamm = false ; stopptr = 0 ; if ( zustand == 1 ) tr [ anfang - 1 ] = neben ; else { dud [ anfang - 1 ] = true ; if ( zustand == 5 ) tr [ anfang - 1 ] = haupt3 ; else tr [ anfang - 1 ] = haupt ; } if ( inform .ausnahme ) { if ( inform .erste != 7 ) { tre = anfang + inform .erste + 1 ; tr [ tre ] = neben ; if ( inform .zweite != 7 ) { tre = tre + inform .zweite + 2 ; if ( inform .untrennbar ) { stopptr = tre ; dudstop [ stopptr ] = true ; } else tr [ tre ] = neben ; } else { if ( inform .untrennbar ) { tr [ tre ] = keine ; stopptr = tre ; dudstop [ tre ] = true ; } } } else { stopptr = schnitt - 1 ; dudstop [ stopptr ] = true ; } } if ( schnitt < laenge ) if ( ( w [ schnitt + 1 ] == bsts ) && ! spv [ schnitt + 1 ] ) { spv [ schnitt + 1 ] = true ; trennen ( 2 , schnitt + 2 , spv , okhelp , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okstamm = okhelp ; } if ( ( schnitt >= 2 ) && ( schnitt < laenge ) ) if ( konsonant [ w [ schnitt ] ] && ! konsonant [ w [ schnitt + 1 ] ] && ( w [ schnitt ] == w [ schnitt - 1 ] ) ) { trennen ( 5 , schnitt , spv , okhelp , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okstamm = okstamm || okhelp ; } trennen ( 2 , schnitt + 1 , spv , okhelp , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okstamm = okstamm || okhelp ; if ( inform .ausnahme ) {register integer for_end; i1 = anfang - 1 ; for_end = schnitt ; if ( i1 <= for_end) do { tr [ i1 ] = keine ; dud [ i1 ] = false ; dudstop [ stopptr ] = false ; } while ( i1++ < for_end ) ; } else { tr [ anfang - 1 ] = keine ; dud [ anfang - 1 ] = false ; } * ok1 = *ok1 || okstamm ; } else if ( ( anfang == 1 ) && ( schnitt == laenge ) ) { dud [ anfang - 1 ] = true ; tr [ anfang - 1 ] = haupt ; trennen ( 4 , schnitt + 1 , spv , okstamm , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; tr [ anfang - 1 ] = keine ; dud [ anfang - 1 ] = false ; * ok1 = *ok1 || okstamm ; } } } else { okstamm = false ; stopptr = 0 ; if ( zustand == 1 ) tr [ anfang - 1 ] = neben ; else { dud [ anfang - 1 ] = true ; if ( zustand == 5 ) tr [ anfang - 1 ] = haupt3 ; else tr [ anfang - 1 ] = haupt ; } if ( inform .ausnahme ) { if ( inform .erste != 7 ) { tre = anfang + inform .erste + 1 ; tr [ tre ] = neben ; if ( inform .zweite != 7 ) { tre = tre + inform .zweite + 2 ; if ( inform .untrennbar ) { stopptr = tre ; dudstop [ stopptr ] = true ; } else tr [ tre ] = neben ; } else { if ( inform .untrennbar ) { tr [ tre ] = keine ; stopptr = tre ; dudstop [ tre ] = true ; } } } else { stopptr = schnitt - 1 ; dudstop [ stopptr ] = true ; } } if ( schnitt < laenge ) if ( ( w [ schnitt + 1 ] == bsts ) && ! spv [ schnitt + 1 ] ) { spv [ schnitt + 1 ] = true ; trennen ( 2 , schnitt + 2 , spv , okhelp , tr , dudtr , * zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okstamm = okhelp ; } if ( ( schnitt >= 2 ) && ( schnitt < laenge ) ) if ( konsonant [ w [ schnitt ] ] && ! konsonant [ w [ schnitt + 1 ] ] && ( w [ schnitt ] == w [ schnitt - 1 ] ) ) { trennen ( 5 , schnitt , spv , okhelp , tr , dudtr , *zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okstamm = okstamm || okhelp ; } trennen ( 2 , schnitt + 1 , spv , okhelp , tr , dudtr , *zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; okstamm = okstamm || okhelp ; if ( inform .ausnahme ) {register integer for_end; i1 = anfang - 1 ; for_end = schnitt ; if ( i1 <= for_end) do { tr [ i1 ] = keine ; dud [ i1 ] = false ; dudstop [ stopptr ] = false ; } while ( i1++ < for_end ) ; } else { tr [ anfang - 1 ] = keine ; dud [ anfang - 1 ] = false ; } * ok1 = *ok1 || okstamm ; } schnitt = schnitt - 1 ; nichtok = schnitt == anfang - 1 ; } else nichtok = true ; } while ( ! ( nichtok ) ) ; } memcpy((void *)spv, (void *)spvtmp, sizeof(sperrvektor)) ; } void zabteilen ( w , tr1 , laenge , ok , zerlegungen ) wort w ; trennvektor tr1 ; integer laenge ; boolean * ok ; integer * zerlegungen ; {/* 99 */ abteilen_regmem integer i ; dudt dud ; varr v ; intarr ind, k ; sperrvektor spv, dudstop ; trennvektor tr, dudtr ; tr1 [ 0 ] = keine ; {register integer for_end; i = 0 ; for_end = laenge ; if ( i <= for_end) do { tr [ i ] = keine ; spv [ i ] = false ; dudstop [ i ] = false ; dud [ i ] = false ; if ( i > 0 ) if ( ( w [ i ] == trennzeichen ) || ( w [ i ] == sonderzeichen ) ) { * zerlegungen = 0 ; * ok = false ; goto lab99 ; } } while ( i++ < for_end ) ; } * zerlegungen = 0 ; trennen ( 3 , 1 , spv , *ok , tr , dudtr , *zerlegungen , dud , v , ind , k , dudstop , w , tr1 , laenge ) ; {register integer for_end; i = 0 ; for_end = laenge ; if ( i <= for_end) do if ( tr1 [ i ] == nebenck ) { tr1 [ i ] = keine ; tr1 [ i - 1 ] = nebenck ; } while ( i++ < for_end ) ; } lab99: ; } boolean zisdirtyumlaut ( p ) halfword p ; {register boolean Result; isdirtyumlaut_regmem boolean res ; halfword q ; res = false ; if ( p != 0 ) if ( mem [ p ] .hh.b0 == 7 ) if ( mem [ p + 1 ] .hh .v.LH != 0 ) if ( mem [ mem [ p + 1 ] .hh .v.LH ] .hh .v.RH != 0 ) if ( mem [ mem [ mem [ p + 1 ] .hh .v.LH ] .hh .v.RH ] .hh .v.RH != 0 ) { q = mem [ p + 1 ] .hh .v.LH ; if ( mem [ q ] .hh.b0 == 12 ) q = mem [ q ] .hh .v.RH ; if ( ( mem [ q ] .hh.b0 == 11 ) && ( mem [ q + 1 ] .cint == specletterID ) && ( mem [ q ] .hh .v.RH >= himemmin ) && ( mem [ mem [ mem [ q ] .hh .v.RH ] .hh .v.RH ] .hh.b0 == 11 ) ) res = true ; } Result = res ; return(Result) ; } integer zgetcharof ( s ) halfword s ; {register integer Result; getcharof_regmem halfword q ; q = mem [ s + 1 ] .hh .v.LH ; if ( mem [ q ] .hh.b0 == 12 ) q = mem [ q ] .hh .v.RH ; Result = mem [ mem [ mem [ q ] .hh .v.RH ] .hh .v.RH + 1 ] .cint ; return(Result) ; } integer zgetfontof ( s ) halfword s ; {register integer Result; getfontof_regmem halfword q ; q = mem [ s + 1 ] .hh .v.LH ; if ( mem [ q ] .hh.b0 == 12 ) q = mem [ q ] .hh .v.RH ; Result = mem [ mem [ q ] .hh .v.RH ] .hh.b0 ; return(Result) ; } void hyphenate ( ) {/* 50 30 31 40 41 42 45 10 */ hyphenate_regmem schar i, j, l, kk ; halfword q, r, s, qq, qr, holdr ; halfword bchar ; short xchgchar[11] ; schar addchar, xchgi, xchgk, xchghu ; halfword spechyf ; integer sij ; halfword majortail, minortail ; ASCIIcode c ; schar cloc ; integer rcount ; halfword hyfnode ; triepointer z ; integer v ; boolean funktioniert ; integer zerleg ; hyphpointer h ; strnumber k ; poolpointer u ; {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do hyf [ j ] = 0 ; while ( j++ < for_end ) ; } h = hc [ 1 ] ; incr ( hn ) ; hc [ hn ] = curlang ; {register integer for_end; j = 2 ; for_end = hn ; if ( j <= for_end) do h = ( h + h + hc [ j ] ) % 607 ; while ( j++ < for_end ) ; } while ( true ) { k = hyphword [ h ] ; if ( k == 0 ) goto lab45 ; if ( ( strstart [ k + 1 ] - strstart [ k ] ) < hn ) goto lab45 ; if ( ( strstart [ k + 1 ] - strstart [ k ] ) == hn ) { j = 1 ; u = strstart [ k ] ; do { if ( strpool [ u ] < hc [ j ] ) goto lab45 ; if ( strpool [ u ] > hc [ j ] ) goto lab30 ; incr ( j ) ; incr ( u ) ; } while ( ! ( j > hn ) ) ; s = hyphlist [ h ] ; while ( s != 0 ) { hyf [ mem [ s ] .hh .v.LH ] = 1 ; s = mem [ s ] .hh .v.RH ; } decr ( hn ) ; goto lab40 ; } lab30: ; if ( h > 0 ) decr ( h ) ; else h = 607 ; } lab45: decr ( hn ) ; {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do hcsi [ j ] = ktab [ hc [ j ] ] ; while ( j++ < for_end ) ; } if ( odd ( eqtb [ 12719 ] .cint / 2 ) ) { if ( ! odd ( eqtb [ 12720 ] .cint / 2 ) ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)2 , " *>" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)2 , " *>" ) ; } } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " hc:" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " hc:" ) ; } {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( hc [ j ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( hc [ j ] ) , logfile ); } while ( j++ < for_end ) ; } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%c\n", ':' ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%c\n", ':' ) ; } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " hc_si:" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " hc_si:" ) ; } {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( revtab [ hcsi [ j ] ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( revtab [ hcsi [ j ] ] ) , logfile ); } while ( j++ < for_end ) ; } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%c\n", ':' ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%c\n", ':' ) ; } } if ( odd ( eqtb [ 12719 ] .cint / 4 ) ) { if ( ! odd ( eqtb [ 12720 ] .cint / 4 ) ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)4 , " *>" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)4 , " *>" ) ; } } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", "< decimal character codes >" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", "< decimal character codes >" ) ; } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " hc:" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " hc:" ) ; } {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%ld%c", (long)hc [ j ] , '-' ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%ld%c", (long)hc [ j ] , '-' ) ; } if ( ( ( j + 1 ) % 16 ) == 0 ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " " ) ; } } } while ( j++ < for_end ) ; } println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " hc_si:" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " hc_si:" ) ; } {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%ld%c", (long)revtab [ hcsi [ j ] ] , '-' ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%ld%c", (long)revtab [ hcsi [ j ] ] , '-' ) ; } if ( ( ( j + 1 ) % 16 ) == 0 ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " " ) ; } } } while ( j++ < for_end ) ; } println () ; println () ; } abteilen ( hcsi , hyfsi , hn , funktioniert , zerleg ) ; {register integer for_end; j = 0 ; for_end = 64 ; if ( j <= for_end) do { hyfdisc [ j ] = 0 ; hyfpen [ j ] = 10000 ; } while ( j++ < for_end ) ; } if ( funktioniert ) {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do { if ( hyfsi [ j ] == neben ) hyfpen [ j ] = eqtb [ 12718 ] .cint ; else if ( hyfsi [ j ] == haupt ) hyfpen [ j ] = eqtb [ 12666 ] .cint ; else if ( hyfsi [ j ] == nebenck ) { hyfpen [ j + 1 ] = eqtb [ 12718 ] .cint ; s = getnode ( 2 ) ; mem [ s ] .hh.b0 = 7 ; hyfdisc [ j + 1 ] = s ; mem [ s + 1 ] .hh .v.LH = newpenalty ( eqtb [ 12718 ] .cint ) ; s = mem [ s + 1 ] .hh .v.LH ; mem [ s ] .hh.b1 = 0 ; mem [ s ] .hh .v.RH = newcharacter ( hf , hu [ j + 2 ] ) ; mem [ mem [ s ] .hh .v.RH ] .hh .v.RH = 0 ; s = hyfdisc [ j + 1 ] ; mem [ s + 1 ] .hh .v.RH = 0 ; mem [ s ] .hh .v.RH = 0 ; } else if ( hyfsi [ j ] == haupt3 ) { hyfpen [ j - 1 ] = eqtb [ 12666 ] .cint ; s = getnode ( 2 ) ; mem [ s ] .hh.b0 = 7 ; hyfdisc [ j - 1 ] = s ; mem [ s + 1 ] .hh .v.LH = newpenalty ( eqtb [ 12666 ] .cint ) ; s = mem [ s + 1 ] .hh .v.LH ; mem [ s ] .hh.b1 = 1 ; mem [ s ] .hh .v.RH = newcharacter ( hf , hu [ j ] ) ; mem [ mem [ s ] .hh .v.RH ] .hh .v.RH = 0 ; s = hyfdisc [ j - 1 ] ; mem [ s + 1 ] .hh .v.RH = 0 ; mem [ s ] .hh .v.RH = 0 ; } } while ( j++ < for_end ) ; } if ( odd ( eqtb [ 12719 ] .cint / 8 ) ) { if ( ! odd ( eqtb [ 12720 ] .cint / 8 ) ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)8 , " *>" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)8 , " *>" ) ; } } if ( funktioniert ) { {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do if ( hyfpen [ j ] != 10000 ) { if ( hyfdisc [ j ] != 0 ) { if ( mem [ mem [ hyfdisc [ j ] + 1 ] .hh .v.LH ] .hh.b1 == 0 ) { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%c%c", Xchr ( hu [ j + 1 ] ) , '-' ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%c%c", Xchr ( hu [ j + 1 ] ) , '-' ) ; } else { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%c%c%c", Xchr ( hu [ j + 1 ] ) , Xchr ( hu [ j + 1 ] ) , '=' ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%c%c%c", Xchr ( hu [ j + 1 ] ) , Xchr ( hu [ j + 1 ] ) , '=' ) ; } } else { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( hu [ j ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( hu [ j ] ) , logfile ); } if ( hyfpen [ j ] == eqtb [ 12666 ] .cint ) { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( '=' , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( '=' , logfile ); } else { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( '-' , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( '-' , logfile ); } } } else { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) putc( Xchr ( hu [ j ] ) , stdout ); if ( ( selector == 18 ) || ( selector == 19 ) ) (void) putc( Xchr ( hu [ j ] ) , logfile ); } } while ( j++ < for_end ) ; } } else { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", " no hyphens were found in this word!" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", " no hyphens were found in this word!" ) ; } } println () ; } goto lab31 ; lab40: hyfpen [ 0 ] = 10000 ; {register integer for_end; j = 1 ; for_end = hn ; if ( j <= for_end) do if ( odd ( hyf [ j ] ) ) hyfpen [ j ] = eqtb [ 12666 ] .cint ; else hyfpen [ j ] = 10000 ; while ( j++ < for_end ) ; } lab31: ; {register integer for_end; j = lhyf ; for_end = hn - rhyf ; if ( j <= for_end) do if ( hyfpen [ j ] != 10000 ) goto lab41 ; while ( j++ < for_end ) ; } return ; lab41: ; q = mem [ hb ] .hh .v.RH ; mem [ hb ] .hh .v.RH = 0 ; r = mem [ ha ] .hh .v.RH ; mem [ ha ] .hh .v.RH = 0 ; bchar = 256 ; holdr = newkern ( 1235 ) ; mem [ holdr ] .hh .v.RH = r ; if ( ! ( hb >= himemmin ) ) if ( mem [ hb ] .hh.b0 == 6 ) if ( odd ( mem [ hb ] .hh.b1 ) ) bchar = fontbchar [ hf ] ; if ( ( ha >= himemmin ) ) if ( mem [ ha ] .hh.b0 != hf ) goto lab42 ; else { initlist = ha ; initlig = false ; hu [ 0 ] = mem [ ha ] .hh.b1 ; } else if ( isdirtyumlaut ( ha ) ) { if ( getfontof ( ha ) != hf ) goto lab42 ; else { initlist = ha ; initlig = false ; hu [ 0 ] = getcharof ( ha ) ; } } else if ( mem [ ha ] .hh.b0 == 6 ) if ( mem [ ha + 1 ] .hh.b0 != hf ) goto lab42 ; else { initlist = mem [ ha + 1 ] .hh .v.RH ; initlig = true ; initlft = ( mem [ ha ] .hh.b1 > 1 ) ; hu [ 0 ] = mem [ ha + 1 ] .hh.b1 ; if ( initlist == 0 ) if ( initlft ) { hu [ 0 ] = 256 ; initlig = false ; } freenode ( ha , 2 ) ; } else { if ( ! ( r >= himemmin ) ) if ( mem [ r ] .hh.b0 == 6 ) if ( mem [ r ] .hh.b1 > 1 ) goto lab42 ; j = 1 ; s = ha ; initlist = 0 ; goto lab50 ; } s = curp ; while ( mem [ s ] .hh .v.RH != ha ) s = mem [ s ] .hh .v.RH ; j = 0 ; goto lab50 ; lab42: s = ha ; j = 0 ; hu [ 0 ] = 256 ; initlig = false ; initlist = 0 ; lab50: qq = holdr ; {register integer for_end; kk = j ; for_end = hn ; if ( kk <= for_end) do if ( dirtyumlaut [ kk ] != 0 ) { while ( mem [ qq ] .hh .v.RH != dirtyumlaut [ kk ] ) qq = mem [ qq ] .hh .v.RH ; qr = mem [ qq ] .hh .v.RH ; {register integer for_end; i = 1 ; for_end = mem [ qr ] .hh.b1 ; if ( i <= for_end) do if ( qr != 0 ) qr = mem [ qr ] .hh .v.RH ; else { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", "...??..X --> ????? !" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", "...??..X --> ????? !" ) ; } } while ( i++ < for_end ) ; } if ( qr != 0 ) { mem [ qq ] .hh .v.RH = mem [ qr ] .hh .v.RH ; mem [ qr ] .hh .v.RH = 0 ; } else mem [ qq ] .hh .v.RH = 0 ; } while ( kk++ < for_end ) ; } if ( dirtyumlaut [ -1 ] != 0 ) { qq = holdr ; while ( ( mem [ qq ] .hh .v.RH != dirtyumlaut [ -1 ] ) && ( mem [ qq ] .hh .v.RH != 0 ) ) qq = mem [ qq ] .hh .v.RH ; if ( mem [ qq ] .hh .v.RH == dirtyumlaut [ -1 ] ) { mem [ qq ] .hh .v.RH = mem [ dirtyumlaut [ -1 ] ] .hh .v.RH ; mem [ dirtyumlaut [ -1 ] ] .hh .v.RH = 0 ; } else { { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) Fputs( stdout , " *** ERROR: node list is damaged! " ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) Fputs( logfile , " *** ERROR: node list is damaged! " ) ; } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", "(post hyphenation - unhinge a whatsit node)" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", "(post hyphenation - unhinge a whatsit node)" ) ; } } } r = holdr ; while ( mem [ r ] .hh .v.RH != 0 ) { if ( ( memmin <= mem [ r ] .hh .v.RH ) && ( mem [ r ] .hh .v.RH <= memmax ) ) r = mem [ r ] .hh .v.RH ; else { (void) putc('\n', logfile ); (void) putc('\n', stdout ); (void) fprintf( logfile , "%s\n", "???$ - ERROR in node list!" ) ; (void) fprintf( stdout , "%s\n", "???$ - ERROR in node list!" ) ; kk = depththreshold ; l = breadthmax ; depththreshold = 100 ; breadthmax = 100 ; shownodelist ( holdr ) ; mem [ r ] .hh .v.RH = 0 ; depththreshold = kk ; breadthmax = l ; } } flushnodelist ( holdr ) ; if ( dirtyumlaut [ -1 ] != 0 ) { mem [ s ] .hh .v.RH = dirtyumlaut [ -1 ] ; s = mem [ s ] .hh .v.RH ; } do { if ( dirtyumlaut [ j ] != 0 ) { mem [ s ] .hh .v.RH = dirtyumlaut [ j ] ; while ( mem [ s ] .hh .v.RH > 0 ) s = mem [ s ] .hh .v.RH ; mem [ memtop - 4 ] .hh .v.RH = 0 ; j = j + 1 ; hyphenpassed = 0 ; if ( hyfpen [ j - 1 ] != 10000 ) { l = j ; hyphenpassed = j - 1 ; if ( odd ( eqtb [ 12719 ] .cint / 16 ) ) { if ( ! odd ( eqtb [ 12720 ] .cint / 16 ) ) { println () ; { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)16 , " *>" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)16 , " *>" ) ; } } { if ( ( fileoffset != 0 ) || ( termoffset != 0 ) ) println () ; if ( selector != 18 ) (void) fprintf( stdout , "%s\n", " *** append a hyphen immediatly after a dirty umlaut!" ) ; if ( ( selector == 18 ) || ( selector == 19 ) ) (void) fprintf( logfile , "%s\n", " *** append a hyphen immediatly after a dirty umlaut!" ) ; } } } } else { l = j ; j = reconstitute ( j , hn , bchar , hyfchar ) + 1 ; if ( hyphenpassed == 0 ) { mem [ s ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ; while ( mem [ s ] .hh .v.RH > 0 ) s = mem [ s ] .hh .v.RH ; if ( hyfpen [ j - 1 ] != 10000 ) { l = j ; hyphenpassed = j - 1 ; mem [ memtop - 4 ] .hh .v.RH = 0 ; } } } if ( hyphenpassed > 0 ) do { r = getnode ( 2 ) ; mem [ r ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ; mem [ r ] .hh.b0 = 7 ; majortail = r ; rcount = 0 ; while ( mem [ majortail ] .hh .v.RH > 0 ) { majortail = mem [ majortail ] .hh .v.RH ; incr ( rcount ) ; } i = hyphenpassed ; hyf [ i ] = 0 ; if ( ( hyfpen [ i ] != 10000 ) && ( hyfpen [ i ] != eqtb [ 12666 ] .cint ) ) minortail = newpenalty ( hyfpen [ i ] ) ; else minortail = 0 ; hyfpen [ i ] = 10000 ; mem [ r + 1 ] .hh .v.LH = minortail ; hyfnode = newcharacter ( hf , hyfchar ) ; xchgk = i ; if ( hyfdisc [ xchgk ] != 0 ) { spechyf = mem [ hyfdisc [ xchgk ] + 1 ] .hh .v.LH ; addchar = mem [ spechyf ] .hh.b1 ; xchgi = 1 ; do { spechyf = mem [ spechyf ] .hh .v.RH ; if ( spechyf != 0 ) { xchgchar [ xchgi ] = mem [ spechyf ] .hh.b1 ; incr ( xchgi ) ; } } while ( ! ( spechyf == 0 ) ) ; if ( hyfnode != 0 ) { xchgchar [ xchgi ] = hyfchar ; { mem [ hyfnode ] .hh .v.RH = avail ; avail = hyfnode ; ; #ifdef STAT decr ( dynused ) ; #endif /* STAT */ } } else decr ( xchgi ) ; xchghu = i - xchgi + addchar + 2 ; {register integer for_end; xchgk = 1 ; for_end = xchgi ; if ( xchgk <= for_end) do { xchgchar [ 0 ] = hu [ xchghu ] ; hu [ xchghu ] = xchgchar [ xchgk ] ; xchgchar [ xchgk ] = xchgchar [ 0 ] ; incr ( xchghu ) ; } while ( xchgk++ < for_end ) ; } xchgk = i ; i = xchghu - 1 ; xchghu = xchghu - xchgi ; } else if ( hyfnode != 0 ) { incr ( i ) ; c = hu [ i ] ; hu [ i ] = hyfchar ; { mem [ hyfnode ] .hh .v.RH = avail ; avail = hyfnode ; ; #ifdef STAT decr ( dynused ) ; #endif /* STAT */ } } while ( l <= i ) { l = reconstitute ( l , i , fontbchar [ hf ] , 256 ) + 1 ; if ( mem [ memtop - 4 ] .hh .v.RH > 0 ) { if ( minortail == 0 ) mem [ r + 1 ] .hh .v.LH = mem [ memtop - 4 ] .hh .v.RH ; else mem [ minortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ; minortail = mem [ memtop - 4 ] .hh .v.RH ; while ( mem [ minortail ] .hh .v.RH > 0 ) minortail = mem [ minortail ] .hh .v.RH ; } } if ( hyfdisc [ xchgk ] != 0 ) { i = xchgk ; l = i + 1 ; {register integer for_end; xchgk = 1 ; for_end = xchgi ; if ( xchgk <= for_end) do { hu [ xchghu ] = xchgchar [ xchgk ] ; incr ( xchghu ) ; } while ( xchgk++ < for_end ) ; } } else if ( hyfnode != 0 ) { hu [ i ] = c ; l = i ; decr ( i ) ; } minortail = 0 ; mem [ r + 1 ] .hh .v.RH = 0 ; cloc = 0 ; if ( bcharlabel [ hf ] < fontmemsize ) { decr ( l ) ; c = hu [ l ] ; cloc = l ; hu [ l ] = 256 ; } while ( l < j ) { do { l = reconstitute ( l , hn , bchar , 256 ) + 1 ; if ( cloc > 0 ) { hu [ cloc ] = c ; cloc = 0 ; } if ( mem [ memtop - 4 ] .hh .v.RH > 0 ) { if ( minortail == 0 ) mem [ r + 1 ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ; else mem [ minortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ; minortail = mem [ memtop - 4 ] .hh .v.RH ; while ( mem [ minortail ] .hh .v.RH > 0 ) minortail = mem [ minortail ] .hh .v.RH ; } } while ( ! ( l >= j ) ) ; while ( l > j ) { j = reconstitute ( j , hn , bchar , 256 ) + 1 ; mem [ majortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ; while ( mem [ majortail ] .hh .v.RH > 0 ) { majortail = mem [ majortail ] .hh .v.RH ; incr ( rcount ) ; } } } if ( rcount > 127 ) { mem [ s ] .hh .v.RH = mem [ r ] .hh .v.RH ; mem [ r ] .hh .v.RH = 0 ; flushnodelist ( r ) ; } else { mem [ s ] .hh .v.RH = r ; mem [ r ] .hh.b1 = rcount ; } s = majortail ; hyphenpassed = j - 1 ; mem [ memtop - 4 ] .hh .v.RH = 0 ; } while ( ! ( ( hyfpen [ j - 1 ] == 10000 ) ) ) ; } while ( ! ( j > hn ) ) ; mem [ s ] .hh .v.RH = q ; siq = s ; {register integer for_end; j = 0 ; for_end = 64 ; if ( j <= for_end) do if ( hyfdisc [ j ] != 0 ) { flushnodelist ( hyfdisc [ j ] ) ; } while ( j++ < for_end ) ; } flushlist ( initlist ) ; }