home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / misc1 / dprog12.lzh / MAIL.PRC < prev    next >
Encoding:
Text File  |  1987-12-26  |  33.5 KB  |  1,373 lines

  1. PROCEDURE ST2
  2. PARAMETERS Num2,Str2
  3. ********************************************************************************
  4. *
  5. * System             : MAIL    
  6. *
  7. *
  8. * System Description : Mailing List System                                        
  9. *
  10. *
  11. * Module             : MAIL.ST2
  12. *
  13. *
  14. * Module Description : Return a 1 or 2 digit number
  15. *
  16. *
  17. * Written by         : A. Michael Hearn                                  
  18. *
  19. *
  20. * Copyright (c) 1987 by University Research                               
  21. *
  22. ********************************************************************************
  23. IF Num2 < 10
  24.    STORE STR(Num2,1) TO Str2
  25. ELSE
  26.    STORE STR(Num2,2) TO Str2
  27. ENDIF
  28.  
  29.  
  30.  
  31. PROCEDURE IND
  32. ********************************************************************************
  33. *
  34. * System             : MAIL    
  35. *
  36. *
  37. * System Description : Mailing List System                                        
  38. *
  39. *
  40. * Module             : MAIL.IND
  41. *
  42. *
  43. * Module Description : Build Index if needed
  44. *
  45. *
  46. * Written by         : A. Michael Hearn                                  
  47. *
  48. *
  49. * Copyright (c) 1987 by University Research                               
  50. *
  51. ********************************************************************************
  52. IF .NOT. File("MAIL.NDX")
  53.    @24,0 SAY SPACE(78)
  54.    @24,0 SAY "Please wait, file is being Indexed"
  55.    SELECT A
  56.    USE MAIL    
  57.    INDEX ON LNAME+FNAME+MI TO MAIL    
  58.    @24,0 SAY SPACE(78)
  59. ENDIF
  60. USE MAIL INDEX MAIL    
  61. RETURN
  62.  
  63.  
  64.  
  65. PROCEDURE FMT
  66. ********************************************************************************
  67. *
  68. * System             : MAIL    
  69. *
  70. *
  71. * System Description : Mailing List System                                        
  72. *
  73. *
  74. * Module             : MAIL.FMT
  75. *
  76. *
  77. * Module Description : Screen Format file
  78. *
  79. *
  80. * Written by         : A. Michael Hearn                                  
  81. *
  82. *
  83. * Copyright (c) 1987 by University Research                               
  84. *
  85. ********************************************************************************
  86. @4,12 GET MA_FNAME PICTURE "!XXXXXXXXXXXXXXXXXXXX" 
  87. @4,26 GET MA_MI PICTURE "!" 
  88. @4,28 GET MA_LNAME PICTURE "!XXXXXXXXXXXXXXXXXXXXXX" 
  89. @5,12 GET MA_F_16  
  90. @6,12 GET MA_ADD1  
  91. @7,12 GET MA_ADD2  
  92. @8,12 GET MA_CITY  
  93. @8,34 GET MA_STATE PICTURE "!!" 
  94. @8,37 GET MA_ZIPCODE PICTURE "#####" 
  95. @9,12 GET MA_PHONE PICTURE "(###)999-9999" 
  96. @10,12 GET MA_COMPANY  
  97. @15,7 GET MA_SW1 PICTURE "Y" 
  98. @15,23 GET MA_SW2 PICTURE "Y" 
  99. @15,39 GET MA_SW3 PICTURE "Y" 
  100. @15,55 GET MA_SW4 PICTURE "Y" 
  101. @15,71 GET MA_SW5 PICTURE "Y" 
  102. RETURN
  103.  
  104.  
  105.  
  106. PROCEDURE PUB
  107. ********************************************************************************
  108. *
  109. * System             : MAIL    
  110. *
  111. *
  112. * System Description : Mailing List System                                        
  113. *
  114. *
  115. * Module             : MAIL.PUB
  116. *
  117. *
  118. * Module Description : Define Public Fields
  119. *
  120. *
  121. * Written by         : A. Michael Hearn                                  
  122. *
  123. *
  124. * Copyright (c) 1987 by University Research                               
  125. *
  126. ********************************************************************************
  127. PUBLIC MA_FNAME  
  128. PUBLIC MA_MI     
  129. PUBLIC MA_LNAME  
  130. PUBLIC MA_F_16   
  131. PUBLIC MA_ADD1   
  132. PUBLIC MA_ADD2   
  133. PUBLIC MA_CITY   
  134. PUBLIC MA_STATE  
  135. PUBLIC MA_ZIPCODE
  136. PUBLIC MA_PHONE  
  137. PUBLIC MA_COMPANY
  138. PUBLIC MA_SW1    
  139. PUBLIC MA_SW2    
  140. PUBLIC MA_SW3    
  141. PUBLIC MA_SW4    
  142. PUBLIC MA_SW5    
  143. RETURN
  144.  
  145.  
  146.  
  147. PROCEDURE CAL
  148. ********************************************************************************
  149. *
  150. * System             : MAIL    
  151. *
  152. *
  153. * System Description : Mailing List System                                        
  154. *
  155. *
  156. * Module             : MAIL.CAL
  157. *
  158. *
  159. * Module Description : Calculate and display Calculated fields
  160. *
  161. *
  162. * Written by         : A. Michael Hearn                                  
  163. *
  164. *
  165. * Copyright (c) 1987 by University Research                               
  166. *
  167. ********************************************************************************
  168. RETURN
  169.  
  170.  
  171.  
  172. PROCEDURE INT
  173. ********************************************************************************
  174. *
  175. * System             : MAIL    
  176. *
  177. *
  178. * System Description : Mailing List System                                        
  179. *
  180. *
  181. * Module             : MAIL.INT
  182. *
  183. *
  184. * Module Description : Initialize memory fields from Init or empty
  185. *
  186. *
  187. * Written by         : A. Michael Hearn                                  
  188. *
  189. *
  190. * Copyright (c) 1987 by University Research                               
  191. *
  192. ********************************************************************************
  193. STORE SPACE(13) TO MA_FNAME  
  194. STORE SPACE(1) TO MA_MI     
  195. STORE SPACE(14) TO MA_LNAME  
  196. STORE SPACE(30) TO MA_F_16   
  197. STORE SPACE(30) TO MA_ADD1   
  198. STORE SPACE(30) TO MA_ADD2   
  199. STORE SPACE(21) TO MA_CITY   
  200. STORE SPACE(2) TO MA_STATE  
  201. STORE SPACE(5) TO MA_ZIPCODE
  202. STORE SPACE(14) TO MA_PHONE  
  203. STORE SPACE(30) TO MA_COMPANY
  204. STORE .N. TO MA_SW1    
  205. STORE .N. TO MA_SW2    
  206. STORE .N. TO MA_SW3    
  207. STORE .N. TO MA_SW4    
  208. STORE .N. TO MA_SW5    
  209. RETURN
  210.  
  211.  
  212.  
  213. PROCEDURE STO
  214. ********************************************************************************
  215. *
  216. * System             : MAIL    
  217. *
  218. *
  219. * System Description : Mailing List System                                        
  220. *
  221. *
  222. * Module             : MAIL.STO
  223. *
  224. *
  225. * Module Description : Store file fields to memory variables
  226. *
  227. *
  228. * Written by         : A. Michael Hearn                                  
  229. *
  230. *
  231. * Copyright (c) 1987 by University Research                               
  232. *
  233. ********************************************************************************
  234. STORE MAIL -> FNAME   TO MA_FNAME  
  235. STORE MAIL -> MI      TO MA_MI     
  236. STORE MAIL -> LNAME   TO MA_LNAME  
  237. STORE MAIL -> F_16    TO MA_F_16   
  238. STORE MAIL -> ADD1    TO MA_ADD1   
  239. STORE MAIL -> ADD2    TO MA_ADD2   
  240. STORE MAIL -> CITY    TO MA_CITY   
  241. STORE MAIL -> STATE   TO MA_STATE  
  242. STORE MAIL -> ZIPCODE TO MA_ZIPCODE
  243. STORE MAIL -> PHONE   TO MA_PHONE  
  244. STORE MAIL -> COMPANY TO MA_COMPANY
  245. STORE MAIL -> SW1     TO MA_SW1    
  246. STORE MAIL -> SW2     TO MA_SW2    
  247. STORE MAIL -> SW3     TO MA_SW3    
  248. STORE MAIL -> SW4     TO MA_SW4    
  249. STORE MAIL -> SW5     TO MA_SW5    
  250. RETURN
  251.  
  252.  
  253.  
  254. PROCEDURE REP
  255. ********************************************************************************
  256. *
  257. * System             : MAIL    
  258. *
  259. *
  260. * System Description : Mailing List System                                        
  261. *
  262. *
  263. * Module             : MAIL.REP
  264. *
  265. *
  266. * Module Description : Replace file fields to memory variables
  267. *
  268. *
  269. * Written by         : A. Michael Hearn                                  
  270. *
  271. *
  272. * Copyright (c) 1987 by University Research                               
  273. *
  274. ********************************************************************************
  275. REPLACE MAIL -> FNAME   WITH MA_FNAME  
  276. REPLACE MAIL -> MI      WITH MA_MI     
  277. REPLACE MAIL -> LNAME   WITH MA_LNAME  
  278. REPLACE MAIL -> F_16    WITH MA_F_16   
  279. REPLACE MAIL -> ADD1    WITH MA_ADD1   
  280. REPLACE MAIL -> ADD2    WITH MA_ADD2   
  281. REPLACE MAIL -> CITY    WITH MA_CITY   
  282. REPLACE MAIL -> STATE   WITH MA_STATE  
  283. REPLACE MAIL -> ZIPCODE WITH MA_ZIPCODE
  284. REPLACE MAIL -> PHONE   WITH MA_PHONE  
  285. REPLACE MAIL -> COMPANY WITH MA_COMPANY
  286. REPLACE MAIL -> SW1     WITH MA_SW1    
  287. REPLACE MAIL -> SW2     WITH MA_SW2    
  288. REPLACE MAIL -> SW3     WITH MA_SW3    
  289. REPLACE MAIL -> SW4     WITH MA_SW4    
  290. REPLACE MAIL -> SW5     WITH MA_SW5    
  291. RETURN
  292.  
  293.  
  294.  
  295. PROCEDURE REL
  296. ********************************************************************************
  297. *
  298. * System             : MAIL    
  299. *
  300. *
  301. * System Description : Mailing List System                                        
  302. *
  303. *
  304. * Module             : MAIL.REL
  305. *
  306. *
  307. * Module Description : Release Memory variables
  308. *
  309. *
  310. * Written by         : A. Michael Hearn                                  
  311. *
  312. *
  313. * Copyright (c) 1987 by University Research                               
  314. *
  315. ********************************************************************************
  316. RELEASE MA_FNAME  
  317. RELEASE MA_MI     
  318. RELEASE MA_LNAME  
  319. RELEASE MA_F_16   
  320. RELEASE MA_ADD1   
  321. RELEASE MA_ADD2   
  322. RELEASE MA_CITY   
  323. RELEASE MA_STATE  
  324. RELEASE MA_ZIPCODE
  325. RELEASE MA_PHONE  
  326. RELEASE MA_COMPANY
  327. RELEASE MA_SW1    
  328. RELEASE MA_SW2    
  329. RELEASE MA_SW3    
  330. RELEASE MA_SW4    
  331. RELEASE MA_SW5    
  332. RETURN
  333.  
  334.  
  335.  
  336. PROCEDURE ADD
  337. ********************************************************************************
  338. *
  339. * System             : MAIL    
  340. *
  341. *
  342. * System Description : Mailing List System                                        
  343. *
  344. *
  345. * Module             : MAIL.ADD
  346. *
  347. *
  348. * Module Description : Add New Records to file
  349. *
  350. *
  351. * Written by         : A. Michael Hearn                                  
  352. *
  353. *
  354. * Copyright (c) 1987 by University Research                               
  355. *
  356. ********************************************************************************
  357. STORE " " TO MH_Wait
  358. CALL MAIL
  359. DO WHILE .T.
  360.    DO INT
  361.    DO FMT
  362.    @24,0 SAY SPACE(78)
  363.    @24,0 SAY "Press Ctrl End without entering data to exit"
  364.    READ
  365.    IF MA_FNAME   <> " "
  366.       DO VAL
  367.       @24,0 SAY SPACE(79)
  368.       APPEND BLANK
  369.       DO REP
  370.       DO CAL
  371.       @24,0 SAY "Press any key to continue"
  372.       @24,30 GET MH_Wait
  373.       READ
  374.    ELSE
  375.      EXIT
  376.    ENDIF
  377. ENDDO
  378. RELEASE MH_Wait
  379. RETURN
  380.  
  381.  
  382.  
  383. PROCEDURE UPD
  384. ********************************************************************************
  385. *
  386. * System             : MAIL    
  387. *
  388. *
  389. * System Description : Mailing List System                                        
  390. *
  391. *
  392. * Module             : MAIL.UPD
  393. *
  394. *
  395. * Module Description : Search,Update,Edit,Find,Print,Examine file
  396. *
  397. *
  398. * Written by         : A. Michael Hearn                                  
  399. *
  400. *
  401. * Copyright (c) 1987 by University Research                               
  402. *
  403. ********************************************************************************
  404. STORE "N" TO MH_Function
  405. STORE "N" TO MH_Answer
  406. STORE SPACE(65) TO MH_Filt
  407. STORE "Next" TO MH_LMenu1
  408. STORE "Prev" TO MH_LMenu2
  409. STORE "Top " TO MH_LMenu3
  410. STORE "Bot " TO MH_LMenu4
  411. STORE "Quit" TO MH_LMenu5
  412. STORE "Edit" TO MH_LMenu6
  413. STORE "Set " TO MH_LMenu7
  414. STORE "List" TO MH_LMenu8
  415. STORE "Find" TO MH_LMenu9
  416. STORE "Help" TO MH_LMenu10
  417. STORE "Del " TO MH_LMenu11
  418. STORE 11 TO MH_Lopts
  419. CALL MAIL
  420. DO WHILE .T.
  421.    DO STO
  422.    DO DIS
  423.    DO CAL
  424.    IF LEN(TRIM(MH_Filt)) = 0
  425.       @24,55 SAY "    "
  426.    ELSE
  427.       @24,55 SAY "FILT"
  428.    ENDIF
  429.    IF Deleted()
  430.       @24,60 SAY "DEL"
  431.    ELSE
  432.       @24,60 SAY "   "
  433.    ENDIF
  434.    @24,65 SAY Ltrim(Str(RECNO()))+"/"+Ltrim(STR(RECCOUNT()))+"     "
  435.    STORE 1 TO MH_Lcho
  436.    @24,0 SAY SPACE(55)
  437.    STORE 0 TO MH_Col
  438.    STORE "1" TO MH_Sub
  439.    @24,0 SAY "Next Prev Top  Bot  Quit Edit Set  List Find Help Del"
  440.    STORE 1 TO MH_Lcho
  441.    STORE "1" TO MH_Sub
  442.    STORE 0 TO MH_Sel
  443.    @24,(MH_Lcho-1)*5 GET MH_Lmenu1
  444.    CLEAR GETS
  445.    STORE " " TO MH_Function
  446.    DO WHILE MH_Function = " "
  447.       STORE 0 TO MH_Sel
  448.       DO WHILE MH_Sel=0
  449.          STORE INKEY() TO MH_Sel
  450.       ENDDO
  451.       IF MH_Sel = 32
  452.          @24,(MH_Lcho-1)*5 SAY MH_Lmenu&MH_Sub
  453.          IF MH_Sel=4 .OR. MH_Sel = 32
  454.             STORE MH_Lcho+1 TO MH_Lcho
  455.          ENDIF
  456.          IF MH_Lcho> 11
  457.             STORE 1 TO MH_Lcho
  458.          ENDIF
  459.          DO St2 WITH MH_Lcho,MH_Sub
  460.          @24,(MH_Lcho-1)*5 GET MH_Lmenu&MH_Sub
  461.          CLEAR GETS
  462.          LOOP
  463.       ENDIF
  464.       STORE AT(UPPER(CHR(MH_Sel)),"NPTBQESLFHD") TO MH_Lcho1
  465.       IF MH_Lcho1 # 0
  466.          @24,0 SAY "Next Prev Top  Bot  Quit Edit Set  List Find Help Del"
  467.          DO St2 WITH MH_Lcho1,MH_Sub
  468.          STORE MH_Lcho1 TO MH_Lcho
  469.          @24,(MH_Lcho-1)*5 GET MH_Lmenu&MH_Sub
  470.          CLEAR GETS
  471.          STORE UPPER(CHR(MH_Sel)) TO MH_Function
  472.          EXIT
  473.       ENDIF
  474.       IF MH_Sel = 13
  475.          DO St2 WITH MH_Lcho, MH_Sub
  476.          STORE LEFT(MH_Lmenu&MH_Sub,1) TO MH_Function
  477.       ENDIF
  478.    ENDDO
  479.    DO CASE
  480.       CASE UPPER(MH_Function) = "N"
  481.       IF .NOT. EOF() 
  482.           Skip 1
  483.           IF EOF()
  484.              Skip -1
  485.            ENDIF
  486.       ENDIF
  487.       LOOP
  488.       CASE UPPER(MH_Function) = "P"
  489.       IF .NOT. BOF()
  490.          SKIP -1
  491.       ENDIF
  492.       LOOP
  493.       CASE UPPER(MH_Function) = "E"
  494.          DO STO
  495.          DO FMT
  496.          READ
  497.          DO VAL
  498.          DO CAL
  499.          DO REP
  500.          LOOP
  501.       CASE UPPER(MH_Function) = "T"
  502.            GOTO TOP
  503.            LOOP
  504.       CASE UPPER(MH_Function) = "B"
  505.            GOTO BOTTOM
  506.            LOOP
  507.       CASE UPPER(MH_Function) = "D"
  508.          STORE "N" TO MH_Answer
  509.          @24,0 SAY SPACE(78)
  510.          IF  DELETED()
  511.              @24,0 SAY "Recall this record?"
  512.          ELSE
  513.              @24,0 SAY "Delete this record?"
  514.          ENDIF
  515.          @24,22 GET MH_Answer
  516.          READ
  517.          IF UPPER(MH_Answer) = "Y"
  518.             IF DELETED()
  519.                RECALL
  520.             ELSE
  521.                DELETE
  522.             ENDIF
  523.          ENDIF
  524.          LOOP
  525.       CASE UPPER(MH_Function) = "S"
  526.          STORE "N" TO MH_Answer
  527.          STORE MH_Filt TO MH_FiltH
  528.          @24,0 SAY SPACE(78)
  529.          @24,0 SAY "FILTER: "
  530.          @24,9 GET MH_Filt
  531.          READ
  532.          @24,0 SAY SPACE(78)
  533.          IF MH_Filt <> MH_FiltH
  534.             SET FILTER TO &MH_Filt
  535.             GOTO TOP
  536.             CLEAR
  537.          CALL MAIL
  538.          ENDIF
  539.          IF EOF()
  540.             @24,0 SAY "Nothing matches filter! Press any key to continue"
  541.             @24,50 GET MH_Answer
  542.             READ
  543.          ENDIF
  544.          LOOP
  545.       CASE UPPER(MH_Function) = "F"
  546.            DO FND
  547.            LOOP
  548.       CASE UPPER(MH_Function) = "Q"
  549.            EXIT
  550.       CASE UPPER(MH_Function) = "L"
  551.            SET DEVICE TO PRINT
  552.            DO DIS
  553.            SET DEVICE TO SCREEN
  554.            LOOP
  555.       CASE UPPER(MH_Function)="H"
  556.            DO HLP WITH 2
  557.       CALL MAIL
  558.            LOOP
  559.       ENDCASE
  560.    STORE "N" TO MH_Function
  561. ENDDO
  562. SET FILTER TO
  563. RELEASE MH_Function,MH_Answer
  564. RETURN
  565.  
  566.  
  567.  
  568. PROCEDURE DIS
  569. ********************************************************************************
  570. *
  571. * System             : MAIL    
  572. *
  573. *
  574. * System Description : Mailing List System                                        
  575. *
  576. *
  577. * Module             : MAIL.DIS
  578. *
  579. *
  580. * Module Description : Display only Format file
  581. *
  582. *
  583. * Written by         : A. Michael Hearn                                  
  584. *
  585. *
  586. * Copyright (c) 1987 by University Research                               
  587. *
  588. ********************************************************************************
  589. @4,12 SAY MA_FNAME PICTURE "!XXXXXXXXXXXXXXXXXXXX"
  590. @4,26 SAY MA_MI PICTURE "!"
  591. @4,28 SAY MA_LNAME PICTURE "!XXXXXXXXXXXXXXXXXXXXXX"
  592. @5,12 SAY MA_F_16 
  593. @6,12 SAY MA_ADD1 
  594. @7,12 SAY MA_ADD2 
  595. @8,12 SAY MA_CITY 
  596. @8,34 SAY MA_STATE PICTURE "!!"
  597. @8,37 SAY MA_ZIPCODE PICTURE "#####"
  598. @9,12 SAY MA_PHONE PICTURE "(###)999-9999"
  599. @10,12 SAY MA_COMPANY 
  600. @15,7 SAY MA_SW1 PICTURE "Y"
  601. @15,23 SAY MA_SW2 PICTURE "Y"
  602. @15,39 SAY MA_SW3 PICTURE "Y"
  603. @15,55 SAY MA_SW4 PICTURE "Y"
  604. @15,71 SAY MA_SW5 PICTURE "Y"
  605. RETURN
  606.  
  607.  
  608.  
  609. PROCEDURE FND
  610. ********************************************************************************
  611. *
  612. * System             : MAIL    
  613. *
  614. *
  615. * System Description : Mailing List System                                        
  616. *
  617. *
  618. * Module             : MAIL.FND
  619. *
  620. *
  621. * Module Description : Find record by key function
  622. *
  623. *
  624. * Written by         : A. Michael Hearn                                  
  625. *
  626. *
  627. * Copyright (c) 1987 by University Research                               
  628. *
  629. ********************************************************************************
  630. STORE " " TO MH_Find
  631. STORE " " TO MH_Answer
  632. STORE 0   TO MH_Rec
  633. @4,12 GET MA_FNAME PICTURE "!XXXXXXXXXXXXXXXXXXXX"
  634. @4,26 GET MA_MI PICTURE "!"
  635. @4,28 GET MA_LNAME PICTURE "!XXXXXXXXXXXXXXXXXXXXXX"
  636. @5,12 SAY MA_F_16 
  637. @6,12 SAY MA_ADD1 
  638. @7,12 SAY MA_ADD2 
  639. @8,12 SAY MA_CITY 
  640. @8,34 SAY MA_STATE PICTURE "!!"
  641. @8,37 SAY MA_ZIPCODE PICTURE "#####"
  642. @9,12 SAY MA_PHONE PICTURE "(###)999-9999"
  643. @10,12 SAY MA_COMPANY 
  644. @15,7 SAY MA_SW1 PICTURE "Y"
  645. @15,23 SAY MA_SW2 PICTURE "Y"
  646. @15,39 SAY MA_SW3 PICTURE "Y"
  647. @15,55 SAY MA_SW4 PICTURE "Y"
  648. @15,71 SAY MA_SW5 PICTURE "Y"
  649. @24,0 SAY SPACE(78)
  650. @24,0 SAY "Enter data to find in open fields"
  651. READ
  652. IF LEN(TRIM(MA_LNAME+MA_FNAME+MA_MI)) # 0
  653.    STORE MA_LNAME+MA_FNAME+MA_MI TO MH_Find
  654.    STORE RECNO() TO MH_Rec
  655.    FIND &MH_Find
  656.    IF EOF()
  657.       GOTO MH_Rec
  658.       @24,0 SAY SPACE(78)
  659.       @24,0 SAY "Record Not Found! Press any key to continue"
  660.       @24,45 GET MH_Answer
  661.       READ
  662.    ENDIF
  663. ENDIF
  664. RELEASE MH_Find,MH_Answer,MH_Rec
  665. @24,0 SAY SPACE(78)
  666. RETURN
  667.  
  668.  
  669.  
  670. PROCEDURE RPT
  671. ********************************************************************************
  672. *
  673. * System             : MAIL    
  674. *
  675. *
  676. * System Description : Mailing List System                                        
  677. *
  678. *
  679. * Module             : MAILRPT
  680. *
  681. *
  682. * Module Description : Report Module
  683. *
  684. *
  685. * Written by         : A. Michael Hearn                                  
  686. *
  687. *
  688. * Copyright (c) 1987 by University Research                               
  689. *
  690. ********************************************************************************
  691. STORE .N. TO MH_Prt
  692. STORE .Y. TO MH_Con
  693. STORE .N. TO MH_Disk
  694. STORE "        " TO MH_Frm
  695. STORE ".T."+SPACE(73) TO MH_Cri
  696. STORE "             " TO MH_DFname
  697. CALL DPOUT
  698. @5,22 SAY MH_Prt
  699. @6,22 SAY MH_Con
  700. @7,22 SAY MH_Disk
  701. @7,42 SAY MH_DFname
  702. @9,15 SAY MH_Frm
  703. DO WHILE .T.
  704.    @5,22 GET MH_Prt PICTURE "L"
  705.    @6,22 GET MH_Con PICTURE "L"
  706.    @7,22 GET MH_Disk PICTURE "L"
  707.    @7,42 GET MH_Dfname PICTURE "!!!!!!!!!!!!!!"
  708.    @9,15 GET MH_Frm PICTURE "!!!!!!!!"
  709.    READ
  710.    @24,0 SAY SPACE(78)
  711.    IF MH_Prt .AND. MH_Con
  712.       @24,0 SAY "You must only specify one output device"
  713.       LOOP
  714.    ENDIF
  715.    IF MH_Prt .AND. MH_Disk
  716.       @24,0 SAY "You must only specify one output device"
  717.       LOOP
  718.    ENDIF
  719.    IF MH_Con .AND. MH_Disk
  720.       @24,0 SAY "You must only specify one output device"
  721.       LOOP
  722.    ENDIF
  723.    IF MH_Disk .AND. MH_Dfname = "          "
  724.       @24,0 SAY "You must specify a disk file name"
  725.       LOOP
  726.    ENDIF
  727.    IF MH_Frm = "        "
  728.       @24,0 SAY "You must enter a sort name or 'NOSORT'"
  729.       LOOP
  730.    ENDIF
  731.    EXIT
  732. ENDDO
  733. IF MH_Frm = "NOSORT  "
  734.    STORE .F. TO MH_NdxL
  735.    ELSE
  736.    IF .NOT.(FILE("DPSORT.DBF") .AND. FILE("DPSORT.NDX"))
  737.       @24,0 SAY SPACE(78)
  738.       @24,0 SAY "DPSORT files not found"
  739.       STORE " " TO MH_Ans
  740.       @24,40 GET MH_Ans
  741.       READ
  742.       RETURN
  743.    ENDIF
  744.    SELE I
  745.    USE DPSORT INDEX DPSORT
  746.    SEEK MH_Frm
  747.    IF EOF()
  748.       @24,0 SAY SPACE(78)
  749.       @24,0 SAY "Sort name not found on selection database (DPSORT.DBF)"
  750.       STORE " " TO MH_Ans
  751.       @24,40 GET MH_Ans
  752.       READ
  753.       SELE A
  754.       RETURN
  755.    ENDIF
  756.    STORE SORTCRI TO MH_Cri
  757.    STORE SORTNDX TO MH_NDX
  758.    STORE SORTFRM TO MH_FRM
  759.    STORE .F. TO MH_NdxL
  760.    IF SORTF1 <> "       "
  761.       STORE            SORTF1+"/"+SORTO1 TO MH_SRT
  762.       STORE .T. TO MH_NdxL
  763.    ENDIF
  764.    IF SORTF2 <> "       "
  765.       STORE MH_Srt+","+SORTF2+"/"+SORTO2 TO MH_SRT
  766.       STORE .T. TO MH_NdxL
  767.    ENDIF
  768.    IF SORTF3 <> "       "
  769.       STORE MH_Srt+","+SORTF3+"/"+SORTO3 TO MH_SRT
  770.       STORE .T. TO MH_NdxL
  771.    ENDIF
  772.    IF SORTF4 <> "       "
  773.       STORE MH_Srt+","+SORTF4+"/"+SORTO4 TO MH_SRT
  774.       STORE .T. TO MH_NdxL
  775.    ENDIF
  776.    IF SORTF5 <> "       "
  777.       STORE MH_Srt+","+SORTF5+"/"+SORTO5 TO MH_SRT
  778.       STORE .T. TO MH_NdxL
  779.    ENDIF
  780.    IF SORTF6 <> "       "
  781.       STORE MH_Srt+","+SORTF6+"/"+SORTO6 TO MH_SRT
  782.       STORE .T. TO MH_NdxL
  783.    ENDIF
  784.    IF SORTF7 <> "       "
  785.       STORE MH_Srt+","+SORTF7+"/"+SORTO7 TO MH_SRT
  786.       STORE .T. TO MH_NdxL
  787.    ENDIF
  788.    IF SORTF8 <> "       "
  789.       STORE MH_Srt+","+SORTF8+"/"+SORTO8 TO MH_SRT
  790.       STORE .T. TO MH_NdxL
  791.    ENDIF
  792.    IF SORTF9 <> "       "
  793.       STORE MH_Srt+","+SORTF9+"/"+SORTO9 TO MH_SRT
  794.       STORE .T. TO MH_NdxL
  795.    ENDIF
  796.    IF SORTF10 <> "       "
  797.       STORE MH_Srt+","+SORTF10+"/"+SORTO10 TO MH_SRT
  798.       STORE .T. TO MH_NdxL
  799.    ENDIF
  800.    USE
  801. ENDIF
  802. @16,13 GET MH_Frm
  803. @19,2  GET MH_Cri
  804. READ
  805. DO WHILE LEN(TRIM(MH_Frm)) = 0
  806.    @24,0 SAY "You must specify a form for REPORTs and LABELS"
  807.    @16,13 GET MH_Frm
  808.    READ
  809. ENDDO
  810. SELE A
  811. STORE TRIM(MH_Frm)+".FRM" TO MH_work
  812. IF .NOT. FILE(MH_Work)
  813.    @24,0 SAY SPACE(78)
  814.    @24,0 SAY "REPORT FORM "+TRIM(MH_Frm)+"not found"
  815.    STORE " " TO MH_Ans
  816.    @24,40 GET MH_Ans
  817.    READ
  818. ENDIF
  819. IF MH_NdxL
  820.    @24,0 SAY SPACE(78)
  821.    @24,0 SAY "SELECTING/SORTING DATA! PLEASE WAIT"
  822.    SORT TO &MH_NDX ON &MH_SRT FOR &MH_Cri
  823.    SELE J
  824.    USE &MH_NDX
  825. ELSE
  826.     @24,0 SAY SPACE(78)
  827.     @24,0 SAY "Using Unsorted File"
  828. ENDIF
  829. @24,0 SAY SPACE(78)
  830. @24,0 SAY "PRODUCING OUTPUT. PLEASE WAIT"
  831. DO CASE
  832.    CASE MH_Con
  833.        REPORT FORM &MH_Frm FOR &MH_Cri
  834.    CASE MH_Prt
  835.         SET CONSOLE OFF
  836.         REPORT FORM &MH_Frm TO PRINT FOR &MH_Cri
  837.         SET CONSOLE ON
  838.    CASE MH_Disk
  839.       SET CONSOLE OFF
  840.       SET ALTERNATE TO &MH_Dfname FOR &MH_Cri
  841.       SET ALTERNATE ON
  842.       REPORT FORM &MH_Frm FOR &MH_Cri
  843.       SET ALTERNATE OFF
  844.       CLOSE ALTERNATE
  845.       SET CONSOLE ON
  846. ENDCASE
  847. IF MH_NdxL
  848.    USE
  849. ENDIF
  850. SELE A
  851. RETURN
  852.  
  853.  
  854.  
  855. PROCEDURE LAB
  856. ********************************************************************************
  857. *
  858. * System             : MAIL    
  859. *
  860. *
  861. * System Description : Mailing List System                                        
  862. *
  863. *
  864. * Module             : MAILLAB
  865. *
  866. *
  867. * Module Description : Label Module
  868. *
  869. *
  870. * Written by         : A. Michael Hearn                                  
  871. *
  872. *
  873. * Copyright (c) 1987 by University Research                               
  874. *
  875. ********************************************************************************
  876. STORE .N. TO MH_Prt
  877. STORE .Y. TO MH_Con
  878. STORE .N. TO MH_Disk
  879. STORE "        " TO MH_Frm
  880. STORE ".T."+SPACE(73) TO MH_Cri
  881. STORE "             " TO MH_DFname
  882. CALL DPOUT
  883. @5,22 SAY MH_Prt
  884. @6,22 SAY MH_Con
  885. @7,22 SAY MH_Disk
  886. @7,42 SAY MH_DFname
  887. @9,15 SAY MH_Frm
  888. DO WHILE .T.
  889.    @5,22 GET MH_Prt PICTURE "L"
  890.    @6,22 GET MH_Con PICTURE "L"
  891.    @7,22 GET MH_Disk PICTURE "L"
  892.    @7,42 GET MH_Dfname PICTURE "!!!!!!!!!!!!!!"
  893.    @9,15 GET MH_Frm PICTURE "!!!!!!!!"
  894.    READ
  895.    @24,0 SAY SPACE(78)
  896.    IF MH_Prt .AND. MH_Con
  897.       @24,0 SAY "You must only specify one output device"
  898.       LOOP
  899.    ENDIF
  900.    IF MH_Prt .AND. MH_Disk
  901.       @24,0 SAY "You must only specify one output device"
  902.       LOOP
  903.    ENDIF
  904.    IF MH_Con .AND. MH_Disk
  905.       @24,0 SAY "You must only specify one output device"
  906.       LOOP
  907.    ENDIF
  908.    IF MH_Disk .AND. MH_Dfname = "          "
  909.       @24,0 SAY "You must specify a disk file name"
  910.       LOOP
  911.    ENDIF
  912.    IF MH_Frm = "        "
  913.       @24,0 SAY "You must enter a sort name or 'NOSORT'"
  914.       LOOP
  915.    ENDIF
  916.    EXIT
  917. ENDDO
  918. IF MH_Frm = "NOSORT  "
  919.    STORE .F. TO MH_NdxL
  920.    ELSE
  921.    IF .NOT.(FILE("DPSORT.DBF") .AND. FILE("DPSORT.NDX"))
  922.       @24,0 SAY SPACE(78)
  923.       @24,0 SAY "DPSORT files not found"
  924.       STORE " " TO MH_Ans
  925.       @24,40 GET MH_Ans
  926.       READ
  927.       RETURN
  928.    ENDIF
  929.    SELE I
  930.    USE DPSORT INDEX DPSORT
  931.    SEEK MH_Frm
  932.    IF EOF()
  933.       @24,0 SAY SPACE(78)
  934.       @24,0 SAY "Sort name not found on selection database (DPSORT.DBF)"
  935.       STORE " " TO MH_Ans
  936.       @24,40 GET MH_Ans
  937.       READ
  938.       SELE A
  939.       RETURN
  940.    ENDIF
  941.    STORE SORTCRI TO MH_Cri
  942.    STORE SORTNDX TO MH_NDX
  943.    STORE SORTFRM TO MH_FRM
  944.    STORE .F. TO MH_NdxL
  945.    IF SORTF1 <> "       "
  946.       STORE            SORTF1+"/"+SORTO1 TO MH_SRT
  947.       STORE .T. TO MH_NdxL
  948.    ENDIF
  949.    IF SORTF2 <> "       "
  950.       STORE MH_Srt+","+SORTF2+"/"+SORTO2 TO MH_SRT
  951.       STORE .T. TO MH_NdxL
  952.    ENDIF
  953.    IF SORTF3 <> "       "
  954.       STORE MH_Srt+","+SORTF3+"/"+SORTO3 TO MH_SRT
  955.       STORE .T. TO MH_NdxL
  956.    ENDIF
  957.    IF SORTF4 <> "       "
  958.       STORE MH_Srt+","+SORTF4+"/"+SORTO4 TO MH_SRT
  959.       STORE .T. TO MH_NdxL
  960.    ENDIF
  961.    IF SORTF5 <> "       "
  962.       STORE MH_Srt+","+SORTF5+"/"+SORTO5 TO MH_SRT
  963.       STORE .T. TO MH_NdxL
  964.    ENDIF
  965.    IF SORTF6 <> "       "
  966.       STORE MH_Srt+","+SORTF6+"/"+SORTO6 TO MH_SRT
  967.       STORE .T. TO MH_NdxL
  968.    ENDIF
  969.    IF SORTF7 <> "       "
  970.       STORE MH_Srt+","+SORTF7+"/"+SORTO7 TO MH_SRT
  971.       STORE .T. TO MH_NdxL
  972.    ENDIF
  973.    IF SORTF8 <> "       "
  974.       STORE MH_Srt+","+SORTF8+"/"+SORTO8 TO MH_SRT
  975.       STORE .T. TO MH_NdxL
  976.    ENDIF
  977.    IF SORTF9 <> "       "
  978.       STORE MH_Srt+","+SORTF9+"/"+SORTO9 TO MH_SRT
  979.       STORE .T. TO MH_NdxL
  980.    ENDIF
  981.    IF SORTF10 <> "       "
  982.       STORE MH_Srt+","+SORTF10+"/"+SORTO10 TO MH_SRT
  983.       STORE .T. TO MH_NdxL
  984.    ENDIF
  985.    USE
  986. ENDIF
  987. @16,13 GET MH_Frm
  988. @19,2  GET MH_Cri
  989. READ
  990. DO WHILE LEN(TRIM(MH_Frm)) = 0
  991.    @24,0 SAY "You must specify a form for REPORTs and LABELS"
  992.    @16,13 GET MH_Frm
  993.    READ
  994. ENDDO
  995. SELE A
  996. STORE TRIM(MH_Frm)+".LBL" TO MH_work
  997. IF .NOT. FILE(MH_Work)
  998.    @24,0 SAY SPACE(78)
  999.    @24,0 SAY "LABEL FORM "+TRIM(MH_Frm)+"not found"
  1000.    STORE " " TO MH_Ans
  1001.    @24,40 GET MH_Ans
  1002.    READ
  1003. ENDIF
  1004. IF MH_NdxL
  1005.    @24,0 SAY SPACE(78)
  1006.    @24,0 SAY "SELECTING/SORTING DATA! PLEASE WAIT"
  1007.    SORT TO &MH_NDX ON &MH_SRT FOR &MH_Cri
  1008.    SELE J
  1009.    USE &MH_NDX
  1010. ELSE
  1011.     @24,0 SAY SPACE(78)
  1012.     @24,0 SAY "Using Unsorted File"
  1013. ENDIF
  1014. @24,0 SAY SPACE(78)
  1015. @24,0 SAY "PRODUCING OUTPUT. PLEASE WAIT"
  1016. DO CASE
  1017.    CASE MH_Con
  1018.        LABEL FORM &MH_Frm FOR &MH_Cri
  1019.    CASE MH_Prt
  1020.         SET CONSOLE OFF
  1021.         LABEL FORM &MH_Frm TO PRINT FOR &MH_Cri
  1022.         SET CONSOLE ON
  1023.    CASE MH_Disk
  1024.       SET CONSOLE OFF
  1025.       SET ALTERNATE TO &MH_Dfname FOR &MH_Cri
  1026.       SET ALTERNATE ON
  1027.       LABEL FORM &MH_Frm FOR &MH_Cri
  1028.       SET ALTERNATE OFF
  1029.       CLOSE ALTERNATE
  1030.       SET CONSOLE ON
  1031. ENDCASE
  1032. IF MH_NdxL
  1033.    USE
  1034. ENDIF
  1035. SELE A
  1036. RETURN
  1037.  
  1038.  
  1039.  
  1040. PROCEDURE MM 
  1041. ********************************************************************************
  1042. *
  1043. * System             : MAIL    
  1044. *
  1045. *
  1046. * System Description : Mailing List System                                        
  1047. *
  1048. *
  1049. * Module             : MAIL.MM
  1050. *
  1051. *
  1052. * Module Description : Mail Merge Module
  1053. *
  1054. *
  1055. * Written by         : A. Michael Hearn                                  
  1056. *
  1057. *
  1058. * Copyright (c) 1987 by University Research                               
  1059. *
  1060. ********************************************************************************
  1061. STORE .N. TO MH_Prt
  1062. STORE .N. TO MH_Con
  1063. STORE .Y. TO MH_Disk
  1064. STORE "MMWORK    " TO MH_DFname
  1065. STORE "        " TO MH_Frm
  1066. STORE "WORDSTAR" TO MH_WP
  1067. STORE ".T."+SPACE(73) TO MH_Cri
  1068. CALL DPOUT
  1069. @11,2 SAY "Word Processor:"
  1070. @7,22 SAY MH_Disk
  1071. @7,42 SAY MH_DFname
  1072. @9,15 SAY MH_Frm
  1073. @11,19 SAY MH_WP
  1074. DO WHILE .T.
  1075.    @7,42 GET MH_Dfname PICTURE "!!!!!!!!!!"
  1076.    @9,15 GET MH_Frm PICTURE "!!!!!!!!"
  1077.    @11,19 GET MH_WP PICTURE "!!!!!!!!"
  1078.    READ
  1079.    @24,0 SAY SPACE(78)
  1080.    IF MH_Disk .AND. MH_Dfname = "          "
  1081.       @24,0 SAY "You must enter a disk filename"
  1082.       LOOP
  1083.    ENDIF
  1084.    IF MH_Frm = "        "
  1085.       @24,0 SAY "You must enter a sort form or 'NOSORT'"
  1086.       LOOP
  1087.    ENDIF
  1088.    IF .NOT.(MH_WP = "WORDSTAR" .OR. MH_WP = "MSWORD  ")
  1089.       LOOP
  1090.    ENDIF
  1091.    EXIT
  1092. ENDDO
  1093. IF MH_Frm = "NOSORT  "
  1094.    STORE .F. TO MH_NdxL
  1095.    ELSE
  1096.    IF .NOT. (FILE("DPSORT.DBF") .AND. FILE("DPSORT.NDX"))
  1097.       @24,0 SAY SPACE(78)
  1098.       @24,0 SAY "DPSORT files not found"
  1099.       STORE " " TO MH_Ans
  1100.       @24,40 GET MH_Ans
  1101.       READ
  1102.       RETURN
  1103.    ENDIF
  1104.    SELE I
  1105.    USE DPSORT INDEX DPSORT
  1106.    SEEK MH_Frm
  1107.    IF EOF()
  1108.       @24,0 SAY SPACE(78)
  1109.       @24,0 SAY "Sort name not found on selection database (DPSORT.DBF)"
  1110.       STORE " " TO MH_Ans
  1111.       @24,40 GET MH_Ans
  1112.       READ
  1113.       USE
  1114.       SELE A
  1115.       RETURN
  1116.    ENDIF
  1117.    STORE SORTCRI TO MH_Cri
  1118.    STORE SORTNDX TO MH_NDX
  1119.    STORE .F. TO MH_NdxL
  1120.    IF SORTF1 <> "       "
  1121.       STORE            SORTF1+"/"+SORTO1 TO MH_SRT
  1122.       STORE .T. TO MH_NdxL
  1123.    ENDIF
  1124.    IF SORTF2 <> "       "
  1125.       STORE MH_Srt+","+SORTF2+"/"+SORTO2 TO MH_SRT
  1126.       STORE .T. TO MH_NdxL
  1127.    ENDIF
  1128.    IF SORTF3 <> "       "
  1129.       STORE MH_Srt+","+SORTF3+"/"+SORTO3 TO MH_SRT
  1130.       STORE .T. TO MH_NdxL
  1131.    ENDIF
  1132.    IF SORTF4 <> "       "
  1133.       STORE MH_Srt+","+SORTF4+"/"+SORTO4 TO MH_SRT
  1134.       STORE .T. TO MH_NdxL
  1135.    ENDIF
  1136.    IF SORTF5 <> "       "
  1137.       STORE MH_Srt+","+SORTF5+"/"+SORTO5 TO MH_SRT
  1138.       STORE .T. TO MH_NdxL
  1139.    ENDIF
  1140.    IF SORTF6 <> "       "
  1141.       STORE MH_Srt+","+SORTF6+"/"+SORTO6 TO MH_SRT
  1142.       STORE .T. TO MH_NdxL
  1143.    ENDIF
  1144.    IF SORTF7 <> "       "
  1145.       STORE MH_Srt+","+SORTF7+"/"+SORTO7 TO MH_SRT
  1146.       STORE .T. TO MH_NdxL
  1147.    ENDIF
  1148.    IF SORTF8 <> "       "
  1149.       STORE MH_Srt+","+SORTF8+"/"+SORTO8 TO MH_SRT
  1150.       STORE .T. TO MH_NdxL
  1151.    ENDIF
  1152.    IF SORTF9 <> "       "
  1153.       STORE MH_Srt+","+SORTF9+"/"+SORTO9 TO MH_SRT
  1154.       STORE .T. TO MH_NdxL
  1155.    ENDIF
  1156.    IF SORTF10 <> "       "
  1157.       STORE MH_Srt+","+SORTF10+"/"+SORTO10 TO MH_SRT
  1158.       STORE .T. TO MH_NdxL
  1159.    ENDIF
  1160. USE
  1161. ENDIF
  1162. @19,2 GET MH_Cri
  1163. READ
  1164. SELE A
  1165. IF  MH_NdxL
  1166.    @24,0 SAY SPACE(78)
  1167.    @24,0 SAY "SELECTING/SORTING DATA! PLEASE WAIT"
  1168.    SORT TO &MH_NDX ON &MH_SRT FOR &MH_Cri
  1169.    SELE J
  1170.    USE &MH_NDX
  1171. ELSE
  1172.     @24,0 SAY SPACE(78)
  1173.     @24,0 SAY "Using Unsorted File"
  1174. ENDIF
  1175. @24,0 SAY SPACE(78)
  1176. @24,0 SAY "PRODUCING OUTPUT. PLEASE WAIT"
  1177. IF (.NOT. MH_NdxL) .AND. (LEN(TRIM(MH_Cri)) <> 0)
  1178.    LOCATE FOR &MH_Cri
  1179. ENDIF
  1180. IF EOF()
  1181.    @24,0 SAY SPACE(78)
  1182.    @24,0 SAY "No records meet criteria."
  1183.    STORE " " TO MH_Ans
  1184.    @24,40 GET MH_Ans
  1185.    READ
  1186.    SELE A
  1187.    RETURN
  1188. ENDIF
  1189. *
  1190. * Turn on output device
  1191. *
  1192. SET CONSOLE OFF
  1193. STORE TRIM(MH_Dfname)+".DOC" TO MH_Ofn
  1194. SET ALTERNATE TO &MH_Ofn
  1195. SET ALTERNATE ON
  1196. *
  1197. * Output field header
  1198. *
  1199. DO CASE
  1200.    CASE MH_WP = "WORDSTAR"
  1201.       ?".OP"
  1202.       ?".DF "+MH_DFNAME+".DAT"
  1203.       ?".RV FNAME,MI,LNAME,F_16,ADD1,ADD2,CITY,STATE,ZIPCODE,PHONE,COMPANY,SW1,SW2,SW3,SW4,SW5"
  1204.       ?
  1205.       SET ALTERNATE OFF
  1206.       CLOSE ALTERNATE
  1207.       STORE TRIM(MH_Dfname)+".DAT" TO MH_Ofn
  1208.       SET ALTERNATE TO &MH_Ofn
  1209.       SET ALTERNATE ON
  1210.    CASE MH_WP = "MSWORD  "
  1211.         ?"FNAME,MI,LNAME,F_16,ADD1,ADD2,CITY,STATE,ZIPCODE,PHONE,COMPANY,SW1,SW2,SW3,SW4,SW5"
  1212. ENDCASE
  1213. *
  1214. * Output Selected data
  1215. *
  1216. DO WHILE .NOT. EOF()
  1217.    DO CASE
  1218.       CASE (MH_WP = "WORDSTAR") .OR. (MH_WP = "MSWORD  ")
  1219.          ? ""
  1220.          ?? CHR(34)+TRIM(FNAME)+CHR(34)+","
  1221.          ?? CHR(34)+TRIM(MI)+CHR(34)+","
  1222.          ?? CHR(34)+TRIM(LNAME)+CHR(34)+","
  1223.          ?? CHR(34)+TRIM(F_16)+CHR(34)+","
  1224.          ?? CHR(34)+TRIM(ADD1)+CHR(34)+","
  1225.          ?? CHR(34)+TRIM(ADD2)+CHR(34)+","
  1226.          ?? CHR(34)+TRIM(CITY)+CHR(34)+","
  1227.          ?? CHR(34)+TRIM(STATE)+CHR(34)+","
  1228.          ?? CHR(34)+TRIM(ZIPCODE)+CHR(34)+","
  1229.          ?? CHR(34)+TRIM(PHONE)+CHR(34)+","
  1230.          ?? CHR(34)+TRIM(COMPANY)+CHR(34)+","
  1231.          IF SW1
  1232.             ?? CHR(34)+"TRUE"+CHR(34)+","
  1233.          ELSE
  1234.             ?? CHR(34)+"FALSE"+CHR(34)+","
  1235.          ENDIF
  1236.          IF SW2
  1237.             ?? CHR(34)+"TRUE"+CHR(34)+","
  1238.          ELSE
  1239.             ?? CHR(34)+"FALSE"+CHR(34)+","
  1240.          ENDIF
  1241.          IF SW3
  1242.             ?? CHR(34)+"TRUE"+CHR(34)+","
  1243.          ELSE
  1244.             ?? CHR(34)+"FALSE"+CHR(34)+","
  1245.          ENDIF
  1246.          IF SW4
  1247.             ?? CHR(34)+"TRUE"+CHR(34)+","
  1248.          ELSE
  1249.             ?? CHR(34)+"FALSE"+CHR(34)+","
  1250.          ENDIF
  1251.          IF SW5
  1252.             ?? CHR(34)+"TRUE"+CHR(34)+","
  1253.          ELSE
  1254.             ?? CHR(34)+"FALSE"+CHR(34)+","
  1255.          ENDIF
  1256.    ENDCASE
  1257.    IF  MH_NdxL .OR. (LEN(TRIM(MH_Cri)) = 0)
  1258.        SKIP
  1259.    ELSE
  1260.        CONTINUE
  1261.    ENDIF
  1262. ENDDO
  1263. *
  1264. * Finish output
  1265. *
  1266. SET ALTERNATE OFF
  1267. CLOSE ALTERNATE
  1268. SET CONSOLE ON
  1269. IF MH_NdxL
  1270.    USE
  1271. ENDIF
  1272. SELE A
  1273. RETURN
  1274.  
  1275.  
  1276.  
  1277. PROCEDURE VAL
  1278. ********************************************************************************
  1279. *
  1280. * System             : MAIL    
  1281. *
  1282. *
  1283. * System Description : Mailing List System                                        
  1284. *
  1285. *
  1286. * Module             : MAIL.VAL
  1287. *
  1288. *
  1289. * Module Description : Validate data module
  1290. *
  1291. *
  1292. * Written by         : A. Michael Hearn                                  
  1293. *
  1294. *
  1295. * Copyright (c) 1987 by University Research                               
  1296. *
  1297. ********************************************************************************
  1298. SELE J
  1299. USE State INDEX State
  1300. DO WHILE .T.
  1301.    IF LEN(TRIM(MA_STATE)) # 0
  1302.       FIND &MA_STATE
  1303.       IF  EOF()
  1304.          @24,0 SAY SPACE(78)
  1305.          @24,0 SAY "Not found on State Database"
  1306.          @8,34 GET MA_STATE PICTURE "!!" 
  1307.          READ
  1308.       ELSE
  1309.          EXIT
  1310.       ENDIF
  1311.    ELSE
  1312.       @24,0 SAY SPACE(78)
  1313.       @24,0 SAY "Field cannot be blank"
  1314.       @8,34 GET MA_STATE PICTURE "!!" 
  1315.       READ
  1316.    ENDIF
  1317. ENDDO
  1318. SELE A
  1319. RETURN
  1320.  
  1321.  
  1322.  
  1323. PROCEDURE HLP
  1324. PARAMETERS What
  1325. ********************************************************************************
  1326. *
  1327. * System             : MAIL    
  1328. *
  1329. *
  1330. * System Description : Mailing List System                                        
  1331. *
  1332. *
  1333. * Module             : MAIL.HLP
  1334. *
  1335. *
  1336. * Module Description : Give general information
  1337. *
  1338. *
  1339. * Written by         : A. Michael Hearn                                  
  1340. *
  1341. *
  1342. * Copyright (c) 1987 by University Research                               
  1343. *
  1344. ********************************************************************************
  1345. CLEAR
  1346. DO CASE
  1347. CASE What = 1
  1348.      @1,1 SAY "Sorry, No help available"
  1349. CASE What = 2
  1350. @1,1 SAY "From the update screen, you can:"
  1351. @2,1 SAY ""
  1352. @3,1 SAY " N - Go to the next person"
  1353. @4,1 SAY " P - Go to the previous person"
  1354. @5,1 SAY " T - Go to the first person"
  1355. @6,1 SAY " L - Go to the last person"
  1356. @7,1 SAY " F - Find a person by using the index"
  1357. @8,1 SAY " S - Set a filter.  This will only display persons"
  1358. @9,1 SAY "     which meet some criteria you specified."
  1359. @10,1 SAY " R - Print a person"
  1360. @11,1 SAY " E - Change the data of a person"
  1361. @12,1 SAY " Q - Returns to the main menu"
  1362. OTHERWISE
  1363.      @1,1 SAY "Sorry, No help available"
  1364. ENDCASE
  1365. @24,0 SAY SPACE(80)
  1366. @24,0 SAY "Press any key to continue"
  1367. READ
  1368. @24,0 SAY SPACE(80)
  1369. RETURN
  1370.  
  1371.  
  1372.  
  1373.