1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
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;
|