home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / MAILMEN5.ARC / MAILMEN5.PRG < prev    next >
Text File  |  1985-08-18  |  29KB  |  1,182 lines

  1. * PROGRAM IS CALLED MAILMEN5.PRG-- IT HANDLES ALL SUB PROGRAMS TO OPERATE
  2. * MAILING LISTS. COPYRIGHT JULY 30,1985 BY PHILIP K. PERLMAN
  3. PROC MAILMEN5
  4. SET HEADING OFF
  5. SET SAFETY OFF
  6. SET TALK OFF
  7. CLEAR ALL
  8. RESTORE FROM MAILSET
  9. SET BELL &BEEP
  10. SET DELIMITER OFF
  11. SET COLOR TO &COLR
  12. DO WHILE .T.
  13. CLEAR
  14. RESTORE FROM MAILSET
  15. SET COLOR TO &COLR
  16. SET BELL &BEEP  
  17. SET DEFAULT TO &DRV
  18. SET PATH TO &MPATH
  19. STORE DRV-':'-TRIM(MPATH)-'\'-'MAIL.DBF' TO TEST1
  20. STORE DRV-':'-TRIM(MPATH)-'\'-'LAST.NDX' TO TEST2
  21. STORE DRV-':'-TRIM(MPATH)-'\'-'COMP.NDX' TO TEST3
  22. STORE DRV-':'-TRIM(MPATH)-'\'-'PROF1.NDX' TO TEST4
  23. IF .NOT. (FILE(TEST1) .AND. FILE(TEST2) .AND. FILE(TEST3);
  24.  .AND. FILE(TEST4))
  25.    CLEAR
  26.    TEXT
  27.  
  28.  
  29.                                  ATTENTION
  30.                                  =========  
  31.  
  32.            DATA BASE AND INDEX FILES CANNOT BE FOUND. USE MAIN MENU
  33.            ITEM 9 TO SET THE CORRECT PATH AND DISK DRIVE WHERE THESE
  34.            FILES ARE TO BE LOCATED. 
  35.          
  36.            PRESS ANY KEY TO CONTINUE
  37.    ENDTEXT 
  38.    SET CONSOLE OFF
  39.    WAIT
  40.    SET CONSOLE ON
  41.    CLEAR
  42. ENDIF
  43. STORE  ' ' TO NEXT
  44. * MAILMENU.PRG ----MENU PROGRAM FOR MAILMEN PROGRAM BY PHILIP PERLMAN
  45. * COPYRIGHT AUGUST 9,1985
  46. *
  47. @ 1,9     SAY "+==============================================================+"
  48. @ 2,9     SAY "|                                                              |"
  49. @ 3,9     SAY "|                        MAILING LIST                          |"
  50. @ 4,9     SAY "|                                                              |"
  51. @ 5,9     SAY "|                        MASTER  MENU                          |"
  52. @ 6,9     SAY "|                                                              |"
  53. @ 7,9     SAY "|                                                              |"
  54. @ 8,9     SAY "|==============================================================|"
  55. @ 9,9     SAY "|  1> Add Names To File                                        |"
  56. @ 10,9     SAY "|  2> View / Edit / Delete Records                             |"
  57. @ 11,9     SAY "|  3> View / Print Names & Telephone #'s by Category           |"
  58. @ 12,9     SAY "|  4> Print Files on Rolodex Cards By Category                 |"
  59. @ 13,9     SAY "|  5> Print Mailing Labels By Category                         |"
  60. @ 14,9     SAY "|  6> Print Indices to Categories                              |"
  61. @ 15,9     SAY "|  7> Christmas Mailing                                        |"
  62. @ 16,9     SAY "|  8> Birthday Mailing                                         |"
  63. @ 17,9     SAY "|  9> Change Default Settings                                  |"
  64. @ 18,9     SAY "|  P> Purge files                                              |"
  65. @ 19,9     SAY "|                       E> EXIT PROGRAM TO DBASE               |"
  66. @ 20,9     SAY "|                       Q> EXIT PROGRAM TO DOS                 |"
  67. @ 21,9     SAY "|                                                              |"
  68. @ 22,9     SAY "|                    PLEASE CHOOSE ONE OPTION:                 |"
  69. @ 22,55 GET NEXT
  70. @ 23,9     SAY "+==============================================================+"
  71. READ
  72. CLEAR GETS
  73.    IF VAL(NEXT) = 1
  74.      CLOSE FORMAT         
  75.      DO MAILINP
  76.    ELSE
  77.    IF VAL(NEXT) = 2
  78.      CLOSE FORMAT
  79.      DO MAILED
  80.    ELSE
  81.    IF VAL(NEXT) = 3
  82.      CLOSE FORMAT
  83.      DO MAILCAT
  84.    ELSE
  85.    IF VAL(NEXT) = 4
  86.      CLOSE FORMAT
  87.      DO MAILROL                               
  88.    ELSE
  89.    IF VAL(NEXT) = 5
  90.      CLOSE FORMAT
  91.      DO MAILAB
  92.    ELSE
  93.    IF VAL(NEXT) = 6
  94.       CLOSE FORMAT
  95.       DO MAILIND
  96.    ELSE
  97.    IF VAL(NEXT) = 7
  98.      CLOSE FORMAT
  99.      DO MAILXMAS
  100.    ELSE
  101.    IF VAL(NEXT) = 8
  102.      CLOSE FORMAT 
  103.      DO MAILBIRT
  104.    ELSE
  105.    IF VAL(NEXT) = 9
  106.      CLOSE FORMAT
  107.      DO MAILSET
  108.    ELSE
  109.    IF UPPER(NEXT) = 'P'
  110.      CLOSE FORMAT
  111.      DO MAILDEL
  112.    ELSE
  113.    IF UPPER(NEXT) = 'E'
  114.      CLOSE FORMAT
  115.      RELEASE NEXT, GO, CHANGE, TEST1, TEST2, TEST3, TEST4
  116.      SAVE TO MAILSET
  117.      CLEAR ALL
  118.      RETURN
  119.    ELSE
  120.    IF UPPER(NEXT) = 'Q' 
  121.       CLOSE FORMAT
  122.       RELEASE NEXT, GO, CHANGE, TEST1, TEST2, TEST3, TEST4
  123.       SAVE TO MAILSET
  124.       CLEAR ALL
  125.       QUIT
  126.     ELSE
  127.        LOOP
  128.     ENDIF
  129. ENDIF
  130. ENDIF
  131. ENDIF
  132. ENDIF
  133. ENDIF
  134. ENDIF
  135. ENDIF
  136. ENDIF
  137. ENDIF
  138. ENDIF
  139. ENDIF
  140.    ENDDO
  141. PROC MAILINP
  142. * THIS PROGRAM IS CALLED MAILINP.PRG-- MASTER PROGRAM FOR INPUT OF DATA TO
  143. * MAILING LIST PROGRAM COPYRIGHT JULY 31, 1985 BY PHILIP K. PERLMAN
  144. SET HEADING OFF
  145. SET SAFETY OFF
  146. SET TALK OFF
  147. CLEAR
  148. SET TALK OFF
  149. STORE .T. TO CONTINUE
  150. DO WHILE CONTINUE
  151. STORE 0 TO MAINMEN
  152. STORE 0 TO MREC1
  153. USE MAIL INDEX LAST, COMP, PROF1
  154. APPEND BLANK
  155. STORE RECNO() TO MREC1
  156. STORE .T. TO FMT
  157. DO WHILE FMT
  158. * MAILGET.PRG SCREEN FOR USE WITH MAILMEN.PRG COPYRIGHT JAN. 1985 PHILIP
  159. * PERLMAN
  160. @ 1,0 SAY '+==================='
  161. @ 1,20 SAY '===================='
  162. @ 1,40 SAY '===================='
  163. @ 1,60 SAY '==================+'
  164. @ 2,0 SAY '|'
  165. @ 2,27 SAY 'ADD INFORMATION BELOW'
  166. @ 2,78 SAY '|'
  167. @ 3,0 SAY '|'
  168. @ 3,20 SAY 'Check your entries before continuing.'
  169. @ 3,78 SAY '|'
  170. @ 4,0 SAY '|==================='
  171. @ 4,20 SAY '===================='
  172. @ 4,40 SAY '===================='
  173. @ 4,60 SAY '==================|'
  174. @ 5,0 SAY '|   Company'
  175. @ 5,13 GET company PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  176. @ 5,78 SAY '|'
  177. @ 6,0 SAY '|   First'
  178. @ 6,13 GET first PICTURE '!!!!!!!!!!!!!!!!!!!!'
  179. @ 6,34 SAY 'Last'
  180. @ 6,39 GET last PICTURE '!!!!!!!!!!!!!!!!!!!!'
  181. @ 6,78 SAY '|'
  182. @ 7,0 SAY '|   Addr1'
  183. @ 7,13 GET addr1 PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  184. @ 8,0 SAY '|   Addr2'
  185. @ 8,13 GET addr2 PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  186. @ 9,0 SAY '|   City'
  187. @ 9,13 GET city PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!'
  188. @ 9,39 SAY 'State'
  189. @ 9,45 GET state PICTURE '!!'
  190. @ 9,50 SAY 'Zip'
  191. @ 9,54 GET zip PICTURE '!!!!!'
  192. @ 9,78 SAY '|'
  193. @ 7,55 SAY 'Friend (Y/N)'
  194. @ 7,70 GET friend PICTURE '!'
  195. @ 7,78 SAY '|'
  196. @ 8,55 SAY 'Business (Y/N)'
  197. @ 8,70 GET bus_xmas PICTURE '!'
  198. @ 8,78 SAY '|'
  199. @ 10,0 SAY '|'
  200. @ 10,78 SAY '|'
  201. @ 11,0 SAY '|            Business Telephones'
  202. @ 11,43 SAY 'Other Telephones'
  203. @ 11,64 SAY 'Location      |'
  204. @ 12,0 SAY '|'
  205. @ 12,13 GET Tel_wrk PICTURE '999-999-9999'
  206. @ 12,28 SAY 'Ext.'
  207. @ 12,33 GET ext1
  208. @ 12,43 GET tel_hm PICTURE '999-999-9999'
  209. @ 12,64 GET loc1 PICTURE '!!!!!!!!!!'
  210. @ 12,78 SAY '|'
  211. @ 13,0 SAY '|'
  212. @ 13,13 GET tel_wrk2 PICTURE '999-999-9999'
  213. @ 13,28 SAY 'Ext.'
  214. @ 13,33 GET ext2
  215. @ 13,43 GET tel_hm2 PICTURE '999-999-9999'
  216. @ 13,64 GET loc2 PICTURE '!!!!!!!!!!'
  217. @ 13,78 SAY '|'
  218. @ 14,0 SAY '|'
  219. @ 14,13 GET tel_wrk3 PICTURE '999-999-9999'
  220. @ 14,28 SAY 'Ext.'
  221. @ 14,33 GET ext3
  222. @ 14,43 GET tel_hm3 PICTURE '999-999-9999'
  223. @ 14,64 GET loc3 PICTURE '!!!!!!!!!!'
  224. @ 14,78 SAY '|'
  225. @ 15,0 SAY '|'
  226. @ 15,78 SAY '|'
  227. @ 16,0 SAY '|   Category'
  228. @ 16,13 GET prof1 PICTURE '!!!!!!!!!!!!!!!!!!!!'
  229. @ 16,35 SAY 'Birthday'
  230. @ 16,44 GET birthday PICTURE '99/99/99'
  231. @ 16,78 SAY '|'
  232. @ 17,0 SAY '|'
  233. @ 17,78 SAY '|'
  234. @ 18,0 SAY '|'
  235. @ 18,78 SAY '|'
  236. @ 19,0 SAY '|   Comment'
  237. @ 19,13 GET mcom1
  238. @ 19,78 SAY '|'
  239. @ 20,0 SAY '|'
  240. @ 20,13 GET mcom2
  241. @ 20,78 SAY '|'
  242. @ 21,0 SAY '|'
  243. @ 21,78 SAY '|'
  244. @ 22,0 SAY '+==================='
  245. @ 22,20 SAY '===================='
  246. @ 22,40 SAY '===================='
  247. @ 22,60 SAY '==================+'
  248. @ 23,11 SAY "TO CONTINUE PRESS <ENTER> SEVERAL TIMES OR CONTROL W <^W)" 
  249. READ
  250. CLEAR GETS
  251. STORE .T. TO REVIEW
  252. DO WHILE REVIEW
  253. CLEAR
  254. @ 10,5 SAY "Are all you entries correct ?"
  255. @ 12,5 SAY "Press 'R' to review and correct your entries"
  256. @ 14,5 SAY "Press 'Y' to write your entries into the record"
  257. @ 16,5 SAY "Press 'M' to abort entries and return to the menu"
  258. ?
  259. ?
  260. ?
  261. WAIT TO ANS
  262. IF UPPER(ANS) <> 'R' .AND. UPPER(ANS) <> 'Y' .AND. UPPER(ANS) <> 'M'
  263. CLEAR
  264. LOOP
  265. ELSE
  266. STORE .F. TO REVIEW
  267. ENDIF
  268. ENDDO
  269. IF UPPER(ANS) = 'R'
  270. CLEAR GETS
  271. CLEAR
  272. LOOP
  273. ELSE
  274. IF UPPER(ANS) = 'Y'
  275. STORE .F. TO FMT
  276. CLEAR
  277. ELSE
  278. STORE .F. TO FMT
  279. CLEAR
  280. SET DEVICE TO SCREEN
  281.      USE
  282.      USE MAIL INDEX LAST, COMP, PROF1
  283.      GOTO MREC1
  284.      DELE
  285.      RELEASE FMT, REVIEW, ANS, FORMAT,
  286.      RETURN
  287. ENDIF
  288. ENDIF
  289. ENDDO
  290. CLEAR
  291. @ 10,5 SAY 'Do you want to add more records ?'
  292. @ 12,5 SAY "Press 'M' to return to the menu"
  293. @ 14,5 SAY 'Press any other key to continue'
  294. ?
  295. ?
  296. ?
  297. ?
  298. WAIT TO ANSWER
  299. IF UPPER(ANSWER) = 'M'
  300.    CLEAR
  301.   @ 10,5 SAY "...PROCESSING ENTRIES..."
  302.   USE
  303.    STORE .F. TO CONTINUE
  304.    RETURN
  305. ENDIF
  306. DO MAILMSG
  307. ENDDO
  308. RETURN
  309. * MAILED.PRG - PROGRAM FOR EDITING MAILIST FILES
  310. * COPYRIGHT AUGUST 9, 1985 BY PHILIP K. PERLMAN
  311. PROC MAILED
  312. SET HEADING OFF
  313. SET SAFETY OFF
  314. SET TALK OFF
  315. DO MAILMSG
  316. PRIVATE ALL
  317. STORE .T. TO ED
  318. DO WHILE ED
  319. STORE ' ' TO ANS
  320. STORE ' ' TO ANS1
  321. STORE .T. TO CHOICE
  322. DO WHILE CHOICE
  323. CLEAR
  324. ? "YOU CAN LOCATE THE FILE BY THE INDIVIDUAL'S NAME OR COMPANY NAME"
  325. ?
  326. ?
  327. ?
  328. ACCEPT "ENTER LAST NAME: " TO NAME
  329. ?
  330. ?
  331. ?
  332. ?
  333. ACCEPT "ENTER FIRST NAME: " TO NAME1
  334. ?
  335. ?
  336. ?
  337. ?
  338. ACCEPT "ENTER COMPANY NAME: " TO COMP
  339. STORE ' ' TO CHOSE
  340. @ 18,7 say "+----------------------------------------------------------------+"
  341. @ 19,7 Say "| Select: <M>enu                ** Any Other Key To Continue **  |"
  342. @ 20,7 say "+----------------------------------------------------------------+"
  343. @ 19,25 GET CHOSE 
  344. READ
  345. CLEAR GETS
  346.      IF UPPER(CHOSE) = 'M'
  347.        STORE .F. TO CHOICE
  348.        STORE .F. TO DULY
  349.        STORE .F. TO ED
  350.        STORE 2 TO REC
  351.     ELSE
  352.        STORE UPPER(NAME) TO NAME
  353.        STORE UPPER(NAME1) TO NAME1
  354.        STORE UPPER(COMP) TO COMP
  355.        STORE .T. TO DULY
  356.        STORE .F. TO CHOICE
  357.      ENDIF
  358. ENDDO CHOICE
  359. DO WHILE DULY
  360. IF LEN(COMP) = 0 .AND. LEN(NAME) <> 0 .AND. LEN(NAME1) <> 0
  361.      USE MAIL INDEX LAST, COMP, PROF1
  362.      SEEK NAME
  363.           IF .NOT. EOF()  .AND. .NOT. DELETED()
  364.              STORE .T. TO SEARCH
  365.              DO WHILE SEARCH .AND. .NOT. EOF()
  366.                 IF FIRST = NAME1
  367.                      STORE 1 TO REC
  368.                      STORE .F. TO SEARCH
  369.                      STORE .F. TO DULY
  370.                 ELSE
  371.                 SKIP
  372.                 ENDIF
  373.              ENDDO SEARCH
  374.            ENDIF
  375.            IF EOF() .OR. DELETED()
  376.               STORE 0 TO REC             
  377.               STORE .F. TO DULY
  378.            ENDIF
  379. ELSE
  380. IF LEN(COMP) = 0 .AND. LEN(NAME) <> 0 .AND. LEN(NAME1) = 0
  381.      USE MAIL INDEX LAST, COMP, PROF1
  382.      SEEK NAME
  383.           IF EOF() .OR. DELETED()
  384.                 STORE 0 TO REC
  385.                 STORE .F. TO DULY
  386.           ELSE
  387.                 STORE 1 TO REC
  388.                 STORE .F. TO DULY
  389.           ENDIF
  390. ELSE
  391.      USE MAIL INDEX COMP, LAST, PROF1
  392.      SEEK COMP
  393.           IF EOF() .OR. DELETED()
  394.                STORE 0 TO REC
  395.                STORE .F. TO DULY
  396.           ELSE
  397.                STORE 1 TO REC
  398.                STORE .F. TO DULY
  399.           ENDIF
  400. ENDIF
  401. ENDIF
  402. ENDDO DULY
  403. IF REC = 0
  404.      CLEAR
  405.      STORE ' ' TO ANS3
  406.      @ 10,5 SAY "Record Cannot Be Found."
  407.      @ 12,5 say "Press 'M' to Return to the Menu"
  408.      @ 14,5 SAY "Press Any Other Key to Try Again."
  409.      @ 14,70 get ANS3
  410.      READ
  411.      CLEAR GETS
  412.           IF UPPER(ANS3) = 'M'
  413.                     STORE .F. TO ED
  414.                     STORE .F. TO DULY
  415.                     RETURN
  416.           ELSE
  417.                     STORE .T. TO DULY
  418.                     STORE ' ' TO ANS
  419.           ENDIF
  420. ENDIF
  421. DO WHILE REC = 1
  422. STORE ' ' TO ANS
  423. CLEAR
  424. @ 1,0 SAY 'Company'
  425. @ 3,0 SAY 'Name'
  426. @ 4,45 SAY 'Friend (Y/N)'
  427. @ 5,45 SAY 'Business (Y/N)'
  428. @ 8,10 SAY 'Business Telephones'
  429. @ 8,43 SAY 'Other Telephones'
  430. @ 8,64 SAY 'Location'
  431. @ 9,25 SAY 'Ext.'
  432. @ 10,25 SAY 'Ext.'
  433. @ 11,25 SAY 'Ext.'
  434. @ 13,0 SAY 'Category'
  435. @ 13,35 SAY 'Birthday'
  436. @ 16,0 SAY 'Comment'
  437. @ 19,5 SAY "+--------------------------------------------------------------+"
  438. @ 20,5 SAY "| SELECT: <N>ext  <P>rior  <E>dit  <D>elete  <F>ind   <M>enu   |"
  439. @ 21,5 SAY "+--------------------------------------------------------------+"
  440. STORE .T. TO TRUE
  441. DO WHILE TRUE
  442. @ 1,10 GET company PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  443. @ 3,10 GET last PICTURE '!!!!!!!!!!!!!!!!!!!!'
  444. @ 3,32 GET first PICTURE '!!!!!!!!!!!!!!!!!!!!'
  445. @ 4,10 GET addr1 PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  446. @ 5,10 GET addr2 PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  447. @ 6,10 GET city PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!'
  448. @ 6,37 GET state PICTURE '!!'
  449. @ 6,41 GET zip PICTURE '!!!!!'
  450. @ 4,60 GET friend PICTURE '!'
  451. @ 5,60 GET bus_xmas PICTURE '!'
  452. @ 9,10 GET Tel_wrk PICTURE '999-999-9999'
  453. @ 9,30 GET ext1
  454. @ 9,43 GET tel_hm PICTURE '999-999-9999'
  455. @ 9,64 GET loc1 PICTURE '!!!!!!!!!!'
  456. @ 10,10 GET tel_wrk2 PICTURE '999-999-9999'
  457. @ 10,30 GET ext2
  458. @ 10,43 GET tel_hm2 PICTURE '999-999-9999'
  459. @ 10,64 GET loc2 PICTURE '!!!!!!!!!!' 
  460. @ 11,10 GET tel_wrk3 PICTURE '999-999-9999'
  461. @ 11,30 GET ext3
  462. @ 11,43 GET tel_hm3 PICTURE '999-999-9999'
  463. @ 11,64 GET loc3 PICTURE '!!!!!!!!!!'
  464. @ 13,10 GET prof1
  465. @ 13,44 GET birthday PICTURE '99/99/99'
  466. @ 16,10 GET mcom1
  467. @ 17,10 GET mcom2
  468. SET CONSOLE OFF
  469. WAIT TO ANS
  470. STORE UPPER(ANS) TO ANS
  471. SET CONSOLE ON
  472. IF ANS = 'E'
  473. ? "                PRESS CONTROL W <^W> WHEN DONE "
  474. READ
  475. CLEAR GETS
  476. STORE 0 TO REC
  477. STORE .F. TO TRUE
  478. ELSE
  479. CLEAR GETS
  480. IF ANS = 'D'
  481. CLEAR
  482. ? "               ARE YOU SURE ABOUT THAT (Y OR N) ?"
  483. SET CONSOLE OFF
  484. WAIT TO SURE
  485. SET CONSOLE ON
  486.      IF SURE = 'Y'
  487.           DELETE
  488.       STORE .F. TO TRUE
  489.           STORE 0 TO REC
  490.       STORE .F. TO TRUE
  491.      ELSE
  492.       STORE .F. TO TRUE
  493.           STORE 0 TO REC
  494.           STORE .F. TO TRUE
  495.      ENDIF
  496. ELSE
  497. IF ANS='N'
  498.    SKIP 
  499. ELSE
  500. IF ANS = 'P'
  501.    SKIP -1
  502. ELSE
  503. IF ANS = 'M'
  504.      STORE .F. TO TRUE
  505.      STORE 0 TO REC
  506.      STORE .F. TO ED
  507. ELSE
  508. IF ANS = 'F'
  509.      STORE .F. TO TRUE
  510.      STORE 0 TO REC
  511. ENDIF
  512. ENDIF
  513. ENDIF
  514. ENDIF
  515. ENDIF
  516. ENDIF
  517. ENDDO TRUE
  518. ENDDO REC
  519. CLEAR
  520. IF ANS = 'D' .OR. ANS = 'E'
  521. store ' ' to ans1
  522. @ 10,5 SAY "Press 'M' to Return to The Menu"
  523. @ 12,5 Say "Press Any Other Key To Continue"
  524. @ 12,60 get ans1
  525. READ
  526. CLEAR GETS
  527. IF UPPER(ANS1) = 'M'
  528.      STORE .F. TO ED
  529.      CLEAR
  530.      USE
  531.      RETURN
  532. ELSE
  533. CLEAR
  534. ENDIF
  535. ENDIF
  536. ENDDO ED
  537. RETURN
  538. * MAILCAT.PRG PROGRAM FOR VIEWING AND PRINTING MAILING LIST ENTRIES COPYRIGHT
  539. * AUGUST 1985 BY PHILIP K. PERLMAN
  540. PROC MAILCAT
  541. SET TALK OFF
  542. SET HEADING OFF
  543. SET SAFETY OFF
  544. PRIV ANS1
  545. ANS1 = ' ' 
  546. DO SELECT
  547.   IF ANS1 = 'F'
  548.      STORE "FRIEND='Y'" TO COND1
  549.      PRIV N, VIEW1
  550.      STORE 0 TO N
  551.      STORE ' ' TO VIEW1
  552.      DO PVIEW
  553.      USE MAIL INDEX LAST
  554.      DO PRINT
  555.   ENDIF
  556. IF ANS1 = 'B'
  557. PRIV P
  558. STORE ' ' TO P
  559. DO SELALL
  560. IF UPPER(P) = 'A'
  561.      CLEAR
  562.      PRIV COND1, N, VIEW
  563.      STORE "BUS_XMAS='Y'" TO COND1
  564.      STORE 0 TO N
  565.      STORE ' ' TO VIEW1
  566.      DO PVIEW
  567.      USE MAIL INDEX COMP
  568.      DO PRINT
  569. ENDIF
  570. IF UPPER(P) = 'S'
  571.  STORE .T. TO CONTINUE
  572.  DO WHILE CONTINUE
  573.  SET PRINT OFF
  574.  CLEAR
  575.  PRIVATE CAT
  576.  STORE ' ' TO CAT
  577.  DO CATEG
  578. PRIVATE N, VIEW1
  579. STORE 0 TO N
  580. STORE ' ' TO VIEW1
  581. DO PVIEW
  582. CLEAR
  583. USE MAIL INDEX PROF1
  584. SEEK CAT
  585. CLEAR
  586. STORE 0 TO INDEX
  587. STORE .T. TO TRUE
  588. DO WHILE TRUE
  589. ? "&CAT"
  590. ? "------------------------------"
  591. IF UPPER(VIEW1) = 'P'
  592. ? 'COMPANY','                      ','|', 'NAME', '                          ';
  593.   ,'         ','|','OFFICE TEL. ','|', 'HOME TEL.'
  594. ? '=======','                      ','|', '====', '                          ';
  595.   ,'         ','|','=========== ','|', '========='
  596. ENDIF
  597.      DO WHILE .NOT. EOF() .AND. PROF1 = '&CAT' .AND. INDEX < N 
  598. ? COMPANY,'|', FIRST, LAST,'|', TEL_WRK,'|', TEL_HM
  599.           STORE INDEX +1 TO INDEX
  600.           SKIP
  601.      ENDDO
  602.                IF UPPER(VIEW1) = 'P' .AND. INDEX >= N
  603.                     EJECT
  604.                     STORE 0 TO INDEX
  605.                ENDIF
  606.                IF UPPER(VIEW1) = 'V'
  607.                     WAIT
  608.                     IF INDEX >= N
  609.                          STORE 0 TO INDEX
  610.                     ENDIF
  611.                ENDIF
  612.                IF UPPER(VIEW1)= 'P' .AND. EOF()
  613.                     EJECT
  614.                     ? CHR(18)
  615.                     SET PRINT OFF
  616.                     STORE .F. TO TRUE
  617.                ENDIF
  618.                IF UPPER(VIEW1)= 'V' .AND. EOF()
  619.                     STORE .F. TO TRUE
  620.                ENDIF
  621.                IF PROF1 <> '&CAT'
  622.                     STORE .F. TO TRUE
  623.                ENDIF
  624. ENDDO
  625. CLEAR
  626. STORE ' ' TO CONT
  627. @ 10,5 SAY 'Do you wish to continue ?'
  628. @ 12,5 SAY "Press 'M' to Return to the Menu"
  629. @ 14,5 SAY 'Press any other key to continue'
  630. @ 14,40 GET CONT
  631. READ
  632. CLEAR GETS
  633. IF UPPER(CONT) = 'M'
  634. STORE .F. TO CONTINUE
  635. RETURN
  636. ELSE
  637. DO MAILMSG
  638. ENDIF
  639. ENDDO
  640. ENDIF
  641. ENDIF
  642. *
  643. * SELECT PROGRAM
  644. PROC SELECT
  645. STORE .T. TO BEVEL
  646. DO WHILE BEVEL
  647. CLEAR
  648. STORE ' ' TO ANS1
  649. @ 10,5 say "List <F>riends or <B>usiness ?"
  650. @ 10,35 GET ANS1
  651. READ
  652. CLEAR GETS
  653. STORE UPPER(ANS1) TO ANS1
  654.      IF ANS1 = 'F' .OR. ANS1 = 'B'
  655.      STORE .F. TO BEVEL
  656. ELSE
  657. ENDIF
  658. ENDDO BEVEL
  659. RETURN
  660. *
  661. * SELALL PROGRAM
  662. PROC SELALL
  663. STORE .T. TO RIGHT
  664. DO WHILE RIGHT
  665. STORE ' ' TO P
  666. CLEAR
  667. @ 10,5 SAY "Get <A>ll Categories"
  668. @ 12,5 SAY "Get <S>elected Categories"
  669. @ 12,35 get P
  670. READ
  671. CLEAR GETS
  672. STORE UPPER(P) TO P
  673. IF P = 'A' .OR. P = 'S'
  674.      STORE .F. TO RIGHT
  675. ELSE
  676. ENDIF
  677. ENDDO RIGHT
  678. RETURN
  679. *
  680. * CATEG PROGRAM
  681. PROC CATEG
  682. STORE .T. TO RIGHT1
  683. DO WHILE RIGHT1
  684. STORE '                   ' TO CAT
  685. CLEAR
  686. @ 12,5 SAY "What Category Are You Looking For ?:"
  687. @ 12,42 get CAT
  688. READ
  689. CLEAR GETS
  690. STORE TRIM(UPPER(CAT)) TO CAT
  691. IF CAT <> ' '
  692. STORE .F. TO RIGHT1
  693. ELSE
  694. ENDIF
  695. ENDDO RIGHT1
  696. RETURN
  697. *
  698. * PVIEW.PRG PROGRAM TO SET UP FOR PRINTING OR SCREENING
  699. PROC PVIEW
  700. CLEAR
  701. STORE .T. TO VIEW
  702.      DO WHILE VIEW
  703.      STORE ' ' TO VIEW1
  704.      @ 12,5 SAY " <P>rint the List, <V>iew the List On Screen"
  705.      @ 12,55 GET VIEW1
  706.      READ
  707.      CLEAR GETS
  708.      STORE UPPER(VIEW1) TO VIEW1
  709.      IF VIEW1='P'
  710.      SET PRINT ON
  711.      STORE 60 TO N
  712.      ? CHR(15)
  713.      STORE .F. TO VIEW
  714.      ELSE
  715.      IF VIEW1 = 'V'
  716.      STORE 11 TO N
  717.      STORE .F. TO VIEW
  718.      ELSE
  719.      ENDIF
  720.      ENDIF
  721.      ENDDO VIEW
  722.      RETURN
  723. *
  724. * PRINT.PRG PRINT ROUTINES FOR MAILMEN PROGR.
  725.      PROC PRINT
  726.      CLEAR
  727.      STORE 0 TO INDEX2
  728.      GO TOP
  729.      STORE .T. TO TRUE
  730.      DO WHILE TRUE
  731.           IF UPPER(VIEW1) = 'P'
  732. ? 'NAME','                                    ','|', 'COMPANY', '            ';
  733.    ,'         ','|', 'OFFICE TEL. ','|', 'HOME TEL.'
  734. ? '====','                                    ','|', '=======', '            ';
  735.    ,'         ','|', '=========== ','|', '========='
  736.  
  737.            ENDIF
  738.           DO WHILE .NOT. EOF() .AND. INDEX2 < N
  739.                IF &COND1 
  740.      ? LAST, FIRST,'|', COMPANY,'|', TEL_WRK,'|', TEL_HM
  741.                STORE INDEX2 +1 TO INDEX2
  742.                ENDIF
  743.                SKIP
  744.      ENDDO .NOT. EOF
  745.                     IF UPPER(VIEW1)= 'P' .AND. INDEX2 >= N
  746.                          EJECT
  747.                          STORE 0 TO INDEX2
  748.                     ENDIF
  749.                     IF UPPER(VIEW1)= 'V'
  750.                          WAIT
  751.                          IF INDEX2 >= N
  752.                               STORE 0 TO INDEX2
  753.                          ENDIF
  754.                     ENDIF
  755.                     IF EOF()
  756.                          STORE .F. TO TRUE
  757.                     ENDIF
  758.      ENDDO TRUE
  759.      EJECT
  760.      ? CHR(18)
  761.      SET PRINT OFF
  762.      RETURN
  763. * MAILROL.PRG PRINTS ROLADEX CARDS FOR MAILMEN PROG. COPYRIGHT NOVEMBER 1,
  764. * 1985 PHILIP K. PERLMAN
  765. PROC MAILROL 
  766. SET HEADING OFF
  767. SET SAFETY OFF
  768. SET TALK OFF
  769. CLEAR
  770. PRIV ANS1
  771. ANS1= ' '
  772. DO SELECT
  773. @ 10,5 SAY 'Mount 2 1/8" by 4" Roladex Cards in Printer'
  774. @ 12,5 SAY 'Press any key when ready'
  775. SET CONSOLE OFF
  776. wait
  777. set console on
  778. IF UPPER(ANS1) = 'F'
  779.      CLEAR
  780.      USE MAIL INDEX LAST
  781.      GO TOP
  782.      LABEL FORM MAILROL FOR FRIEND='Y'TO PRINT
  783. ENDIF
  784. PRIV P
  785. STORE ' ' TO P
  786. DO SELALL
  787. IF UPPER(P) = 'A'
  788.      CLEAR
  789.      USE MAIL INDEX COMP
  790.      GO TOP
  791.      LABEL FORM MAILROL FOR BUS_XMAS='Y'TO PRINT
  792. ENDIF
  793. IF UPPER(P) = 'S'
  794. STORE .T. TO CONTINUE
  795. DO WHILE CONTINUE
  796. SET PRINT OFF
  797. PRIV CAT
  798. STORE ' ' TO CAT
  799. DO CATEG
  800. CLEAR
  801. STORE UPPER(CAT) TO CAT
  802. USE MAIL INDEX PROF1
  803. FIND &CAT
  804.   LABEL FORM MAILROL WHILE PROF1='&CAT' TO PRINT
  805. CLEAR
  806. STORE ' ' TO CONT
  807. @ 10,5 SAY 'Do you wish to continue ?'
  808. @ 12,5 SAY "Press 'M' to Return to the Menu"
  809. @ 14,5 SAY 'Press any other key to continue'
  810. @ 14,40 GET CONT
  811. READ
  812. CLEAR GETS
  813. IF UPPER(CONT) = 'M'
  814. ? CHR(18)
  815. SET PRINT OFF
  816. STORE .F. TO CONTINUE
  817. RETURN
  818. ELSE
  819. DO MAILMSG
  820. ENDDO
  821. ENDIF
  822. ENDIF
  823. RETURN
  824. * MAILAB.PRG COPYRIGHT NOVEMBER 1, 1983 BY PHILIP K. PERLMAN
  825. PROC MAILAB
  826. SET HEADING OFF
  827. SET SAFETY OFF
  828. SET TALK OFF
  829. CLEAR
  830. PRIV ANS1
  831. STORE ' ' TO ANS1
  832. DO SELECT
  833. CLEAR
  834. @ 10,5 SAY 'Mount Labels one across by 15/16" high in Printer'
  835. @ 12,5 SAY 'Press any key when ready'
  836. set console off
  837. wait
  838. set console on
  839. IF UPPER(ANS1) = 'F'
  840.      USE MAIL INDEX LAST
  841.      GO TOP
  842.      LABEL FORM MAILAB FOR FRIEND = 'Y' TO PRINT
  843. ENDIF
  844. PRIV P
  845. STORE ' ' TO P
  846. DO SELALL
  847. IF UPPER(P) = 'A'
  848.      CLEAR
  849.      USE MAIL INDEX COMP
  850.      GO TOP
  851.      LABEL FORM MAILAB FOR BUS_XMAS = 'Y' TO PRINT
  852. ENDIF
  853. IF UPPER(P) = 'S'
  854. STORE .T. TO CONTINUE
  855. DO WHILE CONTINUE
  856. SET PRINT OFF
  857. PRIV CAT
  858. STORE ' ' TO CAT
  859. DO CATEG
  860. CLEAR
  861. STORE UPPER(CAT) TO CAT
  862. USE MAIL INDEX PROF1
  863. FIND &CAT
  864. CLEAR
  865. LABEL FORM MAILAB WHILE PROF1='&CAT' TO PRINT
  866. CLEAR
  867. STORE ' ' TO CONT
  868. @ 10,5 SAY 'Do you wish to continue ?'
  869. @ 12,5 SAY "Press 'M' to Return to the Menu"
  870. @ 14,5 SAY 'Press any other key to continue'
  871. @ 14,40 GET CONT
  872. READ
  873. CLEAR GETS
  874. IF UPPER(CONT) = 'M'
  875. ? CHR(18)
  876. SET PRINT OFF
  877. STORE .F. TO CONTINUE
  878. RETURN
  879. ELSE
  880. ENDDO
  881. ENDIF
  882. ENDIF
  883. RETURN
  884. * MAILIND.PRG - PRINTS CATEGORIES FOR PROF1 FOR MAILING LIST
  885. * PROGRAM (C) COPYRIGHT DECEMBER 3, 1983 PHILIP K. PERLMAN
  886. PROC MAILIND
  887. SET HEADING OFF
  888. SET SAFETY OFF
  889. CLEAR
  890. SET TALK OFF
  891. STORE 55 TO N
  892. STORE 0 TO INDEX
  893. USE MAIL INDEX COMP
  894. GO TOP
  895. STORE PROF1 TO KEY
  896. SET PRINT ON
  897. STORE .T. TO TRUE
  898. DO WHILE TRUE
  899. ?
  900. ?
  901. ?       "CATEGORIES"
  902. ?
  903. DO WHILE .NOT. EOF() .AND. INDEX < N
  904. IF PROF1 <> ' ' .AND. PROF1 <> KEY
  905. ? PROF1
  906. STORE INDEX + 1 TO INDEX
  907. STORE PROF1 TO KEY
  908. ENDIF
  909. SKIP
  910. ENDDO
  911. IF INDEX >= N
  912.      EJECT
  913.      STORE 0 TO INDEX
  914. ENDIF
  915. IF EOF()
  916.      STORE .F. TO TRUE
  917. ENDIF
  918. ENDDO
  919. SET PRINT OFF
  920. RETURN
  921. * MAILXMAS.PRG PRINTS CHRISTMAS LABELS FOR MAILING LIST PROGRAM (C) COPYRIGHT
  922. * DECEMBER 3, 1983 BY PHILIP K. PERLMAN
  923. PROC MAILXMAS
  924. SET HEADING OFF
  925. SET SAFETY OFF
  926. SET TALK OFF
  927. CLEAR
  928. PRIV ANS1
  929. STORE ' ' TO ANS1
  930. DO SELECT
  931. CLEAR
  932. @ 10,5 SAY 'Mount Labels one across by 15/16" high in Printer'
  933. @ 12,5 SAY 'Press any key when ready'
  934. set console off
  935. wait
  936. set console on
  937. IF UPPER(ANS1) = 'F'
  938.      USE MAIL INDEX PROF1    
  939.      LABEL FORM MAILAB SAMPLE TO PRINT FOR FRIEND='Y'
  940. ENDIF
  941. IF UPPER(ANS1) = 'B'
  942.      USE MAIL
  943.      LABEL FORM MAILAB SAMPLE TO PRINT FOR BUS_XMAS='Y'
  944. ENDIF
  945. RETURN
  946.  * MAILBIRT.PRG PRINTS CHRISTMAS LABELS FOR MAILING LIST PROGRAM (C) COPYRIGHT
  947. * DECEMBER 3, 1983 BY PHILIP K. PERLMAN
  948. PROC MAILBIRT
  949. SET HEADING OFF
  950. SET SAFETY OFF
  951. SET TALK OFF
  952. CLEAR
  953. USE MAIL INDEX LAST
  954. STORE .T. TO LIST
  955. DO WHILE LIST
  956. STORE ' ' TO LIST1
  957. @ 10,5 SAY "List <A>ll Birthdays or Birthdays for a <S>pecific Month?"
  958. @ 10,65 GET LIST1
  959. READ
  960. CLEAR GETS
  961.   IF UPPER(LIST1) = 'A' .OR. UPPER(LIST1)='S'
  962.     STORE .F. TO LIST
  963.   ELSE
  964.   ENDIF
  965. ENDDO LIST
  966. IF UPPER(LIST1)='A'
  967. CLEAR
  968. STORE .T. TO CHOICE
  969. DO WHILE CHOICE
  970. STORE ' ' TO CHOICE1
  971. @ 10,5 SAY "<L>ist Birthdays on Screen or <P>rint Labels?"
  972. @ 10,52 GET CHOICE1
  973. READ
  974. CLEAR GETS
  975. IF UPPER(CHOICE1)='L' .OR. UPPER(CHOICE1)='P'
  976.    STORE .F. TO CHOICE
  977. ELSE
  978. ENDIF
  979. ENDDO CHOICE
  980. CLEAR
  981. IF UPPER(CHOICE1)='L'
  982. GO TOP
  983. DISPLAY OFF ALL LAST, FIRST, BIRTHDAY FOR BIRTHDAY<> ' '
  984. ENDIF
  985. IF UPPER(CHOICE1)='P'
  986. CLEAR
  987. @ 10,5 SAY 'Mount Labels one across by 15/16" high in Printer'
  988. @ 12,5 SAY 'Press any key when ready'
  989. set console off
  990. wait
  991. set console on
  992. CLEAR
  993. LABEL FORM MAILAB SAMPLE TO PRINT FOR BIRTHDAY<>' '
  994. ENDIF
  995. ENDIF
  996. IF UPPER(LIST1)='S'
  997. CLEAR
  998. STORE '  ' TO DAY
  999. @ 10,5 SAY "List Birthdays for the Month Numbered >"
  1000. @ 10,45 GET DAY PICTURE '99'
  1001. READ
  1002. CLEAR GETS
  1003. STORE VAL(DAY) TO DAY1
  1004. STORE DAY-'/11/11' TO DATE
  1005. GO TOP
  1006. CLEAR
  1007. DISPLAY OFF ALL LAST, FIRST, BIRTHDAY FOR VAL(BIRTHDAY)=DAY1
  1008. WAIT
  1009. CLEAR
  1010. * STR.PRG TAKES SPACES FROM BEGINNING OF STRING AND PLACES THEM AT END
  1011. DO WHILE SUBSTR(DATE,1,1)=' ' .AND. LEN(DATE)>1
  1012.   DATE=SUBSTR(DATE,2)+ " "
  1013. ENDDO
  1014. STORE CMONTH(CTOD(DATE)) TO PHRASE
  1015. STORE ' ' TO CONTIN
  1016. @ 10,5 SAY "Do You Wish To Print Labels for Birthdays in:"
  1017. @ 10,52 SAY PHRASE
  1018. @ 12,5 SAY "Press <Y> for Labels, Any Other Key To Quit"
  1019. @ 12,52 GET CONTIN 
  1020. READ
  1021. CLEAR GETS
  1022. IF UPPER(CONTIN) = 'Y' 
  1023. CLEAR
  1024. @ 10,5 SAY 'Mount Labels one across by 15/16" high in Printer'
  1025. @ 12,5 SAY 'Press any key when ready'
  1026. set console off
  1027. wait
  1028. set console on
  1029. CLEAR
  1030. GO TOP
  1031.      LABEL FORM MAILAB SAMPLE TO PRINT FOR VAL(BIRTHDAY)=DAY1
  1032. ELSE
  1033. ENDIF
  1034. ENDIF
  1035. RETURN
  1036. * MAILSET.PRG SETS THE DEFAULT DRIVES FOR MAILMEN.PRG COPYRIGHT JULY 30,
  1037. * 1985 BY PHILIP K. PERLMAN
  1038. PROC MAILSET
  1039. SET HEADING OFF
  1040. SET SAFETY OFF
  1041. SET TALK OFF
  1042. store .t. to go
  1043. do while go
  1044. CLEAR
  1045. RESTORE FROM MAILSET ADDITIVE
  1046. store ' ' to change
  1047. @ 10,5 Say "The Drive <A,B,C, or D> for Database Files is " get drv
  1048. @ 12,5 SAY "Should the Bell be On <Y> or <N>? "get bell 
  1049. @ 14,5 say "<M>onochrome or <C>olor. Currently it is " get color
  1050. @ 16,5 SAY "Path to Search for Database Files is ";
  1051.  GET MPATH PICTURE "XXXXXXXXXXXXXXXXXXXX"
  1052. ?
  1053. ?
  1054. ? "Press <C> If You Wish To <C>hange These Defaults"
  1055. ?
  1056. ? "Press <M>enu To Leave Unchanged"
  1057. set console off
  1058. wait to change
  1059. set console on
  1060. store UPPER(change) to change
  1061.    if change = 'C'
  1062.       read
  1063.       CLEAR GETS
  1064.       STORE UPPER(DRV) TO DRV1
  1065.       STORE UPPER(BELL) TO BELL1
  1066.       STORE UPPER(COLOR) TO COLOR1
  1067.       STORE UPPER(MPATH) TO MPATH
  1068.          IF DRV ='A'.OR. DRV ='B'.OR. DRV ='C'.OR. DRV= 'D'
  1069.             STORE DRV1 to DRV
  1070.          ELSE
  1071.             LOOP
  1072.          ENDIF
  1073.          IF BELL1 ='Y' .OR. BELL1= 'N'
  1074.             STORE BELL1 TO BELL
  1075.            IF BELL='Y'
  1076.                   STORE 'ON' TO BEEP
  1077.                ENDIF
  1078.                IF BELL='N'
  1079.                   STORE 'OFF' TO BEEP
  1080.                ENDIF
  1081.          ELSE
  1082.             LOOP
  1083.          ENDIF
  1084.          IF COLOR ='C'.OR. COLOR ='M'
  1085.             STORE COLOR1 TO COLOR
  1086.                IF COLOR='M'
  1087.                   STORE "+7/0,0/+7,0" TO COLR
  1088.                ENDIF
  1089.                IF COLOR ='C'
  1090.                   STORE "+7/1,+6/0,0" TO COLR
  1091.                ENDIF
  1092.          ELSE
  1093.             LOOP
  1094.          ENDIF
  1095.    RELEASE DRV1, BELL1, COLOR1
  1096.    SAVE TO MAILSET
  1097.    STORE .F. TO GO
  1098. ELSE
  1099.    IF CHANGE='M'
  1100.       STORE .F. TO GO
  1101.    ENDIF
  1102. ENDIF
  1103. ENDDO GO
  1104. RETURN
  1105. * MAILDEL.PRG PROGRAM FOR PURGING RECORDS MARKED FOR DELETION IN MAILMEN
  1106. * PROGRAM COPYRIGHT APRIL 26, 1985 BY PHILIP K. PERLMAN
  1107. PROC MAILDEL
  1108. SET HEADING OFF
  1109. SET SAFETY OFF
  1110. SET TALK OFF
  1111. CLEAR
  1112. @ 10,20 SAY "...Examining Files..."
  1113. USE MAIL INDEX LAST,COMP, PROF1
  1114. STORE 0 TO purg
  1115. go top
  1116. do while .not. EOF()
  1117. if last = ' ' .and. first =' '.and. company =' '
  1118. @ 10,20 say "...Purging..."
  1119. dele
  1120. store 1 to purg
  1121. else
  1122. @ 10,20 say "...Examining Files..."
  1123. endif
  1124. if DELETE()
  1125. store 1 to purg
  1126. endif
  1127. skip
  1128. enddo
  1129. IF purg =1
  1130. PACK
  1131. ELSE
  1132. CLEAR
  1133. @ 10,5 SAY "THERE ARE NO RECORDS TO BE PURGED."
  1134. @ 12,5 SAY "PRESS ANY KEY TO RETURN TO THE MENU"
  1135. SET CONSOLE OFF
  1136. WAIT
  1137. SET CONSOLE ON
  1138. ENDIF
  1139. RETURN
  1140. * MAILMSG.PRG  COPYRIGHT AUGUST 9, 1985 BY PHILIP K. PERLMAN
  1141. PROC MAILMSG
  1142. CLEAR
  1143. STORE REMIND +1 TO REMIND
  1144.    IF REMIND=5
  1145.       CLEAR
  1146.     TEXT
  1147.    **********************************************************************
  1148.    *   This program is being distributed under the "Shareware Concept." *
  1149.    *   It represents many hours of work. You are encouraged to use      *
  1150.    *   this program and share it with others. If you find it useful, a  *
  1151.    *   small contribution of $20 would be appreciated. Upon receipt of  * 
  1152.    *   your contribution we will send you the latest version with this  *
  1153.    *   message removed.                                                 * 
  1154.    *                         Philip K. Perlman                          * 
  1155.    *                         116 West 29th Street                       * 
  1156.    *                         NYC, NY 10001                              *
  1157.    *                                                                    *
  1158.    **********************************************************************   
  1159.     ENDTEXT
  1160.     STORE .T. TO TIME
  1161.         STORE 0 TO TEST
  1162.     STORE 0 TO TEST1
  1163.         STORE "* WAIT *" TO MSG
  1164.     DO WHILE TIME
  1165.           STORE TEST+1 TO TEST
  1166.           STORE TEST1+1 TO TEST1
  1167.             IF TEST=50
  1168.                STORE .F. TO TIME
  1169.             ENDIF
  1170.             IF TEST1 = 2
  1171.                @ 11,32 GET MSG
  1172.                CLEAR GETS
  1173.                STORE 0 TO TEST1
  1174.             ENDIF
  1175.             IF TEST1=1    
  1176.                @ 11,32 SAY "* WAIT *"
  1177.             ENDIF
  1178.         ENDDO
  1179. RELEASE TIME, TEST, TEST1, MSG
  1180. STORE 0 TO REMIND
  1181. ENDIF
  1182. RETURN