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

  1. <<* Program : SSBFIMA.INC  *>>
  2.  
  3. <<procedure SSBFindMainBody>>
  4. <<integer recodefld,count>>
  5. <<begin>>
  6.  
  7. PROCEDURE FINDSUB00
  8. PARAMETERS STATUVAL
  9. PRIVATE FIELDLEN,FIELDSTA,FIELDTAB,FIELDEXPR
  10. STORE "" TO FIELDSTA,FIELDEXPR
  11. PRIVATE LINELEN,LABLEN1,LABLEN2,PAGSP,PAGMAX
  12. STORE 0 TO LINELEN,LABLEN1,LABLEN2,PAGSP,PAGMAX
  13. <<select fields on (fldtyp $ 'CNLD')>>
  14. <<recodefld := fldtotal>>
  15. <<* if ismultials *>>
  16.   <<count := 1 >>
  17. DIMENSION FF({recodefld},7),PAG(5),HEADTITL(5),FIELDTAB(5)
  18. STORE 0 TO PAG(1),PAG(2),PAG(3),PAG(4),PAG(5)
  19. FIELDNUM = {recodefld}
  20.  <<#
  21.   genln( '*---- field information tabel ----------*' )
  22.   pushmargin(1)
  23.   forall fields
  24.     if (fldtyp $ 'CNLD')
  25.       genln('FF(',count,',1) = "',ltrim(rtrim(fldlab)),'"')
  26.       genln('FF(',count,',3) = "',fldnam,'"')
  27.       genln('FF(',count,',4) = "',fldtyp,'"')
  28.       if (fldtyp $ 'L')
  29.         genln('FF(',count,',5) =  3')
  30.       else
  31.         genln('FF(',count,',5) = ',fldwid)
  32.       endif
  33.       if ismultials
  34.         genln('FF(',count,',6) = "',fldals,'"')
  35.       endif
  36.       genln(' ')
  37.       count := count + 1
  38.     endif
  39.   endfor
  40.   popmargin
  41.  #>>
  42. <<* else *>>
  43. <<*
  44. DIMENSION FF({recodefld},5),PAG(5),HEADTITL(5),FIELDTAB(5)
  45. STORE 0 TO PAG(1),PAG(2),PAG(3),PAG(4),PAG(5)
  46. I = 1
  47. FIELDNUM = FCOUNT()
  48. DO WHILE I <= FIELDNUM
  49.    FF(I,3) = FIELD(I)
  50.    FF(I,4) = TYPE(FIELD(I))
  51.    I = I + 1
  52. ENDDO
  53. USE {msetfilename} INDEX {msetfilename}
  54. I = 1
  55. DO WHILE I <= {recodefld}
  56.    AAA = FF(I,3)
  57.    FIND &AAA
  58.    FF(I,1) = FIELDLAB
  59.    IF FF(I,4) = 'L'
  60.       FF(I,5) = 3
  61.    ELSE
  62.       FF(I,5) = FIELDLEN
  63.    ENDIF
  64.    I = I + 1
  65. ENDDO
  66. USE {fname} *>>
  67. <<* endif *>>
  68. ENDSwitch = .T.
  69. EscSwitch = .T.
  70.  
  71. DO CASE
  72.    CASE STATUVAL = "F"
  73.       DO FINDSUB01
  74.    CASE STATUVAL = "S"
  75.       CREATE VIEW workarea FROM ENVIRONMENT all
  76.       DO {fileprefix}4
  77.       SET VIEW TO workarea
  78.       ERASE workarea.vue
  79. ENDCASE
  80.  
  81. NASCON = " "
  82. IF EscSwitch .AND. STATUVAL = "F"
  83.    IF LEN(FIELDTAB) > 1
  84.       SET COLOR TO W/R
  85.       @ 15, 20 CLEAR TO 17,60
  86.       @ 16, 25 SAY "┤°╠⌡╝■▓Θ╤»┬≡? ( Y/N )" GET NASCON PICTURE "XX"
  87.       READ
  88.    ENDIF
  89.    IF NASCON $ "Yy"
  90.       DO WHILE ENDSWITCH
  91.          DO FINDSUB02
  92.       ENDDO
  93.    ENDIF
  94.    SET COLOR TO W/B,N/W
  95.    CLEAR
  96.    SET HEADING OFF
  97.    IF LEN(FIELDTAB) > 1
  98.       DO FINDSUB06
  99.    ENDIF
  100. ENDIF
  101. RETURN
  102.  
  103.  
  104. ********************************************************************
  105. PROCEDURE FINDSUB01
  106. SET COLOR TO W/B,B/W
  107. CLEAR
  108. PRIVATE;
  109.        I,N,PROW,ROWNUM,Win_Bot,KeyCode
  110.   ROWNUM = 4
  111.   Win_Bot = 13
  112.   N = FIELDNUM
  113.   KeyCode = 0
  114. SET COLOR TO N/BG
  115. @ 3, 14 CLEAR TO 14,60
  116. @ 3, 14 SAY "⌐░⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ╩²╛▌┐Γ╫╓╢╬ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐┤"
  117. I = 1
  118. PROW = 3
  119. DO WHILE I < 11 
  120.    @ PROW+I,14 SAY "⌐ª"
  121.    @ PROW+I,60 SAY "⌐ª"
  122.    I = I + 1
  123. ENDDO
  124. @ 14, 14 SAY "⌐╕⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐╝"
  125. @ 18,  2 CLEAR TO 18,77
  126. I = 1
  127. PROW = 3
  128. DO WHILE  I < 11 .AND. I <= N
  129.    @ PROW+1,19 SAY FF(I,1)
  130.    @ PROW+1,40 SAY FF(I,3)
  131.    @ PROW+1,52 SAY FF(I,4)
  132.    @ PROW+1,55 SAY STR(FF(I,5),3)
  133.    I = I + 1
  134.    PROW = PROW + 1
  135. ENDDO
  136. I = 1
  137. FIELDTAB = ""
  138. SET COLOR TO N/W
  139. @ 22, 0 CLEAR TO 24,80
  140. @ 23, 2 SAY "íⁿí² ╤í╘±▓Θ╤»╫╓╢╬    [Enter] ╤í╓╨    [End] ╜ß╩°    [Esc] ╖┼╞·"
  141. SET COLOR TO N/W
  142. @ 4,17 CLEAR TO 4,58
  143. IF FF(I,2)
  144.    @ ROWNUM, 17 SAY CHR(16)+" "
  145. ELSE
  146.    @ ROWNUM, 17 SAY "  "
  147. ENDIF
  148. @ 4,19 SAY FF(I,1)
  149. @ 4,40 SAY FF(I,3)
  150. @ 4,52 SAY FF(I,4)
  151. @ 4,55 SAY STR(FF(I,5),3)
  152. ? SYS(2002)
  153.  
  154. DO WHILE .T.
  155.    IF KeyCode = 6 .OR. KeyCode = 27  && [End].or.[Esc]
  156.       IF KeyCode = 27
  157.          EscSwitch = .F.
  158.       ENDIF
  159.       EXIT
  160.    ENDIF
  161.    STORE INKEY() TO KeyCode
  162.    DO CASE
  163.      CASE KeyCode = 24
  164.         DO CASE
  165.           CASE ROWNUM > Win_Bot-1 .AND. I < N
  166.              SET COLOR TO N/GB
  167.              DO FIELDCHI
  168.              SCROLL 4,16,Win_Bot,58,1
  169.              I = I+1
  170.              SET COLOR TO N/W
  171.              DO FIELDCHI
  172.           CASE ROWNUM <= Win_Bot-1 .AND. I < N
  173.              SET COLOR TO N/GB
  174.              DO FIELDCHI
  175.              ROWNUM = ROWNUM+1
  176.              I = I+1
  177.              SET COLOR TO N/W
  178.              DO FIELDCHI
  179.           OTHERWISE
  180.              ?? CHR(7)
  181.         ENDCASE
  182.      CASE KeyCode = 5
  183.         DO CASE
  184.           CASE ROWNUM < 5 .AND. I > 1
  185.              SET COLOR TO N/GB
  186.              DO FIELDCHI
  187.              SCROLL 4,16,Win_Bot,58,-1
  188.              I = I - 1
  189.              SET COLOR TO N/W
  190.              DO FIELDCHI
  191.           CASE ROWNUM >= 5 .AND. I > 1
  192.              SET COLOR TO N/GB
  193.              DO FIELDCHI
  194.              ROWNUM = ROWNUM-1
  195.              I = I - 1
  196.              SET COLOR TO N/W
  197.              DO FIELDCHI
  198.           OTHERWISE
  199.              ?? CHR(7)
  200.         ENDCASE
  201.      CASE KeyCode = 3
  202.         IF I + 5 <= N
  203.            STEP_L = 5
  204.         ELSE
  205.            STEP_L = N-I+1
  206.         ENDIF
  207.          SET COLOR TO N/GB
  208.          DO FIELDCHI
  209.          DO WHILE STEP_L > 0
  210.             DO CASE
  211.               CASE ROWNUM > Win_Bot-1 .AND. I < N
  212.                  DO FIELDCHI
  213.                  SCROLL 4,16,Win_Bot,58,1
  214.                  I = I+1
  215.               CASE ROWNUM <= Win_Bot-1 .AND. I < N
  216.                  ROWNUM = ROWNUM+1
  217.                  I = I+1
  218.               OTHERWISE
  219.                  ?? CHR(7)
  220.             ENDCASE
  221.               STEP_L = STEP_L-1
  222.          ENDDO
  223.          SET COLOR TO N/W
  224.          DO FIELDCHI
  225.      CASE KeyCode = 18
  226.         IF I - 5 >= 1
  227.           STEP_L = 5
  228.         ELSE
  229.           STEP_L = I
  230.         ENDIF
  231.         SET COLOR TO N/GB
  232.         DO FIELDCHI
  233.         DO WHILE STEP_L > 0
  234.            DO CASE
  235.               CASE ROWNUM < 5 .AND. I > 1
  236.                  DO FIELDCHI
  237.                  SCROLL 4,16,Win_Bot,58,-1
  238.                  I = I-1
  239.               CASE ROWNUM >= 5 .AND. I > 1
  240.                  ROWNUM = ROWNUM-1
  241.                  I = I-1
  242.               OTHERWISE
  243.                  ?? CHR(7)
  244.            ENDCASE
  245.            STEP_L = STEP_L-1
  246.         ENDDO
  247.         SET COLOR TO N/W
  248.         DO FIELDCHI
  249.      CASE KeyCode = 13
  250.          SET COLOR TO N/W
  251.          FF(I,2) = .NOT. FF(I,2)
  252.          IF FF(I,2)
  253.             @ ROWNUM, 17 SAY CHR(16)+" "
  254.    <<if ismultials>>
  255.             DO CASE
  256.                CASE LEN(FIELDTAB) > 1 .AND. FF(I,6) $ "AM"
  257.                   FIELDTAB = FF(I,3)
  258.                CASE LEN(FIELDTAB) > 1
  259.                   FIELDTAB = FF(I,6) + "->" + FF(I,3)
  260.                CASE LEN(FIELDTAB) > 1 .AND. FF(I,6) $ "AM"
  261.                   FIELDTAB = FIELDTAB + "," + FF(I,3)
  262.                CASE LEN(FIELDTAB) > 1
  263.                   FIELDTAB = FIELDTAB + "," + FF(I,6) + "->" + FF(I,3)
  264.             ENDCASE
  265.          ELSE
  266.             @ ROWNUM, 17 SAY "  "
  267.             IF FF(1,6) $ "AM"
  268.                FIELDLEN = LEN(FF(I,3))
  269.                FIELDSTA = AT(FF(I,3),FIELDTAB)
  270.             ELSE
  271.                FIELDLEN = LEN(FF(I,3)) + 3
  272.                FIELDSTA = AT(FF(I,3),FIELDTAB) - 3
  273.             ENDIF
  274.                FIELDTAB = STUFF(FIELDTAB,FIELDSTA-1,FIELDLEN+1,"")
  275.          ENDIF
  276.    <<else>>
  277.             IF LEN(FIELDTAB) < 1
  278.                FIELDTAB = FF(I,3)
  279.             ELSE
  280.                FIELDTAB = FIELDTAB + "," + FF(I,3)
  281.             ENDIF
  282.          ELSE
  283.             @ ROWNUM, 17 SAY "  "
  284.             FIELDLEN = LEN(FF(I,3))
  285.             FIELDSTA = AT(FF(I,3),FIELDTAB)
  286.             FIELDTAB = STUFF(FIELDTAB,FIELDSTA-1,FIELDLEN+1,"")
  287.          ENDIF
  288.    <<endif>>
  289.          SET COLOR TO W+/B,N/W
  290.          @ 17, 2 SAY "▓┘ ╫≈ ╫╓ ╢╬ ▒φ : "
  291.          SET COLOR TO N/GB,N/W
  292.          @ 18, 2 CLEAR TO 18,77
  293.          @ 18, 2 SAY FIELDTAB
  294.    ENDCASE
  295. ENDDO
  296. IF KeyCode <> 27
  297.    PagMax = 0
  298.    I = 1
  299.    PAGSP = 1
  300.    PAG(PAGSP) = 1
  301.    DO WHILE I <= N
  302.       LINELEN = 9
  303.       LABLEN1 = 0
  304.       LABLEN2 = 0
  305.       DO WHILE I <= N
  306.          IF FF(I,2)
  307.             LABLEN1 = LEN( TRIM( FF(I,1) ) )
  308.             LABLEN2 = MAX( LABLEN1,FF(I,5) ) + 1
  309.             LINELEN = LINELEN + LABLEN2
  310.          ENDIF
  311.          IF LINELEN > 80
  312.             LINELEN = LINELEN - LABLEN2
  313.             PAG(PAGSP) = I - 1
  314.             PAGSP = PAGSP + 1
  315.             EXIT
  316.          ENDIF
  317.          I = I + 1
  318.       ENDDO
  319.       PagMax = PagMax + 1
  320.    ENDDO
  321.    PAG(PAGSP) = I - 1
  322.    I = 1
  323.    PAGSP = 1
  324.    DO WHILE PAGSP <= PAGMAX
  325.       DO FIELDPRO
  326.       PAGSP = PAGSP + 1
  327.    ENDDO
  328. ENDIF
  329. RETURN
  330.  
  331.  
  332. ********************************************************************
  333. PROCEDURE FINDSUB02
  334. PRIVATE I,N,PROW,ROWNUM,Win_Bot,KeyCode
  335. N = FIELDNUM
  336. SET COLOR TO +W/B,B/W
  337. CLEAR
  338. @ 3, 0 SAY "⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ▓┘╫≈╠⌡╝■ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ"
  339. SET COLOR TO N/W,N/W
  340. @ 20, 2 CLEAR TO 20,77
  341. @ 20, 2 SAY FIELDEXPR
  342. SET COLOR TO N/BG
  343. @ 3, 40 CLEAR TO 14,80
  344. @ 3, 40 SAY "⌐░⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ╩²╛▌┐Γ╫╓╢╬ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐┤"
  345. I = 1
  346. PROW = 3
  347. DO WHILE I < 11
  348.    @ PROW+I,40 SAY "⌐ª"
  349.    @ PROW+I,78 SAY "⌐ª"
  350.    I = I + 1
  351. ENDDO
  352. @ 14, 40 SAY "⌐╕⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐╝"
  353. I = 1
  354. PROW = 3
  355. DO WHILE  I < 11 .AND. I <= N
  356.    @ PROW+1,43 SAY FF(I,1)
  357.    @ PROW+1,64 SAY FF(I,3)
  358.    @ PROW+1,75 SAY FF(I,4)
  359.    I = I + 1
  360.    PROW = PROW + 1
  361. ENDDO
  362.  
  363. ROWNUM = 4
  364. Win_Bot = 13
  365. KeyCode = 0
  366. I = 1
  367. SET COLOR TO N/W
  368. @ 22, 0 CLEAR TO 24,80
  369. @ 23, 2 SAY "íⁿí² ╤í╘±╫╓╢╬   [Enter] ╤í╓╨    [Esc]╖┼╞·╤í╘± "
  370. SET COLOR TO N/W
  371. @ 4,43 CLEAR TO 4,76
  372. @ 4,43 SAY FF(I,1)
  373. @ 4,64 SAY FF(I,3)
  374. @ 4,75 SAY FF(I,4)
  375. ? SYS(2002)
  376. DO WHILE .T.
  377.    IF KeyCode = 27 .OR. KeyCode = 6 && [End].or.[Esc]
  378.       IF KeyCode = 27
  379.          FIELDEXPR = ""
  380.       ENDIF
  381.       EXIT
  382.       ENDSWITCH = .F.
  383.    ENDIF
  384.    STORE INKEY() TO KeyCode
  385.    DO CASE
  386.       CASE KeyCode = 24
  387.          DO CASE
  388.             CASE ROWNUM > Win_Bot-1 .AND. I < N
  389.                SET COLOR TO N/GB
  390.                @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  391.                @ ROWNUM, 43 SAY FF(I,1)
  392.                @ ROWNUM, 64 SAY FF(I,3)
  393.                @ ROWNUM, 75 SAY FF(I,4)
  394.                SCROLL 4,42,Win_Bot,76,1
  395.                I = I+1
  396.                SET COLOR TO N/W
  397.                @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  398.                @ ROWNUM, 43 SAY FF(I,1)
  399.                @ ROWNUM, 64 SAY FF(I,3)
  400.                @ ROWNUM, 75 SAY FF(I,4)
  401.             CASE ROWNUM <= Win_Bot-1 .AND. I < N
  402.                SET COLOR TO N/GB
  403.                @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  404.                @ ROWNUM, 43 SAY FF(I,1)
  405.                @ ROWNUM, 64 SAY FF(I,3)
  406.                @ ROWNUM, 75 SAY FF(I,4)
  407.                ROWNUM = ROWNUM+1
  408.                I = I+1
  409.                SET COLOR TO N/W
  410.                @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  411.                @ ROWNUM, 43 SAY FF(I,1)
  412.                @ ROWNUM, 64 SAY FF(I,3)
  413.                @ ROWNUM, 75 SAY FF(I,4)
  414.             OTHERWISE
  415.              ?? CHR(7)
  416.         ENDCASE
  417.      CASE KeyCode = 5
  418.         DO CASE
  419.            CASE ROWNUM < 5 .AND. I > 1
  420.               SET COLOR TO N/GB
  421.               @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  422.               @ ROWNUM, 43 SAY FF(I,1)
  423.               @ ROWNUM, 64 SAY FF(I,3)
  424.               @ ROWNUM, 75 SAY FF(I,4)
  425.               SCROLL 4,42,Win_Bot,76,-1
  426.               I = I - 1
  427.               SET COLOR TO N/W
  428.               @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  429.               @ ROWNUM, 43 SAY FF(I,1)
  430.               @ ROWNUM, 64 SAY FF(I,3)
  431.               @ ROWNUM, 75 SAY FF(I,4)
  432.            CASE ROWNUM >= 5 .AND. I > 1
  433.               SET COLOR TO N/GB
  434.               @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  435.               @ ROWNUM, 43 SAY FF(I,1)
  436.               @ ROWNUM, 64 SAY FF(I,3)
  437.               @ ROWNUM, 75 SAY FF(I,4)
  438.               ROWNUM = ROWNUM-1
  439.               I = I - 1
  440.               SET COLOR TO N/W
  441.               @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  442.               @ ROWNUM, 43 SAY FF(I,1)
  443.               @ ROWNUM, 64 SAY FF(I,3)
  444.               @ ROWNUM, 75 SAY FF(I,4)
  445.            OTHERWISE
  446.               ?? CHR(7)
  447.         ENDCASE
  448.      CASE KeyCode = 3
  449.         IF I + 5 <= N
  450.            STEP_L = 5
  451.         ELSE
  452.            STEP_L = N-I+1
  453.         ENDIF
  454.         SET COLOR TO N/GB
  455.         @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  456.         @ ROWNUM, 43 SAY FF(I,1)
  457.         @ ROWNUM, 64 SAY FF(I,3)
  458.         @ ROWNUM, 75 SAY FF(I,4)
  459.         DO WHILE STEP_L > 0
  460.            DO CASE
  461.               CASE ROWNUM > Win_Bot-1 .AND. I < N
  462.                  @ ROWNUM, 43 SAY FF(I,1)
  463.                  @ ROWNUM, 64 SAY FF(I,3)
  464.                  @ ROWNUM, 75 SAY FF(I,4)
  465.                  SCROLL 4,42,Win_Bot,76,1
  466.                  I = I+1
  467.               CASE ROWNUM <= Win_Bot-1 .AND. I < N
  468.                  ROWNUM = ROWNUM+1
  469.                  I = I+1
  470.               OTHERWISE
  471.                  ?? CHR(7)
  472.            ENDCASE
  473.            STEP_L = STEP_L-1
  474.         ENDDO
  475.         SET COLOR TO N/W
  476.         @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  477.         @ ROWNUM, 43 SAY FF(I,1)
  478.         @ ROWNUM, 64 SAY FF(I,3)
  479.         @ ROWNUM, 75 SAY FF(I,4)
  480.      CASE KeyCode = 18
  481.         IF I - 5 >= 1
  482.            STEP_L = 5
  483.         ELSE
  484.            STEP_L = I
  485.         ENDIF
  486.         SET COLOR TO N/GB
  487.         @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  488.         @ ROWNUM, 43 SAY FF(I,1)
  489.         @ ROWNUM, 64 SAY FF(I,3)
  490.         @ ROWNUM, 75 SAY FF(I,4)
  491.         DO WHILE STEP_L > 0
  492.            DO CASE
  493.               CASE ROWNUM < 5 .AND. I > 1
  494.                  @ ROWNUM, 43 SAY FF(I,1)
  495.                  @ ROWNUM, 64 SAY FF(I,3)
  496.                  @ ROWNUM, 75 SAY FF(I,4)
  497.                  SCROLL 4,42,Win_Bot,76,-1
  498.                  I = I-1
  499.               CASE ROWNUM >= 5 .AND. I > 1
  500.                  ROWNUM = ROWNUM-1
  501.                  I = I-1
  502.               OTHERWISE
  503.                  ?? CHR(7)
  504.            ENDCASE
  505.            STEP_L = STEP_L-1
  506.         ENDDO
  507.         SET COLOR TO N/W
  508.         @ ROWNUM, 42 CLEAR TO ROWNUM, 76
  509.         @ ROWNUM, 43 SAY FF(I,1)
  510.         @ ROWNUM, 64 SAY FF(I,3)
  511.         @ ROWNUM, 75 SAY FF(I,4)
  512.      CASE KeyCode = 13
  513.     <<if ismultials>>
  514.         IF FF(I,6) $ "AM"
  515.            FIELDNAME = FF(I,3)
  516.         ELSE
  517.            FIELDNAME = FF(I,6) + "->" + FF(I,3)
  518.         ENDIF
  519.     <<else>>
  520.         FIELDNAME = FF(I,3)
  521.     <<endif>>
  522.         FIELDEXPR = FIELDEXPR + FIELDNAME
  523.         SET COLOR TO +W/B
  524.         @  5, 2 SAY "╫╓ ╢╬ ├√: "
  525.         @  5,13 SAY FIELDNAME
  526.         DO FINDSUB03
  527.         SET COLOR TO N/W,N/W
  528.         @ 20, 2 CLEAR TO 20,77
  529.         @ 20, 2 SAY FIELDEXPR
  530.         EXIT
  531.    ENDCASE
  532. ENDDO
  533. RETURN
  534.  
  535. ********************************************************************
  536. PROCEDURE FINDSUB03
  537. SET COLOR TO W/N
  538. @ 9,37 CLEAR TO 17,77
  539. SET COLOR TO +N/W,W/N
  540. @  8,36 CLEAR TO 16,75
  541. @  8,36 SAY "⌐░⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ╣╪╧╡╘╦╦π╖√ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐┤"
  542. I = 1
  543. PROW = 8
  544. DO WHILE I < 8
  545.    @ PROW+I,36 SAY "⌐ª"
  546.    @ PROW+I,74 SAY "⌐ª"
  547.    I = I + 1
  548. ENDDO
  549. @ 16,36 SAY "⌐╕⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐╝"
  550. menuchoice = 0
  551. @ 10,40 PROMPT " 1. =   ╡╚ ╙┌            "
  552. @ 11,40 PROMPT " 2. <>  ▓╗ ╡╚ ╙┌         "
  553. @ 12,40 PROMPT " 3. >   ┤≤ ╙┌            "
  554. @ 13,40 PROMPT " 4. >=  ┤≤ ╙┌ ╗≥ ╡╚ ╙┌   "
  555. @ 14,40 PROMPT " 5. <   ╨í ╙┌            "
  556. @ 15,40 PROMPT " 6. <=  ╨í ╙┌ ╗≥ ╡╚ ╙┌   "  
  557. MENU TO menuchioc
  558. chioc = SUBSTR( "AABCDEF",menuchioc+1,1)
  559. DO CASE
  560.    CASE chioc = "A"
  561.         RELAOPER = " = "
  562.    CASE chioc = "B"
  563.         RELAOPER = " <> "
  564.    CASE chioc = "C"
  565.         RELAOPER = " > "
  566.    CASE chioc = "D"
  567.         RELAOPER = " >= "
  568.    CASE chioc = "E"
  569.         RELAOPER = " < "
  570.    CASE chioc = "F"
  571.         RELAOPER = " <= "
  572. ENDCASE  
  573. FIELDEXPR = FIELDEXPR + RELAOPER
  574. SET COLOR TO +W/B
  575. @ 7, 2 SAY "╘╦╦π▓┘╫≈: "
  576. @ 7,13 SAY RELAOPER
  577. DO FINDSUB05
  578. SET COLOR TO N/W,N/W
  579. @ 20, 2 CLEAR TO 20,77
  580. @ 20, 2 SAY FIELDEXPR
  581. DO FINDSUB04
  582. SET COLOR TO N/W,N/W
  583. @ 20, 2 CLEAR TO 20,77
  584. @ 20, 2 SAY FIELDEXPR
  585. RETURN
  586.  
  587. ********************************************************************
  588. PROCEDURE FINDSUB04
  589. PRIVATE menuchioc,chioc
  590. SET COLOR TO W/N
  591. @ 11,33 CLEAR TO 19,73
  592. SET COLOR TO N/GB,N/W
  593. @ 10,32 CLEAR TO 18,71
  594. @ 10,32 SAY "⌐░⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ ┬▀╝¡╘╦╦π╖√ ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐┤"
  595. I = 1
  596. PROW = 10
  597. DO WHILE I < 8
  598.    @ PROW+I,32 SAY "⌐ª"
  599.    @ PROW+I,70 SAY "⌐ª"
  600.    I = I + 1
  601. ENDDO
  602. @ 18,32 SAY "⌐╕⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐ñ⌐╝"
  603. menuchoice = 0 
  604. @ 12,36 PROMPT " 1. ═╦ │÷ ┴¼ ╜╙ ▒φ ┤∩ ╩╜           "
  605. @ 13,36 SAY    " ------------------------------ "
  606. @ 14,36 PROMPT " 2. ╙├ .AND. (╙δ) ┴¼ ▒φ ┤∩ ╩╜   "
  607. @ 15,36 PROMPT " 3. ╙├ .OR.  (╗≥) ┴¼ ▒φ ┤∩ ╩╜   "
  608. @ 16,36 PROMPT " 4. ╙├ .AND..NOT.(╙δ╖╟)┴¼▒φ┤∩╩╜ "
  609. @ 17,36 PROMPT " 5. ╙├ .AND..NOT.(╗≥╖╟)┴¼▒φ┤∩╩╜ "
  610. MENU TO menuchioc
  611. chioc = SUBSTR( "AABCDEF",menuchioc+1,1)
  612. DO CASE
  613.    CASE chioc = "A"
  614.         ENDSWITCH = .F.
  615.    CASE chioc = "B"
  616.         FIELDEXPR = FIELDEXPR + " .AND. "
  617.    CASE chioc = "C"
  618.         FIELDEXPR = FIELDEXPR + " .OR. "
  619.    CASE chioc = "D"
  620.         FIELDEXPR = FIELDEXPR + " .AND. .NOT "
  621.    CASE chioc = "E"
  622.         FIELDEXPR = FIELDEXPR + " .OR. .NOT "
  623. ENDCASE
  624. RETURN
  625.  
  626. ********************************************************************
  627. PROCEDURE FINDSUB05
  628. SET CONFIRM ON
  629. SET COLOR TO +W/B,N/W
  630. DO CASE
  631.    CASE TYPE("&FIELDNAME") = "D"
  632.      AAA1 = CTOD('  /  /  ')
  633.    CASE TYPE("&FIELDNAME") = "C"
  634.      AAA1 = SPACE(20)
  635.    CASE TYPE("&FIELDNAME") = "L"
  636.      AAA1 = .F. 
  637.    CASE TYPE("&FIELDNAME") = "N"
  638.      AAA1 = 0.00
  639. ENDCASE
  640. @ 9, 2 SAY "╠⌡ ╝■ ╓╡: " 
  641. @ 9,13 GET AAA1 
  642. READ
  643. IF TYPE ("&AAA1") = "U"
  644.    DO CASE
  645.    CASE TYPE("&FIELDNAME") = "D"
  646.      AAA2 = "CTOD('" + DTOC(AAA1) + "')"
  647.    CASE TYPE("&FIELDNAME") = "N"
  648.      AAA2 = LTRIM( STR( AAA1,12,2))
  649.    CASE TYPE("&FIELDNAME") = "L"
  650.      AAA2 = IIF( AAA1,".T.",".F.")
  651.    CASE TYPE("&FIELDNAME") = "C"
  652.      AAA2 = "'" + TRIM(AAA1) + "'"
  653.    ENDCASE
  654.    FIELDEXPR = FIELDEXPR + AAA2 
  655. ELSE
  656.    IF TYPE("&AAA1") = "N"
  657.       FIELDEXPR = FIELDEXPR + "'" + TRIM(AAA1) + "'"
  658.    ELSE
  659.       FIELDEXPR = FIELDEXPR + TRIM(AAA1)
  660.    ENDIF
  661. ENDIF
  662. SET CONFIRM OFF
  663. RETURN
  664.  
  665. ********************************************************************
  666. PROCEDURE FINDSUB06
  667. *PROGRAM SSB-FIND.PRG
  668. PRIVATE pancol,panLAST,recnumTOP,recnumLAST,skipRECS
  669. PRIVATE HOME,ENDkey,UParrow,DOWNarrow,LEFTarrow,RIGHTarrow
  670. PRIVATE PgUp,PgDn,Rrturnkey
  671. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  672. PRIVATE choice,menuhdg
  673. * ---Initialize constants.
  674. HOME = CHR(1)
  675. ENDkey = CHR(6)
  676. UParrow = CHR(5)
  677. DOWNarrow = CHR(24)
  678. LEFTarrow = CHR(19)
  679. RIGHTarrow = CHR(4)
  680. PgUp = CHR(18)
  681. PgDn = CHR(3)
  682. Returnkey = CHR(13)
  683. menuhdg = "▓Θ  ╤»  ╧╡  ═│"
  684. rowTOP = 1
  685. rowBOTTOM = 20
  686. rowPROMPT = rowBOTTOM + 3
  687. skipRECS = rowBOTTOM - rowTOP + 1
  688. * ---Initialize local variables.
  689. row = rowTOP
  690. recnum = RECNO()
  691. recnumTOP = recnum
  692. PagePaint = .T.
  693. pancol = 1
  694. panLAST = 1
  695. * ---Perform BROWSE.
  696. SET COLOR TO W/B,N/W  &&ScreenAtr
  697. CLEAR
  698. * ---The following loop is really a "REPEAT/UNTIL <cond>".
  699. SET COLOR TO N/W
  700. @ 22, 0 CLEAR TO 24,80
  701. @ 23, 2 SAY "í·╙╥╖¡ í√╫≤╖¡ íⁿ╔╧╥│ í²╧┬╥│ [End]╙╥╬▓╥│ [Home]╫≤╩╫╥│ [Enter]╖╡╗╪ [Esc] ╖┼╞· "
  702. DO WHILE .T.
  703. *---SET CURSOR OFF
  704. *   ?? SYS(2002)
  705.    IF PagePaint
  706.       recnum = RECNO()
  707.       GOTO recnumTOP
  708.       DO FIELDISP WITH rowTOP,skipRECS
  709.       GOTO recnum
  710.       IF pancol = panLAST
  711.          * ---Reposition record pointer when repainting current page.
  712.          row = rowTOP
  713.       ENDIF
  714.       panLAST = pancol
  715.       PagePaint = .F.
  716.    ENDIF
  717.  
  718.    * ---Read data from keyborbd
  719.    choice  = CHR(INKEY())
  720.  
  721.    * ---Prompt line selections.
  722.    DO CASE
  723.    CASE choice = Returnkey
  724.       EXIT
  725.    CASE choice = PgDn .OR. choice = DOWNarrow
  726.       IF .NOT. EOF()
  727.          GOTO recnumTOP
  728.          SKIP skipRECS
  729.          IF EOF()
  730.             GOTO BOTTOM
  731.          ENDIF
  732.          recnumTOP = RECNO()
  733.          PagePaint = .T.
  734.       ENDIF
  735.    CASE choice = PgUp .OR. choice = UParrow
  736.       IF .NOT. BOF()
  737.          GOTO recnumTOP
  738.          SKIP -skipRECS
  739.          IF BOF()
  740.             GOTO TOP
  741.          ENDIF
  742.          recnumTOP = RECNO()
  743.          PagePaint = .T.
  744.       ENDIF
  745.    CASE choice = HOME
  746.       PagePaint = (pancol <> 1)
  747.       pancol = 1
  748.    CASE choice = LEFTarrow
  749.       IF pancol > 1
  750.          pancol = pancol - 1
  751.          PagePaint = .T.
  752.       ENDIF
  753.    CASE choice = RIGHTarrow
  754.       IF pancol < PagMax
  755.          pancol = pancol + 1
  756.          PagePaint = .T.
  757.       ENDIF
  758.    CASE choice = ENDkey
  759.       PagePaint = (pancol <> PagMax)
  760.       pancol = PagMax
  761.  
  762.    ENDCASE
  763. ENDDO
  764. GOTO TOP
  765. * ---SET CURSOR OFF
  766. *  ?? SYS(2002)
  767. RETURN
  768.  
  769. ********************************************************************
  770. PROCEDURE FIELDCHI
  771.  @ ROWNUM, 17 CLEAR TO ROWNUM, 58
  772.  @ ROWNUM, 19 SAY FF(I,1)
  773.  @ ROWNUM, 40 SAY FF(I,3)
  774.  @ ROWNUM, 52 SAY FF(I,4)
  775.  @ ROWNUM, 55 SAY STR(FF(I,5),3)
  776.  IF FF(I,2)
  777.     @ ROWNUM, 17 SAY CHR(16)+" "
  778.  ELSE
  779.     @ ROWNUM, 17 SAY "  "
  780.  ENDIF
  781. RETURN
  782.  
  783. *********************************************************************
  784. PROCEDURE FIELDPRO
  785. HEADTITL(pagsp) = " ╝╟┬╝║┼  "
  786. LINELEN = 9
  787. LABLEN = 0
  788. FIELDLAB = ""
  789. FIELDTAB(pagsp) = " "
  790. SCREENWID = 80
  791. DO WHILE I <= pag(Pagsp)
  792.    IF FF(I,2)
  793.       LABLEN = LEN( TRIM( FF(I,1) ) )
  794.       LINELEN = LINELEN + MAX( LABLEN,FF(I,5) ) + 1
  795.       IF LABLEN <= FF(I,5)
  796.          FIELDLAB = TRIM(FF(I,1)) + SPACE(FF(I,5) - LABLEN + 1)
  797.          HEADTITL(pagsp) = HEADTITL(pagsp) + FIELDLAB
  798.     <<if ismultials>>
  799.          DO CASE
  800.             CASE (FIELDTAB(pagsp) = " ") .AND. (FF(I,6) $ "AM")
  801.                FIELDTAB(pagsp) = FF(I,3)
  802.             CASE FIELDTAB(pagsp) = " "
  803.                FIELDTAB(pagsp) = FF(I,6) + "->" + FF(I,3)
  804.             CASE (FIELDTAB(pagsp) <> " ") .AND. (FF(I,6) $ "AM")
  805.                FIELDTAB(pagsp) = FIELDTAB(pagsp) + ',' + FF(I,3)
  806.             CASE FIELDTAB(pagsp) <> " "
  807.                FIELDTAB(pagsp) = FIELDTAB(pagsp) + ',' + FF(I,6) + '->' + FF(I,3)
  808.          ENDCASE
  809.     <<else>>
  810.          IF FIELDTAB(pagsp) = " "
  811.             FIELDTAB(pagsp) = FF(I,3)
  812.          ELSE
  813.             FIELDTAB(pagsp) = FIELDTAB(pagsp) + ',' + FF(I,3)
  814.          ENDIF
  815.     <<endif>>
  816.       ELSE
  817.          HEADTITL(pagsp) = HEADTITL(pagsp) + TRIM( FF(I,1) ) + " "
  818.          IF FIELDTAB(pagsp) = " "
  819.             FIELDTAB(pagsp) = FF(I,3) + ',"' + SPACE( LABLEN - FF(I,5) - 1 ) + '"'
  820.          ELSE
  821.             FIELDTAB(pagsp) = FIELDTAB(pagsp) + ',' + FF(I,3) + ',"' +;
  822.                        SPACE( LABLEN - FF(I,5) - 1 ) + '"'
  823.          ENDIF
  824.       ENDIF
  825.    ENDIF
  826.    I = I + 1
  827. ENDDO
  828. RETURN
  829.  
  830. ********************************************************************
  831. PROCEDURE FIELDISP
  832. * Program.: FIELDISP.PRG
  833. PARAMETER row,listRECS
  834. IF listRECS > 1
  835.    * ---Display heading when listing the entire page.
  836.    SET COLOR TO N/W  &&StatusAtr
  837.    @ row-1,0
  838.    @ row-1,0 SAY headtitl(pancol)
  839.    * ---Clear the window area.
  840.    SET COLOR TO W/B,N/W  &&WindowAtr
  841.    Scroll row,0,rowBOTTOM+1,79,rowBOTTOM+1-row
  842. ENDIF
  843. * ---Display the records.
  844. SET HEADING OFF
  845. SET COLOR TO W/B,N/W  &&WindowAtr
  846. @ row-1,0 SAY ""
  847. IF LEN( RTRIM( FIELDEXPR ) ) <> 0
  848.    FieldList = FIELDTAB(pancol) + " FOR " + FIELDEXPR
  849. ELSE
  850.    FieldList = FIELDTAB(pancol)
  851. ENDIF
  852. LIST NEXT listRECS &FieldList
  853. SET HEADING ON
  854. << end >>
  855.  
  856. <<* EOF: SSBFIMA.INC *>>
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.