home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / sampler / 01 / curves / sample2.inc < prev    next >
Encoding:
Text File  |  1988-09-03  |  9.5 KB  |  309 lines

  1. {
  2.                        F i l e    I n f o r m a t i o n
  3.  
  4. * DESCRIPTION
  5. Include source code file for curve.
  6.  
  7. * ASSOCIATED FILES
  8. CURVE.PAS
  9. ASSAY.TXT
  10. CURVE.COM
  11. CURVE4.EXE
  12. CURVE4.PAS
  13. PRINTOUT.INC
  14. PT.LAS
  15. README
  16. SAMPLE.INC
  17. SAMPLE2.INC
  18. SAMPLE4.INC
  19. SAMPLE4B.INC
  20. SPACER.INC
  21. TOOLS.INC
  22. TOOLS4.INC
  23.  
  24. ==========================================================================
  25. }
  26. {       SAMPLE2.INC          }
  27.  
  28. { SPACE.INC used like the basic command spc() to add spaces }
  29. PROCEDURE SPC ( FIELD : INTEGER);
  30.  
  31.    VAR
  32.      SPACES : STRING[80];
  33.      I , SPACEONLINE : INTEGER;
  34.  
  35. BEGIN
  36.   SPACES :=' ';
  37.   SPACEONLINE := FIELD;
  38.   FOR i := 1 TO SPACEONLINE DO SPACES := SPACES + ' ';
  39.   WRITE (LST,SPACES);
  40.   END;
  41.  
  42. PROCEDURE Y_SINGLE_SAMPLE(TOTAL : INTEGER; FIT : INTEGER);
  43.           VAR
  44.             SAMPLE, SPACER, PACE : INTEGER;
  45.             XV, YV, DIL : ARRAY[1..50] OF REAL;
  46.             T1, T2, DILUTION : ARRAY[1..50] OF STR25;
  47.               SPECIMEN : ARRAY[1..50] OF STR25;
  48.              CHOICE : CHAR;
  49.        BEGIN
  50.          CLRSCR;
  51.            FOR SAMPLE := 1 TO TOTAL DO
  52.                BEGIN
  53.                  WRITE('SPECIMEN ? ');
  54.                    READLN(SPECIMEN[SAMPLE]);
  55.                  WRITELN;
  56.                WRITE('ENTER TEST Y ?  ');
  57.             READLN(YV[SAMPLE]);
  58.             WRITE('ENTER DILUTION FACTOR [ UND = 1 ]  ');
  59.             READLN(DIL[SAMPLE]);
  60.           WRITELN
  61.         END;
  62.             CASE FIT OF
  63.                       1 : BEGIN
  64.               DISPLAY_CURVE(1);
  65.               FOR SAMPLE := 1 TO TOTAL DO BEGIN
  66.                 XV[SAMPLE] := (YV[SAMPLE] - B[FIT] / M[FIT]);
  67.                 XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  68.                 WRITE('#  ',SAMPLE,'  ');
  69.                 WRITELN(SPECIMEN[SAMPLE],' = ',XV[SAMPLE]:2:2)
  70.                 END;
  71.                 PAUSE
  72.               END;
  73.             2 : BEGIN
  74.                  DISPLAY_CURVE(2);
  75.                   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  76.                   XV[SAMPLE] := SQR((YV[SAMPLE] / B[FIT] * (1 / M[FIT])));
  77.                   XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  78.                   write('#  ',sample,'  ');
  79.                   writeln(specimen[sample],' = ',xv[sample]:2:2)
  80.                 END;
  81.                 PAUSE
  82.               END;
  83.             3 : BEGIN
  84.                 DISPLAY_CURVE(3);
  85.                   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  86.                   XV[SAMPLE] := EXP((YV[SAMPLE]-B[FIT])/M[FIT]);
  87.                   XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  88.                   WRITE('#  ',SAMPLE,'  ');
  89.                   WRITELN(SPECIMEN[SAMPLE],' = ',XV[SAMPLE]:2:2)
  90.                 END;
  91.                 PAUSE
  92.               END;
  93.             4 : BEGIN
  94.                 DISPLAY_CURVE(4);
  95.                   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  96.                   XV[SAMPLE] := LN(YV[SAMPLE] / B[FIT]) / M[FIT];
  97.                   XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  98.                   WRITE('#  ',SAMPLE,'  ');
  99.                   WRITELN(SPECIMEN[SAMPLE],' = ',XV[SAMPLE]:2:2)
  100.                 END;
  101.                 PAUSE
  102.               END
  103.             END; { CASE }
  104.         { HARDCOMPY }
  105.   WRITELN; INVERSE;
  106. WRITE(' do you want a hardcopy?  [ Y/N ] '); NO_inverse;
  107. READLN(CHOICE);
  108. IF CHOICE IN ['Y','y'] THEN BEGIN
  109.              WRITE(LST,'---------------------------');
  110.              WRITE(LST,'---------------------------');
  111.              WRITELN(LST); WRITELN(LST);
  112.   WRITELN(LST,'SAMPLES'); WRITELN(LST);
  113.   WRITE(LST,'# '); SPC(14);
  114.   WRITE(LST,'SAMPLE'); SPC(6);
  115.   WRITE(LST,'DILUTION'); SPC(11);
  116.   WRITE(LST,' t '); SPC(11);
  117.   WRITE(LST,' UNITS/ML');
  118.   WRITE(LST);
  119.   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  120.   WRITE(LST,SAMPLE);
  121.    PACE := LENGTH(SPECIMEN[SAMPLE]);
  122.    SPACER := 20 - PACE;
  123.    SPC(SPACER);
  124.    WRITE(LST,SPECIMEN[SAMPLE]);
  125.    STR(DIL[SAMPLE],DILUTION[SAMPLE]);
  126.    PACE :=LENGTH(DILUTION[SAMPLE]);
  127.    SPACER := 19 - PACE;
  128.    SPC(SPACER);
  129.    WRITE(LST,DIL[SAMPLE]:2:2);
  130.    STR(XV[SAMPLE],T1[SAMPLE]);
  131.     PACE := LENGTH(T1[SAMPLE]);
  132.     SPACER := 22 - PACE;
  133.     SPC(SPACER);
  134.     WRITE(LST,YV[SAMPLE]:2:2);
  135.     SPC(12);
  136.   WRITELN(LST,XV[SAMPLE]:2:2);
  137.   END;
  138.  END
  139. END;
  140.  
  141.  
  142. PROCEDURE Y_PAIRED_SAMPLE (TOTAL, FIT : INTEGER);
  143.           VAR
  144.             SAMPLE, SPACER, PACE : INTEGER;
  145.             YV1, YV2, XV, YV, DIL : ARRAY[1..50] OF REAL;
  146.             T1, T2, DILUTION : ARRAY[1..50] OF STRING[10];
  147.             SPECIMEN : ARRAY[1..50] OF STR25;
  148.             CHOICE : CHAR;
  149.        BEGIN
  150.          CLRSCR;
  151.          FOR SAMPLE := 1 TO TOTAL DO BEGIN
  152.          WRITE('SPECIMEN NAME ? ');
  153.          READLN(SPECIMEN[SAMPLE]);
  154.          WRITELN;
  155.          WRITE('ENTER TEST Y1 ?  ');
  156.          READLN(YV1[SAMPLE]);
  157.             WRITE('ENTER TEST Y2 ?  ');
  158.             READLN(YV2[SAMPLE]);
  159.                WRITE(' enter dilution factor [ und = 1 ] ');
  160.                READLN(DIL[SAMPLE]);
  161.              WRITELN;
  162.              YV[SAMPLE] := (YV1[SAMPLE] + YV2[SAMPLE]) / 2
  163.            END;
  164.                               { DISPLAY & COMPUTATIONS }
  165.            CASE FIT OF
  166.               1 : BEGIN
  167.               DISPLAY_CURVE(1);
  168.               FOR SAMPLE := 1 TO TOTAL DO BEGIN
  169.                 XV[SAMPLE] := (YV[SAMPLE] - B[FIT]) / M[FIT];
  170.                 XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  171.                 WRITE('#  ',SAMPLE,'  ');
  172.                 WRITELN(SPECIMEN[SAMPLE],' = ',XV[SAMPLE]:2:2)
  173.                 END;
  174.                 PAUSE
  175.               END;
  176.             2 : BEGIN
  177.                 DISPLAY_CURVE(2);
  178.                   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  179.                   XV[SAMPLE] := SQR( (YV[SAMPLE] / B[FIT]) * (1 / M[FIT]) );
  180.                   XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  181.                   write('#  ',sample,'   ');
  182.                   writeln(specimen[sample],' = ',xv[sample]:2:2)
  183.                 END;
  184.                 PAUSE
  185.               END;
  186.             3 : BEGIN
  187.                 DISPLAY_CURVE(3);
  188.                   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  189.                   XV[SAMPLE] := EXP((YV[SAMPLE]-B[FIT])/M[FIT]);
  190.                   XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  191.                   WRITE('#  ',SAMPLE,'  ');
  192.                   WRITELN(SPECIMEN[SAMPLE],' = ',XV[SAMPLE]:2:2)
  193.                 END;
  194.                 PAUSE
  195.               END;
  196.             4 : BEGIN
  197.                 DISPLAY_CURVE(4);
  198.                   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  199.                   XV[SAMPLE] := LN(YV[SAMPLE] / B[FIT]) / M[FIT];
  200.                   XV[SAMPLE] := XV[SAMPLE] * DIL[SAMPLE];
  201.                   WRITE('#  ',SAMPLE,'  ');
  202.                   WRITELN(SPECIMEN[SAMPLE],' = ',XV[SAMPLE]:2:2)
  203.                 END;
  204.                 PAUSE
  205.               END
  206.             END; { CASE }
  207.         { HARDCOPY }
  208.   WRITELN; INVERSE;
  209. WRITE(' do you want a hardcopy?  [ Y/N ] '); NO_inverse;
  210. READLN(CHOICE);
  211. IF CHOICE IN ['Y','y'] THEN BEGIN
  212.              WRITE(LST,'------------------------------------');
  213.              WRITE(LST,'------------------------------------');
  214.              WRITELN(LST); WRITELN(LST);
  215.   WRITELN(LST,'SAMPLES'); WRITELN(LST);
  216.   WRITE(LST,'# '); SPC(11);
  217.   WRITE(LST,'SAMPLE'); SPC(7);
  218.   WRITE(LST,'DILUTION'); SPC(6);
  219.   WRITE(LST,' T1 '); SPC(6);
  220.   write(lst,' T2 '); spc(4);
  221.   WRITE(LST,' UNITS/ML');
  222.   WRITELN(LST);
  223.   FOR SAMPLE := 1 TO TOTAL DO BEGIN
  224.   WRITE(LST,SAMPLE);
  225.    PACE := LENGTH(SPECIMEN[SAMPLE]);
  226.    SPACER := 20 - PACE;
  227.    SPC(SPACER);
  228.    WRITE(LST,SPECIMEN[SAMPLE]);
  229.    STR(DIL[SAMPLE],DILUTION[SAMPLE]);
  230.    PACE :=LENGTH(DILUTION[SAMPLE]);
  231.    SPACER := 15 - PACE;
  232.    SPC(SPACER);
  233.    WRITE(LST,DIL[SAMPLE]:2:2);
  234.    STR(XV[SAMPLE],T1[SAMPLE]);
  235.     PACE := LENGTH(T1[SAMPLE]);
  236.     SPACER := 18 - PACE;
  237.     SPC(SPACER);
  238.     WRITE(LST,YV1[SAMPLE]:2:2);
  239.     SPC(5);
  240.     write(lst,yv2[sample]:2:2);
  241.     spc(6);
  242.   WRITELN(LST,XV[SAMPLE]:2:2);
  243.   END;
  244.  END
  245. END;
  246.  
  247. procedure x_samples(var total : integer);
  248.    var
  249.     choice : char;
  250. begin
  251.      writeln; inverse;
  252.      write('computation of x points'); NO_INVERSE;
  253.      writeln;
  254.      write('HOW MANY SAMPLES TO BE CALCULATED ? ');
  255.      READLN(TOTAL);
  256.      WRITE('ARE PAIRS OF NUMBERS TO BE CALCULATED [Y/N ] ');
  257.      READLN(CHOICE);
  258.          IF CHOICE IN ['N','n'] THEN X_SINGLE_SAMPLE(TOTAL,FLAG)
  259.       ELSE
  260.          X_PAIRED_SAMPLE(TOTAL,FLAG)
  261. END;
  262.  
  263. procedure y_samples(var total : integer);
  264.   var
  265.     choice : char;
  266. begin
  267.      writeln; inverse;
  268.      write('COMPUTATIONS OF Y POINTS'); NO_INVERSE;
  269.      WRITELN;
  270.      WRITE('HOW MANY SAMPLES TO BE CALCULATED ? ');
  271.      READLN(TOTAL);
  272.      WRITE('ARE PAIRS OF NUMBERS TO BE CALCULATED ? [ Y/N ]  ');
  273.      READLN(CHOICE);
  274.      IF CHOICE IN ['N','n'] THEN y_SINGLE_SAMPLE(TOTAL,FLAG)
  275.    ELSE
  276.        Y_PAIRED_SAMPLE(TOTAL,FLAG)
  277. END;
  278.  
  279.  
  280. PROCEDURE SAMPLE_PREP (VAR FIT : INTEGER);
  281.   VAR
  282.      X, Y, CHOICE : CHAR;
  283.      BEST_FIT : INTEGER;
  284.      TITLE : MARK;
  285. BEGIN
  286.      CLRSCR;
  287.      INVERSE;
  288.      WRITE('* use this routine only after computations * '); NO_INVERSE;
  289.      WRITE(' CONTINUE ?  [ Y/N ] ');
  290.      READLN(CHOICE);
  291.      IF CHOICE IN ['N','n'] THEN MENU
  292.    ELSE
  293.      BEGIN
  294.        FOR BEST_FIT := 1 TO 4 DO
  295.            IF C[BEST_FIT] <> 0 THEN BEGIN
  296.               WRITE('( ',BEST_FIT,' ) ');
  297.                        LABELS(BEST_FIT,TITLE)
  298.                      END;
  299.            WRITELN; WRITE('ENTER WHICH  ?  ');
  300.          READLN(FIT);
  301.          IF (C[FIT] = 0) OR (FIT > 4) THEN SAMPLE_PREP(FIT);
  302.           WRITE('ENTER X TO Y [ press x ] or Y TO X [ press y ] ');
  303.            readln(choice);
  304.             IF CHOICE IN ['X','x'] THEN X_SAMPLES(FIT)
  305.         ELSE Y_SAMPLES(FIT)
  306.     END
  307. END;
  308. 
  309.