PACKET listenwerkzeugeDEFINES initspalten,setzespaltenbreite, setzespaltentrenner,spaltenweise,zeile,geblockt,zentriert,zweistellig, vergleichsdatum:LET maxanzspalten=20,null=0,blank=" ",niltext=""#,andenanfang =1,ansende=2,vorwaerts=3,rueckwaerts=4,naechstenlesen=1;#;TEXT VAR zwischenpuffer,spaltentrenner;INT VAR aktspalte,aktmaxanzspalten;ROW maxanzspaltenINT VAR spaltenbreite;PROC initspalten:INT VAR i;FOR iFROM 1 UPTO maxanzspaltenREP spaltenbreite(i):=nullPER ;aktmaxanzspalten:=null; aktspalte:=1;zwischenpuffer:=niltext;spaltentrenner:=blank;END PROC initspalten;PROC setzespaltenbreite(INT CONST breite):aktmaxanzspaltenINCR 1; IF aktmaxanzspalten<=maxanzspaltenTHEN spaltenbreite(aktmaxanzspalten):= breiteFI ;END PROC setzespaltenbreite;PROC setzespaltentrenner(TEXT CONST trenner):spaltentrenner:=trennerEND PROC setzespaltentrenner;PROC spaltenweise(TEXT CONST t):IF aktspalte>aktmaxanzspaltenTHEN aktspalte:=1; zwischenpuffer:=niltextFI ;zwischenpuffer:=zwischenpuffer+text(t, spaltenbreite(aktspalte));IF aktspalte