|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3328 (0xd00)
Types: TextFile
Names: »IDENTIFI.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
└─⟦this⟧ »IDENTIFI.PAS«
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
└─⟦this⟧ »IDENTIFI.PAS«
└─⟦3702e543b⟧ Bits:30003064 Demoprogrammer A-J til Pascal bog
└─⟦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»