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.