home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TPDB21.ZIP / TPDBMATH.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-02-22  |  2.5 KB  |  109 lines

  1. {$A+,B+,D-,E-,F-,I-,L-,N-,O-,R-,S-,V-}
  2. {$M 65520,0,655360}
  3. Unit TPDBMath;
  4.  
  5. (* Copyright 1989 Brian Corll and Ten B.C. Micro Systems *)
  6.  
  7. (* Mathematical functions for TPDB. *)
  8.  
  9.  
  10. INTERFACE
  11.  
  12. Uses TPDB;
  13.  
  14. Function Add(Field1,Field2 : Byte):string;
  15.  
  16. Function Sub(Field1,Field2 : Byte) : string;
  17.  
  18. Function Mul(Field1,Field2 : Byte):string;
  19.  
  20. Function Divide(Field1,Field2 : Byte):string;
  21.  
  22. Function Max(N1,N2 : Integer) : Integer;
  23.  
  24. Function Min(N1,N2 : Integer) : Integer;
  25.  
  26. IMPLEMENTATION
  27.  
  28.  
  29.  
  30.     Function Add(Field1,Field2 : Byte):string;
  31.     (* Adds two fields and returns the string of the sum. *)
  32.     Var
  33.         T1,T2,T3 : String;
  34.         A1,A2,A3 : Real;
  35.         ErrCode : Integer;
  36.     begin
  37.         T1 := RTrim(FieldToStr(Field1));
  38.         T2 := RTrim(FieldToStr(Field2));
  39.         Val(T1,A1,ErrCode);
  40.         Val(T2,A2,ErrCode);
  41.         A3 := A1+A2;
  42.         Str(A3 : Max(Fields^[Field1].FieldLen,Fields^[Field2].FieldLen) :
  43.                 Max(Fields^[Field1].FieldDec,Fields^[Field2].FieldDec),T3);
  44.         Add := LTrim(T3);
  45.     end;
  46.  
  47.     Function Sub(Field1,Field2 : Byte) : string;
  48.     (* Subtract field 2 FROM field 1 *)
  49.     Var
  50.         T1,T2,T3 : String;
  51.         S1,S2,S3 : Real;
  52.         ErrCode : Integer;
  53.     begin
  54.         T1 := RTrim(FieldToStr(Field1));
  55.         T2 := RTrim(FieldToStr(Field2));
  56.         Val(T1,S1,ErrCode);
  57.         Val(T2,S2,ErrCode);
  58.         S3 := S1-S2;
  59.         Str(S3 : Max(Fields^[Field1].FieldLen,Fields^[Field2].FieldLen) :
  60.                 Max(Fields^[Field1].FieldDec,Fields^[Field2].FieldDec),T3);
  61.         Sub := LTrim(T3);
  62.     end;
  63.  
  64.     Function Mul(Field1,Field2 : Byte):string;
  65.     (* Multiply field 1 and field2 *)
  66.     Var
  67.         T1,T2,T3 : String;
  68.         M1,M2,M3 : Real;
  69.         ErrCode : Integer;
  70.     begin
  71.         T1 := RTrim(FieldToStr(Field1));
  72.         T2 := RTrim(FieldToStr(Field2));
  73.         Val(T1,M1,ErrCode);
  74.         Val(T2,M2,ErrCode);
  75.         M3 := M1*M2;
  76.         Str(M3 : Max(Fields^[Field1].FieldLen,Fields^[Field2].FieldLen) :
  77.                 Max(Fields^[Field1].FieldDec,Fields^[Field2].FieldDec),T3);
  78.         Mul := LTrim(T3);
  79.     end;
  80.  
  81.     Function Divide(Field1,Field2 : Byte):string;
  82.     (* Divide field1 BY field 2 *)
  83.     Var
  84.         T1,T2,T3 : String;
  85.         D1,D2,D3 : Real;
  86.     begin
  87.         T1 := RTrim(FieldToStr(Field1));
  88.         T2 := RTrim(FieldToStr(Field2));
  89.         Val(T1,D1,ErrCode);
  90.         Val(T2,D2,ErrCode);
  91.         D3 := D1/D2;
  92.         Str(D3 : Max(Fields^[Field1].FieldLen,Fields^[Field2].FieldLen) :
  93.                 Max(Fields^[Field1].FieldDec,Fields^[Field2].FieldDec),T3);
  94.         Divide := LTrim(T3);
  95.     end;
  96.  
  97.     Function Min(N1,N2 : Integer) : Integer;
  98.     begin
  99.         If N1<N2 then Min := N1
  100.         else Min := N2;
  101.     end;
  102.  
  103.     Function Max(N1,N2 : Integer) : Integer;
  104.     begin
  105.         If N1>N2 then Max := N1
  106.         else Max := N2;
  107.     end;
  108. begin
  109. end.