* DATE 07/31/84 17:22 * ADD2.PRG * this program will add tenant records to the current files SET INDEX TO SET COLON OFF SET INTENSITY ON STOR ' ' TO choice STOR ' ' TO blnks * set up screen for data entry *loop until finished adding records STOR baddr TO mbaddr STOR bcode TO mbcode STOR bupdate TO mbupdate SELE SECONDARY USE &dr.:tenant STOR t TO more STOR t TO first ERAS DO WHIL more IF first STOR 'Add Tenant Records' TO mode STOR 'Enter as many tenants as you want. When done, enter a blank for tenant' TO prompt1 STOR "name and unit or control 'Q' to end session." TO prompt2 @ 0,26 SAY mode @ 1, 0 SAY " -------------------------------------------------" @ 1,50 SAY "----------------------------" @ 3, 2 SAY "Tenant:" @ 3,53 SAY "Code:" @ 4, 4 SAY "Unit:" @ 4,26 SAY "Building:" @ 5, 1 SAY "Contact:" @ 5,52 SAY "Phone:" @ 6,09 SAY "Alternate mailing address:" @ 7,01 SAY "Address:" @ 8,01 SAY "City:" @ 10, 4 SAY "Type:" @ 10,19 SAY "Addl Percentage:" @ 10,48 SAY "1st Lease:" @ 11,04 SAY "Base:" @ 11,47 SAY "Expiration:" @ 12, 0 SAY "Security:" @ 12,30 SAY "Bank:" @ 12,48 SAY "Late Date:" @ 13, 4 SAY "Rent:" @ 13,25 SAY "Late Chgs:" @ 13,48 SAY "Addl Rent:" @ 14, 3 SAY "G & E:" @ 14,24 SAY "Other Chgs:" @ 15, 0 SAY "Rent Due:" @ 15,22 SAY "Last Payment:" @ 15,49 SAY "Amt Paid:" @ 16,00 SAY "Total Yr:" @ 16,30 SAY "Flag:" @ 16,52 SAY "Total:" @ 18, 3 SAY "Notes:" @ 18,51 SAY "Update:" @ 19, 0 SAY " -------------------------------------------------" @ 19,50 SAY "-----------------------------" ENDI first STOR f TO first STOR $(blnks,1,35) TO mtenant STOR $(blnks,1,3) TO mtcode STOR $(blnks,1,5) to mtunit STOR 'R' TO mttype STOR $(blnks,1,25) TO mtcontac STOR $(blnks,1,13) TO mtphone STOR 'N' TO malt STOR $(blnks,1,35) TO maltad STOR $(blnks,1,35) TO maltcty STOR $(blnks,1,8) TO mtexpir STOR $(blnks,1,8) TO mtfirst STOR 0 TO mtsec STOR $(blnks,1,4) TO mtsecb STOR $(blnks,1,2) TO mtlate STOR 0 TO mtrent STOR 0.0000 TO mtrentpc STOR 0 TO mtrenpcr STOR 0 TO mtlatec STOR 0 TO mtaddl STOR 0 TO mtrente STOR 0 TO mtrentm STOR 0 TO mtrentd STOR $(blnks,1,8) TO mtrentpd STOR 0 TO mtrentp STOR 0 TO mtrenty STOR 0 TO mtrentt STOR $(blnks,1,8) TO mtflag STOR $(blnks,1,35) TO mtnotes STOR mbupdate TO mtupdate * setup gets to read data @ 3,10 GET mtenant @ 3,59 SAY mbcode @ 3,61 GET mtcode PICTURE '999' @ 4,10 GET mtunit @ 4,36 SAY mbaddr @ 5,10 GET mtcontac @ 5,59 GET mtphone PICTURE '(999)999-9999' @ 6,36 GET malt PICTURE '!' @ 7,10 GET maltad @ 8,10 GET maltcty @ 10,10 GET mttype PICTURE '!' @ 10,36 GET mtrentpc @ 10,59 GET mtfirst PICTURE '99/99/99' @ 11,10 GET mtrenpcr @ 11,59 GET mtexpir PICTURE '99/99/99' @ 12,10 GET mtsec @ 12,36 GET mtsecb @ 12,59 GET mtlate PICTURE '99' @ 13,10 GET mtrent @ 13,36 GET mtlatec @ 13,59 GET mtaddl @ 14,10 GET mtrente @ 14,36 GET mtrentm @ 15,10 GET mtrentd @ 15,36 GET mtrentp PICTURE '99/99/99' @ 15,59 GET mtrentp @ 16,10 GET mtrenty @ 16,36 GET mtflag PICTURE '99/99/99' @ 16,59 GET mtrentt @ 18,10 GET mtnotes @ 18,61 GET mtupdate PICTURE '99/99/99' @ 20,00 @ 21,00 @ 22,00 @ 20, 7 SAY prompt1 @ 21, 7 SAY prompt2 READ CLEA GETS * test if there is a bad field validation IF mtenant <> ' ' * validation DO CASE CASE mtcode = ' ' STOR t TO error CASE .NOT.(malt = 'Y' .OR. malt = 'N') STOR t TO error CASE .NOT.(mttype = 'R'.OR.mttype='P'.OR. mttype='O') STOR t TO error CASE (mttype = 'P'.OR. mttype = 'O') .AND.(.NOT.(mtrentpc >0.AND. mtrenpcr >0)) STOR t TO error OTHE STOR f TO error ENDC * if test for error was true then fix the fields that need fixing IF error * erase the lines to be used for prompts @ 00,00 @ 20,00 @ 21,00 @ 22,00 * tell them to correct it @ 0,18 SAY 'Please Correct the Indicated Data' * keep looping until all fields are fixed STOR t to an:error DO WHIL an:error DO CASE CASE mtcode = ' ' @ 20,00 @ 20,15 SAY 'Must have a tenant code ' @ 03,61 GET mtcode PICTURE '999' READ CASE .NOT.(malt = 'Y' .OR. malt = 'N') @ 20,00 @ 20,15 SAY "Must answer 'Y' or 'N' to alternate address" @ 06,36 GET malt PICTURE '!' READ CASE .NOT.(mttype = 'R'.OR.mttype='P'.OR. mttype='O') @ 20,00 @ 21,00 @ 20,05 SAY "Type must be 'R' for Regular, 'P' for Percentage which uses the higher of" @ 21,05 SAY "the percentage or the base rent or 'O' for Overage plus base rent" @ 10,10 GET mttype PICTURE '!' READ CASE (mttype = 'P'.OR. mttype = 'O').AND.(.NOT.(mtrentpc>0.AND. mtrenpcr> 0)) @ 20,00 @ 21,00 @ 20,05 SAY 'If a percentage or overage lease, you must state the percentage' @ 21,05 SAY 'AND the base for calculating the percentage rent' @ 10,36 GET mtrentpc @ 11,10 GET mtrenpcr READ OTHE STOR f TO an:error ENDC ENDD while an:error ENDI error * give them another chance SET COLON ON STOR 'N' TO command @ 20,00 @ 21,00 @ 22,00 @ 20,15 SAY 'Are there any more changes ? ' @ 20,48 GET command picture '!' READ SET COLON OFF IF command = 'Y' @ 0,00 @ 0,26 SAY mode @ 3,10 GET mtenant @ 3,59 SAY mbcode @ 3,61 GET mtcode PICTURE '999' @ 4,10 GET mtunit @ 4,36 SAY mbaddr @ 5,10 GET mtcontac @ 5,59 GET mtphone PICTURE '(999)999-9999' @ 6,36 GET malt PICTURE '!' @ 7,10 GET maltad @ 8,10 GET maltcty @ 10,10 GET mttype PICTURE '!' @ 10,36 GET mtrentpc @ 10,59 GET mtfirst PICTURE '99/99/99' @ 11,10 GET mtrenpcr @ 11,59 GET mtexpir PICTURE '99/99/99' @ 12,10 GET mtsec @ 12,36 GET mtsecb @ 12,59 GET mtlate PICTURE '99' @ 13,10 GET mtrent @ 13,36 GET mtlatec @ 13,59 GET mtaddl @ 14,10 GET mtrente @ 14,36 GET mtrentm @ 15,10 GET mtrentd @ 15,36 GET mtrentp PICTURE '99/99/99' @ 15,59 GET mtrentp @ 16,10 GET mtrenty @ 16,36 GET mtflag PICTURE '99/99/99' @ 16,59 GET mtrentt @ 18,10 GET mtnotes @ 18,61 GET mtupdate PICTURE '99/99/99' @ 20,00 @ 21,00 @ 22,00 * let user enter data READ CLEA GETS ENDI command = 'Y' * put data in file APPE BLANK STOR mbcode + mtcode TO mbcod1 REPL tenant WITH mtenant, bcode WITH mbcod1, tunit WITH mtunit REPL baddr WITH mbaddr, tcontac WITH mtcontac, tphone WITH mtphone REPL alt WITH malt, altad WITH maltad, altcty WITH maltcty REPL ttype WITH mttype, texpir WITH mtexpir REPL trentpc WITH mtrentpc, trentpcr WITH mtrenpcr REPL tfirst WITH mtfirst, tsec WITH mtsec, tsecb WITH mtsecb REPL tlate WITH mtlate, trent WITH mtrent, tlatec WITH mtlatec REPL taddl WITH mtaddl, trente WITH mtrente, trentm WITH mtrentm REPL trentd WITH mtrentd, trentpd WITH mtrentpd, trentp WITH mtrentp REPL trenty WITH mtrenty, trentt WITH mtrentt, tflag WITH mtflag REPL tnotes WITH mtnotes,tupdate WITH mtupdate STOR t TO more ELSE * get ready to stop the loop STOR f TO more ENDI mtenant <> ' ' STOR t TO first ENDD WHILE more SET COLON ON STOR 'Y' TO command ERAS TEXT The newly added information is in the database - but will not show up on screen until the records are reindexed............ and reindexing may take a few minutes. Moreover, if you want to add tenants to another building, you should not index until that is done. In any event, you can reindex at any time. There is an option to reindex on the Maintenance menu. ENDT @ 15,10 SAY "Do you wish to REINDEX now (Y/N) ?" @ 15,44 GET command PICTURE '!' READ CLEA GETS DO WHIL @(command, 'NY') = 0 @ 15,10 SAY "Do you wish to REINDEX now ?" @ 15,44 GET command PICTURE '!' READ CLEA GETS ENDD DO CASE CASE command = 'Y' * restore original index and reindex * since it takes time, tell them ERAS @ 02,00 SAY 'Files are now being reindexed. ' @ 03,00 SAY 'Please be patient as this will take a few minutes.' @ 04,00 SAY 'I will keep you posted as I go along' @ 05,00 SAY ' ' *index transitional part in secondary database STOR chr(peek(063)) to dr SET ECHO ON SET TALK ON SELE SECONDARY USE &dr.:TENANT INDEX &dr.:codea INDE on bcode to &dr.:codea SET ECHO OFF SET TALK OFF STOR f TO more STOR t TO first STOR ' ' TO choice CASE command = 'N' STOR f TO more ENDC STOR chr(peek(063)) to dr SELE PRIMARY USE &dr.:build INDEX &dr.:code SET INTENSITY OFF STOR ' ' TO choice STOR t TO first