>>FILE NAME =@TABLENAME@.MOD MODULE @TABLENAME@; FROM ModBase3 IMPORT UpdateDBFile,WriteDBRec,DeleteRecord,ReadDBRec, AppendBlank; FROM Scrn2DBF IMPORT FrameToDBF, DBFToFrame; FROM PosUtils IMPORT Equal; FROM StrEdit IMPORT CrunchBlanks,DeleteRightJustified,CAPstr; FROM M2Strings IMPORT Length; FROM LowLevel IMPORT Fill; FROM StringIO IMPORT PrintMessage; FROM Drectory IMPORT SetDefaultDrive,ChDir,GetCurrentDir; FROM EnvironUtils IMPORT ReadEnvironment; FROM SmartScreen IMPORT ClearScreen; FROM VWindows IMPORT ClearPart, CurrentWindow, SetCursorHeight; FROM ScrnTypes IMPORT DisplayFrame,InitDisplayFrame,AFrameName; FROM FramePainter IMPORT ShowDisplayFrame; FROM InputManager IMPORT ControlFrame; FROM FrameManager IMPORT EraseFrame; FROM Prompts IMPORT Prompt,PromptStr; FROM SYSTEM IMPORT ADR,SIZE; FROM ControlUtils IMPORT ControlSeparately, LoadFrameList,Control; FROM DspFiles IMPORT OpenDisplayFile,ReadDisplayFrame; FROM HandleIO IMPORT FileExists; FROM Prompts IMPORT Prompt; FROM LowLevel IMPORT Fill; FROM GenLists IMPORT GenList, NewList,ListLength,GetElmt; FROM ScrnTypes IMPORT AFrameName, InitDisplayFrame,DisplayFile; FROM DBF@TABLENAME@ IMPORT @TABLENAME@DBF, Open@TABLENAME@DBF, Close@TABLENAME@DBF, >>FOR EACH IDX<< Find@TABLENAME@By@IDX@, >>END IDX<< Next@TABLENAME@,Prev@TABLENAME@,First@TABLENAME@,Last@TABLENAME@; IMPORT InitCompilerMods; VAR Status : INTEGER; Environ : ARRAY [0..60] OF CHAR; J : CARDINAL; TopMenu : GenList; FirstTime: BOOLEAN; NextFrame,EndingFrame : AFrameName; SelChar : CHAR; NoData : BOOLEAN; (* true when no data is on the screen *) @TABLENAME@DF : DisplayFrame; DSPFile : DisplayFile; PullDnMenu : GenList; PROCEDURE FileMenu(SelChar: CHAR); VAR B : BOOLEAN; Str : ARRAY [0..80] OF CHAR; BEGIN CASE SelChar OF 'A' : ReadDisplayFrame(DSPFile,@TABLENAME@DF,'@TABLENAME@'); (*Clear out any of the fields *) ShowDisplayFrame(@TABLENAME@DF,0,0,0,0); Control(@TABLENAME@DF); (* alow user input *) AppendBlank(@TABLENAME@DBF); B := FrameToDBF(@TABLENAME@DBF,@TABLENAME@DF); (* do something if couldn't add*) WriteDBRec(@TABLENAME@DBF); |'F' : First@TABLENAME@(); DBFToFrame(@TABLENAME@DBF,@TABLENAME@DF); ShowDisplayFrame(@TABLENAME@DF,0,0,0,0); |'L' : Last@TABLENAME@(); DBFToFrame(@TABLENAME@DBF,@TABLENAME@DF); ShowDisplayFrame(@TABLENAME@DF,0,0,0,0); |'N' : IF Next@TABLENAME@() THEN DBFToFrame(@TABLENAME@DBF,@TABLENAME@DF); ShowDisplayFrame(@TABLENAME@DF,0,0,0,0); END; |'P' : IF Prev@TABLENAME@() THEN DBFToFrame(@TABLENAME@DBF,@TABLENAME@DF); ShowDisplayFrame(@TABLENAME@DF,0,0,0,0); END; >>FOR EACH IDX<< |'@IDXCHAR@' : (* The first unused letter in the index name or 'Q' *) Fill(ADR(Str),SIZE(Str),0); >>IF INDEX = C PromptStr('Enter @TABLENAME@ @IDX@ ',Str); >>END IF<< >>IF INDEX = N PromptNum('Enter @TABLENAME@ @IDX@, Str); >>END IF<< CrunchBlanks(Str); IF NOT Find@TABLENAME@By@IDX@(Str) THEN Prompt('@TABLENAME@ Not Found'); ELSE DBFToFrame(@TABLENAME@DBF,@TABLENAME@DF); ShowDisplayFrame(@TABLENAME@DF,0,0,0,0); END; >>END IDX<< END; (* end of case *) END FileMenu; PROCEDURE EditMenu(SelChar : CHAR); VAR B:BOOLEAN; BEGIN CASE SelChar OF 'U' : Control(@TABLENAME@DF); B:=FrameToDBF(@TABLENAME@DBF,@TABLENAME@DF); WriteDBRec(@TABLENAME@DBF); |'D' : DeleteRecord(@TABLENAME@DBF); NoData := TRUE; END; END EditMenu; BEGIN (* if there is an environment variable set to m2test=path *) (* the program will set the default drive and path *) (* this is needed because running under the debuggers the *) (* debugger will start the program with the default drive *) (* and path = c:\ - aint nothing gona work if looking for *) (* files there *) ReadEnvironment('M2TEST', Environ); CrunchBlanks(Environ); IF Length(Environ) > 0 THEN CAPstr(Environ); IF Environ[1] = ':' THEN SetDefaultDrive(Environ[0]); DeleteRightJustified(Environ,0,2); END; IF 0#ChDir(Environ) THEN (* this is bullet proof code here *) END; END; PrintMessage(GetCurrentDir('z',Environ)); (* check *) IF NOT OpenDisplayFile(DSPFile,'@TABLENAME@.DSP') THEN Prompt('Could not open @TABLENAME@.dsp file'); HALT; END; ClearScreen(); InitDisplayFrame(@TABLENAME@DF,CurrentWindow); NewList(PullDnMenu); LoadFrameList(DSPFile,'TopMenu',PullDnMenu); NoData := TRUE; Open@TABLENAME@DBF(TRUE); ReadDisplayFrame(DSPFile,@TABLENAME@DF,'@TABLENAME@'); REPEAT NextFrame := 'TopMenu'; ControlSeparately(PullDnMenu,NextFrame,SelChar,EndingFrame); IF Equal(EndingFrame,'FileMenu') THEN FileMenu(SelChar); ELSIF Equal(EndingFrame,'EditMenu') THEN EditMenu(SelChar); END; UNTIL SelChar='X'; (* Assumes 'X' is only used to exit *) Close@TABLENAME@DBF(); ClearScreen(); END @TABLENAME@.