home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 1024.dms / 1024.adf / TextPlus / SrcE.lzh / SrcE / autotrennE.c next >
Text File  |  1990-08-06  |  19KB  |  515 lines

  1. /*
  2.  *          autotrennE.c             © by Martin Steppler
  3.  */
  4.  
  5. #define TIEFER if(a[e] [f] [we+wl-1] <9) wl--; we--;
  6. #define HOEHER if(a[e] [f] [we+wl+1] <9) wl++; we++;
  7. #define MERKEN zw=a[e] [f] [we+wl];
  8. #define KFRAGE if(Ktest(a[e] [f] [we+wl]))
  9. #define VFRAGE if(Vtest(a[e] [f] [we+wl]))
  10.  
  11. int mit;
  12.  
  13. SchnellTest(e,f,xneu)
  14. int e,f,xneu;
  15. {
  16.    int xalt=x, salt=s, zalt=z, len;
  17.  
  18.    x=xneu; s=e; z=f; len=Testen(stil); s=salt; z=zalt; x=xalt;
  19.    return(len);
  20. }
  21. Ktest(p) /* Test auf Konsonanten plus ß */
  22. int p;
  23. {
  24.    if(p>97 && p<=122 && p!=101 && p!=105 && p!=111 && p!=117)
  25.       return(1); /* p ist kleiner Konsonant */
  26.  
  27.    if((p>65 && p<=90 && p!=69 && p!=73 && p!=79 && p!=85) || p==223)
  28.       return(1); /* p ist großer Konsonant oder ß */
  29.    return(0);
  30. }
  31. Vtest(p) /* Test auf Vokale und Umlaute */
  32. int p;
  33. {
  34.    if(p==97 || p==101 || p==105 || p==111 || p==117)
  35.       return(1); /* p ist kleiner Vokal */
  36.  
  37.    if(p==228 || p==246 || p==252)
  38.       return(1); /* p ist kleiner Umlaut */
  39.  
  40.    if(p==65 || p==69 || p==73 || p==79 || p==85)
  41.       return(1); /* p ist großer Vokal */
  42.  
  43.    if(p==196 || p==214 || p==220)
  44.       return(1); /* p ist großer Umlaut */
  45.    return(0);
  46. }
  47.  
  48. AutoTrenn(g, len, i2, st2, e, f, eg)
  49. int g, len, i2, st2, e, f, eg;
  50. {
  51.    int we=eg-1, wl, el=0, zw=0;
  52.  
  53.    mit=0;
  54.    if(g==1) { if(a[e] [f] [g+len] != 32) { g=len=0; } }
  55.    wl=SchnellTest(e,f,eg--);    /* el */
  56.    FOREVER {          /* Ans Wortende springen */
  57.       if(we+wl+1<i2) {
  58.          if(Ktest(a[e] [f] [we+wl+1]) || Vtest(a[e] [f] [we+wl+1])) {
  59.             we++; continue; }
  60.          if(a[e] [f] [we+wl+1]  <9) { wl++; continue; }
  61.       }
  62.       break;
  63.    }
  64.    if(a[e] [f] [we+wl] <9) wl--;   /* Steuercode für Sonderzeichen ? */
  65.    if((eg-g>=3 && we-g>=5) || (!g && eg>=2 && we>=4)) {
  66.       while(we-g>=3 || (!g && we>=2)) {
  67.          KFRAGE { TIEFER
  68.             VFRAGE { MERKEN TIEFER
  69.                KFRAGE {                     /*     k v k */
  70.                   if((we-g<=3&&g)||(we<=2&&!g)) {   /* c v k v k */
  71.                      TIEFER
  72.                      VFRAGE { el=1; if(we-g<=1) { HOEHER } } HOEHER
  73.                   }
  74.                   if(!el) { we=TestSerie(0,e,f,we,wl,zw,eg); wl=au; au=0; }
  75.                   el=0; if(we<=eg) break;
  76.                }
  77.                else VFRAGE {                /*     v v k */
  78.                   if(TestSerie(1,e,f,we,wl,zw)) {
  79.                      HOEHER if(we<=eg) break; TIEFER
  80.                   }
  81.                   MERKEN TIEFER
  82.                   KFRAGE {                  /*    k v v k */
  83.                      we=TestSerie(2,e,f,we,wl,zw,eg); wl=au; au=0;
  84.                      if(we<=eg) break;
  85.                   }
  86.                   else VFRAGE {             /*    v v v k */
  87.                      HOEHER HOEHER if(we<=eg) break; TIEFER TIEFER
  88.                   }
  89.                }
  90.             }
  91.             else KFRAGE { TIEFER
  92.                VFRAGE { MERKEN TIEFER
  93.                   KFRAGE {                  /*    k v k k */
  94.                      if((we-g<=3&&g)||(we<=2&&!g)) {   /* c v k v k k */
  95.                         TIEFER
  96.                         VFRAGE { el=1; HOEHER } HOEHER
  97.                      }
  98.                      if(!el) { we=TestSerie(3,e,f,we,wl,zw,eg); wl=au; au=0; }
  99.                      el=0; if(we<=eg) break;
  100.                   }
  101.                   else VFRAGE {             /*    v v k k */
  102.                      if(TestSerie(4,e,f,we,wl,zw,eg)) {
  103.                         HOEHER if(we<=eg) break; TIEFER
  104.                      }
  105.                      MERKEN TIEFER
  106.                      KFRAGE {               /*  k v v k k */
  107.                         we=TestSerie(3,e,f,we,wl,zw,eg); wl=au; au=0;
  108.                         if(we<=eg) break;
  109.                      }
  110.                      else VFRAGE {          /*  v v v k k */
  111.                         HOEHER HOEHER if(we<=eg) break; TIEFER TIEFER
  112.                      }
  113.                   }
  114.                }
  115.                else KFRAGE { TIEFER
  116.                   VFRAGE { MERKEN TIEFER
  117.                      VFRAGE {               /*  v v k k k */
  118.                         if(TestSerie(4,e,f,we,wl,zw,eg)) {
  119.                            HOEHER if(we<=eg) break; TIEFER
  120.                         }
  121.                      }
  122.                      else KFRAGE {            /*  k v k k k */
  123.                         we=TestSerie(3,e,f,we,wl,zw,eg); wl=au; au=0;
  124.                         if(we<=eg) break;
  125.                      }
  126.                   }
  127.                }
  128.             }
  129.          }
  130.          else VFRAGE { TIEFER
  131.             KFRAGE {                       /*        k v */
  132.                we=TestSerie(3,e,f,we,wl,zw,eg); wl=au; au=0;    /* alte 5 */
  133.                if(we<=eg) break;
  134.             }
  135.             else VFRAGE { MERKEN TIEFER
  136.                KFRAGE {                    /*      k v v */
  137.                   we=TestSerie(6,e,f,we,wl,zw,eg); wl=au; au=0;
  138.                   if(we<=eg) break;
  139.                }
  140.             }
  141.          }
  142.          TIEFER mit++;
  143.       }
  144.    }
  145.    else { au=len; return(g); }
  146.    if((we-g>=3)||(we==2&&!g)) {
  147.       TIEFER
  148.       if(we>1) { TIEFER
  149.          if(a[e] [f] [we+wl] != 32 && a[e] [f] [we+wl] !=45) { HOEHER }
  150.          else { TIEFER }
  151.       }
  152.       au=wl; return(we);
  153.    }
  154.    au=len; return(g);
  155. }
  156. TestSerie(rg, e, f, we, wl, zw,eg)
  157. int rg,e,f,we,wl,zw,eg;
  158. {
  159.    int gm = zw, gm2 = zw;
  160.  
  161.    FOREVER {
  162.       MERKEN
  163.       if(rg==1 || rg==4) {                         /* j: V2!=i,e V2!=V1! */
  164.          if(rg==4 && zw==gm) gm=1;                 /* k:          V2==V1 */
  165.          else if(rg==1&&zw!=101&&zw!=105&&zw!=69&&zw!=73&&zw!=gm) gm=1;
  166.          else gm=0; break;
  167.       }
  168.       gm=zw; TIEFER MERKEN
  169.       if(gm==107 || gm==75) {                      /* c: ck-Test */
  170.          if((zw==99||zw==67) && we+1<=eg) {                        /*  k */
  171.            a[e] [f] [we+wl] = 107; HOEHER break;
  172.          }
  173.       }
  174.       if(gm==104 || gm==72) {                      /* d: sch-ph-th-Test */
  175.          if(zw==116 || zw==112 || zw==84 || zw==80) break;        /* p,t */
  176.          if(zw==99 || zw==67) { TIEFER MERKEN                     /*   c */
  177.             if(zw!=115 && zw!=83 && rg!=6) { HOEHER } break;      /*  !s */
  178.          }
  179.          if(!rg || rg==3 || rg==6) {
  180.             VFRAGE { TIEFER VFRAGE { HOEHER } HOEHER break; }     /* V,V */
  181.          }
  182.          HOEHER break;
  183.       }
  184.       /* if(rg==5) { HOEHER break; } */
  185.       if(gm==114 || gm==82) {                      /* a: r-Test */
  186.          if(zw==98||zw==100||zw==102||zw==103||zw==107||    /* b,d,f,g,k */
  187.             zw==66||zw== 68||zw== 70||zw== 71||zw== 75  ) break;
  188.          if(zw==116 || zw==112 || zw==84 || zw==80) {             /* p,t */
  189.             TIEFER MERKEN
  190.             if(zw==115 || zw==83) {                               /*   s */
  191.                TIEFER VFRAGE { HOEHER }                           /*   V */
  192.             } HOEHER break;
  193.          }
  194.          if(zw==104 || zw==72) { TIEFER MERKEN                    /*   h */
  195.             if(zw==99 || zw==67) { TIEFER MERKEN                  /*   c */
  196.                if(zw==115 || zw==83) break; HOEHER break;         /*   s */
  197.             } HOEHER
  198.          } HOEHER break;
  199.       }
  200.       if(gm==108 || gm==76) {                      /* f: l-Test */
  201.          if(zw==98||zw==103||zw==107||zw==112||               /* b,g,k,p */
  202.             zw==66||zw== 71||zw== 75||zw== 80  ) break;
  203.          if(zw==102 || zw==70) {                                  /*   f */
  204.             TIEFER MERKEN
  205.             if(zw!=112 && zw!=80) { HOEHER } break;               /*  !p */
  206.          }
  207.          if(zw==104 || zw==72) { TIEFER MERKEN                    /*   h */
  208.             if(zw==99 || zw==67) { TIEFER MERKEN                  /*   c */
  209.                if(zw==115 || zw==83) break; HOEHER break;         /*   s */
  210.             } HOEHER
  211.          } HOEHER break;
  212.       }
  213.       if(((gm==116||gm==84)&&(zw==115||zw==83))||  /* h,i: t-Test      s */
  214.          ((gm==102||gm==70)&&(zw==112||zw==80))) { /* e,l: f-Test      p */
  215.          if(!rg) {                                              /* !e,!i */
  216.             if(!(gm2==101||gm2==69||gm2==105||gm2==73)||mit) break;
  217.          }
  218.          else {
  219.             TIEFER VFRAGE { HOEHER }                               /*  V */
  220.          } HOEHER break;
  221.       }
  222.       if((gm==119||gm==87)&&(zw==122||zw==90)) break;      /* o: zw-Test */
  223.       if((gm==122||gm==90)&&(zw==116||zw==84)) {           /* p: tz-Test */
  224.          HOEHER HOEHER break;
  225.       }
  226.       if((gm=='p'||gm=='P')&&(zw=='s'||zw=='S')) break;    /* q: sp-Test */
  227.       if(!rg) {                                    /* n:   n-Test        */
  228.          if(gm==110 || gm==78) {
  229.             VFRAGE { HOEHER } HOEHER break;                        /*  V */
  230.          }
  231.       }
  232.       HOEHER break;
  233.    }
  234.    if(rg==1 || rg==4) return(gm);
  235.    au=wl; return(we);
  236. }
  237. Ausrichtung(schalter)
  238. int schalter;
  239. {
  240.    int s1=bas,z1=baz,wieder,anfang,i,st,len,e,f,g,st2,i2,zy,exmeld=meld;
  241.  
  242.    if(blo<3) { s1=bes=s; z1=bez=z; }
  243.    FOREVER {
  244.       st=SC(s1, z1, (i=SL(s1,z1)));
  245.       if(MAX) f=TRUE; else f=FALSE;  /* i-st==MAX */
  246.       if(i) { anfang=e=0; wieder=1;
  247.          while(wieder) { wieder=g=0;
  248.             for(len=anfang; len<=i-1; len++) {
  249.                if(a[s1] [z1] [len] == 32) { g++; e=(e>=1) ? 2:0; continue; }
  250.                if(e==1) e=0;
  251.                if(a[s1] [z1] [len] <9) { anfang++; wieder=e=1; if(!g) len=0; }
  252.                else if(f) { anfang++; wieder=1; }
  253.                else if(!g) len=0;
  254.                break;
  255.             }
  256.             if(len) {
  257.                if(e==1) { e=0; if(!f) anfang--; }
  258.                if(e==2) e--;
  259.                if((f && (g>1 || len==g)) || !f) {
  260.                   if(f) { if(len==g) g=0; else  g=len+1-g; /* -e */ }
  261.                   else g=e;
  262.                   for(e=g; len<=i; len++, e++)
  263.                      a[s1] [z1] [e] = a[s1] [z1] [len]; e--;
  264.                   BelAend(s1,z1,st,e,i);
  265.                   i=e; e=0;
  266.                }
  267.             }
  268.          }
  269.       }
  270.       z1++;
  271.       if(s1==bes && z1>bez) break;
  272.       if(z1>SEITE) { z1=0; s1++; }
  273.    }
  274.    if(blo>2) {
  275.       if(schalter>=10) MAX=schalter;
  276.       e=s1=bas; f=z1=baz; f++;
  277.       FOREVER {
  278.          if(z1>SEITE) { z1=0; s1++; }
  279.          if(f >SEITE) { f =0;  e++; }
  280.          if((s1==bes && z1>=bez) || s1>bes) {
  281.             if(bas==bes && baz==bez && schalter>=10) {
  282.                schalter=9; goto dahin;
  283.             }
  284.             break;
  285.          }
  286.          else {
  287.             st =SC(s1, z1, (i =SL(s1,z1)));
  288.             st2=SC( e,  f, (i2=SL( e, f)));
  289.             if(i-st+i2-st2<MAX) {  /* <= */
  290.                wieder=g=0;         /* st>0 und ungerade */
  291.                if(st) SchnellTest(s1,z1,i-st); else letztes=8;
  292.                if(st && letztes!=8 && a[e] [f] [0]>8) { g++; st++; }
  293.                if(a[s1] [z1] [i-1] == 173) wieder=2;
  294.                BelAend(s1,z1,st+st2,i+i2+g+1-wieder,i);
  295.                if(wieder) { i=i-2;        /* -,ck-Test */
  296.                   if(a[s1] [z1] [i] == 107 && (a[e] [f] [0] == 107 ||
  297.                     (a[e] [f] [0]<9 && a[e] [f] [1] == 107)))
  298.                      a[s1] [z1] [i] = 99;                      /* c */
  299.                   if(g)  a[s1] [z1] [++i] = 8;
  300.                }
  301.                else {   if(g) a[s1] [z1] [i++] = 8;
  302.                         a[s1] [z1] [i] = 32;
  303.                }
  304.                for(len=i+1; len<=i2+i+1; len++)
  305.                   a[s1] [z1] [len]=a[e] [f] [len-i-1];
  306.                g=bas; len=baz; anfang=bes; wieder=bez;
  307.                meld=3; BlockLoeschen(e,f,e,f); meld=FALSE;
  308.                bas=g; baz=len; bes=anfang; bez=wieder-1;
  309.                if(bez<0) { bez=SEITE; bes--; }
  310.             }
  311.             else if((i-st>MAX) || (i2-st2>MAX)) {
  312. dahin:         if(schalter==9) {
  313.                   st =SC(s1, z1, (i =SL(s1,z1)));
  314.                   if(i-st<=MAX) break;
  315.                }
  316.                zy=z; g=s;
  317.                if(i-st>MAX) { s=s1; z=z1; } else { s=e; z=f; }
  318.                x=MAX; st=Testen(stil);
  319.                for(len=MAX+st-1; len>=0; len--) {
  320.                   if(a[s] [z] [len] <9) st--;
  321.                   if(a[s] [z] [len] == 32) {
  322.                      x = len+2-st; break;
  323.                   }
  324.                }
  325.                if(x>MAX || len<0)  x=MAX;  /* voll ohne space */
  326.                len=baz; st=bas; anfang=bes; wieder=bez;
  327.                meld=500; CarRet(); meld=FALSE;
  328.                s=g; z=zy; baz=len; bas=st; bes=anfang;
  329.                if((bez=wieder+1)>SEITE) { bez=0; bes++; }
  330.             }
  331.             else {
  332.                if((g=MAX+st-i-1)>=3) {
  333.                   len=SchnellTest(e, f, g--); wieder=0;
  334.                   if(!(a[e] [f] [g+len+1] == 32)) {
  335.                      while(g>=2) {
  336.                         if(a[e] [f] [g+len]   == 32) { g--; wieder=1; break; }
  337.                         if(a[e] [f] [g+len]   == 45)          break;
  338.                         if(a[e] [f] [g+len]    <  9) { len--; continue; }
  339.                         g--;
  340.                      }
  341.                   }
  342.                   if(!au) { g=AutoTrenn(g,len,i2,st2,e,f, (MAX+st-i-1));
  343.                             len=au; au=0;
  344.                   }
  345.                   if(g>=2 || (wieder && g)) {
  346.                      wieder=anfang=zy=0;         /* st>0 und ungerade */
  347.                      if(st) SchnellTest(s1,z1,i-st); else letztes=8;
  348.                      if(st && letztes!=8 && a[e] [f] [0]>8) { anfang++; st++; }
  349.                      if(a[s1] [z1] [i-1] == 173) wieder=2;
  350.                      if(a[e] [f] [g+len+1]!=32 && a[e] [f] [g+len+1]!=45 &&
  351.                        (Ktest(a[e] [f] [g+len]) || Vtest(a[e] [f] [g+len])))
  352.                         zy++;         /* Trennungsstrich */
  353.                      BelAend(s1,z1,st+len,i+g+len+2-wieder+anfang+zy,i);
  354.                      if(wieder) { i=i-2;      /* -,ck-Test */
  355.                         if(a[s1] [z1] [i] == 107 && (a[e] [f] [0] == 107 ||
  356.                           (a[e] [f] [0]<9 && a[e] [f] [1] == 107)))
  357.                            a[s1] [z1] [i] = 99;                      /* c */
  358.                         if(anfang) a[s1] [z1] [++i] = 8;
  359.                      }
  360.                      else {   if(anfang) a[s1] [z1] [i++] = 8;
  361.                         a[s1] [z1] [i] = 32;
  362.                      }
  363.                      wieder=zy;
  364.                      for(zy=i+1; zy<=i+g+len+1; zy++)
  365.                         a[s1] [z1] [zy] = a[e] [f] [zy-i-1];
  366.                      if(wieder)  /* Trennungsstrich */
  367.                         a[s1] [z1] [zy++] = 173;
  368.                      a[s1] [z1] [zy] = anfang = 0;
  369.                      if(len && a[e] [f] [g+len+1]>8) {
  370.                         SchnellTest(e,f,g+len+2);
  371.                         if(letztes!=8) { a[e] [f] [0] = letztes; anfang=1; }
  372.                         else anfang=0;
  373.                      }
  374.                      if(a[e] [f] [g+len+1] == 32) g++;
  375.                      for(zy=g+len+1; zy<=i2; zy++)
  376.                         a[e] [f] [zy-g-len-1+anfang] = a[e] [f] [zy];
  377.                      BelAend(e,f,st2-len+anfang,zy-g-len-2+anfang,i2);
  378.                   }
  379.                }
  380.                z1++; f++;
  381.             }
  382.          }
  383.       }
  384.    }
  385.    if(s>se || (s==se && z>ze)) { s=se; z=ze; }
  386.    if(schalter>=9) { schalter=ausri; x=MIX; off=0; }
  387.    if(schalter>LINKS) {
  388.       if(blo<3) { s1=bes=s; z1=bez=z; }
  389.       else { s1=bas; z1=baz; }
  390.       FOREVER {
  391.          st=SC(s1, z1, (i=SL(s1,z1)));
  392.          if(i) { i=RechterRand(i,st,s1,z1);
  393.                  st=meld; meld=FALSE; }
  394.          if(i && i-st < MAX) {
  395.             switch(schalter) {
  396.                case RECHTS:    e=MAX+st;
  397.                case ZENTRIERT:
  398.                   if(schalter==ZENTRIERT) e=((MAX+st-i)/2)+i;
  399.                   BelAend(s1,z1,st,e,i);
  400.                   for(f=e, len=i; len>=0; len--, e--)
  401.                      a[s1] [z1] [e] = a[s1] [z1] [len];
  402.                   for(len=f-i-1; len>=0; len--) a[s1] [z1] [len] = 32;
  403.                   break;
  404.                case BLOCKSATZ:
  405.                   if(vonri==LINKS) e=0; else e=i-1; g=0;
  406.                   while(i-st<MAX) {
  407.                      f=500;
  408.                      if(vonri==LINKS) {
  409.                         for(len=e; len<=i-1; len++) {
  410.                            if(a[s1] [z1] [len] == 32) { e=f=len; g=1; break; }
  411.                            else e=0;
  412.                         }
  413.                      }
  414.                      else {
  415.                         for(len=e; len>=0; len--) {
  416.                            if(a[s1] [z1] [len] == 32) { e=f=len; g=1; break; }
  417.                            else e=i-1;
  418.                         }
  419.                      }
  420.                      if(f!=500) {
  421.                         BelAend(s1,z1,st,i+1,i);
  422.                         for(len=i++; len>=e; len--)
  423.                            a[s1] [z1] [len+1] = a[s1] [z1] [len];
  424.                         if(vonri==LINKS) { e+=2; if(e>i-1) e=0; }
  425.                         else { e--; if(e<0) e=i-1; }
  426.                      }
  427.                      else if(!g) break;
  428.                   }
  429.                   if(vonri==LINKS) vonri=RECHTS; else vonri=LINKS;
  430.                   break;
  431.             }
  432.          }
  433.          z1++; if(z1>SEITE) { z1=0; s1++; }
  434.          if((s1==bes && (z1>bez || (schalter==BLOCKSATZ && z1==bez)))||s1>bes)
  435.             break;
  436.       }
  437.    }
  438.    if(exmeld == 2) return(st);
  439.    meld=sicher=FALSE; ausri=schalter;
  440.    SText();
  441.    ZSDisplay(); meld=FALSE;
  442. }
  443. RechterRand(i, st, s1, z1)
  444. int i, st, s1, z1;
  445. {
  446.    int len;
  447.  
  448.    for(len=i-1; len>=0; len--) {
  449.       if(a[s1] [z1] [len] == 32)   {       a[s1] [z1] [len] = EOS; continue; }
  450.       else if(a[s1] [z1] [len] <9) { st--; a[s1] [z1] [len] = EOS; continue; }
  451.       break;
  452.    }
  453.    if(len+1!=i) BelAend(s1,z1,st,len+1,i);
  454.    meld=st;
  455.    return(len+1);
  456. }
  457. Seitenlaenge(laenge)
  458. int laenge;
  459. {
  460.    int frei=0, voll=0, es=se, ez=ze, ps, pz;
  461.  
  462.    if(--laenge < SEITE) {
  463.       if(se) voll=(SEITE-laenge)*se;  /* Anzahl der zusätzlichen Zeilen */
  464.       if(ze>laenge) voll+=(ze-laenge);
  465.       frei=(MAS-se+1)*(laenge+1);     /* Anzahl der freien Zeilen */
  466.       if(laenge>ze) frei+=(laenge-ze);
  467.       if(frei==0 || frei<voll) {
  468.          sprintf(buffer, "Out of memory!");
  469.          meld=TRUE;
  470.          return(0);
  471.       }
  472.       if(voll) {
  473.          for(frei=0; frei<=voll-1; frei++) { if(++ze>laenge) { ze=0; se++; } }
  474.          ps=se; pz=ze;
  475.          FOREVER {
  476.             a[ps] [pz] = a[es] [ez];
  477.             if(--ez<0) { ez=SEITE;  es--; }
  478.             if(--pz<0) { pz=laenge; ps--; }
  479.             if(es==ps && pz==ez) break;
  480.          }
  481.       }
  482.       SEITE = laenge;
  483.    }
  484.    else if(laenge > SEITE) {
  485.       if(se) {
  486.          ps=ez=0; pz=SEITE+1; es=1;
  487.          FOREVER {
  488.             a[ps] [pz] = a[es] [ez];
  489.             if(es==se && ez==ze) { se=ps; ze=pz; break; }
  490.             if(++ez>SEITE)  { ez=0; es++; }
  491.             if(++pz>laenge) { pz=0; ps++; }
  492.          }
  493.       }
  494.       SEITE = laenge;
  495.    }
  496.    sicher=FALSE; s=z=0; y=MIY;
  497.    SText(); ZSDisplay();
  498.    sprintf(buffer, "New page-length: %d lines!", SEITE+1);
  499.    Meldung();
  500. }
  501. Textbreite(breite)
  502. int breite;
  503. {
  504.    if(blo>2) {
  505.       if(breite>MAX) { MAX = breite; Ausrichtung(ausri); }
  506.       else if(breite<MAX) Ausrichtung(breite);
  507.    }
  508.    else {
  509.       MAX=breite; if(x>MAX) x=MAX;
  510.       SText(); ZSDisplay();
  511.    }
  512.    sprintf(buffer, "New text-width: %d columns!", MAX);
  513.    Meldung();
  514. }
  515.