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

  1. <<* SSBPROC.INC *>>
  2. <<* (C) 1991 SHEN YANG WHITE HORSE SOFTWART COMPANY  *>>
  3.  
  4. <<procedure GenProcStandard>>
  5. <<string alpha>>
  6. <<begin>>
  7.  
  8. PROCEDURE SayRec
  9.    * ---"SayRec" is used by the EDIT program and PROCEDURE DoCONT.
  10.    *
  11.    DO StatLine WITH RECNO(),DELETED()
  12.    DO {fileprefix}S
  13. RETURN
  14.  
  15. PROCEDURE GetKey
  16. PARAMETER choice,keychars
  17. PRIVATE keycode
  18.    choice = "*"
  19.    DO WHILE .NOT. (choice $ keychars)
  20.       keycode = INKEY()
  21.       IF keycode > 0
  22.          choice = UPPER(CHR(keycode))
  23.       ENDIF
  24.    ENDDO
  25. RETURN
  26.  
  27. <<if ismultipage>>
  28.  
  29. PROCEDURE Page
  30. PARAMETER pageno,pagedir,PageMax
  31.    pageno = pageno + pagedir
  32.    DO CASE
  33.    CASE pageno < 1
  34.       * ---Circle to last page.
  35.       pageno = PageMax
  36.    CASE pageno > PageMax
  37.       * ---Circle to first page.
  38.       pageno = 1
  39.    ENDCASE
  40. RETURN
  41.  
  42. <<endif>>
  43.  
  44. PROCEDURE StatLine
  45. PARAMETER recnum,IsDeleted
  46.    <<GenColor( 1,'STATUS' )>>
  47.    @ 0,0 SAY STR( recnum,7,0 ) + "/"+LTRIM( STR(Reccount()) )
  48.    <<if ismultipage>>
  49.    @ 0,23 SAY STR( pageno,2 )
  50.    <<endif>>
  51.    <<if ismultials>>
  52.    @ 0,29 SAY "<        >"
  53.    @ 0,30 SAY SUBSTR( DBFname,1,AT( ".",DBFname )-1 )
  54.    <<endif>>
  55.    IF IsDeleted
  56.       @ 0,50 SAY "  <Del>  "
  57.    ELSE
  58.       @ 0,50 SAY "         "
  59.    ENDIF
  60. RETURN
  61.  
  62. PROCEDURE PromptBar
  63. <<GenColor( 0,'HILITE' )>>
  64. * STORE DATE4(DATE()) TO SYSDATE
  65. @ 22,0 SAY SPACE(80)   &&CLEAR LINE
  66. @ 22,70 SAY DATE()     &&SYSDATE
  67. * ---Center the menu heading.
  68. col = (80 - LEN(menuhdg)) / 2
  69. @  22,col SAY menuhdg
  70. <<Gencolor( 0,'SCREEN' )>>
  71.  
  72. Return
  73.  
  74. PROCEDURE SayEOF
  75. PARAMETER row,oldrecnum
  76.    <<GenColor( 1,'PROMPT' )>>
  77.    @ row,0 CLEAR
  78.    IF EOF()
  79.       @ row,0 SAY "╧╓╘┌╩╟╩²╛▌┐Γ╓╨╡─╫ε║≤╥╗╕÷╝╟┬╝"
  80.    ELSE
  81.       @ row,0 SAY "╧╓╘┌╩╟╩²╛▌┐Γ╓╨╡─╡┌╥╗╠⌡╝╟┬╝"
  82.    ENDIF
  83.    WAIT
  84.    @ row,0 CLEAR
  85.    IF oldrecnum > 0
  86.       GOTO oldrecnum
  87.    ENDIF
  88. RETURN
  89.  
  90.  
  91. PROCEDURE SayLine
  92. PARAMETER row,strg
  93.    <<GenColor( 1,'PROMPT' )>>
  94.    @ row,0 CLEAR
  95.    @ row,0 SAY strg
  96. RETURN
  97.  
  98.  
  99. PROCEDURE GotoRec
  100. PARAMETER row,recnum,lastrecnum
  101.    recnum = 0
  102.    @ 23,17 SAY "{ 1 ⌐ñ "
  103.    @ 23,24 SAY SUBSTR( STR( lastrecnum + 1000000,7 ),2 ) + " } + {Return}"
  104.    ?? SYS(2002,1)
  105.    @ 24,17 SAY "╟δ ╩Σ ╚δ ╝╟ ┬╝ ║┼ :" GET recnum;
  106.            PICTURE "@Z 9999999" RANGE 0,lastrecnum
  107.    READ
  108.    ?? SYS(2002)
  109.    IF recnum > 0
  110.       GOTO recnum
  111.    ENDIF
  112. RETURN
  113.  
  114.  
  115. PROCEDURE DoGOTO
  116. PARAMETER row,recnum,lastrecnum
  117. PRIVATE menuchoice
  118.    recnum = 0
  119.    <<GenColor( 1,'PROMPT' )>>
  120.    @ 23,0 CLEAR
  121.    menuchoice = 4
  122.    @ 23, 5 PROMPT '1.╡┌╥╗╠⌡╝╟┬╝'
  123.    @ 23,20 PROMPT '2.╫ε║≤╥╗╠⌡╝╟┬╝'
  124.    @ 23,37 PROMPT '3.╓╕╢¿╝╟┬╝║┼'
  125.    @ 23,52 PROMPT '4.╖╡  ╗╪'
  126.    MENU TO menuchoice
  127.    choice = SUBSTR( Returnkey+"TBR"+Returnkey,menuchoice + 1,1 )
  128.    @ row,0 CLEAR
  129.    DO CASE
  130.    CASE choice = Returnkey
  131.       RETURN
  132.    CASE choice = "T"
  133.       GOTO TOP
  134.       recnum = RECNO()
  135.    CASE choice = "B"
  136.       GOTO BOTTOM
  137.       recnum = RECNO()
  138.    CASE choice = "R"
  139.       DO GotoRec WITH row,recnum,lastrecnum
  140.    ENDCASE
  141. RETURN
  142.  
  143.  
  144. PROCEDURE DoLOCATE
  145. PARAMETER row,expr
  146. PRIVATE oldrecnum
  147.    oldrecnum = RECNO()
  148.    DO SayLine WITH row,"╒²╘┌╝∞╦≈╢¿╬╗..."
  149.    LOCATE FOR &expr
  150.    IF EOF()
  151.       DO SayEOF WITH row,oldrecnum
  152.    ELSE
  153.       @ row,0 CLEAR
  154.       @ row,0 SAY "╢¿╬╗╘┌" GET expr
  155.       CLEAR GETS
  156.       DO DoCONT WITH row
  157.    ENDIF
  158. RETURN
  159.  
  160.  
  161. PROCEDURE DoCONT
  162. PARAMETER row
  163. PRIVATE oldrecnum
  164.    choice = "Y"
  165.    DO WHILE choice = "Y" .AND. .NOT. EOF()
  166.       oldrecnum = RECNO()
  167.       DO SayRec
  168.       DO SayLine WITH row+1,"╝╠╨°┬≡? (y/n)"
  169.       DO GetKey WITH choice,"YN"+Returnkey
  170.       @ row+1,0 CLEAR
  171.       IF choice = "Y"
  172.          CONTINUE
  173.       ENDIF
  174.    ENDDO
  175.    IF EOF()
  176.       DO SayEOF WITH row,oldrecnum
  177.    ENDIF
  178. RETURN
  179.  
  180. PROCEDURE DoBROW
  181. PRIVATE FLDNUM
  182. STORE 0 TO FLDNUM
  183. GO TOP
  184. <<GenColor( 0,'PROMPT')>>
  185. @ 22, 0 CLEAR TO 22,79
  186. @ 22, 5 SAY "╟δ ╚╖ ╢¿ ▓╗ ╥╞ ╢» ╡─ ╫╓ ╢╬ ╩² :" GET FLDNUM PICT '@Z 9'
  187. READ
  188. <<GenColor( 0,'SCREEN')>>
  189. BROW LOCK FLDNUM
  190. <<GenColor( 0,'PROMPT')>>
  191. RETURN
  192. <<end>> <<*GenProcStandard*>>
  193.  
  194.  
  195. <<#
  196. procedure GenFuncStandard
  197. begin
  198.   select all
  199.   select fields on ("VLU(" $ upper(fldval))
  200.   if (fldtotal > 0)
  201. #>>
  202.  
  203. PROCEDURE VLU
  204. PARAMETER lookals,lookexp,lookmsg
  205. PRIVATE origals,notvalid
  206.    origals = STR( SELECT(),2 )
  207.    SELECT &lookals
  208.    SEEK lookexp
  209.    notvalid = EOF()
  210.    IF notvalid
  211.       * ---Could not find <exp> in <LOOKUP> file.
  212.       DO SayLine WITH PromptRow,lookmsg
  213.       WAIT
  214.       @ PromptRow,0 CLEAR
  215.    ENDIF
  216.    SELECT &origals
  217. RETURN .NOT. notvalid
  218.  
  219.   <<endif>>
  220.   <<select all fields>>
  221. <<end GenFuncStandard>>
  222.  
  223.  
  224. <<procedure GenExecSeek>>
  225. <<string fixedkey>>
  226. <<begin>>
  227.   <<fixedkey := fixautomem(ndxkey)>>
  228.   <<if ndxtyp = 'C'>>
  229.       expr = TRIM( {fixedkey} )
  230.       IF "" <> expr
  231.          SEEK expr
  232.       ENDIF
  233.   <<elsif ndxtyp = 'N'>>
  234.       expr = {fixedkey}
  235.       IF expr <> 0
  236.          SEEK expr
  237.       ENDIF
  238.   <<else>>  <<*DATE type*>>
  239.       expr = {fixedkey}
  240.       IF DTOC(expr) <> "  /  /  "
  241.          SEEK expr
  242.       ENDIF
  243.   <<endif>>
  244. <<end GenExecSeek>>
  245.  
  246.  
  247. <<#
  248. procedure GenKeySeek
  249. string  pic,firstpart,keyfld
  250. integer count
  251. begin
  252.   select all fields
  253.   select fields on (fldtyp $ 'CDN') and (fldals <> 'M')
  254.   forall (upper(fldnam) $ upper(ndxkey)) and (forcount <= 2)
  255.     keyfld := fixareafldnam
  256. #>>
  257.     <<if fldtyp = 'C'>>
  258.       {keyfld} = SPACE({fldwid})
  259.     <<elsif fldtyp = 'N'>>
  260.       {keyfld} = 0.0
  261.     <<else>>
  262.       {keyfld} = CTOD("  /  /  ")
  263.     <<endif>>
  264. <<#
  265.   endfor
  266.   count := 0
  267.   forall (upper(fldnam) $ upper(ndxkey)) and (forcount <= 2)
  268.     count := count + 1
  269.     keyfld := fixareafldnam
  270.  
  271.     if forcount = 1
  272.       firstpart := '@ row,  0 SAY "Enter ' + fldlab + '"'
  273.     else
  274.       firstpart := '@ row+1,0 SAY "      ' + fldlab + '"'
  275.     endif
  276.  
  277.     <<*---PICTURE---*>>
  278.     pic := fldpic
  279.     if fldtyp = 'N'  <<*Force PICTURE on Numerics*>>
  280.       pic := replicate( '9',fldwid )
  281.       if flddec
  282.         pic[ fldwid-flddec ] := '.'
  283.       endif
  284.     endif
  285. #>>
  286.     <<if pic>>
  287.       {firstpart} GET {keyfld} PICTURE {"}{pic}{"}
  288.     <<else>>
  289.       {firstpart} GET {keyfld}
  290.     <<endif>>
  291.   <<endfor>>
  292.   <<if count = 0>>
  293.       * ---Key expression:  {ndxkey}
  294.       DO SayLine WITH row,"╣╪╝ⁿ╫╓▒φ┤∩╩╜╙δ╩²╛▌┐Γ╣╪╝ⁿ╫╓▓╗╞Ñ┼Σ."
  295.       WAIT
  296.       @ row,0 CLEAR
  297.   <<else>>
  298.       READ
  299.     <<GenExecSeek>>
  300.   <<endif>>
  301.   <<select all fields>>
  302. <<end GenKeySeek>>
  303.  
  304.  
  305. <<procedure GenSingleSEEK>>
  306. <<string alpha,fixedkey>>
  307.  
  308. <<begin>>
  309. <<alpha := chr( dbfcount + 64 )>>
  310. <<if not ismultials>>
  311. PROCEDURE {fileprefix}Z
  312. PARAMETER row
  313. PRIVATE expr
  314.    IF NdxOrder = "0"
  315.       RETURN
  316.    ENDIF
  317. <<endif>>
  318.   <<GenColor( 1,'PROMPT' )>>
  319.    @ row,0 CLEAR
  320.    DO CASE
  321.   <<forall indexes>>
  322.    CASE NdxOrder = {"}{ndxcount}{"}
  323.     <<GenKeySeek>>
  324.   <<endfor>>
  325.    ENDCASE
  326.  <<if not ismultials>>
  327. RETURN
  328.  <<endif>>
  329. <<end GenSingleSEEK>>
  330.  
  331.  
  332. <<procedure GenMultiSEEK>>
  333. <<string alpha>>
  334. <<begin>>
  335.  
  336. PROCEDURE {fileprefix}Z
  337. PARAMETER row
  338.    IF NdxOrder = "0"
  339.       RETURN
  340.    ENDIF
  341.    DO CASE
  342.   <<forall databases>>
  343.    CASE dbfarea = {"}{dbfcount}{"}
  344.     <<if ndxtotal > 0>>
  345.     <<pushmargin(1)>>
  346.     <<GenSingleSEEK>>
  347.     <<popmargin>>
  348.     <<else>>
  349.       * ---<none>.
  350.     <<endif>>
  351.   <<endfor>>
  352.    ENDCASE
  353. RETURN
  354.  
  355. <<end>> <<*GenMultiSEEK*>>
  356.  
  357.  
  358. <<procedure GenSetIndex( procname : string )>>
  359. <<string keydisp,keyopts,ndxnames>>
  360. <<integer width,col,i>>
  361. <<begin>>
  362.   <<if not(ismultials)>>
  363. PROCEDURE {procname}
  364. PARAMETER row,ndxchoice
  365.   <<endif>>
  366.    <<GenColor( 1,'PROMPT' )>>
  367.    @ row,0 CLEAR
  368. <<#
  369.    forall indexes
  370.      filespec( ndxnam,fpath,fname,fext )
  371.      keydisp := keydisp + ' ' + str( ndxcount ) + '-' + fname + ' '
  372.      genln('   MSG',str( ndxcount ),' = "',fname,'"' )
  373.      keyopts := keyopts + str( ndxcount )
  374.    endfor
  375. #>>
  376.    @ 24,0 CLEAR
  377.    @ 24,0 SAY 'Select index...'
  378.    @ 23,0 CLEAR
  379.     <<col := 2>>
  380.     <<for i := 1 to ndxtotal>>
  381.    @ 23,{col} PROMPT {"}indexfile{i}{"} MESSAGE SPACE(20) + MSG{i} + {"}.{fext}{"}
  382.     <<col := col + 11>>
  383.     <<end>>
  384.    MENU TO menuchoice
  385.    IF menuchoice = 0
  386.       RETURN
  387.    ENDIF
  388.    STORE STR(menuchoice,1,0) to ndxchoice, NdxOrder
  389.    SET ORDER TO &NdxOrder
  390.   <<if not(ismultials)>>
  391.    RETURN
  392.   <<endif>>
  393. <<end>> <<*GenSetIndex*>>
  394.  
  395.  
  396. <<procedure GenSetNdxs>>
  397. <<string alpha,keydisp,keyopts,ndxnames>>
  398. <<begin>>
  399.  
  400. PROCEDURE {fileprefix}X
  401. PARAMETER row,ndxchoice
  402.    DO CASE
  403.  <<forall databases>>
  404.    CASE dbfarea = {"}{dbfcount}{"}
  405.    <<if ndxtotal > 1>>
  406.      <<pushmargin(1)>>
  407.      <<GenSetIndex('')>>
  408.      <<popmargin>>
  409.    <<else>>
  410.       * ---Only one index.
  411.    <<endif>>
  412.  <<endfor>>
  413.    ENDCASE
  414. RETURN
  415.  
  416. <<end>> <<*GenSetNdxs*>>
  417.  
  418.  
  419. <<procedure GenSetArea>>
  420. <<begin>>
  421.  
  422. PROCEDURE {fileprefix}A
  423. PRIVATE oldrecnum
  424.    SELECT &dbfarea
  425.    oldrecnum = RECNO()
  426.   <<if ismultials>>
  427.    DO CASE
  428.   <<endif>>
  429. <<forall databases>>
  430.   <<if ismultials>>
  431.    CASE dbfarea = {"}{dbfcount}{"}
  432.     <<pushmargin(2)>>
  433.   <<else>>
  434.     <<pushmargin(1)>>
  435.   <<endif>>
  436. <<#
  437.      GenFileVars
  438.      if ndxtotal = 0
  439.        genln( '* ---<No indexes>.' )
  440.        genln( 'NdxOrder = "0"' )
  441.      else
  442.        GenIndexVars
  443.        genln( 'NdxOrder = "1"' )
  444.      endif
  445.      if ismultipage
  446.        select field 1
  447.        genln( 'pageno = ',fldpag )
  448.        genln( 'dbfpagemax = ',pagtotal )
  449.      endif
  450.      popmargin
  451.    endfor
  452. #>>
  453.   <<if ismultials>>
  454.    ENDCASE
  455.   <<endif>>
  456.    LastRec = RECCOUNT()
  457.    IF oldrecnum > 0 .AND. LastRec > 0
  458.       GOTO oldrecnum
  459.    ENDIF
  460. RETURN
  461.  
  462. <<end GenSetArea>>
  463.  
  464.  
  465. <<#
  466. procedure GenProcSecond
  467. begin
  468.   GenSetArea
  469.   GenFuncStandard
  470.   select all
  471.   if ndxtotal > 1
  472.     if ismultials
  473.       if ismultindx
  474.         GenSetNdxs
  475.       endif
  476.     else
  477.       select database 1
  478.       GenSetIndex( fileprefix + 'X' )
  479.     endif
  480.   endif
  481.   select all
  482.   if ndxtotal > 0  <<*Total ndxs for entire system*>>
  483.     if ismultials
  484.       GenMultiSEEK
  485.     else
  486.       select database 1
  487.       GenSingleSEEK
  488.     endif
  489.   endif
  490. end>> <<*GenProcSecond*>>
  491.  
  492. <<* EOF: SSBPROC.INC *>>
  493. #>>
  494.  
  495.