home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug027.arc / UPDATE.INC < prev    next >
Text File  |  1979-12-31  |  5KB  |  170 lines

  1. PROCEDURE find;
  2. LABEL
  3.   escape;
  4. CONST
  5.   time = 1000;
  6. VAR
  7.   i,k,l : INTEGER;
  8.   dummy : str20;
  9.   tc    : CHAR;
  10.   ptr   : INTEGER;
  11.   ok2   : INTEGER;
  12. BEGIN
  13.   IF (filesize(infile) = 0) THEN GOTO escape;
  14.   line(1);
  15.   dis(1,2,'                            F I N D         M E N U        ');
  16.   DisDate;
  17.   line(16);
  18.   dis(1,17,'      Type in Ear Number          | ^Z = ABORT      |');
  19.   ClrEOL;
  20.   dummy := '';
  21.   inputstr(dummy,5,22,3,[^M,^Z],TC);
  22.   IF tc = ^Z THEN GOTO escape;
  23.   IF dummy <> '' THEN
  24.       BEGIN
  25.         dummy := UpcaseStr(dummy);
  26.         fillup(dummy);
  27.         find_ear(ptr,dummy);
  28.         IF found THEN
  29.             BEGIN
  30.               seek(infile,ptr);
  31.               Read(infile,Animal);
  32.             END;
  33.       END
  34.     ELSE
  35.       BEGIN
  36.         dis(1,17,'      Type in Full Name           | ^Z = ABORT      |');
  37.         ClrEOL;
  38.         dummy := '';
  39.         inputstr(dummy,20,46,3,[^M,^Z],TC);
  40.         IF tc = ^Z THEN GOTO escape;
  41.         IF dummy <> '' THEN
  42.             BEGIN
  43.               seek(infile,0); {Used instead of reset}
  44.               REPEAT
  45.                 Read(infile,Animal);
  46.               UNTIL (EOF(infile) OR (Animal.name = dummy));
  47.             END
  48.           ELSE
  49.             GOTO escape;
  50.       END;
  51.     line(1);
  52.     dis(1,2,'                            E D I T         M E N U      ');
  53.     DisDate;
  54.     IF found
  55.       THEN BEGIN
  56.              display_Animal(Animal);
  57.              line(16);
  58.              dis(1,17,'   |   |   |   |   |   | E = Edit | D = Delete      | <ESC> = UPDATE MENU |');
  59.              f_table;
  60.              LowVideo;
  61.              dis(1,15,'P/table No, E, D or <ESC>');
  62.              NormVideo;
  63.              REPEAT
  64.                k := 0;
  65.                select(74,17,' ',['1','2','3','4','5','6','E','D',#27],ch);
  66.                val(ch,k,ok2);
  67.                IF k IN [1..6]
  68.                  THEN Animals_table(k,Animal);
  69.              UNTIL (ch = #27) OR (ch = 'E') OR (ch = 'D');
  70.              dis(1,15,'                         ');
  71.              CASE ch OF
  72.                'E' : BEGIN
  73.                        edit(Animal);
  74.                      END;
  75.                'D' : BEGIN
  76.                        Animal.ear_no := 'CLEAR';
  77.                        update_Animal_table(Animal);
  78.                        seek(infile,Animal.rec_no);
  79.                        Write(infile,Animal);
  80.                      END;
  81.              ELSE ch := ^M;
  82.         END;{case fo ch}
  83.     END
  84.     ELSE
  85.       BEGIN
  86.         LowVideo;
  87.         dis(30,15,'Animal not found');
  88.         NormVideo;
  89.         delay(time);
  90.       END;
  91.     escape:
  92. END;
  93.  
  94.  
  95. PROCEDURE Add;
  96. (*  Add is used to add a Animal *)
  97.  
  98. VAR
  99.   ear : str5;
  100.   k,ok2 : INTEGER;
  101. BEGIN
  102.   dis(1,17,'   |   |   |   |   |   |          | ^Z = ABORT      | <ESC> = FINISHED    |');
  103.   ClrEOL;
  104.   F_TABLE;
  105.   ear := '';
  106.   Initialize(Animal);
  107.   InputAnimal(Animal,CH);
  108.   check_ear(Animal.ear_no,ear);
  109.   IF ch = #27 THEN
  110.       BEGIN
  111.         Animal.rec_no := (filesize(infile));
  112.         IF filesize(infile) = 0
  113.           THEN Write(infile,Animal)
  114.           ELSE
  115.             BEGIN
  116.               seek(infile,(filesize(infile)));
  117.               Write(infile,Animal);
  118.             END;
  119.         ch := ' ';
  120.       END;
  121.     REPEAT
  122.       LowVideo;
  123.       dis(1,15,'P/table No or <ESC>');
  124.       NormVideo;
  125.       k := 0;
  126.       select(74,17,' ',['1','2','3','4','5','6','E','D',#27],ch);
  127.       val(ch,k,ok2);
  128.       IF k IN [1..6]
  129.         THEN Animals_table(k,Animal);
  130.       f_table;
  131.     UNTIL (ch = #27) OR (k IN [1..6]);
  132.     ch := ^M;
  133. END;
  134.  
  135. BEGIN(* Update*)
  136.   line(1);
  137.   dis(1,2,'                          U P D A T E       M E N U        ');
  138.   disdate;
  139.   RESET(infile);
  140.   REPEAT
  141.     GotoXY(1,2);
  142.     GotoXY(60,2);
  143.     Write(filesize(infile): 5,' RECORDS IN USE');
  144.     DisplayForm;
  145.     k := 0;
  146.     line(16);
  147.     dis(1,17,'   |   |   |   |   |   | A = Add  | F = Find        | <ESC> = MAIN   MENU |');
  148.     f_table;
  149.     select(74,17,' ',['1','2','3','4','5','6','A','F',#27],Ch);
  150.     val(ch,k,ok2);
  151.     IF k IN [1..6]
  152.       THEN BEGIN
  153.              IF Animal_table[k].rec_no <> -1
  154.                THEN BEGIN
  155.                       seek(infile,Animal_table[k].Rec_no);
  156.                       Read(infile,Animal);
  157.                       display_Animal(Animal);
  158.                       edit(Animal);
  159.                  END;
  160.         END
  161.       ELSE
  162.         CASE Ch OF
  163.           'A' : Add;
  164.           'F' : Find;
  165.         END;
  166.   UNTIL Ch = #27;
  167.   ClrScr;
  168.   close(infile);
  169. END;
  170.