PROC Main() VIEW TableMain VIEW "Ath" VIEW "Ins" VIEW "Nam" VIEW "Src" VIEW "Abs" VIEW "Key" VIEW "Lookup" VIEW "Journals" VIEW "KeyLu" COEDITKEY IMAGERIGHTS READONLY MOVETO TableMain FORMKEY MOVETO "Ath" IMAGERIGHTS READONLY MOVETO "Ins" IMAGERIGHTS READONLY MOVETO "Nam" IMAGERIGHTS READONLY MOVETO "Src" IMAGERIGHTS READONLY MOVETO "Abs" IMAGERIGHTS READONLY MOVETO "Key" IMAGERIGHTS READONLY MOVETO TableMain IMAGERIGHTS READONLY TableName[1] = TableMain WHILE TRUE MOVETO TableName[itn] MOVETO FIELD FieldName[ifn] SWITCH CASE itn = 1 : CASE itn = 3 : OTHERWISE : IF NIMAGERECORDS() > 1 AND NIMAGERECORDS() <= NROWS() THEN END ELSE HOME ENDIF ENDSWITCH WAIT FIELD PROMPT TableMain + " table: " + STRVAL(NRECORDS(TableMain)) + " records" + FILL(" ", 40) + Status, STRVAL(CCOUNT(TableMain, "Flag")) + " collected records" + " F1 - Help F10 - Menu" UNTIL 77, 109, 85, 117, ;"M", "m", "U", "u", 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ;"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 8, ;"Backspace" -68, ;"F10" 26, -44, ;"Zoom", "ZoomNext" -81, -73, -71, -79, ;"PgDn", "PgUp", "Home", "End" -77, -75, -72, -80, ; "Right", "Left", "Up", "Down" 9, -15, 13, ;"Tab", "ReverseTab", "Enter" -59, -61, -62, 6 ; "F1", "F3", "F4", "FieldView" SWITCH CASE Retval = 77 OR Retval = 109 : ; "M", "m" MOVETO TableMain IF ISBLANK([Flag]) THEN IMAGERIGHTS [Flag] = 1 IMAGERIGHTS READONLY ENDIF CASE Retval = 85 OR Retval = 117 : ;"U", "u" MOVETO TableMain IMAGERIGHTS [Flag] = BLANKNUM() IMAGERIGHTS READONLY CASE (Retval >= 48 AND Retval <= 57) OR Retval = 8 : ;1-9 and Backspace MOVETO TableMain MOVETO FIELD "Flag" IMAGERIGHTS KEYPRESS Retval IMAGERIGHTS READONLY CASE Retval = -68 : MainMenu() ;"F10" CASE Retval = 26 : SearchOneRecord() ;"Zoom" CASE Retval = -44 : SearchAgain(TRUE) ;"ZoomNext" CASE Retval = -81 : ;"PgDn" MOVETO TableMain IF NOT ATLAST() THEN PGDN ENDIF CASE Retval = -73 : MOVETO TableMain PGUP ;"PgUp" CASE Retval = -71 : MOVETO TableMain HOME ;"Home" CASE Retval = -79 : MOVETO TableMain END ;"End" CASE Retval = -75 : PrevField() ;"Left" CASE Retval = -72 : PrevField() ;"Up" CASE Retval = -15 : PrevField() ;"ReverseTab" CASE Retval = -77 : NextField() ;"Right" CASE Retval = -80 : NextField() ;"Down" CASE Retval = 9 : NextField() ;"Tab" CASE Retval = 13 : NextField() ;"Enter" CASE Retval = -59 : ;"F1" IF itn = 7 THEN KeyLu(TRUE) ELSE HelpScreen() ENDIF CASE Retval = -61 : ReftoAnswer() ;"F3" CASE Retval = -62 : AnswertoRef() ;"F4" CASE Retval = 6 : FieldWhileView() ;"FieldView" ENDSWITCH ENDWHILE ENDPROC PROC NextField() ifn = ifn + 1 SWITCH CASE itn = 1 AND ifn = 4 : itn = itn + 1 CASE itn > 1 AND itn < 7 : itn = itn + 1 CASE itn = 7 : itn = 1 ifn = 1 ENDSWITCH ENDPROC PROC PrevField() ifn = ifn - 1 SWITCH CASE itn = 1 AND ifn = 0 : itn = 7 ifn = 9 CASE itn > 1 : itn = itn - 1 ENDSWITCH ENDPROC PROC MainMenu() PRIVATE Choice SHOWMENU "Database" : "Import, Export, MarkAll, UnmarkAll, Pack", "Search" : "Search by many fields", "Edit" : "Edit database", "Print" : "Print records", "ToParadox" : "End the current session and go to Paradox", "GotoDOS" : "Temporarily exit to DOS", "Quit" : "End the current session and go to DOS" TO Choice SWITCH CASE Choice = "Database" : DataBase() CASE Choice = "Search" : IF ISTABLE("Answer") AND NOT ISEMPTY("Answer") AND TableMain = "Ref" THEN SHOWMENU "Delete" : "Delete results of previous query", "Look" : "Look again previous results" TO Choice SWITCH CASE Choice = "Look" : DO_IT! FORMKEY TableMain = "Answer" IF TableName[1] = "Ref" THEN TableName[1] = "Answer" ENDIF MOVETO TableMain COEDITKEY FORMKEY CASE Choice = "Delete" : SearchDB() OTHERWISE : BEEP ENDSWITCH ELSE SearchDB() ENDIF CASE Choice = "Edit" : MainEdit() CASE Choice = "Print" : PrintRecord() CASE Choice = "GotoDOS" : DOS CASE Choice = "ToParadox" : DO_IT! QUIT CASE Choice = "Quit" : DO_IT! EXIT OTHERWISE : BEEP ENDSWITCH ENDPROC PROC ReftoAnswer() IF ISTABLE("Answer") AND NOT ISEMPTY("Answer") AND TableMain = "Ref" THEN DO_IT! FORMKEY TableMain = "Answer" IF TableName[1] = "Ref" THEN TableName[1] = "Answer" ENDIF MOVETO TableMain COEDITKEY FORMKEY ELSE BEEP ENDIF ENDPROC PROC AnswertoRef() IF TableMain = "Answer" THEN SHOWMENU "Update" : "Update records in Ref table", "Leave" : "Leave changes in Answer table" TO Choice SWITCH CASE Choice = "Update" : DO_IT! FORMKEY HOME TableMain = "Ref" IF TableName[1] = "Answer" THEN TableName[1] = "Ref" ENDIF MOVETO "Ref" COEDITKEY IMAGERIGHTS MOVETO [Index] MOVETO "Answer" SCAN COPYTOARRAY Ans MOVETO "Ref" LOCATE Ans[2] IF Retval THEN COPYFROMARRAY Ans ENDIF MOVETO "Answer" IF MOD(RECNO(),10) = 0 THEN MESSAGE "Processing record " + STRVAL(RECNO()) ENDIF ENDSCAN MOVETO TableMain DO_IT! HOME COEDITKEY IMAGERIGHTS READONLY FORMKEY CASE Choice = "Leave" : DO_IT! FORMKEY TableMain = "Ref" IF TableName[1] = "Answer" THEN TableName[1] = "Ref" ENDIF MOVETO TableMain COEDITKEY FORMKEY OTHERWISE : BEEP ENDSWITCH ELSE BEEP ENDIF ENDPROC PROC FieldWhileView() IF itn = 1 OR ATLAST() THEN MESSAGE "All is on the screen" SLEEP 1000 RETURN ENDIF END WHILE TRUE WAIT FIELD PROMPT FieldName[ifn] + " field: " + "row " + STRVAL(RECNO()) + " from " + STRVAL(NIMAGERECORDS()) + FILL(" ", 30) + Status, FILL(" ", 30) + "F1 - Help Enter - finish" UNTIL -81, -73, -71, -79, ;"PgDn", "PgUp", "Home", "End" -77, -75, -72, -80, ; "Right", "Left", "Up", "Down" 9, -15, 13, ;"Tab", "ReverseTab", "Enter" -59, 6 ; "F1", "FieldView" SWITCH CASE Retval = -73 : PGUP ;"PgUp" CASE Retval = -81 : ;"PgDn" IF NOT ATLAST() THEN PGDN ENDIF CASE Retval = -71 : HOME ;"Home" CASE Retval = -79 : END ;"End" CASE Retval = -75 : UP ;"Left" CASE Retval = -72 : UP ;"Up" CASE Retval = -14 : UP ;"ReverseTab" CASE Retval = -77 OR Retval = -80 OR Retval = 9 : ;"Right","Down","Tab" IF NOT ATLAST() THEN DOWN ENDIF CASE Retval = 13 : QUITLOOP ;"Enter" CASE Retval = -59 : ;"F1" IF itn = 7 THEN KeyLu(TRUE) MOVETO "Key" ELSE HelpScreen() ENDIF CASE Retval = 6 : ;"FieldView" ENDSWITCH ENDWHILE ENDPROC PROC KeyLu(Main) PRIVATE Choice, Key, i, Ir IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF UNLOCKRECORD FORMKEY MOVETO "KeyLu" IF Status = "Edit" OR NOT Main THEN IMAGERIGHTS ENDIF WHILE TRUE IF Status = "Edit" THEN PROMPT "Choose Keys and mark them (press spacebar while in Flag Field)", "F2 - do-it!, Del - clear all marks, Esc - cancel operation" ENDIF WAIT TABLE PROMPT "Choose Keys and mark them (press spacebar while in Flag Field)", "F2 - do-it!, Del - clear all marks, Esc - cancel operation" UNTIL -60, ;"F2" 27, ;"Esc" -83, ;"Del" -59 ;"F1" Choice = Retval MOVETO [Key] LOCATE "" IF Retval THEN DEL ENDIF SWITCH CASE Choice = -60 : ; F2 UNLOCKRECORD Choice = CCOUNT("Keylu", "Flag") IF Status = "Edit" OR NOT Main THEN IMAGERIGHTS READONLY ENDIF IF Choice > 0 THEN ARRAY Key[Choice] MOVETO [Key] i = 1 SCAN FOR NOT ISBLANK([Flag]) Key[i] = [] i = i + 1 ENDSCAN IF Main THEN MOVETO TableMain FORMKEY IF Status = "Edit" THEN MOVETO "Key" END FOR i FROM 1 TO Choice SWITCH CASE ISBLANK([]) : [] = Key[i] CASE LEN([]) + LEN(Key[i]) < 59 : [] = [] + " " + Key[i] OTHERWISE : Ir = [I] DOWN MOVETO [Keys] [I] = Ir + 1 [] = Key[i] ENDSWITCH ENDFOR ENDIF ELSE MOVETO "Lookup" FORMKEY FOR i FROM 1 TO Choice SWITCH CASE ISBLANK([]) : [] = Key[i] CASE LEN([]) + LEN(Key[i]) < 59 : [] = [] + " " + Key[i] OTHERWISE : ENDSWITCH ENDFOR ENDIF ELSE IF Main THEN MOVETO TableMain ELSE MOVETO "Lookup" ENDIF FORMKEY ENDIF RETURN CASE Choice = 27 : ; Esc IF Status = "Edit" OR NOT Main THEN IMAGERIGHTS READONLY ENDIF IF Main THEN MOVETO TableMain ELSE MOVETO "Lookup" ENDIF FORMKEY RETURN CASE Choice = -59 : ; F1 HelpScreen() CASE Choice = -83 : ; Del IF Status = "Edit" OR NOT Main THEN SHOWMENU "Clear" : "Clear all " + STRVAL(CCOUNT("Keylu", "Flag")) + " marks", "Delete" : "Delete the current record" TO Choice SWITCH CASE Choice = "Clear" : MOVETO [Flag] SCAN FOR NOT ISBLANK([]) [] = BLANKNUM() ENDSCAN CASE Choice = "Delete" : DEL ENDSWITCH ENDIF ENDSWITCH ENDWHILE ENDPROC