home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 6 / 06.iso / b / b007 / 2.ddi / AMISG / SELEFM.PRG < prev    next >
Encoding:
Text File  |  1990-05-09  |  3.7 KB  |  206 lines

  1. ** BEGIN OF SELEFM.PRG **
  2. ** PARA FNA(32) **
  3. @ 1,0 CLEAR
  4. @ 0,0 SAY '╤í╘±╓≈╬─╝■ . . .  '
  5. DIME FNOC(10,5)
  6. I=1
  7. DO WHILE I<9
  8. STOR '' TO FN,FNO,CFN
  9. I_I=I
  10. DO SELEF
  11. I=I_I
  12. IF LEN(FN)=0
  13. IF I=1
  14. RETU TO MAST
  15. ENDIF
  16. I=I-1
  17. EXIT
  18. ENDIF
  19. J=1
  20. DO WHILE J<I
  21. IF FNO=FNOC(J,2)
  22. J=0
  23. EXIT
  24. ENDIF
  25. J=J+1
  26. ENDDO
  27. IF J=0
  28. @ 0,15 SAY '╬─╝■[&CFN.]<&FN..DBF>╥╤╤í╣²! ╟δ╓╪╨┬╤í╘± . . . '
  29. LOOP
  30. ENDIF
  31. FNOC(I,1)=FN
  32. FNOC(I,2)=FNO
  33. FNOC(I,3)=CFN
  34. IF I=1
  35. SELE 10
  36. USE IDX INDE IDX
  37. @ 1,0 CLEAR
  38. SET FILT TO F_NO=FNO
  39. GO TOP
  40. @ 1, 20 SAY CFN+FN+'.DBF ╙╨╧┬┴╨╦≈╥²:'
  41. H=2
  42. DO WHILE .NOT. EOF()
  43. @ H,5 SAY '['+STR(H-1,2)+'].....'+IDX_DES+IDX_NAME+IDX_EXP
  44. SKIP
  45. H=H+1
  46. ENDDO
  47. YN=0
  48. @ 0,0 SAY SPACE(80)
  49. @ 0,20 SAY '╟δ╤í╘±╓≈╬─╝■╦≈╥²:' GET YN PICT '99' RANG 0,H-2
  50. READ
  51. IF YN=0
  52. IDXN=''
  53. ELSE
  54. GO TOP
  55. SKIP YN-1
  56. IDXN=TRIM(IDX_NAME)
  57. ENDIF
  58. USE
  59. ELSE
  60. @ 1,0 CLEAR
  61. J=1
  62. DO WHILE J<=I-1
  63. @ INT((J-1)/2)+1,IIF(J/2=INT(J/2),40,0) SAY STR(J,1)+'..'+FNOC(J,1)+'  '+FNOC(1,3)
  64. J=J+1
  65. ENDDO
  66. YN=1
  67. @ 0,0 SAY SPACE(80)
  68. @ 0,10 SAY FN+'.DBF '+CFN+'║═╧┬┴╨──╕÷╩²╛▌┐Γ╖ó╔·┴¬╧╡[1-'+STR(J-1,1)+']:' GET YN PICT '9' RANG 1,J-1
  69. READ
  70. FNOC(I,4)=YN
  71. CLEAR
  72. SELE 10
  73. USE DBD INDE DBD
  74. SET FILT TO F_NO=FNOC(I,2).AND.FIELD_TYPE$'CND'
  75. GO TOP
  76. K=1
  77. J=1
  78. DO WHILE .NOT.EOF()
  79. @ K,(J-1)*15 SAY STR((K-1)*5+J,2)+'.'+TRIM(C_NAME)
  80. K=IIF(J=5,K+1,K)
  81. J=IIF(J=5,1,J+1)
  82. SKIP
  83. ENDDO
  84. DO WHILE .T.
  85. @ 0,0 SAY SPACE(80)
  86. FD=0
  87. @ 0,2 SAY '╟δ╤í╘±╣╪┴¬╫╓╢╬[0..░┤╝╟┬╝║┼╥╗╥╗╢╘╙ª! ╞Σ╦ⁿ,╫╓╢╬▒╪╨δ╘┌<'+FNOC(FNOC(I,4),3)+'>╓╨!]: ' GET FD PICT '99' RANG 0,K*5+J-1
  88. READ
  89. IF FD=0
  90. FNOC(I,5)=''
  91. EXIT
  92. ELSE
  93. GO TOP
  94. SKIP FD-1
  95. FNOC(I,5)=TRIM(FIELD_NAME)
  96. TY=FIELD_TYPE
  97. FL=FIELD_LEN
  98. FD=FIELD_DEC
  99. SET FILT TO
  100. SET EXACT ON
  101. LOCA FOR F_NO=FNOC(FNOC(I,4),2).AND.FIELD_NAME=FNOC(I,5)
  102. SET EXACT OFF
  103. SET FILT TO F_NO=FNOC(I,2).AND.FIELD_TYPE$'CND'
  104. IF EOF()
  105. @ 0,2 SAY '╫╓╢╬<'+FNOC(I,5)+'>▓╗╘┌╓≈╬─╝■<'+FNOC(FNOC(I,4),1)+'.DBF>╓╨! ╟δ╓╪╨┬╤í╘± . . . '
  106. A=INKEY(2)
  107. LOOP
  108. ENDIF
  109. YN='N'
  110. @ 0,0 CLEAR TO 0,79
  111. @ 0,2 SAY '╩╟╫Θ║╧╣╪┴¬╫╓┬≡?[Y/N]:' GET YN PICT '!' VALID YN$'YN'
  112. READ
  113. IF YN='Y'
  114. DO CASE
  115. CASE TY='N'
  116. FNOC(I,5)='STR('+FNOC(I,5)+','+STR(FIELD_LEN,3)+IIF(FIELD_DEC=0,'',','+STR(FIELD_DEC,3))+')'
  117. CASE TY='D'
  118. FNOC(I,5)='DTOC('+FNOC(I,5)+')'
  119. ENDCASE
  120. DO WHILE .T.
  121. YN=1
  122. @ 0,0
  123. @ 0,2 SAY '╡▒╟░╣╪┴¬╫╓╬¬<'+FNOC(I,5)+'>!'
  124. @ 0,57 SAY ' ╟δ╝╠╨°╤í╘±╣╪┴¬╫╓:' GET YN PICT '999' RANG 1,K*5+J-1
  125. READ
  126. SET FILT TO F_NO=FNOC(I,2).AND.FIELD_TYPE$'CND'
  127. GO TOP
  128. SKIP YN-1
  129. FDN=TRIM(FIELD_NAME)
  130. FT=FIELD_TYPE
  131. FL=FIELD_LEN
  132. FD=FIELD_DEC
  133. SET FILT TO
  134. SET EXACT ON
  135. LOCA ALL FOR F_NO=FNOC(FNOC(I,4),2).AND.FIELD_NAME=FDN
  136. SET EXACT OFF
  137. IF EOF()
  138. @ 0,0
  139. @ 0,0 SAY '╫╓╢╬<&FDN.>▓╗╘┌╓≈╬─╝■<'+FNOC(FNOC(I,4),1)+'.DBF>╓╨! ╟δ╓╪╨┬╤í╘±!!!'
  140. A=INKEY(2)
  141. LOOP
  142. ENDIF
  143. DO CASE
  144. CASE FT='N'
  145. FNOC(I,5)=FNOC(I,5)+'+STR('+FDN+','+STR(FL,3)+IIF(FD=0,'',','+STR(FD,3))+')'
  146. CASE FT='D'
  147. FNOC(I,5)=FNOC(I,5)+'+DTOC('+FDN+')'
  148. CASE FT='C'
  149. FNOC(I,5)=FNOC(I,5)+'+'+FDN
  150. ENDCASE
  151. YN=' '
  152. @ 0,0 SAY SPACE(80)
  153. @ 0,2 SAY '╗╣╥¬╤í╘±╣╪┴¬╫╓┬≡?[Y/N]:' GET YN PICT '!' VALID YN$'YN'
  154. READ
  155. IF YN='N'
  156. EXIT
  157. ENDIF
  158. ENDDO
  159. ENDIF
  160. EXIT
  161. ENDIF
  162. ENDDO
  163. ENDIF
  164. YN='N'
  165. @ 0,0 SAY SPACE(80)
  166. @ 0,20 SAY '╗╣╨Φ╥¬╤í╘±╩²╛▌╬─╝■┬≡?[Y/N]:' GET YN PICT '!' VALID YN$'YN'
  167. READ
  168. IF UPPE(YN)<>'Y'
  169. EXIT
  170. ENDIF
  171. I=I+1
  172. @ 0,0 SAY '╤í╘±╕¿╬─╝■ . . .'+SPACE(64)
  173. ENDDO
  174. NUM=I
  175. CLOS DATA
  176. SELE 1
  177. STOR FNOC(1,1) TO FNA(3),FNA(8)
  178. FNA(6)=NUM
  179. FNA(7)=IDXN
  180. SELE 2
  181. USE TAA
  182. ZAP
  183. SELE 3
  184. USE DBD
  185. COPY TO DB FOR F_NO=FNOC(1,2)
  186. SELE 2
  187. APPE FROM DB
  188. REPL ALL FIELD_NAME WITH 'A->'+FIELD_NAME
  189. J=2
  190. I=9
  191. DO WHILE J<=NUM
  192. SELE 1
  193. FNA(I)=FNOC(J,4)
  194. FNA(I+1)=FNOC(J,5)
  195. FNA(I+2)=FNOC(J,1)
  196. I=I+3
  197. SELE 3
  198. COPY TO DB FOR F_NO=FNOC(J,2)
  199. SELE 2
  200. APPE FROM DB
  201. REPL ALL FOR SUBS(FIELD_NAME,3,1)<>'>' FIELD_NAME WITH SUBS('ABCDEFGHIJ',J,1)+'->'+FIELD_NAME
  202. J=J+1
  203. ENDDO
  204. CLOS DATA
  205. RETU
  206.