DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦73d0bf88d⟧ TextFile

    Length: 3328 (0xd00)
    Types: TextFile
    Names: »IDENTIFI.PAS«

Derivation

└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
    └─ ⟦this⟧ »IDENTIFI.PAS« 

TextFile

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»