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

  1. <<* SSBFIND.INC *>>
  2. <<* (C) 1991 SHEN YANG WHITE HORSE SOFTWART COMPANY  *>>
  3.  
  4. <<procedure GenBrowseSimple>>
  5. <<begin>>
  6. <<GenColor( 0,'SCREEN' )>>
  7. CLEAR
  8. <<GenColor( 0,'STATUS' )>>
  9. @ 0,0 SAY SPACE(80)
  10. @ 0,0 SAY "╝╟┬╝║┼:  "
  11. *
  12. <<GenColor( 0,'PROMPT' )>>
  13. DO PromptBar
  14. @ 23,0 SAY "╩²╛▌┐Γ╓╨├╗╙╨╫╓╢╬."
  15. WAIT
  16. <<end>> <<*GenBrowseSimple*>>
  17.  
  18.  
  19. <<procedure GenBrowsePrompt>>
  20. <<begin>>
  21. <<*       1         2         3         4         5         6
  22. 0123456789012345678901234567890123456789012345678901234567890123456789
  23. BROWSE:  Find           Goto             <Arrows>             <Return>
  24. ▓Θ  ╤»:  E░┤╣╪╝ⁿ╫╓▓Θ╒╥  G░┤╝╟┬╝║┼▓Θ╒╥  ╙├╣Γ▒Ω: í√ í·íⁿí² ╖╡╗╪ <Return>  
  25. *>>
  26.    @ rowPROMPT,0 CLEAR
  27.    @ rowPROMPT+1,0 SAY "▓Θ  ╤»:  E ░┤╣╪╝ⁿ╫╓▓Θ╒╥   G ░┤╝╟┬╝║┼▓Θ╒╥  "+ ;
  28.      "╙├╣Γ▒Ω▓Θ╒╥: "+;
  29.      CHR(27)+' '+CHR(24)+' '+CHR(25)+' '+CHR(26)+"   ╖╡╗╪ <Return> "
  30.    <<GenColor( 1,'HILITE' )>>
  31.    @ rowPROMPT+1, 9 SAY "F"
  32.    @ rowPROMPT+1,26 SAY "G"
  33.    @ rowPROMPT+1,70 SAY "Return"
  34.    <<GenColor( 1,'PROMPT' )>>
  35.  
  36. <<end>> <<*GenBrowsePrompt*>>
  37.  
  38.  
  39. <<#
  40. procedure GenDoOneDisp
  41. string alpha
  42. begin
  43.   if ismultials
  44.     genln( 'DO CASE' )
  45.     forall databases
  46.       alpha := chr( dbfcount + 64 )
  47.       genln( 'CASE dbfarea = "',dbfcount,'"' )
  48.       pushmargin( 1 )
  49.       if fldtotal > 0
  50.         genln( 'DO ',substr(fileprefix,1,7),alpha,'.SPR WITH row,1' )
  51.       endif
  52.       popmargin
  53.     endfor
  54.     genln( 'ENDCASE' )
  55.   else
  56.     genln( 'DO ',fileprefix,'D WITH row,1' )
  57.   endif
  58. end GenDoOneDisp
  59.  
  60.  
  61. procedure GenDoDisplay
  62. string alpha
  63. begin
  64.   if ismultials
  65.     genln( 'DO CASE' )
  66.     forall databases
  67.       alpha := chr( dbfcount + 64 )
  68.       genln( 'CASE dbfarea = "',dbfcount,'"' )
  69.       pushmargin( 1 )
  70.       if fldtotal > 0
  71.         genln( 'DO ',substr(fileprefix,1,7),alpha,'.SPR WITH (rowTOP),skipRECS' )
  72.       else
  73.         GenColor( 0,'SCREEN' )
  74.         genln( 'CLEAR' )
  75.         GenColor( 0,'STATUS' )
  76.         genln( '@ 0,0' )
  77.         genln( '@ 0,0 SAY "╬▐╫╓╢╬▒φ..."' )
  78.       endif
  79.       popmargin
  80.     endfor
  81.     genln( 'ENDCASE' )
  82.   else
  83.     genln( 'DO ',fileprefix,'D WITH (rowTOP),skipRECS' )
  84.   endif
  85. end GenDoDisplay
  86. #>>
  87.  
  88.  
  89. <<procedure GenSBFindBody>>
  90.  
  91. <<begin>>
  92. PRIVATE pancol,panMAX,panLAST,recnumTOP,recnumLAST,skipRECS
  93. PRIVATE HOME,ENDkey,UParrow,DOWNarrow,LEFTarrow,RIGHTarrow
  94. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  95. PRIVATE isedited,Pagedu
  96. * ---Initialize constants.
  97. HOME = CHR(1)
  98. ENDkey = CHR(6)
  99. UParrow = CHR(5)
  100. DOWNarrow = CHR(24)
  101. LEFTarrow = CHR(19)
  102. RIGHTarrow = CHR(4)
  103. KEYSTROKES = "EFGLD"+UParrow+DOWNarrow+HOME+LEFTarrow+;
  104.              RIGHTarrow+ENDkey+PgDn+PgUp+DelRecord+Returnkey
  105. <<if ismultials>>
  106. rowTOP = 2
  107. <<else>>
  108. rowTOP = 1
  109. <<endif>>
  110. rowBOTTOM = 20
  111. rowPROMPT = rowBOTTOM + 3
  112. skipRECS = rowBOTTOM - rowTOP + 1
  113. * ---Initialize local variables.
  114. row = rowTOP
  115. recnum = RECNO()
  116. recnumTOP = recnum
  117. PagePaint = .T.
  118. Pagedu = .T.
  119. isedited = .F.
  120. pancol = 1
  121. panLAST = 1
  122. <<*
  123. <<if ismultials>>
  124. DO CASE
  125.   <<forall databases>>
  126. CASE dbfarea = {"}{dbfcount}{"}
  127.     <<InitBrowse>>
  128.    panMAX = {panmax}
  129.   <<endfor>>
  130. ENDCASE
  131. <<else>>
  132. panMAX = {panmax}
  133. <<endif>>
  134. * ---Perform BROWSE.
  135. *>>
  136. panMAX = {panmax}
  137.  
  138. <<GenColor( 0,'SCREEN' )>>
  139. CLEAR
  140. * ---The following loop is really a "REPEAT/UNTIL <cond>".
  141. DO WHILE .T.
  142. *---SET CURSOR OFF
  143.    ?? SYS(2002)
  144.    IF PagePaint
  145.       recnum = RECNO()
  146.       GOTO recnumTOP
  147.     <<if ismultials>>
  148.       <<GenColor( 2,'HILITE' )>>
  149.       <<select database 1>>
  150.       <<filespec( dbfnam,fpath,fname,fext )>>
  151.       <<fname := fpath[1]>>
  152.       @ 0,0 SAY {"}{fname}:{"} + DBFname
  153.     <<endif>>
  154.     <<pushmargin( 2 )>>
  155.     <<GenDoDisplay>>
  156.     <<popmargin>>
  157.       GOTO recnum
  158.       IF pancol = panLAST .AND. Pagedu 
  159.          * ---Reposition record pointer when repainting current page.
  160.          row = rowTOP
  161.       ENDIF
  162.       panLAST = pancol
  163.       PagePaint = .F.
  164.    ENDIF
  165.    <<GenColor( 1,'PROMPT' )>>
  166.    DO PromptBar
  167.    <<GenBrowsePrompt>>
  168.    @ row,0 SAY CHR(16)
  169.    DO GetKey WITH choice,KEYSTROKES
  170.    * ---Reposition record pointer.
  171.    DO WHILE choice $ UParrow+DOWNarrow
  172.       @ row,0 SAY " "
  173.       IF choice = UParrow
  174.          SKIP -1
  175.          DO CASE
  176.          CASE BOF()
  177.             GOTO TOP
  178.          CASE row > rowTOP
  179.             row = row - 1
  180.          CASE row = rowtop
  181.             IF .NOT. BOF()
  182.                GOTO recnumTOP
  183.                SKIP -skipRECS
  184.                IF BOF()
  185.                   GOTO TOP
  186.                ENDIF
  187.                recnumTOP = RECNO()
  188.                PagePaint = .T.
  189.                Pagedu = .T.
  190.             ENDIF
  191.             EXIT
  192.          OTHERWISE
  193.          ENDCASE
  194.       ELSE
  195.          SKIP
  196.          DO CASE
  197.          CASE EOF()
  198.             GOTO BOTTOM
  199.          CASE row < rowBOTTOM
  200.             row = row + 1
  201.          CASE row = rowBOTTOM
  202.             IF .NOT. EOF()
  203.                GOTO recnumTOP
  204.                SKIP skipRECS
  205.                IF EOF()
  206.                   GOTO BOTTOM
  207.                ENDIF
  208.                recnumTOP = RECNO()
  209.                PagePaint = .T.
  210.                Pagedu = .T.
  211.                EXIT 
  212.             ENDIF
  213.          OTHERWISE
  214.          ENDCASE
  215.       ENDIF
  216.       @ row,0 SAY CHR(16)
  217.       DO GetKey WITH choice,KEYSTROKES
  218.    ENDDO
  219.    * ---Prompt line selections.
  220.    DO CASE
  221.    CASE choice = Returnkey
  222.       EXIT
  223.  
  224.    CASE choice = "F"
  225.       ?? SYS(2002,1)
  226.       * ---Find a record.
  227.    <<select all databases>>
  228.    <<if ndxtotal = 0>>
  229.       DO SayLine WITH rowPROMPT,"*** ├╗╙╨╦≈╥²╬─╝■"
  230.       WAIT
  231.    <<elsif ismultindx>>
  232.       DO {fileprefix}X WITH rowPROMPT,choice
  233.       IF choice > "0"
  234.          recnumLAST = RECNO()
  235.          DO {fileprefix}Z WITH rowPROMPT
  236.          IF EOF()
  237.             DO SayLine WITH rowPROMPT,"├╗╒╥╡╜."
  238.             WAIT
  239.             GOTO recnumLAST
  240.          ELSE
  241.             recnumTOP = RECNO()
  242.             PagePaint = .T.
  243.          ENDIF
  244.       ENDIF
  245.    <<else>>
  246.       recnumLAST = RECNO()
  247.       DO {fileprefix}Z WITH rowPROMPT
  248.       IF EOF()
  249.          DO SayLine WITH rowPROMPT,"├╗╒╥╡╜."
  250.          WAIT
  251.          GOTO recnumLAST
  252.       ELSE
  253.          recnumTOP = RECNO()
  254.          PagePaint = .T.
  255.       ENDIF
  256.    <<endif>>
  257.  
  258.    CASE choice = "G"
  259.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  260.       IF recnum > 0
  261.          recnumTOP = RECNO()
  262.          PagePaint = .T.
  263.       ENDIF
  264.    CASE choice = PgDn
  265.       IF .NOT. EOF()
  266.          GOTO recnumTOP
  267.          SKIP skipRECS
  268.          IF EOF()
  269.             GOTO BOTTOM
  270.          ENDIF
  271.          recnumTOP = RECNO()
  272.          PagePaint = .T.
  273.          Pagedu = .T.
  274.       ENDIF
  275.    CASE choice = PgUp
  276.       IF .NOT. BOF()
  277.          GOTO recnumTOP
  278.          SKIP -skipRECS
  279.          IF BOF()
  280.             GOTO TOP
  281.          ENDIF
  282.          recnumTOP = RECNO()
  283.          PagePaint = .T.
  284.          Pagedu = .T.
  285.       ENDIF
  286.    CASE choice = "L"
  287.       * ---Set FILTER.
  288.       <<GenColor( 2,'WINDOW' )>>
  289.       @ 1,0 CLEAR
  290.      <<select database 8>>  <<*Is SELECT H being used?*>>
  291.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  292.       DO {fileprefix}V WITH expr
  293.      <<else>>               <<*No, use new and improved...*>>
  294.       DO {fileprefix}C WITH expr,notes
  295.      <<endif>>
  296.       IF "" = TRIM( expr )
  297.          SET FILTER TO
  298.       ELSE
  299.          * ---Check for valid LOGICAL expression.
  300.          IF TYPE( expr ) = "L"
  301.             SET FILTER TO &expr
  302.          ELSE
  303.            <<GenColor( 4,'PROMPT' )>>
  304.             @ rowPROMPT,0 CLEAR
  305.             @ rowPROMPT,0 SAY "╬▐╨º▒φ┤∩╩╜."
  306.             WAIT
  307.          ENDIF
  308.       ENDIF
  309.       GOTO TOP
  310.       IF EOF()
  311.          <<GenColor( 3,'PROMPT' )>>
  312.          @ rowPROMPT,0 CLEAR
  313.          @ rowPROMPT,0 SAY "├╗╙╨╞Ñ┼Σ╡─╝╟┬╝"
  314.          WAIT
  315.          SET FILTER TO
  316.          GOTO TOP
  317.       ENDIF
  318.       recnumTOP = RECNO()
  319.       PagePaint = .T.
  320.       <<GenColor( 2,'SCREEN' )>>
  321.       CLEAR
  322.    CASE choice = HOME
  323.       PagePaint = (pancol <> 1)
  324.       pancol = 1
  325.    CASE choice = LEFTarrow
  326.       IF pancol > 1
  327.          pancol = pancol - 1
  328.          PagePaint = .T.
  329.       ENDIF
  330.    CASE choice = RIGHTarrow
  331.       IF pancol < panMAX
  332.          pancol = pancol + 1
  333.          PagePaint = .T.
  334.       ENDIF
  335.    CASE choice = ENDkey
  336.       PagePaint = (pancol <> panMAX)
  337.       pancol = panMAX
  338.    ENDCASE
  339. ENDDO
  340. SET FILTER TO
  341. GOTO TOP
  342. * ---SET CURSOR OFF
  343.   ?? SYS(2002)
  344.  
  345. <<end>> <<*GenSBFindBody*>>
  346.  
  347.  
  348. <<procedure GenBrowseDBU>>
  349. <<begin>>
  350. PRIVATE recnumTOP,recnumLAST,skipRECS
  351. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  352. PRIVATE isedited
  353. PRIVATE filterSAVE
  354. rowPROMPT = 23
  355. isedited = .F.
  356. filterSAVE = ""
  357. DO WHILE .T.
  358. * ---BUILD THE SCREEN
  359.    <<GenColor( 2,'SCREEN' )>>
  360.    @ 2,0 SAY "├"
  361.    @ 2,79 SAY "┤"
  362.    @ 2,1 SAY REPLICATE("─",78)
  363.    <<GenColor( 2,'PROMPT' )>>
  364.     @ rowPROMPT,0 CLEAR
  365.    <<GenBrowsePrompt>>
  366.    <<GenColor( 2,'SCREEN' )>>
  367.    DBEDIT(3,1,22,78,.T.,"VGBROW",.T.,.T.,.T.,.T.,"═╧═")
  368.    STORE UPPER(CHR(LASTKEY())) TO CHOICE
  369.    DO CASE
  370.    CASE choice = Returnkey
  371.       EXIT
  372.    CASE choice = "E"
  373.       recnumLAST = RECNO()
  374.       SET FILTER TO
  375.       SAVE SCREEN
  376.       DO {fileprefix}_EDIT WITH isedited
  377.       * ---Restore FILTER.
  378.       IF "" <> TRIM( filterSAVE )
  379.          SET FILTER TO &filterSAVE
  380.          GOTO TOP
  381.       ENDIF
  382.       IF recnumLAST = RECNO() .AND. .NOT. isedited
  383.          RESTORE SCREEN
  384.       ELSE
  385.          * ---Redisplay the screen.
  386.          <<GenColor( 3,'SCREEN' )>>
  387.          CLEAR
  388.          GOTO recnumLAST
  389.          * ---Do not reposition record pointer.
  390.          panLAST = 0
  391.          PagePaint = .T.
  392.       ENDIF
  393.    CASE choice = "F"
  394.       * ---Find a record.
  395.    <<select all databases>>
  396.    <<if ndxtotal = 0>>
  397.       DO SayLine WITH rowPROMPT,"*** ╡▒╟░╩²╛▌┐Γ╬▐╦≈╥²╬─╝■"
  398.       WAIT
  399.    <<elsif ismultindx>>
  400.       DO {fileprefix}X WITH rowPROMPT,choice
  401.       IF choice > "0"
  402.          recnumLAST = RECNO()
  403.          DO {fileprefix}Z WITH rowPROMPT
  404.          IF EOF()
  405.             DO SayLine WITH rowPROMPT,"├╗╒╥╡╜."
  406.             WAIT
  407.             GOTO recnumLAST
  408.          ELSE
  409.             recnumTOP = RECNO()
  410.             PagePaint = .T.
  411.          ENDIF
  412.       ENDIF
  413.    <<else>>
  414.       recnumLAST = RECNO()
  415.       DO {fileprefix}Z WITH rowPROMPT
  416.       IF EOF()
  417.          DO SayLine WITH rowPROMPT,"├╗╒╥╡╜."
  418.          WAIT
  419.          GOTO recnumLAST
  420.       ELSE
  421.          recnumTOP = RECNO()
  422.          PagePaint = .T.
  423.       ENDIF
  424.    <<endif>>
  425.    CASE choice = "G"
  426.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  427.       IF recnum > 0
  428.          recnumTOP = RECNO()
  429.          PagePaint = .T.
  430.       ENDIF
  431.    CASE choice = DelRecord
  432.       * ---Delete the record.
  433.       IF DELETED()
  434.          RECALL
  435.       ELSE
  436.          DELETE
  437.       ENDIF
  438.   <<if ismultials>>
  439.       panLAST = 0
  440.       PagePaint = .T.   <<*Display the whole thing*>>
  441.   <<else>>
  442.   <<endif>>
  443.    CASE choice = "L"
  444.       * ---Set FILTER.
  445.       <<GenColor( 2,'WINDOW' )>>
  446.       @ 1,0 CLEAR
  447.      <<select database 8>>  <<*Is SELECT H being used?*>>
  448.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  449.       DO {fileprefix}V WITH expr
  450.      <<else>>               <<*No, use new and improved...*>>
  451.       DO {fileprefix}C WITH expr
  452.      <<endif>>
  453.       IF "" = TRIM( expr )
  454.          SET FILTER TO
  455.          filterSAVE = ""
  456.       ELSE
  457.          SET FILTER TO &expr
  458.          filterSAVE = expr
  459.       ENDIF
  460.       GOTO TOP
  461.       IF EOF()
  462.          <<GenColor( 3,'PROMPT' )>>
  463.          @ rowPROMPT,0 CLEAR
  464.          @ rowPROMPT,0 SAY "╬▐╞Ñ┼Σ╝╟┬╝."
  465.          WAIT
  466.          SET FILTER TO
  467.          filterSAVE = ""
  468.          GOTO TOP
  469.       ENDIF
  470.       recnumTOP = RECNO()
  471.       PagePaint = .T.
  472.       <<GenColor( 2,'SCREEN' )>>
  473.       CLEAR
  474.    ENDCASE
  475. ENDDO
  476. SET FILTER TO
  477. GOTO TOP
  478. <<end>> <<*GenBrowseDBU*>>
  479.  
  480. <<* EOF: SSBFIND.INC *>>
  481.