DBINDXES.DEF 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. DEFINITION MODULE DBIndxes;
  2. (*
  3. * ModBase
  4. * Release 3.0
  5. * By Don Fletcher & John McMonagle
  6. * (c) Copyright 1986 - 1991 PMI
  7. * P.O. Box 8402
  8. * Green Bay WI 54308
  9. * All Rights Reserved
  10. *
  11. *)
  12. FROM ModBase3 IMPORT DBFile;
  13. FROM NumTypes IMPORT Real8;
  14. TYPE
  15. DBIndex;
  16. KeyProcedure = PROCEDURE( DBFile, DBIndex ,VAR ARRAY OF
  17. CHAR );
  18. PROCEDURE DefaultKeyProcedure(alias: DBFile; ndx: DBIndex;
  19. VAR str:ARRAY OF CHAR );
  20. PROCEDURE FindPositionCh(ndx: DBIndex; keystr:
  21. ARRAY OF CHAR; VAR found: BOOLEAN);
  22. PROCEDURE FindPositionN( ndx: DBIndex; keystr:
  23. ARRAY OF CHAR; VAR found: BOOLEAN);
  24. PROCEDURE InitIndex(indexname: ARRAY OF CHAR;VAR
  25. ndx: DBIndex;alias:DBFile ;buffersize: CARDINAL;
  26. safety,IncludeDeleted,exclusive:BOOLEAN);
  27. PROCEDURE InitCompIndex(indexname: ARRAY OF CHAR; VAR
  28. ndx: DBIndex;alias:DBFile;Key :KeyProcedure; buffersize: CARDINAL
  29. ; safety,IncludeDeleted,exclusive:BOOLEAN);
  30. PROCEDURE OpenIndex( ndx: DBIndex):BOOLEAN;
  31. PROCEDURE DisposeIndex(VAR ndx: DBIndex);
  32. PROCEDURE InsertEntry( ndx: DBIndex; kstr: ARRAY
  33. OF CHAR; recno: LONGINT );
  34. PROCEDURE CloseIndex( ndx: DBIndex);
  35. PROCEDURE UpdateIndex( ndx: DBIndex);
  36. PROCEDURE SetSafetyOn( ndx: DBIndex);
  37. PROCEDURE SetSafetyOff( ndx: DBIndex);
  38. PROCEDURE SetIndexBuffers( ndx: DBIndex;Buffers:CARDINAL);
  39. PROCEDURE NextRecord( ndx: DBIndex; VAR recno:
  40. LONGINT): BOOLEAN;
  41. PROCEDURE PrevRecord( ndx: DBIndex; VAR recno:
  42. LONGINT): BOOLEAN;
  43. (* Builds may fail because of failure getting exclusive access *)
  44. PROCEDURE BuildIndex( ndx: DBIndex; keyexp: ARRAY OF CHAR):CARDINAL;
  45. PROCEDURE BuildCompIndex( ndx: DBIndex; type: CHAR;
  46. keyexp:ARRAY OF CHAR;size : CARDINAL):CARDINAL;
  47. PROCEDURE AddRecord( alias: DBFile; ndx:
  48. DBIndex);
  49. PROCEDURE CurrentKeyCh( ndx: DBIndex;VAR val:ARRAY OF CHAR);
  50. PROCEDURE CurrentKeyN(ndx: DBIndex):Real8;
  51. PROCEDURE CurrentRec(ndx: DBIndex):LONGINT;
  52. PROCEDURE NumKeyType( ndx: DBIndex):BOOLEAN;
  53. PROCEDURE KeyLength( ndx: DBIndex):CARDINAL;
  54. PROCEDURE DeleteCurrentEntry( ndx: DBIndex);
  55. PROCEDURE GoTop( ndx: DBIndex);
  56. PROCEDURE GoBottom( ndx: DBIndex);
  57. PROCEDURE AddToUpdateList( alias: DBFile; ndx: DBIndex);
  58. (* add ndx to alias's list of indexes to update *)
  59. (* PROCEDURE UpdateDBIndxes( alias:DBFile);
  60. assigned to Index check procedure in Modbase3 *)
  61. PROCEDURE UpdateUnique( alias: DBFile; ndx:
  62. DBIndex):BOOLEAN;
  63. (* must be called after changes are made and before WriteDBFile
  64. Will indicate TRUE if key is not changed or the new value of the key is
  65. not in the index. It will only be false if the Update will produce
  66. a duplicate.*)
  67. (* you normally never need to call the EnterLock or ExitLock
  68. even on a network only need if you use InsertEntry which you should
  69. never need to use *)
  70. PROCEDURE EnterLock( ndx:DBIndex);
  71. PROCEDURE ExitLock( ndx:DBIndex);
  72. END DBIndxes.
  73.