DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

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

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦532e96afd⟧ TextFile

    Length: 9984 (0x2700)
    Types: TextFile
    Names: »PERSONER.PAS«

Derivation

└─⟦09235ab48⟧ Bits:30003065 Demoprogrammer K-Z til Pascal bog
    └─ ⟦this⟧ »PERSONER.PAS« 
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
    └─ ⟦this⟧ »PERSONER.PAS« 
└─⟦f983c2ef3⟧ Bits:30004681 Pascal opgaver (Butler)
    └─ ⟦this⟧ »PERSONER.PAS« 

TextFile

PROGRAM personer;

  CONST
    max = 100;
  
  TYPE
    str30 = STRING(.30.);
    str3 = STRING(.3.);
    koentype = (mand, kvinde);
    haarfarvetype = (lysblond, moerkeblond, hvidt, brunt, sort, roedt,
                     graat, skaldet);
    oejenfarvetype = (blaa, graa, brune, groenne);
    personpost = RECORD
                   navn : str30;
                   koen : koentype;
                   hoejde : INTEGER;
                   vaegt : INTEGER;
                   haarfarve : haarfarvetype;
                   oejenfarve : oejenfarvetype;
                 END;
    personregister = ARRAY(.1 .. max.) OF personpost;
  
  VAR
    person : personregister;
    antal : INTEGER;
  
  PROCEDURE retur;
  
    VAR
      ch : CHAR;
    
    BEGIN (* retur *)  
      WRITELN;
      WRITE('Tast <RETURN>: ');
      BUFLEN := 0;
      READLN;
    END; (* retur *)
       
  PROCEDURE soegkoen;
  
    VAR
      i : INTEGER;
      soeg_koen : koentype;
      ch : CHAR;
      fundet : BOOLEAN;
      
    BEGIN (* soegkoen *)
      REPEAT
        GOTOXY(0, 20);
        WRITE('Tast køn (m/k):  ');
        WRITE(CHR(8));
        BUFLEN := 1;
        READ(ch);
      UNTIL (ch = 'm') OR (ch = 'k');
      IF ch = 'm'
        THEN soeg_koen := mand
        ELSE soeg_koen := kvinde;
      GOTOXY(0, 22);
      WRITELN('Følgende personer er af det søgte køn:');
      fundet := FALSE;
      FOR i := 1 TO antal DO
        IF person(.i.).koen = soeg_koen
          THEN
            BEGIN
              WRITELN(person(.i.).navn);
              fundet := TRUE;
            END;
      IF NOT fundet
        THEN WRITELN('Der er ingen personer af det søgte køn');
        retur;
    END; (* soegkoen *)
    
  PROCEDURE soeghoejde;
    
    VAR
      i, soeg_hoejde, test : INTEGER;
      fundet : BOOLEAN;
      str : str3;
      
    BEGIN (* soeghoejde *)
      REPEAT
        GOTOXY(0, 20);
        WRITE('Tast højde: ');
        BUFLEN := 3;
        READLN(str);
        VAL(str, soeg_hoejde, test);
      UNTIL (test = 0) AND (100 <= soeg_hoejde) AND (soeg_hoejde <= 220);
      GOTOXY(0, 22);
      WRITELN('Følgende personer har højden ', soeg_hoejde, ':');
      fundet := FALSE;
      FOR i := 1 TO antal DO
        IF person(.i.).hoejde = soeg_hoejde
          THEN
            BEGIN
              WRITELN(person(.i.).navn);
              fundet := TRUE;
            END;
      IF NOT fundet
        THEN WRITELN('Der er ingen personer med denne højde');
      retur;
    END; (* soeghoejde *)
  
  PROCEDURE soegvaegt;
     
    VAR
      i, soeg_vaegt, test : INTEGER;
      fundet : BOOLEAN;
      str : str3;
      
    BEGIN (* soegvaegt *)
      REPEAT
        GOTOXY(0, 20);
        WRITE('Tast vaegt: ');
        BUFLEN := 3;
        READLN(str);
        VAL(str, soeg_vaegt, test);
      UNTIL (test = 0) AND (30 <= soeg_vaegt) AND (soeg_vaegt <= 200);
      GOTOXY(0, 22);
      WRITELN('Følgende personer har vægten ', soeg_vaegt, ':');
      fundet := FALSE;
      FOR i := 1 TO antal DO
        IF person(.i.).vaegt = soeg_vaegt
          THEN
            BEGIN
              WRITELN(person(.i.).navn);
              fundet := TRUE;
            END;
      IF NOT fundet
        THEN WRITELN('Der er ingen personer med denne vægt');
      retur;
    END; (* soegvaegt *)
  
  PROCEDURE soeghaarfarve;
  
    VAR
      i : INTEGER;
      soeg_haarfarve : haarfarvetype;
      ch : CHAR;
      fundet : BOOLEAN;
    
    BEGIN (* soeghaarfarve *)
      REPEAT
        GOTOXY(0, 20);
        WRITELN('Tast hårfarve: 1. Lysblond  2. Mørkeblond  3. Hvidt  ');
        WRITE('4. Brunt  5. Sort  6. Rødt  7. Gråt  8. Skaldet:  ');
        BUFLEN := 1;
        WRITE(CHR(8));
        READ(ch);
      UNTIL ('1' <= ch) AND (ch <= '8');
      CASE ch OF
        '1' : soeg_haarfarve := lysblond;
        '2' : soeg_haarfarve := moerkeblond;
        '3' : soeg_haarfarve := hvidt;
        '4' : soeg_haarfarve := brunt;
        '5' : soeg_haarfarve := sort;
        '6' : soeg_haarfarve := roedt;
        '7' : soeg_haarfarve := graat;
        '8' : soeg_haarfarve := skaldet;
      END;
      WRITELN;
      WRITELN('Følgende personer har denne hårfarve:');
      fundet := FALSE;
      FOR i := 1 TO antal DO
        IF person(.i.).haarfarve = soeg_haarfarve
          THEN
            BEGIN
              WRITELN(person(.i.).navn);
              fundet := TRUE;
            END;
      IF NOT fundet
        THEN WRITELN('Der er ingen personer med denne hårfarve');
      retur;
    END; (* soeghaarfarve *)
  
  PROCEDURE soegoejenfarve;
  
    VAR
      i : INTEGER;
      soeg_oejenfarve : oejenfarvetype;
      ch : CHAR;
      fundet : BOOLEAN;
    
    BEGIN (* soegoejenfarve *)
      REPEAT
        GOTOXY(0, 20);
        WRITE('Tast øjenfarve: 1. Blå  2. Grå  3. Brune  4. Grønne:  ');
        BUFLEN := 1;
        WRITE(CHR(8));
        READLN(ch);
      UNTIL ('1' <= ch) AND (ch <= '4');
      CASE ch OF
        '1' : soeg_oejenfarve := blaa;
        '2' : soeg_oejenfarve := graa;
        '3' : soeg_oejenfarve := brune;
        '4' : soeg_oejenfarve := groenne;
      END;
      WRITELN;
      WRITELN('Følgende personer har denne øjenfarve:');
      fundet := FALSE;
      FOR i := 1 TO antal DO
        IF person(.i.).oejenfarve = soeg_oejenfarve
          THEN
            BEGIN
              WRITELN(person(.i.).navn);
              fundet := TRUE;
            END;
      IF NOT fundet
        THEN WRITELN('Der er ingen personer med denne øjenfarve');
      retur;
    END; (* soegoejenfarve *)
  
  PROCEDURE indlaes;
    
    VAR
      i, test : INTEGER;
      str : str3;
      ch : CHAR;
    
    BEGIN (* indlaes *)
      WRITE(CLRHOM);
      i := 0;
      WRITELN('Indtastning af oplysninger til personkartotek:');
      WRITELN;
      REPEAT
        i := i + 1;
        WITH person(.i.) DO
          BEGIN
            WRITE('Indtast navn (^ stopper): ');
            BUFLEN := 30;
            READLN(navn);
            IF navn <> '^'
              THEN
                BEGIN
                  WRITELN;
                  WRITE('Tast køn (m/k):  ');
                  REPEAT
                    WRITE(CHR(8));
                    BUFLEN := 1;
                    READ(ch);
                  UNTIL (ch = 'm') OR (ch = 'k');
                  IF ch = 'm'  
                    THEN koen := mand
                    ELSE koen := kvinde;
                  WRITELN;
                  WRITELN;
                  REPEAT
                    WRITE('Tast højde: ');
                    BUFLEN := 3;
                    READLN(str);
                    VAL(str, hoejde, test);
                  UNTIL (test = 0) AND (100 <= hoejde) AND (hoejde <= 220);
                  WRITELN;
                  REPEAT
                    WRITE('Tast vaegt: ');
                    BUFLEN := 3;
                    READLN(str);
                    VAL(str, vaegt, test);
                  UNTIL (test = 0) AND (30 <= vaegt) AND (vaegt <= 200);
                  WRITELN;
                  WRITELN('Tast hårfarve: 1. Lysblond  2. Mørkeblond  ',
                          '3. Hvidt  ');
                  WRITE('4. Brunt  5. Sort  6. Rødt  7. Gråt  8. Skaldet:  ');
                  REPEAT
                    BUFLEN := 1;
                    WRITE(CHR(8));
                    READ(ch);
                  UNTIL ('1' <= ch) AND (ch <= '8');
                  CASE ch OF
                    '1' : haarfarve := lysblond;
                    '2' : haarfarve := moerkeblond;
                    '3' : haarfarve := hvidt;
                    '4' : haarfarve := brunt;
                    '5' : haarfarve := sort;
                    '6' : haarfarve := roedt;
                    '7' : haarfarve := graat;
                    '8' : haarfarve := skaldet;
                  END;
                  WRITELN;
                  WRITELN;
                  WRITE('Tast øjenfarve: 1. Blå  2. Grå  3. Brune  ',
                        '4. Grønne:  ');
                  REPEAT
                    BUFLEN := 1;
                    WRITE(CHR(8));
                    READ(ch);
                  UNTIL ('1' <= ch) AND (ch <= '4');
                  CASE ch OF
                    '1' : oejenfarve := blaa;
                    '2' : oejenfarve := graa;
                    '3' : oejenfarve := brune;
                    '4' : oejenfarve := groenne;
                  END;
                  WRITELN;
                  WRITELN;
                END;
          END;
      UNTIL (person(.i.).navn = '^') OR (i = max);
      IF person(.i.).navn = '^'
        THEN antal := i - 1
        ELSE antal := max;
    END; (* indlaes *)
  
  PROCEDURE menu;
  
    VAR
      ch : CHAR;
    
    BEGIN (* menu *)
      REPEAT
        WRITE(CLRHOM);
        GOTOXY(5, 2); WRITE('Hvad ønsker du at søge efter:');
        GOTOXY(5, 5); WRITE('1. Køn');
        GOTOXY(5, 7); WRITE('2. Højde');
        GOTOXY(5, 9); WRITE('3. Vægt');
        GOTOXY(5, 11); WRITE('4. Hårfarve');
        GOTOXY(5, 13); WRITE('5. Øjenfarve');
        GOTOXY(5, 15); WRITE('6. Afslutte programmet');
        REPEAT
          GOTOXY(5, 18); WRITE('Tast nummeret på den ønskede funktion:  ');
          WRITE(CHR(8)); (* Backspace *)
          BUFLEN := 1;
          READ(ch);
        UNTIL ('1' <= ch) AND (ch <= '6');
        CASE ch OF
          '1' : soegkoen;
          '2' : soeghoejde;
          '3' : soegvaegt;
          '4' : soeghaarfarve;
          '5' : soegoejenfarve;
        END;
      UNTIL ch = '6';
      WRITELN;
    END; (* menu *)
  
  BEGIN (* personer *)
    indlaes;
    menu;
  END. (* personer *)
«eof»