MAKEDBF.MOD 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. IMPLEMENTATION MODULE MakeDBF;
  2. (*
  3. * ModBase
  4. * Release 3.0
  5. * (c) Copyright 1986 - 1991 PMI
  6. Copyright 1988 - 1991 John McMonagle
  7. * P.O. Box 8402
  8. * Green Bay Wi 53308
  9. * All Rights Reserved
  10. * by Ed Ross
  11. *)
  12. FROM DataTypes IMPORT DataElmtRec,IndexElmtRec,TableName,FldList,IdxList,
  13. DBFName;
  14. FROM NumTypes IMPORT Real8;
  15. FROM StrConv IMPORT RealToStr,CardinalToStr;
  16. FROM GenLists IMPORT GenList,ListLength,GetElmt;
  17. FROM HandleIO IMPORT BlockRead,BlockWrite,FileExists,
  18. OpenFile,CloseHandle,CreateFile,FileLength;
  19. FROM StringIO IMPORT ErrorMessage;
  20. FROM PosUtils IMPORT Equal,Present,Pos;
  21. FROM Prompts IMPORT PromptStr,PromptYN;
  22. FROM Strings IMPORT Length,CompareStr;
  23. FROM StrEdit IMPORT CAPstr,CrunchBlanks,Append,SetLength,AssignStr,LowerStr;
  24. FROM LowLevel IMPORT Fill;
  25. FROM ModBase3 IMPORT DBFile, DBFieldDescriptor,AppendBlank,GetField,
  26. BuildDBF,CloseDBF,WriteDBRec,DefaultFixUp,InitDBF;
  27. FROM DBIndxes IMPORT DBIndex,InitIndex,CloseIndex,BuildIndex,AddRecord,
  28. InitCompIndex,BuildCompIndex;
  29. FROM SYSTEM IMPORT TSIZE,ADR,ADDRESS;
  30. IMPORT VWindows;
  31. FROM VStorage IMPORT DosAlloc,DosDealloc;
  32. FROM Str IMPORT Copy;
  33. PROCEDURE MakeDataBaseFile(TheList : GenList);
  34. VAR
  35. DBDesc : ARRAY[1..128] OF DBFieldDescriptor;
  36. ByteCnt : CARDINAL;
  37. ElmtCnt : CARDINAL;
  38. J : CARDINAL;
  39. Code : CARDINAL;
  40. Elmt : DataElmtRec;
  41. FileName : ARRAY[0..20] OF CHAR;
  42. DBFFile : DBFile;
  43. BEGIN
  44. ElmtCnt := ListLength(TheList);
  45. ByteCnt := (ElmtCnt+1) * TSIZE(DBFieldDescriptor) ;
  46. (*DosAlloc(DBDesc,ByteCnt);*)
  47. Fill(ADR(DBDesc),ByteCnt,0);
  48. FOR J := 1 TO ElmtCnt DO
  49. GetElmt(TheList,J,Elmt,Code);
  50. Copy(DBDesc[J].name , Elmt.Name);
  51. DBDesc[J].size := Elmt.Len;
  52. DBDesc[J].decplaces := Elmt.Dec;
  53. DBDesc[J].fldtype := Elmt.Type;
  54. END; (* end for j *)
  55. Copy(FileName , TableName);
  56. Append(FileName,'.DBF');
  57. InitDBF(FileName,DBFFile,0,FALSE,TRUE,FALSE,DefaultFixUp);
  58. J := BuildDBF(DBDesc,ElmtCnt,DBFFile);
  59. AppendBlank( DBFFile );
  60. CloseDBF(DBFFile);
  61. (* DosDealloc(DBDesc,ByteCnt); *)
  62. END MakeDataBaseFile;
  63. END MakeDBF.
  64.