home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dsubset.zip / SUBSET.PRG
Text File  |  1987-02-02  |  16KB  |  734 lines

  1. * (C) JOHN A. BRISTOR 1984,1985,1986,1987
  2. * ALL RIGHTS RESERVED
  3. *
  4. * 8414 Williamsburg Circle
  5. * Pensacola, FL 32514
  6. * Voice (904) 478-7658
  7. * Data (704) 264-7381    FIDO : 151/305
  8. *
  9. * SUBSET.PRG : Procedure FC237 from File Control Procedure Archives
  10. *
  11. * SUBSET.PRG written for Chesapeake Bay Citizen's Program, Baltimore, MD
  12. *         suppliment to Mailmerge Mailing Control System (Multimate Version)
  13. *
  14. *         Used by Highland Fraser Firs, Newland, NC utility in Mailmerge
  15. *         Mailing Control System (Word Perfect Version)
  16. *
  17. *         Wedgewood Productions, Crownsville, Md utility in Speaker/Entertainer
  18. *         Tracking System, Mailmerge Mailing System (Wordstar 2000 version)
  19. *
  20. *         Environmental Protection Agency, Wash. DC, Personnel Tracking,
  21. *         Program Management System, & Grant Tracking System
  22. *         Ranking Decision Support System.
  23. *
  24. *         American Association Of Retired Persons, Wash DC . Personnel
  25. *         Tracking System, Grant Tracking
  26. *
  27. *         Appalachian Poster Company, Lenoir, NC , used in Billboard Expense
  28. *         Statistical Tracking System
  29. *
  30. *         Rivers Printing Company, Boone, NC ; used in Circulation Control
  31. *         System.
  32. *
  33. *         Various other Mailmerge Systems
  34. *
  35. *      This is a limited example of the Subset File Control Procedure that will
  36. * work with any file but is LIMITED to the first 15 fields.  Modifications can
  37. * easily be made to extend this limit. The object of this procedure is to
  38. * allow the user an interactive way of creating a subset of a file determined
  39. * by criteria entered by the user. The resultant subset file can then be used
  40. * input into other procedures, reports, label forms, etc... Modifications can
  41. * also be made to include the '$' substr function and to handle more than three
  42. * criteria.  If you need the version that is not limited, feel free to contact
  43. * me.
  44. *
  45. * The Subset file created is normally sent into the Sorter Routine (FC198)
  46. * The sorter routine works almost identically as this one except it sorts
  47. * the file in whichever order that the user desires.
  48. *
  49. * PINFILE is the name of incoming file
  50. * POUTFILE is the name of the Subset file created
  51. * PJUNKFILE is name of temp file
  52.  
  53. * PROCEDURE FILE SUBSET
  54. PROCEDURE SUBSET1
  55. PARAMETERS PINFILE,POUTFILE,PJUNKFILE
  56. SET CONFIRM ON
  57. STORE SPACE(1) TO POS,POS1,POS2,POS3,POS4,POS5,POS6,POS7,POS8,POS9,POS10,POS11,POS12,POS13
  58. STORE SPACE(1) TO QUEST1,QUEST2,QUEST3,A
  59. STORE 0 TO QFIELD,STOP,DECIMAL,STOPFLAG,OOPS
  60. STORE SPACE(1) TO CURRENT,OPER1
  61. STORE 1 TO TP,WHERE
  62. STORE 13 TO LINE
  63. CLEAR
  64. SET SAFETY OFF
  65. SET TALK OFF
  66. SET BELL OFF
  67. SELECT 1
  68. USE &PINFILE
  69. GO TOP
  70. COPY STRU EXTENDED TO &PJUNKFILE
  71. SELECT 2
  72. USE &PJUNKFILE
  73. GO BOTTOM
  74. STORE RECNO() TO RECNUM
  75. GO TOP
  76.  
  77. @  1, 0 SAY "╔══════════════════════════════════════════════════════"
  78. @  1,55 SAY "════════════════════════╗"
  79. @  2, 0 SAY "║"
  80. @  2,79 SAY "║"
  81. @  3, 0 SAY "║"
  82. @  3,79 SAY "║"
  83. @  4, 0 SAY "║"
  84. @  4,79 SAY "║"
  85. @  5, 0 SAY "║"
  86. @  5,79 SAY "║"
  87. @  6, 0 SAY "║"
  88. @  6,79 SAY "║"
  89. @  7, 0 SAY "║"
  90. @  7,79 SAY "║"
  91. @  8, 0 SAY "║"
  92. @  8,79 SAY "║"
  93. @  9, 0 SAY "║"
  94. @  9,79 SAY "║"
  95. @ 10, 0 SAY "╚══════════════════════════════════════════════════════"
  96. @ 10,55 SAY "════════════════════════╝"
  97.  
  98. STORE 3 TO LCP
  99. STORE -15 TO CP
  100. STORE -10 TO CCP
  101.  
  102. DO WHILE .NOT. EOF()
  103.      IF CP > 56
  104.       STORE LCP + 1 TO LCP
  105.       STORE 9 TO CP
  106.       STORE 14 TO CCP
  107.      ELSE
  108.       STORE CP + 24 TO CP
  109.       STORE CCP + 24 TO CCP
  110.      ENDIF
  111.  
  112.      @ LCP, CP SAY STR(RECNO(),2) + ')'
  113.      @ LCP,CCP SAY FIELD_NAME
  114.  
  115.      SKIP
  116.  
  117. ENDDO
  118.  
  119.  
  120. DO WHILE STOP <> 99
  121.      STORE 0 TO OOPS
  122.      @ 11, 0 CLEAR
  123.      SET COLOR TO W/N
  124.      @ 11,32 SAY "SEARCH CRITERIA"
  125.      SET COLOR TO N/W
  126.      @ 13, 0 SAY SPACE(80)
  127.      SET COLOR TO W/N
  128.  
  129.      DO FIELD
  130.  
  131.      DO OPERATOR
  132.  
  133.      DO VARIABLE
  134.  
  135.      DO QUEST1
  136.  
  137.      IF UPPER(QUEST1) = "Y"
  138.       DO APPROVE
  139.       IF STOPFLAG = 99
  140.            CLOSE DATABASES
  141.            STORE 0 TO STOP
  142.            RETURN
  143.       ENDIF
  144.       LOOP
  145.      ENDIF
  146.  
  147.      DO BOOLEAN
  148.  
  149.      DO FIELD
  150.  
  151.      DO OPERATOR
  152.  
  153.      DO VARIABLE
  154.  
  155.      DO QUEST1
  156.  
  157.      IF UPPER(QUEST1) = "Y"
  158.      DO APPROVE
  159.      IF STOPFLAG = 99
  160.           CLOSE DATABASES
  161.           STORE 0 TO STOP
  162.           RETURN
  163.      ENDIF
  164.      LOOP
  165.      ENDIF
  166.  
  167.      DO BOOLEAN
  168.  
  169.      DO FIELD
  170.  
  171.      DO OPERATOR
  172.  
  173.      DO VARIABLE
  174.  
  175.      IF OOPS = 0
  176.      DO PUNCT
  177.      ENDIF
  178.  
  179.      DO APPROVE
  180.      IF STOPFLAG = 99
  181.       CLOSE DATABASES
  182.       STORE 0 TO STOP
  183.       RETURN
  184.      ENDIF
  185.  
  186. ENDDO
  187.  
  188. @ 15, 0 CLEAR
  189. STORE 0 TO STOP
  190. DO BOTTOMA
  191. @ 23,25 SAY "SEARCHING AND SELECTING DATA..."
  192. SET COLOR TO *W/N
  193. @ 23,53 SAY "..."
  194. SET COLOR TO W/N
  195.  
  196. STORE TRIM(POS1) + A + TRIM(POS2) + A + TRIM(POS3) + A + TRIM(POS4) + A + TRIM(POS5) + A + TRIM(POS6) + A + TRIM(POS7) + A + TRIM(POS8) + A + TRIM(POS9) + A + TRIM(POS10) + A + TRIM(POS11) + A + TRIM(POS12) + A + TRIM(POS13) TO BIGSTRING
  197. STORE TRIM(BIGSTRING) TO BIGSTRING
  198. STORE " " + TRIM(BIGSTRING) TO BIGSTRING
  199.  
  200. SELECT 1
  201. GO TOP
  202. COPY TO &POUTFILE ALL FOR &BIGSTRING
  203.  
  204. CLOSE DATABASES
  205.  
  206. RETURN
  207.  
  208. PROCEDURE BOOLEAN
  209. @ 15, 0 CLEAR
  210. @ 15,24 SAY "╔══════════════════════════════"
  211. @ 15,55 SAY "╗"
  212. @ 16,24 SAY "║"
  213. @ 16,55 SAY "║"
  214. @ 17,24 SAY "║"
  215. @ 17,55 SAY "║"
  216. @ 18,24 SAY "║"
  217. @ 18,55 SAY "║"
  218. @ 19,24 SAY "║"
  219. @ 19,55 SAY "║"
  220. @ 20,24 SAY "║"
  221. @ 20,55 SAY "║"
  222. @ 21,24 SAY "╚══════════════════════════════"
  223. @ 21,55 SAY "╝"
  224. @ 17,36 SAY "1) AND"
  225. @ 19,36 SAY "2) OR"
  226.  
  227. DO BOTTOMA
  228.  
  229. @ 23,23 SAY "Enter the Number of BOOLEAN : "
  230.  
  231. STORE " " TO OPER2
  232. DO WHILE .NOT. OPER2$'12'
  233.      STORE " " TO OPER2
  234.      @ 23,54 GET OPER2 PICTURE '9'
  235.      READ
  236. ENDDO
  237. @ 22, 0 CLEAR
  238.  
  239. DO CASE
  240.      CASE OPER2 = "1"
  241.       STORE ".AND." TO POS
  242.      CASE OPER2 = "2"
  243.       STORE ".OR." TO POS
  244. ENDCASE
  245.  
  246.  
  247. IF LEN(TRIM(POS)) + TP + 1 >= 78
  248.      STORE LINE + 1 TO LINE
  249.      STORE 1 TO TP
  250.      SET COLOR TO N/W
  251.      @    LINE, 0 SAY SPACE(80)
  252.      SET COLOR TO W/N
  253. ENDIF
  254.  
  255. SET COLOR TO N/W
  256. @ LINE,TP SAY TRIM(POS)
  257. SET COLOR TO W/N
  258. STORE COL() + 1 TO TP
  259.  
  260. DO POSITION
  261.  
  262. STORE " " TO POS
  263. @ 15, 0 CLEAR
  264.  
  265. RETURN
  266.  
  267.  
  268.  
  269. PROCEDURE OPERATOR
  270.  
  271. @ 15, 0 CLEAR
  272. @ 15,24 SAY "╔══════════════════════════════"
  273. @ 15,55 SAY "╗"
  274. @ 16,24 SAY "║"
  275. @ 16,55 SAY "║"
  276. @ 17,24 SAY "║"
  277. @ 17,55 SAY "║"
  278. @ 18,24 SAY "║"
  279. @ 18,55 SAY "║"
  280. @ 19,24 SAY "║"
  281. @ 19,55 SAY "║"
  282. @ 20,24 SAY "║"
  283. @ 20,55 SAY "║"
  284. @ 21,24 SAY "╚══════════════════════════════"
  285. @ 21,55 SAY "╝"
  286. @ 17,30 SAY "1)  >"
  287. @ 17,43 SAY "2)  <"
  288. @ 18,30 SAY "3)  ="
  289. @ 18,43 SAY "4)  <>"
  290. @ 19,30 SAY "5)  >="
  291. @ 19,43 SAY "6)  <="
  292. IF CURRENT = "C" .AND. OOPS = 0
  293.      @ 20,30 SAY "       7) $"
  294. ENDIF
  295.  
  296. DO BOTTOMA
  297.  
  298. @ 23,23 SAY "Enter the Number of OPERATOR : "
  299.  
  300. IF CURRENT = "C" .AND. OOPS = 0
  301.      STORE " " TO OPER1
  302.      DO WHILE .NOT. OPER1$'1234567'
  303.       STORE " " TO OPER1
  304.       @ 23,54 GET OPER1 PICTURE '9'
  305.       READ
  306.      ENDDO
  307. ELSE
  308.      STORE " " TO OPER1
  309.      DO WHILE .NOT. OPER1$'123456'
  310.       STORE " " TO OPER1
  311.       @ 23,54 GET OPER1 PICTURE '9'
  312.       READ
  313.      ENDDO
  314. ENDIF
  315. @ 22, 0 CLEAR
  316.  
  317. DO CASE
  318.      CASE OPER1 = "1"
  319.       STORE ">" TO POS
  320.      CASE OPER1 = "2"
  321.       STORE "<" TO POS
  322.      CASE OPER1 = "3"
  323.       STORE "=" TO POS
  324.      CASE OPER1 = "4"
  325.       STORE "<>" TO POS
  326.      CASE OPER1 = "5"
  327.       STORE ">=" TO POS
  328.      CASE OPER1 = "6"
  329.       STORE "<=" TO POS
  330.      CASE OPER1 = "7"
  331.       STORE "$" TO POS
  332.       STORE OOPS + 1 TO OOPS
  333. ENDCASE
  334.  
  335. IF LEN(TRIM(POS)) + TP + 1 >= 78
  336.      STORE LINE + 1 TO LINE
  337.      STORE 1 TO TP
  338.      SET COLOR TO N/W
  339.      @    LINE, 0 SAY SPACE(80)
  340.      SET COLOR TO W/N
  341. ENDIF
  342.  
  343. SET COLOR TO N/W
  344. IF OPER1 = "7"
  345.      @ LINE,TP-1 SAY TRIM(POS)
  346.      STORE COL() TO TP
  347. ELSE
  348.      @ LINE,TP SAY TRIM(POS)
  349.      STORE COL() + 1 TO TP
  350. ENDIF
  351. SET COLOR TO W/N
  352.  
  353. DO POSITION
  354.  
  355. STORE " " TO POS
  356. @ 15, 0 CLEAR
  357.  
  358. RETURN
  359.  
  360.  
  361. PROCEDURE FIELD
  362.  
  363. DO BOTTOMA
  364.  
  365. @ 23,25 SAY "Enter the Number of FIELD : "
  366. STORE 0 TO QFIELD
  367. DO WHILE QFIELD = 0
  368.      STORE 0 TO QFIELD
  369.      @ 23,53 GET QFIELD PICTURE '99' RANGE 1,RECNUM
  370.      READ
  371. ENDDO
  372. @ 22, 0 CLEAR
  373.  
  374. GO TOP
  375. GO QFIELD
  376. STORE FIELD_NAME TO POS
  377. STORE FIELD_TYPE TO CURRENT
  378. STORE FIELD_DEC TO DECIMAL
  379.  
  380. IF LEN(TRIM(POS)) + TP + 1 >= 78
  381.      STORE LINE + 1 TO LINE
  382.      STORE 1 TO TP
  383.      SET COLOR TO N/W
  384.      @    LINE, 0 SAY SPACE(80)
  385.      SET COLOR TO W/N
  386. ENDIF
  387.  
  388. SET COLOR TO N/W
  389. @ LINE,TP SAY TRIM(POS)
  390. SET COLOR TO W/N
  391. STORE COL() + 1 TO TP
  392.  
  393. DO POSITION
  394.  
  395. RETURN
  396.  
  397.  
  398. PROCEDURE VARIABLE
  399.  
  400. DO BOTTOMA
  401.  
  402. DO CASE
  403.      CASE CURRENT = "C"
  404.       IF OPER1 = "7"
  405.            @ 23, 2 SAY "Enter the SEARCH CHARACTERS : "
  406.            STORE SPACE(10) TO QSTRING
  407.            DO WHILE QSTRING = SPACE(10)
  408.             STORE SPACE(10) TO QSTRING
  409.             @ 23,32 GET QSTRING
  410.             READ
  411.            ENDDO
  412.            STORE "'" + TRIM(QSTRING) + "'" TO POS
  413.  
  414.       ELSE
  415.            @ 23, 2 SAY "Enter the Comparison STRING : "
  416.  
  417.            STORE SPACE(FIELD_LEN) TO QSTRING
  418.            DO WHILE QSTRING = SPACE(FIELD_LEN)
  419.             STORE SPACE(FIELD_LEN) TO QSTRING
  420.             @ 23,32 GET QSTRING
  421.             READ
  422.            ENDDO
  423.  
  424.            STORE '"' + TRIM(QSTRING) + '"' TO POS
  425.       ENDIF
  426.  
  427.      CASE CURRENT = "N" .AND. DECIMAL = 0
  428.  
  429.       @ 23, 2 SAY "Enter the Comparison INTEGER : "
  430.  
  431.       STORE SPACE(FIELD_LEN) TO QSTRING
  432.       DO WHILE QSTRING = SPACE(FIELD_LEN)
  433.            STORE SPACE(FIELD_LEN) TO QSTRING
  434.            @ 23,33 GET QSTRING
  435.            READ
  436.       ENDDO
  437.  
  438.       STORE TRIM(QSTRING) TO POS
  439.  
  440.      CASE CURRENT = "N" .AND. DECIMAL <> 0
  441.  
  442.       @ 23, 2 SAY "Enter the Comparison INTEGER : "
  443.  
  444.       STORE SPACE(FIELD_DEC) TO TEMP2
  445.       STORE SPACE(FIELD_LEN - LEN(TEMP2) - 1) TO TEMP1
  446.       DO WHILE TEMP1 = SPACE(FIELD_LEN - LEN(TEMP2) - 1)
  447.            STORE SPACE(FIELD_LEN - LEN(TEMP2) - 1) TO TEMP1
  448.            @ 23,33 GET TEMP1
  449.            READ
  450.       ENDDO
  451.  
  452.       @ 23, 2 SAY "Enter the Comparison DECIMAL : "
  453.  
  454.       DO WHILE TEMP2 = SPACE(FIELD_DEC)
  455.            STORE SPACE(FIELD_DEC) TO TEMP2
  456.            @ 23,33 GET TEMP2
  457.            READ
  458.       ENDDO
  459.  
  460.       STORE TRIM(TEMP1) + "." + TRIM(TEMP2) TO POS
  461.  
  462.      CASE CURRENT = "D"
  463.  
  464.       @ 23, 3 SAY "Enter the Comparison DATE : "
  465.  
  466.       STORE DATE() TO DATER
  467.       @ 23,31 GET DATER
  468.       READ
  469.  
  470.       STORE "CTOD(" + "'" + DTOC(DATER) + "'" + ")" TO POS
  471.  
  472.      CASE CURRENT = "L"
  473.  
  474.       @ 23, 2 SAY "Enter the (T)rue or (F)alse : "
  475.  
  476.  
  477.       STORE SPACE(FIELD_LEN) TO QSTRING
  478.       DO WHILE .NOT. QSTRING$'TFtf'
  479.            STORE SPACE(FIELD_LEN) TO QSTRING
  480.            @ 23,32 GET QSTRING
  481.            READ
  482.       ENDDO
  483.  
  484.       STORE "." + TRIM(QSTRING) + "." TO POS
  485.  
  486. ENDCASE
  487.  
  488. IF LEN(TRIM(POS)) + TP + 1 >= 78
  489.      STORE LINE + 1 TO LINE
  490.      STORE 1 TO TP
  491.      SET COLOR TO N/W
  492.      @    LINE, 0 SAY SPACE(80)
  493.      SET COLOR TO W/N
  494. ENDIF
  495.  
  496. SET COLOR TO N/W
  497. @ LINE,TP SAY TRIM(POS)
  498. SET COLOR TO W/N
  499. STORE COL() + 1 TO TP
  500.  
  501. DO POSITION
  502.  
  503. STORE " " TO POS,OPER1
  504. @ 15, 0 CLEAR
  505.  
  506. RETURN
  507.  
  508.  
  509. PROCEDURE PUNCT
  510.  
  511. DO BOTTOMA
  512.  
  513. @ 23,24 SAY "Do you want PARENTHESIS? (Y/N) "
  514. STORE " " TO ANSWER
  515. DO WHILE .NOT. ANSWER$'YNyn'
  516.      STORE " " TO ANSWER
  517.      @ 23,56 GET ANSWER PICTURE 'A'
  518.      READ
  519. ENDDO
  520.  
  521. @ 22, 0 CLEAR
  522.  
  523. IF UPPER(ANSWER) = "Y"
  524.      DO BOTTOMA
  525.      @ 23,20 SAY "Around (1) Group #1 or (2) Group #2 : "
  526.      STORE " " TO ANS1
  527.      DO WHILE .NOT. ANS1$'12'
  528.       STORE " " TO ANS1
  529.       @ 23,59 GET ANS1 PICTURE '9'
  530.       READ
  531.      ENDDO
  532.      @ 22, 0 CLEAR
  533. ELSE
  534.      STORE "0" TO ANS1
  535. ENDIF
  536.  
  537. DO CASE
  538.      CASE ANS1 = "1"
  539.      IF AT('$',POS5) <> 0
  540.          STORE TRIM(POS11) TO POS13
  541.          STORE TRIM(POS10) TO POS12
  542.          STORE TRIM(POS9) TO POS11
  543.          STORE TRIM(POS8) TO POS10
  544.          STORE TRIM(POS7) TO POS9
  545.          STORE TRIM(POS6) TO POS8
  546.          STORE ")" TO POS7
  547.          STORE TRIM(POS5) TO POS6
  548.          STORE TRIM(POS4) TO POS5
  549.          STORE TRIM(POS3) TO POS4
  550.          STORE TRIM(POS2) TO POS3
  551.          STORE TRIM(POS1) TO POS2
  552.          STORE "(" TO POS1
  553.      ELSE
  554.          STORE TRIM(POS11) TO POS13
  555.          STORE TRIM(POS10) TO POS12
  556.          STORE TRIM(POS9) TO POS11
  557.          STORE TRIM(POS8) TO POS10
  558.          STORE ")" TO POS9
  559.          STORE TRIM(POS7) TO POS8
  560.          STORE TRIM(POS6) TO POS7
  561.          STORE TRIM(POS5) TO POS6
  562.          STORE TRIM(POS4) TO POS5
  563.          STORE TRIM(POS3) TO POS4
  564.          STORE TRIM(POS2) TO POS3
  565.          STORE TRIM(POS1) TO POS2
  566.          STORE "(" TO POS1
  567.      ENDIF
  568.  
  569.      CASE ANS1 = "2"
  570.        STORE ")" TO POS13
  571.        STORE TRIM(POS11) TO POS12
  572.        STORE TRIM(POS10) TO POS11
  573.        STORE TRIM(POS9) TO POS10
  574.        STORE TRIM(POS8) TO POS9
  575.        STORE TRIM(POS7) TO POS8
  576.        STORE TRIM(POS6) TO POS7
  577.        STORE TRIM(POS5) TO POS6
  578.        STORE "(" TO POS5
  579.        STORE TRIM(POS4) TO POS4
  580.        STORE TRIM(POS3) TO POS3
  581.        STORE TRIM(POS2) TO POS2
  582.        STORE TRIM(POS1) TO POS1
  583.  
  584. ENDCASE
  585.  
  586. STORE TRIM(POS1) + A + TRIM(POS2) + A + TRIM(POS3) + A + TRIM(POS4) + A + TRIM(POS5) + A + TRIM(POS6) + A + TRIM(POS7) + A + TRIM(POS8) + A + TRIM(POS9) + A + TRIM(POS10) + A + TRIM(POS11) + A + TRIM(POS12) + A + TRIM(POS13) TO BIGSTRING
  587. STORE TRIM(BIGSTRING) TO BIGSTRING
  588.  
  589. @ 13, 0 CLEAR
  590. SET COLOR TO N/W
  591. @ 13, 0 SAY " "
  592. @ 13, 1 SAY BIGSTRING
  593. SET COLOR TO W/N
  594.  
  595. RETURN
  596.  
  597.  
  598. PROCEDURE APPROVE
  599.  
  600. DO BOTTOMA
  601.  
  602. STORE " " TO QUEST3
  603. @ 23,20 SAY "IS SEARCH CRITERIA CORRECT? (Y/N/Q)"
  604. DO WHILE .NOT. QUEST3$'YNynQq'
  605.      STORE " " TO QUEST3
  606.      @ 23,56 GET QUEST3 PICTURE 'A'
  607.      READ
  608. ENDDO
  609. @ 22, 0 CLEAR
  610.  
  611. DO CASE
  612.      CASE UPPER(QUEST3) = "Y"
  613.       STORE 99 TO STOP
  614.       STORE 0 TO STOPFLAG
  615.  
  616.      CASE UPPER(QUEST3) = "Q"
  617.       STORE 99 TO STOP
  618.       STORE 99 TO STOPFLAG
  619.  
  620.      CASE UPPER(QUEST3) = "N"
  621.       STORE 1 TO TP
  622.       STORE 13 TO LINE
  623.       STORE 0 TO STOP,QFIELD,DECIMAL,STOP,STOPFLAG
  624.       STORE SPACE(1) TO CURRENT
  625.       STORE SPACE(1) TO POS,POS1,POS2,POS3,POS4,POS5,POS6,POS7,POS8,POS9,POS10,POS11,POS12,POS13
  626. ENDCASE
  627.  
  628. RETURN
  629.  
  630.  
  631.  
  632. PROCEDURE QUEST1
  633.  
  634. DO BOTTOMA
  635.  
  636. STORE " " TO QUEST1
  637. @ 23,30 SAY "IS THIS ALL? (Y/N)"
  638. DO WHILE .NOT. QUEST1$'YNyn'
  639.      STORE " " TO QUEST1
  640.      @ 23,50 GET QUEST1 PICTURE 'A'
  641.      READ
  642. ENDDO
  643. @ 22, 0 CLEAR
  644. RETURN
  645.  
  646.  
  647.  
  648. PROCEDURE BOTTOMA
  649. @ 22, 0 CLEAR
  650. @ 22, 0 SAY "╔══════════════════════════════════════════════════════"
  651. @ 22,55 SAY "════════════════════════╗"
  652. @ 23, 0 SAY "║"
  653. @ 23,79 SAY "║"
  654. @ 24, 0 SAY "╚══════════════════════════════════════════════════════"
  655. @ 24,55 SAY "════════════════════════╝"
  656. RETURN
  657.  
  658. PROCEDURE POSITION
  659. DO CASE
  660.      CASE POS1 = " "
  661.       STORE POS TO POS1
  662.      CASE POS2 = " "
  663.       IF OPER1 = "7"
  664.            STORE TRIM(POS) + TRIM(POS1) TO POS1
  665.       ELSE
  666.            STORE POS TO POS2
  667.       ENDIF
  668.  
  669.      CASE POS3 = " "
  670.       IF OPER1 = "7"
  671.            STORE TRIM(POS) + TRIM(POS2) TO POS2
  672.       ELSE
  673.            STORE POS TO POS3
  674.       ENDIF
  675.  
  676.      CASE POS4 = " "
  677.       IF OPER1 = "7"
  678.            STORE TRIM(POS) + TRIM(POS3) TO POS3
  679.       ELSE
  680.            STORE POS TO POS4
  681.       ENDIF
  682.  
  683.      CASE POS5 = " "
  684.       IF OPER1 = "7"
  685.            STORE TRIM(POS) + TRIM(POS4) TO POS4
  686.       ELSE
  687.            STORE POS TO POS5
  688.       ENDIF
  689.  
  690.      CASE POS6 = " "
  691.       IF OPER1 = "7"
  692.            STORE TRIM(POS) + TRIM(POS5) TO POS5
  693.       ELSE
  694.            STORE POS TO POS6
  695.       ENDIF
  696.  
  697.      CASE POS7 = " "
  698.       IF OPER1 = "7"
  699.            STORE TRIM(POS) + TRIM(POS6) TO POS6
  700.       ELSE
  701.            STORE POS TO POS7
  702.       ENDIF
  703.  
  704.      CASE POS8 = " "
  705.       IF OPER1 = "7"
  706.            STORE TRIM(POS) + TRIM(POS7) TO POS7
  707.       ELSE
  708.            STORE POS TO POS8
  709.       ENDIF
  710.  
  711.      CASE POS9 = " "
  712.       IF OPER1 = "7"
  713.            STORE TRIM(POS) + TRIM(POS8) TO POS8
  714.       ELSE
  715.            STORE POS TO POS9
  716.       ENDIF
  717.  
  718.      CASE POS10 = " "
  719.       IF OPER1 = "7"
  720.            STORE TRIM(POS) + TRIM(POS9) TO POS9
  721.       ELSE
  722.            STORE POS TO POS10
  723.       ENDIF
  724.  
  725.      CASE POS11 = " "
  726.       IF OPER1 = "7"
  727.            STORE TRIM(POS) + TRIM(POS10) TO POS10
  728.       ELSE
  729.            STORE POS TO POS11
  730.       ENDIF
  731.  
  732. ENDCASE
  733. RETURN
  734.