1 OPTION TYPE=EXPLICIT ! ! BAS_SQLM_ZILL_MENU.BAS ! ! Main menu for Mega Zillionare demonstration ! application. ! %INCLUDE "MEGA_INC:FDVDEF.INC" ! FMS definitions %INCLUDE "LIB$ROUTINES" %FROM %LIBRARY !;;;;;;;;;; ! Constants !;;;;;;;;;; DECLARE BYTE CONSTANT elm_count% = 52% !;;;;;;;;;; ! Maps !;;;;;;;;;; MAP (FMS_MAP) LONG FMSSTATUS%, RMSSTATUS%, TCA%(3%), WORKSPACE%(3%) !;;;;;;;;;; ! Local Variables !;;;;;;;;;; DECLARE BYTE B_DONE% DECLARE WORD W_X% DECLARE LONG L_X%, L_ERR%, TERMINATOR% DECLARE STRING WORK_STR$, COMMAND_STR$ !;;;;;;;;;; ! Main Logic !;;;;;;;;;; 100 L_ERR% = 0% GOSUB A920_LOAD_FORM B_DONE% = 0% WHILE B_DONE% = 0% GOSUB A930_USER_INPUT NEXT ! end while b_done% loop CALL FDV$LCLOS ! close the form library CALL FDV$DWKSP( WORKSPACE%()) ! delete workspace CALL FDV$DTERM( TCA%()) ! terminate FMS GOTO PROGRAM_EXIT 920 !;;;;;;;;;; ! Subroutine to load and display the FMS form !;;;;;;;;;; A920_LOAD_FORM: CALL FDV$ATERM( TCA%(), 12, 2%) ! attach to default terminal CALL FDV$STAT( FMSSTATUS%, RMSSTATUS%) ! check status CALL FDV$AWKSP( WORKSPACE%(), 2000%) ! general workspace for FMS CALL FDV$STAT( FMSSTATUS%, RMSSTATUS%) ! check status CALL FDV$LOPEN( 'MEGA_ZILL', 1%) ! open form library and attach to channel 1 CALL FDV$STAT( FMSSTATUS%, RMSSTATUS%) ! check status !;;;;; ! We could call this function to set the keypad mode ! to application from terminal. This program will force ! it back to normal entry mode. Had we put a 1% as the parameter ! that would force it to application mode. For data entry we ! want the keypad to work like a keypad. !;;;;; ! CALL FDV$SPADA( 1%) CALL FDV$SSIGQ( 0%) ! Set signal mode to bell. CALL FDV$STAT( FMSSTATUS%, RMSSTATUS%) ! check status CALL FDV$SSRV( FMSSTATUS%, RMSSTATUS%) ! Set all future alls to return two status ! variables. so we don't have to call ! FDV$STAT each time. CALL FDV$CDISP( "ZILL_MENU") ! display our form RETURN 930 !;;;;;;;;;; ! Subroutine to process user input from the form. !;;;;;;;;;; A930_USER_INPUT: WORK_STR$ = " " ! pre-extend the dynamic string. CALL FDV$GETAL( WORK_STR$, TERMINATOR%) SELECT TERMINATOR% CASE FDV$K_PF_4 B_DONE% = 1% CASE FDV$K_KP_1 ! ! Create an empty file first ! CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_ZILL_IMPORT_SUB CASE FDV$K_KP_2 CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_ZILL_ENTRY_SUB CASE FDV$K_KP_3 CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_CREATE_STATS_SUB CASE FDV$K_KP_5 CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_ZILL_BROWSE_SUB CASE FDV$K_KP_7 CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_ZILL_DUE_REPORT_SUB CASE FDV$K_KP_8 CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_ZILL_MOST_REPORT_SUB CASE FDV$K_KP_9 CALL FDV$CLEAR( 1%, 23%) CALL BAS_SQLM_DUMP_DRAW_DATA_SUB END SELECT CALL FDV$SPADA( 1%) ! reset the keypad to application mode CALL FDV$CDISP( "ZILL_MENU") ! display our form RETURN 32767 ! End of module PROGRAM_EXIT: END