home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / misc1 / dprog12.lzh / STATES.PRC < prev    next >
Encoding:
Text File  |  1987-11-01  |  28.7 KB  |  1,206 lines

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