| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- IMPLEMENTATION MODULE MakeDBF;
- (*
- * ModBase
- * Release 3.0
- * (c) Copyright 1986 - 1991 PMI
- Copyright 1988 - 1991 John McMonagle
- * P.O. Box 8402
- * Green Bay Wi 53308
- * All Rights Reserved
- * by Ed Ross
- *)
- FROM DataTypes IMPORT DataElmtRec,IndexElmtRec,TableName,FldList,IdxList,
- DBFName;
- FROM NumTypes IMPORT Real8;
- FROM StrConv IMPORT RealToStr,CardinalToStr;
- FROM GenLists IMPORT GenList,ListLength,GetElmt;
- FROM HandleIO IMPORT BlockRead,BlockWrite,FileExists,
- OpenFile,CloseHandle,CreateFile,FileLength;
- FROM StringIO IMPORT ErrorMessage;
- FROM PosUtils IMPORT Equal,Present,Pos;
- FROM Prompts IMPORT PromptStr,PromptYN;
- FROM Strings IMPORT Length,CompareStr;
- FROM StrEdit IMPORT CAPstr,CrunchBlanks,Append,SetLength,AssignStr,LowerStr;
- FROM LowLevel IMPORT Fill;
- FROM ModBase3 IMPORT DBFile, DBFieldDescriptor,AppendBlank,GetField,
- BuildDBF,CloseDBF,WriteDBRec,DefaultFixUp,InitDBF;
- FROM DBIndxes IMPORT DBIndex,InitIndex,CloseIndex,BuildIndex,AddRecord,
- InitCompIndex,BuildCompIndex;
- FROM SYSTEM IMPORT TSIZE,ADR,ADDRESS;
- IMPORT VWindows;
- FROM VStorage IMPORT DosAlloc,DosDealloc;
- FROM Str IMPORT Copy;
- PROCEDURE MakeDataBaseFile(TheList : GenList);
- VAR
- DBDesc : ARRAY[1..128] OF DBFieldDescriptor;
- ByteCnt : CARDINAL;
- ElmtCnt : CARDINAL;
- J : CARDINAL;
- Code : CARDINAL;
- Elmt : DataElmtRec;
- FileName : ARRAY[0..20] OF CHAR;
- DBFFile : DBFile;
- BEGIN
- ElmtCnt := ListLength(TheList);
- ByteCnt := (ElmtCnt+1) * TSIZE(DBFieldDescriptor) ;
- (*DosAlloc(DBDesc,ByteCnt);*)
- Fill(ADR(DBDesc),ByteCnt,0);
- FOR J := 1 TO ElmtCnt DO
- GetElmt(TheList,J,Elmt,Code);
- Copy(DBDesc[J].name , Elmt.Name);
- DBDesc[J].size := Elmt.Len;
- DBDesc[J].decplaces := Elmt.Dec;
- DBDesc[J].fldtype := Elmt.Type;
- END; (* end for j *)
- Copy(FileName , TableName);
- Append(FileName,'.DBF');
- InitDBF(FileName,DBFFile,0,FALSE,TRUE,FALSE,DefaultFixUp);
- J := BuildDBF(DBDesc,ElmtCnt,DBFFile);
- AppendBlank( DBFFile );
- CloseDBF(DBFFile);
- (* DosDealloc(DBDesc,ByteCnt); *)
- END MakeDataBaseFile;
- END MakeDBF.
|