*************************************************************************** *** Program:.... SYS_RLDX.PRG: System Rolodex -=- People & Organizations *** Updated:.... March 23, 1991 *** Programmer:. R. Paulk *** Notice:..... Copyright (c) Ingenuity, Inc., 1991 **************************************************************************** * Initialize Variables cur_prg = "SYS_RLDX" STORE .T. TO first_pass, scrn_start, scrn_show STORE .F. TO nav_lkup, nav_offset, scrn_editrec, scrn_newrec, sort_prime, tag_seek SETCOLOR(sys_stnd) @ 01, 00 CLEAR TO 24, 79 * Build Box For Scrolling Through Data Base BOX_EXPL(01, 00, 10, 79, "ΙΝ»ΊΌΝΘΊ ", 01, 00, .T.) @ 03, 00 SAY "Η" + REPLICATE("Δ", 78) + "Ά" * Define Header Message For Scrolling Window BOX_MSGS(01, 00, 10, 79, "΅ " + M->sys_acrnym + " System Rolodex" + " Ζ", 00, sys_stnd) BOX_MSGS(01, 00, 10, 79, M->sys_acrnym + " System Rolodex", 00, sys_unsl) * Say Column Headers For Scrolling Window SETCOLOR(sys_msgs) @ 02, 02 SAY "Name, Full Sal/Rank Pers Code Telephone Tag" * Build Rolodex Details Box SETCOLOR(sys_stnd) BOX_EXPL(11, 00, 22, 79, "ΙΝ»ΊΌΝΘΊ ", 10, 00, .T.) @ 20, 00 SAY "Η" + REPLICATE("Δ", 78) + "Ά" * Define Header Message For Details Box BOX_MSGS(11, 00, 22, 79, "Ν΅ Details ΖΝ", 00, sys_stnd) BOX_MSGS(11, 00, 22, 79, "Details", 00, sys_unsl) * Define Header Message For Text/Memo Edit Box BOX_MSGS(20, 00, 22, 79, "Δ΄ Comments/Notes ΓΔ", 00, sys_stnd) BOX_MSGS(20, 00, 22, 79, "Comments/Notes" , 00, sys_unsl) * Say Static Text Inside Details Box SETCOLOR(sys_stnd) @ 12, 02 SAY "Name, Last: First: MI: Jr/Sr:" @ 13, 02 SAY "Salutation/Rank: Personnel Code:" @ 14, 02 SAY "Title:" @ 15, 02 SAY "Telephone: Ext: Building: Room:" @ 16, 02 SAY "Org: Suite/PO:" @ 17, 02 SAY "Dept: Street:" @ 18, 02 SAY "Div: City:" @ 19, 02 SAY "Branch: State: Zip Code:" SETCOLOR(sys_color) SET CURSOR OFF PLS_WAIT(.F.,.T.) && Calls "Please Wait, Loading Data Bases" Box/Message SELECT sys_dbfs SET ORDER TO 02 SEEK "SYS_PERS" scrn_selrec = IIF(FOUND(), sys_dbfs->last_rec, 1) nav_sellkup = scrn_selrec SYS_DBMS("sys_pers", 00) && Natural Order -- All Indexes Engaged PLS_WAIT(.F.,.F.) && Clears "Please Wait, Loading Data Bases" Box/Message ************************************************** DO WHILE scrn_show && Primary Screen Loop SELECT sys_pers IF scrn_start scrn_start = .F. nav_reset = .T. STORE 0 TO nav_drow, nav_lo_row STORE 1 TO nav_disp, nav_toplmt nav_botlmt = RECCOUNT() nav_t_row = 04 nav_b_row = 09 ENDIF IF (nav_lkup .AND. EMPTY(DBFILTER()) .AND. INDEXORD() = 0) .OR. nav_offset DO sys_utl1 WITH "Off-Set Recs" ENDIF IF fast_locate DO sys_utl1 WITH "Fast Locate", nav_botlmt ENDIF IF nav_reset DO sys_utl1 WITH "Reset Display" ENDIF * Check Flag nav_disp, Make Sure We Really Want To Display IF nav_disp = 1 IF nav_toplkup <> nav_spdup * Position Record Pointer To The First Record To Be Displayed IF nav_lkup SELECT sys_offs GOTO nav_toplkup nav_currec = sys_offs->lkup_recno nav_toprec = RECNO() ELSE SELECT sys_pers GOTO nav_toplkup STORE RECNO() TO nav_currec, nav_toprec ENDIF nav_drow = 0 SETCOLOR(sys_color) @ nav_t_row, 1, nav_b_row, 78 BOX " " DO WHILE nav_drow < ((nav_b_row - nav_t_row) + 1) .AND. !EOF() SELECT sys_pers GOTO nav_currec SETCOLOR(sys_hdhi) @ 24, 71 SAY STR(RECNO(),5) PICTURE "99999" * Assign System Reference No. In Case Records Were Created By External Means IF EMPTY(sys_pers->pers_syno) SEL_DBF("sys_info") REPLACE sys_info->s__log WITH sys_info->s__log + 1,; sys_pers->pers_syno WITH ALLTRIM(STR(sys_info->s__log, 7, 0)) USE SELECT sys_pers ENDIF * Concantenate Last & First Names + M/I To Create Full Name IF EMPTY(sys_pers->name_full) .OR. !ISALPHA(sys_pers->name_full) REPLACE sys_pers->name_full WITH TRIM(sys_pers->name_last) +; ", " + TRIM(sys_pers->name_first) + IIF(ISALPHA(sys_pers->name_mi), " " +; UPPER(TRIM(sys_pers->name_mi)) + ".","") + IIF(ISALPHA(sys_pers->jr_sr), " " +; UPPER(TRIM(sys_pers->jr_sr)),"") ENDIF SETCOLOR(sys_unsl) @ nav_t_row + nav_drow, 02 SAY sys_pers->name_full PICTURE "XXXXXXXXXXXXXXXXXXXXXXXX" @ nav_t_row + nav_drow, 30 SAY sys_pers->salutation PICTURE "XXXXXXXXXX" @ nav_t_row + nav_drow, 43 SAY sys_pers->pers_code PICTURE "!!!!!!!!!!!!!!!" @ nav_t_row + nav_drow, 61 SAY sys_pers->phon_voice PICTURE "(999)999-9999" SETCOLOR(sys_warn) @ nav_t_row + nav_drow, 76 SAY IIF(EMPTY(sys_pers->tag), " ", CHR(251)) nav_drow = nav_drow + 1 IF nav_lkup SELECT sys_offs nav_botrec = RECNO() SKIP nav_currec = sys_offs->lkup_recno ELSE nav_botrec = RECNO() nav_currec = nav_currec + 1 ENDIF ENDDO sf_selrec = .F. nav_spdup = nav_toplkup nav_lo_row = 0 ENDIF ENDIF SELECT sys_pers * Put Navigation Msg At Bottom Of Scrolling Window DO sys_utl1 WITH "Nav Message", 01, 00, 10, 79 GOTO nav_currec IF nav_lo_row > 0 SETCOLOR(sys_unsl) @ nav_lo_row, 02 SAY lname_full PICTURE "XXXXXXXXXXXXXXXXXXXXXXXX" @ nav_lo_row, 30 SAY lsalutation PICTURE "XXXXXXXXXX" @ nav_lo_row, 43 SAY lpers_code PICTURE "!!!!!!!!!!!!!!!" @ nav_lo_row, 61 SAY lphon_voice PICTURE "(999)999-9999" SETCOLOR(sys_warn) @ nav_lo_row, 76 SAY ltagged ENDIF IF nav_botlmt > 0 SETCOLOR(sys_enhc) @ nav_hi_row, 02 SAY sys_pers->name_full PICTURE "XXXXXXXXXXXXXXXXXXXXXXXX" @ nav_hi_row, 30 SAY sys_pers->salutation PICTURE "XXXXXXXXXX" @ nav_hi_row, 43 SAY sys_pers->pers_code PICTURE "!!!!!!!!!!!!!!!" @ nav_hi_row, 61 SAY sys_pers->phon_voice PICTURE "(999)999-9999" SETCOLOR(sys_warn) @ nav_hi_row, 76 SAY IIF(EMPTY(sys_pers->tag), " ", CHR(251)) IF str_sch .AND. TYPE("_ss_kwaray") = "A" say_str = sys_pers->name_full + SPACE(4) + sys_pers->salutation +; SPACE(3) + sys_pers->pers_code + SPACE(3) + sys_pers->phon_voice FOR n = 1 TO LEN(_ss_kwaray) IF CHR(251) $ _ss_kwaray[n] _ss_kwaray[n] = UPPER(TRIM(SUBSTR(_ss_kwaray[n], 2))) IF _ss_kwaray[n] $ UPPER(say_str) _ss_strvar = SUBSTR(say_str, AT(_ss_kwaray[n], UPPER(say_str)),; LEN(_ss_kwaray[n])) @ nav_hi_row, 01 + AT(_ss_kwaray[n], UPPER(say_str)) SAY _ss_strvar ENDIF ENDIF NEXT ENDIF nav_lo_row = nav_hi_row lname_full = sys_pers->name_full lsalutation = sys_pers->salutation lpers_code = sys_pers->pers_code lphon_voice = sys_pers->phon_voice ltagged = IIF(EMPTY(sys_pers->tag), " ", CHR(251)) IF !fast_locate .AND. tag_seek CTR_STR(23, " ΔΩ Enter To Seek Next Tagged Record! -- Any Other Key For Normal Operations! ", sys_msgs) ELSEIF !fast_locate .AND. DELETED() CTR_STR(23, " Record Flagged For Deletion! -- PACK Data Base To Permanently Abandon. ", sys_warn) ELSEIF !fast_locate CTR_STR(23, " ΔΩ Enter To Review/Edit Personnel Details" +; IIF(!str_sch .AND. TYPE("_ss_aray") = "A",; " -- Alt-S To Resume Search", ""), sys_msgs) ENDIF ENDIF IF !str_schtall * Rolodex Details SELECT sys_pers GOTO nav_currec SETCOLOR(sys_text) MEMOEDIT(sys_pers->comments,21,06,21,71,.F.,.F.,65) SET CURSOR ON SETCOLOR(sys_color) @ 12, 14 GET sys_pers->name_last PICTURE "!XXXXXXXXXXXXX" @ 12, 38 GET sys_pers->name_first PICTURE "!XXXXXXXXXX" @ 12, 57 GET sys_pers->name_mi PICTURE "!" @ 12, 72 GET sys_pers->jr_sr PICTURE "!XXXX" @ 13, 19 GET sys_pers->salutation PICTURE "XXXXXXXXXX" @ 13, 62 GET sys_pers->pers_code PICTURE "!!!!!!!!!!!!!!!" @ 14, 09 GET sys_pers->title PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" @ 15, 13 GET sys_pers->phon_voice PICTURE "(999)999-9999" @ 15, 32 GET sys_pers->phon_ext PICTURE "999" @ 15, 48 GET sys_pers->building PICTURE "@S16" @ 15, 72 GET sys_pers->room PICTURE "XXXXXX" @ 16, 10 GET sys_pers->org_name PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" @ 17, 10 GET sys_pers->department PICTURE "@S30" @ 18, 10 GET sys_pers->division PICTURE "@S30" @ 19, 10 GET sys_pers->branch PICTURE "@S30" @ 16, 52 GET sys_pers->address1 PICTURE "@S26" @ 17, 52 GET sys_pers->address2 PICTURE "@S26" @ 18, 50 GET sys_pers->city PICTURE "XXXXXXXXXXXXXXXXXXXX" @ 19, 52 GET sys_pers->state_abrv PICTURE "!!" @ 19, 68 GET sys_pers->zip_code PICTURE "99999-999" IF scrn_editrec scrn_editrec = .F. mhelptopic = "Edit Rolodex Information" READ sort_prime = IIF(UPDATED(), .T., sort_prime) * Concantenate Last & First Names + M/I To Create Full Name M->name_full = TRIM(sys_pers->name_last) +; ", " + TRIM(sys_pers->name_first) + IIF(ISALPHA(sys_pers->name_mi), " " +; UPPER(TRIM(sys_pers->name_mi)) + ".","") + IIF(ISALPHA(sys_pers->jr_sr), " " +; UPPER(TRIM(sys_pers->jr_sr)),"") IF TRIM(sys_pers->name_full) <> M->name_full REPLACE sys_pers->name_full WITH M->name_full SELECT sys_pers ntx_ord = INDEXORD() SET ORDER TO 01 && UPPER(name_full) name_unique = .F. DO WHILE !name_unique SKIP - 1 name_unique = IIF(UPPER(TRIM(sys_pers->name_full)) = M->name_full, .F., .T.) SKIP + 2 name_unique = IIF(UPPER(TRIM(sys_pers->name_full)) = M->name_full, .F., name_unique) SKIP - 1 IF !name_unique M->mhelptopic = "Personnel Names Must Be Unique" BEEP("error") CTR_STR(23, "Sorry! " + TRIM(sys_pers->name_full) +; " Is Already On File -=- Names Must Be Unique -=- Please Correct", sys_msgs) SETCOLOR(sys_color) @ 12, 14 GET sys_pers->name_last PICTURE "!XXXXXXXXXXXXX" @ 12, 38 GET sys_pers->name_first PICTURE "!XXXXXXXXXX" @ 12, 57 GET sys_pers->name_mi PICTURE "!" @ 12, 72 GET sys_pers->jr_sr PICTURE "!XXXX" READ M->name_full = TRIM(sys_pers->name_last) +; ", " + TRIM(sys_pers->name_first) + IIF(ISALPHA(sys_pers->name_mi), " " +; UPPER(TRIM(sys_pers->name_mi)) + ".","") + IIF(ISALPHA(sys_pers->jr_sr), " " +; UPPER(TRIM(sys_pers->jr_sr)),"") ENDIF ENDDO SET ORDER TO (ntx_ord) STORE .T. TO sf_selrec, sort_prime ENDIF SETCOLOR(sys_enhc) @ nav_hi_row, 02 SAY sys_pers->name_full PICTURE "XXXXXXXXXXXXXXXXXXXXXXXX" @ nav_hi_row, 30 SAY sys_pers->salutation PICTURE "XXXXXXXXXX" @ nav_hi_row, 43 SAY sys_pers->pers_code PICTURE "!!!!!!!!!!!!!!!" @ nav_hi_row, 61 SAY sys_pers->phon_voice PICTURE "(999)999-9999" SELECT sys_pers REPLACE sys_pers->comments WITH CC_MEUTIL(TRIM(sys_pers->comments),; 20,06,21,78,.T.,TRIM(sys_pers->name_full)+" -=- Comments/Notes",65,5,1,0,0,0,.T.) ELSE CLEAR GETS ENDIF SET CURSOR OFF SETCOLOR(sys_unsl) SELECT sys_pers IF set_order .OR. sort_dbf .OR. pack_dbf CTR_STR(24, " * * * * W O R K I N G * * * * ", sys_wrkng) sort_prime = IIF(sort_dbf .OR. pack_dbf, .F., sort_prime) ntx_ord = IIF(!set_order, INDEXORD(), 99) SYS_DBMS("sys_pers", 00) && Natural Order -- All Indexes Engaged IF ntx_ord <> 99 SET ORDER TO (ntx_ord) ENDIF ENDIF IF fltr_selct DO sys_fset STORE .T. TO sf_selrec, nav_offset ENDIF cur_prg = "SYS_RLDX" mhelptopic = "System Rolodex" ENDIF SELECT sys_pers IF !fast_locate .AND. !str_sch .AND. !reset_sys .AND. !sf_selrec .AND.; !scrn_editrec nav_key = _INKEY("SYS_RLDX", PROCLINE()) IF nav_key = 29 && ^Home -=- Go To Top Of Data Base GOTO TOP STORE .T. TO sf_selrec ELSEIF nav_key = 23 && ^End -=- Go To Bottom Of Data Base GOTO BOTTOM STORE .T. TO sf_selrec ENDIF * If Seeking Tags & Enter Go To Next Tag tag_seek = IIF(nav_key = 13, tag_seek, .F.) nav_key = IIF(nav_key = 13 .AND. tag_seek, 0, nav_key) * If KeyWord/String Search Paused IF !str_sch .AND. nav_key = 287 .AND. TYPE("_ss_aray") = "A" STORE .T. TO str_sch, sf_selrec SELECT sys_pers GOTO _ss_prec - 1 ENDIF IF nav_key = 22 && Ins - Pulls Down Menu DO app_udfs WITH nav_key ENDIF scrn_newrec = IIF(nav_key = 286 .OR. new_rec, .T., scrn_newrec) * Alt-A To Add Record or Add Record From PD Menu new_rec = .F. scrn_editrec = IIF(nav_key = 274 .OR. nav_key = 13 .OR. edit_rec,; .T., scrn_editrec) * Alt-E/Enter To Edit Record or Edit Record From PD Menu edit_rec = .F. SELECT sys_pers IF nav_key = 7 .OR. del_rec .OR. recall_rec * [Del] - Delete Record or Delete/Recall From PD Menu mhelptopic = "Delete/Recall Rolodex Record" STORE .F. TO recall_rec, del_rec IF DELETED() RECALL ELSE DELETE ENDIF ENDIF return_to = IIF(nav_key = 272, .T., return_to) && Alt-Q Quit IF return_to DO sys_utl1 WITH "Nav Ret" ELSEIF ALLTRIM(STR(nav_key)) $ "3,5,18,24" DO sys_utl1 WITH "Nav Keys" ELSE nav_key = 0 ENDIF ENDIF IF scrn_newrec scrn_newrec = .F. sort_prime = .T. mhelptopic = "Create New Rolodex Record" SELECT sys_pers APPEND BLANK nav_currec = RECNO() SEL_DBF("sys_info") REPLACE sys_info->s__log WITH sys_info->s__log + 1 REPLACE sys_pers->pers_syno WITH ALLTRIM(STR(sys_info->s__log, 7, 0)) USE SELECT sys_pers STORE .T. TO scrn_editrec, sf_selrec IF nav_lkup SELECT sys_offs APPEND BLANK REPLACE lkup_recno WITH nav_currec ENDIF nav_botlmt = RECCOUNT() SELECT sys_pers GOTO nav_currec ENDIF IF str_sch .OR. (TYPE("_ss_aray") = "A" .AND. reset_sys) sort_prime = .T. SELECT sys_pers DO sys_keyw ENDIF IF tag_seek DO sys_utl1 WITH "nav_tags" ENDIF IF sf_selrec sf_selrec = .F. nav_reset = .T. nav_disp = 1 nav_currec = RECNO() IF nav_lkup SELECT sys_offs LOCATE FOR sys_offs->lkup_recno = nav_currec nav_sellkup = RECNO() ELSE SELECT sys_pers nav_sellkup = RECNO() ENDIF ENDIF SELECT sys_pers IF tag_work sort_prime = .T. DO sys_utl1 WITH "Set Tags" ENDIF IF !scrn_show .OR. reset_sys intuit_pers = sys_pers->name_full EXIT ENDIF ENDDO *SEL_DBF("kb_bblst") *LOCATE FOR UPPER(TRIM(kb_bblst->sysop_name)) == UPPER(TRIM(intuit_pers)) *IF FOUND() * intuit_rec = RECNO() * SEL_DBF("sys_dbfs") * LOCATE FOR UPPER(TRIM(sys_dbfs->dbf_name)) == "KB_BBLST" * IF FOUND() * REPLACE sys_dbfs->last_rec WITH intuit_rec * ENDIF *ENDIF SELECT sys_dbfs SET ORDER TO 02 SEEK "SYS_PERS" IF sort_prime CTR_STR(23, "System Rolodex Has Been Modified - Updating System", sys_msgs) REPLACE sys_dbfs->pack_flag WITH .T. ENDIF REPLACE sys_dbfs->last_rec WITH scrn_selrec * Screen Template *00ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ΅ Personnel ΖΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ» *01Ί Name, Full Sal/Rank Pers Code Telephone Tag Ί *02ΗΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΆ *03Ί XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXX (999)999-9999 ϋ Ί *09ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ *10ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ΅ Personnel Details ΖΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ» *11Ί Name, Last: !XXXXXXXXXXXXX First: !XXXXXXXXXXX MI: ! Jr/Sr: !XXXX Ί *12Ί Salutation/Rank: XXXXXXXXXX Personnel Code: !!!!!!!!!!!!!!! Ί *13Ί Title: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Ί *14Ί Telephone: (999)999-9999 Ext: 9999 Building: XXXXXXXXXXXXXXXX Room: XXXXXX Ί *15Ί Org: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Suite/PO: XXXXXXXXXXXXXXXXXXXXXXXXXX Ί *16Ί Dept: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Street: XXXXXXXXXXXXXXXXXXXXXXXXXX Ί *17Ί Div: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX City: XXXXXXXXXXXXXXXXXXXX Ί *18Ί Branch: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX State: !! Zip Code: 99999-9999 Ί *19ΗΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔ΄ Personnel Comments/Notes ΓΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΆ *20Ί Ί *22ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ cur_prg = "" RELEASE ALL RETURN