/**/ interpret getclip( 'rx_tools_init' ) call initialize call setup_screen call setup_windows call setup_page1_fields call setup_page2_fields call read_db interpret getclip( 'rx_tools_event_handler' ) /***************** INITIALIZATIONS **************/ INITIALIZE: font_width = 8 font_height = 11 tab1 = 120 tab2 = 183 field_spacing = 16 field_names.schema = '' field_names.sort_key = '' default_state = 'CA' got_current_record_from_find = 0 return /*********************** MENUS *************************************/ ATTACH_MENU: parse arg a_window /* interpret first_menu" 'Debug'" interpret item" 'Show'" interpret sub" 'Schema', show_schema" interpret sub" 'Sort Schema', show_sort_schema" interpret sub" 'Number of fields', show_num_fields" interpret sub" 'Current record', show_current_record" interpret sub" 'Current key', show_current_key" interpret item" 'Load fields', scatter_current_record" */ interpret first_menu" 'Applicant'" interpret item" 'Save', save, 's'" interpret item" '_Find', find, 'f'" interpret item" 'Clear', clear_current_record, 'c'" call send a_window, _SET_MENU_STRIP, result return FOUNDX: return FOUND: position = send( list_window, _GET_POSITION_OF_SELECTED_ITEM ) call send list_window, _SET_CALLBACK, 'FOUNDX' db_key_table = send( db_key_table, _GOTO_ABS_POS, position ) db_data_table = send( db_data_table, _GOTO_ABS_POS, position ) current_record = send( db_data_table, _GET_STRING ) call scatter_current_record call send list_window, _CLEAR_LINES call send list_window, _DELETE number_of_open_windows = number_of_open_windows - 1 drop list_window got_current_record_from_find = 1 call send applicant_window, _ON_MENU, 'Save' call send applicant_window2, _ON_MENU, 'Save' call send applicant_window, _ON_MENU, 'Find' call send applicant_window2, _ON_MENU, 'Find' return FIND: call send applicant_window, _OFF_MENU, 'Save' call send applicant_window2, _OFF_MENU, 'Save' call send applicant_window, _OFF_MENU, 'Find' call send applicant_window2, _OFF_MENU, 'Find' list_window = _send( 'rx_list_viewer', _OPEN, 10, 10, 200, 280, "Pick a person", my_port, a_screen ) call send list_window, _ATTACH_LIST2, db_key_table, FOUND number_of_open_windows = number_of_open_windows + 1 return SAVE: call gather_current_record call gather_current_key select when symbol( 'db_key_table' ) = 'LIT' then do db_key_table = _send( 'str_dlink', _SET_STRING, current_key ) db_data_table = _send( 'str_dlink', _SET_STRING, current_record ) end when got_current_record_from_find , & current_key = send( db_key_table, _GET_STRING ) then do db_tbl_position = send( db_key_table, _GET_POSITION ) db_data_table = send( db_data_table, _GOTO_ABS_POS, db_tbl_position ) call send db_data_table, _SET_STRING, current_record end otherwise do cur_key_as_obj = _send( 'str_dlink', _SET_STRING, current_key ) db_key_table = send( db_key_table, _ADD_SORTED, cur_key_as_obj ) db_tbl_position = send( db_key_table, _GET_POSITION ) db_tbl_size = send( db_key_table, _TOTAL ) cur_rec_as_obj = _send( 'str_dlink', _SET_STRING, current_record ) if db_tbl_size = db_tbl_position then do db_data_table = send( db_data_table, _ADD_TAIL, cur_rec_as_obj ) end else do db_data_table = send( db_data_table, _GOTO_ABS_POS, db_tbl_position ) db_data_table = send( db_data_table, _INSERT, cur_rec_as_obj ) end end end call send applicant_window, _ON_MENU, 'Find' call send applicant_window2, _ON_MENU, 'Find' call write_db call clear_current_record return WRITE_DB: if ~ open( 'outstream_keys', "app_db.keys", 'W' ) then do call _send 'notify', _CREATE, from_window, 10, 1, ,"OPEN ERROR", "Couldn't open app_db.keys" || '0A 20'x return end if ~ open( 'outstream_data', "app_db.data", 'W' ) then do call _send 'notify', _CREATE, from_window, 10, 1, ,"OPEN ERROR", "Couldn't open app_db.data" || '0A 20'x call close 'outstream_keys' return end collection = db_key_table block = 'writeln( "outstream_keys", send( element, _GET_STRING ) )' interpret foreach call close 'outstream_keys' collection = db_data_table block = 'writeln( "outstream_data", send( element, _GET_STRING ) )' interpret foreach call close 'outstream_data' return READ_DB: if ~ exists( 'app_db.keys' ) | ~ exists( 'app_db.data' ) then return if ~ open( 'instream_keys', "app_db.keys", 'R' ) then do call _send 'notify', _CREATE, list_window, 10, 1, ,"OPEN ERROR", "Couldn't open app_db.keys for read." || '0A 20'x return end if ~ open( 'instream_data', "app_db.data", 'R' ) then do call _send 'notify', _CREATE, list_window, 10, 1, ,"OPEN ERROR", "Couldn't open app_db.data for read." || '0A 20'x call close 'instream_keys' return end ascii_text = readch( 'instream_keys', 60000 ) db_key_table = _send( 'str_dlink', _TOKENIZE, ascii_text, '0A'x ) ascii_text = readch( 'instream_data', 60000 ) db_data_table = _send( 'str_dlink', _TOKENIZE, ascii_text, '0A'x ) call close 'instream_keys' call close 'instream_data' call send applicant_window, _ON_MENU, 'Find' call send applicant_window2, _ON_MENU, 'Find' return SHOW_SCHEMA: say field_names.schema return SHOW_SORT_SCHEMA: say field_names.sort_key return SHOW_NUM_FIELDS: say words( field_names.schema ) return SHOW_CURRENT_KEY: call gather_current_key say current_key return GATHER_CURRENT_KEY: current_key = gather_field_values( field_names.sort_key ) current_key = trim( translate( current_key, " ", "|" ) ) return SHOW_CURRENT_RECORD: call gather_current_record say current_record return GATHER_CURRENT_RECORD: current_record = '' current_record = gather_field_values( field_names.schema ) return GATHER_FIELD_VALUES: procedure expose applicant_window applicant_window2 parse upper arg schema_list destination = '' do forever parse var schema_list next_name schema_list if next_name == '' then leave select when c2d( send( applicant_window, _FIND_GADGET, next_name ) ) ~= 0 then target_window = applicant_window when c2d( send( applicant_window2, _FIND_GADGET, next_name ) ) ~= 0 then target_window = applicant_window2 otherwise do say "Unknown field" next_name iterate end end next_gadget = send( target_window, _FIND_GADGET, next_name ) select when send( next_gadget, _IS_STRING_GADGET ) then do destination = destination || , send( next_gadget, _RETRIEVE_STRING_FROM_GADGET ) || "|" end when send( next_gadget, _IS_INTEGER_GADGET ) then do destination = destination || , send( next_gadget, _RETRIEVE_INTEGER_FROM_GADGET ) || "|" end when send( next_gadget, _IS_TOGGLE_GADGET ) then do if send( next_gadget, _IS_SELECTED ) ~= 0 then destination = destination || "ON" || "|" else destination = destination || "OFF" || "|" end otherwise do say "Unknown gadget type for" next_name "field." end end end return destination SCATTER_CURRENT_RECORD: procedure expose applicant_window applicant_window2 , field_names.schema current_record scratch_values = current_record scratch_names = field_names.schema do forever parse var scratch_names next_name scratch_names if next_name == '' then leave parse var scratch_values next_value "|" scratch_values select when c2d( send( applicant_window, _FIND_GADGET, next_name ) ) ~= 0 then target_window = applicant_window when c2d( send( applicant_window2, _FIND_GADGET, next_name ) ) ~= 0 then target_window = applicant_window2 otherwise do say "Unknown field" next_name iterate end end next_gadget = send( target_window, _FIND_GADGET, next_name ) select when send( next_gadget, _IS_STRING_GADGET ) then do call send next_gadget, _SET_DEFAULT_STRING, next_value, target_window end when send( next_gadget, _IS_INTEGER_GADGET ) then do call send next_gadget, _SET_DEFAULT_INTEGER, next_value, target_window end when send( next_gadget, _IS_TOGGLE_GADGET ) then do if next_value = "ON" then call send next_gadget, _SELECT, target_window else call send next_gadget, _DESELECT, target_window end otherwise do say "Unknown gadget type for" next_name "field." end end end if send( applicant_window, _IS_SELECTED, MARRIED ) ~= 0 then call send applicant_window, _ON_GADGET, SPOUSES_TAKE_HOME_PAY else call send applicant_window, _OFF_GADGET, SPOUSES_TAKE_HOME_PAY return CLEAR_CURRENT_RECORD: procedure expose applicant_window applicant_window2 , field_names.schema current_record scratch_names = field_names.schema do forever parse var scratch_names next_name scratch_names if next_name == '' then leave select when c2d( send( applicant_window, _FIND_GADGET, next_name ) ) ~= 0 then target_window = applicant_window when c2d( send( applicant_window2, _FIND_GADGET, next_name ) ) ~= 0 then target_window = applicant_window2 otherwise do say "Unknown field" next_name iterate end end next_gadget = send( target_window, _FIND_GADGET, next_name ) select when send( next_gadget, _IS_STRING_GADGET ) then do call send next_gadget, _SET_DEFAULT_STRING, "", target_window end when send( next_gadget, _IS_INTEGER_GADGET ) then do call send next_gadget, _SET_DEFAULT_INTEGER, 0, target_window end when send( next_gadget, _IS_TOGGLE_GADGET ) then do call send next_gadget, _DESELECT, target_window end otherwise do say "Unknown gadget type for" next_name "field." end end end call send applicant_window, _OFF_GADGET, SPOUSES_TAKE_HOME_PAY got_current_record_from_find = 0 return /************************* Setup screen and windows **********************/ SETUP_SCREEN: a_screen = _send( 'screen', _OPEN, 2, HIRES + LACE, 'Credit application' ) return SETUP_WINDOWS: applicant_window2 = _send( 'rx_console', _NEW ) call send applicant_window2, _CLEAR_WDW_FLAGS, WINDOWSIZING call send applicant_window2, _SET_SCREEN, a_screen call send applicant_window2, _SET_NOTIFY_PORT, my_port call send applicant_window2, _SET_IDCMP_FLAGS, ACTIVEWINDOW call send applicant_window2, _SET_IDCMP_RX_CALLBACKS, ACTIVEWINDOW applicant_window2 = send( applicant_window2, _OPEN, 0, font_height + 3, 660, 260, "Applicant Information Page 2" ) applicant_window = send( applicant_window2, _OPEN, 0, 2 * (font_height + 3 ), 690, 400, "Applicant Information Page 1" ) call attach_menu applicant_window call attach_menu applicant_window2 number_of_open_windows = 2 return /************************* Define Fields **********************************/ SETUP_PAGE1_FIELDS: x = tab1 y = 3 * font_height + 1 width = 18 * font_width + 4 x_cursor = 2 y_cursor = 3 call send applicant_window, _MAKE_CURSOR_INVISIBLE call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'NAME:' call send applicant_window, _ADD_STRING_GADGET, LAST_NAME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, LAST_NAME, 'Last' field_names.schema = field_names.schema LAST_NAME field_names.sort_key = field_names.sort_key LAST_NAME x = x + width + field_spacing width = 12 * font_width + 4 call send applicant_window, _ADD_STRING_GADGET, FIRST_NAME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, FIRST_NAME, 'First' field_names.schema = field_names.schema FIRST_NAME field_names.sort_key = field_names.sort_key FIRST_NAME x = x + width + field_spacing call send applicant_window, _ADD_STRING_GADGET, MIDDLE_NAME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, MIDDLE_NAME, 'Middle' field_names.schema = field_names.schema MIDDLE_NAME field_names.sort_key = field_names.sort_key MIDDLE_NAME x = x + width + field_spacing width = 8 * font_width + 4 call send applicant_window, _ADD_STRING_GADGET, GENERATION, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, GENERATION, 'Jr./Sr.' field_names.schema = field_names.schema GENERATION field_names.sort_key = field_names.sort_key GENERATION call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, 76, y_cursor call send applicant_window, _PUT_STRING, 'How long?' y_cursor = y_cursor + 3 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'ADDRESS:' x = tab1 y = y + font_height * 3 width = font_width * 25 call send applicant_window, _ADD_STRING_GADGET, HOME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, HOME, 'Home' field_names.schema = field_names.schema HOME x = x + width + field_spacing width = font_width * 18 + 6 call send applicant_window, _ADD_STRING_GADGET, CITY, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, CITY, 'City' field_names.schema = field_names.schema CITY x = x + width + field_spacing width = font_width * 3 + 6 call send applicant_window, _ADD_STRING_GADGET, STATE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, STATE, 'State' call send applicant_window, _SET_DEFAULT_STRING, STATE, default_state field_names.schema = field_names.schema STATE x = x + width + field_spacing width = font_width * 6 + 2 call send applicant_window, _ADD_INTEGER_GADGET, ZIP, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, ZIP, 'Zip' field_names.schema = field_names.schema ZIP x = x + width + field_spacing width = font_width * 3 + 2 call send applicant_window, _ADD_INTEGER_GADGET, YEARS, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, YEARS, 'YRS' field_names.schema = field_names.schema YEARS x = x + width + 6 width = font_width * 3 + 2 call send applicant_window, _ADD_INTEGER_GADGET, MONTHS, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, MONTHS, 'MOS' field_names.schema = field_names.schema MONTHS y_cursor = y_cursor + 3 x_cursor = 2 x = tab1 y = y + font_height * 3 + 1 width = font_width * 15 + 5 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'PHONES:' call send applicant_window, _ADD_STRING_GADGET, HOME_PHONE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, HOME_PHONE, 'Home' field_names.schema = field_names.schema HOME_PHONE x = x + width + field_spacing call send applicant_window, _ADD_STRING_GADGET, WORK_PHONE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, WORK_PHONE, 'Work' field_names.schema = field_names.schema WORK_PHONE y_cursor = y_cursor + 3 x_cursor = 2 x = tab1 y = y + font_height * 3 + 1 width = font_width * 20 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'BIRTH:' call send applicant_window, _ADD_STRING_GADGET, BIRTHPLACE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, BIRTHPLACE, 'Place' field_names.schema = field_names.schema BIRTHPLACE x = x + width + field_spacing call send applicant_window, _ADD_STRING_GADGET, BIRTH_DATE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, BIRTH_DATE, 'Date' field_names.schema = field_names.schema BIRTH_DATE x = tab1 y = y + font_height * 2 width = font_width * 2 + 4 call send applicant_window, _ADD_INTEGER_GADGET, DEPENDENTS, x, y, width call send applicant_window, _ADD_LABEL_TO_LEFT_OF_GADGET, DEPENDENTS, 'DEPENDENTS: ' field_names.schema = field_names.schema DEPENDENTS y_cursor = y_cursor + 4 x_cursor = 2 x = tab2 y = y + font_height * 2 + 1 width = font_width * 10 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'DRIVERS LICENSE:' call send applicant_window, _ADD_STRING_GADGET, DL_NUMBER, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, DL_NUMBER, 'No.' field_names.schema = field_names.schema DL_NUMBER x = x + width + field_spacing width = 4 * font_width - 2 call send applicant_window, _ADD_STRING_GADGET, DL_STATE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, DL_STATE, 'State' call send applicant_window, _SET_DEFAULT_STRING, DL_STATE, default_state field_names.schema = field_names.schema DL_STATE x = tab2 y = y + font_height * 2 - 1 width = font_width * 12 + 4 call send applicant_window, _ADD_STRING_GADGET, SOC_SEC_NO, x, y, width call send applicant_window, _ADD_LABEL_TO_LEFT_OF_GADGET, SOC_SEC_NO, 'SOCIAL SECURITY NO.:' field_names.schema = field_names.schema SOC_SEC_NO y_cursor = y_cursor + 4 x_cursor = 2 x = tab2 y = y + font_height * 2 - 2 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'MARITAL STATUS: ' call send applicant_window, _ADD_TOGGLE_GADGET, MARRIED, x, y, 'Married' field_names.schema = field_names.schema MARRIED x = x + length( 'Married' ) * font_width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, SINGLE, x, y, 'Single' field_names.schema = field_names.schema SINGLE x = x + length( 'Single' ) * font_width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, DIVORCED, x, y, 'Divorced' field_names.schema = field_names.schema DIVORCED x = x + length( 'Divorced' ) * font_width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, SEPERATED, x, y, 'Seperated' field_names.schema = field_names.schema SEPERATED y_cursor = y_cursor + 2 x_cursor = 2 x = tab2 y = y + 2 * font_height - 2 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'RESIDENCE STATUS:' call send applicant_window, _ADD_TOGGLE_GADGET, RENT, x, y, 'Rent' field_names.schema = field_names.schema RENT x = x + length( 'Rent' ) * font_width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, OWN, x, y, 'Own' field_names.schema = field_names.schema OWN x = x + length( 'Own' ) * font_width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, LIVE_WITH_PARENTS, x, y, 'Live with parents' field_names.schema = field_names.schema LIVE_WITH_PARENTS y_cursor = y_cursor + 3 x_cursor = 2 x = tab1 y = y + 4 * font_height - 2 width = font_width * 25 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'EMPLOYER:' call send applicant_window, _ADD_STRING_GADGET, EMPLOYER_NAME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYER_NAME, 'Name' field_names.schema = field_names.schema EMPLOYER_NAME x = x + width + field_spacing width = font_width * 30 call send applicant_window, _ADD_STRING_GADGET, EMPLOYEE_POSITION, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYEE_POSITION, 'Occupation/Position' field_names.schema = field_names.schema EMPLOYEE_POSITION call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, 74, y_cursor - 2 call send applicant_window, _PUT_STRING, 'How long?' x = x + width + field_spacing width = font_width * 3 + 2 call send applicant_window, _ADD_INTEGER_GADGET, EMPLOYEE_YEARS, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYEE_YEARS, 'YRS' field_names.schema = field_names.schema EMPLOYEE_YEARS x = x + width + 6 width = font_width * 3 + 2 call send applicant_window, _ADD_INTEGER_GADGET, EMPLOYEE_MONTHS, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYEE_MONTHS, 'MOS' field_names.schema = field_names.schema EMPLOYEE_MONTHS x = tab1 y = y + font_height * 3 - 3 width = font_width * 25 call send applicant_window, _ADD_STRING_GADGET, EMPLOYER_ADDRESS, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYER_ADDRESS, 'Address' field_names.schema = field_names.schema EMPLOYER_ADDRESS x = x + width + field_spacing width = font_width * 18 + 6 call send applicant_window, _ADD_STRING_GADGET, EMPLOYER_CITY, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYER_CITY, 'City' field_names.schema = field_names.schema EMPLOYER_CITY x = x + width + field_spacing width = font_width * 3 + 6 call send applicant_window, _ADD_STRING_GADGET, EMPLOYER_STATE, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYER_STATE, 'State' call send applicant_window, _SET_DEFAULT_STRING, EMPLOYER_STATE, default_state field_names.schema = field_names.schema EMPLOYER_STATE x = x + width + field_spacing width = font_width * 6 + 2 call send applicant_window, _ADD_INTEGER_GADGET, EMPLOYER_ZIP, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, EMPLOYER_ZIP, 'Zip' field_names.schema = field_names.schema EMPLOYER_ZIP y_cursor = y_cursor + 6 x_cursor = 2 x = tab2 y = y + 3 * font_height - 2 width = font_width * 12 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'MONTHLY INCOME:' call send applicant_window, _ADD_STRING_GADGET, APPLICANTS_TAKE_HOME_PAY, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, APPLICANTS_TAKE_HOME_PAY, 'Take home pay' field_names.schema = field_names.schema APPLICANTS_TAKE_HOME_PAY x = x + width + field_spacing call send applicant_window, _ADD_STRING_GADGET, _SPOUSES_TAKE_HOME_PAY, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, SPOUSES_TAKE_HOME_PAY, 'Spouses pay' field_names.schema = field_names.schema SPOUSES_TAKE_HOME_PAY x = x + width + field_spacing call send applicant_window, _ADD_STRING_GADGET, OTHER_MONTHLY_INCOME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, OTHER_MONTHLY_INCOME, 'Other income' field_names.schema = field_names.schema OTHER_MONTHLY_INCOME y_cursor = y_cursor + 3 x_cursor = 2 x = tab1 y = y + 3 * font_height - 2 width = font_width * 12 call send applicant_window, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window, _PUT_STRING, 'BANK OR S&L:' call send applicant_window, _ADD_STRING_GADGET, BANK_NAME, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, BANK_NAME, 'Name' field_names.schema = field_names.schema BANK_NAME x = x + width + field_spacing width = font_width * 25 call send applicant_window, _ADD_STRING_GADGET, BANK_ADDRESS, x, y, width call send applicant_window, _ADD_LABEL_TO_GADGET, BANK_ADDRESS, 'Branch/Address' field_names.schema = field_names.schema BANK_ADDRESS x = x + width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, CHECKING, x, y - 2, 'Checking' field_names.schema = field_names.schema CHECKING x = x + length( 'Checking' ) * font_width + field_spacing call send applicant_window, _ADD_TOGGLE_GADGET, SAVINGS, x, y - 2, 'Savings' field_names.schema = field_names.schema SAVINGS preferred_active_gadget = 'LAST_NAME' call send applicant_window, _ACTIVATE_GADGET, LAST_NAME return SETUP_PAGE2_FIELDS: x = tab1 y = 3 * font_height + 1 width = 18 * font_width + 4 x_cursor = 2 y_cursor = 3 call send applicant_window2, _MAKE_CURSOR_INVISIBLE call send applicant_window2, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window2, _PUT_STRING, 'PREV ADDR:' width = font_width * 25 call send applicant_window2, _ADD_STRING_GADGET, HOME2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, HOME2, 'Home' field_names.schema = field_names.schema HOME2 x = x + width + field_spacing width = font_width * 18 + 6 call send applicant_window2, _ADD_STRING_GADGET, CITY2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, CITY2, 'City' field_names.schema = field_names.schema CITY2 x = x + width + field_spacing width = font_width * 3 + 6 call send applicant_window2, _ADD_STRING_GADGET, STATE2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, STATE2, 'State' field_names.schema = field_names.schema STATE2 x = x + width + field_spacing width = font_width * 6 + 2 call send applicant_window2, _ADD_INTEGER_GADGET, ZIP2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, ZIP2, 'Zip' field_names.schema = field_names.schema ZIP2 y_cursor = y_cursor + 3 x_cursor = 2 x = tab1 y = y + 3 * font_height + 1 width = font_width * 25 call send applicant_window2, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window2, _PUT_STRING, 'PREV JOB:' call send applicant_window2, _ADD_STRING_GADGET, EMPLOYER_NAME2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, EMPLOYER_NAME2, 'Name of Employer' field_names.schema = field_names.schema EMPLOYER_NAME2 x = x + width + field_spacing width = font_width * 30 call send applicant_window2, _ADD_STRING_GADGET, EMPLOYEE_POSITION2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, EMPLOYEE_POSITION2, 'Occupation/Position' field_names.schema = field_names.schema EMPLOYEE_POSITION2 x = x + width + field_spacing width = font_width * 3 + 2 x = tab1 y = y + font_height * 3 - 3 width = font_width * 25 call send applicant_window2, _ADD_STRING_GADGET, EMPLOYER_ADDRESS2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, EMPLOYER_ADDRESS2, 'Address' field_names.schema = field_names.schema EMPLOYER_ADDRESS2 x = x + width + field_spacing width = font_width * 18 + 6 call send applicant_window2, _ADD_STRING_GADGET, EMPLOYER_CITY2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, EMPLOYER_CITY2, 'City' field_names.schema = field_names.schema EMPLOYER_CITY2 x = x + width + field_spacing width = font_width * 3 + 6 call send applicant_window2, _ADD_STRING_GADGET, EMPLOYER_STATE2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, EMPLOYER_STATE2, 'State' field_names.schema = field_names.schema EMPLOYER_STATE2 x = x + width + field_spacing width = font_width * 6 + 2 call send applicant_window2, _ADD_INTEGER_GADGET, EMPLOYER_ZIP2, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, EMPLOYER_ZIP2, 'Zip' field_names.schema = field_names.schema EMPLOYER_ZIP2 y_cursor = y_cursor + 6 x_cursor = 2 x = tab1 y = y + 3 * font_height + 3 width = font_width * 25 call send applicant_window2, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window2, _PUT_STRING, 'SPOUSE:' call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_LAST_NAME, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET,SPOUSES_LAST_NAME, 'Last name' field_names.schema = field_names.schema SPOUSES_LAST_NAME x = x + width + field_spacing width = 12 * font_width + 4 call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_FIRST_NAME, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_FIRST_NAME, 'First name' field_names.schema = field_names.schema SPOUSES_FIRST_NAME x = x + width + field_spacing call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_MIDDLE_NAME, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_MIDDLE_NAME, 'Middle name' field_names.schema = field_names.schema SPOUSES_MIDDLE_NAME x = tab1 y = y + 3 * font_height + 1 width = font_width * 25 call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_EMPLOYER, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_EMPLOYER, 'Name of Employer' field_names.schema = field_names.schema SPOUSES_EMPLOYER x = x + width + field_spacing width = font_width * 30 call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_POSITION, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_POSITION, 'Occupation/Position' field_names.schema = field_names.schema SPOUSES_POSITION x = tab1 y = y + 3 * font_height + 1 width = font_width * 15 + 5 call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_WORK_PHONE, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_WORK_PHONE, 'Work Phone' field_names.schema = field_names.schema SPOUSES_WORK_PHONE x = x + width + field_spacing width = font_width * 18 call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_SOC_SEC_NO, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_SOC_SEC_NO, 'Social Security No.' field_names.schema = field_names.schema SPOUSES_SOC_SEC_NO x = x + width + field_spacing width = font_width * 20 call send applicant_window2, _ADD_STRING_GADGET, SPOUSES_BIRTH_DATE, x, y, width call send applicant_window2, _ADD_LABEL_TO_GADGET, SPOUSES_BIRTH_DATE, 'Date of Birth' field_names.schema = field_names.schema SPOUSES_BIRTH_DATE y_cursor = y_cursor + 9 x_cursor = 2 x = tab1 y = y + 3 * font_height - 4 call send applicant_window2, _MOVE_CURSOR_TO_XY_POSITION, x_cursor, y_cursor call send applicant_window2, _PUT_STRING, 'INCOME FROM:' call send applicant_window2, _ADD_TOGGLE_GADGET, SECURITIES, x, y, 'Securities' field_names.schema = field_names.schema SECURITIES x = x + length( 'Securities' ) * font_width + field_spacing call send applicant_window2, _ADD_TOGGLE_GADGET, CHILD_SUPPORT, x, y, 'Child Support' field_names.schema = field_names.schema CHILD_SUPPORT x = x + length( 'Child support' ) * font_width + field_spacing call send applicant_window2, _ADD_TOGGLE_GADGET, ROYALTIES, x, y, 'Royalties' field_names.schema = field_names.schema ROYALTIES x = x + length( 'Royalties' ) * font_width + field_spacing call send applicant_window2, _ADD_TOGGLE_GADGET, RENTALS, x, y, 'Rentals' field_names.schema = field_names.schema RENTALS x = x + length( 'Rentals' ) * font_width + field_spacing call send applicant_window2, _ADD_TOGGLE_GADGET, ALIMONY, x, y, 'Alimony' field_names.schema = field_names.schema ALIMONY x = x + length( 'Alimony' ) * font_width + field_spacing call send applicant_window2, _ADD_TOGGLE_GADGET, INTEREST, x, y, 'Interest' field_names.schema = field_names.schema INTEREST x = x + length( 'Interest' ) * font_width + field_spacing return /****************************** REQUESTERS **********************************/ /* The next 2 subroutines are generic for ** all requesters */ OK: request_accepted = 1 return CANCEL: request_accepted = 0 return /* Requester for Previous Address */ POST_REQ_PREV_ADDR: a_requester = _send( 'rx_requester', _CREATE, BEGIN_REQ_PREV_ADDR, END_REQ_PREV_ADDR, from_window ) x = field_spacing y = 3 * font_height - 2 width = font_width * 25 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_HOME2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Home', a_gadget x = x + width + field_spacing width = font_width * 18 + 6 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_CITY2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'City', a_gadget x = x + width + field_spacing width = font_width * 3 + 6 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_STATE2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'State', a_gadget x = x + width + field_spacing width = font_width * 6 + 2 a_gadget = send( a_requester, _ADD_END_INTEGER_GADGET, REQ_ZIP2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Zip', a_gadget call send a_requester, _ADD_END_HIT_GADGET, OK, 10, -20, 'ok' call send a_requester, _ADD_END_HIT_GADGET, CANCEL, -60, -20, 'cancel' request_accepted = 1 call send a_requester, _POST_REQUESTER, 160, 2 * font_height - 2, 518, 82, ' Previous Address' return BEGIN_REQ_PREV_ADDR: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_HOME2 return END_REQ_PREV_ADDR: a_requester = send( from_window, _GET_REQUESTER ) if request_accepted then do a_gadget = send( a_requester, _FIND_GADGET, REQ_HOME2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, HOME2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_CITY2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, CITY2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_STATE2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, STATE2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_ZIP2 ) input_text = send( a_gadget, _RETRIEVE_INTEGER_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_INTEGER, ZIP2, input_text end call send a_requester, _FREE return /* Requester for Previous Employer */ POST_REQ_PREV_EMPLOYER: a_requester = _send( 'rx_requester', _CREATE, BEGIN_REQ_PREV_EMPLOYER, END_REQ_PREV_EMPLOYER, from_window ) x = field_spacing y = 3 * font_height - 2 width = font_width * 25 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_EMPLOYER_NAME2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Name of Employer', a_gadget x = x + width + field_spacing width = font_width * 30 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_EMPLOYEE_POSITION2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Occupation/Position', a_gadget x = x + width + field_spacing width = font_width * 3 + 2 x = field_spacing y = y + font_height * 3 - 3 width = font_width * 25 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_EMPLOYER_ADDRESS2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Address', a_gadget x = x + width + field_spacing width = font_width * 18 + 6 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_EMPLOYER_CITY2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'City', a_gadget x = x + width + field_spacing width = font_width * 3 + 6 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_EMPLOYER_STATE2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'State', a_gadget x = x + width + field_spacing width = font_width * 6 + 2 a_gadget = send( a_requester, _ADD_END_INTEGER_GADGET, REQ_EMPLOYER_ZIP2, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Zip', a_gadget call send a_requester, _ADD_END_HIT_GADGET, OK, 10, -20, 'ok' call send a_requester, _ADD_END_HIT_GADGET, CANCEL, -60, -20, 'cancel' request_accepted = 1 call send a_requester, _POST_REQUESTER, 145, 205, 518, 110, ' Previous Employer' return BEGIN_REQ_PREV_EMPLOYER: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYER_NAME2 return END_REQ_PREV_EMPLOYER: a_requester = send( from_window, _GET_REQUESTER ) if request_accepted then do a_gadget = send( a_requester, _FIND_GADGET, REQ_EMPLOYER_NAME2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, EMPLOYER_NAME2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_EMPLOYEE_POSITION2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, EMPLOYEE_POSITION2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_EMPLOYER_ADDRESS2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, EMPLOYER_ADDRESS2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_EMPLOYER_CITY2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, EMPLOYER_CITY2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_EMPLOYER_STATE2 ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, EMPLOYER_STATE2, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_EMPLOYER_ZIP2 ) input_text = send( a_gadget, _RETRIEVE_INTEGER_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_INTEGER, EMPLOYER_ZIP2, input_text end call send a_requester, _FREE return /* Requester for Spouse */ POST_REQ_SPOUSE: a_requester = _send( 'rx_requester', _CREATE, BEGIN_REQ_SPOUSE, END_REQ_SPOUSE, from_window ) x = field_spacing y = 3 * font_height - 2 width = font_width * 25 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_LAST_NAME, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Last name', a_gadget x = x + width + field_spacing width = 12 * font_width + 4 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_FIRST_NAME, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'First name', a_gadget x = x + width + field_spacing a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_MIDDLE_NAME, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Middle name', a_gadget x = field_spacing y = y + 3 * font_height + 1 width = font_width * 25 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_EMPLOYER, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Name of Employer', a_gadget x = x + width + field_spacing width = font_width * 30 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_POSITION, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Occupation/Position', a_gadget x = field_spacing y = y + 3 * font_height + 1 width = font_width * 15 + 5 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_WORK_PHONE, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Work Phone', a_gadget x = x + width + field_spacing width = font_width * 18 a_gadget = send( a_requester, _ADD_STRING_GADGET, REQ_SPOUSES_SOC_SEC_NO, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Social Security No.', a_gadget x = x + width + field_spacing width = font_width * 20 a_gadget = send( a_requester, _ADD_END_STRING_GADGET, REQ_SPOUSES_BIRTH_DATE, x, y, width ) call send a_requester, _ADD_LABEL_TO_GADGET, 'Date of Birth', a_gadget call send a_requester, _ADD_END_HIT_GADGET, OK, 10, -20, 'ok' call send a_requester, _ADD_END_HIT_GADGET, CANCEL, -60, -20, 'cancel' request_accepted = 1 call send a_requester, _POST_REQUESTER, 100, 185, 518, 160, ' Spousal Information' return BEGIN_REQ_SPOUSE: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_LAST_NAME return END_REQ_SPOUSE: a_requester = send( from_window, _GET_REQUESTER ) if request_accepted then do a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_LAST_NAME ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_LAST_NAME, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_FIRST_NAME ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_FIRST_NAME, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_MIDDLE_NAME ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_MIDDLE_NAME, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_EMPLOYER ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_EMPLOYER, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_POSITION ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_POSITION, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_WORK_PHONE ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_WORK_PHONE, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_SOC_SEC_NO ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_SOC_SEC_NO, input_text a_gadget = send( a_requester, _FIND_GADGET, REQ_SPOUSES_BIRTH_DATE ) input_text = send( a_gadget, _RETRIEVE_STRING_FROM_GADGET ) call send applicant_window2, _SET_DEFAULT_STRING, SPOUSES_BIRTH_DATE, input_text end call send a_requester, _FREE return /****************************** GADGET ACTION ROUTINES ***********************/ RENT: call send from_window, _SELECT_GADGET, 'RENT' call send from_window, _DESELECT_GADGET, 'OWN' call send from_window, _DESELECT_GADGET, 'LIVE_WITH_PARENTS' return OWN: call send from_window, _SELECT_GADGET, 'OWN' call send from_window, _DESELECT_GADGET, 'RENT' call send from_window, _DESELECT_GADGET, 'LIVE_WITH_PARENTS' return LIVE_WITH_PARENTS: call send from_window, _SELECT_GADGET, 'LIVE_WITH_PARENTS' call send from_window, _DESELECT_GADGET, 'RENT' call send from_window, _DESELECT_GADGET, 'OWN' return MARRIED: call send from_window, _DESELECT_GADGET, 'SINGLE' call send from_window, _DESELECT_GADGET, 'DIVORCED' call send from_window, _DESELECT_GADGET, 'SEPERATED' call send from_window, _SELECT_GADGET, 'MARRIED' call send from_window, _ON_GADGET, SPOUSES_TAKE_HOME_PAY if already_entered_married_info ~= 1 then do call POST_REQ_SPOUSE already_entered_married_info = 1 end return SINGLE: call send from_window, _DESELECT_GADGET, 'MARRIED' call send from_window, _DESELECT_GADGET, 'DIVORCED' call send from_window, _DESELECT_GADGET, 'SEPERATED' call send from_window, _SELECT_GADGET, 'SINGLE' call send from_window, _OFF_GADGET, SPOUSES_TAKE_HOME_PAY call send from_window, _SET_DEFAULT_STRING, SPOUSES_TAKE_HOME_PAY return DIVORCED: call send from_window, _DESELECT_GADGET, 'SINGLE' call send from_window, _DESELECT_GADGET, 'MARRIED' call send from_window, _DESELECT_GADGET, 'SEPERATED' call send from_window, _SELECT_GADGET, 'DIVORCED' call send from_window, _OFF_GADGET, SPOUSES_TAKE_HOME_PAY call send from_window, _SET_DEFAULT_STRING, SPOUSES_TAKE_HOME_PAY return SEPERATED: call send from_window, _DESELECT_GADGET, 'SINGLE' call send from_window, _DESELECT_GADGET, 'DIVORCED' call send from_window, _DESELECT_GADGET, 'MARRIED' call send from_window, _SELECT_GADGET, 'SEPERATED' call send from_window, _OFF_GADGET, SPOUSES_TAKE_HOME_PAY call send from_window, _SET_DEFAULT_STRING, SPOUSES_TAKE_HOME_PAY return CHECKING: SAVINGS: SECURITIES: CHILD_SUPPORT: ROYALTIES: RENTALS: ALIMONY: INTEREST: return LAST_NAME: call send from_window, _ACTIVATE_GADGET, FIRST_NAME return FIRST_NAME: call send from_window, _ACTIVATE_GADGET, MIDDLE_NAME return MIDDLE_NAME: call send from_window, _ACTIVATE_GADGET, GENERATION return GENERATION: call send from_window, _ACTIVATE_GADGET, HOME return HOME: call send from_window, _ACTIVATE_GADGET, CITY return CITY: call send from_window, _ACTIVATE_GADGET, STATE return STATE: call send from_window, _ACTIVATE_GADGET, ZIP return ZIP: call send from_window, _ACTIVATE_GADGET, YEARS return YEARS: call send from_window, _ACTIVATE_GADGET, MONTHS preferred_active_gadget = 'MONTHS' if send( from_window, _RETRIEVE_INTEGER_FROM_GADGET, 'YEARS' ) < 2 then call POST_REQ_PREV_ADDR return MONTHS: call send from_window, _ACTIVATE_GADGET, HOME_PHONE return HOME_PHONE: call send from_window, _ACTIVATE_GADGET, WORK_PHONE return WORK_PHONE: call send from_window, _ACTIVATE_GADGET, BIRTHPLACE return BIRTHPLACE: call send from_window, _ACTIVATE_GADGET, BIRTH_DATE return BIRTH_DATE: call send from_window, _ACTIVATE_GADGET, DEPENDENTS return DEPENDENTS: call send from_window, _ACTIVATE_GADGET, DL_NUMBER return DL_NUMBER: call send from_window, _ACTIVATE_GADGET, DL_STATE return DL_STATE: call send from_window, _ACTIVATE_GADGET, SOC_SEC_NO return VALID_SOC_SEC_NO: procedure expose preferred_active_gadget parse arg from_window, target_gadget ss_no = send( from_window, _RETRIEVE_STRING_FROM_GADGET, target_gadget ) parse var ss_no prefix '-' middle '-' suffix residual . select when length( prefix ) = 9 & datatype( prefix, 'N' ) & middle = '' then do formatted_ss_no = insert( '-', insert( '-', prefix, 3 ), 6 ) call send from_window, _SET_DEFAULT_STRING, target_gadget, formatted_ss_no return 1 end when length( prefix ) = 3 & length( middle ) = 2 & length(suffix) = 4 , & residual = '' & datatype( prefix || middle || suffix, 'N' ) then return 1 otherwise do preferred_active_gadget = target_gadget call _send 'notify', _CREATE, from_window, 10, 20, "Invalid Social Security Number", , "Social security number must be entered as either 9" '0A'x || , "consecutive digits, or 9 digits formated accordingly NNN-NN-NNNN." '0A20'x call send from_window, _ACTIVATE_GADGET, target_gadget return 0 end end return 0 SOC_SEC_NO: if valid_soc_sec_no( from_window, 'SOC_SEC_NO' ) then do call send from_window, _ACTIVATE_GADGET, EMPLOYER_NAME end return EMPLOYER_NAME: call send from_window, _ACTIVATE_GADGET, EMPLOYEE_POSITION return EMPLOYEE_POSITION: call send from_window, _ACTIVATE_GADGET, EMPLOYEE_YEARS return EMPLOYEE_YEARS: call send from_window, _ACTIVATE_GADGET, EMPLOYEE_MONTHS return EMPLOYEE_MONTHS: call send from_window, _ACTIVATE_GADGET, EMPLOYER_ADDRESS return EMPLOYER_ADDRESS: call send from_window, _ACTIVATE_GADGET, EMPLOYER_CITY return EMPLOYER_CITY: call send from_window, _ACTIVATE_GADGET, EMPLOYER_STATE return EMPLOYER_STATE: call send from_window, _ACTIVATE_GADGET, EMPLOYER_ZIP return EMPLOYER_ZIP: call send from_window, _ACTIVATE_GADGET, APPLICANTS_TAKE_HOME_PAY preferred_active_gadget = 'APPLICANTS_TAKE_HOME_PAY' if send( from_window, _RETRIEVE_INTEGER_FROM_GADGET, 'EMPLOYEE_YEARS' ) < 2 then call POST_REQ_PREV_EMPLOYER return APPLICANTS_TAKE_HOME_PAY: if send( from_window, _IS_SELECTED, MARRIED ) ~= 0 then call send from_window, _ACTIVATE_GADGET, SPOUSES_TAKE_HOME_PAY else call send from_window, _ACTIVATE_GADGET, OTHER_MONTHLY_INCOME return SPOUSES_TAKE_HOME_PAY: call send from_window, _ACTIVATE_GADGET, OTHER_MONTHLY_INCOME return OTHER_MONTHLY_INCOME: call send from_window, _ACTIVATE_GADGET, BANK_NAME return BANK_NAME: call send from_window, _ACTIVATE_GADGET, BANK_ADDRESS return BANK_ADDRESS: preferred_active_gadget = 'HOME2' call send applicant_window2, _WINDOW_TO_FRONT call send applicant_window2, _ACTIVATE_WINDOW return /************************** PAGE 2 ACTION ROUTINES ************************/ HOME2: call send from_window, _ACTIVATE_GADGET, CITY2 return CITY2: call send from_window, _ACTIVATE_GADGET, STATE2 return STATE2: call send from_window, _ACTIVATE_GADGET, ZIP2 return ZIP2: call send from_window, _ACTIVATE_GADGET, EMPLOYER_NAME2 return REQ_HOME2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_CITY2 return REQ_CITY2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_STATE2 return REQ_STATE2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_ZIP2 return REQ_ZIP2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_HOME2 return EMPLOYER_NAME2: call send from_window, _ACTIVATE_GADGET, EMPLOYEE_POSITION2 return EMPLOYEE_POSITION2: call send from_window, _ACTIVATE_GADGET, EMPLOYER_ADDRESS2 return EMPLOYER_ADDRESS2: call send from_window, _ACTIVATE_GADGET, EMPLOYER_CITY2 return EMPLOYER_CITY2: call send from_window, _ACTIVATE_GADGET, EMPLOYER_STATE2 return EMPLOYER_STATE2: call send from_window, _ACTIVATE_GADGET, EMPLOYER_ZIP2 return EMPLOYER_ZIP2: call send from_window, _ACTIVATE_GADGET, SPOUSES_LAST_NAME return REQ_EMPLOYER_NAME2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYEE_POSITION2 return REQ_EMPLOYEE_POSITION2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYER_ADDRESS2 return REQ_EMPLOYER_ADDRESS2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYER_CITY2 return REQ_EMPLOYER_CITY2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYER_STATE2 return REQ_EMPLOYER_STATE2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYER_ZIP2 return REQ_EMPLOYER_ZIP2: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_EMPLOYER_NAME2 return SPOUSES_LAST_NAME: call send from_window, _ACTIVATE_GADGET, SPOUSES_FIRST_NAME return SPOUSES_FIRST_NAME: call send from_window, _ACTIVATE_GADGET, SPOUSES_MIDDLE_NAME return SPOUSES_MIDDLE_NAME: call send from_window, _ACTIVATE_GADGET, SPOUSES_EMPLOYER return SPOUSES_EMPLOYER: call send from_window, _ACTIVATE_GADGET, SPOUSES_POSITION return SPOUSES_POSITION: call send from_window, _ACTIVATE_GADGET, SPOUSES_WORK_PHONE return SPOUSES_WORK_PHONE: call send from_window, _ACTIVATE_GADGET, SPOUSES_SOC_SEC_NO return SPOUSES_SOC_SEC_NO: call send from_window, _ACTIVATE_GADGET, SPOUSES_BIRTH_DATE return SPOUSES_BIRTH_DATE: preferred_active_gadget = 'LAST_NAME' call send applicant_window, _WINDOW_TO_FRONT call send applicant_window, _ACTIVATE_WINDOW return REQ_SPOUSES_LAST_NAME: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_FIRST_NAME return REQ_SPOUSES_FIRST_NAME: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_MIDDLE_NAME return REQ_SPOUSES_MIDDLE_NAME: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_EMPLOYER return REQ_SPOUSES_EMPLOYER: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_POSITION return REQ_SPOUSES_POSITION: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_WORK_PHONE return REQ_SPOUSES_WORK_PHONE: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_SOC_SEC_NO return REQ_SPOUSES_SOC_SEC_NO: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_BIRTH_DATE return REQ_SPOUSES_BIRTH_DATE: a_requester = send( from_window, _GET_REQUESTER ) call send a_requester, _ACTIVATE_GADGET, REQ_SPOUSES_LAST_NAME return ACTIVEWINDOW: select when from_window = applicant_window then do call send applicant_window, _ACTIVATE_GADGET, preferred_active_gadget end when from_window = applicant_window2 then do call send applicant_window2, _ACTIVATE_GADGET, preferred_active_gadget end otherwise nop end return CLOSEWINDOW: select when from_window = applicant_window | from_window = applicant_window2 then do call send applicant_window, _DELETE call send applicant_window2, _DELETE number_of_open_windows = number_of_open_windows - 2 if symbol( list_window ) = 'VAR' then do call send list_window, _CLEAR_LINES call send list_window, _DELETE drop list_window number_of_open_windows = number_of_open_windows - 1 end end when from_window = list_window then do call send applicant_window, _ON_MENU, 'Save' call send applicant_window2, _ON_MENU, 'Save' call send applicant_window, _ON_MENU, 'Find' call send applicant_window2, _ON_MENU, 'Find' call send list_window, _CLEAR_LINES call send list_window, _DELETE drop list_window number_of_open_windows = number_of_open_windows - 1 end otherwise return end if number_of_open_windows <= 0 then do if symbol( 'db_key_table' ) = 'VAR' then do call send db_key_table, _DELETE_LIST call send db_data_table, _DELETE_LIST end call send a_screen, _FREE call reply packet, 0 exit 0 end return