MODULE DBF2DES; (* * 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 *) (* given a dbase3 file - create a descriptor for it *) FROM ModBase3 IMPORT UpdateDBFile,WriteDBRec,DeleteRecord,ReadDBRec, AppendBlank,DBFile,InitDBF,OpenDBF,DefaultFixUp,FieldList,NumberOfFields, DBFieldPtr; FROM ScrnTypes IMPORT InitDisplayFrame,DisplayFrame,AFrameName,ImageElement; FROM DataTypes IMPORT DataElmtRec; FROM PosUtils IMPORT Present,Pos; FROM Prompts IMPORT PromptStr; FROM HandleIO IMPORT FileExists,BlockRead,BlockWrite,CreateFile,CloseHandle; IMPORT InitCompilerMods; FROM StrEdit IMPORT CrunchBlanks,DeleteRightJustified,CAPstr,Append,SetLength; FROM M2Strings IMPORT Length,Assign; FROM LowLevel IMPORT Fill; FROM EnvironUtils IMPORT ReadEnvironment,ParsedParam; FROM SYSTEM IMPORT ADR,SIZE; IMPORT VWindows; VAR FileName : ARRAY[0..30] OF CHAR; FileName2 : ARRAY[0..20] OF CHAR; Environ : ARRAY[0..30] OF CHAR; DF : DisplayFrame; Elmt : DataElmtRec; DBF : DBFile; J : CARDINAL; H : CARDINAL; FldList : DBFieldPtr; NbrFlds : CARDINAL; B : BOOLEAN; EM : CARDINAL; PROCEDURE OpenFile(); BEGIN B := ParsedParam(1,FileName); IF NOT B THEN InitDisplayFrame(DF,VWindows.CurrentWindow); Fill(ADR(FileName),SIZE(FileName),0); PromptStr('Enter name of Database File ',FileName); END; CrunchBlanks(FileName); IF Present('.',FileName) THEN SetLength(FileName,Pos('.',FileName)); END; Assign(FileName, FileName2); Append(FileName2,'.DBF'); InitDBF(FileName2,DBF,2,FALSE,FALSE,FALSE,DefaultFixUp); IF NOT OpenDBF(DBF) THEN HALT; END; CrunchBlanks(FileName); Append(FileName,'.DDF'); EM := CreateFile(H,FileName); END OpenFile; BEGIN OpenFile(); FldList := FieldList(DBF); NbrFlds := NumberOfFields(DBF); FOR J := 1 TO NbrFlds DO Assign( FldList^[J].name,Elmt.Name ); Elmt.Type := FldList^[J].fldtype; Elmt.Len := FldList^[J].size; Elmt.Dec := FldList^[J].decplaces; Elmt.Idx := ' '; Elmt.Desc := ''; EM := BlockWrite(H,ADR(Elmt),SIZE(Elmt)); END; EM := CloseHandle(H); END DBF2DES.