|
Greetings, I am finishing up my last program as part of a group project at school. The problem is being able to search a phone number by 1 or all 10 digits of a phone number. E.g., if the user types 708 the user should see all of the 708 and above. I know there are some very smart programmers who know how to solve this. Qddssrc(display file) A DSPSIZ(24 80 *DS3) A REF(DATADICT) A CA03(03) A CA05(05) A CF06(06) A CF07(07) A CA12(12) A INDARA A HELP A ALTHELP(CA01) A HLPTITLE('Search Name Help') A HLPPNLGRP(EXTENDED PNL001) ¹ A***************************************************************** ¹ A* RECORD FORMAT FOR THE HEADER SCREEN ¹ A***************************************************************** A R HEADER A 1 3'SearchPDW' A COLOR(BLU) A 1 34'MORAINE VALLEY' A COLOR(WHT) A 1 71TIME A COLOR(BLU) A 2 3'PAH' A COLOR(BLU) A 2 33'MORTGAGE COMPANY' A COLOR(WHT) A 2 70DATE(*SYS *YY) A EDTCDE(Y) A COLOR(BLU) A 3 - - A ' A DSPATR(UL) A COLOR(BLU) ¹ A***************************************************************** ¹ A* WINDOW RECORD ¹ A***************************************************************** A R PROMPT A****** OVERLAY A KEEP A WINDOW(9 15 5 46 *NOMSGLIN) A WDWBORDER((*COLOR BLU) + A (*DSPATR RI) + A (*CHAR ' ')) A WDWTITLE((*TEXT 'Customer Search')) A WDWTITLE((*TEXT + A 'F3=Exit F5=Refresh')(*BOTTOM)) A H HLPARA(*FLD PHONE) A HLPPNLGRP('PHONE' PNL001 ) A 3 1'Search Phone' A PHONE R B 3 16REFFLD(CPHONE CMASTR) A 50 DSPATR(RI PC) COLOR(RED) ¹ A***************************************************************** A*Subfile Record Format - LIST OF NAMES THAT MEET THE INQUIRY ¹ A***************************************************************** A R SFL01 SFL A 77 SFLNXTCHG A SELECT 1 0B 10 13DSPATR(UL) A EDTCDE(4) A 60 DSPATR(RI PC) COLOR(RED) A SCLNAME R B 10 21REFFLD(@LNAME) A 41 DSPATR(PR) A SCFNAME R B 10 43REFFLD(@FNAME) A 41 DSPATR(PR) A SCPHONE R Y B 10 60REFFLD(@PHONE) A 41 DSPATR(PR) A EDTWRD('0( )& - ') A EDTMSK('& && & ') A SCNUMBR R H REFFLD(@CNUM) A SCADDR1 R H REFFLD(@ADD1) A SCCITY R H REFFLD(@CITY) A SCSTATE R H REFFLD(@STATE) A SCZIPCD R H REFFLD(@ZIP) A SCEMAIL R H REFFLD(@EMAIL) A* ¹ A***************************************************************** ¹ A* SUBFILE CONTROL RECORD - LIST OF NAMES MEETING INQUIRY ¹ A***************************************************************** A R CTL01 SFLCTL(SFL01) A SFLSIZ(0007) A SFLPAG(0006) A OVERLAY A 40 SFLCLR A 43 SFLDSPCTL A 42 SFLDSP A 92 SFLEND(*MORE) A CSRLOC(OUTROW OUTCOL) A DSPREC 4S 0H SFLRCDNBR A OUTROW 3S 0H A OUTCOL 3S 0H A 4 14'CUSTOMERS WITH LAST NAME BEGINNING- A WITH:' A COLOR(WHT) A PHONE 10Y 0O 4 55COLOR(RED) A 6 2'Type option, press Enter.' A COLOR(BLU) A N42 DSPATR(ND) A 7 2'1=Select' A COLOR(BLU) A N42 DSPATR(ND) A 9 11'SELECT' A COLOR(WHT) A DSPATR(UL) A 9 21'LAST NAME' A COLOR(WHT) A DSPATR(UL) A 9 43'FIRST NAME' A COLOR(WHT) A DSPATR(UL) A 9 60'PHONE NO.' A COLOR(WHT) A DSPATR(UL) ¹ A***************************************************************** ¹ A* RECORD FORMAT FOR THE 3RD SCREEN DISPLAY ¹ A***************************************************************** A R CHANGEWDW A OVERLAY A WINDOW(8 24 13 53 *NOMSGLIN) A WDWTITLE((*TEXT 'Customer Date - A - A SearchWDW') *LEFT) A WDWBORDER((*COLOR BLU) (*DSPATR RI)- A (*CHAR ' ')) A WDWTITLE((*TEXT 'F3=Exit F5=Refre- A sh F12=Cancel') *LEFT *BOTTOM) A H HLPARA(*FLD WCLNAME) A HLPPNLGRP(DLNAME PNL001) A H HLPARA(*FLD WCFNAME) A HLPPNLGRP(DFNAME PNL001) A H HLPARA(*FLD WCADDR1) A HLPPNLGRP(DDSTRET PNL001) A H HLPARA(*FLD WCCITY) A HLPPNLGRP(DCITY PNL001) A H HLPARA(*FLD WCZIPCD) A HLPPNLGRP(DZIP PNL001) A H HLPARA(*FLD WCPHONE) A HLPPNLGRP(DPHONE PNL001) A H HLPARA(*FLD WCEMAIL) A HLPPNLGRP(DEMAIL PNL001) A 2 2'Make Changes, Press ENTER' A COLOR(BLU) A 4 2'Custoemr Number:' A 5 2'First Name.....:' A 6 2'Last Name......:' A 7 2'Address........:' A 8 2'City...........:' A 9 2'State..........:' A 10 2'Zip Code.......:' A 11 2'Phone Number...:' A 12 2'Email Address..:' A WCNUMBR R O 4 19REFFLD(@CNUM) A EDTCDE(4) A WCFNAME R B 5 19REFFLD(@FNAME) A WCLNAME R B 6 19REFFLD(@LNAME) A WCADDR1 R B 7 19REFFLD(@ADD1) A WCCITY R B 8 19REFFLD(@CITY) A WCSTATE R B 9 19REFFLD(@STATE) A WCZIPCD R B 10 19REFFLD(@ZIP) A WCPHONE R Y B 11 19REFFLD(@PHONE) A EDTWRD('0( )& - ') A EDTMSK('& && & ') A WCEMAIL R B 12 19REFFLD(@EMAIL) A COLOR(RED) ¹ A***************************************************************** ¹ A* RECORD FORMAT FOR THE FOOTER ¹ A***************************************************************** A R FOOTER A OVERLAY A 23 2'F3=Exit' A COLOR(BLU) A 23 12'F5=Refresh' A COLOR(BLU) A 23 26'F12=Cancel' A COLOR(BLU) ¹ A***************************************************************** ¹ A* ERROR MESSAGE SUBFILE RECORD FOR THE WINDOW ¹ A***************************************************************** A R WMSGSFL SFL A SFLMSGRCD(13) A MSGKEY SFLMSGKEY A PGMQ SFLPGMQ ¹ A***************************************************************** ¹ A* ERROR MESSAGE CONTROL RECORD FOR THE WINDOW ¹ A***************************************************************** A R WMSGCTL SFLCTL(WMSGSFL) A WINDOW(CHANGEWDW) A OVERLAY A N39 SFLDSPCTL SFLDSP SFLINZ SFLEND A SFLSIZ(2) A SFLPAG(1) A @PGMQ SFLPGMQ ¹ A***************************************************************** ¹ A* RECORD FORMAT FOR THE ERROR MESSAGE SUBFILE ¹ A***************************************************************** A R MSGSFL SFL A SFLMSGRCD(24) A MSGKEY SFLMSGKEY A @PGMQ SFLPGMQ ¹ A***************************************************************** ¹ A* RECORD FORMAT FOR THE ERROR MESSAGE CONTROL RECORD ¹ A***************************************************************** A R MSGCTL SFLCTL(MSGSFL) A OVERLAY A N39 SFLDSPCTL SFLDSP SFLINZ SFLEND A SFLSIZ(2) A SFLPAG(1) A @PGMQ SFLPGMQ A*----------------------------------------------------------* A* Subfile Control Record for the Error Message A*----------------------------------------------------------* A R DUMMY A ASSUME A 1 2' ' * and here is the RPGLESRC program ¹ ***************** FILE SPECIFICATIONS *********************** ¹ * ¹ * Progam Name: SearchPhone For: Moraine Valley Mortgage ¹ * Author: Phil Hayes ¹ * Completion Date: ¹ * ¹ * Purpose: Display customers based on search criteria of first two ¹ * letters of the last name. User can then select the ¹ * customer in which they want to view the complete information ¹ * on in another display record. ¹ * ¹ *---------------------------------------------------------------- ¹ * File Specification for this program ¹ *---------------------------------------------------------------- é FCMastR IF E K DISK é FCMastLP# UF E K DISK RENAME(CMAST1:CMAST2) é FSearchPDW CF E WORKSTN é F SFILE(SFL01 :RRN1) é F INFDS(CMDkey) é F INDDS(DispInds) ¹ *--------------------------------------------------------------------* ¹ * Data structure for the message API's. * ¹ *--------------------------------------------------------------------* ã D DS INZ ã D @Stk 1 4B 0 ã D @Len 5 8B 0 inz(80) ã D @Err 9 12B 0 ¹ ã D @MsgF S 20 Inz('ERRMSGS *LIBL') ã D @Key S 4 Inz(' ') ã D @Rmv S 10 Inz('*ALL') ã D @MsgID S 7 ã D @Dta S 80 ã D @Type S 10 Inz('*DIAG') ¹ *---------------------------------------------------------------- ¹ * Convert Lower Case to Upper Case ¹ *---------------------------------------------------------------- D Aphone S 10 ã D Uc C CONST('ABCDEFGHIJKLMNOPQRSTUVWXYZ') ã D Lc C CONST('abcdefghijklmnopqrstuvwxyz') * ã D CMDkey DS ã D Key 369 369 ¹ * ã D Sdata1 E DS Extname(CmastL) Prefix(S) ã D Wdata1 E DS Extname(CmastL) Prefix(w) ã D Fdata1 E DS Extname(CmastL) ¹ * ¹ *--------------------------------------------------------------------- ¹ * Defining Stand alone Variables used inside this PGM. ¹ *--------------------------------------------------------------------- ã D LLimit S 20 INZ(*LoVal) ã D HLimit S 10 0 INZ(*HiVal) ã D VError S 1N INZ(*Off) D IGotNmbr S 1N INZ(*Off) D PHiNmbr S 10 0 inz(9999999999) D RRN1 S 4P 0 INZ(0) ¹ *---------------------------------------------------------------- ¹ * Data structure INDARA Indicator Array ¹ *---------------------------------------------------------------- ã D DispInds DS ã D IExit 3 3N ã D IRefresh 5 5N ã D ICancel 12 12N ã D IMsgClr 39 39N ã D ISflClr 40 40N D IDProtKey 41 41n ã D ISflDsp 42 42N ã D ISflDspCtl 43 43N ã D IDSelName 50 50N ã D ISflLinErr 60 60N ã D ISflNxtChg 77 77N ã D ISflMore 92 92N ¹ * ¹ *--------------------------------------------------------------------- ¹ * Hexadecimal Constants for all Function Keys used in this PGM. ¹ *--------------------------------------------------------------------- I/copy inter26/qcpylesrc,cmdkey1 ¹ *---------------------------------------------------------------- ¹ * Mailine Section of the Program ¹ *---------------------------------------------------------------- C DoU IExit C C Write Header C Write MsgCTL C ExFmt Prompt C C Select C C When IExit C Leave C C When ICancel C Iter C C When IRefresh C ExSr @Refresh C C When Key = Enter C ExSr @LoadSFL C ExSr @PickName C C EndSL C EndDo C ¹ C Eval *Inlr = *On ¹ *---------------------------------------------------------------- ¹ * @LoadSFL Subrountine ¹ *---------------------------------------------------------------- Ì CSR @LoadSFL BegSR C ExSr @ClearSFL C ExSr @ClearMsg C Phone SetLL CMastLP# C Phone CHAIN CMastLP# C Eval IGotNmbr = Cphone < PHiNmbr C C DoW Not %EOF and IGotNmbr = *ON C Eval ISflLinErr = *Off C Eval ISflNxtChg = *Off C Eval IDProtKey= *On C Eval Sdata1 = Fdata1 C Eval Select = *Zeros ¹ C Eval RRN1 = RRN1 + 1 ¹ C Write SFL01 C Read CMastLP# C Eval IGotNmbr = CPhone < PHiNmbr ¹ C EndDo ¹ C If RRN1 = *Zeros C Eval ISFLDSP = *off C Eval ISflLinErr = *On C Eval @msgid = 'ERR0101' C Eval @dta = APhone C Eval Outrow = 24 C Eval Outcol = 2 C Call 'QMHSNDPM' ParmSND ¹ C Else C Eval ISflDsp = *On C Eval DspRec = 1 C Eval Outrow = *zeros C Eval Outcol = *zeros C End ¹ C Eval ISflMore = *Off ¹ C If Not %EOF C Read CMastLP# C Eval ISflMore = CPhone < PHiNmbr C EndIf ¹ Ì CSR EndSr ¹ *--------------------------------------------------------------------* ¹ * Remove the Message Subfile. * ¹ *--------------------------------------------------------------------* Ì CSR @ClearMsg BegSR ¹ C Eval IMsgclr = *On ¹ C Write Msgctl ¹ C Eval IMsgclr = *Off C Eval @Key = *Blanks C Call 'QMHRMVPM' ParmRMV C Ì CSR EndSR ¹ *--------------------------------------------------------------------* ¹ * @ClearSFL Subroutine * ¹ *--------------------------------------------------------------------* Ì CSR @ClearSFL BegSR C Eval RRN1 = 0 ¹ ¹ C Eval ISflClr = *On ¹ C Write Ctl01 ¹ C Eval ISflClr = *Off Ì CSR EndSr ¹ *---------------------------------------------------------------- ¹ * @Refresh Subroutine ¹ *---------------------------------------------------------------- Ì CSR @Refresh BegSR C Clear Phone Ì CSR EndSR ¹ *--------------------------------------------------------------------* ¹ * @PickName Subroutine * ¹ *--------------------------------------------------------------------* Ì CSR @PickName BegSR ¹ C DoU IExit or ICancel C Write Header C Write MsgCTL C Write Footer C ExFmt CTL01 C C Select C C When IExit C Leave C C When ICancel C ExSr @ClearMsg C Iter ¹ C When IRefresh ¹ C Exsr @ClearMsg ¹ C ExSR @ClearSFL ¹ C ExSR @LoadSFL ¹ C When Key = Enter and ISfldsp = *on ¹ C Exsr @Validate C EndSL C EndDo Ì C EndSr ¹ *--------------------------------------------------------------------* ¹ * Read Changed Records In The Subfile To Check For Selection * ¹ *--------------------------------------------------------------------* Ì CSR @UpdateWDW BegSR C DoW Not ICancel C Eval Wdata1 = Sdata1 C ExFmt ChangeWDW C Select C When IExit or ICancel C Leave ¹ C When Key = Enter C Eval Fdata1 = Wdata1 C**************** UpDate CMAST2 C Eval Sdata1 = Wdata1 C Leave C EndSL ¹ ¹ C EndDO ¹ Ì CSR EndSR ¹ *--------------------------------------------------------------------* ¹ * @Validate Subroutine - Validate Selection Numbers on SFL * ¹ *--------------------------------------------------------------------* Ì CSR @Validate BegSR C ReadC SFL01 C C DoW not %EOF C ¹ C* Edit the Select Screen C C Eval ISflLinErr = *Off C Eval ISflNxtChg = *Off ¹ C Eval VError = *Off ¹ C* Edits? ¹ C If Select <> 0 ¹ C If Select <> 1 ¹ C ¹ C Eval ISflNxtChg = *On ¹ C Eval ISflLinErr = *On ¹ C Eval @msgid = 'ERR0100' ¹ C Call 'QMHSNDPM' ParmSND C Else C Exsr @Updatewdw C Eval Select = 0 C End C End C Update SFL01 ¹ C If ISflNxtChg = *On C Leave C End ¹ C ReadC SFL01 ¹ C ¹ C EndDO ¹ C Ì CSR EndSr ¹ C ¹ *--------------------------------------------------------------------* ¹ * @EditCkWDW Subroutine - Check Window I/P before Posting to the * ¹ * Data Base File - CMastR.PF ¹ *--------------------------------------------------------------------* ¹ C ¹ *--------------------------------------------------------------------* ¹ * Initialization Routine ¹ *--------------------------------------------------------------------* Ì CSR *InzSR BegSr C Eval ISflDspCtl = *On C Eval @PgmQ = '*' ¹ C KeyFile KList C KFld CLName C KFld CNumbr C ¹ * Clears messages from the PGM queue. é C ParmRMV Plist é C Parm @PgmQ é C Parm @Stk é C Parm @Key é C Parm @Rmv é C Parm @Err ¹ C ¹ * Sends messges to PGM queue. é C ParmSND Plist é C Parm @MsgID é C Parm @MsgF é C Parm @Dta é C Parm @Len é C Parm @Type é c Parm @PgmQ é C Parm @Stk é C Parm @Key é C Parm @Err Ì CSR EndSr I hope someone could solve this. Thank You, Phil +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.