app/baisy/2.2.1-schulis/src/editorfunktionen

Raw file
Back to index

PACKET editorfunktionenDEFINES editiere,editierewieeingestellt,zeigedatei,
zeigedateiwieeingestellt,indateivorblaettern,killundenter,andateianfang,
andateiende,aufeditstack,aufeditstackundloeschen,voneditstack,
druckendereditorhilfsdatei,editorunterlegung,loeschendereditorhilfsdatei:LET 
standardtasten="�bcqhst!19h?o",maxzeilenlaenge=78,maxzeilennr=23,
erweiterungstasten="gpd";FILE VAR f;TEXT VAR editorhilfsdatei,editortasten;
LET temp="temporäre Druckdatei";INT VAR basiszeile;ROW maxzeilennrTEXT VAR 
untergrundzeile;PROC zeigedateiwieeingestellt:zeigedatei(editorhilfsdatei,
editortasten)END PROC zeigedateiwieeingestellt;PROC zeigedatei(TEXT CONST 
name,tasten):store(FALSE );f:=sequentialfile(modify,name);editorhilfsdatei:=
name;editortasten:=tasten;openeditor(f,FALSE );edit(groesstereditor,
standardtasten+tasten,PROC leaveeditor);INT VAR xkoord,ykoord;INT CONST 
aktlineno:=lineno(f);geteditcursor(xkoord,ykoord);basiszeile:=aktlineno-
ykoord;store(TRUE )END PROC zeigedatei;PROC indateivorblaettern(BOOL CONST 
vorwaerts):IF vorwaertsTHEN toline(f,min(lines(f),lineno(f)+maxzeilennr))
ELSE toline(f,max(1,lineno(f)-maxzeilennr))FI ;return(1)END PROC 
indateivorblaettern;PROC editiere(TEXT CONST name):inituntergrundzeilen;
editieren(name,standardtasten)END PROC editiere;PROC editiere(TEXT CONST name
,TEXT CONST tasten):inituntergrundzeilen;editieren(name,standardtasten+tasten
)END PROC editiere;PROC editiere(TEXT CONST name,BOOL CONST standard):
inituntergrundzeilen;IF standardTHEN editiere(name)ELSE editiere(name,
erweiterungstasten)FI END PROC editiere;PROC editiere(TEXT CONST name,TEXT 
CONST tasten,BOOL CONST standard):inituntergrundzeilen;IF standardTHEN 
editiere(name,tasten)ELSE editiere(name,erweiterungstasten+tasten)FI END 
PROC editiere;PROC editierewieeingestellt:editieren(editorhilfsdatei,
editortasten)END PROC editierewieeingestellt;PROC editieren(TEXT CONST name,
TEXT CONST tasten):store(FALSE );f:=sequentialfile(modify,name);
editorhilfsdatei:=name;editortasten:=tasten;edit(f,tasten,PROC leaveeditor);
INT VAR xkoord,ykoord;INT CONST aktlineno:=lineno(f);geteditcursor(xkoord,
ykoord);basiszeile:=aktlineno-ykoord;store(TRUE )END PROC editieren;PROC 
leaveeditor(TEXT CONST t):IF pos("19"+erweiterungstasten,t)>0THEN 
stdkommandointerpreter(t)ELSE seteingabe(t);quitFI END PROC leaveeditor;PROC 
killundenter(INT CONST steps):forget(editorhilfsdatei,quiet);enter(steps)END 
PROC killundenter;PROC andateianfang:toline(f,1);return(1)END PROC 
andateianfang;PROC andateiende:toline(f,lines(f));return(1)END PROC 
andateiende;PROC aufeditstackundloeschen:type("�p"+"�q");edit(f);return(1)
END PROC aufeditstackundloeschen;PROC aufeditstack:type("�d"+"�q");edit(f);
return(1)END PROC aufeditstack;PROC voneditstack:type("�g"+"�q");edit(f);
return(1)END PROC voneditstack;PROC loeschendereditorhilfsdatei:forget(
editorhilfsdatei,quiet);enter(2)END PROC loeschendereditorhilfsdatei;PROC 
druckendereditorhilfsdatei:FILE VAR datei;forget(temp,quiet);copy(
editorhilfsdatei,temp);datei:=sequentialfile(modify,temp);tofirstrecord(datei
);INT VAR i;FOR iFROM 1UPTO 5REP insertrecord(datei)PER ;tofirstrecord(datei)
;TEXT VAR satz:="Stand:   "+date+"    "+timeofday;writerecord(datei,satz);
satz:="Dateiname:    "+editorhilfsdatei;toline(datei,2);writerecord(datei,
satz);print(temp);forget(temp,quiet);return(1)END PROC 
druckendereditorhilfsdatei;PROC inituntergrundzeilen:INT VAR zeilennr;FOR 
zeilennrFROM 1UPTO maxzeilennrREP untergrundzeile(zeilennr):=""PER END PROC 
inituntergrundzeilen;TEXT PROC editorunterlegung(INT CONST i):IF i=1THEN 
blankzeileELSE IF schondaTHEN diesezeileELSE neuezeileFI FI .blankzeile:
maxzeilenlaenge*" ".schonda:TEXT VAR diesezeile:=untergrundzeile(i-1);
diesezeile<>"".neuezeile:TEXT VAR nzeile:="";toline(f,basiszeile+i);
readrecord(f,nzeile);IF nzeile=""THEN nzeile:=blankzeileFI ;untergrundzeile(i
-1):=nzeile;toline(f,basiszeile);nzeile.END PROC editorunterlegung;END 
PACKET editorfunktionen;