|
DataMuseum.dkPresents historical artifacts from the history of: Jet Computer Jet80 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Jet Computer Jet80 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3328 (0xd00) Types: TextFile Names: »IDENTIFI.PAS«
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80) └─ ⟦this⟧ »IDENTIFI.PAS«
PROGRAM identifi; (* Dette program forudsætter, at standardidentifierne er blevet indlæst *) (* i filen IDENTI.DAT i alfabetisk rækkefølge ved hjælp af programmet *) (* IDENTIFI.HLP *) CONST bogstaver : SET OF CHAR = (.'A' .. 'Z'.); TYPE str10 = STRING(.10.); str14 = STRING(.14.); str20 = STRING(.20.); str80 = STRING(.80.); identififil = FILE OF str10; identifiertabel = ARRAY(.1 .. 130.) OF str10; VAR indnavn, udnavn : str14; indfil, udfil : TEXT; datafil : identififil; linie : str80; ord_ : str20; ch : CHAR; i, j, start, slut, tabellaengde : INTEGER; tabel : identifiertabel; FUNCTION binsoeg(soegeord : str20) : BOOLEAN; VAR bund, top, midt : INTEGER; BEGIN bund := 1; top := tabellaengde; REPEAT midt := (top + bund) DIV 2; IF soegeord > tabel(.midt.) THEN bund := midt + 1 ELSE top := midt - 1; UNTIL (soegeord = tabel(.midt.)) OR (top < bund); IF soegeord = tabel(.midt.) THEN binsoeg := TRUE ELSE binsoeg := FALSE; END; BEGIN WRITE(CLRHOM); ASSIGN(datafil, 'IDENTIFI.DAT'); RESET(datafil); i := 0; WHILE NOT EOF(datafil) DO BEGIN i := i + 1; READ(datafil, tabel(.i.)); END; CLOSE(datafil); tabellaengde := i; WRITE('Hvilken Pascal-kildetekst skal ændres: '); READLN(indnavn); ASSIGN(indfil, indnavn); RESET(indfil); WRITELN; WRITE('Hvad skal det korrigerede program hedde: '); READLN(udnavn); ASSIGN(udfil, udnavn); REWRITE(udfil); WRITELN; WHILE NOT EOF(indfil) DO BEGIN linie := ''; WHILE NOT EOLN(indfil) DO BEGIN READ(indfil, ch); linie := linie + ch; END; linie := linie + ' '; READLN(indfil); IF LEN(linie) > 0 THEN BEGIN i := 1; REPEAT ch := linie(.i.); WHILE (i < LEN(linie)) AND NOT (ch IN bogstaver) DO BEGIN i := i + 1; ch := linie(.i.); END; IF ch IN bogstaver THEN BEGIN start := i; WHILE (i < LEN(linie)) AND ( ch IN bogstaver) DO BEGIN i := i + 1; ch := linie(.i.); END; slut := i; ord_ := COPY(linie, start, slut - start); IF binsoeg(ord_) THEN FOR j := start TO slut - 1 DO linie(.j.) := CHR(ORD(linie(.j.)) + 32); END; UNTIL i >= LEN(linie); END; FOR i := 1 TO LEN(linie) - 1 DO WRITE(udfil, linie(.i.)); WRITELN(udfil); END; CLOSE(indfil); CLOSE(udfil); END. «eof»