home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a046 / 5.img / TEMPLATE / SSBSTATI.INC < prev    next >
Encoding:
Text File  |  1992-04-01  |  17.9 KB  |  805 lines

  1. <<* Program : SSBSTATI.INC  *>>
  2.  
  3. <<procedure SSBStatiBody>>
  4. <<integer recodefld,count>>
  5. <<begin>>
  6.  
  7. PROC {fileprefix}4
  8. PRIVATE fsum ,favg,db1,dbcx,dbmc,dbftj
  9. STORE '' TO fsum ,favg,db1,dbcx,dbmc
  10. DBFTJ = DBF()
  11. lnnkey=0
  12. DO WHIL .T.
  13.    DO pwaitkey WITH '0.═╦│÷ 1.╤í╘±╫▄╝╞╫╓╢╬ 2.╤í╘±╞╜╛∙╓╡╫╓╢╬ 3.╟≤═│╝╞╓╡ ',;
  14.       lnnkey
  15.    DO CASE
  16.    CASE lnnkey=0
  17.       RETURN
  18.    CASE lnnkey=1
  19.       repsum=.T.
  20.       repavg=.F.
  21.       DO pgetzd WITH repsum,repavg,dbftj
  22.    CASE lnnkey=2
  23.       repavg=.T.
  24.       repsum=.F.
  25.       DO pgetzd WITH repsum,repavg,dbftj
  26.    CASE lnnkey=3
  27.       DO ptj
  28.    ENDCASE
  29.    SELE 1
  30.    USE &dbftj
  31.    I = 1
  32.    fieldnum = FCOUNT()
  33.    DO WHILE I <= fieldnum
  34.       FF(I,2) = .F.
  35.       I = I + 1
  36.    ENDDO
  37.    lnnkey=MOD(lnnkey+1,4)
  38. ENDDO
  39. RETURN
  40.  
  41. PROC pgetzd
  42. PARA repsum ,repavg,dbftj
  43. db1=dbftj
  44. dbcx=LTRIM(STR(VAL(db1)+1))
  45. USE &dbftj
  46. endswitch = .T.
  47. rownum = 4
  48. win_bot = 13
  49. N = fieldnum
  50. keycode = 0
  51. SET COLOR TO N/BG
  52. @ 3, 14 CLEAR TO 14,60
  53. @ 3, 14 SAY "⌐░⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ╩²╛▌┐Γ╫╓╢╬ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐┤"
  54. I = 1
  55. PROW = 3
  56. DO WHILE I < 11
  57.    @ PROW+I,14 SAY "⌐ª"
  58.    @ PROW+I,60 SAY "⌐ª"
  59.    I = I + 1
  60. ENDDO
  61. @ 14, 14 SAY "⌐╕⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐╝"
  62. @ 18,  2 CLEAR TO 18,77
  63. I = 1
  64. PROW = 3
  65. DO WHILE  I < 11 .AND. I <= N
  66.    @ PROW+1,19 SAY FF(I,1)
  67.    @ PROW+1,40 SAY FF(I,3)
  68.    @ PROW+1,52 SAY FF(I,4)
  69.    @ PROW+1,55 SAY STR(FF(I,5),3)
  70.    I = I + 1
  71.    PROW = PROW + 1
  72. ENDDO
  73. I = 1
  74. fieldtab = ""
  75. SET COLOR TO N/W
  76. @ 22, 0 CLEAR TO 24,80
  77. @ 23, 2 SAY "íⁿí²PgUp PgDn ╤í╘±═│╝╞╫╓╢╬    [Enter] ╤í╓╨    [End] ╜ß╩°    [Esc] ╖┼╞·"
  78. SET COLOR TO N/W
  79. @ 4,17 CLEAR TO 4,58
  80. IF FF(I,2)
  81.    @ rownum, 17 SAY CHR(16)+" "
  82. ELSE
  83.    @ rownum, 17 SAY "  "
  84. ENDIF
  85. @ 4,19 SAY FF(I,1)
  86. @ 4,40 SAY FF(I,3)
  87. @ 4,52 SAY FF(I,4)
  88. @ 4,55 SAY STR(FF(I,5),3)
  89. ? SYS(2002)
  90. DO WHILE .T.
  91.    keycode=INKEY()
  92.    IF keycode = 6 .OR. keycode = 27  && [End].or.[Esc]
  93.       EXIT
  94.    ENDIF
  95.    DO CASE
  96.    CASE keycode = 24
  97.       DO CASE
  98.       CASE rownum > win_bot-1 .AND. I < N
  99.          SET COLOR TO N/GB
  100.          DO fieldchi
  101.          scroll 4,16,win_bot,58,1
  102.          I = I+1
  103.          SET COLOR TO N/W
  104.          DO fieldchi
  105.       CASE rownum <= win_bot-1 .AND. I < N
  106.          SET COLOR TO N/GB
  107.          DO fieldchi
  108.          rownum = rownum+1
  109.          I = I+1
  110.          SET COLOR TO N/W
  111.          DO fieldchi
  112.       OTHERWISE
  113.          ?? CHR(7)
  114.       ENDCASE
  115.    CASE keycode = 5
  116.       DO CASE
  117.       CASE rownum < 5 .AND. I > 1
  118.          SET COLOR TO N/GB
  119.          DO fieldchi
  120.          scroll 4,16,win_bot,58,-1
  121.          I = I - 1
  122.          SET COLOR TO N/W
  123.          DO fieldchi
  124.       CASE rownum >= 5 .AND. I > 1
  125.          SET COLOR TO N/GB
  126.          DO fieldchi
  127.          rownum = rownum-1
  128.          I = I - 1
  129.          SET COLOR TO N/W
  130.          DO fieldchi
  131.       OTHERWISE
  132.          ?? CHR(7)
  133.       ENDCASE
  134.    CASE keycode = 3
  135.       IF I + 5 <= N
  136.          step_l = 5
  137.       ELSE
  138.          step_l = N-I+1
  139.       ENDIF
  140.       SET COLOR TO N/GB
  141.       DO fieldchi
  142.       DO WHILE step_l > 0
  143.          DO CASE
  144.          CASE rownum > win_bot-1 .AND. I < N
  145.             DO fieldchi
  146.             scroll 4,16,win_bot,58,1
  147.             I = I+1
  148.          CASE rownum <= win_bot-1 .AND. I < N
  149.             rownum = rownum+1
  150.             I = I+1
  151.          OTHERWISE
  152.             ?? CHR(7)
  153.          ENDCASE
  154.          step_l = step_l-1
  155.       ENDDO
  156.       SET COLOR TO N/W
  157.       DO fieldchi
  158.    CASE keycode = 18
  159.       IF I - 5 >= 1
  160.          step_l = 5
  161.       ELSE
  162.          step_l = I
  163.       ENDIF
  164.       SET COLOR TO N/GB
  165.       DO fieldchi
  166.       DO WHILE step_l > 0
  167.          DO CASE
  168.          CASE rownum < 5 .AND. I > 1
  169.             DO fieldchi
  170.             scroll 4,16,win_bot,58,-1
  171.             I = I-1
  172.          CASE rownum >= 5 .AND. I > 1
  173.             rownum = rownum-1
  174.             I = I-1
  175.          OTHERWISE
  176.             ?? CHR(7)
  177.          ENDCASE
  178.          step_l = step_l-1
  179.       ENDDO
  180.       SET COLOR TO N/W
  181.       DO fieldchi
  182.    CASE keycode = 13
  183.       SET COLOR TO N/W
  184.       IF FF(I,4)='N'
  185.          FF(I,2) = .NOT. FF(I,2)
  186.          IF FF(I,2)
  187.             @ rownum, 17 SAY CHR(16)+" "
  188.             IF repsum .AND. .NOT. repavg
  189.                FF(I,6)=.T.
  190.                fsum=fsum+FF(I,3)
  191.             ELSE
  192.                FF(I,7)=.T.
  193.                favg=favg+FF(I,3)
  194.             ENDIF
  195.             IF LEN(fieldtab) < 1
  196.                fieldtab = FF(I,3)
  197.             ELSE
  198.                fieldtab = fieldtab + "," + FF(I,3)
  199.             ENDIF
  200.          ELSE
  201.             @ rownum, 17 SAY "  "
  202.             fieldlen = LEN(FF(I,3))
  203.             fieldsta = AT(FF(I,3),fieldtab)
  204.             fieldtab = STUFF(fieldtab,fieldsta-1,fieldlen+1,"")
  205.          ENDIF
  206.          SET COLOR TO W+/B,N/W
  207.          @ 17, 2 SAY "▓┘ ╫≈ ╫╓ ╢╬ ▒φ : "
  208.          SET COLOR TO N/GB,N/W
  209.          @ 18, 2 CLEAR TO 18,77
  210.          @ 18, 2 SAY fieldtab
  211.       ELSE
  212.          DO pwarn WITH '╕├╫╓╢╬▓╗╩╟╩²╓╡╨═╡─,▓╗─▄▒╗═│╝╞ !!!'
  213.          keycode=0
  214.       ENDIF
  215.    ENDCASE
  216. ENDDO
  217. IF keycode <> 27
  218.    pagmax = 0
  219.    I = 1
  220.    pagsp = 1
  221.    pag(pagsp) = 1
  222.    DO WHILE I <= N
  223.       linelen = 9
  224.       lablen1 = 0
  225.       lablen2 = 0
  226.       DO WHILE I <= N
  227.          IF FF(I,2)
  228.             lablen1 = LEN( TRIM( FF(I,1) ) )
  229.             lablen2 = MAX( lablen1,FF(I,5) ) + 1
  230.             linelen = linelen + lablen2
  231.          ENDIF
  232.          IF linelen > 80
  233.             linelen = linelen - lablen2
  234.             pag(pagsp) = I - 1
  235.             pagsp = pagsp + 1
  236.             EXIT
  237.          ENDIF
  238.          I = I + 1
  239.       ENDDO
  240.       pagmax = pagmax + 1
  241.    ENDDO
  242.    pag(pagsp) = I - 1
  243.    I = 1
  244.    pagsp = 1
  245.    DO WHILE pagsp <= pagmax
  246.       DO fieldpro
  247.       pagsp = pagsp + 1
  248.    ENDDO
  249. ENDIF
  250. RETURN
  251.  
  252.  
  253. PROCEDURE pgettj
  254. SET COLOR TO +W/B,B/W
  255. CLEAR
  256. PRIVATE I,N,PROW,rownum,win_bot,keycode
  257. @ 3, 0 SAY "⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ▓┘╫≈╠⌡╝■ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ"
  258. SET COLOR TO N/W,N/W
  259. @ 20, 2 CLEAR TO 20,77
  260. @ 20, 2 SAY fieldexpr
  261. SET COLOR TO N/BG
  262. @ 3, 40 CLEAR TO 14,80
  263. @ 3, 40 SAY "⌐░⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ╩²╛▌┐Γ╫╓╢╬ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐┤"
  264. I = 1
  265. PROW = 3
  266. DO WHILE I < 11
  267.    @ PROW+I,40 SAY "⌐ª"
  268.    @ PROW+I,78 SAY "⌐ª"
  269.    I = I + 1
  270. ENDDO
  271. @ 14, 40 SAY "⌐╕⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐╝"
  272. I = 1
  273. PROW = 3
  274. DO WHILE  I < 11
  275.    @ PROW+1,43 SAY FF(I,1)
  276.    @ PROW+1,64 SAY FF(I,3)
  277.    @ PROW+1,75 SAY FF(I,4)
  278.    @ PROW+1,55 SAY STR(FF(I,5),3)
  279.    I = I + 1
  280.    PROW = PROW + 1
  281. ENDDO
  282.  
  283. rownum = 4
  284. win_bot = 13
  285. N = FCOUNT()
  286. keycode = 0
  287. I = 1
  288. SET COLOR TO N/W
  289. @ 22, 0 CLEAR TO 24,80
  290. @ 23, 2 SAY "íⁿí²PgUp PgDn ╤í╘±╫╓╢╬   [Enter] ╤í╓╨    [Esc]╓╨╢╧═╦│÷ "
  291. SET COLOR TO N/W
  292. @ 4,43 CLEAR TO 4,76
  293. @ 4,43 SAY FF(I,1)
  294. @ 4,64 SAY FF(I,3)
  295. @ 4,75 SAY FF(I,4)
  296. @ 4,55 SAY STR(FF(I,5),3)
  297. ? SYS(2002)
  298. DO WHILE .T.
  299.    IF keycode = 27 .OR. keycode = 6 && [End].or.[Esc]
  300.       endswitch = .F.
  301.       EXIT
  302.    ENDIF
  303.    STORE INKEY() TO keycode
  304.    DO CASE
  305.    CASE keycode = 24
  306.       DO CASE
  307.       CASE rownum > win_bot-1 .AND. I < N
  308.          SET COLOR TO N/GB
  309.          @ rownum, 42 CLEAR TO rownum, 76
  310.          @ rownum, 43 SAY FF(I,1)
  311.          @ rownum, 64 SAY FF(I,3)
  312.          @ rownum, 75 SAY FF(I,4)
  313.          @ rownum, 55 SAY STR(FF(I,5),3)
  314.          scroll 4,42,win_bot,76,1
  315.          I = I+1
  316.          SET COLOR TO N/W
  317.          @ rownum, 42 CLEAR TO rownum, 76
  318.          @ rownum, 43 SAY FF(I,1)
  319.          @ rownum, 64 SAY FF(I,3)
  320.          @ rownum, 75 SAY FF(I,4)
  321.          @ rownum, 55 SAY STR(FF(I,5),3)
  322.       CASE rownum <= win_bot-1 .AND. I < N
  323.          SET COLOR TO N/GB
  324.          @ rownum, 42 CLEAR TO rownum, 76
  325.          @ rownum, 43 SAY FF(I,1)
  326.          @ rownum, 64 SAY FF(I,3)
  327.          @ rownum, 75 SAY FF(I,4)
  328.          @ rownum, 55 SAY STR(FF(I,5),3)
  329.          rownum = rownum+1
  330.          I = I+1
  331.          SET COLOR TO N/W
  332.          @ rownum, 42 CLEAR TO rownum, 76
  333.          @ rownum, 43 SAY FF(I,1)
  334.          @ rownum, 64 SAY FF(I,3)
  335.          @ rownum, 75 SAY FF(I,4)
  336.          @ rownum, 55 SAY STR(FF(I,5),3)
  337.       OTHERWISE
  338.          ?? CHR(7)
  339.       ENDCASE
  340.    CASE keycode = 5
  341.       DO CASE
  342.       CASE rownum < 5 .AND. I > 1
  343.          SET COLOR TO N/GB
  344.          @ rownum, 42 CLEAR TO rownum, 76
  345.          @ rownum, 43 SAY FF(I,1)
  346.          @ rownum, 64 SAY FF(I,3)
  347.          @ rownum, 75 SAY FF(I,4)
  348.          @ rownum, 55 SAY STR(FF(I,5),3)
  349.          scroll 4,42,win_bot,76,-1
  350.          I = I - 1
  351.          SET COLOR TO N/W
  352.          @ rownum, 42 CLEAR TO rownum, 76
  353.          @ rownum, 43 SAY FF(I,1)
  354.          @ rownum, 64 SAY FF(I,3)
  355.          @ rownum, 75 SAY FF(I,4)
  356.          @ rownum, 55 SAY STR(FF(I,5),3)
  357.       CASE rownum >= 5 .AND. I > 1
  358.          SET COLOR TO N/GB
  359.          @ rownum, 42 CLEAR TO rownum, 76
  360.          @ rownum, 43 SAY FF(I,1)
  361.          @ rownum, 64 SAY FF(I,3)
  362.          @ rownum, 75 SAY FF(I,4)
  363.          @ rownum, 55 SAY STR(FF(I,5),3)
  364.          rownum = rownum-1
  365.          I = I - 1
  366.          SET COLOR TO N/W
  367.          @ rownum, 42 CLEAR TO rownum, 76
  368.          @ rownum, 43 SAY FF(I,1)
  369.          @ rownum, 64 SAY FF(I,3)
  370.          @ rownum, 75 SAY FF(I,4)
  371.          @ rownum, 55 SAY STR(FF(I,5),3)
  372.       OTHERWISE
  373.          ?? CHR(7)
  374.       ENDCASE
  375.    CASE keycode = 3
  376.       IF I + 5 <= N
  377.          step_l = 5
  378.       ELSE
  379.          step_l = N-I+1
  380.       ENDIF
  381.       SET COLOR TO N/GB
  382.       @ rownum, 42 CLEAR TO rownum, 76
  383.       @ rownum, 43 SAY FF(I,1)
  384.       @ rownum, 64 SAY FF(I,3)
  385.       @ rownum, 75 SAY FF(I,4)
  386.       @ rownum, 55 SAY STR(FF(I,5),3)
  387.       DO WHILE step_l > 0
  388.          DO CASE
  389.          CASE rownum > win_bot-1 .AND. I < N
  390.             @ rownum, 43 SAY FF(I,1)
  391.             @ rownum, 64 SAY FF(I,3)
  392.             @ rownum, 75 SAY FF(I,4)
  393.             @ rownum, 55 SAY STR(FF(I,5),3)
  394.             scroll 4,42,win_bot,76,1
  395.             I = I+1
  396.          CASE rownum <= win_bot-1 .AND. I < N
  397.             rownum = rownum+1
  398.             I = I+1
  399.          OTHERWISE
  400.             ?? CHR(7)
  401.          ENDCASE
  402.          step_l = step_l-1
  403.       ENDDO
  404.       SET COLOR TO N/W
  405.       @ rownum, 42 CLEAR TO rownum, 76
  406.       @ rownum, 43 SAY FF(I,1)
  407.       @ rownum, 64 SAY FF(I,3)
  408.       @ rownum, 75 SAY FF(I,4)
  409.       @ rownum, 55 SAY STR(FF(I,5),3)
  410.    CASE keycode = 18
  411.       IF I - 5 >= 1
  412.          step_l = 5
  413.       ELSE
  414.          step_l = I
  415.       ENDIF
  416.       SET COLOR TO N/GB
  417.       @ rownum, 42 CLEAR TO rownum, 76
  418.       @ rownum, 43 SAY FF(I,1)
  419.       @ rownum, 64 SAY FF(I,3)
  420.       @ rownum, 75 SAY FF(I,4)
  421.       @ rownum, 55 SAY STR(FF(I,5),3)
  422.       DO WHILE step_l > 0
  423.          DO CASE
  424.          CASE rownum < 5 .AND. I > 1
  425.             @ rownum, 43 SAY FF(I,1)
  426.             @ rownum, 64 SAY FF(I,3)
  427.             @ rownum, 75 SAY FF(I,4)
  428.             @ rownum, 55 SAY STR(FF(I,5),3)
  429.             scroll 4,42,win_bot,76,-1
  430.             I = I-1
  431.          CASE rownum >= 5 .AND. I > 1
  432.             rownum = rownum-1
  433.             I = I-1
  434.          OTHERWISE
  435.             ?? CHR(7)
  436.          ENDCASE
  437.          step_l = step_l-1
  438.       ENDDO
  439.       SET COLOR TO N/W
  440.       @ rownum, 42 CLEAR TO rownum, 76
  441.       @ rownum, 43 SAY FF(I,1)
  442.       @ rownum, 64 SAY FF(I,3)
  443.       @ rownum, 75 SAY FF(I,4)
  444.       @ rownum, 55 SAY STR(FF(I,5),3)
  445.    CASE keycode = 13
  446.       fieldname = FF(I,3)
  447.       fieldexpr = fieldexpr + FF(I,3)
  448.       SET COLOR TO +W/B
  449.       @  5, 2 SAY "╫╓ ╢╬ ├√: "
  450.       @  5,13 SAY fieldname
  451.       DO findsub03
  452.       SET COLOR TO N/W,N/W
  453.       @ 20, 2 CLEAR TO 20,77
  454.       @ 20, 2 SAY fieldexpr
  455.       EXIT
  456.    ENDCASE
  457. ENDDO
  458. RETURN
  459.  
  460.  
  461. PROC ptj
  462. llnkey=0
  463. DO WHILE .T.
  464.    DO pwaitkey WITH '0.═╦│÷  1.╤í╘±╠⌡╝■═│╝╞  2.╤í╘±╚½▓┐═│╝╞ ',llnkey
  465.    DO CASE
  466.    CASE llnkey= 0
  467.       RETURN
  468.    CASE llnkey = 1
  469.       DO WHILE endswitch
  470.          DO pgettj
  471.       ENDDO
  472.       DO pgetlast
  473.       LOOP
  474.    CASE llnkey = 2
  475.       DO pgetlast
  476.       LOOP
  477.    ENDCASE
  478. ENDDO
  479. RETURN
  480.  
  481.  
  482. PROC pgetlast
  483. tjdbf=''
  484. PRIV lat lag lad
  485. DO pprompt WITH '╒²╘┌═│╝╞, ╟δ╔╘║≥.......'
  486. IF LEN(fsum+favg)=0
  487.    RETURN
  488. ENDIF
  489.  
  490. lflist=fsum+favg
  491. IF LEN(lflist)=0
  492.    RETURN
  493. ENDIF
  494. llnmax=FCOUNT(1)
  495. DIME lad(llnmax)
  496. DIME lap(llnmax)
  497. llnmax=LEN(lflist)+1
  498. DIME lat(llnmax)
  499. DIME lag(llnmax)
  500. lagi=0
  501. DO pgentjk
  502.  
  503. SELE 3
  504. GO TOP
  505. SELE 1
  506. GO TOP
  507. DO WHIL .NOT.EOF()
  508.    STOR '' TO lnew,lold
  509.    lat(1)=0
  510.    lfirst=.T.
  511.    SCAT TO lad
  512.    I=2
  513.    IF LEN(TRIM(fieldexpr))>0
  514.       LOCA FOR &fieldexpr
  515.       DO WHIL .NOT.EOF().AND.lnew=lold
  516.          lat(1)=lat(1)+1
  517.          lold=lnew
  518.          DO WHILE I<=lagi
  519.             IF FF(lag(I-1),6)
  520.                lat(I)=IIF(lfirst,lad(lag(I-1)),lat(I)+lad(lag(I-1)))
  521.                I=I+1
  522.             ENDIF
  523.             IF I<=lagi .AND. FF(lag(I-1),7)
  524.                lat(I)=IIF(lfirst,0,lat(I)*(lat(1)-1))
  525.                lat(I)=IIF(lfirst,lad(lag(I-1)),lat(I)+lad(lag(I-1)))/lat(1)
  526.                I=I+1
  527.             ENDIF
  528.          ENDDO
  529.          lfirst=.F.
  530.          CONTINUE
  531.          SCAT TO lad
  532.          lnew=''
  533.          I=2
  534.       ENDDO
  535.       SELE 3
  536.       APPE BLAN
  537.       GATH FROM lat
  538.       SELE 1
  539.    ELSE
  540.       DO WHIL .NOT.EOF().AND.lnew=lold
  541.          lat(1)=lat(1)+1
  542.          lold=lnew
  543.          DO WHILE I<=lagi
  544.             IF FF(lag(I-1),6)
  545.                lat(I)=IIF(lfirst,lad(lag(I-1)),lat(I)+lad(lag(I-1)))
  546.                I=I+1
  547.             ENDIF
  548.             IF I<=lagi .AND. FF(lag(I-1),7)
  549.                lat(I)=IIF(lfirst,0,lat(I)*(lat(1)-1))
  550.                lat(I)=IIF(lfirst,lad(lag(I-1)),lat(I)+lad(lag(I-1)))/lat(1)
  551.                I=I+1
  552.             ENDIF
  553.          ENDDO
  554.          lfirst=.F.
  555.          SKIP
  556.          SCAT TO lad
  557.          lnew=''
  558.          I=2
  559.       ENDDO
  560.       SELE 3
  561.       APPE BLAN
  562.       GATH FROM lat
  563.       SELE 1
  564.    ENDIF
  565. ENDDO
  566. lnkey=0
  567. DO WHIL .T.
  568.    SELE 1
  569.    DO pwaitkey WITH '0.═╦│÷  1.Σ»└└═│╝╞╜ß╣√  2.┤≥╙í═│╝╞╜ß╣√  3.▒ú┤µ▓ó═╦│÷ ',lnkey
  570.    SELE 3
  571.    DO CASE
  572.    CASE lnkey=1
  573.       IF EOF()
  574.          GO TOP
  575.       ENDIF
  576.       SET COLOR TO W/B,B/W
  577.       BROW NOMO NOAP
  578.       LOOP
  579.    CASE lnkey=2
  580.       DO plist
  581.       LOOP
  582.    CASE lnkey=3
  583.       USE
  584.       temf1=''
  585.       DO pgettemf WITH temf1
  586.       temf1=temf1+'.DRT'
  587.       RENAME tjdbf TO &temf1
  588.       DO pprompt WITH '╟δ╕°╢¿╕├═│╝╞╜ß╣√╥╗╕÷├√│╞'
  589.       ACCEPT "╕├═│╝╞╜ß╣√├√│╞╬¬:" TO pname
  590.       SELE 1
  591.       USE &dbftj
  592.       I = 1
  593.       fieldnum = FCOUNT()
  594.       DO WHILE I <= fieldnum
  595.          FF(I,2) = .F.
  596.          I = I + 1
  597.       ENDDO
  598.       fieldexpr=''
  599.       RENAME &temf1 TO &pname
  600.    CASE lnkey=0
  601.       USE
  602.       ERASE D:\fox21\tjdbf.dbf
  603.       SELE 1
  604.       USE &dbftj
  605.       I = 1
  606.       fieldnum = FCOUNT()
  607.       DO WHILE I <= fieldnum
  608.          FF(I,2) = .F.
  609.          I = I + 1
  610.       ENDDO
  611.       fieldexpr=''
  612.    ENDCASE
  613.    SELE 1
  614.    EXIT
  615. ENDDO
  616.  
  617. RETURN
  618.  
  619.  
  620. PROC pgentjk
  621. SELE 1
  622. USE &dbftj
  623. COPY STRU EXTE TO tjdbf1
  624. lcount=LEN(LTRIM(STR(RECCOUNT())))
  625. SELE 3
  626. USE tjdbf1
  627. COPY STRU TO tjdbf2
  628. GO TOP
  629. SELE 4
  630. USE tjdbf2
  631. GO TOP
  632. APPE BLAN
  633. REPL field_name WITH '╝╟┬╝╕÷╩²',field_type WITH 'N',field_len WITH lcount
  634. SELE 3
  635. I=1
  636. lagi=1
  637. SELE 3
  638. GO TOP
  639. xstr=','
  640. DO WHIL .NOT.EOF()
  641.    lrecno=RECNO()
  642.    lflen=field_len
  643.    lfdec=field_dec
  644.    lfname=TRIM(field_name)
  645.    lftype=field_type
  646.    SELE 4
  647.    IF FF(lrecno,6)
  648.       IF LEN(TRIM(FF(lrecno,1)))<=6
  649.          lfname=TRIM(FF(lrecno,1))+'╫▄╝╞'
  650.       ELSE
  651.          lfname=LEFT(FF(lrecno,1)+'    ',8)+'╝╞'
  652.       ENDIF
  653.       IF .NOT.','+lfname+','$xstr
  654.          lag(lagi)=lrecno
  655.          lagi=lagi+1
  656.          APPE BLAN
  657.          REPL field_name WITH lfname,field_type WITH 'N',;
  658.             field_len WITH MIN(lcount+lflen,15),field_dec WITH lfdec
  659.          xstr=xstr+lfname+','
  660.       ENDIF
  661.    ENDIF
  662.    
  663.    IF FF(lrecno,7)
  664.       IF LEN(TRIM(FF(lrecno,1)))<=6
  665.          lfname=TRIM(FF(lrecno,1))+'╞╜╛∙'
  666.       ELSE
  667.          lfname=LEFT(FF(lrecno,1)+'    ',8)+'╛∙'
  668.       ENDIF
  669.       IF .NOT.','+lfname+','$xstr
  670.          lag(lagi)=lrecno
  671.          lagi=lagi+1
  672.          APPE BLAN
  673.          REPL field_name WITH lfname,field_type WITH 'N',;
  674.             field_len WITH lflen,field_dec WITH lfdec
  675.          xstr=xstr+lfname+','
  676.       ENDIF
  677.    ENDIF
  678.    SELE 3
  679.    SKIP
  680. ENDDO
  681. SELE 3
  682. USE
  683. ERASE tjdbf1.dbf
  684. SELE 4
  685. USE
  686. SELE 3
  687. CREA tjdbf.dbf FROM tjdbf2.dbf EXTE
  688. ERASE tjdbf2.dbf
  689. USE tjdbf.dbf
  690. SCAT TO lat
  691. RETURN
  692.  
  693.  
  694. PROC pgettemf
  695. PARA xtemf
  696. IF '*'$dbcx
  697.    dbcx='1'
  698. ENDIF
  699. xtemf=RIGHT('00000000'+LTRIM(STR(VAL(dbcx)+1)),8)
  700. DO WHIL FILE(xtemf+'.DRT').OR.FILE(xtemf+'.DBF')
  701.    dbcx=xtemf
  702.    xtemf=RIGHT('00000000'+LTRIM(STR(VAL(dbcx)+1)),8)
  703. ENDDO
  704. RETURN
  705.  
  706.  
  707. PROC pwaitkey
  708. PARA xcprompt,xnin
  709. xnin=xnin+1
  710. SET COLO TO N/GB
  711. @24,0 SAY SPACE(80)
  712. xsprompt=xcprompt
  713. @24,0 SAY '╟δ╤í╘±--'
  714. xncol=8
  715. DO WHIL ' '$xsprompt
  716.    @24,xncol PROMPT LEFT(xsprompt,AT(' ',xsprompt))
  717.    xncol=xncol+AT(' ',xsprompt)
  718.    xsprompt=LTRIM(SUBSTR(xsprompt,AT(' ',xsprompt)))
  719. ENDDO
  720. MENU TO xnin
  721. IF xnin>0
  722.    xnin=xnin-1
  723. ENDIF
  724. @24,0 SAY SPACE(80)
  725. RETURN
  726.  
  727.  
  728. PROC pprompt
  729. PARA xcprompt
  730. SET COLO TO &&PromptAtr
  731. @24,0 SAY SPACE(80)
  732. @24,0 SAY xcprompt
  733. RETURN
  734.  
  735.  
  736. PROC pwait
  737. PARA xswarn
  738. SET COLO TO &&PromptAtr
  739. DO WHIL INKEY(10)=0
  740. ENDDO
  741. @24,0 SAY SPACE(80)
  742. @24,0 SAY xswarn+'  ╚╬╟├╥╗╝ⁿ' PICT '@S80'
  743. xntemp=INKEY(10)
  744. @24,0 SAY SPACE(80)
  745. RETURN
  746.  
  747.  
  748. PROC pwarn
  749. PARA xswarn
  750. SET COLO TO &&PromptAtr
  751. @22,0 SAY ''
  752. ?CHR(7)+CHR(7)
  753. @24,0 SAY SPACE(80)
  754. @24,0 SAY xswarn+'  í√⌐╝' PICT '@S78'
  755. xntemp=INKEY(10)
  756. @24,0 SAY SPACE(80)
  757. RETURN
  758.  
  759.  
  760. PROC plist
  761. GO TOP
  762. IF EOF()
  763.    RETURN
  764. ENDIF
  765. p_page=RECCOUNT()/66+1
  766. p_width=RECSIZE()+FCOUNT()
  767. IF p_width<110
  768.    p_width=1
  769. ELSE
  770.    p_width=0
  771. ENDIF
  772. IF fprnon(p_width,p_page)
  773.    SET CONS OFF
  774.    LIST TO PRIN
  775.    SET CONS ON
  776. ENDIF
  777. RETURN
  778.  
  779.  
  780. PROC fprnon
  781. PARA x_zx,x_page     &&╓╜╨═(0┐φ,1╒¡), ╥│╩²
  782. as=IIF(x_page>0,LTRIM(STR(x_page))+'╥│','')
  783. as='╨Φ'+as+IIF(x_zx>0,'╒¡','┐φ')+'╨╨╓╜, ╟δ░┤╥¬╟≤╜½┤≥╙í╗·╫╝▒╕║├'
  784. alok=.F.
  785. DO pprompt WITH as
  786.  
  787. DO WHIL .T.
  788.    DO pwait WITH as
  789.    IF SYS(13)='OFFLINE'
  790.       DO pprompt WITH '┤≥╙í╗·╬┤╫╝▒╕║├,   Esc═╦│÷┤≥╙í'
  791.       IF INKEY(10)=27
  792.          EXIT
  793.       ENDIF
  794.    ELSE
  795.       alok=.T.
  796.       as=IIF(x_page>0,LTRIM(STR(x_page))+'╥│','')
  797.       as='╙╨'+as+',  ╒²╘┌┤≥╙í, ╟δ╔╘║≥....'
  798.       DO pprompt WITH as
  799.       EXIT
  800.    ENDIF
  801. ENDDO
  802. RETURN alok
  803. << end >>
  804. <<* EOF: SSBSTATI.INC *>>
  805.